diff --git a/node_modules/.bin/acorn b/node_modules/.bin/acorn new file mode 120000 index 00000000..cf767603 --- /dev/null +++ b/node_modules/.bin/acorn @@ -0,0 +1 @@ +../acorn/bin/acorn \ No newline at end of file diff --git a/node_modules/.bin/ansi-html b/node_modules/.bin/ansi-html new file mode 120000 index 00000000..3bfd3c68 --- /dev/null +++ b/node_modules/.bin/ansi-html @@ -0,0 +1 @@ +../ansi-html-community/bin/ansi-html \ No newline at end of file diff --git a/node_modules/.bin/astring b/node_modules/.bin/astring new file mode 120000 index 00000000..2d18f318 --- /dev/null +++ b/node_modules/.bin/astring @@ -0,0 +1 @@ +../astring/bin/astring \ No newline at end of file diff --git a/node_modules/.bin/autoprefixer b/node_modules/.bin/autoprefixer new file mode 120000 index 00000000..e876d81c --- /dev/null +++ b/node_modules/.bin/autoprefixer @@ -0,0 +1 @@ +../autoprefixer/bin/autoprefixer \ No newline at end of file diff --git a/node_modules/.bin/browserslist b/node_modules/.bin/browserslist new file mode 120000 index 00000000..3cd991b2 --- /dev/null +++ b/node_modules/.bin/browserslist @@ -0,0 +1 @@ +../browserslist/cli.js \ No newline at end of file diff --git a/node_modules/.bin/cssesc b/node_modules/.bin/cssesc new file mode 120000 index 00000000..487b6890 --- /dev/null +++ b/node_modules/.bin/cssesc @@ -0,0 +1 @@ +../cssesc/bin/cssesc \ No newline at end of file diff --git a/node_modules/.bin/detect b/node_modules/.bin/detect new file mode 120000 index 00000000..617e569c --- /dev/null +++ b/node_modules/.bin/detect @@ -0,0 +1 @@ +../detect-port-alt/bin/detect-port \ No newline at end of file diff --git a/node_modules/.bin/detect-port b/node_modules/.bin/detect-port new file mode 120000 index 00000000..617e569c --- /dev/null +++ b/node_modules/.bin/detect-port @@ -0,0 +1 @@ +../detect-port-alt/bin/detect-port \ No newline at end of file diff --git a/node_modules/.bin/docusaurus b/node_modules/.bin/docusaurus new file mode 120000 index 00000000..520e6a34 --- /dev/null +++ b/node_modules/.bin/docusaurus @@ -0,0 +1 @@ +../@docusaurus/core/bin/docusaurus.mjs \ No newline at end of file diff --git a/node_modules/.bin/esparse b/node_modules/.bin/esparse new file mode 120000 index 00000000..7423b18b --- /dev/null +++ b/node_modules/.bin/esparse @@ -0,0 +1 @@ +../esprima/bin/esparse.js \ No newline at end of file diff --git a/node_modules/.bin/esvalidate b/node_modules/.bin/esvalidate new file mode 120000 index 00000000..16069eff --- /dev/null +++ b/node_modules/.bin/esvalidate @@ -0,0 +1 @@ +../esprima/bin/esvalidate.js \ No newline at end of file diff --git a/node_modules/.bin/flat b/node_modules/.bin/flat new file mode 120000 index 00000000..5fed16be --- /dev/null +++ b/node_modules/.bin/flat @@ -0,0 +1 @@ +../flat/cli.js \ No newline at end of file diff --git a/node_modules/.bin/he b/node_modules/.bin/he new file mode 120000 index 00000000..2a8eb5e0 --- /dev/null +++ b/node_modules/.bin/he @@ -0,0 +1 @@ +../he/bin/he \ No newline at end of file diff --git a/node_modules/.bin/html-minifier-terser b/node_modules/.bin/html-minifier-terser new file mode 120000 index 00000000..bab06671 --- /dev/null +++ b/node_modules/.bin/html-minifier-terser @@ -0,0 +1 @@ +../html-minifier-terser/cli.js \ No newline at end of file diff --git a/node_modules/.bin/image-size b/node_modules/.bin/image-size new file mode 120000 index 00000000..f575317f --- /dev/null +++ b/node_modules/.bin/image-size @@ -0,0 +1 @@ +../image-size/bin/image-size.js \ No newline at end of file diff --git a/node_modules/.bin/is-ci b/node_modules/.bin/is-ci new file mode 120000 index 00000000..fe6aca6f --- /dev/null +++ b/node_modules/.bin/is-ci @@ -0,0 +1 @@ +../is-ci/bin.js \ No newline at end of file diff --git a/node_modules/.bin/is-docker b/node_modules/.bin/is-docker new file mode 120000 index 00000000..9896ba57 --- /dev/null +++ b/node_modules/.bin/is-docker @@ -0,0 +1 @@ +../is-docker/cli.js \ No newline at end of file diff --git a/node_modules/.bin/jiti b/node_modules/.bin/jiti new file mode 120000 index 00000000..031ee3fd --- /dev/null +++ b/node_modules/.bin/jiti @@ -0,0 +1 @@ +../jiti/bin/jiti.js \ No newline at end of file diff --git a/node_modules/.bin/js-yaml b/node_modules/.bin/js-yaml new file mode 120000 index 00000000..c975570e --- /dev/null +++ b/node_modules/.bin/js-yaml @@ -0,0 +1 @@ +../gray-matter/node_modules/js-yaml/bin/js-yaml.js \ No newline at end of file diff --git a/node_modules/.bin/jsesc b/node_modules/.bin/jsesc new file mode 120000 index 00000000..7237604c --- /dev/null +++ b/node_modules/.bin/jsesc @@ -0,0 +1 @@ +../jsesc/bin/jsesc \ No newline at end of file diff --git a/node_modules/.bin/json5 b/node_modules/.bin/json5 new file mode 120000 index 00000000..217f3798 --- /dev/null +++ b/node_modules/.bin/json5 @@ -0,0 +1 @@ +../json5/lib/cli.js \ No newline at end of file diff --git a/node_modules/.bin/loose-envify b/node_modules/.bin/loose-envify new file mode 120000 index 00000000..ed9009c5 --- /dev/null +++ b/node_modules/.bin/loose-envify @@ -0,0 +1 @@ +../loose-envify/cli.js \ No newline at end of file diff --git a/node_modules/.bin/mime b/node_modules/.bin/mime new file mode 120000 index 00000000..fbb7ee0e --- /dev/null +++ b/node_modules/.bin/mime @@ -0,0 +1 @@ +../mime/cli.js \ No newline at end of file diff --git a/node_modules/.bin/multicast-dns b/node_modules/.bin/multicast-dns new file mode 120000 index 00000000..801fc526 --- /dev/null +++ b/node_modules/.bin/multicast-dns @@ -0,0 +1 @@ +../multicast-dns/cli.js \ No newline at end of file diff --git a/node_modules/.bin/nanoid b/node_modules/.bin/nanoid new file mode 120000 index 00000000..e2be547b --- /dev/null +++ b/node_modules/.bin/nanoid @@ -0,0 +1 @@ +../nanoid/bin/nanoid.cjs \ No newline at end of file diff --git a/node_modules/.bin/opener b/node_modules/.bin/opener new file mode 120000 index 00000000..891b847f --- /dev/null +++ b/node_modules/.bin/opener @@ -0,0 +1 @@ +../opener/bin/opener-bin.js \ No newline at end of file diff --git a/node_modules/.bin/parser b/node_modules/.bin/parser new file mode 120000 index 00000000..ce7bf97e --- /dev/null +++ b/node_modules/.bin/parser @@ -0,0 +1 @@ +../@babel/parser/bin/babel-parser.js \ No newline at end of file diff --git a/node_modules/.bin/rc b/node_modules/.bin/rc new file mode 120000 index 00000000..48b3cda7 --- /dev/null +++ b/node_modules/.bin/rc @@ -0,0 +1 @@ +../rc/cli.js \ No newline at end of file diff --git a/node_modules/.bin/regjsparser b/node_modules/.bin/regjsparser new file mode 120000 index 00000000..91cec777 --- /dev/null +++ b/node_modules/.bin/regjsparser @@ -0,0 +1 @@ +../regjsparser/bin/parser \ No newline at end of file diff --git a/node_modules/.bin/resolve b/node_modules/.bin/resolve new file mode 120000 index 00000000..b6afda6c --- /dev/null +++ b/node_modules/.bin/resolve @@ -0,0 +1 @@ +../resolve/bin/resolve \ No newline at end of file diff --git a/node_modules/.bin/rimraf b/node_modules/.bin/rimraf new file mode 120000 index 00000000..4cd49a49 --- /dev/null +++ b/node_modules/.bin/rimraf @@ -0,0 +1 @@ +../rimraf/bin.js \ No newline at end of file diff --git a/node_modules/.bin/semver b/node_modules/.bin/semver new file mode 120000 index 00000000..f09400e1 --- /dev/null +++ b/node_modules/.bin/semver @@ -0,0 +1 @@ +../@docusaurus/core/node_modules/semver/bin/semver.js \ No newline at end of file diff --git a/node_modules/.bin/shjs b/node_modules/.bin/shjs new file mode 120000 index 00000000..a0449975 --- /dev/null +++ b/node_modules/.bin/shjs @@ -0,0 +1 @@ +../shelljs/bin/shjs \ No newline at end of file diff --git a/node_modules/.bin/svgo b/node_modules/.bin/svgo new file mode 120000 index 00000000..d6a228b7 --- /dev/null +++ b/node_modules/.bin/svgo @@ -0,0 +1 @@ +../svgo/bin/svgo \ No newline at end of file diff --git a/node_modules/.bin/terser b/node_modules/.bin/terser new file mode 120000 index 00000000..0792ff47 --- /dev/null +++ b/node_modules/.bin/terser @@ -0,0 +1 @@ +../terser/bin/terser \ No newline at end of file diff --git a/node_modules/.bin/update-browserslist-db b/node_modules/.bin/update-browserslist-db new file mode 120000 index 00000000..b11e16f3 --- /dev/null +++ b/node_modules/.bin/update-browserslist-db @@ -0,0 +1 @@ +../update-browserslist-db/cli.js \ No newline at end of file diff --git a/node_modules/.bin/uuid b/node_modules/.bin/uuid new file mode 120000 index 00000000..588f70ec --- /dev/null +++ b/node_modules/.bin/uuid @@ -0,0 +1 @@ +../uuid/dist/bin/uuid \ No newline at end of file diff --git a/node_modules/.bin/wait-on b/node_modules/.bin/wait-on new file mode 120000 index 00000000..25dad9fc --- /dev/null +++ b/node_modules/.bin/wait-on @@ -0,0 +1 @@ +../wait-on/bin/wait-on \ No newline at end of file diff --git a/node_modules/.bin/webpack b/node_modules/.bin/webpack new file mode 120000 index 00000000..d462c1d1 --- /dev/null +++ b/node_modules/.bin/webpack @@ -0,0 +1 @@ +../webpack/bin/webpack.js \ No newline at end of file diff --git a/node_modules/.bin/webpack-bundle-analyzer b/node_modules/.bin/webpack-bundle-analyzer new file mode 120000 index 00000000..025f648f --- /dev/null +++ b/node_modules/.bin/webpack-bundle-analyzer @@ -0,0 +1 @@ +../webpack-bundle-analyzer/lib/bin/analyzer.js \ No newline at end of file diff --git a/node_modules/.bin/webpack-dev-server b/node_modules/.bin/webpack-dev-server new file mode 120000 index 00000000..242fe0a6 --- /dev/null +++ b/node_modules/.bin/webpack-dev-server @@ -0,0 +1 @@ +../webpack-dev-server/bin/webpack-dev-server.js \ No newline at end of file diff --git a/node_modules/.bin/which b/node_modules/.bin/which new file mode 120000 index 00000000..b454a29a --- /dev/null +++ b/node_modules/.bin/which @@ -0,0 +1 @@ +../global-prefix/node_modules/which/bin/which \ No newline at end of file diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity new file mode 100644 index 00000000..f2554011 --- /dev/null +++ b/node_modules/.yarn-integrity @@ -0,0 +1,1256 @@ +{ + "systemParams": "darwin-arm64-115", + "modulesFolders": [ + "node_modules" + ], + "flags": [], + "linkedModules": [], + "topLevelPatterns": [ + "@docusaurus/plugin-google-gtag@^3.0.0" + ], + "lockfileEntries": { + "@ampproject/remapping@^2.2.0": "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630", + "@babel/code-frame@^7.0.0": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e", + "@babel/code-frame@^7.16.0": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e", + "@babel/code-frame@^7.22.13": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e", + "@babel/code-frame@^7.8.3": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e", + "@babel/compat-data@^7.22.6": "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.3.tgz#3febd552541e62b5e883a25eb3effd7c7379db11", + "@babel/compat-data@^7.22.9": "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.3.tgz#3febd552541e62b5e883a25eb3effd7c7379db11", + "@babel/compat-data@^7.23.3": "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.3.tgz#3febd552541e62b5e883a25eb3effd7c7379db11", + "@babel/core@^7.19.6": "https://registry.yarnpkg.com/@babel/core/-/core-7.23.3.tgz#5ec09c8803b91f51cc887dedc2654a35852849c9", + "@babel/core@^7.22.9": "https://registry.yarnpkg.com/@babel/core/-/core-7.23.3.tgz#5ec09c8803b91f51cc887dedc2654a35852849c9", + "@babel/generator@^7.22.9": "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.3.tgz#86e6e83d95903fbe7613f448613b8b319f330a8e", + "@babel/generator@^7.23.3": "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.3.tgz#86e6e83d95903fbe7613f448613b8b319f330a8e", + "@babel/helper-annotate-as-pure@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882", + "@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956", + "@babel/helper-compilation-targets@^7.22.15": "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52", + "@babel/helper-compilation-targets@^7.22.6": "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52", + "@babel/helper-create-class-features-plugin@^7.22.15": "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4", + "@babel/helper-create-regexp-features-plugin@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1", + "@babel/helper-create-regexp-features-plugin@^7.22.15": "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1", + "@babel/helper-create-regexp-features-plugin@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1", + "@babel/helper-define-polyfill-provider@^0.4.3": "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba", + "@babel/helper-environment-visitor@^7.22.20": "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167", + "@babel/helper-environment-visitor@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167", + "@babel/helper-function-name@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759", + "@babel/helper-function-name@^7.23.0": "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759", + "@babel/helper-hoist-variables@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb", + "@babel/helper-member-expression-to-functions@^7.22.15": "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366", + "@babel/helper-module-imports@^7.22.15": "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0", + "@babel/helper-module-transforms@^7.23.3": "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1", + "@babel/helper-optimise-call-expression@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e", + "@babel/helper-plugin-utils@^7.0.0": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295", + "@babel/helper-plugin-utils@^7.10.4": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295", + "@babel/helper-plugin-utils@^7.12.13": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295", + "@babel/helper-plugin-utils@^7.14.5": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295", + "@babel/helper-plugin-utils@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295", + "@babel/helper-plugin-utils@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295", + "@babel/helper-plugin-utils@^7.8.0": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295", + "@babel/helper-plugin-utils@^7.8.3": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295", + "@babel/helper-remap-async-to-generator@^7.22.20": "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0", + "@babel/helper-replace-supers@^7.22.20": "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793", + "@babel/helper-replace-supers@^7.22.9": "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793", + "@babel/helper-simple-access@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de", + "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847", + "@babel/helper-split-export-declaration@^7.22.6": "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c", + "@babel/helper-string-parser@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f", + "@babel/helper-validator-identifier@^7.22.20": "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0", + "@babel/helper-validator-option@^7.22.15": "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040", + "@babel/helper-wrap-function@^7.22.20": "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569", + "@babel/helpers@^7.23.2": "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767", + "@babel/highlight@^7.22.13": "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54", + "@babel/parser@^7.22.15": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.3.tgz#0ce0be31a4ca4f1884b5786057cadcb6c3be58f9", + "@babel/parser@^7.22.7": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.3.tgz#0ce0be31a4ca4f1884b5786057cadcb6c3be58f9", + "@babel/parser@^7.23.3": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.3.tgz#0ce0be31a4ca4f1884b5786057cadcb6c3be58f9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz#20c60d4639d18f7da8602548512e9d3a4c8d7098", + "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703", + "@babel/plugin-syntax-async-generators@^7.8.4": "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d", + "@babel/plugin-syntax-class-properties@^7.12.13": "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10", + "@babel/plugin-syntax-class-static-block@^7.14.5": "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406", + "@babel/plugin-syntax-dynamic-import@^7.8.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3", + "@babel/plugin-syntax-export-namespace-from@^7.8.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a", + "@babel/plugin-syntax-import-assertions@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz#9c05a7f592982aff1a2768260ad84bcd3f0c77fc", + "@babel/plugin-syntax-import-attributes@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06", + "@babel/plugin-syntax-import-meta@^7.10.4": "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51", + "@babel/plugin-syntax-json-strings@^7.8.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a", + "@babel/plugin-syntax-jsx@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473", + "@babel/plugin-syntax-jsx@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473", + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699", + "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9", + "@babel/plugin-syntax-numeric-separator@^7.10.4": "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97", + "@babel/plugin-syntax-object-rest-spread@^7.8.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871", + "@babel/plugin-syntax-optional-catch-binding@^7.8.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1", + "@babel/plugin-syntax-optional-chaining@^7.8.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a", + "@babel/plugin-syntax-private-property-in-object@^7.14.5": "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad", + "@babel/plugin-syntax-top-level-await@^7.14.5": "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c", + "@babel/plugin-syntax-typescript@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f", + "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357", + "@babel/plugin-transform-arrow-functions@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz#94c6dcfd731af90f27a79509f9ab7fb2120fc38b", + "@babel/plugin-transform-async-generator-functions@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.3.tgz#9df2627bad7f434ed13eef3e61b2b65cafd4885b", + "@babel/plugin-transform-async-to-generator@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa", + "@babel/plugin-transform-block-scoped-functions@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77", + "@babel/plugin-transform-block-scoping@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.3.tgz#e99a3ff08f58edd28a8ed82481df76925a4ffca7", + "@babel/plugin-transform-class-properties@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48", + "@babel/plugin-transform-class-static-block@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.3.tgz#56f2371c7e5bf6ff964d84c5dc4d4db5536b5159", + "@babel/plugin-transform-classes@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz#73380c632c095b03e8503c24fd38f95ad41ffacb", + "@babel/plugin-transform-computed-properties@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474", + "@babel/plugin-transform-destructuring@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311", + "@babel/plugin-transform-dotall-regex@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50", + "@babel/plugin-transform-duplicate-keys@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce", + "@babel/plugin-transform-dynamic-import@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.3.tgz#82625924da9ed5fb11a428efb02e43bc9a3ab13e", + "@babel/plugin-transform-exponentiation-operator@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18", + "@babel/plugin-transform-export-namespace-from@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.3.tgz#dcd066d995f6ac6077e5a4ccb68322a01e23ac49", + "@babel/plugin-transform-for-of@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz#afe115ff0fbce735e02868d41489093c63e15559", + "@babel/plugin-transform-function-name@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc", + "@babel/plugin-transform-json-strings@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.3.tgz#489724ab7d3918a4329afb4172b2fd2cf3c8d245", + "@babel/plugin-transform-literals@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4", + "@babel/plugin-transform-logical-assignment-operators@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.3.tgz#3a406d6083feb9487083bca6d2334a3c9b6c4808", + "@babel/plugin-transform-member-expression-literals@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc", + "@babel/plugin-transform-modules-amd@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d", + "@babel/plugin-transform-modules-commonjs@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4", + "@babel/plugin-transform-modules-systemjs@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz#fa7e62248931cb15b9404f8052581c302dd9de81", + "@babel/plugin-transform-modules-umd@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9", + "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f", + "@babel/plugin-transform-new-target@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980", + "@babel/plugin-transform-nullish-coalescing-operator@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.3.tgz#8a613d514b521b640344ed7c56afeff52f9413f8", + "@babel/plugin-transform-numeric-separator@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.3.tgz#2f8da42b75ba89e5cfcd677afd0856d52c0c2e68", + "@babel/plugin-transform-object-rest-spread@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.3.tgz#509373753b5f7202fe1940e92fd075bd7874955f", + "@babel/plugin-transform-object-super@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd", + "@babel/plugin-transform-optional-catch-binding@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.3.tgz#362c0b545ee9e5b0fa9d9e6fe77acf9d4c480027", + "@babel/plugin-transform-optional-chaining@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.3.tgz#92fc83f54aa3adc34288933fa27e54c13113f4be", + "@babel/plugin-transform-parameters@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af", + "@babel/plugin-transform-private-methods@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4", + "@babel/plugin-transform-private-property-in-object@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.3.tgz#5cd34a2ce6f2d008cc8f91d8dcc29e2c41466da6", + "@babel/plugin-transform-property-literals@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875", + "@babel/plugin-transform-react-constant-elements@^7.18.12": "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.23.3.tgz#5efc001d07ef0f7da0d73c3a86c132f73d28e43c", + "@babel/plugin-transform-react-display-name@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz#70529f034dd1e561045ad3c8152a267f0d7b6200", + "@babel/plugin-transform-react-jsx-development@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87", + "@babel/plugin-transform-react-jsx@^7.22.15": "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6", + "@babel/plugin-transform-react-jsx@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6", + "@babel/plugin-transform-react-pure-annotations@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz#fabedbdb8ee40edf5da96f3ecfc6958e3783b93c", + "@babel/plugin-transform-regenerator@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c", + "@babel/plugin-transform-reserved-words@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8", + "@babel/plugin-transform-runtime@^7.22.9": "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.3.tgz#0aa7485862b0b5cb0559c1a5ec08b4923743ee3b", + "@babel/plugin-transform-shorthand-properties@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz#97d82a39b0e0c24f8a981568a8ed851745f59210", + "@babel/plugin-transform-spread@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c", + "@babel/plugin-transform-sticky-regex@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04", + "@babel/plugin-transform-template-literals@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07", + "@babel/plugin-transform-typeof-symbol@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4", + "@babel/plugin-transform-typescript@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.3.tgz#ce806e6cb485d468c48c4f717696719678ab0138", + "@babel/plugin-transform-unicode-escapes@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925", + "@babel/plugin-transform-unicode-property-regex@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad", + "@babel/plugin-transform-unicode-regex@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc", + "@babel/plugin-transform-unicode-sets-regex@^7.23.3": "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e", + "@babel/preset-env@^7.19.4": "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.3.tgz#d299e0140a7650684b95c62be2db0ef8c975143e", + "@babel/preset-env@^7.22.9": "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.3.tgz#d299e0140a7650684b95c62be2db0ef8c975143e", + "@babel/preset-modules@0.1.6-no-external-plugins": "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a", + "@babel/preset-react@^7.18.6": "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.23.3.tgz#f73ca07e7590f977db07eb54dbe46538cc015709", + "@babel/preset-react@^7.22.5": "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.23.3.tgz#f73ca07e7590f977db07eb54dbe46538cc015709", + "@babel/preset-typescript@^7.18.6": "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913", + "@babel/preset-typescript@^7.22.5": "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913", + "@babel/regjsgen@^0.8.0": "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310", + "@babel/runtime-corejs3@^7.22.6": "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.23.2.tgz#a5cd9d8b408fb946b2f074b21ea40c04e516795c", + "@babel/runtime@^7.1.2": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885", + "@babel/runtime@^7.10.3": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885", + "@babel/runtime@^7.12.13": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885", + "@babel/runtime@^7.12.5": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885", + "@babel/runtime@^7.22.6": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885", + "@babel/runtime@^7.8.4": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885", + "@babel/template@^7.22.15": "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38", + "@babel/traverse@^7.22.8": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.3.tgz#26ee5f252e725aa7aca3474aa5b324eaf7908b5b", + "@babel/traverse@^7.23.2": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.3.tgz#26ee5f252e725aa7aca3474aa5b324eaf7908b5b", + "@babel/traverse@^7.23.3": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.3.tgz#26ee5f252e725aa7aca3474aa5b324eaf7908b5b", + "@babel/types@^7.20.0": "https://registry.yarnpkg.com/@babel/types/-/types-7.23.3.tgz#d5ea892c07f2ec371ac704420f4dcdb07b5f9598", + "@babel/types@^7.22.15": "https://registry.yarnpkg.com/@babel/types/-/types-7.23.3.tgz#d5ea892c07f2ec371ac704420f4dcdb07b5f9598", + "@babel/types@^7.22.19": "https://registry.yarnpkg.com/@babel/types/-/types-7.23.3.tgz#d5ea892c07f2ec371ac704420f4dcdb07b5f9598", + "@babel/types@^7.22.5": "https://registry.yarnpkg.com/@babel/types/-/types-7.23.3.tgz#d5ea892c07f2ec371ac704420f4dcdb07b5f9598", + "@babel/types@^7.23.0": "https://registry.yarnpkg.com/@babel/types/-/types-7.23.3.tgz#d5ea892c07f2ec371ac704420f4dcdb07b5f9598", + "@babel/types@^7.23.3": "https://registry.yarnpkg.com/@babel/types/-/types-7.23.3.tgz#d5ea892c07f2ec371ac704420f4dcdb07b5f9598", + "@babel/types@^7.4.4": "https://registry.yarnpkg.com/@babel/types/-/types-7.23.3.tgz#d5ea892c07f2ec371ac704420f4dcdb07b5f9598", + "@colors/colors@1.5.0": "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9", + "@discoveryjs/json-ext@0.5.7": "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70", + "@docusaurus/core@3.0.0": "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.0.0.tgz#46bc9bf2bcd99ca98a1c8f10a70bf3afaaaf9dcb", + "@docusaurus/cssnano-preset@3.0.0": "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.0.0.tgz#87fbf9cbc7c383e207119b44c17fb1d05c73af7c", + "@docusaurus/logger@3.0.0": "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.0.0.tgz#02a4bfecec6aa3732c8bd9597ca9d5debab813a6", + "@docusaurus/mdx-loader@3.0.0": "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.0.0.tgz#2593889e43dc4bbd8dfa074d86c8bb4206cf4171", + "@docusaurus/plugin-google-gtag@^3.0.0": "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.0.0.tgz#a4c407b80cb46773bea070816ebb547c5663f0b3", + "@docusaurus/react-loadable@5.5.2": "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce", + "@docusaurus/types@3.0.0": "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.0.0.tgz#3edabe43f70b45f81a48f3470d6a73a2eba41945", + "@docusaurus/utils-common@3.0.0": "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.0.0.tgz#fb019e5228b20852a5b98f50672a02843a03ba03", + "@docusaurus/utils-validation@3.0.0": "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.0.0.tgz#56f3ba89ceba9826989408a96827897c0b724612", + "@docusaurus/utils@3.0.0": "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.0.0.tgz#2ef0c8e434036fe104dca4c694fd50022b2ba1ed", + "@hapi/hoek@^9.0.0": "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb", + "@hapi/topo@^5.0.0": "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012", + "@jest/schemas@^29.6.3": "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03", + "@jest/types@^29.6.3": "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59", + "@jridgewell/gen-mapping@^0.3.0": "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098", + "@jridgewell/gen-mapping@^0.3.2": "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098", + "@jridgewell/resolve-uri@^3.1.0": "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721", + "@jridgewell/set-array@^1.0.1": "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72", + "@jridgewell/source-map@^0.3.3": "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91", + "@jridgewell/sourcemap-codec@^1.4.10": "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32", + "@jridgewell/sourcemap-codec@^1.4.14": "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32", + "@jridgewell/trace-mapping@^0.3.17": "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f", + "@jridgewell/trace-mapping@^0.3.9": "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f", + "@leichtgewicht/ip-codec@^2.0.1": "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b", + "@mdx-js/mdx@^3.0.0": "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-3.0.0.tgz#37ef87685143fafedf1165f0a79e9fe95fbe5154", + "@nodelib/fs.scandir@2.1.5": "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5", + "@nodelib/fs.stat@2.0.5": "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b", + "@nodelib/fs.stat@^2.0.2": "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b", + "@nodelib/fs.walk@^1.2.3": "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a", + "@pnpm/config.env-replace@^1.1.0": "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c", + "@pnpm/network.ca-file@^1.0.1": "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983", + "@pnpm/npm-conf@^2.1.0": "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz#0058baf1c26cbb63a828f0193795401684ac86f0", + "@polka/url@^1.0.0-next.20": "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.23.tgz#498e41218ab3b6a1419c735e5c6ae2c5ed609b6c", + "@sideway/address@^4.1.3": "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0", + "@sideway/formula@^3.0.1": "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f", + "@sideway/pinpoint@^2.0.0": "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df", + "@sinclair/typebox@^0.27.8": "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e", + "@sindresorhus/is@^3.1.2": "https://registry.yarnpkg.com/@sindresorhus/is/-/is-3.1.2.tgz#548650de521b344e3781fbdb0ece4aa6f729afb8", + "@sindresorhus/is@^5.2.0": "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668", + "@slorber/remark-comment@^1.0.0": "https://registry.yarnpkg.com/@slorber/remark-comment/-/remark-comment-1.0.0.tgz#2a020b3f4579c89dec0361673206c28d67e08f5a", + "@slorber/static-site-generator-webpack-plugin@^4.0.7": "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz#fc1678bddefab014e2145cbe25b3ce4e1cfc36f3", + "@svgr/babel-plugin-add-jsx-attribute@^6.5.1": "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba", + "@svgr/babel-plugin-remove-jsx-attribute@*": "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186", + "@svgr/babel-plugin-remove-jsx-empty-expression@*": "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44", + "@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60", + "@svgr/babel-plugin-svg-dynamic-title@^6.5.1": "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4", + "@svgr/babel-plugin-svg-em-dimensions@^6.5.1": "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217", + "@svgr/babel-plugin-transform-react-native-svg@^6.5.1": "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305", + "@svgr/babel-plugin-transform-svg-component@^6.5.1": "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250", + "@svgr/babel-preset@^6.5.1": "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828", + "@svgr/core@^6.5.1": "https://registry.yarnpkg.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a", + "@svgr/hast-util-to-babel-ast@^6.5.1": "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2", + "@svgr/plugin-jsx@^6.5.1": "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072", + "@svgr/plugin-svgo@^6.5.1": "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz#0f91910e988fc0b842f88e0960c2862e022abe84", + "@svgr/webpack@^6.5.1": "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.5.1.tgz#ecf027814fc1cb2decc29dc92f39c3cf691e40e8", + "@szmarczak/http-timer@^5.0.1": "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a", + "@trysound/sax@0.2.0": "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad", + "@types/acorn@^4.0.0": "https://registry.yarnpkg.com/@types/acorn/-/acorn-4.0.6.tgz#d61ca5480300ac41a7d973dd5b84d0a591154a22", + "@types/body-parser@*": "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4", + "@types/bonjour@^3.5.9": "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956", + "@types/connect-history-api-fallback@^1.3.5": "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.3.tgz#7793aa2160cef7db0ce5fe2b8aab621200f1a470", + "@types/connect@*": "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858", + "@types/debug@^4.0.0": "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917", + "@types/eslint-scope@^3.7.3": "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5", + "@types/eslint@*": "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.7.tgz#430b3cc96db70c81f405e6a08aebdb13869198f5", + "@types/estree-jsx@^1.0.0": "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-1.0.3.tgz#f8aa833ec986d82b8271a294a92ed1565bf2c66a", + "@types/estree@*": "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4", + "@types/estree@^1.0.0": "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4", + "@types/express-serve-static-core@*": "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz#5077defa630c2e8d28aa9ffc2c01c157c305bef6", + "@types/express-serve-static-core@^4.17.33": "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz#5077defa630c2e8d28aa9ffc2c01c157c305bef6", + "@types/express@*": "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d", + "@types/express@^4.17.13": "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d", + "@types/gtag.js@^0.0.12": "https://registry.yarnpkg.com/@types/gtag.js/-/gtag.js-0.0.12.tgz#095122edca896689bdfcdd73b057e23064d23572", + "@types/hast@^3.0.0": "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.3.tgz#7f75e6b43bc3f90316046a287d9ad3888309f7e1", + "@types/history@^4.7.11": "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64", + "@types/html-minifier-terser@^6.0.0": "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35", + "@types/http-cache-semantics@^4.0.2": "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4", + "@types/http-errors@*": "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f", + "@types/http-proxy@^1.17.8": "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec", + "@types/istanbul-lib-coverage@*": "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7", + "@types/istanbul-lib-coverage@^2.0.0": "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7", + "@types/istanbul-lib-report@*": "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf", + "@types/istanbul-reports@^3.0.0": "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54", + "@types/json-schema@*": "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841", + "@types/json-schema@^7.0.4": "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841", + "@types/json-schema@^7.0.5": "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841", + "@types/json-schema@^7.0.8": "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841", + "@types/json-schema@^7.0.9": "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841", + "@types/mdast@^4.0.0": "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.3.tgz#1e011ff013566e919a4232d1701ad30d70cab333", + "@types/mdast@^4.0.2": "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.3.tgz#1e011ff013566e919a4232d1701ad30d70cab333", + "@types/mdx@^2.0.0": "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.10.tgz#0d7b57fb1d83e27656156e4ee0dfba96532930e4", + "@types/mime@*": "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45", + "@types/mime@^1": "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690", + "@types/ms@*": "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433", + "@types/node-forge@^1.3.0": "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.9.tgz#0fe4a7ba69c0b173f56e6de65d0eae2c1dd4bbfe", + "@types/node@*": "https://registry.yarnpkg.com/@types/node/-/node-20.9.0.tgz#bfcdc230583aeb891cf51e73cfdaacdd8deae298", + "@types/parse-json@^4.0.0": "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239", + "@types/prop-types@*": "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.10.tgz#892afc9332c4d62a5ea7e897fe48ed2085bbb08a", + "@types/qs@*": "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.10.tgz#0af26845b5067e1c9a622658a51f60a3934d51e8", + "@types/range-parser@*": "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb", + "@types/react@*": "https://registry.yarnpkg.com/@types/react/-/react-18.2.37.tgz#0f03af69e463c0f19a356c2660dbca5d19c44cae", + "@types/retry@0.12.0": "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d", + "@types/scheduler@*": "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.6.tgz#eb26db6780c513de59bee0b869ef289ad3068711", + "@types/send@*": "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a", + "@types/serve-index@^1.9.1": "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898", + "@types/serve-static@*": "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033", + "@types/serve-static@^1.13.10": "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033", + "@types/sockjs@^0.3.33": "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535", + "@types/unist@*": "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.2.tgz#6dd61e43ef60b34086287f83683a5c1b2dc53d20", + "@types/unist@^2.0.0": "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc", + "@types/unist@^3.0.0": "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.2.tgz#6dd61e43ef60b34086287f83683a5c1b2dc53d20", + "@types/ws@^8.5.5": "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.9.tgz#384c489f99c83225a53f01ebc3eddf3b8e202a8c", + "@types/yargs-parser@*": "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15", + "@types/yargs@^17.0.8": "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.31.tgz#8fd0089803fd55d8a285895a18b88cb71a99683c", + "@ungap/structured-clone@^1.0.0": "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406", + "@webassemblyjs/ast@1.11.6": "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24", + "@webassemblyjs/ast@^1.11.5": "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24", + "@webassemblyjs/floating-point-hex-parser@1.11.6": "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431", + "@webassemblyjs/helper-api-error@1.11.6": "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768", + "@webassemblyjs/helper-buffer@1.11.6": "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093", + "@webassemblyjs/helper-numbers@1.11.6": "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5", + "@webassemblyjs/helper-wasm-bytecode@1.11.6": "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9", + "@webassemblyjs/helper-wasm-section@1.11.6": "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577", + "@webassemblyjs/ieee754@1.11.6": "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a", + "@webassemblyjs/leb128@1.11.6": "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7", + "@webassemblyjs/utf8@1.11.6": "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a", + "@webassemblyjs/wasm-edit@^1.11.5": "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab", + "@webassemblyjs/wasm-gen@1.11.6": "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268", + "@webassemblyjs/wasm-opt@1.11.6": "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2", + "@webassemblyjs/wasm-parser@1.11.6": "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1", + "@webassemblyjs/wasm-parser@^1.11.5": "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1", + "@webassemblyjs/wast-printer@1.11.6": "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20", + "@xtuc/ieee754@^1.2.0": "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790", + "@xtuc/long@4.2.2": "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d", + "accepts@~1.3.4": "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e", + "accepts@~1.3.5": "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e", + "accepts@~1.3.8": "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e", + "acorn-import-assertions@^1.9.0": "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac", + "acorn-jsx@^5.0.0": "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937", + "acorn-walk@^8.0.0": "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.0.tgz#2097665af50fd0cf7a2dfccd2b9368964e66540f", + "acorn@^8.0.0": "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b", + "acorn@^8.0.4": "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b", + "acorn@^8.7.1": "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b", + "acorn@^8.8.2": "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b", + "address@^1.0.1": "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e", + "address@^1.1.2": "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e", + "aggregate-error@^3.0.0": "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a", + "ajv-formats@^2.1.1": "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520", + "ajv-keywords@^3.4.1": "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d", + "ajv-keywords@^3.5.2": "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d", + "ajv-keywords@^5.1.0": "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16", + "ajv@^6.12.2": "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4", + "ajv@^6.12.5": "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4", + "ajv@^8.0.0": "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1", + "ajv@^8.9.0": "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1", + "ansi-align@^3.0.1": "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59", + "ansi-html-community@^0.0.8": "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41", + "ansi-regex@^5.0.1": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304", + "ansi-regex@^6.0.1": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a", + "ansi-styles@^3.2.1": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d", + "ansi-styles@^4.1.0": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937", + "ansi-styles@^6.1.0": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5", + "anymatch@~3.1.2": "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e", + "argparse@^1.0.7": "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911", + "argparse@^2.0.1": "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38", + "array-flatten@1.1.1": "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2", + "array-flatten@^2.1.2": "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099", + "array-union@^2.1.0": "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d", + "astring@^1.8.0": "https://registry.yarnpkg.com/astring/-/astring-1.8.6.tgz#2c9c157cf1739d67561c56ba896e6948f6b93731", + "asynckit@^0.4.0": "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79", + "at-least-node@^1.0.0": "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2", + "autoprefixer@^10.4.12": "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8", + "autoprefixer@^10.4.14": "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8", + "axios@^0.27.2": "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972", + "babel-loader@^9.1.3": "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a", + "babel-plugin-dynamic-import-node@^2.3.3": "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3", + "babel-plugin-polyfill-corejs2@^0.4.6": "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313", + "babel-plugin-polyfill-corejs3@^0.8.5": "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf", + "babel-plugin-polyfill-regenerator@^0.5.3": "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5", + "bail@^2.0.0": "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d", + "balanced-match@^1.0.0": "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee", + "batch@0.6.1": "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16", + "big.js@^5.2.2": "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328", + "binary-extensions@^2.0.0": "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d", + "body-parser@1.20.1": "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668", + "bonjour-service@^1.0.11": "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.1.1.tgz#960948fa0e0153f5d26743ab15baf8e33752c135", + "boolbase@^1.0.0": "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e", + "boxen@^6.2.1": "https://registry.yarnpkg.com/boxen/-/boxen-6.2.1.tgz#b098a2278b2cd2845deef2dff2efc38d329b434d", + "boxen@^7.0.0": "https://registry.yarnpkg.com/boxen/-/boxen-7.1.1.tgz#f9ba525413c2fec9cdb88987d835c4f7cad9c8f4", + "brace-expansion@^1.1.7": "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd", + "braces@^3.0.2": "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107", + "braces@~3.0.2": "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107", + "browserslist@^4.0.0": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619", + "browserslist@^4.14.5": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619", + "browserslist@^4.18.1": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619", + "browserslist@^4.21.10": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619", + "browserslist@^4.21.4": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619", + "browserslist@^4.21.9": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619", + "browserslist@^4.22.1": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619", + "buffer-from@^1.0.0": "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5", + "bytes@3.0.0": "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048", + "bytes@3.1.2": "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5", + "cacheable-lookup@^7.0.0": "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27", + "cacheable-request@^10.2.8": "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.14.tgz#eb915b665fda41b79652782df3f553449c406b9d", + "call-bind@^1.0.0": "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513", + "call-bind@^1.0.2": "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513", + "callsites@^3.0.0": "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73", + "camel-case@^4.1.2": "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a", + "camelcase@^6.2.0": "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a", + "camelcase@^7.0.1": "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.1.tgz#f02e50af9fd7782bc8b88a3558c32fd3a388f048", + "caniuse-api@^3.0.0": "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0", + "caniuse-lite@^1.0.0": "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz#752f21f56f96f1b1a52e97aae98c57c562d5d9da", + "caniuse-lite@^1.0.30001538": "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz#752f21f56f96f1b1a52e97aae98c57c562d5d9da", + "caniuse-lite@^1.0.30001541": "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz#752f21f56f96f1b1a52e97aae98c57c562d5d9da", + "ccount@^2.0.0": "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5", + "chalk@^2.4.2": "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424", + "chalk@^4.0.0": "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01", + "chalk@^4.1.0": "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01", + "chalk@^4.1.2": "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01", + "chalk@^5.0.1": "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385", + "chalk@^5.2.0": "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385", + "char-regex@^1.0.2": "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf", + "character-entities-html4@^2.0.0": "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b", + "character-entities-legacy@^3.0.0": "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b", + "character-entities@^2.0.0": "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22", + "character-reference-invalid@^2.0.0": "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9", + "chokidar@^3.4.2": "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd", + "chokidar@^3.5.3": "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd", + "chrome-trace-event@^1.0.2": "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac", + "ci-info@^3.2.0": "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4", + "clean-css@^5.2.2": "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224", + "clean-css@^5.3.2": "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224", + "clean-css@~5.3.2": "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224", + "clean-stack@^2.0.0": "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b", + "cli-boxes@^3.0.0": "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145", + "cli-table3@^0.6.3": "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2", + "clone-deep@^4.0.1": "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387", + "collapse-white-space@^2.0.0": "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-2.1.0.tgz#640257174f9f42c740b40f3b55ee752924feefca", + "color-convert@^1.9.0": "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8", + "color-convert@^2.0.1": "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3", + "color-name@1.1.3": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25", + "color-name@~1.1.4": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2", + "colord@^2.9.1": "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43", + "colorette@^2.0.10": "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a", + "combine-promises@^1.1.0": "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.2.0.tgz#5f2e68451862acf85761ded4d9e2af7769c2ca6a", + "combined-stream@^1.0.8": "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f", + "comma-separated-tokens@^2.0.0": "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee", + "commander@^10.0.0": "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06", + "commander@^2.20.0": "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33", + "commander@^5.1.0": "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae", + "commander@^7.2.0": "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7", + "commander@^8.3.0": "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66", + "common-path-prefix@^3.0.0": "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0", + "compressible@~2.0.16": "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba", + "compression@^1.7.4": "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f", + "concat-map@0.0.1": "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b", + "config-chain@^1.1.11": "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4", + "configstore@^6.0.0": "https://registry.yarnpkg.com/configstore/-/configstore-6.0.0.tgz#49eca2ebc80983f77e09394a1a56e0aca8235566", + "connect-history-api-fallback@^2.0.0": "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8", + "consola@^2.15.3": "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550", + "content-disposition@0.5.2": "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4", + "content-disposition@0.5.4": "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe", + "content-type@~1.0.4": "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918", + "convert-source-map@^2.0.0": "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a", + "cookie-signature@1.0.6": "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c", + "cookie@0.5.0": "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b", + "copy-webpack-plugin@^11.0.0": "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a", + "core-js-compat@^3.31.0": "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.2.tgz#3ea4563bfd015ad4e4b52442865b02c62aba5085", + "core-js-compat@^3.33.1": "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.2.tgz#3ea4563bfd015ad4e4b52442865b02c62aba5085", + "core-js-pure@^3.30.2": "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.33.2.tgz#644830db2507ef84d068a70980ccd99c275f5fa6", + "core-js@^3.31.1": "https://registry.yarnpkg.com/core-js/-/core-js-3.33.2.tgz#312bbf6996a3a517c04c99b9909cdd27138d1ceb", + "core-util-is@~1.0.0": "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85", + "cosmiconfig@^6.0.0": "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982", + "cosmiconfig@^7.0.1": "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6", + "cosmiconfig@^8.2.0": "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3", + "cross-spawn@^7.0.3": "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6", + "crypto-random-string@^4.0.0": "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2", + "css-declaration-sorter@^6.3.1": "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71", + "css-loader@^6.8.1": "https://registry.yarnpkg.com/css-loader/-/css-loader-6.8.1.tgz#0f8f52699f60f5e679eab4ec0fcd68b8e8a50a88", + "css-minimizer-webpack-plugin@^4.2.2": "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz#79f6199eb5adf1ff7ba57f105e3752d15211eb35", + "css-select@^4.1.3": "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b", + "css-tree@^1.1.2": "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d", + "css-tree@^1.1.3": "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d", + "css-what@^6.0.1": "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4", + "cssesc@^3.0.0": "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee", + "cssnano-preset-advanced@^5.3.10": "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz#25558a1fbf3a871fb6429ce71e41be7f5aca6eef", + "cssnano-preset-default@^5.2.14": "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8", + "cssnano-utils@^3.1.0": "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861", + "cssnano@^5.1.15": "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf", + "cssnano@^5.1.8": "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf", + "csso@^4.2.0": "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529", + "csstype@^3.0.2": "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b", + "debug@2.6.9": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f", + "debug@4": "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865", + "debug@^2.6.0": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f", + "debug@^4.0.0": "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865", + "debug@^4.1.0": "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865", + "debug@^4.1.1": "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865", + "decode-named-character-reference@^1.0.0": "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e", + "decompress-response@^6.0.0": "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc", + "deep-extend@^0.6.0": "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac", + "deepmerge@^4.2.2": "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a", + "default-gateway@^6.0.3": "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71", + "defer-to-connect@^2.0.1": "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587", + "define-data-property@^1.0.1": "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3", + "define-data-property@^1.1.1": "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3", + "define-lazy-prop@^2.0.0": "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f", + "define-properties@^1.1.4": "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c", + "del@^6.1.1": "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a", + "delayed-stream@~1.0.0": "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619", + "depd@2.0.0": "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df", + "depd@~1.1.2": "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9", + "dequal@^2.0.0": "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be", + "destroy@1.2.0": "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015", + "detect-node@^2.0.4": "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1", + "detect-port-alt@^1.1.6": "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275", + "detect-port@^1.5.1": "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b", + "devlop@^1.0.0": "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018", + "devlop@^1.1.0": "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018", + "dir-glob@^3.0.1": "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f", + "dns-equal@^1.0.0": "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d", + "dns-packet@^5.2.2": "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f", + "dom-converter@^0.2.0": "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768", + "dom-serializer@^1.0.1": "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30", + "domelementtype@^2.0.1": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d", + "domelementtype@^2.2.0": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d", + "domhandler@^4.0.0": "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c", + "domhandler@^4.2.0": "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c", + "domhandler@^4.3.1": "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c", + "domutils@^2.5.2": "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135", + "domutils@^2.8.0": "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135", + "dot-case@^3.0.4": "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751", + "dot-prop@^6.0.1": "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083", + "duplexer@^0.1.2": "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6", + "eastasianwidth@^0.2.0": "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb", + "ee-first@1.1.1": "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d", + "electron-to-chromium@^1.4.535": "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.580.tgz#2f8f70f70733a6be1fb6f31de1224e6dc4bb196d", + "emoji-regex@^8.0.0": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37", + "emoji-regex@^9.2.2": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72", + "emojilib@^2.4.0": "https://registry.yarnpkg.com/emojilib/-/emojilib-2.4.0.tgz#ac518a8bb0d5f76dda57289ccb2fdf9d39ae721e", + "emojis-list@^3.0.0": "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78", + "emoticon@^4.0.1": "https://registry.yarnpkg.com/emoticon/-/emoticon-4.0.1.tgz#2d2bbbf231ce3a5909e185bbb64a9da703a1e749", + "encodeurl@~1.0.2": "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59", + "enhanced-resolve@^5.15.0": "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35", + "entities@^2.0.0": "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55", + "entities@^4.4.0": "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48", + "error-ex@^1.3.1": "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf", + "es-module-lexer@^1.2.1": "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.0.tgz#285182e7f8f536ff5f4c57f2309836ef851474d8", + "escalade@^3.1.1": "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40", + "escape-goat@^4.0.0": "https://registry.yarnpkg.com/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081", + "escape-html@^1.0.3": "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988", + "escape-html@~1.0.3": "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988", + "escape-string-regexp@^1.0.5": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4", + "escape-string-regexp@^4.0.0": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34", + "escape-string-regexp@^5.0.0": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8", + "eslint-scope@5.1.1": "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c", + "esprima@^4.0.0": "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71", + "esrecurse@^4.3.0": "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921", + "estraverse@^4.1.1": "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d", + "estraverse@^5.2.0": "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123", + "estree-util-attach-comments@^3.0.0": "https://registry.yarnpkg.com/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz#344bde6a64c8a31d15231e5ee9e297566a691c2d", + "estree-util-build-jsx@^3.0.0": "https://registry.yarnpkg.com/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz#b6d0bced1dcc4f06f25cf0ceda2b2dcaf98168f1", + "estree-util-is-identifier-name@^3.0.0": "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz#0b5ef4c4ff13508b34dcd01ecfa945f61fce5dbd", + "estree-util-to-js@^2.0.0": "https://registry.yarnpkg.com/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz#10a6fb924814e6abb62becf0d2bc4dea51d04f17", + "estree-util-value-to-estree@^3.0.1": "https://registry.yarnpkg.com/estree-util-value-to-estree/-/estree-util-value-to-estree-3.0.1.tgz#0b7b5d6b6a4aaad5c60999ffbc265a985df98ac5", + "estree-util-visit@^2.0.0": "https://registry.yarnpkg.com/estree-util-visit/-/estree-util-visit-2.0.0.tgz#13a9a9f40ff50ed0c022f831ddf4b58d05446feb", + "estree-walker@^3.0.0": "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d", + "esutils@^2.0.2": "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64", + "eta@^2.2.0": "https://registry.yarnpkg.com/eta/-/eta-2.2.0.tgz#eb8b5f8c4e8b6306561a455e62cd7492fe3a9b8a", + "etag@~1.8.1": "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887", + "eval@^0.1.8": "https://registry.yarnpkg.com/eval/-/eval-0.1.8.tgz#2b903473b8cc1d1989b83a1e7923f883eb357f85", + "eventemitter3@^4.0.0": "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f", + "events@^3.2.0": "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400", + "execa@^5.0.0": "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd", + "express@^4.17.3": "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59", + "extend-shallow@^2.0.1": "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f", + "extend@^3.0.0": "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa", + "fast-deep-equal@^3.1.1": "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525", + "fast-deep-equal@^3.1.3": "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525", + "fast-glob@^3.2.11": "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129", + "fast-glob@^3.2.9": "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129", + "fast-glob@^3.3.0": "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129", + "fast-json-stable-stringify@^2.0.0": "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633", + "fast-url-parser@1.1.3": "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d", + "fastq@^1.6.0": "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a", + "fault@^2.0.0": "https://registry.yarnpkg.com/fault/-/fault-2.0.1.tgz#d47ca9f37ca26e4bd38374a7c500b5a384755b6c", + "faye-websocket@^0.11.3": "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da", + "file-loader@^6.2.0": "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d", + "filesize@^8.0.6": "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8", + "fill-range@^7.0.1": "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40", + "finalhandler@1.2.0": "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32", + "find-cache-dir@^4.0.0": "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2", + "find-up@^3.0.0": "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73", + "find-up@^5.0.0": "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc", + "find-up@^6.3.0": "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790", + "flat@^5.0.2": "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241", + "follow-redirects@^1.0.0": "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a", + "follow-redirects@^1.14.9": "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a", + "fork-ts-checker-webpack-plugin@^6.5.0": "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz#eda2eff6e22476a2688d10661688c47f611b37f3", + "form-data-encoder@^2.1.2": "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5", + "form-data@^4.0.0": "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452", + "format@^0.2.0": "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b", + "forwarded@0.2.0": "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811", + "fraction.js@^4.3.6": "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7", + "fresh@0.5.2": "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7", + "fs-extra@^11.1.1": "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d", + "fs-extra@^9.0.0": "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d", + "fs-monkey@^1.0.4": "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788", + "fs.realpath@^1.0.0": "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f", + "fsevents@~2.3.2": "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6", + "function-bind@^1.1.2": "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c", + "gensync@^1.0.0-beta.2": "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0", + "get-intrinsic@^1.0.2": "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b", + "get-intrinsic@^1.1.3": "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b", + "get-intrinsic@^1.2.1": "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b", + "get-intrinsic@^1.2.2": "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b", + "get-own-enumerable-property-symbols@^3.0.0": "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664", + "get-stream@^6.0.0": "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7", + "get-stream@^6.0.1": "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7", + "github-slugger@^1.5.0": "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d", + "glob-parent@^5.1.2": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4", + "glob-parent@^6.0.1": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3", + "glob-parent@~5.1.2": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4", + "glob-to-regexp@^0.4.1": "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e", + "glob@^7.0.0": "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b", + "glob@^7.1.3": "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b", + "glob@^7.1.6": "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b", + "global-dirs@^3.0.0": "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485", + "global-modules@^2.0.0": "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780", + "global-prefix@^3.0.0": "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97", + "globals@^11.1.0": "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e", + "globby@^11.0.1": "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b", + "globby@^11.0.4": "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b", + "globby@^11.1.0": "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b", + "globby@^13.1.1": "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592", + "gopd@^1.0.1": "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c", + "got@^12.1.0": "https://registry.yarnpkg.com/got/-/got-12.6.1.tgz#8869560d1383353204b5a9435f782df9c091f549", + "graceful-fs@4.2.10": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c", + "graceful-fs@^4.1.2": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3", + "graceful-fs@^4.1.6": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3", + "graceful-fs@^4.2.0": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3", + "graceful-fs@^4.2.4": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3", + "graceful-fs@^4.2.6": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3", + "graceful-fs@^4.2.9": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3", + "gray-matter@^4.0.3": "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798", + "gzip-size@^6.0.0": "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462", + "handle-thing@^2.0.0": "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e", + "has-flag@^3.0.0": "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd", + "has-flag@^4.0.0": "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b", + "has-property-descriptors@^1.0.0": "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340", + "has-proto@^1.0.1": "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0", + "has-symbols@^1.0.3": "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8", + "has-yarn@^3.0.0": "https://registry.yarnpkg.com/has-yarn/-/has-yarn-3.0.0.tgz#c3c21e559730d1d3b57e28af1f30d06fac38147d", + "hasown@^2.0.0": "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c", + "hast-util-from-parse5@^8.0.0": "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz#654a5676a41211e14ee80d1b1758c399a0327651", + "hast-util-parse-selector@^4.0.0": "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz#352879fa86e25616036037dd8931fb5f34cb4a27", + "hast-util-raw@^9.0.0": "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-9.0.1.tgz#2ba8510e4ed2a1e541cde2a4ebb5c38ab4c82c2d", + "hast-util-to-estree@^3.0.0": "https://registry.yarnpkg.com/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz#f2afe5e869ddf0cf690c75f9fc699f3180b51b19", + "hast-util-to-jsx-runtime@^2.0.0": "https://registry.yarnpkg.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.2.0.tgz#ffd59bfcf0eb8321c6ed511bfc4b399ac3404bc2", + "hast-util-to-parse5@^8.0.0": "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz#477cd42d278d4f036bc2ea58586130f6f39ee6ed", + "hast-util-whitespace@^3.0.0": "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621", + "hastscript@^8.0.0": "https://registry.yarnpkg.com/hastscript/-/hastscript-8.0.0.tgz#4ef795ec8dee867101b9f23cc830d4baf4fd781a", + "he@^1.2.0": "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f", + "history@^4.9.0": "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3", + "hoist-non-react-statics@^3.1.0": "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45", + "hpack.js@^2.1.6": "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2", + "html-entities@^2.3.2": "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061", + "html-minifier-terser@^6.0.2": "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab", + "html-minifier-terser@^7.2.0": "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz#18752e23a2f0ed4b0f550f217bb41693e975b942", + "html-tags@^3.3.1": "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce", + "html-void-elements@^3.0.0": "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7", + "html-webpack-plugin@^5.5.3": "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz#72270f4a78e222b5825b296e5e3e1328ad525a3e", + "htmlparser2@^6.1.0": "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7", + "http-cache-semantics@^4.1.1": "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a", + "http-deceiver@^1.2.7": "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87", + "http-errors@2.0.0": "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3", + "http-errors@~1.6.2": "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d", + "http-parser-js@>=0.5.1": "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3", + "http-proxy-middleware@^2.0.3": "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f", + "http-proxy@^1.18.1": "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549", + "http2-wrapper@^2.1.10": "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a", + "human-signals@^2.1.0": "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0", + "iconv-lite@0.4.24": "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b", + "icss-utils@^5.0.0": "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae", + "icss-utils@^5.1.0": "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae", + "ignore@^5.2.0": "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324", + "ignore@^5.2.4": "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324", + "image-size@^1.0.2": "https://registry.yarnpkg.com/image-size/-/image-size-1.0.2.tgz#d778b6d0ab75b2737c1556dd631652eb963bc486", + "immer@^9.0.7": "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176", + "import-fresh@^3.1.0": "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b", + "import-fresh@^3.2.1": "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b", + "import-fresh@^3.3.0": "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b", + "import-lazy@^4.0.0": "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153", + "imurmurhash@^0.1.4": "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea", + "indent-string@^4.0.0": "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251", + "inflight@^1.0.4": "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9", + "inherits@2": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", + "inherits@2.0.3": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de", + "inherits@2.0.4": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", + "inherits@^2.0.1": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", + "inherits@^2.0.3": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", + "inherits@~2.0.3": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", + "ini@2.0.0": "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5", + "ini@^1.3.4": "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c", + "ini@^1.3.5": "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c", + "ini@~1.3.0": "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c", + "inline-style-parser@0.1.1": "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1", + "interpret@^1.0.0": "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e", + "invariant@^2.2.4": "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6", + "ipaddr.js@1.9.1": "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3", + "ipaddr.js@^2.0.1": "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f", + "is-alphabetical@^2.0.0": "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b", + "is-alphanumerical@^2.0.0": "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875", + "is-arrayish@^0.2.1": "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d", + "is-binary-path@~2.1.0": "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09", + "is-ci@^3.0.1": "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867", + "is-core-module@^2.13.0": "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384", + "is-decimal@^2.0.0": "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7", + "is-docker@^2.0.0": "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa", + "is-docker@^2.1.1": "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa", + "is-extendable@^0.1.0": "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89", + "is-extglob@^2.1.1": "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2", + "is-fullwidth-code-point@^3.0.0": "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d", + "is-glob@^4.0.1": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084", + "is-glob@^4.0.3": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084", + "is-glob@~4.0.1": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084", + "is-hexadecimal@^2.0.0": "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027", + "is-installed-globally@^0.4.0": "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520", + "is-npm@^6.0.0": "https://registry.yarnpkg.com/is-npm/-/is-npm-6.0.0.tgz#b59e75e8915543ca5d881ecff864077cba095261", + "is-number@^7.0.0": "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b", + "is-obj@^1.0.1": "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f", + "is-obj@^2.0.0": "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982", + "is-path-cwd@^2.2.0": "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb", + "is-path-inside@^3.0.2": "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283", + "is-plain-obj@^3.0.0": "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7", + "is-plain-obj@^4.0.0": "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0", + "is-plain-object@^2.0.4": "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677", + "is-plain-object@^5.0.0": "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344", + "is-reference@^3.0.0": "https://registry.yarnpkg.com/is-reference/-/is-reference-3.0.2.tgz#154747a01f45cd962404ee89d43837af2cba247c", + "is-regexp@^1.0.0": "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069", + "is-root@^2.1.0": "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c", + "is-stream@^2.0.0": "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077", + "is-typedarray@^1.0.0": "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a", + "is-wsl@^2.2.0": "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271", + "is-yarn-global@^0.4.0": "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.4.1.tgz#b312d902b313f81e4eaf98b6361ba2b45cd694bb", + "isarray@0.0.1": "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf", + "isarray@~1.0.0": "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11", + "isexe@^2.0.0": "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10", + "isobject@^3.0.1": "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df", + "jest-util@^29.7.0": "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc", + "jest-worker@^27.4.5": "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0", + "jest-worker@^29.1.2": "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a", + "jiti@^1.18.2": "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d", + "jiti@^1.20.0": "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d", + "joi@^17.11.0": "https://registry.yarnpkg.com/joi/-/joi-17.11.0.tgz#aa9da753578ec7720e6f0ca2c7046996ed04fc1a", + "joi@^17.9.2": "https://registry.yarnpkg.com/joi/-/joi-17.11.0.tgz#aa9da753578ec7720e6f0ca2c7046996ed04fc1a", + "js-tokens@^3.0.0 || ^4.0.0": "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499", + "js-tokens@^4.0.0": "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499", + "js-yaml@^3.13.1": "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537", + "js-yaml@^4.1.0": "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602", + "jsesc@^2.5.1": "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4", + "jsesc@~0.5.0": "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d", + "json-buffer@3.0.1": "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13", + "json-parse-even-better-errors@^2.3.0": "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d", + "json-parse-even-better-errors@^2.3.1": "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d", + "json-schema-traverse@^0.4.1": "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660", + "json-schema-traverse@^1.0.0": "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2", + "json5@^2.1.2": "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283", + "json5@^2.2.3": "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283", + "jsonfile@^6.0.1": "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae", + "keyv@^4.5.3": "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93", + "kind-of@^6.0.0": "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd", + "kind-of@^6.0.2": "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd", + "kleur@^3.0.3": "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e", + "latest-version@^7.0.0": "https://registry.yarnpkg.com/latest-version/-/latest-version-7.0.0.tgz#843201591ea81a4d404932eeb61240fe04e9e5da", + "launch-editor@^2.6.0": "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c", + "leven@^3.1.0": "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2", + "lilconfig@^2.0.3": "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52", + "lines-and-columns@^1.1.6": "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632", + "loader-runner@^4.2.0": "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1", + "loader-utils@^2.0.0": "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c", + "loader-utils@^3.2.0": "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576", + "locate-path@^3.0.0": "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e", + "locate-path@^6.0.0": "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286", + "locate-path@^7.1.0": "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a", + "lodash.debounce@^4.0.8": "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af", + "lodash.escape@^4.0.1": "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98", + "lodash.flatten@^4.4.0": "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f", + "lodash.invokemap@^4.6.0": "https://registry.yarnpkg.com/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz#1748cda5d8b0ef8369c4eb3ec54c21feba1f2d62", + "lodash.memoize@^4.1.2": "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe", + "lodash.pullall@^4.2.0": "https://registry.yarnpkg.com/lodash.pullall/-/lodash.pullall-4.2.0.tgz#9d98b8518b7c965b0fae4099bd9fb7df8bbf38ba", + "lodash.uniq@^4.5.0": "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773", + "lodash.uniqby@^4.7.0": "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302", + "lodash@^4.17.20": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c", + "lodash@^4.17.21": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c", + "longest-streak@^3.0.0": "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4", + "loose-envify@^1.0.0": "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf", + "loose-envify@^1.2.0": "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf", + "loose-envify@^1.3.1": "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf", + "loose-envify@^1.4.0": "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf", + "lower-case@^2.0.2": "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28", + "lowercase-keys@^3.0.0": "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2", + "lru-cache@^5.1.1": "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920", + "lru-cache@^6.0.0": "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94", + "markdown-extensions@^2.0.0": "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-2.0.0.tgz#34bebc83e9938cae16e0e017e4a9814a8330d3c4", + "markdown-table@^3.0.0": "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.3.tgz#e6331d30e493127e031dd385488b5bd326e4a6bd", + "mdast-util-directive@^3.0.0": "https://registry.yarnpkg.com/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz#3fb1764e705bbdf0afb0d3f889e4404c3e82561f", + "mdast-util-find-and-replace@^3.0.0": "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz#a6fc7b62f0994e973490e45262e4bc07607b04e0", + "mdast-util-find-and-replace@^3.0.1": "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz#a6fc7b62f0994e973490e45262e4bc07607b04e0", + "mdast-util-from-markdown@^2.0.0": "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz#52f14815ec291ed061f2922fd14d6689c810cb88", + "mdast-util-frontmatter@^2.0.0": "https://registry.yarnpkg.com/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz#f5f929eb1eb36c8a7737475c7eb438261f964ee8", + "mdast-util-gfm-autolink-literal@^2.0.0": "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz#5baf35407421310a08e68c15e5d8821e8898ba2a", + "mdast-util-gfm-footnote@^2.0.0": "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz#25a1753c7d16db8bfd53cd84fe50562bd1e6d6a9", + "mdast-util-gfm-strikethrough@^2.0.0": "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz#d44ef9e8ed283ac8c1165ab0d0dfd058c2764c16", + "mdast-util-gfm-table@^2.0.0": "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz#7a435fb6223a72b0862b33afbd712b6dae878d38", + "mdast-util-gfm-task-list-item@^2.0.0": "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz#e68095d2f8a4303ef24094ab642e1047b991a936", + "mdast-util-gfm@^3.0.0": "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz#3f2aecc879785c3cb6a81ff3a243dc11eca61095", + "mdast-util-mdx-expression@^2.0.0": "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz#4968b73724d320a379110d853e943a501bfd9d87", + "mdast-util-mdx-jsx@^3.0.0": "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.0.0.tgz#f73631fa5bb7a36712ff1e9cedec0cafed03401c", + "mdast-util-mdx@^3.0.0": "https://registry.yarnpkg.com/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz#792f9cf0361b46bee1fdf1ef36beac424a099c41", + "mdast-util-mdxjs-esm@^2.0.0": "https://registry.yarnpkg.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz#019cfbe757ad62dd557db35a695e7314bcc9fa97", + "mdast-util-phrasing@^4.0.0": "https://registry.yarnpkg.com/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz#468cbbb277375523de807248b8ad969feb02a5c7", + "mdast-util-to-hast@^13.0.0": "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz#74c0a9f014bb2340cae6118f6fccd75467792be7", + "mdast-util-to-markdown@^2.0.0": "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz#9813f1d6e0cdaac7c244ec8c6dabfdb2102ea2b4", + "mdast-util-to-string@^4.0.0": "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz#7a5121475556a04e7eddeb67b264aae79d312814", + "mdn-data@2.0.14": "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50", + "media-typer@0.3.0": "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748", + "memfs@^3.1.2": "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6", + "memfs@^3.4.3": "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6", + "merge-descriptors@1.0.1": "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61", + "merge-stream@^2.0.0": "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60", + "merge2@^1.3.0": "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae", + "merge2@^1.4.1": "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae", + "methods@~1.1.2": "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee", + "micromark-core-commonmark@^2.0.0": "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz#50740201f0ee78c12a675bf3e68ffebc0bf931a3", + "micromark-extension-directive@^3.0.0": "https://registry.yarnpkg.com/micromark-extension-directive/-/micromark-extension-directive-3.0.0.tgz#527869de497a6de9024138479091bc885dae076b", + "micromark-extension-frontmatter@^2.0.0": "https://registry.yarnpkg.com/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz#651c52ffa5d7a8eeed687c513cd869885882d67a", + "micromark-extension-gfm-autolink-literal@^2.0.0": "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz#f1e50b42e67d441528f39a67133eddde2bbabfd9", + "micromark-extension-gfm-footnote@^2.0.0": "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz#91afad310065a94b636ab1e9dab2c60d1aab953c", + "micromark-extension-gfm-strikethrough@^2.0.0": "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz#6917db8e320da70e39ffbf97abdbff83e6783e61", + "micromark-extension-gfm-table@^2.0.0": "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz#2cf3fe352d9e089b7ef5fff003bdfe0da29649b7", + "micromark-extension-gfm-tagfilter@^2.0.0": "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz#f26d8a7807b5985fba13cf61465b58ca5ff7dc57", + "micromark-extension-gfm-task-list-item@^2.0.0": "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz#ee8b208f1ced1eb9fb11c19a23666e59d86d4838", + "micromark-extension-gfm@^3.0.0": "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz#3e13376ab95dd7a5cfd0e29560dfe999657b3c5b", + "micromark-extension-mdx-expression@^3.0.0": "https://registry.yarnpkg.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz#1407b9ce69916cf5e03a196ad9586889df25302a", + "micromark-extension-mdx-jsx@^3.0.0": "https://registry.yarnpkg.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz#4aba0797c25efb2366a3fd2d367c6b1c1159f4f5", + "micromark-extension-mdx-md@^2.0.0": "https://registry.yarnpkg.com/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz#1d252881ea35d74698423ab44917e1f5b197b92d", + "micromark-extension-mdxjs-esm@^3.0.0": "https://registry.yarnpkg.com/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz#de21b2b045fd2059bd00d36746081de38390d54a", + "micromark-extension-mdxjs@^3.0.0": "https://registry.yarnpkg.com/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz#b5a2e0ed449288f3f6f6c544358159557549de18", + "micromark-factory-destination@^2.0.0": "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz#857c94debd2c873cba34e0445ab26b74f6a6ec07", + "micromark-factory-label@^2.0.0": "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz#17c5c2e66ce39ad6f4fc4cbf40d972f9096f726a", + "micromark-factory-mdx-expression@^2.0.0": "https://registry.yarnpkg.com/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz#f2a9724ce174f1751173beb2c1f88062d3373b1b", + "micromark-factory-space@^1.0.0": "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz#c8f40b0640a0150751d3345ed885a080b0d15faf", + "micromark-factory-space@^2.0.0": "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz#5e7afd5929c23b96566d0e1ae018ae4fcf81d030", + "micromark-factory-title@^2.0.0": "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz#726140fc77892af524705d689e1cf06c8a83ea95", + "micromark-factory-whitespace@^2.0.0": "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz#9e92eb0f5468083381f923d9653632b3cfb5f763", + "micromark-util-character@^1.0.0": "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc", + "micromark-util-character@^1.1.0": "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc", + "micromark-util-character@^2.0.0": "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.0.1.tgz#52b824c2e2633b6fb33399d2ec78ee2a90d6b298", + "micromark-util-chunked@^2.0.0": "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz#e51f4db85fb203a79dbfef23fd41b2f03dc2ef89", + "micromark-util-classify-character@^2.0.0": "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz#8c7537c20d0750b12df31f86e976d1d951165f34", + "micromark-util-combine-extensions@^2.0.0": "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz#75d6ab65c58b7403616db8d6b31315013bfb7ee5", + "micromark-util-decode-numeric-character-reference@^2.0.0": "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz#2698bbb38f2a9ba6310e359f99fcb2b35a0d2bd5", + "micromark-util-decode-string@^2.0.0": "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz#7dfa3a63c45aecaa17824e656bcdb01f9737154a", + "micromark-util-encode@^2.0.0": "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz#0921ac7953dc3f1fd281e3d1932decfdb9382ab1", + "micromark-util-events-to-acorn@^2.0.0": "https://registry.yarnpkg.com/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz#4275834f5453c088bd29cd72dfbf80e3327cec07", + "micromark-util-html-tag-name@^2.0.0": "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz#ae34b01cbe063363847670284c6255bb12138ec4", + "micromark-util-normalize-identifier@^2.0.0": "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz#91f9a4e65fe66cc80c53b35b0254ad67aa431d8b", + "micromark-util-resolve-all@^2.0.0": "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz#189656e7e1a53d0c86a38a652b284a252389f364", + "micromark-util-sanitize-uri@^2.0.0": "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz#ec8fbf0258e9e6d8f13d9e4770f9be64342673de", + "micromark-util-subtokenize@^2.0.0": "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz#9f412442d77e0c5789ffdf42377fa8a2bcbdf581", + "micromark-util-symbol@^1.0.0": "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142", + "micromark-util-symbol@^1.0.1": "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142", + "micromark-util-symbol@^2.0.0": "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz#12225c8f95edf8b17254e47080ce0862d5db8044", + "micromark-util-types@^1.0.0": "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283", + "micromark-util-types@^2.0.0": "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.0.tgz#63b4b7ffeb35d3ecf50d1ca20e68fc7caa36d95e", + "micromark@^4.0.0": "https://registry.yarnpkg.com/micromark/-/micromark-4.0.0.tgz#84746a249ebd904d9658cfabc1e8e5f32cbc6249", + "micromatch@^4.0.2": "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6", + "micromatch@^4.0.4": "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6", + "micromatch@^4.0.5": "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6", + "mime-db@1.52.0": "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70", + "mime-db@>= 1.43.0 < 2": "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70", + "mime-db@~1.33.0": "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db", + "mime-types@2.1.18": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8", + "mime-types@^2.1.12": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a", + "mime-types@^2.1.27": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a", + "mime-types@^2.1.31": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a", + "mime-types@~2.1.17": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a", + "mime-types@~2.1.24": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a", + "mime-types@~2.1.34": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a", + "mime@1.6.0": "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1", + "mimic-fn@^2.1.0": "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b", + "mimic-response@^3.1.0": "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9", + "mimic-response@^4.0.0": "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f", + "mini-css-extract-plugin@^2.7.6": "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz#282a3d38863fddcd2e0c220aaed5b90bc156564d", + "minimalistic-assert@^1.0.0": "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7", + "minimatch@3.1.2": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b", + "minimatch@^3.0.4": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b", + "minimatch@^3.0.5": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b", + "minimatch@^3.1.1": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b", + "minimist@^1.2.0": "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c", + "minimist@^1.2.8": "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c", + "mrmime@^1.0.0": "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27", + "ms@2.0.0": "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8", + "ms@2.1.2": "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009", + "ms@2.1.3": "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2", + "multicast-dns@^7.2.5": "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced", + "nanoid@^3.3.6": "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8", + "negotiator@0.6.3": "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd", + "neo-async@^2.6.2": "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f", + "no-case@^3.0.4": "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d", + "node-emoji@^2.1.0": "https://registry.yarnpkg.com/node-emoji/-/node-emoji-2.1.0.tgz#93c99b0d3dfe7d5e37c056aded389e013c72d0c5", + "node-forge@^1": "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3", + "node-releases@^2.0.13": "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d", + "normalize-path@^3.0.0": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65", + "normalize-path@~3.0.0": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65", + "normalize-range@^0.1.2": "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942", + "normalize-url@^6.0.1": "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a", + "normalize-url@^8.0.0": "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.0.tgz#593dbd284f743e8dcf6a5ddf8fadff149c82701a", + "npm-run-path@^4.0.1": "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea", + "nth-check@^2.0.1": "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d", + "object-assign@^4.1.1": "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863", + "object-inspect@^1.9.0": "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2", + "object-keys@^1.1.1": "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e", + "object.assign@^4.1.0": "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f", + "obuf@^1.0.0": "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e", + "obuf@^1.1.2": "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e", + "on-finished@2.4.1": "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f", + "on-headers@~1.0.2": "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f", + "once@^1.3.0": "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1", + "onetime@^5.1.2": "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e", + "open@^8.0.9": "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9", + "open@^8.4.0": "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9", + "opener@^1.5.2": "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598", + "p-cancelable@^3.0.0": "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050", + "p-limit@^2.0.0": "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1", + "p-limit@^3.0.2": "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b", + "p-limit@^4.0.0": "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644", + "p-locate@^3.0.0": "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4", + "p-locate@^5.0.0": "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834", + "p-locate@^6.0.0": "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f", + "p-map@^4.0.0": "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b", + "p-retry@^4.5.0": "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16", + "p-try@^2.0.0": "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6", + "package-json@^8.1.0": "https://registry.yarnpkg.com/package-json/-/package-json-8.1.1.tgz#3e9948e43df40d1e8e78a85485f1070bf8f03dc8", + "param-case@^3.0.4": "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5", + "parent-module@^1.0.0": "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2", + "parse-entities@^4.0.0": "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.1.tgz#4e2a01111fb1c986549b944af39eeda258fc9e4e", + "parse-json@^5.0.0": "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd", + "parse-json@^5.2.0": "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd", + "parse5@^7.0.0": "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32", + "parseurl@~1.3.2": "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4", + "parseurl@~1.3.3": "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4", + "pascal-case@^3.1.2": "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb", + "path-exists@^3.0.0": "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515", + "path-exists@^4.0.0": "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3", + "path-exists@^5.0.0": "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7", + "path-is-absolute@^1.0.0": "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f", + "path-is-inside@1.0.2": "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53", + "path-key@^3.0.0": "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375", + "path-key@^3.1.0": "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375", + "path-parse@^1.0.7": "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735", + "path-to-regexp@0.1.7": "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c", + "path-to-regexp@2.2.1": "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45", + "path-to-regexp@^1.7.0": "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a", + "path-type@^4.0.0": "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b", + "periscopic@^3.0.0": "https://registry.yarnpkg.com/periscopic/-/periscopic-3.1.0.tgz#7e9037bf51c5855bd33b48928828db4afa79d97a", + "picocolors@^1.0.0": "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c", + "picomatch@^2.0.4": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42", + "picomatch@^2.2.1": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42", + "picomatch@^2.2.3": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42", + "picomatch@^2.3.1": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42", + "pkg-dir@^7.0.0": "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11", + "pkg-up@^3.1.0": "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5", + "postcss-calc@^8.2.3": "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5", + "postcss-colormin@^5.3.1": "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f", + "postcss-convert-values@^5.1.3": "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393", + "postcss-discard-comments@^5.1.2": "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696", + "postcss-discard-duplicates@^5.1.0": "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848", + "postcss-discard-empty@^5.1.1": "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c", + "postcss-discard-overridden@^5.1.0": "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e", + "postcss-discard-unused@^5.1.0": "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz#8974e9b143d887677304e558c1166d3762501142", + "postcss-loader@^7.3.3": "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.3.3.tgz#6da03e71a918ef49df1bb4be4c80401df8e249dd", + "postcss-merge-idents@^5.1.1": "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz#7753817c2e0b75d0853b56f78a89771e15ca04a1", + "postcss-merge-longhand@^5.1.7": "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16", + "postcss-merge-rules@^5.1.4": "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c", + "postcss-minify-font-values@^5.1.0": "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b", + "postcss-minify-gradients@^5.1.1": "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c", + "postcss-minify-params@^5.1.4": "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352", + "postcss-minify-selectors@^5.2.1": "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6", + "postcss-modules-extract-imports@^3.0.0": "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d", + "postcss-modules-local-by-default@^4.0.3": "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz#b08eb4f083050708998ba2c6061b50c2870ca524", + "postcss-modules-scope@^3.0.0": "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06", + "postcss-modules-values@^4.0.0": "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c", + "postcss-normalize-charset@^5.1.0": "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed", + "postcss-normalize-display-values@^5.1.0": "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8", + "postcss-normalize-positions@^5.1.1": "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92", + "postcss-normalize-repeat-style@^5.1.1": "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2", + "postcss-normalize-string@^5.1.0": "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228", + "postcss-normalize-timing-functions@^5.1.0": "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb", + "postcss-normalize-unicode@^5.1.1": "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030", + "postcss-normalize-url@^5.1.0": "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc", + "postcss-normalize-whitespace@^5.1.1": "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa", + "postcss-ordered-values@^5.1.3": "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38", + "postcss-reduce-idents@^5.2.0": "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz#c89c11336c432ac4b28792f24778859a67dfba95", + "postcss-reduce-initial@^5.1.2": "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6", + "postcss-reduce-transforms@^5.1.0": "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9", + "postcss-selector-parser@^6.0.2": "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b", + "postcss-selector-parser@^6.0.4": "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b", + "postcss-selector-parser@^6.0.5": "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b", + "postcss-selector-parser@^6.0.9": "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b", + "postcss-sort-media-queries@^4.4.1": "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz#04a5a78db3921eb78f28a1a781a2e68e65258128", + "postcss-svgo@^5.1.0": "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d", + "postcss-unique-selectors@^5.1.1": "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6", + "postcss-value-parser@^4.1.0": "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514", + "postcss-value-parser@^4.2.0": "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514", + "postcss-zindex@^5.1.0": "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff", + "postcss@^8.4.17": "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d", + "postcss@^8.4.21": "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d", + "postcss@^8.4.26": "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d", + "pretty-error@^4.0.0": "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6", + "pretty-time@^1.1.0": "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e", + "process-nextick-args@~2.0.0": "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2", + "prompts@^2.4.2": "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069", + "prop-types@^15.6.2": "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5", + "prop-types@^15.7.2": "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5", + "property-information@^6.0.0": "https://registry.yarnpkg.com/property-information/-/property-information-6.4.0.tgz#6bc4c618b0c2d68b3bb8b552cbb97f8e300a0f82", + "proto-list@~1.2.1": "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849", + "proxy-addr@~2.0.7": "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025", + "punycode@^1.3.2": "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e", + "punycode@^2.1.0": "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5", + "pupa@^3.1.0": "https://registry.yarnpkg.com/pupa/-/pupa-3.1.0.tgz#f15610274376bbcc70c9a3aa8b505ea23f41c579", + "qs@6.11.0": "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a", + "queue-microtask@^1.2.2": "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243", + "queue@6.0.2": "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65", + "quick-lru@^5.1.1": "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932", + "randombytes@^2.1.0": "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a", + "range-parser@1.2.0": "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e", + "range-parser@^1.2.1": "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031", + "range-parser@~1.2.1": "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031", + "raw-body@2.5.1": "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857", + "rc@1.2.8": "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed", + "react-dev-utils@^12.0.1": "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73", + "react-error-overlay@^6.0.11": "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb", + "react-fast-compare@^3.2.0": "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49", + "react-helmet-async@^1.3.0": "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e", + "react-is@^16.13.1": "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4", + "react-is@^16.6.0": "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4", + "react-is@^16.7.0": "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4", + "react-loadable-ssr-addon-v5-slorber@^1.0.1": "https://registry.yarnpkg.com/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz#2cdc91e8a744ffdf9e3556caabeb6e4278689883", + "react-loadable@npm:@docusaurus/react-loadable@5.5.2": "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce", + "react-router-config@^5.1.1": "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988", + "react-router-dom@^5.3.4": "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.4.tgz#2ed62ffd88cae6db134445f4a0c0ae8b91d2e5e6", + "react-router@5.3.4": "https://registry.yarnpkg.com/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5", + "react-router@^5.3.4": "https://registry.yarnpkg.com/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5", + "readable-stream@^2.0.1": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b", + "readable-stream@^3.0.6": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967", + "readdirp@~3.6.0": "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7", + "rechoir@^0.6.2": "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384", + "recursive-readdir@^2.2.2": "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372", + "regenerate-unicode-properties@^10.1.0": "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480", + "regenerate@^1.4.2": "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a", + "regenerator-runtime@^0.14.0": "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45", + "regenerator-transform@^0.15.2": "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4", + "regexpu-core@^5.3.1": "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b", + "registry-auth-token@^5.0.1": "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.2.tgz#8b026cc507c8552ebbe06724136267e63302f756", + "registry-url@^6.0.0": "https://registry.yarnpkg.com/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58", + "regjsparser@^0.9.1": "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709", + "rehype-raw@^7.0.0": "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-7.0.0.tgz#59d7348fd5dbef3807bbaa1d443efd2dd85ecee4", + "relateurl@^0.2.7": "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9", + "remark-directive@^3.0.0": "https://registry.yarnpkg.com/remark-directive/-/remark-directive-3.0.0.tgz#34452d951b37e6207d2e2a4f830dc33442923268", + "remark-emoji@^4.0.0": "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-4.0.1.tgz#671bfda668047689e26b2078c7356540da299f04", + "remark-frontmatter@^5.0.0": "https://registry.yarnpkg.com/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz#b68d61552a421ec412c76f4f66c344627dc187a2", + "remark-gfm@^4.0.0": "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-4.0.0.tgz#aea777f0744701aa288b67d28c43565c7e8c35de", + "remark-mdx@^3.0.0": "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-3.0.0.tgz#146905a3925b078970e05fc89b0e16b9cc3bfddd", + "remark-parse@^11.0.0": "https://registry.yarnpkg.com/remark-parse/-/remark-parse-11.0.0.tgz#aa60743fcb37ebf6b069204eb4da304e40db45a1", + "remark-rehype@^11.0.0": "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.0.0.tgz#7f21c08738bde024be5f16e4a8b13e5d7a04cf6b", + "remark-stringify@^11.0.0": "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-11.0.0.tgz#4c5b01dd711c269df1aaae11743eb7e2e7636fd3", + "renderkid@^3.0.0": "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a", + "require-from-string@^2.0.2": "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909", + "require-like@>= 0.1.1": "https://registry.yarnpkg.com/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa", + "requires-port@^1.0.0": "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff", + "resolve-alpn@^1.2.0": "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9", + "resolve-from@^4.0.0": "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6", + "resolve-pathname@^3.0.0": "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd", + "resolve@^1.1.6": "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d", + "resolve@^1.14.2": "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d", + "responselike@^3.0.0": "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626", + "retry@^0.13.1": "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658", + "reusify@^1.0.4": "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76", + "rimraf@^3.0.2": "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a", + "rtl-detect@^1.0.4": "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.1.2.tgz#ca7f0330af5c6bb626c15675c642ba85ad6273c6", + "run-parallel@^1.1.9": "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee", + "rxjs@^7.8.1": "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543", + "safe-buffer@5.1.2": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d", + "safe-buffer@5.2.1": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", + "safe-buffer@>=5.1.0": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", + "safe-buffer@^5.1.0": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", + "safe-buffer@~5.1.0": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d", + "safe-buffer@~5.1.1": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d", + "safe-buffer@~5.2.0": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", + "safer-buffer@>= 2.1.2 < 3": "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a", + "schema-utils@2.7.0": "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7", + "schema-utils@^3.0.0": "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe", + "schema-utils@^3.1.1": "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe", + "schema-utils@^3.2.0": "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe", + "schema-utils@^4.0.0": "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b", + "section-matter@^1.0.0": "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167", + "select-hose@^2.0.0": "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca", + "selfsigned@^2.1.1": "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0", + "semver-diff@^4.0.0": "https://registry.yarnpkg.com/semver-diff/-/semver-diff-4.0.0.tgz#3afcf5ed6d62259f5c72d0d5d50dffbdc9680df5", + "semver@^6.3.1": "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4", + "semver@^7.3.2": "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e", + "semver@^7.3.5": "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e", + "semver@^7.3.7": "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e", + "semver@^7.3.8": "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e", + "semver@^7.5.4": "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e", + "send@0.18.0": "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be", + "serialize-javascript@^6.0.0": "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c", + "serialize-javascript@^6.0.1": "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c", + "serve-handler@^6.1.5": "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.5.tgz#a4a0964f5c55c7e37a02a633232b6f0d6f068375", + "serve-index@^1.9.1": "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239", + "serve-static@1.15.0": "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540", + "set-function-length@^1.1.1": "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed", + "setprototypeof@1.1.0": "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656", + "setprototypeof@1.2.0": "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424", + "shallow-clone@^3.0.0": "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3", + "shallowequal@^1.1.0": "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8", + "shebang-command@^2.0.0": "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea", + "shebang-regex@^3.0.0": "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172", + "shell-quote@^1.7.3": "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680", + "shell-quote@^1.8.1": "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680", + "shelljs@^0.8.5": "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c", + "side-channel@^1.0.4": "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf", + "signal-exit@^3.0.2": "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9", + "signal-exit@^3.0.3": "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9", + "sirv@^2.0.3": "https://registry.yarnpkg.com/sirv/-/sirv-2.0.3.tgz#ca5868b87205a74bef62a469ed0296abceccd446", + "sisteransi@^1.0.5": "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed", + "skin-tone@^2.0.0": "https://registry.yarnpkg.com/skin-tone/-/skin-tone-2.0.0.tgz#4e3933ab45c0d4f4f781745d64b9f4c208e41237", + "slash@^3.0.0": "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634", + "slash@^4.0.0": "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7", + "sockjs@^0.3.24": "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce", + "sort-css-media-queries@2.1.0": "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz#7c85e06f79826baabb232f5560e9745d7a78c4ce", + "source-map-js@^1.0.2": "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c", + "source-map-support@~0.5.20": "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f", + "source-map@^0.6.0": "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263", + "source-map@^0.6.1": "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263", + "source-map@^0.7.0": "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656", + "source-map@~0.6.0": "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263", + "space-separated-tokens@^2.0.0": "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f", + "spdy-transport@^3.0.0": "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31", + "spdy@^4.0.2": "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b", + "sprintf-js@~1.0.2": "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c", + "stable@^0.1.8": "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf", + "statuses@2.0.1": "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63", + "statuses@>= 1.4.0 < 2": "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c", + "std-env@^3.0.1": "https://registry.yarnpkg.com/std-env/-/std-env-3.4.3.tgz#326f11db518db751c83fd58574f449b7c3060910", + "string-width@^4.1.0": "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010", + "string-width@^4.2.0": "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010", + "string-width@^5.0.1": "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794", + "string-width@^5.1.2": "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794", + "string_decoder@^1.1.1": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e", + "string_decoder@~1.1.1": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8", + "stringify-entities@^4.0.0": "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.3.tgz#cfabd7039d22ad30f3cc435b0ca2c1574fc88ef8", + "stringify-object@^3.3.0": "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629", + "strip-ansi@^6.0.1": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9", + "strip-ansi@^7.0.1": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45", + "strip-bom-string@^1.0.0": "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92", + "strip-final-newline@^2.0.0": "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad", + "strip-json-comments@~2.0.1": "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a", + "style-to-object@^0.4.0": "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.4.4.tgz#266e3dfd56391a7eefb7770423612d043c3f33ec", + "stylehacks@^5.1.1": "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9", + "supports-color@^5.3.0": "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f", + "supports-color@^7.1.0": "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da", + "supports-color@^8.0.0": "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c", + "supports-preserve-symlinks-flag@^1.0.0": "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09", + "svg-parser@^2.0.4": "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5", + "svgo@^2.7.0": "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24", + "svgo@^2.8.0": "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24", + "tapable@^1.0.0": "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2", + "tapable@^2.0.0": "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0", + "tapable@^2.1.1": "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0", + "tapable@^2.2.0": "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0", + "terser-webpack-plugin@^5.3.7": "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1", + "terser-webpack-plugin@^5.3.9": "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1", + "terser@^5.10.0": "https://registry.yarnpkg.com/terser/-/terser-5.24.0.tgz#4ae50302977bca4831ccc7b4fef63a3c04228364", + "terser@^5.15.1": "https://registry.yarnpkg.com/terser/-/terser-5.24.0.tgz#4ae50302977bca4831ccc7b4fef63a3c04228364", + "terser@^5.16.8": "https://registry.yarnpkg.com/terser/-/terser-5.24.0.tgz#4ae50302977bca4831ccc7b4fef63a3c04228364", + "text-table@^0.2.0": "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4", + "thunky@^1.0.2": "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d", + "tiny-invariant@^1.0.2": "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642", + "tiny-warning@^1.0.0": "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754", + "to-fast-properties@^2.0.0": "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e", + "to-regex-range@^5.0.1": "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4", + "toidentifier@1.0.1": "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35", + "totalist@^3.0.0": "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8", + "trim-lines@^3.0.0": "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338", + "trough@^2.0.0": "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876", + "tslib@^2.0.3": "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae", + "tslib@^2.1.0": "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae", + "tslib@^2.6.0": "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae", + "type-fest@^1.0.1": "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1", + "type-fest@^2.13.0": "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b", + "type-fest@^2.5.0": "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b", + "type-is@~1.6.18": "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131", + "typedarray-to-buffer@^3.1.5": "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080", + "undici-types@~5.26.4": "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617", + "unicode-canonical-property-names-ecmascript@^2.0.0": "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc", + "unicode-emoji-modifier-base@^1.0.0": "https://registry.yarnpkg.com/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz#dbbd5b54ba30f287e2a8d5a249da6c0cef369459", + "unicode-match-property-ecmascript@^2.0.0": "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3", + "unicode-match-property-value-ecmascript@^2.1.0": "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0", + "unicode-property-aliases-ecmascript@^2.0.0": "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd", + "unified@^11.0.0": "https://registry.yarnpkg.com/unified/-/unified-11.0.4.tgz#f4be0ac0fe4c88cb873687c07c64c49ed5969015", + "unified@^11.0.3": "https://registry.yarnpkg.com/unified/-/unified-11.0.4.tgz#f4be0ac0fe4c88cb873687c07c64c49ed5969015", + "unified@^11.0.4": "https://registry.yarnpkg.com/unified/-/unified-11.0.4.tgz#f4be0ac0fe4c88cb873687c07c64c49ed5969015", + "unique-string@^3.0.0": "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a", + "unist-util-is@^6.0.0": "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424", + "unist-util-position-from-estree@^2.0.0": "https://registry.yarnpkg.com/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz#d94da4df596529d1faa3de506202f0c9a23f2200", + "unist-util-position@^5.0.0": "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4", + "unist-util-remove-position@^5.0.0": "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz#fea68a25658409c9460408bc6b4991b965b52163", + "unist-util-stringify-position@^4.0.0": "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2", + "unist-util-visit-parents@^6.0.0": "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815", + "unist-util-visit@^5.0.0": "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6", + "universalify@^2.0.0": "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d", + "unpipe@1.0.0": "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec", + "unpipe@~1.0.0": "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec", + "update-browserslist-db@^1.0.13": "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4", + "update-notifier@^6.0.2": "https://registry.yarnpkg.com/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60", + "uri-js@^4.2.2": "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e", + "url-loader@^4.1.1": "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2", + "util-deprecate@^1.0.1": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf", + "util-deprecate@^1.0.2": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf", + "util-deprecate@~1.0.1": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf", + "utila@~0.4": "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c", + "utility-types@^3.10.0": "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b", + "utils-merge@1.0.1": "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713", + "uuid@^8.3.2": "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2", + "value-equal@^1.0.1": "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c", + "vary@~1.1.2": "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc", + "vfile-location@^5.0.0": "https://registry.yarnpkg.com/vfile-location/-/vfile-location-5.0.2.tgz#220d9ca1ab6f8b2504a4db398f7ebc149f9cb464", + "vfile-message@^4.0.0": "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181", + "vfile@^6.0.0": "https://registry.yarnpkg.com/vfile/-/vfile-6.0.1.tgz#1e8327f41eac91947d4fe9d237a2dd9209762536", + "vfile@^6.0.1": "https://registry.yarnpkg.com/vfile/-/vfile-6.0.1.tgz#1e8327f41eac91947d4fe9d237a2dd9209762536", + "wait-on@^7.0.1": "https://registry.yarnpkg.com/wait-on/-/wait-on-7.1.0.tgz#3184ccfff7eb8a4d62ef3dfa6a4ff3675617ff60", + "watchpack@^2.4.0": "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d", + "wbuf@^1.1.0": "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df", + "wbuf@^1.7.3": "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df", + "web-namespaces@^2.0.0": "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692", + "webpack-bundle-analyzer@^4.9.0": "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz#d00bbf3f17500c10985084f22f1a2bf45cb2f09d", + "webpack-dev-middleware@^5.3.1": "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f", + "webpack-dev-server@^4.15.1": "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz#8944b29c12760b3a45bdaa70799b17cb91b03df7", + "webpack-merge@^5.9.0": "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177", + "webpack-sources@^3.2.2": "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde", + "webpack-sources@^3.2.3": "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde", + "webpack@^5.88.1": "https://registry.yarnpkg.com/webpack/-/webpack-5.89.0.tgz#56b8bf9a34356e93a6625770006490bf3a7f32dc", + "webpackbar@^5.0.2": "https://registry.yarnpkg.com/webpackbar/-/webpackbar-5.0.2.tgz#d3dd466211c73852741dfc842b7556dcbc2b0570", + "websocket-driver@>=0.5.1": "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760", + "websocket-driver@^0.7.4": "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760", + "websocket-extensions@>=0.1.1": "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42", + "which@^1.3.1": "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a", + "which@^2.0.1": "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1", + "widest-line@^4.0.1": "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2", + "wildcard@^2.0.0": "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67", + "wrap-ansi@^8.0.1": "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214", + "wrap-ansi@^8.1.0": "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214", + "wrappy@1": "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f", + "write-file-atomic@^3.0.3": "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8", + "ws@^7.3.1": "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591", + "ws@^8.13.0": "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f", + "xdg-basedir@^5.0.1": "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9", + "xdg-basedir@^5.1.0": "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9", + "yallist@^3.0.2": "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd", + "yallist@^4.0.0": "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72", + "yaml@^1.10.0": "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b", + "yaml@^1.10.2": "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b", + "yaml@^1.7.2": "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b", + "yocto-queue@^0.1.0": "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b", + "yocto-queue@^1.0.0": "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251", + "zwitch@^2.0.0": "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" + }, + "files": [], + "artifacts": {} +} \ No newline at end of file diff --git a/node_modules/@ampproject/remapping/LICENSE b/node_modules/@ampproject/remapping/LICENSE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/node_modules/@ampproject/remapping/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/@ampproject/remapping/README.md b/node_modules/@ampproject/remapping/README.md new file mode 100644 index 00000000..1463c9f6 --- /dev/null +++ b/node_modules/@ampproject/remapping/README.md @@ -0,0 +1,218 @@ +# @ampproject/remapping + +> Remap sequential sourcemaps through transformations to point at the original source code + +Remapping allows you to take the sourcemaps generated through transforming your code and "remap" +them to the original source locations. Think "my minified code, transformed with babel and bundled +with webpack", all pointing to the correct location in your original source code. + +With remapping, none of your source code transformations need to be aware of the input's sourcemap, +they only need to generate an output sourcemap. This greatly simplifies building custom +transformations (think a find-and-replace). + +## Installation + +```sh +npm install @ampproject/remapping +``` + +## Usage + +```typescript +function remapping( + map: SourceMap | SourceMap[], + loader: (file: string, ctx: LoaderContext) => (SourceMap | null | undefined), + options?: { excludeContent: boolean, decodedMappings: boolean } +): SourceMap; + +// LoaderContext gives the loader the importing sourcemap, tree depth, the ability to override the +// "source" location (where child sources are resolved relative to, or the location of original +// source), and the ability to override the "content" of an original source for inclusion in the +// output sourcemap. +type LoaderContext = { + readonly importer: string; + readonly depth: number; + source: string; + content: string | null | undefined; +} +``` + +`remapping` takes the final output sourcemap, and a `loader` function. For every source file pointer +in the sourcemap, the `loader` will be called with the resolved path. If the path itself represents +a transformed file (it has a sourcmap associated with it), then the `loader` should return that +sourcemap. If not, the path will be treated as an original, untransformed source code. + +```js +// Babel transformed "helloworld.js" into "transformed.js" +const transformedMap = JSON.stringify({ + file: 'transformed.js', + // 1st column of 2nd line of output file translates into the 1st source + // file, line 3, column 2 + mappings: ';CAEE', + sources: ['helloworld.js'], + version: 3, +}); + +// Uglify minified "transformed.js" into "transformed.min.js" +const minifiedTransformedMap = JSON.stringify({ + file: 'transformed.min.js', + // 0th column of 1st line of output file translates into the 1st source + // file, line 2, column 1. + mappings: 'AACC', + names: [], + sources: ['transformed.js'], + version: 3, +}); + +const remapped = remapping( + minifiedTransformedMap, + (file, ctx) => { + + // The "transformed.js" file is an transformed file. + if (file === 'transformed.js') { + // The root importer is empty. + console.assert(ctx.importer === ''); + // The depth in the sourcemap tree we're currently loading. + // The root `minifiedTransformedMap` is depth 0, and its source children are depth 1, etc. + console.assert(ctx.depth === 1); + + return transformedMap; + } + + // Loader will be called to load transformedMap's source file pointers as well. + console.assert(file === 'helloworld.js'); + // `transformed.js`'s sourcemap points into `helloworld.js`. + console.assert(ctx.importer === 'transformed.js'); + // This is a source child of `transformed`, which is a source child of `minifiedTransformedMap`. + console.assert(ctx.depth === 2); + return null; + } +); + +console.log(remapped); +// { +// file: 'transpiled.min.js', +// mappings: 'AAEE', +// sources: ['helloworld.js'], +// version: 3, +// }; +``` + +In this example, `loader` will be called twice: + +1. `"transformed.js"`, the first source file pointer in the `minifiedTransformedMap`. We return the + associated sourcemap for it (its a transformed file, after all) so that sourcemap locations can + be traced through it into the source files it represents. +2. `"helloworld.js"`, our original, unmodified source code. This file does not have a sourcemap, so + we return `null`. + +The `remapped` sourcemap now points from `transformed.min.js` into locations in `helloworld.js`. If +you were to read the `mappings`, it says "0th column of the first line output line points to the 1st +column of the 2nd line of the file `helloworld.js`". + +### Multiple transformations of a file + +As a convenience, if you have multiple single-source transformations of a file, you may pass an +array of sourcemap files in the order of most-recent transformation sourcemap first. Note that this +changes the `importer` and `depth` of each call to our loader. So our above example could have been +written as: + +```js +const remapped = remapping( + [minifiedTransformedMap, transformedMap], + () => null +); + +console.log(remapped); +// { +// file: 'transpiled.min.js', +// mappings: 'AAEE', +// sources: ['helloworld.js'], +// version: 3, +// }; +``` + +### Advanced control of the loading graph + +#### `source` + +The `source` property can overridden to any value to change the location of the current load. Eg, +for an original source file, it allows us to change the location to the original source regardless +of what the sourcemap source entry says. And for transformed files, it allows us to change the +relative resolving location for child sources of the loaded sourcemap. + +```js +const remapped = remapping( + minifiedTransformedMap, + (file, ctx) => { + + if (file === 'transformed.js') { + // We pretend the transformed.js file actually exists in the 'src/' directory. When the nested + // source files are loaded, they will now be relative to `src/`. + ctx.source = 'src/transformed.js'; + return transformedMap; + } + + console.assert(file === 'src/helloworld.js'); + // We could futher change the source of this original file, eg, to be inside a nested directory + // itself. This will be reflected in the remapped sourcemap. + ctx.source = 'src/nested/transformed.js'; + return null; + } +); + +console.log(remapped); +// { +// …, +// sources: ['src/nested/helloworld.js'], +// }; +``` + + +#### `content` + +The `content` property can be overridden when we encounter an original source file. Eg, this allows +you to manually provide the source content of the original file regardless of whether the +`sourcesContent` field is present in the parent sourcemap. It can also be set to `null` to remove +the source content. + +```js +const remapped = remapping( + minifiedTransformedMap, + (file, ctx) => { + + if (file === 'transformed.js') { + // transformedMap does not include a `sourcesContent` field, so usually the remapped sourcemap + // would not include any `sourcesContent` values. + return transformedMap; + } + + console.assert(file === 'helloworld.js'); + // We can read the file to provide the source content. + ctx.content = fs.readFileSync(file, 'utf8'); + return null; + } +); + +console.log(remapped); +// { +// …, +// sourcesContent: [ +// 'console.log("Hello world!")', +// ], +// }; +``` + +### Options + +#### excludeContent + +By default, `excludeContent` is `false`. Passing `{ excludeContent: true }` will exclude the +`sourcesContent` field from the returned sourcemap. This is mainly useful when you want to reduce +the size out the sourcemap. + +#### decodedMappings + +By default, `decodedMappings` is `false`. Passing `{ decodedMappings: true }` will leave the +`mappings` field in a [decoded state](https://github.com/rich-harris/sourcemap-codec) instead of +encoding into a VLQ string. diff --git a/node_modules/@ampproject/remapping/package.json b/node_modules/@ampproject/remapping/package.json new file mode 100644 index 00000000..bf3dad29 --- /dev/null +++ b/node_modules/@ampproject/remapping/package.json @@ -0,0 +1,75 @@ +{ + "name": "@ampproject/remapping", + "version": "2.2.1", + "description": "Remap sequential sourcemaps through transformations to point at the original source code", + "keywords": [ + "source", + "map", + "remap" + ], + "main": "dist/remapping.umd.js", + "module": "dist/remapping.mjs", + "types": "dist/types/remapping.d.ts", + "exports": { + ".": [ + { + "types": "./dist/types/remapping.d.ts", + "browser": "./dist/remapping.umd.js", + "require": "./dist/remapping.umd.js", + "import": "./dist/remapping.mjs" + }, + "./dist/remapping.umd.js" + ], + "./package.json": "./package.json" + }, + "files": [ + "dist" + ], + "author": "Justin Ridgewell ", + "repository": { + "type": "git", + "url": "git+https://github.com/ampproject/remapping.git" + }, + "license": "Apache-2.0", + "engines": { + "node": ">=6.0.0" + }, + "scripts": { + "build": "run-s -n build:*", + "build:rollup": "rollup -c rollup.config.js", + "build:ts": "tsc --project tsconfig.build.json", + "lint": "run-s -n lint:*", + "lint:prettier": "npm run test:lint:prettier -- --write", + "lint:ts": "npm run test:lint:ts -- --fix", + "prebuild": "rm -rf dist", + "prepublishOnly": "npm run preversion", + "preversion": "run-s test build", + "test": "run-s -n test:lint test:only", + "test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand", + "test:lint": "run-s -n test:lint:*", + "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'", + "test:lint:ts": "eslint '{src,test}/**/*.ts'", + "test:only": "jest --coverage", + "test:watch": "jest --coverage --watch" + }, + "devDependencies": { + "@rollup/plugin-typescript": "8.3.2", + "@types/jest": "27.4.1", + "@typescript-eslint/eslint-plugin": "5.20.0", + "@typescript-eslint/parser": "5.20.0", + "eslint": "8.14.0", + "eslint-config-prettier": "8.5.0", + "jest": "27.5.1", + "jest-config": "27.5.1", + "npm-run-all": "4.1.5", + "prettier": "2.6.2", + "rollup": "2.70.2", + "ts-jest": "27.1.4", + "tslib": "2.4.0", + "typescript": "4.6.3" + }, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } +} diff --git a/node_modules/@babel/code-frame/LICENSE b/node_modules/@babel/code-frame/LICENSE new file mode 100644 index 00000000..f31575ec --- /dev/null +++ b/node_modules/@babel/code-frame/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +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. diff --git a/node_modules/@babel/code-frame/README.md b/node_modules/@babel/code-frame/README.md new file mode 100644 index 00000000..71607551 --- /dev/null +++ b/node_modules/@babel/code-frame/README.md @@ -0,0 +1,19 @@ +# @babel/code-frame + +> Generate errors that contain a code frame that point to source locations. + +See our website [@babel/code-frame](https://babeljs.io/docs/babel-code-frame) for more information. + +## Install + +Using npm: + +```sh +npm install --save-dev @babel/code-frame +``` + +or using yarn: + +```sh +yarn add @babel/code-frame --dev +``` diff --git a/node_modules/@babel/code-frame/node_modules/ansi-styles/index.js b/node_modules/@babel/code-frame/node_modules/ansi-styles/index.js new file mode 100644 index 00000000..90a871c4 --- /dev/null +++ b/node_modules/@babel/code-frame/node_modules/ansi-styles/index.js @@ -0,0 +1,165 @@ +'use strict'; +const colorConvert = require('color-convert'); + +const wrapAnsi16 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${code + offset}m`; +}; + +const wrapAnsi256 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};5;${code}m`; +}; + +const wrapAnsi16m = (fn, offset) => function () { + const rgb = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; +}; + +function assembleStyles() { + const codes = new Map(); + const styles = { + modifier: { + reset: [0, 0], + // 21 isn't widely supported and 22 does the same thing + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39], + + // Bright color + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + + // Bright color + bgBlackBright: [100, 49], + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } + }; + + // Fix humans + styles.color.grey = styles.color.gray; + + for (const groupName of Object.keys(styles)) { + const group = styles[groupName]; + + for (const styleName of Object.keys(group)) { + const style = group[styleName]; + + styles[styleName] = { + open: `\u001B[${style[0]}m`, + close: `\u001B[${style[1]}m` + }; + + group[styleName] = styles[styleName]; + + codes.set(style[0], style[1]); + } + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + + Object.defineProperty(styles, 'codes', { + value: codes, + enumerable: false + }); + } + + const ansi2ansi = n => n; + const rgb2rgb = (r, g, b) => [r, g, b]; + + styles.color.close = '\u001B[39m'; + styles.bgColor.close = '\u001B[49m'; + + styles.color.ansi = { + ansi: wrapAnsi16(ansi2ansi, 0) + }; + styles.color.ansi256 = { + ansi256: wrapAnsi256(ansi2ansi, 0) + }; + styles.color.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 0) + }; + + styles.bgColor.ansi = { + ansi: wrapAnsi16(ansi2ansi, 10) + }; + styles.bgColor.ansi256 = { + ansi256: wrapAnsi256(ansi2ansi, 10) + }; + styles.bgColor.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 10) + }; + + for (let key of Object.keys(colorConvert)) { + if (typeof colorConvert[key] !== 'object') { + continue; + } + + const suite = colorConvert[key]; + + if (key === 'ansi16') { + key = 'ansi'; + } + + if ('ansi16' in suite) { + styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); + styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); + } + + if ('ansi256' in suite) { + styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); + styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); + } + + if ('rgb' in suite) { + styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); + styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); + } + } + + return styles; +} + +// Make the export immutable +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); diff --git a/node_modules/@babel/code-frame/node_modules/ansi-styles/license b/node_modules/@babel/code-frame/node_modules/ansi-styles/license new file mode 100644 index 00000000..e7af2f77 --- /dev/null +++ b/node_modules/@babel/code-frame/node_modules/ansi-styles/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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. diff --git a/node_modules/@babel/code-frame/node_modules/ansi-styles/package.json b/node_modules/@babel/code-frame/node_modules/ansi-styles/package.json new file mode 100644 index 00000000..65edb48c --- /dev/null +++ b/node_modules/@babel/code-frame/node_modules/ansi-styles/package.json @@ -0,0 +1,56 @@ +{ + "name": "ansi-styles", + "version": "3.2.1", + "description": "ANSI escape codes for styling strings in the terminal", + "license": "MIT", + "repository": "chalk/ansi-styles", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=4" + }, + "scripts": { + "test": "xo && ava", + "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor" + }, + "files": [ + "index.js" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "color-convert": "^1.9.0" + }, + "devDependencies": { + "ava": "*", + "babel-polyfill": "^6.23.0", + "svg-term-cli": "^2.1.1", + "xo": "*" + }, + "ava": { + "require": "babel-polyfill" + } +} diff --git a/node_modules/@babel/code-frame/node_modules/ansi-styles/readme.md b/node_modules/@babel/code-frame/node_modules/ansi-styles/readme.md new file mode 100644 index 00000000..3158e2df --- /dev/null +++ b/node_modules/@babel/code-frame/node_modules/ansi-styles/readme.md @@ -0,0 +1,147 @@ +# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles) + +> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal + +You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings. + + + + +## Install + +``` +$ npm install ansi-styles +``` + + +## Usage + +```js +const style = require('ansi-styles'); + +console.log(`${style.green.open}Hello world!${style.green.close}`); + + +// Color conversion between 16/256/truecolor +// NOTE: If conversion goes to 16 colors or 256 colors, the original color +// may be degraded to fit that color palette. This means terminals +// that do not support 16 million colors will best-match the +// original color. +console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close); +console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close); +console.log(style.color.ansi16m.hex('#ABCDEF') + 'Hello world!' + style.color.close); +``` + +## API + +Each style has an `open` and `close` property. + + +## Styles + +### Modifiers + +- `reset` +- `bold` +- `dim` +- `italic` *(Not widely supported)* +- `underline` +- `inverse` +- `hidden` +- `strikethrough` *(Not widely supported)* + +### Colors + +- `black` +- `red` +- `green` +- `yellow` +- `blue` +- `magenta` +- `cyan` +- `white` +- `gray` ("bright black") +- `redBright` +- `greenBright` +- `yellowBright` +- `blueBright` +- `magentaBright` +- `cyanBright` +- `whiteBright` + +### Background colors + +- `bgBlack` +- `bgRed` +- `bgGreen` +- `bgYellow` +- `bgBlue` +- `bgMagenta` +- `bgCyan` +- `bgWhite` +- `bgBlackBright` +- `bgRedBright` +- `bgGreenBright` +- `bgYellowBright` +- `bgBlueBright` +- `bgMagentaBright` +- `bgCyanBright` +- `bgWhiteBright` + + +## Advanced usage + +By default, you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module. + +- `style.modifier` +- `style.color` +- `style.bgColor` + +###### Example + +```js +console.log(style.color.green.open); +``` + +Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values. + +###### Example + +```js +console.log(style.codes.get(36)); +//=> 39 +``` + + +## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728) + +`ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors. + +To use these, call the associated conversion function with the intended output, for example: + +```js +style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code +style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code + +style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code +style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code + +style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code +style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code +``` + + +## Related + +- [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal + + +## Maintainers + +- [Sindre Sorhus](https://github.com/sindresorhus) +- [Josh Junon](https://github.com/qix-) + + +## License + +MIT diff --git a/node_modules/@babel/code-frame/node_modules/chalk/index.js b/node_modules/@babel/code-frame/node_modules/chalk/index.js new file mode 100644 index 00000000..1cc5fa89 --- /dev/null +++ b/node_modules/@babel/code-frame/node_modules/chalk/index.js @@ -0,0 +1,228 @@ +'use strict'; +const escapeStringRegexp = require('escape-string-regexp'); +const ansiStyles = require('ansi-styles'); +const stdoutColor = require('supports-color').stdout; + +const template = require('./templates.js'); + +const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); + +// `supportsColor.level` → `ansiStyles.color[name]` mapping +const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m']; + +// `color-convert` models to exclude from the Chalk API due to conflicts and such +const skipModels = new Set(['gray']); + +const styles = Object.create(null); + +function applyOptions(obj, options) { + options = options || {}; + + // Detect level if not set manually + const scLevel = stdoutColor ? stdoutColor.level : 0; + obj.level = options.level === undefined ? scLevel : options.level; + obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0; +} + +function Chalk(options) { + // We check for this.template here since calling `chalk.constructor()` + // by itself will have a `this` of a previously constructed chalk object + if (!this || !(this instanceof Chalk) || this.template) { + const chalk = {}; + applyOptions(chalk, options); + + chalk.template = function () { + const args = [].slice.call(arguments); + return chalkTag.apply(null, [chalk.template].concat(args)); + }; + + Object.setPrototypeOf(chalk, Chalk.prototype); + Object.setPrototypeOf(chalk.template, chalk); + + chalk.template.constructor = Chalk; + + return chalk.template; + } + + applyOptions(this, options); +} + +// Use bright blue on Windows as the normal blue color is illegible +if (isSimpleWindowsTerm) { + ansiStyles.blue.open = '\u001B[94m'; +} + +for (const key of Object.keys(ansiStyles)) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); + + styles[key] = { + get() { + const codes = ansiStyles[key]; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key); + } + }; +} + +styles.visible = { + get() { + return build.call(this, this._styles || [], true, 'visible'); + } +}; + +ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g'); +for (const model of Object.keys(ansiStyles.color.ansi)) { + if (skipModels.has(model)) { + continue; + } + + styles[model] = { + get() { + const level = this.level; + return function () { + const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments); + const codes = { + open, + close: ansiStyles.color.close, + closeRe: ansiStyles.color.closeRe + }; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); + }; + } + }; +} + +ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g'); +for (const model of Object.keys(ansiStyles.bgColor.ansi)) { + if (skipModels.has(model)) { + continue; + } + + const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1); + styles[bgModel] = { + get() { + const level = this.level; + return function () { + const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments); + const codes = { + open, + close: ansiStyles.bgColor.close, + closeRe: ansiStyles.bgColor.closeRe + }; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); + }; + } + }; +} + +const proto = Object.defineProperties(() => {}, styles); + +function build(_styles, _empty, key) { + const builder = function () { + return applyStyle.apply(builder, arguments); + }; + + builder._styles = _styles; + builder._empty = _empty; + + const self = this; + + Object.defineProperty(builder, 'level', { + enumerable: true, + get() { + return self.level; + }, + set(level) { + self.level = level; + } + }); + + Object.defineProperty(builder, 'enabled', { + enumerable: true, + get() { + return self.enabled; + }, + set(enabled) { + self.enabled = enabled; + } + }); + + // See below for fix regarding invisible grey/dim combination on Windows + builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey'; + + // `__proto__` is used because we must return a function, but there is + // no way to create a function with a different prototype + builder.__proto__ = proto; // eslint-disable-line no-proto + + return builder; +} + +function applyStyle() { + // Support varags, but simply cast to string in case there's only one arg + const args = arguments; + const argsLen = args.length; + let str = String(arguments[0]); + + if (argsLen === 0) { + return ''; + } + + if (argsLen > 1) { + // Don't slice `arguments`, it prevents V8 optimizations + for (let a = 1; a < argsLen; a++) { + str += ' ' + args[a]; + } + } + + if (!this.enabled || this.level <= 0 || !str) { + return this._empty ? '' : str; + } + + // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, + // see https://github.com/chalk/chalk/issues/58 + // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. + const originalDim = ansiStyles.dim.open; + if (isSimpleWindowsTerm && this.hasGrey) { + ansiStyles.dim.open = ''; + } + + for (const code of this._styles.slice().reverse()) { + // Replace any instances already present with a re-opening code + // otherwise only the part of the string until said closing code + // will be colored, and the rest will simply be 'plain'. + str = code.open + str.replace(code.closeRe, code.open) + code.close; + + // Close the styling before a linebreak and reopen + // after next line to fix a bleed issue on macOS + // https://github.com/chalk/chalk/pull/92 + str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`); + } + + // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue + ansiStyles.dim.open = originalDim; + + return str; +} + +function chalkTag(chalk, strings) { + if (!Array.isArray(strings)) { + // If chalk() was called by itself or with a string, + // return the string itself as a string. + return [].slice.call(arguments, 1).join(' '); + } + + const args = [].slice.call(arguments, 2); + const parts = [strings.raw[0]]; + + for (let i = 1; i < strings.length; i++) { + parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&')); + parts.push(String(strings.raw[i])); + } + + return template(chalk, parts.join('')); +} + +Object.defineProperties(Chalk.prototype, styles); + +module.exports = Chalk(); // eslint-disable-line new-cap +module.exports.supportsColor = stdoutColor; +module.exports.default = module.exports; // For TypeScript diff --git a/node_modules/@babel/code-frame/node_modules/chalk/index.js.flow b/node_modules/@babel/code-frame/node_modules/chalk/index.js.flow new file mode 100644 index 00000000..622caaa2 --- /dev/null +++ b/node_modules/@babel/code-frame/node_modules/chalk/index.js.flow @@ -0,0 +1,93 @@ +// @flow strict + +type TemplateStringsArray = $ReadOnlyArray; + +export type Level = $Values<{ + None: 0, + Basic: 1, + Ansi256: 2, + TrueColor: 3 +}>; + +export type ChalkOptions = {| + enabled?: boolean, + level?: Level +|}; + +export type ColorSupport = {| + level: Level, + hasBasic: boolean, + has256: boolean, + has16m: boolean +|}; + +export interface Chalk { + (...text: string[]): string, + (text: TemplateStringsArray, ...placeholders: string[]): string, + constructor(options?: ChalkOptions): Chalk, + enabled: boolean, + level: Level, + rgb(r: number, g: number, b: number): Chalk, + hsl(h: number, s: number, l: number): Chalk, + hsv(h: number, s: number, v: number): Chalk, + hwb(h: number, w: number, b: number): Chalk, + bgHex(color: string): Chalk, + bgKeyword(color: string): Chalk, + bgRgb(r: number, g: number, b: number): Chalk, + bgHsl(h: number, s: number, l: number): Chalk, + bgHsv(h: number, s: number, v: number): Chalk, + bgHwb(h: number, w: number, b: number): Chalk, + hex(color: string): Chalk, + keyword(color: string): Chalk, + + +reset: Chalk, + +bold: Chalk, + +dim: Chalk, + +italic: Chalk, + +underline: Chalk, + +inverse: Chalk, + +hidden: Chalk, + +strikethrough: Chalk, + + +visible: Chalk, + + +black: Chalk, + +red: Chalk, + +green: Chalk, + +yellow: Chalk, + +blue: Chalk, + +magenta: Chalk, + +cyan: Chalk, + +white: Chalk, + +gray: Chalk, + +grey: Chalk, + +blackBright: Chalk, + +redBright: Chalk, + +greenBright: Chalk, + +yellowBright: Chalk, + +blueBright: Chalk, + +magentaBright: Chalk, + +cyanBright: Chalk, + +whiteBright: Chalk, + + +bgBlack: Chalk, + +bgRed: Chalk, + +bgGreen: Chalk, + +bgYellow: Chalk, + +bgBlue: Chalk, + +bgMagenta: Chalk, + +bgCyan: Chalk, + +bgWhite: Chalk, + +bgBlackBright: Chalk, + +bgRedBright: Chalk, + +bgGreenBright: Chalk, + +bgYellowBright: Chalk, + +bgBlueBright: Chalk, + +bgMagentaBright: Chalk, + +bgCyanBright: Chalk, + +bgWhiteBrigh: Chalk, + + supportsColor: ColorSupport +}; + +declare module.exports: Chalk; diff --git a/node_modules/@babel/code-frame/node_modules/chalk/license b/node_modules/@babel/code-frame/node_modules/chalk/license new file mode 100644 index 00000000..e7af2f77 --- /dev/null +++ b/node_modules/@babel/code-frame/node_modules/chalk/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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. diff --git a/node_modules/@babel/code-frame/node_modules/chalk/package.json b/node_modules/@babel/code-frame/node_modules/chalk/package.json new file mode 100644 index 00000000..bc324685 --- /dev/null +++ b/node_modules/@babel/code-frame/node_modules/chalk/package.json @@ -0,0 +1,71 @@ +{ + "name": "chalk", + "version": "2.4.2", + "description": "Terminal string styling done right", + "license": "MIT", + "repository": "chalk/chalk", + "engines": { + "node": ">=4" + }, + "scripts": { + "test": "xo && tsc --project types && flow --max-warnings=0 && nyc ava", + "bench": "matcha benchmark.js", + "coveralls": "nyc report --reporter=text-lcov | coveralls" + }, + "files": [ + "index.js", + "templates.js", + "types/index.d.ts", + "index.js.flow" + ], + "keywords": [ + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "str", + "ansi", + "style", + "styles", + "tty", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "devDependencies": { + "ava": "*", + "coveralls": "^3.0.0", + "execa": "^0.9.0", + "flow-bin": "^0.68.0", + "import-fresh": "^2.0.0", + "matcha": "^0.7.0", + "nyc": "^11.0.2", + "resolve-from": "^4.0.0", + "typescript": "^2.5.3", + "xo": "*" + }, + "types": "types/index.d.ts", + "xo": { + "envs": [ + "node", + "mocha" + ], + "ignores": [ + "test/_flow.js" + ] + } +} diff --git a/node_modules/@babel/code-frame/node_modules/chalk/readme.md b/node_modules/@babel/code-frame/node_modules/chalk/readme.md new file mode 100644 index 00000000..d298e2c4 --- /dev/null +++ b/node_modules/@babel/code-frame/node_modules/chalk/readme.md @@ -0,0 +1,314 @@ +

+
+
+ Chalk +
+
+
+

+ +> Terminal string styling done right + +[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) [![Coverage Status](https://coveralls.io/repos/github/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/github/chalk/chalk?branch=master) [![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) [![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/xojs/xo) [![Mentioned in Awesome Node.js](https://awesome.re/mentioned-badge.svg)](https://github.com/sindresorhus/awesome-nodejs) + +### [See what's new in Chalk 2](https://github.com/chalk/chalk/releases/tag/v2.0.0) + + + + +## Highlights + +- Expressive API +- Highly performant +- Ability to nest styles +- [256/Truecolor color support](#256-and-truecolor-color-support) +- Auto-detects color support +- Doesn't extend `String.prototype` +- Clean and focused +- Actively maintained +- [Used by ~23,000 packages](https://www.npmjs.com/browse/depended/chalk) as of December 31, 2017 + + +## Install + +```console +$ npm install chalk +``` + + + + + + +## Usage + +```js +const chalk = require('chalk'); + +console.log(chalk.blue('Hello world!')); +``` + +Chalk comes with an easy to use composable API where you just chain and nest the styles you want. + +```js +const chalk = require('chalk'); +const log = console.log; + +// Combine styled and normal strings +log(chalk.blue('Hello') + ' World' + chalk.red('!')); + +// Compose multiple styles using the chainable API +log(chalk.blue.bgRed.bold('Hello world!')); + +// Pass in multiple arguments +log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz')); + +// Nest styles +log(chalk.red('Hello', chalk.underline.bgBlue('world') + '!')); + +// Nest styles of the same type even (color, underline, background) +log(chalk.green( + 'I am a green line ' + + chalk.blue.underline.bold('with a blue substring') + + ' that becomes green again!' +)); + +// ES2015 template literal +log(` +CPU: ${chalk.red('90%')} +RAM: ${chalk.green('40%')} +DISK: ${chalk.yellow('70%')} +`); + +// ES2015 tagged template literal +log(chalk` +CPU: {red ${cpu.totalPercent}%} +RAM: {green ${ram.used / ram.total * 100}%} +DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%} +`); + +// Use RGB colors in terminal emulators that support it. +log(chalk.keyword('orange')('Yay for orange colored text!')); +log(chalk.rgb(123, 45, 67).underline('Underlined reddish color')); +log(chalk.hex('#DEADED').bold('Bold gray!')); +``` + +Easily define your own themes: + +```js +const chalk = require('chalk'); + +const error = chalk.bold.red; +const warning = chalk.keyword('orange'); + +console.log(error('Error!')); +console.log(warning('Warning!')); +``` + +Take advantage of console.log [string substitution](https://nodejs.org/docs/latest/api/console.html#console_console_log_data_args): + +```js +const name = 'Sindre'; +console.log(chalk.green('Hello %s'), name); +//=> 'Hello Sindre' +``` + + +## API + +### chalk.` + + + +
+
+

All files

+
+ +
+ Unknown% + Statements + 0/0 +
+ + +
+ Unknown% + Branches + 0/0 +
+ + +
+ Unknown% + Functions + 0/0 +
+ + +
+ Unknown% + Lines + 0/0 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/node_modules/@docusaurus/logger/coverage/lcov-report/prettify.css b/node_modules/@docusaurus/logger/coverage/lcov-report/prettify.css new file mode 100644 index 00000000..b317a7cd --- /dev/null +++ b/node_modules/@docusaurus/logger/coverage/lcov-report/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/node_modules/@docusaurus/logger/coverage/lcov-report/prettify.js b/node_modules/@docusaurus/logger/coverage/lcov-report/prettify.js new file mode 100644 index 00000000..b3225238 --- /dev/null +++ b/node_modules/@docusaurus/logger/coverage/lcov-report/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/node_modules/@docusaurus/logger/coverage/lcov-report/sort-arrow-sprite.png b/node_modules/@docusaurus/logger/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 00000000..6ed68316 Binary files /dev/null and b/node_modules/@docusaurus/logger/coverage/lcov-report/sort-arrow-sprite.png differ diff --git a/node_modules/@docusaurus/logger/coverage/lcov-report/sorter.js b/node_modules/@docusaurus/logger/coverage/lcov-report/sorter.js new file mode 100644 index 00000000..2bb296a8 --- /dev/null +++ b/node_modules/@docusaurus/logger/coverage/lcov-report/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/node_modules/@docusaurus/logger/coverage/lcov.info b/node_modules/@docusaurus/logger/coverage/lcov.info new file mode 100644 index 00000000..e69de29b diff --git a/node_modules/@docusaurus/logger/demo.png b/node_modules/@docusaurus/logger/demo.png new file mode 100644 index 00000000..f3877552 Binary files /dev/null and b/node_modules/@docusaurus/logger/demo.png differ diff --git a/node_modules/@docusaurus/logger/package.json b/node_modules/@docusaurus/logger/package.json new file mode 100644 index 00000000..2bdf7d33 --- /dev/null +++ b/node_modules/@docusaurus/logger/package.json @@ -0,0 +1,33 @@ +{ + "name": "@docusaurus/logger", + "version": "3.0.0", + "description": "An encapsulated logger for semantically formatting console messages.", + "main": "./lib/index.js", + "repository": { + "type": "git", + "url": "https://github.com/facebook/docusaurus.git", + "directory": "packages/docusaurus-logger" + }, + "bugs": { + "url": "https://github.com/facebook/docusaurus/issues" + }, + "scripts": { + "build": "tsc", + "watch": "tsc --watch" + }, + "publishConfig": { + "access": "public" + }, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "devDependencies": { + "@types/supports-color": "^8.1.1" + }, + "gitHead": "ca8b4638c47119d38838656c4a11ee3a5e7ba6f2" +} diff --git a/node_modules/@docusaurus/logger/src/__mocks__/chalk.js b/node_modules/@docusaurus/logger/src/__mocks__/chalk.js new file mode 100644 index 00000000..361c56fa --- /dev/null +++ b/node_modules/@docusaurus/logger/src/__mocks__/chalk.js @@ -0,0 +1,11 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +const chalk = require('chalk'); + +// Force coloring the output even in CI +module.exports = new chalk.Instance({level: 3}); diff --git a/node_modules/@docusaurus/logger/src/index.ts b/node_modules/@docusaurus/logger/src/index.ts new file mode 100644 index 00000000..23a6220e --- /dev/null +++ b/node_modules/@docusaurus/logger/src/index.ts @@ -0,0 +1,200 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import chalk from 'chalk'; +import type {ReportingSeverity} from '@docusaurus/types'; + +type InterpolatableValue = string | number | (string | number)[]; + +const path = (msg: unknown): string => chalk.cyan.underline(`"${String(msg)}"`); +const url = (msg: unknown): string => chalk.cyan.underline(msg); +const name = (msg: unknown): string => chalk.blue.bold(msg); +const code = (msg: unknown): string => chalk.cyan(`\`${String(msg)}\``); +const subdue = (msg: unknown): string => chalk.gray(msg); +const num = (msg: unknown): string => chalk.yellow(msg); + +function interpolate( + msgs: TemplateStringsArray, + ...values: InterpolatableValue[] +): string { + let res = ''; + values.forEach((value, idx) => { + const flag = msgs[idx]!.match(/[a-z]+=$/); + res += msgs[idx]!.replace(/[a-z]+=$/, ''); + const format = (() => { + if (!flag) { + return (a: string | number) => a; + } + switch (flag[0]) { + case 'path=': + return path; + case 'url=': + return url; + case 'number=': + return num; + case 'name=': + return name; + case 'subdue=': + return subdue; + case 'code=': + return code; + default: + throw new Error( + 'Bad Docusaurus logging message. This is likely an internal bug, please report it.', + ); + } + })(); + res += Array.isArray(value) + ? `\n- ${value.map((v) => format(v)).join('\n- ')}` + : format(value); + }); + res += msgs.slice(-1)[0]; + return res; +} + +function stringify(msg: unknown): string { + if (String(msg) === '[object Object]') { + return JSON.stringify(msg); + } + if (msg instanceof Date) { + return msg.toUTCString(); + } + return String(msg); +} + +function info(msg: unknown): void; +function info( + msg: TemplateStringsArray, + ...values: [InterpolatableValue, ...InterpolatableValue[]] +): void; +function info(msg: unknown, ...values: InterpolatableValue[]): void { + console.info( + `${chalk.cyan.bold('[INFO]')} ${ + values.length === 0 + ? stringify(msg) + : interpolate(msg as TemplateStringsArray, ...values) + }`, + ); +} +function warn(msg: unknown): void; +function warn( + msg: TemplateStringsArray, + ...values: [InterpolatableValue, ...InterpolatableValue[]] +): void; +function warn(msg: unknown, ...values: InterpolatableValue[]): void { + console.warn( + chalk.yellow( + `${chalk.bold('[WARNING]')} ${ + values.length === 0 + ? stringify(msg) + : interpolate(msg as TemplateStringsArray, ...values) + }`, + ), + ); +} +function error(msg: unknown): void; +function error( + msg: TemplateStringsArray, + ...values: [InterpolatableValue, ...InterpolatableValue[]] +): void; +function error(msg: unknown, ...values: InterpolatableValue[]): void { + console.error( + chalk.red( + `${chalk.bold('[ERROR]')} ${ + values.length === 0 + ? stringify(msg) + : interpolate(msg as TemplateStringsArray, ...values) + }`, + ), + ); +} +function success(msg: unknown): void; +function success( + msg: TemplateStringsArray, + ...values: [InterpolatableValue, ...InterpolatableValue[]] +): void; +function success(msg: unknown, ...values: InterpolatableValue[]): void { + console.log( + `${chalk.green.bold('[SUCCESS]')} ${ + values.length === 0 + ? stringify(msg) + : interpolate(msg as TemplateStringsArray, ...values) + }`, + ); +} +function throwError(msg: unknown): void; +function throwError( + msg: TemplateStringsArray, + ...values: [InterpolatableValue, ...InterpolatableValue[]] +): void; +function throwError(msg: unknown, ...values: InterpolatableValue[]): void { + throw new Error( + values.length === 0 + ? stringify(msg) + : interpolate(msg as TemplateStringsArray, ...values), + ); +} + +function newLine(): void { + console.log(); +} + +/** + * Takes a message and reports it according to the severity that the user wants. + * + * - `ignore`: completely no-op + * - `log`: uses the `INFO` log level + * - `warn`: uses the `WARN` log level + * - `throw`: aborts the process, throws the error. + * + * Since the logger doesn't have logging level filters yet, these severities + * mostly just differ by their colors. + * + * @throws In addition to throwing when `reportingSeverity === "throw"`, this + * function also throws if `reportingSeverity` is not one of the above. + */ +function report(reportingSeverity: ReportingSeverity): typeof success { + const reportingMethods = { + ignore: () => {}, + log: info, + warn, + throw: throwError, + }; + if ( + !Object.prototype.hasOwnProperty.call(reportingMethods, reportingSeverity) + ) { + throw new Error( + `Unexpected "reportingSeverity" value: ${reportingSeverity}.`, + ); + } + return reportingMethods[reportingSeverity]; +} + +const logger = { + red: (msg: string | number): string => chalk.red(msg), + yellow: (msg: string | number): string => chalk.yellow(msg), + green: (msg: string | number): string => chalk.green(msg), + bold: (msg: string | number): string => chalk.bold(msg), + dim: (msg: string | number): string => chalk.dim(msg), + path, + url, + name, + code, + subdue, + num, + interpolate, + info, + warn, + error, + success, + report, + newLine, +}; + +// TODO remove when migrating to ESM +// logger can only be default-imported in ESM with this +export = logger; diff --git a/node_modules/@docusaurus/mdx-loader/LICENSE b/node_modules/@docusaurus/mdx-loader/LICENSE new file mode 100644 index 00000000..b96dcb04 --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +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. diff --git a/node_modules/@docusaurus/mdx-loader/README.md b/node_modules/@docusaurus/mdx-loader/README.md new file mode 100644 index 00000000..b3a60699 --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/README.md @@ -0,0 +1,59 @@ +# `@docusaurus/mdx-loader` + +Docusaurus webpack loader for [MDX](https://github.com/mdx-js/mdx). + +## Installation + +```sh +yarn add @docusaurus/mdx-loader +``` + +## Usage + +```js +// ... +module: { + rules: [ + // ... + { + test: /\.mdx?$/, + use: [ + 'babel-loader', + { + loader: '@docusaurus/mdx-loader', + options: { + // .. See options + }, + }, + ], + }, + ]; +} +``` + +## Options + +### `rehypePlugins` + +Array of rehype plugins to manipulate the MDXHAST + +### `remarkPlugins` + +Array of remark plugins to manipulate the MDXAST + +### `metadataPath` + +A function to provide the metadataPath depending on current loaded MDX path that will be exported as the MDX metadata. + +### `markdownConfig` + +The global Docusaurus Markdown config (`config.markdown`), that plugin authors should forward: + +```js +const loader = { + loader: require.resolve('@docusaurus/mdx-loader'), + options: { + markdownConfig: siteConfig.markdown, + }, +}; +``` diff --git a/node_modules/@docusaurus/mdx-loader/node_modules/.bin/image-size b/node_modules/@docusaurus/mdx-loader/node_modules/.bin/image-size new file mode 120000 index 00000000..22d7be8a --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/node_modules/.bin/image-size @@ -0,0 +1 @@ +../../../../image-size/bin/image-size.js \ No newline at end of file diff --git a/node_modules/@docusaurus/mdx-loader/node_modules/.bin/parser b/node_modules/@docusaurus/mdx-loader/node_modules/.bin/parser new file mode 120000 index 00000000..80dcbd37 --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/node_modules/.bin/parser @@ -0,0 +1 @@ +../../../../@babel/parser/bin/babel-parser.js \ No newline at end of file diff --git a/node_modules/@docusaurus/mdx-loader/node_modules/.bin/webpack b/node_modules/@docusaurus/mdx-loader/node_modules/.bin/webpack new file mode 120000 index 00000000..324aada8 --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/node_modules/.bin/webpack @@ -0,0 +1 @@ +../../../../webpack/bin/webpack.js \ No newline at end of file diff --git a/node_modules/@docusaurus/mdx-loader/package.json b/node_modules/@docusaurus/mdx-loader/package.json new file mode 100644 index 00000000..68f9a36b --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/package.json @@ -0,0 +1,70 @@ +{ + "name": "@docusaurus/mdx-loader", + "version": "3.0.0", + "description": "Docusaurus Loader for MDX", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "publishConfig": { + "access": "public" + }, + "scripts": { + "build": "tsc", + "watch": "tsc --watch" + }, + "repository": { + "type": "git", + "url": "https://github.com/facebook/docusaurus.git", + "directory": "packages/docusaurus-mdx-loader" + }, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.22.7", + "@babel/traverse": "^7.22.8", + "@docusaurus/logger": "3.0.0", + "@docusaurus/utils": "3.0.0", + "@docusaurus/utils-validation": "3.0.0", + "@mdx-js/mdx": "^3.0.0", + "@slorber/remark-comment": "^1.0.0", + "escape-html": "^1.0.3", + "estree-util-value-to-estree": "^3.0.1", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "image-size": "^1.0.2", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "rehype-raw": "^7.0.0", + "remark-directive": "^3.0.0", + "remark-emoji": "^4.0.0", + "remark-frontmatter": "^5.0.0", + "remark-gfm": "^4.0.0", + "stringify-object": "^3.3.0", + "tslib": "^2.6.0", + "unified": "^11.0.3", + "unist-util-visit": "^5.0.0", + "url-loader": "^4.1.1", + "vfile": "^6.0.1", + "webpack": "^5.88.1" + }, + "devDependencies": { + "@docusaurus/types": "3.0.0", + "@types/escape-html": "^1.0.2", + "@types/mdast": "^4.0.2", + "@types/stringify-object": "^3.3.1", + "@types/unist": "^3.0.1", + "rehype-stringify": "^10.0.0", + "remark": "^15.0.1", + "remark-mdx": "^3.0.0", + "remark-rehype": "^11.0.0", + "to-vfile": "^6.1.0", + "unist-builder": "^2.0.3", + "unist-util-remove-position": "^5.0.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "engines": { + "node": ">=18.0" + }, + "gitHead": "ca8b4638c47119d38838656c4a11ee3a5e7ba6f2" +} diff --git a/node_modules/@docusaurus/mdx-loader/src/format.ts b/node_modules/@docusaurus/mdx-loader/src/format.ts new file mode 100644 index 00000000..08dc0095 --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/src/format.ts @@ -0,0 +1,50 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import path from 'path'; +import type {MDXFrontMatter} from './frontMatter'; +import type {Format, FormatInput} from './index'; + +// Copied from https://mdxjs.com/packages/mdx/#optionsmdextensions +// Although we are likely to only use .md / .mdx anyway... +const mdFormatExtensions = [ + '.md', + '.markdown', + '.mdown', + '.mkdn', + '.mkd', + '.mdwn', + '.mkdown', + '.ron', +]; + +function getExtensionFormat(filepath: string): Format { + const isMDFormat = mdFormatExtensions.includes(path.extname(filepath)); + // Bias toward mdx if unknown extension + return isMDFormat ? 'md' : 'mdx'; +} + +export function getFormat({ + filePath, + frontMatterFormat, + markdownConfigFormat, +}: { + filePath: string; + frontMatterFormat: MDXFrontMatter['format']; + markdownConfigFormat: FormatInput; +}): Format { + if (frontMatterFormat) { + if (frontMatterFormat !== 'detect') { + return frontMatterFormat; + } + return getExtensionFormat(filePath); + } + if (markdownConfigFormat !== 'detect') { + return markdownConfigFormat; + } + return getExtensionFormat(filePath); +} diff --git a/node_modules/@docusaurus/mdx-loader/src/frontMatter.ts b/node_modules/@docusaurus/mdx-loader/src/frontMatter.ts new file mode 100644 index 00000000..919d8d3b --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/src/frontMatter.ts @@ -0,0 +1,31 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { + JoiFrontMatter as Joi, + validateFrontMatter, +} from '@docusaurus/utils-validation'; + +import type {FormatInput} from './index'; + +export type MDXFrontMatter = { + format?: FormatInput; +}; + +export const DefaultMDXFrontMatter: MDXFrontMatter = { + format: undefined, +}; + +const MDXFrontMatterSchema = Joi.object({ + format: Joi.string().equal('md', 'mdx', 'detect').optional(), +}).default(DefaultMDXFrontMatter); + +export function validateMDXFrontMatter(frontMatter: unknown): MDXFrontMatter { + return validateFrontMatter(frontMatter, MDXFrontMatterSchema, { + allowUnknown: false, + }); +} diff --git a/node_modules/@docusaurus/mdx-loader/src/index.ts b/node_modules/@docusaurus/mdx-loader/src/index.ts new file mode 100644 index 00000000..4a669fce --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/src/index.ts @@ -0,0 +1,39 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import {mdxLoader} from './loader'; + +import type {TOCItem as TOCItemImported} from './remark/toc'; + +export default mdxLoader; + +export type TOCItem = TOCItemImported; + +export type Format = 'md' | 'mdx'; + +export type FormatInput = Format | 'detect'; + +export type LoadedMDXContent = { + /** As verbatim declared in the MDX document. */ + readonly frontMatter: FrontMatter; + /** As provided by the content plugin. */ + readonly metadata: Metadata; + /** A list of TOC items (headings). */ + readonly toc: readonly TOCItem[]; + /** First h1 title before any content. */ + readonly contentTitle: string | undefined; + /** + * Usually image assets that may be collocated like `./img/thumbnail.png`. + * The loader would also bundle these assets and the client should use these + * in priority. + */ + readonly assets: Assets; + (): JSX.Element; +}; + +export type {Options, MDXPlugin} from './loader'; +export type {MDXOptions} from './processor'; diff --git a/node_modules/@docusaurus/mdx-loader/src/loader.ts b/node_modules/@docusaurus/mdx-loader/src/loader.ts new file mode 100644 index 00000000..a475220c --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/src/loader.ts @@ -0,0 +1,262 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import fs from 'fs-extra'; +import logger from '@docusaurus/logger'; +import { + parseFrontMatter, + escapePath, + getFileLoaderUtils, + getWebpackLoaderCompilerName, +} from '@docusaurus/utils'; +import stringifyObject from 'stringify-object'; +import preprocessor from './preprocessor'; +import {validateMDXFrontMatter} from './frontMatter'; +import {createProcessorCached} from './processor'; +import type {MDXOptions} from './processor'; + +import type {MarkdownConfig} from '@docusaurus/types'; +import type {LoaderContext} from 'webpack'; + +// TODO as of April 2023, no way to import/re-export this ESM type easily :/ +// This might change soon, likely after TS 5.2 +// See https://github.com/microsoft/TypeScript/issues/49721#issuecomment-1517839391 +type Pluggable = any; // TODO fix this asap + +const { + loaders: {inlineMarkdownAssetImageFileLoader}, +} = getFileLoaderUtils(); + +export type MDXPlugin = Pluggable; + +export type Options = Partial & { + markdownConfig: MarkdownConfig; + staticDirs: string[]; + siteDir: string; + isMDXPartial?: (filePath: string) => boolean; + isMDXPartialFrontMatterWarningDisabled?: boolean; + removeContentTitle?: boolean; + metadataPath?: string | ((filePath: string) => string); + createAssets?: (metadata: { + frontMatter: {[key: string]: unknown}; + metadata: {[key: string]: unknown}; + }) => {[key: string]: unknown}; +}; + +/** + * When this throws, it generally means that there's no metadata file associated + * with this MDX document. It can happen when using MDX partials (usually + * starting with _). That's why it's important to provide the `isMDXPartial` + * function in config + */ +async function readMetadataPath(metadataPath: string) { + try { + return await fs.readFile(metadataPath, 'utf8'); + } catch (err) { + logger.error`MDX loader can't read MDX metadata file path=${metadataPath}. Maybe the isMDXPartial option function was not provided?`; + throw err; + } +} + +/** + * Converts assets an object with Webpack require calls code. + * This is useful for mdx files to reference co-located assets using relative + * paths. Those assets should enter the Webpack assets pipeline and be hashed. + * For now, we only handle that for images and paths starting with `./`: + * + * `{image: "./myImage.png"}` => `{image: require("./myImage.png")}` + */ +function createAssetsExportCode(assets: unknown) { + if ( + typeof assets !== 'object' || + !assets || + Object.keys(assets).length === 0 + ) { + return 'undefined'; + } + + // TODO implementation can be completed/enhanced + function createAssetValueCode(assetValue: unknown): string | undefined { + if (Array.isArray(assetValue)) { + const arrayItemCodes = assetValue.map( + (item: unknown) => createAssetValueCode(item) ?? 'undefined', + ); + return `[${arrayItemCodes.join(', ')}]`; + } + // Only process string values starting with ./ + // We could enhance this logic and check if file exists on disc? + if (typeof assetValue === 'string' && assetValue.startsWith('./')) { + // TODO do we have other use-cases than image assets? + // Probably not worth adding more support, as we want to move to Webpack 5 new asset system (https://github.com/facebook/docusaurus/pull/4708) + return `require("${inlineMarkdownAssetImageFileLoader}${escapePath( + assetValue, + )}").default`; + } + return undefined; + } + + const assetEntries = Object.entries(assets); + + const codeLines = assetEntries + .map(([key, value]: [string, unknown]) => { + const assetRequireCode = createAssetValueCode(value); + return assetRequireCode ? `"${key}": ${assetRequireCode},` : undefined; + }) + .filter(Boolean); + + return `{\n${codeLines.join('\n')}\n}`; +} + +// TODO temporary, remove this after v3.1? +// Some plugin authors use our mdx-loader, despite it not being public API +// see https://github.com/facebook/docusaurus/issues/8298 +function ensureMarkdownConfig(reqOptions: Options) { + if (!reqOptions.markdownConfig) { + throw new Error( + 'Docusaurus v3+ requires MDX loader options.markdownConfig - plugin authors using the MDX loader should make sure to provide that option', + ); + } +} + +/** + * data.contentTitle is set by the remark contentTitle plugin + */ +function extractContentTitleData(data: { + [key: string]: unknown; +}): string | undefined { + return data.contentTitle as string | undefined; +} + +export async function mdxLoader( + this: LoaderContext, + fileString: string, +): Promise { + const compilerName = getWebpackLoaderCompilerName(this); + const callback = this.async(); + const filePath = this.resourcePath; + const reqOptions: Options = this.getOptions(); + const {query} = this; + + ensureMarkdownConfig(reqOptions); + + const {frontMatter} = parseFrontMatter(fileString); + const mdxFrontMatter = validateMDXFrontMatter(frontMatter.mdx); + + const preprocessedContent = preprocessor({ + fileContent: fileString, + filePath, + admonitions: reqOptions.admonitions, + markdownConfig: reqOptions.markdownConfig, + }); + + const hasFrontMatter = Object.keys(frontMatter).length > 0; + + const processor = await createProcessorCached({ + filePath, + reqOptions, + query, + mdxFrontMatter, + }); + + let result: {content: string; data: {[key: string]: unknown}}; + try { + result = await processor.process({ + content: preprocessedContent, + filePath, + frontMatter, + compilerName, + }); + } catch (errorUnknown) { + const error = errorUnknown as Error; + + // MDX can emit errors that have useful extra attributes + const errorJSON = JSON.stringify(error, null, 2); + const errorDetails = + errorJSON === '{}' + ? // regular JS error case: print stacktrace + error.stack ?? 'N/A' + : // MDX error: print extra attributes + stacktrace + `${errorJSON}\n${error.stack}`; + + return callback( + new Error( + `MDX compilation failed for file ${logger.path(filePath)}\nCause: ${ + error.message + }\nDetails:\n${errorDetails}`, + // TODO error cause doesn't seem to be used by Webpack stats.errors :s + {cause: error}, + ), + ); + } + + const contentTitle = extractContentTitleData(result.data); + + // MDX partials are MDX files starting with _ or in a folder starting with _ + // Partial are not expected to have associated metadata files or front matter + const isMDXPartial = reqOptions.isMDXPartial?.(filePath); + if (isMDXPartial && hasFrontMatter) { + const errorMessage = `Docusaurus MDX partial files should not contain front matter. +Those partial files use the _ prefix as a convention by default, but this is configurable. +File at ${filePath} contains front matter that will be ignored: +${JSON.stringify(frontMatter, null, 2)}`; + + if (!reqOptions.isMDXPartialFrontMatterWarningDisabled) { + const shouldError = process.env.NODE_ENV === 'test' || process.env.CI; + if (shouldError) { + return callback(new Error(errorMessage)); + } + logger.warn(errorMessage); + } + } + + function getMetadataPath(): string | undefined { + if (!isMDXPartial) { + // Read metadata for this MDX and export it. + if ( + reqOptions.metadataPath && + typeof reqOptions.metadataPath === 'function' + ) { + return reqOptions.metadataPath(filePath); + } + } + return undefined; + } + + const metadataPath = getMetadataPath(); + if (metadataPath) { + this.addDependency(metadataPath); + } + + const metadataJsonString = metadataPath + ? await readMetadataPath(metadataPath) + : undefined; + + const metadata = metadataJsonString + ? (JSON.parse(metadataJsonString) as {[key: string]: unknown}) + : undefined; + + const assets = + reqOptions.createAssets && metadata + ? reqOptions.createAssets({frontMatter, metadata}) + : undefined; + + // TODO use remark plugins to insert extra exports instead of string concat? + // cf how the toc is exported + const exportsCode = ` +export const frontMatter = ${stringifyObject(frontMatter)}; +export const contentTitle = ${stringifyObject(contentTitle)}; +${metadataJsonString ? `export const metadata = ${metadataJsonString};` : ''} +${assets ? `export const assets = ${createAssetsExportCode(assets)};` : ''} +`; + + const code = ` +${exportsCode} +${result.content} +`; + + return callback(null, code); +} diff --git a/node_modules/@docusaurus/mdx-loader/src/preprocessor.ts b/node_modules/@docusaurus/mdx-loader/src/preprocessor.ts new file mode 100644 index 00000000..0581e6bc --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/src/preprocessor.ts @@ -0,0 +1,47 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { + escapeMarkdownHeadingIds, + unwrapMdxCodeBlocks, + admonitionTitleToDirectiveLabel, +} from '@docusaurus/utils'; +import {normalizeAdmonitionOptions} from './remark/admonitions'; +import type {Options} from './loader'; + +/** + * Preprocess the string before passing it to MDX + * This is not particularly recommended but makes it easier to upgrade to MDX 2 + */ +export default function preprocessContent({ + fileContent: initialFileContent, + filePath, + markdownConfig, + admonitions, +}: { + fileContent: string; + filePath: string; + markdownConfig: Options['markdownConfig']; + admonitions: Options['admonitions'] | undefined; +}): string { + let fileContent = initialFileContent; + if (markdownConfig.preprocessor) { + fileContent = markdownConfig.preprocessor({ + fileContent, + filePath, + }); + } + fileContent = unwrapMdxCodeBlocks(fileContent); + if (markdownConfig.mdx1Compat.headingIds) { + fileContent = escapeMarkdownHeadingIds(fileContent); + } + if (markdownConfig.mdx1Compat.admonitions && admonitions) { + const {keywords} = normalizeAdmonitionOptions(admonitions); + fileContent = admonitionTitleToDirectiveLabel(fileContent, keywords); + } + return fileContent; +} diff --git a/node_modules/@docusaurus/mdx-loader/src/processor.ts b/node_modules/@docusaurus/mdx-loader/src/processor.ts new file mode 100644 index 00000000..512cd453 --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/src/processor.ts @@ -0,0 +1,261 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import headings from './remark/headings'; +import contentTitle from './remark/contentTitle'; +import toc from './remark/toc'; +import transformImage from './remark/transformImage'; +import transformLinks from './remark/transformLinks'; +import details from './remark/details'; +import head from './remark/head'; +import mermaid from './remark/mermaid'; +import transformAdmonitions from './remark/admonitions'; +import unusedDirectivesWarning from './remark/unusedDirectives'; +import codeCompatPlugin from './remark/mdx1Compat/codeCompatPlugin'; +import {getFormat} from './format'; +import type {WebpackCompilerName} from '@docusaurus/utils'; +import type {MDXFrontMatter} from './frontMatter'; +import type {Options} from './loader'; +import type {AdmonitionOptions} from './remark/admonitions'; + +// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721 +import type {ProcessorOptions} from '@mdx-js/mdx'; + +// TODO as of April 2023, no way to import/re-export this ESM type easily :/ +// This might change soon, likely after TS 5.2 +// See https://github.com/microsoft/TypeScript/issues/49721#issuecomment-1517839391 +type Pluggable = any; // TODO fix this asap + +type SimpleProcessorResult = {content: string; data: {[key: string]: unknown}}; + +// TODO alt interface because impossible to import type Processor (ESM + TS :/) +type SimpleProcessor = { + process: ({ + content, + filePath, + frontMatter, + compilerName, + }: { + content: string; + filePath: string; + frontMatter: {[key: string]: unknown}; + compilerName: WebpackCompilerName; + }) => Promise; +}; + +async function getDefaultRemarkPlugins(): Promise { + const {default: emoji} = await import('remark-emoji'); + return [headings, emoji, toc]; +} + +export type MDXPlugin = Pluggable; + +export type MDXOptions = { + admonitions: boolean | Partial; + remarkPlugins: MDXPlugin[]; + rehypePlugins: MDXPlugin[]; + beforeDefaultRemarkPlugins: MDXPlugin[]; + beforeDefaultRehypePlugins: MDXPlugin[]; +}; + +function getAdmonitionsPlugins( + admonitionsOption: MDXOptions['admonitions'], +): MDXPlugin[] { + if (admonitionsOption) { + const plugin: MDXPlugin = + admonitionsOption === true + ? transformAdmonitions + : [transformAdmonitions, admonitionsOption]; + return [plugin]; + } + + return []; +} + +// Need to be async due to ESM dynamic imports... +async function createProcessorFactory() { + const {createProcessor: createMdxProcessor} = await import('@mdx-js/mdx'); + const {default: frontmatter} = await import('remark-frontmatter'); + const {default: rehypeRaw} = await import('rehype-raw'); + const {default: gfm} = await import('remark-gfm'); + // TODO using fork until PR merged: https://github.com/leebyron/remark-comment/pull/3 + const {default: comment} = await import('@slorber/remark-comment'); + const {default: directive} = await import('remark-directive'); + const {VFile} = await import('vfile'); + + const defaultRemarkPlugins = await getDefaultRemarkPlugins(); + + // /!\ this method is synchronous on purpose + // Using async code here can create cache entry race conditions! + function createProcessorSync({ + options, + format, + }: { + options: Options; + format: 'md' | 'mdx'; + }): SimpleProcessor { + const remarkPlugins: MDXPlugin[] = [ + ...(options.beforeDefaultRemarkPlugins ?? []), + frontmatter, + directive, + [contentTitle, {removeContentTitle: options.removeContentTitle}], + ...getAdmonitionsPlugins(options.admonitions ?? false), + ...defaultRemarkPlugins, + details, + head, + ...(options.markdownConfig.mermaid ? [mermaid] : []), + [ + transformImage, + { + staticDirs: options.staticDirs, + siteDir: options.siteDir, + }, + ], + [ + transformLinks, + { + staticDirs: options.staticDirs, + siteDir: options.siteDir, + }, + ], + gfm, + options.markdownConfig.mdx1Compat.comments ? comment : null, + ...(options.remarkPlugins ?? []), + unusedDirectivesWarning, + ].filter((plugin): plugin is MDXPlugin => Boolean(plugin)); + + // codeCompatPlugin needs to be applied last after user-provided plugins + // (after npm2yarn for example) + remarkPlugins.push(codeCompatPlugin); + + const rehypePlugins: MDXPlugin[] = [ + ...(options.beforeDefaultRehypePlugins ?? []), + ...(options.rehypePlugins ?? []), + ]; + + if (format === 'md') { + // This is what permits to embed HTML elements with format 'md' + // See https://github.com/facebook/docusaurus/pull/8960 + // See https://github.com/mdx-js/mdx/pull/2295#issuecomment-1540085960 + const rehypeRawPlugin: MDXPlugin = [ + rehypeRaw, + { + passThrough: [ + 'mdxFlowExpression', + 'mdxJsxFlowElement', + 'mdxJsxTextElement', + 'mdxTextExpression', + 'mdxjsEsm', + ], + }, + ]; + rehypePlugins.unshift(rehypeRawPlugin); + } + + const processorOptions: ProcessorOptions & Options = { + ...options, + remarkPlugins, + rehypePlugins, + providerImportSource: '@mdx-js/react', + }; + + const mdxProcessor = createMdxProcessor({ + ...processorOptions, + format, + }); + + return { + process: async ({content, filePath, frontMatter, compilerName}) => { + const vfile = new VFile({ + value: content, + path: filePath, + data: { + frontMatter, + compilerName, + }, + }); + return mdxProcessor.process(vfile).then((result) => ({ + content: result.toString(), + data: result.data, + })); + }, + }; + } + + return {createProcessorSync}; +} + +// Will be useful for tests +export async function createProcessorUncached(parameters: { + options: Options; + format: 'md' | 'mdx'; +}): Promise { + const {createProcessorSync} = await createProcessorFactory(); + return createProcessorSync(parameters); +} + +// We use different compilers depending on the file type (md vs mdx) +type ProcessorsCacheEntry = { + mdProcessor: SimpleProcessor; + mdxProcessor: SimpleProcessor; +}; + +// Compilers are cached so that Remark/Rehype plugins can run +// expensive code during initialization +const ProcessorsCache = new Map(); + +async function createProcessorsCacheEntry({ + query, + reqOptions, +}: { + query: string | Options; + reqOptions: Options; +}): Promise { + const {createProcessorSync} = await createProcessorFactory(); + + const compilers = ProcessorsCache.get(query); + if (compilers) { + return compilers; + } + + const compilerCacheEntry: ProcessorsCacheEntry = { + mdProcessor: createProcessorSync({ + options: reqOptions, + format: 'md', + }), + mdxProcessor: createProcessorSync({ + options: reqOptions, + format: 'mdx', + }), + }; + + ProcessorsCache.set(query, compilerCacheEntry); + + return compilerCacheEntry; +} + +export async function createProcessorCached({ + filePath, + mdxFrontMatter, + query, + reqOptions, +}: { + filePath: string; + mdxFrontMatter: MDXFrontMatter; + query: string | Options; + reqOptions: Options; +}): Promise { + const compilers = await createProcessorsCacheEntry({query, reqOptions}); + + const format = getFormat({ + filePath, + frontMatterFormat: mdxFrontMatter.format, + markdownConfigFormat: reqOptions.markdownConfig.format, + }); + + return format === 'md' ? compilers.mdProcessor : compilers.mdxProcessor; +} diff --git a/node_modules/@docusaurus/mdx-loader/src/remark/admonitions/LICENSE b/node_modules/@docusaurus/mdx-loader/src/remark/admonitions/LICENSE new file mode 100644 index 00000000..faa22217 --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/src/remark/admonitions/LICENSE @@ -0,0 +1,45 @@ +MIT License + +Copyright (c) 2020 Elvis Wolcott + +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. + +--- + +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +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. diff --git a/node_modules/@docusaurus/mdx-loader/src/remark/admonitions/README.md b/node_modules/@docusaurus/mdx-loader/src/remark/admonitions/README.md new file mode 100644 index 00000000..d28f68a1 --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/src/remark/admonitions/README.md @@ -0,0 +1,3 @@ +# Docusaurus admonitions + +Code from [remark-admonitions](https://github.com/elviswolcott/remark-admonitions) (MIT license) has been copied to this folder, and highly customized for Docusaurus needs. diff --git a/node_modules/@docusaurus/mdx-loader/src/remark/admonitions/index.ts b/node_modules/@docusaurus/mdx-loader/src/remark/admonitions/index.ts new file mode 100644 index 00000000..d45e2e92 --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/src/remark/admonitions/index.ts @@ -0,0 +1,145 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721 +import type {Transformer, Processor} from 'unified'; + +// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721 +import type {ContainerDirective} from 'mdast-util-directive'; +import type {Parent} from 'mdast'; + +// TODO as of April 2023, no way to import/re-export this ESM type easily :/ +// This might change soon, likely after TS 5.2 +// See https://github.com/microsoft/TypeScript/issues/49721#issuecomment-1517839391 +// import type {Plugin} from 'unified'; +type Plugin = any; // TODO fix this asap + +export type AdmonitionOptions = { + keywords: string[]; + extendDefaults: boolean; +}; + +export const DefaultAdmonitionOptions: AdmonitionOptions = { + keywords: [ + 'secondary', + 'info', + 'success', + 'danger', + 'note', + 'tip', + 'warning', + 'important', + 'caution', + ], + extendDefaults: true, +}; + +export function normalizeAdmonitionOptions( + providedOptions: Partial | true, +): AdmonitionOptions { + if (providedOptions === true) { + return DefaultAdmonitionOptions; + } + + const options = {...DefaultAdmonitionOptions, ...providedOptions}; + + // By default it makes more sense to append keywords to the default ones + // Adding custom keywords is more common than disabling existing ones + if (options.extendDefaults) { + options.keywords = [ + ...DefaultAdmonitionOptions.keywords, + ...options.keywords, + ]; + } + + return options; +} + +type DirectiveLabel = Parent; +type DirectiveContent = ContainerDirective['children']; + +function parseDirective(directive: ContainerDirective): { + directiveLabel: DirectiveLabel | undefined; + contentNodes: DirectiveContent; +} { + const hasDirectiveLabel = + // @ts-expect-error: fine + directive.children?.[0]?.data?.directiveLabel === true; + if (hasDirectiveLabel) { + const [directiveLabel, ...contentNodes] = directive.children; + return {directiveLabel: directiveLabel as DirectiveLabel, contentNodes}; + } + return {directiveLabel: undefined, contentNodes: directive.children}; +} + +function getTextOnlyTitle(directiveLabel: DirectiveLabel): string | undefined { + const isTextOnlyTitle = + directiveLabel?.children?.length === 1 && + directiveLabel?.children?.[0]?.type === 'text'; + return isTextOnlyTitle + ? // @ts-expect-error: todo type + (directiveLabel?.children?.[0].value as string) + : undefined; +} + +const plugin: Plugin = function plugin( + this: Processor, + optionsInput: Partial = {}, +): Transformer { + const {keywords} = normalizeAdmonitionOptions(optionsInput); + + return async (root) => { + const {visit} = await import('unist-util-visit'); + + visit(root, (node) => { + if (node.type === 'containerDirective') { + const directive = node as ContainerDirective; + const isAdmonition = keywords.includes(directive.name); + + if (!isAdmonition) { + return; + } + + const {directiveLabel, contentNodes} = parseDirective(directive); + + const textOnlyTitle = + directive.attributes?.title ?? + (directiveLabel ? getTextOnlyTitle(directiveLabel) : undefined); + + // Transform the mdast directive node to a hast admonition node + // See https://github.com/syntax-tree/mdast-util-to-hast#fields-on-nodes + // TODO in MDX v2 we should transform the whole directive to + // mdxJsxFlowElement instead of using hast + directive.data = { + hName: 'admonition', + hProperties: { + ...(textOnlyTitle && {title: textOnlyTitle}), + type: directive.name, + }, + }; + directive.children = contentNodes; + + // TODO legacy MDX v1 workaround + // v1: not possible to inject complex JSX elements as props + // v2: now possible: use a mdxJsxFlowElement element + if (directiveLabel && !textOnlyTitle) { + const complexTitleNode = { + type: 'mdxAdmonitionTitle', + data: { + hName: 'mdxAdmonitionTitle', + hProperties: {}, + }, + children: directiveLabel.children, + }; + // @ts-expect-error: invented node type + directive.children.unshift(complexTitleNode); + } + } + }); + }; +}; + +export default plugin; diff --git a/node_modules/@docusaurus/mdx-loader/src/remark/contentTitle/index.ts b/node_modules/@docusaurus/mdx-loader/src/remark/contentTitle/index.ts new file mode 100644 index 00000000..89c66a7e --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/src/remark/contentTitle/index.ts @@ -0,0 +1,55 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721 +import type {Transformer} from 'unified'; +import type {Heading} from 'mdast'; + +// TODO as of April 2023, no way to import/re-export this ESM type easily :/ +// TODO upgrade to TS 5.3 +// See https://github.com/microsoft/TypeScript/issues/49721#issuecomment-1517839391 +// import type {Plugin} from 'unified'; +type Plugin = any; // TODO fix this asap + +interface PluginOptions { + removeContentTitle?: boolean; +} + +/** + * A remark plugin to extract the h1 heading found in Markdown files + * This is exposed as "data.contentTitle" to the processed vfile + * Also gives the ability to strip that content title (used for the blog plugin) + */ +const plugin: Plugin = function plugin( + options: PluginOptions = {}, +): Transformer { + // content title is + const removeContentTitle = options.removeContentTitle ?? false; + + return async (root, vfile) => { + const {toString} = await import('mdast-util-to-string'); + const {visit, EXIT} = await import('unist-util-visit'); + + visit(root, 'heading', (headingNode: Heading, index, parent) => { + if (headingNode.depth === 1) { + vfile.data.contentTitle = toString(headingNode); + if (removeContentTitle) { + // @ts-expect-error: TODO how to fix? + parent!.children.splice(index, 1); + } + return EXIT; // We only handle the very first heading + } + // We only handle contentTitle if it's the very first heading found + if (headingNode.depth >= 1) { + return EXIT; + } + return undefined; + }); + }; +}; + +export default plugin; diff --git a/node_modules/@docusaurus/mdx-loader/src/remark/details/index.ts b/node_modules/@docusaurus/mdx-loader/src/remark/details/index.ts new file mode 100644 index 00000000..ef8e0146 --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/src/remark/details/index.ts @@ -0,0 +1,25 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721 +import type {Transformer} from 'unified'; + +// @ts-expect-error: ES support... +import type {MdxJsxFlowElement} from 'mdast-util-mdx'; + +// Transform
to
+// MDX 2 doesn't allow to substitute html elements with the provider anymore +export default function plugin(): Transformer { + return async (root) => { + const {visit} = await import('unist-util-visit'); + visit(root, 'mdxJsxFlowElement', (node: MdxJsxFlowElement) => { + if (node.name === 'details') { + node.name = 'Details'; + } + }); + }; +} diff --git a/node_modules/@docusaurus/mdx-loader/src/remark/head/index.ts b/node_modules/@docusaurus/mdx-loader/src/remark/head/index.ts new file mode 100644 index 00000000..3063c93a --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/src/remark/head/index.ts @@ -0,0 +1,25 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721 +import type {Transformer} from 'unified'; + +// @ts-expect-error: ES support... +import type {MdxJsxFlowElement} from 'mdast-util-mdx'; + +// Transform to +// MDX 2 doesn't allow to substitute html elements with the provider anymore +export default function plugin(): Transformer { + return async (root) => { + const {visit} = await import('unist-util-visit'); + visit(root, 'mdxJsxFlowElement', (node: MdxJsxFlowElement) => { + if (node.name === 'head') { + node.name = 'Head'; + } + }); + }; +} diff --git a/node_modules/@docusaurus/mdx-loader/src/remark/headings/index.ts b/node_modules/@docusaurus/mdx-loader/src/remark/headings/index.ts new file mode 100644 index 00000000..90f90e75 --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/src/remark/headings/index.ts @@ -0,0 +1,72 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* Based on remark-slug (https://github.com/remarkjs/remark-slug) and gatsby-remark-autolink-headers (https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-remark-autolink-headers) */ + +import {parseMarkdownHeadingId, createSlugger} from '@docusaurus/utils'; +// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721 +import type {Transformer} from 'unified'; +import type {Heading, Text} from 'mdast'; + +export default function plugin(): Transformer { + return async (root) => { + const {toString} = await import('mdast-util-to-string'); + const {visit} = await import('unist-util-visit'); + + const slugs = createSlugger(); + visit(root, 'heading', (headingNode: Heading) => { + const data = headingNode.data ?? (headingNode.data = {}); + const properties = (data.hProperties || (data.hProperties = {})) as { + id: string; + }; + let {id} = properties; + + if (id) { + id = slugs.slug(id, {maintainCase: true}); + } else { + const headingTextNodes = headingNode.children.filter( + ({type}) => !['html', 'jsx'].includes(type), + ); + const heading = toString( + headingTextNodes.length > 0 ? headingTextNodes : headingNode, + ); + + // Support explicit heading IDs + const parsedHeading = parseMarkdownHeadingId(heading); + + id = parsedHeading.id ?? slugs.slug(heading); + + if (parsedHeading.id) { + // When there's an id, it is always in the last child node + // Sometimes heading is in multiple "parts" (** syntax creates a child + // node): + // ## part1 *part2* part3 {#id} + const lastNode = headingNode.children[ + headingNode.children.length - 1 + ] as Text; + + if (headingNode.children.length > 1) { + const lastNodeText = parseMarkdownHeadingId(lastNode.value).text; + // When last part contains test+id, remove the id + if (lastNodeText) { + lastNode.value = lastNodeText; + } + // When last part contains only the id: completely remove that node + else { + headingNode.children.pop(); + } + } else { + lastNode.value = parsedHeading.text; + } + } + } + + data.id = id; + properties.id = id; + }); + }; +} diff --git a/node_modules/@docusaurus/mdx-loader/src/remark/mdx1Compat/codeCompatPlugin.ts b/node_modules/@docusaurus/mdx-loader/src/remark/mdx1Compat/codeCompatPlugin.ts new file mode 100644 index 00000000..54f67a7d --- /dev/null +++ b/node_modules/@docusaurus/mdx-loader/src/remark/mdx1Compat/codeCompatPlugin.ts @@ -0,0 +1,34 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721 +import type {Transformer, Processor} from 'unified'; +import type {Code} from 'mdast'; + +// Solution inspired by https://github.com/pomber/docusaurus-mdx-2/blob/main/packages/mdx-loader/src/remark/codeCompat/index.ts +// TODO after MDX 2 we probably don't need this - remove soon? +// Only fenced code blocks are swapped by pre/code MDX components +// Using
 in JSX shouldn't use our MDX components anymore
+
+// To make theme-classic/src/theme/MDXComponents/Pre work
+// we need to fill two properties that mdx v2 doesn't provide anymore
+export default function codeCompatPlugin(this: Processor): Transformer {
+  return async (root) => {
+    const {visit} = await import('unist-util-visit');
+
+    visit(root, 'code', (node: Code) => {
+      node.data = node.data || {};
+
+      node.data.hProperties = node.data.hProperties || {};
+      node.data.hProperties.metastring = node.meta;
+
+      // Retrocompatible support for live codeblock metastring
+      // Not really the appropriate place to handle that :s
+      node.data.hProperties.live = node.meta?.split(' ').includes('live');
+    });
+  };
+}
diff --git a/node_modules/@docusaurus/mdx-loader/src/remark/mermaid/index.ts b/node_modules/@docusaurus/mdx-loader/src/remark/mermaid/index.ts
new file mode 100644
index 00000000..92f99e2a
--- /dev/null
+++ b/node_modules/@docusaurus/mdx-loader/src/remark/mermaid/index.ts
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+import {transformNode} from '../utils';
+
+// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721
+import type {Transformer} from 'unified';
+import type {Code} from 'mdast';
+
+// TODO: this plugin shouldn't be in the core MDX loader
+// After we allow plugins to provide Remark/Rehype plugins (see
+// https://github.com/facebook/docusaurus/issues/6370), this should be provided
+// by theme-mermaid itself
+export default function plugin(): Transformer {
+  return async (root) => {
+    const {visit} = await import('unist-util-visit');
+
+    visit(root, 'code', (node: Code) => {
+      if (node.lang === 'mermaid') {
+        // TODO migrate to mdxJsxFlowElement? cf admonitions
+        transformNode(node, {
+          type: 'mermaidCodeBlock',
+          data: {
+            hName: 'mermaid',
+            hProperties: {
+              value: node.value,
+            },
+          },
+        });
+      }
+    });
+  };
+}
diff --git a/node_modules/@docusaurus/mdx-loader/src/remark/toc/index.ts b/node_modules/@docusaurus/mdx-loader/src/remark/toc/index.ts
new file mode 100644
index 00000000..31081fb7
--- /dev/null
+++ b/node_modules/@docusaurus/mdx-loader/src/remark/toc/index.ts
@@ -0,0 +1,158 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+import {parse, type ParserOptions} from '@babel/parser';
+import traverse from '@babel/traverse';
+import stringifyObject from 'stringify-object';
+import {toValue} from '../utils';
+import type {Identifier} from '@babel/types';
+import type {Node, Parent} from 'unist';
+import type {Heading, Literal} from 'mdast';
+// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721
+import type {Transformer} from 'unified';
+import type {
+  MdxjsEsm,
+  // @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721
+} from 'mdast-util-mdx';
+
+// TODO as of April 2023, no way to import/re-export this ESM type easily :/
+// TODO upgrade to TS 5.3
+// See https://github.com/microsoft/TypeScript/issues/49721#issuecomment-1517839391
+// import type {Plugin} from 'unified';
+type Plugin = any; // TODO fix this asap
+
+export type TOCItem = {
+  readonly value: string;
+  readonly id: string;
+  readonly level: number;
+};
+
+const parseOptions: ParserOptions = {
+  plugins: ['jsx'],
+  sourceType: 'module',
+};
+
+const isImport = (child: any): child is Literal =>
+  child.type === 'mdxjsEsm' && child.value.startsWith('import');
+const hasImports = (index: number) => index > -1;
+const isExport = (child: any): child is Literal =>
+  child.type === 'mdxjsEsm' && child.value.startsWith('export');
+
+interface PluginOptions {
+  name?: string;
+}
+
+const isTarget = (child: Literal, name: string) => {
+  let found = false;
+  const ast = parse(child.value, parseOptions);
+  traverse(ast, {
+    VariableDeclarator: (path) => {
+      if ((path.node.id as Identifier).name === name) {
+        found = true;
+      }
+    },
+  });
+  return found;
+};
+
+const getOrCreateExistingTargetIndex = async (
+  children: Node[],
+  name: string,
+) => {
+  let importsIndex = -1;
+  let targetIndex = -1;
+
+  children.forEach((child, index) => {
+    if (isImport(child)) {
+      importsIndex = index;
+    } else if (isExport(child) && isTarget(child, name)) {
+      targetIndex = index;
+    }
+  });
+
+  if (targetIndex === -1) {
+    const target = await createExportNode(name, []);
+
+    targetIndex = hasImports(importsIndex) ? importsIndex + 1 : 0;
+    children.splice(targetIndex, 0, target);
+  }
+
+  return targetIndex;
+};
+
+const plugin: Plugin = function plugin(
+  options: PluginOptions = {},
+): Transformer {
+  const name = options.name || 'toc';
+
+  return async (root) => {
+    const {toString} = await import('mdast-util-to-string');
+    const {visit} = await import('unist-util-visit');
+
+    const headings: TOCItem[] = [];
+
+    visit(root, 'heading', (child: Heading) => {
+      const value = toString(child);
+
+      // depth:1 headings are titles and not included in the TOC
+      if (!value || child.depth < 2) {
+        return;
+      }
+
+      headings.push({
+        value: toValue(child, toString),
+        id: child.data!.id!,
+        level: child.depth,
+      });
+    });
+
+    const {children} = root as Parent;
+    const targetIndex = await getOrCreateExistingTargetIndex(children, name);
+
+    if (headings?.length) {
+      children[targetIndex] = await createExportNode(name, headings);
+    }
+  };
+};
+
+export default plugin;
+
+async function createExportNode(name: string, object: any): Promise {
+  const {valueToEstree} = await import('estree-util-value-to-estree');
+
+  return {
+    type: 'mdxjsEsm',
+    value: `export const ${name} = ${stringifyObject(object)}`,
+    data: {
+      estree: {
+        type: 'Program',
+        body: [
+          {
+            type: 'ExportNamedDeclaration',
+            declaration: {
+              type: 'VariableDeclaration',
+              declarations: [
+                {
+                  type: 'VariableDeclarator',
+                  id: {
+                    type: 'Identifier',
+                    name,
+                  },
+                  init: valueToEstree(object),
+                },
+              ],
+              kind: 'const',
+            },
+            specifiers: [],
+            source: null,
+          },
+        ],
+        sourceType: 'module',
+      },
+    },
+  };
+}
diff --git a/node_modules/@docusaurus/mdx-loader/src/remark/transformImage/index.ts b/node_modules/@docusaurus/mdx-loader/src/remark/transformImage/index.ts
new file mode 100644
index 00000000..02672d10
--- /dev/null
+++ b/node_modules/@docusaurus/mdx-loader/src/remark/transformImage/index.ts
@@ -0,0 +1,207 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+import path from 'path';
+import url from 'url';
+import fs from 'fs-extra';
+import {promisify} from 'util';
+import {
+  toMessageRelativeFilePath,
+  posixPath,
+  escapePath,
+  getFileLoaderUtils,
+  findAsyncSequential,
+} from '@docusaurus/utils';
+import escapeHtml from 'escape-html';
+import sizeOf from 'image-size';
+import logger from '@docusaurus/logger';
+import {assetRequireAttributeValue, transformNode} from '../utils';
+// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721
+import type {Transformer} from 'unified';
+// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721
+import type {MdxJsxTextElement} from 'mdast-util-mdx';
+import type {Image} from 'mdast';
+import type {Parent} from 'unist';
+
+const {
+  loaders: {inlineMarkdownImageFileLoader},
+} = getFileLoaderUtils();
+
+type PluginOptions = {
+  staticDirs: string[];
+  siteDir: string;
+};
+
+type Context = PluginOptions & {
+  filePath: string;
+};
+
+type Target = [node: Image, index: number, parent: Parent];
+
+async function toImageRequireNode(
+  [node]: Target,
+  imagePath: string,
+  filePath: string,
+) {
+  // MdxJsxTextElement => see https://github.com/facebook/docusaurus/pull/8288#discussion_r1125871405
+  const jsxNode = node as unknown as MdxJsxTextElement;
+  const attributes: MdxJsxTextElement['attributes'] = [];
+
+  let relativeImagePath = posixPath(
+    path.relative(path.dirname(filePath), imagePath),
+  );
+  relativeImagePath = `./${relativeImagePath}`;
+
+  const parsedUrl = url.parse(node.url);
+  const hash = parsedUrl.hash ?? '';
+  const search = parsedUrl.search ?? '';
+  const requireString = `${inlineMarkdownImageFileLoader}${
+    escapePath(relativeImagePath) + search
+  }`;
+  if (node.alt) {
+    attributes.push({
+      type: 'mdxJsxAttribute',
+      name: 'alt',
+      value: escapeHtml(node.alt),
+    });
+  }
+
+  attributes.push({
+    type: 'mdxJsxAttribute',
+    name: 'src',
+    value: assetRequireAttributeValue(requireString, hash),
+  });
+
+  if (node.title) {
+    attributes.push({
+      type: 'mdxJsxAttribute',
+      name: 'title',
+      value: escapeHtml(node.title),
+    });
+  }
+
+  try {
+    const size = (await promisify(sizeOf)(imagePath))!;
+    if (size.width) {
+      attributes.push({
+        type: 'mdxJsxAttribute',
+        name: 'width',
+        value: String(size.width),
+      });
+    }
+    if (size.height) {
+      attributes.push({
+        type: 'mdxJsxAttribute',
+        name: 'height',
+        value: String(size.height),
+      });
+    }
+  } catch (err) {
+    // Workaround for https://github.com/yarnpkg/berry/pull/3889#issuecomment-1034469784
+    // TODO remove this check once fixed in Yarn PnP
+    if (!process.versions.pnp) {
+      logger.warn`The image at path=${imagePath} can't be read correctly. Please ensure it's a valid image.
+${(err as Error).message}`;
+    }
+  }
+
+  transformNode(jsxNode, {
+    type: 'mdxJsxTextElement',
+    name: 'img',
+    attributes,
+    children: [],
+  });
+}
+
+async function ensureImageFileExist(imagePath: string, sourceFilePath: string) {
+  const imageExists = await fs.pathExists(imagePath);
+  if (!imageExists) {
+    throw new Error(
+      `Image ${toMessageRelativeFilePath(
+        imagePath,
+      )} used in ${toMessageRelativeFilePath(sourceFilePath)} not found.`,
+    );
+  }
+}
+
+async function getImageAbsolutePath(
+  imagePath: string,
+  {siteDir, filePath, staticDirs}: Context,
+) {
+  if (imagePath.startsWith('@site/')) {
+    const imageFilePath = path.join(siteDir, imagePath.replace('@site/', ''));
+    await ensureImageFileExist(imageFilePath, filePath);
+    return imageFilePath;
+  } else if (path.isAbsolute(imagePath)) {
+    // Absolute paths are expected to exist in the static folder.
+    const possiblePaths = staticDirs.map((dir) => path.join(dir, imagePath));
+    const imageFilePath = await findAsyncSequential(
+      possiblePaths,
+      fs.pathExists,
+    );
+    if (!imageFilePath) {
+      throw new Error(
+        `Image ${possiblePaths
+          .map((p) => toMessageRelativeFilePath(p))
+          .join(' or ')} used in ${toMessageRelativeFilePath(
+          filePath,
+        )} not found.`,
+      );
+    }
+    return imageFilePath;
+  }
+  // relative paths are resolved against the source file's folder
+  const imageFilePath = path.join(
+    path.dirname(filePath),
+    decodeURIComponent(imagePath),
+  );
+  await ensureImageFileExist(imageFilePath, filePath);
+  return imageFilePath;
+}
+
+async function processImageNode(target: Target, context: Context) {
+  const [node] = target;
+  if (!node.url) {
+    throw new Error(
+      `Markdown image URL is mandatory in "${toMessageRelativeFilePath(
+        context.filePath,
+      )}" file`,
+    );
+  }
+
+  const parsedUrl = url.parse(node.url);
+  if (parsedUrl.protocol || !parsedUrl.pathname) {
+    // pathname:// is an escape hatch, in case user does not want her images to
+    // be converted to require calls going through webpack loader
+    if (parsedUrl.protocol === 'pathname:') {
+      node.url = node.url.replace('pathname://', '');
+    }
+    return;
+  }
+
+  // We try to convert image urls without protocol to images with require calls
+  // going through webpack ensures that image assets exist at build time
+  const imagePath = await getImageAbsolutePath(parsedUrl.pathname, context);
+  await toImageRequireNode(target, imagePath, context.filePath);
+}
+
+export default function plugin(options: PluginOptions): Transformer {
+  return async (root, vfile) => {
+    const {visit} = await import('unist-util-visit');
+
+    const promises: Promise[] = [];
+    visit(root, 'image', (node: Image, index, parent) => {
+      promises.push(
+        processImageNode([node, index, parent!], {
+          ...options,
+          filePath: vfile.path!,
+        }),
+      );
+    });
+    await Promise.all(promises);
+  };
+}
diff --git a/node_modules/@docusaurus/mdx-loader/src/remark/transformLinks/index.ts b/node_modules/@docusaurus/mdx-loader/src/remark/transformLinks/index.ts
new file mode 100644
index 00000000..252289f9
--- /dev/null
+++ b/node_modules/@docusaurus/mdx-loader/src/remark/transformLinks/index.ts
@@ -0,0 +1,190 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+import path from 'path';
+import url from 'url';
+import fs from 'fs-extra';
+import {
+  toMessageRelativeFilePath,
+  posixPath,
+  escapePath,
+  getFileLoaderUtils,
+  findAsyncSequential,
+} from '@docusaurus/utils';
+import escapeHtml from 'escape-html';
+import {assetRequireAttributeValue, transformNode} from '../utils';
+// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721
+import type {Transformer} from 'unified';
+// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721
+import type {MdxJsxTextElement} from 'mdast-util-mdx';
+import type {Parent} from 'unist';
+import type {Link, Literal} from 'mdast';
+
+const {
+  loaders: {inlineMarkdownLinkFileLoader},
+} = getFileLoaderUtils();
+
+type PluginOptions = {
+  staticDirs: string[];
+  siteDir: string;
+};
+
+type Context = PluginOptions & {
+  filePath: string;
+};
+
+type Target = [node: Link, index: number, parent: Parent];
+
+/**
+ * Transforms the link node to a JSX `` element with a `require()` call.
+ */
+async function toAssetRequireNode(
+  [node]: Target,
+  assetPath: string,
+  filePath: string,
+) {
+  // MdxJsxTextElement => see https://github.com/facebook/docusaurus/pull/8288#discussion_r1125871405
+  const jsxNode = node as unknown as MdxJsxTextElement;
+  const attributes: MdxJsxTextElement['attributes'] = [];
+
+  // require("assets/file.pdf") means requiring from a package called assets
+  const relativeAssetPath = `./${posixPath(
+    path.relative(path.dirname(filePath), assetPath),
+  )}`;
+
+  const parsedUrl = url.parse(node.url);
+  const hash = parsedUrl.hash ?? '';
+  const search = parsedUrl.search ?? '';
+
+  const requireString = `${
+    // A hack to stop Webpack from using its built-in loader to parse JSON
+    path.extname(relativeAssetPath) === '.json'
+      ? `${relativeAssetPath.replace('.json', '.raw')}!=`
+      : ''
+  }${inlineMarkdownLinkFileLoader}${escapePath(relativeAssetPath) + search}`;
+
+  attributes.push({
+    type: 'mdxJsxAttribute',
+    name: 'target',
+    value: '_blank',
+  });
+
+  attributes.push({
+    type: 'mdxJsxAttribute',
+    name: 'href',
+    value: assetRequireAttributeValue(requireString, hash),
+  });
+
+  if (node.title) {
+    attributes.push({
+      type: 'mdxJsxAttribute',
+      name: 'title',
+      value: escapeHtml(node.title),
+    });
+  }
+
+  const {children} = node;
+
+  transformNode(jsxNode, {
+    type: 'mdxJsxTextElement',
+    name: 'a',
+    attributes,
+    children,
+  });
+}
+
+async function ensureAssetFileExist(assetPath: string, sourceFilePath: string) {
+  const assetExists = await fs.pathExists(assetPath);
+  if (!assetExists) {
+    throw new Error(
+      `Asset ${toMessageRelativeFilePath(
+        assetPath,
+      )} used in ${toMessageRelativeFilePath(sourceFilePath)} not found.`,
+    );
+  }
+}
+
+async function getAssetAbsolutePath(
+  assetPath: string,
+  {siteDir, filePath, staticDirs}: Context,
+) {
+  if (assetPath.startsWith('@site/')) {
+    const assetFilePath = path.join(siteDir, assetPath.replace('@site/', ''));
+    // The @site alias is the only way to believe that the user wants an asset.
+    // Everything else can just be a link URL
+    await ensureAssetFileExist(assetFilePath, filePath);
+    return assetFilePath;
+  } else if (path.isAbsolute(assetPath)) {
+    const assetFilePath = await findAsyncSequential(
+      staticDirs.map((dir) => path.join(dir, assetPath)),
+      fs.pathExists,
+    );
+    if (assetFilePath) {
+      return assetFilePath;
+    }
+  } else {
+    const assetFilePath = path.join(path.dirname(filePath), assetPath);
+    if (await fs.pathExists(assetFilePath)) {
+      return assetFilePath;
+    }
+  }
+  return null;
+}
+
+async function processLinkNode(target: Target, context: Context) {
+  const [node] = target;
+  if (!node.url) {
+    // Try to improve error feedback
+    // see https://github.com/facebook/docusaurus/issues/3309#issuecomment-690371675
+    const title =
+      node.title ?? (node.children[0] as Literal | undefined)?.value ?? '?';
+    const line = node.position?.start.line ?? '?';
+    throw new Error(
+      `Markdown link URL is mandatory in "${toMessageRelativeFilePath(
+        context.filePath,
+      )}" file (title: ${title}, line: ${line}).`,
+    );
+  }
+
+  const parsedUrl = url.parse(node.url);
+  if (parsedUrl.protocol || !parsedUrl.pathname) {
+    // Don't process pathname:// here, it's used by the  component
+    return;
+  }
+  const hasSiteAlias = parsedUrl.pathname.startsWith('@site/');
+  const hasAssetLikeExtension =
+    path.extname(parsedUrl.pathname) &&
+    !parsedUrl.pathname.match(/\.(?:mdx?|html)(?:#|$)/);
+  if (!hasSiteAlias && !hasAssetLikeExtension) {
+    return;
+  }
+
+  const assetPath = await getAssetAbsolutePath(
+    decodeURIComponent(parsedUrl.pathname),
+    context,
+  );
+  if (assetPath) {
+    await toAssetRequireNode(target, assetPath, context.filePath);
+  }
+}
+
+export default function plugin(options: PluginOptions): Transformer {
+  return async (root, vfile) => {
+    const {visit} = await import('unist-util-visit');
+
+    const promises: Promise[] = [];
+    visit(root, 'link', (node: Link, index, parent) => {
+      promises.push(
+        processLinkNode([node, index, parent!], {
+          ...options,
+          filePath: vfile.path!,
+        }),
+      );
+    });
+    await Promise.all(promises);
+  };
+}
diff --git a/node_modules/@docusaurus/mdx-loader/src/remark/unusedDirectives/index.ts b/node_modules/@docusaurus/mdx-loader/src/remark/unusedDirectives/index.ts
new file mode 100644
index 00000000..d2cb5928
--- /dev/null
+++ b/node_modules/@docusaurus/mdx-loader/src/remark/unusedDirectives/index.ts
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+import path from 'path';
+import process from 'process';
+import logger from '@docusaurus/logger';
+import {posixPath} from '@docusaurus/utils';
+import {transformNode} from '../utils';
+
+// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721
+import type {Transformer, Processor, Parent} from 'unified';
+import type {
+  Directives,
+  TextDirective,
+  // @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721
+} from 'mdast-util-directive';
+
+// TODO as of April 2023, no way to import/re-export this ESM type easily :/
+// This might change soon, likely after TS 5.2
+// See https://github.com/microsoft/TypeScript/issues/49721#issuecomment-1517839391
+// import type {Plugin} from 'unified';
+type Plugin = any; // TODO fix this asap
+
+type DirectiveType = Directives['type'];
+
+const directiveTypes: DirectiveType[] = [
+  'containerDirective',
+  'leafDirective',
+  'textDirective',
+];
+
+const directivePrefixMap: {[key in DirectiveType]: string} = {
+  textDirective: ':',
+  leafDirective: '::',
+  containerDirective: ':::',
+};
+
+function formatDirectiveName(directive: Directives) {
+  const prefix = directivePrefixMap[directive.type];
+  if (!prefix) {
+    throw new Error(
+      `unexpected, no prefix found for directive of type ${directive.type}`,
+    );
+  }
+  // To simplify we don't display the eventual label/props of directives
+  return `${prefix}${directive.name}`;
+}
+
+function formatDirectivePosition(directive: Directives): string | undefined {
+  return directive.position?.start
+    ? logger.interpolate`number=${directive.position.start.line}:number=${directive.position.start.column}`
+    : undefined;
+}
+
+function formatUnusedDirectiveMessage(directive: Directives) {
+  const name = formatDirectiveName(directive);
+  const position = formatDirectivePosition(directive);
+
+  return `- ${name} ${position ? `(${position})` : ''}`;
+}
+
+function formatUnusedDirectivesMessage({
+  directives,
+  filePath,
+}: {
+  directives: Directives[];
+  filePath: string;
+}): string {
+  const supportUrl = 'https://github.com/facebook/docusaurus/pull/9394';
+  const customPath = posixPath(path.relative(process.cwd(), filePath));
+  const warningTitle = logger.interpolate`Docusaurus found ${directives.length} unused Markdown directives in file path=${customPath}`;
+  const customSupportUrl = logger.interpolate`url=${supportUrl}`;
+  const warningMessages = directives
+    .map(formatUnusedDirectiveMessage)
+    .join('\n');
+
+  return `${warningTitle}
+${warningMessages}
+Your content might render in an unexpected way. Visit ${customSupportUrl} to find out why and how to fix it.`;
+}
+
+function logUnusedDirectivesWarning({
+  directives,
+  filePath,
+}: {
+  directives: Directives[];
+  filePath: string;
+}) {
+  if (directives.length > 0) {
+    const message = formatUnusedDirectivesMessage({
+      directives,
+      filePath,
+    });
+    logger.warn(message);
+  }
+}
+
+function isTextDirective(directive: Directives): directive is TextDirective {
+  return directive.type === 'textDirective';
+}
+
+// A simple text directive is one without any label/props
+function isSimpleTextDirective(
+  directive: Directives,
+): directive is TextDirective {
+  if (isTextDirective(directive)) {
+    // Attributes in MDAST = Directive props
+    const hasAttributes =
+      directive.attributes && Object.keys(directive.attributes).length > 0;
+    // Children in MDAST = Directive label
+    const hasChildren = directive.children.length > 0;
+    return !hasAttributes && !hasChildren;
+  }
+  return false;
+}
+
+function transformSimpleTextDirectiveToString(textDirective: Directives) {
+  transformNode(textDirective, {
+    type: 'text',
+    value: `:${textDirective.name}`, // We ignore label/props on purpose here
+  });
+}
+
+function isUnusedDirective(directive: Directives) {
+  // If directive data is set (notably hName/hProperties set by admonitions)
+  // this usually means the directive has been handled by another plugin
+  return !directive.data;
+}
+
+const plugin: Plugin = function plugin(this: Processor): Transformer {
+  return async (tree, file) => {
+    const {visit} = await import('unist-util-visit');
+
+    const unusedDirectives: Directives[] = [];
+
+    visit(
+      tree,
+      directiveTypes,
+      (directive: Directives) => {
+        // If directive data is set (hName/hProperties set by admonitions)
+        // this usually means the directive has been handled by another plugin
+        if (isUnusedDirective(directive)) {
+          if (isSimpleTextDirective(directive)) {
+            transformSimpleTextDirectiveToString(directive);
+          } else {
+            unusedDirectives.push(directive);
+          }
+        }
+      },
+    );
+
+    // We only enable these warnings for the client compiler
+    // This avoids emitting duplicate warnings in prod mode
+    // Note: the client compiler is used in both dev/prod modes
+    if (file.data.compilerName === 'client') {
+      logUnusedDirectivesWarning({
+        directives: unusedDirectives,
+        filePath: file.path,
+      });
+    }
+  };
+};
+
+export default plugin;
diff --git a/node_modules/@docusaurus/mdx-loader/src/remark/utils/index.ts b/node_modules/@docusaurus/mdx-loader/src/remark/utils/index.ts
new file mode 100644
index 00000000..6d156e34
--- /dev/null
+++ b/node_modules/@docusaurus/mdx-loader/src/remark/utils/index.ts
@@ -0,0 +1,156 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+import escapeHtml from 'escape-html';
+import type {Parent, Node} from 'unist';
+import type {PhrasingContent, Heading} from 'mdast';
+import type {
+  MdxJsxAttribute,
+  MdxJsxAttributeValueExpression,
+  MdxJsxTextElement,
+  // @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721
+} from 'mdast-util-mdx';
+
+/**
+ * Util to transform one node type to another node type
+ * The input node is mutated in place
+ * @param node the node to mutate
+ * @param newNode what the original node should become become
+ */
+export function transformNode(
+  node: Node,
+  newNode: NewNode,
+): NewNode {
+  Object.keys(node).forEach((key) => {
+    // @ts-expect-error: unsafe but ok
+    delete node[key];
+  });
+  Object.keys(newNode).forEach((key) => {
+    // @ts-expect-error: unsafe but ok
+    node[key] = newNode[key];
+  });
+  return node as NewNode;
+}
+
+export function stringifyContent(
+  node: Parent,
+  toString: (param: unknown) => string, // TODO weird but works
+): string {
+  return (node.children as PhrasingContent[])
+    .map((item) => toValue(item, toString))
+    .join('');
+}
+
+// TODO This is really a workaround, and not super reliable
+// For now we only support serializing tagName, className and content
+// Can we implement the TOC with real JSX nodes instead of html strings later?
+function mdxJsxTextElementToHtml(
+  element: MdxJsxTextElement,
+  toString: (param: unknown) => string, // TODO weird but works
+): string {
+  const tag = element.name;
+
+  const attributes = element.attributes.filter(
+    (child): child is MdxJsxAttribute => child.type === 'mdxJsxAttribute',
+  );
+
+  const classAttribute =
+    attributes.find((attr) => attr.name === 'className') ??
+    attributes.find((attr) => attr.name === 'class');
+
+  const classAttributeString = classAttribute
+    ? `class="${escapeHtml(String(classAttribute.value))}"`
+    : ``;
+
+  const allAttributes = classAttributeString ? ` ${classAttributeString}` : '';
+
+  const content = stringifyContent(element, toString);
+
+  return `<${tag}${allAttributes}>${content}`;
+}
+
+export function toValue(
+  node: PhrasingContent | Heading | MdxJsxTextElement,
+  toString: (param: unknown) => string, // TODO weird but works
+): string {
+  switch (node.type) {
+    case 'mdxJsxTextElement': {
+      return mdxJsxTextElementToHtml(node as MdxJsxTextElement, toString);
+    }
+    case 'text':
+      return escapeHtml(node.value);
+    case 'heading':
+      return stringifyContent(node, toString);
+    case 'inlineCode':
+      return `${escapeHtml(node.value)}`;
+    case 'emphasis':
+      return `${stringifyContent(node, toString)}`;
+    case 'strong':
+      return `${stringifyContent(node, toString)}`;
+    case 'delete':
+      return `${stringifyContent(node, toString)}`;
+    case 'link':
+      return stringifyContent(node, toString);
+    default:
+      return toString(node);
+  }
+}
+
+export function assetRequireAttributeValue(
+  requireString: string,
+  hash: string,
+): MdxJsxAttributeValueExpression {
+  return {
+    type: 'mdxJsxAttributeValueExpression',
+    value: `require("${requireString}").default${hash && ` + '${hash}'`}`,
+    data: {
+      estree: {
+        type: 'Program',
+        body: [
+          {
+            type: 'ExpressionStatement',
+            expression: {
+              type: 'BinaryExpression',
+              left: {
+                type: 'MemberExpression',
+                object: {
+                  type: 'CallExpression',
+                  callee: {
+                    type: 'Identifier',
+                    name: 'require',
+                  },
+                  arguments: [
+                    {
+                      type: 'Literal',
+                      value: requireString,
+                      raw: `"${requireString}"`,
+                    },
+                  ],
+                  optional: false,
+                },
+                property: {
+                  type: 'Identifier',
+                  name: 'default',
+                },
+                computed: false,
+                optional: false,
+              },
+              operator: '+',
+              right: {
+                type: 'Literal',
+                value: hash,
+                raw: `"${hash}"`,
+              },
+            },
+          },
+        ],
+        sourceType: 'module',
+        comments: [],
+      },
+    },
+  };
+}
diff --git a/node_modules/@docusaurus/mdx-loader/src/types.d.mts b/node_modules/@docusaurus/mdx-loader/src/types.d.mts
new file mode 100644
index 00000000..7116f0d1
--- /dev/null
+++ b/node_modules/@docusaurus/mdx-loader/src/types.d.mts
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+import type {WebpackCompilerName} from '@docusaurus/utils';
+
+declare module 'vfile' {
+  /*
+  This map registers the type of the data key of a VFile (TypeScript type).
+  This type can be augmented to register custom data types.
+  See https://github.com/vfile/vfile#datamap
+   */
+  interface DataMap {
+    frontMatter: {[key: string]: unknown};
+    compilerName: WebpackCompilerName;
+    contentTitle?: string;
+  }
+}
+
+declare module 'unist' {
+  interface Data {
+    hName?: string;
+    hProperties?: Record;
+  }
+}
+
+declare module 'mdast' {
+  interface HeadingData {
+    id?: string;
+  }
+}
diff --git a/node_modules/@docusaurus/plugin-google-gtag/LICENSE b/node_modules/@docusaurus/plugin-google-gtag/LICENSE
new file mode 100644
index 00000000..b96dcb04
--- /dev/null
+++ b/node_modules/@docusaurus/plugin-google-gtag/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) Facebook, Inc. and its affiliates.
+
+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.
diff --git a/node_modules/@docusaurus/plugin-google-gtag/README.md b/node_modules/@docusaurus/plugin-google-gtag/README.md
new file mode 100644
index 00000000..3a0b4ce4
--- /dev/null
+++ b/node_modules/@docusaurus/plugin-google-gtag/README.md
@@ -0,0 +1,7 @@
+# `@docusaurus/plugin-google-gtag`
+
+Global Site Tag (gtag.js) plugin for Docusaurus.
+
+## Usage
+
+See [plugin-google-gtag documentation](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-google-gtag).
diff --git a/node_modules/@docusaurus/plugin-google-gtag/node_modules/.bin/docusaurus b/node_modules/@docusaurus/plugin-google-gtag/node_modules/.bin/docusaurus
new file mode 120000
index 00000000..e39be813
--- /dev/null
+++ b/node_modules/@docusaurus/plugin-google-gtag/node_modules/.bin/docusaurus
@@ -0,0 +1 @@
+../../../core/bin/docusaurus.mjs
\ No newline at end of file
diff --git a/node_modules/@docusaurus/plugin-google-gtag/package.json b/node_modules/@docusaurus/plugin-google-gtag/package.json
new file mode 100644
index 00000000..ed6f68eb
--- /dev/null
+++ b/node_modules/@docusaurus/plugin-google-gtag/package.json
@@ -0,0 +1,35 @@
+{
+  "name": "@docusaurus/plugin-google-gtag",
+  "version": "3.0.0",
+  "description": "Global Site Tag (gtag.js) plugin for Docusaurus.",
+  "main": "lib/index.js",
+  "types": "lib/index.d.ts",
+  "scripts": {
+    "build": "tsc --build",
+    "watch": "tsc --build --watch"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/facebook/docusaurus.git",
+    "directory": "packages/docusaurus-plugin-google-gtag"
+  },
+  "license": "MIT",
+  "dependencies": {
+    "@docusaurus/core": "3.0.0",
+    "@docusaurus/types": "3.0.0",
+    "@docusaurus/utils-validation": "3.0.0",
+    "@types/gtag.js": "^0.0.12",
+    "tslib": "^2.6.0"
+  },
+  "peerDependencies": {
+    "react": "^18.0.0",
+    "react-dom": "^18.0.0"
+  },
+  "engines": {
+    "node": ">=18.0"
+  },
+  "gitHead": "ca8b4638c47119d38838656c4a11ee3a5e7ba6f2"
+}
diff --git a/node_modules/@docusaurus/plugin-google-gtag/src/gtag.ts b/node_modules/@docusaurus/plugin-google-gtag/src/gtag.ts
new file mode 100644
index 00000000..dc04ed07
--- /dev/null
+++ b/node_modules/@docusaurus/plugin-google-gtag/src/gtag.ts
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+import type {ClientModule} from '@docusaurus/types';
+
+const clientModule: ClientModule = {
+  onRouteDidUpdate({location, previousLocation}) {
+    if (
+      previousLocation &&
+      (location.pathname !== previousLocation.pathname ||
+        location.search !== previousLocation.search ||
+        location.hash !== previousLocation.hash)
+    ) {
+      // Normally, the document title is updated in the next tick due to how
+      // `react-helmet-async` updates it. We want to send the current document's
+      // title to gtag instead of the old one's, so we use `setTimeout` to defer
+      // execution to the next tick.
+      // See: https://github.com/facebook/docusaurus/issues/7420
+      setTimeout(() => {
+        // Always refer to the variable on window in case it gets overridden
+        // elsewhere.
+        window.gtag(
+          'set',
+          'page_path',
+          location.pathname + location.search + location.hash,
+        );
+        window.gtag('event', 'page_view');
+      });
+    }
+  },
+};
+
+export default clientModule;
diff --git a/node_modules/@docusaurus/plugin-google-gtag/src/index.ts b/node_modules/@docusaurus/plugin-google-gtag/src/index.ts
new file mode 100644
index 00000000..a3ea84dd
--- /dev/null
+++ b/node_modules/@docusaurus/plugin-google-gtag/src/index.ts
@@ -0,0 +1,102 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+import type {LoadContext, Plugin} from '@docusaurus/types';
+import type {PluginOptions, Options} from './options';
+
+function createConfigSnippet({
+  trackingID,
+  anonymizeIP,
+}: {
+  trackingID: string;
+  anonymizeIP: boolean;
+}): string {
+  return `gtag('config', '${trackingID}', { ${
+    anonymizeIP ? "'anonymize_ip': true" : ''
+  } });`;
+}
+
+function createConfigSnippets({
+  trackingID: trackingIDArray,
+  anonymizeIP,
+}: PluginOptions): string {
+  return trackingIDArray
+    .map((trackingID) => createConfigSnippet({trackingID, anonymizeIP}))
+    .join('\n');
+}
+
+export default function pluginGoogleGtag(
+  context: LoadContext,
+  options: PluginOptions,
+): Plugin {
+  const isProd = process.env.NODE_ENV === 'production';
+
+  const firstTrackingId = options.trackingID[0];
+
+  return {
+    name: 'docusaurus-plugin-google-gtag',
+
+    contentLoaded({actions}) {
+      actions.setGlobalData(options);
+    },
+
+    getClientModules() {
+      return isProd ? ['./gtag'] : [];
+    },
+
+    injectHtmlTags() {
+      if (!isProd) {
+        return {};
+      }
+      return {
+        // Gtag includes GA by default, so we also preconnect to
+        // google-analytics.
+        headTags: [
+          {
+            tagName: 'link',
+            attributes: {
+              rel: 'preconnect',
+              href: 'https://www.google-analytics.com',
+            },
+          },
+          {
+            tagName: 'link',
+            attributes: {
+              rel: 'preconnect',
+              href: 'https://www.googletagmanager.com',
+            },
+          },
+          // https://developers.google.com/analytics/devguides/collection/gtagjs/#install_the_global_site_tag
+          {
+            tagName: 'script',
+            attributes: {
+              async: true,
+              // We only include the first tracking id here because google says
+              // we shouldn't install multiple tags/scripts on the same page
+              // Instead we should load one script and use n * gtag("config",id)
+              // See https://developers.google.com/tag-platform/gtagjs/install#add-products
+              src: `https://www.googletagmanager.com/gtag/js?id=${firstTrackingId}`,
+            },
+          },
+          {
+            tagName: 'script',
+            innerHTML: `
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments);}
+              gtag('js', new Date());
+              ${createConfigSnippets(options)};
+              `,
+          },
+        ],
+      };
+    },
+  };
+}
+
+export {validateThemeConfig, validateOptions} from './options';
+
+export type {PluginOptions, Options};
diff --git a/node_modules/@docusaurus/plugin-google-gtag/src/options.ts b/node_modules/@docusaurus/plugin-google-gtag/src/options.ts
new file mode 100644
index 00000000..b2f6fc1b
--- /dev/null
+++ b/node_modules/@docusaurus/plugin-google-gtag/src/options.ts
@@ -0,0 +1,61 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+import {Joi} from '@docusaurus/utils-validation';
+import type {
+  OptionValidationContext,
+  ThemeConfig,
+  ThemeConfigValidationContext,
+} from '@docusaurus/types';
+
+export type PluginOptions = {
+  trackingID: [string, ...string[]];
+  // TODO deprecate anonymizeIP after June 2023
+  // "In Google Analytics 4, IP masking is not necessary
+  // since IP addresses are not logged or stored."
+  // https://support.google.com/analytics/answer/2763052?hl=en
+  anonymizeIP: boolean;
+};
+
+export type Options = {
+  trackingID: string | [string, ...string[]];
+  anonymizeIP?: boolean;
+};
+
+export const DEFAULT_OPTIONS: Partial = {
+  anonymizeIP: false,
+};
+
+const pluginOptionsSchema = Joi.object({
+  // We normalize trackingID as a string[]
+  trackingID: Joi.alternatives()
+    .try(
+      Joi.alternatives().conditional(Joi.string().required(), {
+        then: Joi.custom((val: boolean) => [val]),
+      }),
+      Joi.array().items(Joi.string().required()),
+    )
+    .required(),
+  anonymizeIP: Joi.boolean().default(DEFAULT_OPTIONS.anonymizeIP),
+});
+
+export function validateOptions({
+  validate,
+  options,
+}: OptionValidationContext): PluginOptions {
+  return validate(pluginOptionsSchema, options);
+}
+
+export function validateThemeConfig({
+  themeConfig,
+}: ThemeConfigValidationContext): ThemeConfig {
+  if ('gtag' in themeConfig) {
+    throw new Error(
+      'The "gtag" field in themeConfig should now be specified as option for plugin-google-gtag. More information at https://github.com/facebook/docusaurus/pull/5832.',
+    );
+  }
+  return themeConfig;
+}
diff --git a/node_modules/@docusaurus/plugin-google-gtag/src/types.d.ts b/node_modules/@docusaurus/plugin-google-gtag/src/types.d.ts
new file mode 100644
index 00000000..6f6f99f1
--- /dev/null
+++ b/node_modules/@docusaurus/plugin-google-gtag/src/types.d.ts
@@ -0,0 +1,8 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/// 
diff --git a/node_modules/@docusaurus/react-loadable/LICENSE b/node_modules/@docusaurus/react-loadable/LICENSE
new file mode 100644
index 00000000..7357f538
--- /dev/null
+++ b/node_modules/@docusaurus/react-loadable/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2018-present Jamie Kyle 
+
+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.
diff --git a/node_modules/@docusaurus/react-loadable/README.md b/node_modules/@docusaurus/react-loadable/README.md
new file mode 100644
index 00000000..6b53b928
--- /dev/null
+++ b/node_modules/@docusaurus/react-loadable/README.md
@@ -0,0 +1,1256 @@
+![React Loadable](http://thejameskyle.com/img/react-loadable-header.png)
+
+**IMPORTANT**: this is a minimalistic fork to solve the `componentWillMount` warning for the [facebook/docusaurus](https://github.com/facebook/docusaurus) project. 
+
+We don't plan to maintain this problem, just get rid of the warning.
+
+----
+
+> A higher order component for loading components with dynamic imports.
+
+## Install
+
+```sh
+yarn add react-loadable
+```
+
+## Example
+
+```js
+import Loadable from 'react-loadable';
+import Loading from './my-loading-component';
+
+const LoadableComponent = Loadable({
+  loader: () => import('./my-component'),
+  loading: Loading,
+});
+
+export default class App extends React.Component {
+  render() {
+    return ;
+  }
+}
+```
+
+## Happy Customers:
+
+- ["I'm obsessed with this right now: CRA with React Router v4 and react-loadable. Free code splitting, this is so easy."](https://twitter.com/matzatorski/status/872059865350406144)
+- ["Oh hey - using loadable component I knocked 13K off my initial load. Easy win!"](https://twitter.com/AdamRackis/status/846593080992153600)
+- ["Had a look and its awesome. shaved like 50kb off our main bundle."](https://github.com/quran/quran.com-frontend/pull/701#issuecomment-287908551)
+- ["I've got that server-side rendering + code splitting + PWA ServiceWorker caching setup done 😎 (thanks to react-loadable). Now our frontend is super fast."](https://twitter.com/mxstbr/status/922375575217627136)
+- ["Using react-loadable went from 221.28 KB → 115.76 KB @ main bundle. Fucking awesome and very simple API."](https://twitter.com/evgenyrodionov/status/958821614644269057)
+- ["We've reduced our entry chunk by a lot & reduced initial load time by ~50%!"](https://github.com/jamiebuilds/react-loadable/pull/181)
+- ["React-loadable is killer! We've decreased our load size by over 50kb with only 2 files! Can't wait to see how much lower it will go."](https://github.com/jamiebuilds/react-loadable/pull/180/)
+
+## Users
+
+- [AdHawk / Flooring Stores](https://www.flooringstores.com)
+- [Akutbolig.dk](https://www.akutbolig.dk)
+- [Analog.Cafe](https://www.analog.cafe)
+- [Ambrosus](https://ambrosus.com)
+- [Appbase.io](https://github.com/appbaseio/reactivesearch)
+- [Atlassian](https://www.atlassian.com/)
+- [BBC News](https://github.com/BBC-News/simorgh)
+- [Blytzpay](https://www.blytzpay.com)
+- [ClearTax](https://cleartax.in)
+- [Cloudflare](https://www.cloudflare.com)
+- [Chibaki](https://chibaki.co)
+- [Compass](https://compass.com)
+- [Curio](https://www.curio.org)
+- [Delivery.com](https://www.delivery.com)
+- [Doctor.com](https://www.doctor.com/)
+- [Dollar Shave Club](https://github.com/dollarshaveclub)
+- [Dresez](https://dresez.pk/)
+- [Edcast](https://www.edcast.com/)
+- [Evidation Health](https://evidation.com/)
+- [Flexport](https://flexport.com/)
+- [Flyhomes](https://flyhomes.com)
+- [Gogo](https://gogoair.com)
+- [Gofore](https://gofore.com/en/home/)
+- [Graana](https://www.graana.com/)
+- [Localie](https://localie.co/en)
+- [MediaTek MCS-Lite](https://github.com/MCS-Lite)
+- [NiYO Solutions Inc.](https://www.goniyo.com/)
+- [Officepulse](https://www.officepulse.in/)
+- [PageSpeed Green](https://pagespeed.green/)
+- [Perx](https://www.perxtech.com/)
+- [Plottu](https://public.plottu.com)
+- [reformma](https://reformma.com.br)
+- [Render](https://render.com)
+- [Shift](https://shift.com)
+- [Snipit](https://snipit.io)
+- [Spectrum.chat](https://spectrum.chat)
+- [Superblocks](https://superblocks.com)
+- [Sprint Boards](https://sprintboards.io)
+- [Talentpair](https://talentpair.com)
+- [Tinder](https://tinder.com/)
+- [Unsplash](https://unsplash.com/)
+- [Wave](https://waveapps.com/)
+- [WUZZUF](https://wuzzuf.net/)
+- [Wxb](https://wxb.com/wxpush)
+
+> _If your company or project is using React Loadable, please open a PR and add
+> yourself to this list (in alphabetical order please)_
+
+## Also See:
+
+- [`react-loadable-visibility`](https://github.com/stratiformltd/react-loadable-visibility) - Building on top of and keeping the same API as `react-loadable`, this library enables you to load content that is visible on the screen.
+
+- [`react-loadable-ssr-addon`](https://github.com/themgoncalves/react-loadable-ssr-addon) - Server Side Render add-on for `react-loadable`. Discover & load automatically dynamically all files dependencies, e.g. splitted chunks, css, etc.
+
+

+
+
+ GUIDE +
+
+ Guide +

+ +So you've got your React app, you're bundling it with Webpack, and things are +going smooth. But then one day you notice your app's bundle is getting so big +that it's slowing things down. + +It's time to start code-splitting your app! + +![A single giant bundle vs multiple smaller bundles](http://thejameskyle.com/img/react-loadable-split-bundles.png) + +Code-splitting is the process of taking one large bundle containing your entire +app, and splitting them up into multiple smaller bundles which contain separate +parts of your app. + +This might seem difficult to do, but tools like Webpack have this built in, and +React Loadable is designed to make it super simple. + +### Route-based splitting vs. Component-based splitting + +A common piece of advice you will see is to break your app into separate routes +and load each one asynchronously. This seems to work well enough for many apps– +as a user, clicking a link and waiting for a page to load is a familiar +experience on the web. + +But we can do better than that. + +Using most routing tools for React, a route is simply a component. There's +nothing particularly special about them (Sorry Ryan and Michael– you're what's +special). So what if we optimized for splitting around components instead of +routes? What would that get us? + +![Route vs. component centric code splitting](http://thejameskyle.com/img/react-loadable-component-splitting.png) + +As it turns out: Quite a lot. There are many more places than just routes where +you can pretty easily split apart your app. Modals, tabs, and many more UI +components hide content until the user has done something to reveal it. + +> **Example:** Maybe your app has a map buried inside of a tab component. Why +> would you load a massive mapping library for the parent route every time when +> the user may never go to that tab? + +Not to mention all the places where you can defer loading content until higher +priority content is finished loading. That component at the bottom of your page +which loads a bunch of libraries: Why should that be loaded at the same time as +the content at the top? + +And because routes are just components, we can still easily code-split at the +route level. + +Introducing new code-splitting points in your app should be so easy that you +don't think twice about it. It should be a matter of changing a few lines of +code and everything else should be automated. + +### Introducing React Loadable + +React Loadable is a small library that makes component-centric code splitting +incredibly easy in React. + +`Loadable` is a higher-order component (a function that creates a component) +which lets you dynamically load any module before rendering it into your app. + +Let's imagine two components, one that imports and renders another. + +```js +import Bar from './components/Bar'; + +class Foo extends React.Component { + render() { + return ; + } +} +``` + +Right now we're depending on `Bar` being imported synchronously via `import`, +but we don't need it until we go to render it. So why don't we just defer that? + +Using a **dynamic import** ([a tc39 proposal currently at Stage 3](https://github.com/tc39/proposal-dynamic-import)) +we can modify our component to load `Bar` asynchronously. + +```js +class MyComponent extends React.Component { + state = { + Bar: null + }; + + componentWillMount() { + import('./components/Bar').then(Bar => { + this.setState({ Bar: Bar.default }); + }); + } + + render() { + let {Bar} = this.state; + if (!Bar) { + return
Loading...
; + } else { + return ; + }; + } +} +``` + +But that's a whole bunch of work, and it doesn't even handle a bunch of cases. +What about when `import()` fails? What about server-side rendering? + +Instead you can use `Loadable` to abstract away the problem. + +```js +import Loadable from 'react-loadable'; + +const LoadableBar = Loadable({ + loader: () => import('./components/Bar'), + loading() { + return
Loading...
+ } +}); + +class MyComponent extends React.Component { + render() { + return ; + } +} +``` + +### Automatic code-splitting on `import()` + +When you use `import()` with Webpack 2+, it will +[automatically code-split](https://webpack.js.org/guides/code-splitting/) for +you with no additional configuration. + +This means that you can easily experiment with new code splitting points just +by switching to `import()` and using React Loadable. Figure out what performs +best for your app. + +### Creating a great "Loading..." Component + +Rendering a static "Loading..." doesn't communicate enough to the user. You +also need to think about error states, timeouts, and making it a nice +experience. + +```js +function Loading() { + return
Loading...
; +} + +Loadable({ + loader: () => import('./WillFailToLoad'), // oh no! + loading: Loading, +}); +``` + +To make this all nice, your [loading component](#loadingcomponent) receives a +couple different props. + +#### Loading error states + +When your [`loader`](optsloader) fails, your [loading component](#loadingcomponent) +will receive an [`error`](propserror) prop which will be an `Error` object (otherwise it +will be `null`). + +```js +function Loading(props) { + if (props.error) { + return
Error!
; + } else { + return
Loading...
; + } +} +``` + +#### Avoiding _Flash Of Loading Component_ + +Sometimes components load really quickly (<200ms) and the loading screen only +quickly flashes on the screen. + +A number of user studies have proven that this causes users to perceive things +taking longer than they really have. If you don't show anything, users perceive +it as being faster. + +So your loading component will also get a [`pastDelay` prop](#propspastdelay) +which will only be true once the component has taken longer to load than a set +[delay](#optsdelay). + +```js +function Loading(props) { + if (props.error) { + return
Error!
; + } else if (props.pastDelay) { + return
Loading...
; + } else { + return null; + } +} +``` + +This delay defaults to `200ms` but you can also customize the +[delay](#optsdelay) in `Loadable`. + +```js +Loadable({ + loader: () => import('./components/Bar'), + loading: Loading, + delay: 300, // 0.3 seconds +}); +``` + +#### Timing out when the `loader` is taking too long + +Sometimes network connections suck and never resolve or fail, they just hang +there forever. This sucks for the user because they won't know if it should +always take this long, or if they should try refreshing. + +The [loading component](#loadingcomponent) will receive a +[`timedOut` prop](#propstimedout) which will be set to `true` when the +[`loader`](#optsloader) has timed out. + +```js +function Loading(props) { + if (props.error) { + return
Error!
; + } else if (props.timedOut) { + return
Taking a long time...
; + } else if (props.pastDelay) { + return
Loading...
; + } else { + return null; + } +} +``` + +However, this feature is disabled by default. To turn it on, you can pass a +[`timeout` option](#optstimeout) to `Loadable`. + +```js +Loadable({ + loader: () => import('./components/Bar'), + loading: Loading, + timeout: 10000, // 10 seconds +}); +``` + +### Customizing rendering + +By default `Loadable` will render the `default` export of the returned module. +If you want to customize this behavior you can use the +[`render` option](#optsrender). + +```js +Loadable({ + loader: () => import('./my-component'), + render(loaded, props) { + let Component = loaded.namedExport; + return ; + } +}); +``` + +### Loading multiple resources + +Technically you can do whatever you want within `loader()` as long as it +returns a promise and [you're able to render something](#customizing-rendering). +But writing it out can be a bit annoying. + +To make it easier to load multiple resources in parallel, you can use +[`Loadable.Map`](#loadablemap). + +```js +Loadable.Map({ + loader: { + Bar: () => import('./Bar'), + i18n: () => fetch('./i18n/bar.json').then(res => res.json()), + }, + render(loaded, props) { + let Bar = loaded.Bar.default; + let i18n = loaded.i18n; + return ; + }, +}); +``` + +When using `Loadable.Map` the [`render()` method](#optsrender) is required. It +will be passed a `loaded` param which will be an object matching the shape of +your `loader`. + +### Preloading + +As an optimization, you can also decide to preload a component before it gets +rendered. + +For example, if you need to load a new component when a button gets pressed, +you could start preloading the component when the user hovers over the button. + +The component created by `Loadable` exposes a +[static `preload` method](#loadablecomponentpreload) which does exactly this. + +```js +const LoadableBar = Loadable({ + loader: () => import('./Bar'), + loading: Loading, +}); + +class MyComponent extends React.Component { + state = { showBar: false }; + + onClick = () => { + this.setState({ showBar: true }); + }; + + onMouseOver = () => { + LoadableBar.preload(); + }; + + render() { + return ( +
+ + {this.state.showBar && } +
+ ) + } +} +``` + +

+
+
+ SERVER SIDE RENDERING +
+
+ Server-Side Rendering +

+ +When you go to render all these dynamically loaded components, what you'll get +is a whole bunch of loading screens. + +This really sucks, but the good news is that React Loadable is designed to +make server-side rendering work as if nothing is being loaded dynamically. + +Here's our starting server using [Express](https://expressjs.com/). + +```js +import express from 'express'; +import React from 'react'; +import ReactDOMServer from 'react-dom/server'; +import App from './components/App'; + +const app = express(); + +app.get('/', (req, res) => { + res.send(` + + + ... + +
${ReactDOMServer.renderToString()}
+ + + + `); +}); + +app.listen(3000, () => { + console.log('Running on http://localhost:3000/'); +}); +``` + +### Preloading all your loadable components on the server + +The first step to rendering the correct content from the server is to make sure +that all of your loadable components are already loaded when you go to render +them. + +To do this, you can use the [`Loadable.preloadAll`](#loadablepreloadall) +method. It returns a promise that will resolve when all your loadable +components are ready. + +```js +Loadable.preloadAll().then(() => { + app.listen(3000, () => { + console.log('Running on http://localhost:3000/'); + }); +}); +``` + +### Picking up a server-side rendered app on the client + +This is where things get a little bit tricky. So let's prepare ourselves +little bit. + +In order for us to pick up what was rendered from the server we need to have +all the same code that was used to render on the server. + +To do this, we first need our loadable components telling us which modules they +are rendering. + +#### Declaring which modules are being loaded + +There are two options in [`Loadable`](#loadable) and +[`Loadable.Map`](#loadablemap) which are used to tell us which modules our +component is trying to load: [`opts.modules`](#optsmodules) and +[`opts.webpack`](#optswebpack). + +```js +Loadable({ + loader: () => import('./Bar'), + modules: ['./Bar'], + webpack: () => [require.resolveWeak('./Bar')], +}); +``` + +But don't worry too much about these options. React Loadable includes a +[Babel plugin](#babel-plugin) to add them for you. + +Just add the `react-loadable/babel` plugin to your Babel config: + +```json +{ + "plugins": [ + "react-loadable/babel" + ] +} +``` + +Now these options will automatically be provided. + +For typescript you can use [react-loadable-ts-transformer](https://github.com/stushurik/react-loadable-ts-transformer) which is a ts analog of react-loadable/babel plugin. + +#### Finding out which dynamic modules were rendered + +Next we need to find out which modules were actually rendered when a request +comes in. + +For this, there is [`Loadable.Capture`](#loadablecapture) component which can +be used to collect all the modules that were rendered. + +```js +import Loadable from 'react-loadable'; + +app.get('/', (req, res) => { + let modules = []; + + let html = ReactDOMServer.renderToString( + modules.push(moduleName)}> + + + ); + + console.log(modules); + + res.send(`...${html}...`); +}); +``` + +#### Mapping loaded modules to bundles + +In order to make sure that the client loads all the modules that were rendered +server-side, we'll need to map them to the bundles that Webpack created. + +This comes in two parts. + +First we need Webpack to tell us which bundles each module lives inside. For +this there is the [React Loadable Webpack plugin](#webpack-plugin). + +Import the `ReactLoadablePlugin` from `react-loadable/webpack` and include it +in your webpack config. Pass it a `filename` for where to store the JSON data +about our bundles. + +```js +// webpack.config.js +import { ReactLoadablePlugin } from 'react-loadable/webpack'; + +export default { + plugins: [ + new ReactLoadablePlugin({ + filename: './dist/react-loadable.json', + }), + ], +}; +``` + +Then we'll go back to our server and use this data to convert our modules to +bundles. + +To convert from modules to bundles, import the [`getBundles`](#getbundles) +method from `react-loadable/webpack` and the data from Webpack. + +```js +import Loadable from 'react-loadable'; +import { getBundles } from 'react-loadable/webpack' +import stats from './dist/react-loadable.json'; + +app.get('/', (req, res) => { + let modules = []; + + let html = ReactDOMServer.renderToString( + modules.push(moduleName)}> + + + ); + + let bundles = getBundles(stats, modules); + + // ... +}); +``` + +We can then render these bundles into ` + + ${bundles.map(bundle => { + return `` + // alternatively if you are using publicPath option in webpack config + // you can use the publicPath value from bundle, e.g: + // return `` + }).join('\n')} + + + +`); +``` + +#### Preloading ready loadable components on the client + +We can use the [`Loadable.preloadReady()`](#loadablepreloadready) method on the +client to preload the loadable components that were included on the page. + +Like [`Loadable.preloadAll()`](#loadablepreloadall), it returns a promise, +which on resolution means that we can hydrate our app. + +```js +// src/entry.js +import React from 'react'; +import ReactDOM from 'react-dom'; +import Loadable from 'react-loadable'; +import App from './components/App'; + +window.main = () => { + Loadable.preloadReady().then(() => { + ReactDOM.hydrate(, document.getElementById('app')); + }); +}; + +``` + +

+ Now server-side rendering should work perfectly! +

+ +

+
+
+ API DOCS +
+
+ API Docs +

+ +### `Loadable` + +A higher-order component for dynamically [loading](#optsloader) a module before +[rendering](#optsrender) it, a [loading](#opts.loading) component is rendered +while the module is unavailable. + +```js +const LoadableComponent = Loadable({ + loader: () => import('./Bar'), + loading: Loading, + delay: 200, + timeout: 10000, +}); +``` + +This returns a [LoadableComponent](#loadablecomponent). + +### `Loadable.Map` + +A higher-order component that allows you to load multiple resources in parallel. + +Loadable.Map's [`opts.loader`](#optsloader) accepts an object of functions, and +needs a [`opts.render`](#optsrender) method. + +```js +Loadable.Map({ + loader: { + Bar: () => import('./Bar'), + i18n: () => fetch('./i18n/bar.json').then(res => res.json()), + }, + render(loaded, props) { + let Bar = loaded.Bar.default; + let i18n = loaded.i18n; + return ; + } +}); +``` + +When using `Loadable.Map` the `render()` method's `loaded` param will be an +object with the same shape as your `loader`. + +### `Loadable` and `Loadable.Map` Options + +#### `opts.loader` + +A function returning a promise that loads your module. + +```js +Loadable({ + loader: () => import('./Bar'), +}); +``` + +When using with [`Loadable.Map`](#loadablemap) this accepts an object of these +types of functions. + +```js +Loadable.Map({ + loader: { + Bar: () => import('./Bar'), + i18n: () => fetch('./i18n/bar.json').then(res => res.json()), + }, +}); +``` + +When using with `Loadable.Map` you'll also need to pass a +[`opts.render`](#optsrender) function. + +#### `opts.loading` + +A [`LoadingComponent`](#loadingcomponent) that renders while a module is +loading or when it errors. + +```js +Loadable({ + loading: LoadingComponent, +}); +``` + +This option is required, if you don't want to render anything, return `null`. + +```js +Loadable({ + loading: () => null, +}); +``` + +#### `opts.delay` + +Time to wait (in milliseconds) before passing +[`props.pastDelay`](#propspastdelay) to your [`loading`](#optsloading) +component. This defaults to `200`. + +```js +Loadable({ + delay: 200 +}); +``` + +[Read more about delays](#avoiding-flash-of-loading-component). + +#### `opts.timeout` + +Time to wait (in milliseconds) before passing +[`props.timedOut`](#propstimedout) to your [`loading`](#optsloading) component. +This is turned off by default. + +```js +Loadable({ + timeout: 10000 +}); +``` + +[Read more about timeouts](#timing-out-when-the-loader-is-taking-too-long). + +#### `opts.render` + +A function to customize the rendering of loaded modules. + +Receives `loaded` which is the resolved value of [`opts.loader`](#optsloader) +and `props` which are the props passed to the +[`LoadableComponent`](#loadablecomponent). + +```js +Loadable({ + render(loaded, props) { + let Component = loaded.default; + return ; + } +}); +``` + +#### `opts.webpack` + +An optional function which returns an array of Webpack module ids which you can +get with `require.resolveWeak`. + +```js +Loadable({ + loader: () => import('./Foo'), + webpack: () => [require.resolveWeak('./Foo')], +}); +``` + +This option can be automated with the [Babel Plugin](#babel-plugin). + +#### `opts.modules` + +An optional array with module paths for your imports. + +```js +Loadable({ + loader: () => import('./my-component'), + modules: ['./my-component'], +}); +``` + +This option can be automated with the [Babel Plugin](#babel-plugin). + +### `LoadableComponent` + +This is the component returned by `Loadable` and `Loadable.Map`. + +```js +const LoadableComponent = Loadable({ + // ... +}); +``` + +Props passed to this component will be passed straight through to the +dynamically loaded component via [`opts.render`](#optsrender). + +#### `LoadableComponent.preload()` + +This is a static method on [`LoadableComponent`](#loadablecomponent) which can +be used to load the component ahead of time. + +```js +const LoadableComponent = Loadable({...}); + +LoadableComponent.preload(); +``` + +This returns a promise, but you should avoid waiting for that promise to +resolve to update your UI. In most cases it creates a bad user experience. + +[Read more about preloading](#preloading). + +### `LoadingComponent` + +This is the component you pass to [`opts.loading`](#optsloading). + +```js +function LoadingComponent(props) { + if (props.error) { + // When the loader has errored + return
Error!
; + } else if (props.timedOut) { + // When the loader has taken longer than the timeout + return
Taking a long time...
; + } else if (props.pastDelay) { + // When the loader has taken longer than the delay + return
Loading...
; + } else { + // When the loader has just started + return null; + } +} + +Loadable({ + loading: LoadingComponent, +}); +``` + +[Read more about loading components](#creating-a-great-loading-component) + +#### `props.error` + +An `Error` object passed to [`LoadingComponent`](#loadingcomponent) when the +[`loader`](#optsloader) has failed. When there is no error, `null` is +passed. + +```js +function LoadingComponent(props) { + if (props.error) { + return
Error!
; + } else { + return
Loading...
; + } +} +``` + +[Read more about errors](#loading-error-states). + +#### `props.retry` + +A function prop passed to [`LoadingComponent`](#loadingcomponent) when the +[`loader`](#optsloader) has failed, used to retry loading the component. + +```js +function LoadingComponent(props) { + if (props.error) { + return
Error!
; + } else { + return
Loading...
; + } +} +``` + +[Read more about errors](#loading-error-states). + +#### `props.timedOut` + +A boolean prop passed to [`LoadingComponent`](#loadingcomponent) after a set +[`timeout`](#optstimeout). + +```js +function LoadingComponent(props) { + if (props.timedOut) { + return
Taking a long time...
; + } else { + return
Loading...
; + } +} +``` + +[Read more about timeouts](#timing-out-when-the-loader-is-taking-too-long). + +#### `props.pastDelay` + +A boolean prop passed to [`LoadingComponent`](#loadingcomponent) after a set +[`delay`](#optsdelay). + +```js +function LoadingComponent(props) { + if (props.pastDelay) { + return
Loading...
; + } else { + return null; + } +} +``` + +[Read more about delays](#avoiding-flash-of-loading-component). + +### `Loadable.preloadAll()` + +This will call all of the +[`LoadableComponent.preload`](#loadablecomponentpreload) methods recursively +until they are all resolved. Allowing you to preload all of your dynamic +modules in environments like the server. + +```js +Loadable.preloadAll().then(() => { + app.listen(3000, () => { + console.log('Running on http://localhost:3000/'); + }); +}); +``` + +It's important to note that this requires that you declare all of your loadable +components when modules are initialized rather than when your app is being +rendered. + +**Good:** + +```js +// During module initialization... +const LoadableComponent = Loadable({...}); + +class MyComponent extends React.Component { + componentDidMount() { + // ... + } +} +``` + +**Bad:** + +```js +// ... + +class MyComponent extends React.Component { + componentDidMount() { + // During app render... + const LoadableComponent = Loadable({...}); + } +} +``` + +> **Note:** `Loadable.preloadAll()` will not work if you have more than one +> copy of `react-loadable` in your app. + +[Read more about preloading on the server](#preloading-all-your-loadable-components-on-the-server). + +### `Loadable.preloadReady()` + +Check for modules that are already loaded in the browser and call the matching +[`LoadableComponent.preload`](#loadablecomponentpreload) methods. + +```js +Loadable.preloadReady().then(() => { + ReactDOM.hydrate(, document.getElementById('app')); +}); +``` + +[Read more about preloading on the client](#waiting-to-render-on-the-client-until-all-the-bundles-are-loaded). + +### `Loadable.Capture` + +A component for reporting which modules were rendered. + +Accepts a `report` prop which is called for every `moduleName` that is +rendered via React Loadable. + +```js +let modules = []; + +let html = ReactDOMServer.renderToString( + modules.push(moduleName)}> + + +); + +console.log(modules); +``` + +[Read more about capturing rendered modules](#finding-out-which-dynamic-modules-were-rendered). + +## Babel Plugin + +Providing [`opts.webpack`](#optswebpack) and [`opts.modules`](#optsmodules) for +every loadable component is a lot of manual work to remember to do. + +Instead you can add the Babel plugin to your config and it will automate it for +you: + +```json +{ + "plugins": ["react-loadable/babel"] +} +``` + +**Input** + +```js +import Loadable from 'react-loadable'; + +const LoadableMyComponent = Loadable({ + loader: () => import('./MyComponent'), +}); + +const LoadableComponents = Loadable.Map({ + loader: { + One: () => import('./One'), + Two: () => import('./Two'), + }, +}); +``` + +**Output** + +```js +import Loadable from 'react-loadable'; +import path from 'path'; + +const LoadableMyComponent = Loadable({ + loader: () => import('./MyComponent'), + webpack: () => [require.resolveWeak('./MyComponent')], + modules: [path.join(__dirname, './MyComponent')], +}); + +const LoadableComponents = Loadable.Map({ + loader: { + One: () => import('./One'), + Two: () => import('./Two'), + }, + webpack: () => [require.resolveWeak('./One'), require.resolveWeak('./Two')], + modules: [path.join(__dirname, './One'), path.join(__dirname, './Two')], +}); +``` + +[Read more about declaring modules](#declaring-which-modules-are-being-loaded). + +## Webpack Plugin + +In order to [send the right bundles down](#mapping-loaded-modules-to-bundles) +when rendering server-side, you'll need the React Loadable Webpack plugin  +to provide you with a mapping of modules to bundles. + +```js +// webpack.config.js +import { ReactLoadablePlugin } from 'react-loadable/webpack'; + +export default { + plugins: [ + new ReactLoadablePlugin({ + filename: './dist/react-loadable.json', + }), + ], +}; +``` + +This will create a file (`opts.filename`) which you can import to map modules +to bundles. + +[Read more about mapping modules to bundles](#mapping-loaded-modules-to-bundles). + +### `getBundles` + +A method exported by `react-loadable/webpack` for converting modules to +bundles. + +```js +import { getBundles } from 'react-loadable/webpack'; + +let bundles = getBundles(stats, modules); +``` + +[Read more about mapping modules to bundles](#mapping-loaded-modules-to-bundles). + +

+
+
+ FAQ +
+
+ FAQ +

+ +### How do I avoid repetition? + +Specifying the same `loading` component or `delay` every time you use +`Loadable()` gets repetitive fast. Instead you can wrap `Loadable` with your +own Higher-Order Component (HOC) to set default options. + +```js +import Loadable from 'react-loadable'; +import Loading from './my-loading-component'; + +export default function MyLoadable(opts) { + return Loadable(Object.assign({ + loading: Loading, + delay: 200, + timeout: 10000, + }, opts)); +}; +``` + +Then you can just specify a `loader` when you go to use it. + +```js +import MyLoadable from './MyLoadable'; + +const LoadableMyComponent = MyLoadable({ + loader: () => import('./MyComponent'), +}); + +export default class App extends React.Component { + render() { + return ; + } +} +``` + +Unfortunately at the moment using wrapped Loadable breaks [react-loadable/babel](#babel-plugin) so in such case you have to add required properties (`modules`, `webpack`) manually. + +```js +import MyLoadable from './MyLoadable'; + +const LoadableMyComponent = MyLoadable({ + loader: () => import('./MyComponent'), + modules: ['./MyComponent'], + webpack: () => [require.resolveWeak('./MyComponent')], +}); + +export default class App extends React.Component { + render() { + return ; + } +} +``` + +### How do I handle other styles `.css` or sourcemaps `.map` with server-side rendering? + +When you call [`getBundles`](#getbundles), it may return file types other than +JavaScript depending on your Webpack configuration. + +To handle this, you should manually filter down to the file extensions that +you care about: + +```js +let bundles = getBundles(stats, modules); + +let styles = bundles.filter(bundle => bundle.file.endsWith('.css')); +let scripts = bundles.filter(bundle => bundle.file.endsWith('.js')); + +res.send(` + + + + ... + ${styles.map(style => { + return `` + }).join('\n')} + + +
${html}
+ + ${scripts.map(script => { + return `` + }).join('\n')} + + +`); +``` diff --git a/node_modules/@docusaurus/react-loadable/babel.js b/node_modules/@docusaurus/react-loadable/babel.js new file mode 100644 index 00000000..600871d5 --- /dev/null +++ b/node_modules/@docusaurus/react-loadable/babel.js @@ -0,0 +1 @@ +module.exports = require('./lib/babel'); diff --git a/node_modules/@docusaurus/react-loadable/index.d.ts b/node_modules/@docusaurus/react-loadable/index.d.ts new file mode 100644 index 00000000..e5f01892 --- /dev/null +++ b/node_modules/@docusaurus/react-loadable/index.d.ts @@ -0,0 +1,194 @@ +// Type definitions for react-loadable 5.5 +// Project: https://github.com/thejameskyle/react-loadable#readme +// Definitions by: Jessica Franco +// Oden S. +// Ian Ker-Seymer +// Tomek Łaziuk +// Ian Mobley +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 3.7 + +/// + +declare namespace LoadableExport { + interface LoadingComponentProps { + isLoading: boolean; + pastDelay: boolean; + timedOut: boolean; + error: any; + retry: () => void; + } + + type Options = OptionsWithoutRender | OptionsWithRender; + + interface CommonOptions { + /** + * React component displayed after delay until loader() succeeds. Also responsible for displaying errors. + * + * If you don't want to render anything you can pass a function that returns null + * (this is considered a valid React component). + */ + loading: React.ComponentType; + /** + * Defaults to 200, in milliseconds. + * + * Only show the loading component if the loader() has taken this long to succeed or error. + */ + delay?: number | false | null | undefined; + /** + * Disabled by default. + * + * After the specified time in milliseconds passes, the component's `timedOut` prop will be set to true. + */ + timeout?: number | false | null | undefined; + + /** + * Optional array of module paths that `Loadable.Capture`'s `report` function will be applied on during + * server-side rendering. This helps the server know which modules were imported/used during SSR. + * ```ts + * Loadable({ + * loader: () => import('./my-component'), + * modules: ['./my-component'], + * }); + * ``` + */ + modules?: string[] | undefined; + + /** + * An optional function which returns an array of Webpack module ids which you can get + * with require.resolveWeak. This is used by the client (inside `Loadable.preloadReady`) to + * guarantee each webpack module is preloaded before the first client render. + * ```ts + * Loadable({ + * loader: () => import('./Foo'), + * webpack: () => [require.resolveWeak('./Foo')], + * }); + * ``` + */ + webpack?: (() => Array) | undefined; + } + + interface OptionsWithoutRender extends CommonOptions { + /** + * Function returning a promise which returns a React component displayed on success. + * + * Resulting React component receives all the props passed to the generated component. + */ + loader(): Promise | { default: React.ComponentType }>; + } + + interface OptionsWithRender extends CommonOptions { + /** + * Function returning a promise which returns an object to be passed to `render` on success. + */ + loader(): Promise; + /** + * If you want to customize what gets rendered from your loader you can also pass `render`. + * + * Note: If you want to load multiple resources at once, you can also use `Loadable.Map`. + * + * ```ts + * Loadable({ + * // ... + * render(loaded, props) { + * const Component = loaded.default; + * return + * } + * }); + * ``` + */ + render(loaded: Exports, props: Props): React.ReactNode; + + // NOTE: render is not optional if the loader return type is not compatible with the type + // expected in `OptionsWithoutRender`. If you do not want to provide a render function, ensure that your + // function is returning a promise for a React.ComponentType or is the result of import()ing a module + // that has a component as its `default` export. + } + + interface OptionsWithMap extends CommonOptions { + /** + * An object containing functions which return promises, which resolve to an object to be passed to `render` on success. + */ + loader: { + [P in keyof Exports]: () => Promise + }; + /** + * If you want to customize what gets rendered from your loader you can also pass `render`. + * + * Note: If you want to load multiple resources at once, you can also use `Loadable.Map`. + * + * ```ts + * Loadable({ + * // ... + * render(loaded, props) { + * const Component = loaded.default; + * return + * } + * }); + * ``` + */ + render(loaded: Exports, props: Props): React.ReactNode; + } + + interface LoadableComponent { + /** + * The generated component has a static method preload() for calling the loader function ahead of time. + * This is useful for scenarios where you think the user might do something next and want to load the + * next component eagerly. + * + * Note: preload() intentionally does not return a promise. You should not be depending on the timing of + * preload(). It's meant as a performance optimization, not for creating UI logic. + */ + preload(): void; + } + + interface LoadableCaptureProps { + /** + * Function called for every moduleName that is rendered via React Loadable. + */ + report: (moduleName: string) => void; + } + + interface Loadable { + (options: Options): React.ComponentType & LoadableComponent; + Map(options: OptionsWithMap): React.ComponentType & LoadableComponent; + + /** + * This will call all of the LoadableComponent.preload methods recursively until they are all + * resolved. Allowing you to preload all of your dynamic modules in environments like the server. + * ```ts + * Loadable.preloadAll().then(() => { + * app.listen(3000, () => { + * console.log('Running on http://localhost:3000/'); + * }); + * }); + * ``` + */ + preloadAll(): Promise; + + /** + * Check for modules that are already loaded in the browser and call the matching + * `LoadableComponent.preload` methods. + * ```ts + * window.main = () => { + * Loadable.preloadReady().then(() => { + * ReactDOM.hydrate( + * , + * document.getElementById('app'), + * ); + * }); + * }; + * ``` + */ + preloadReady(): Promise; + + Capture: React.ComponentType; + } +} + +declare const LoadableExport: LoadableExport.Loadable; + +/* tslint:disable-next-line:no-declare-current-package no-single-declare-module */ +declare module "react-loadable" { + export = LoadableExport; +} diff --git a/node_modules/@docusaurus/react-loadable/package.json b/node_modules/@docusaurus/react-loadable/package.json new file mode 100644 index 00000000..9c16131a --- /dev/null +++ b/node_modules/@docusaurus/react-loadable/package.json @@ -0,0 +1,54 @@ +{ + "name": "@docusaurus/react-loadable", + "publishConfig": { + "access": "public" + }, + "version": "5.5.2", + "description": "A higher order component for loading components with promises", + "main": "lib/index.js", + "types": "index.d.ts", + "author": "James Kyle ", + "license": "MIT", + "repository": "thejameskyle/react-loadable", + "files": [ + "index.d.ts", + "babel.js", + "webpack.js", + "lib/**" + ], + "scripts": { + "test": "jest --coverage", + "build": "babel src -d lib", + "start": "yarn build && webpack && babel-node example/server.js", + "prepare": "yarn build" + }, + "dependencies": { + "@types/react": "*", + "prop-types": "^15.6.2" + }, + "devDependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@babel/node": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.1.0", + "@babel/plugin-transform-async-to-generator": "^7.1.0", + "@babel/plugin-transform-object-assign": "^7.0.0", + "@babel/preset-env": "^7.1.0", + "@babel/preset-react": "^7.0.0", + "babel-core": "^7.0.0-bridge.0", + "babel-jest": "^23.6.0", + "babel-loader": "^8.0.4", + "babel-plugin-dynamic-import-node": "^2.2.0", + "babel-plugin-module-resolver": "^3.1.1", + "express": "^4.16.4", + "flow-bin": "^0.83.0", + "jest": "^23.6.0", + "react": "^16.5.2", + "react-dom": "^16.5.2", + "react-test-renderer": "^16.5.2", + "webpack": "^4.20.2" + }, + "peerDependencies": { + "react": "*" + } +} diff --git a/node_modules/@docusaurus/react-loadable/webpack.js b/node_modules/@docusaurus/react-loadable/webpack.js new file mode 100644 index 00000000..1e5ce316 --- /dev/null +++ b/node_modules/@docusaurus/react-loadable/webpack.js @@ -0,0 +1 @@ +module.exports = require('./lib/webpack'); diff --git a/node_modules/@docusaurus/types/LICENSE b/node_modules/@docusaurus/types/LICENSE new file mode 100644 index 00000000..b96dcb04 --- /dev/null +++ b/node_modules/@docusaurus/types/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +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. diff --git a/node_modules/@docusaurus/types/README.md b/node_modules/@docusaurus/types/README.md new file mode 100644 index 00000000..9bf48a1c --- /dev/null +++ b/node_modules/@docusaurus/types/README.md @@ -0,0 +1,3 @@ +# `@docusaurus/types` + +Common types for Docusaurus packages. diff --git a/node_modules/@docusaurus/types/node_modules/.bin/webpack b/node_modules/@docusaurus/types/node_modules/.bin/webpack new file mode 120000 index 00000000..324aada8 --- /dev/null +++ b/node_modules/@docusaurus/types/node_modules/.bin/webpack @@ -0,0 +1 @@ +../../../../webpack/bin/webpack.js \ No newline at end of file diff --git a/node_modules/@docusaurus/types/package.json b/node_modules/@docusaurus/types/package.json new file mode 100644 index 00000000..63bd6f74 --- /dev/null +++ b/node_modules/@docusaurus/types/package.json @@ -0,0 +1,30 @@ +{ + "name": "@docusaurus/types", + "version": "3.0.0", + "description": "Common types for Docusaurus packages.", + "types": "./src/index.d.ts", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/facebook/docusaurus.git", + "directory": "packages/docusaurus-types" + }, + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "gitHead": "ca8b4638c47119d38838656c4a11ee3a5e7ba6f2" +} diff --git a/node_modules/@docusaurus/types/src/clientModule.d.ts b/node_modules/@docusaurus/types/src/clientModule.d.ts new file mode 100644 index 00000000..07c0ddf3 --- /dev/null +++ b/node_modules/@docusaurus/types/src/clientModule.d.ts @@ -0,0 +1,19 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import type {Location} from 'history'; + +export type ClientModule = { + onRouteDidUpdate?: (args: { + previousLocation: Location | null; + location: Location; + }) => (() => void) | void; + onRouteUpdate?: (args: { + previousLocation: Location | null; + location: Location; + }) => (() => void) | void; +}; diff --git a/node_modules/@docusaurus/types/src/config.d.ts b/node_modules/@docusaurus/types/src/config.d.ts new file mode 100644 index 00000000..3a7bb99a --- /dev/null +++ b/node_modules/@docusaurus/types/src/config.d.ts @@ -0,0 +1,347 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import type {RuleSetRule} from 'webpack'; +import type {Required as RequireKeys, DeepPartial} from 'utility-types'; +import type {I18nConfig} from './i18n'; +import type {PluginConfig, PresetConfig, HtmlTagObject} from './plugin'; + +export type ReportingSeverity = 'ignore' | 'log' | 'warn' | 'throw'; + +export type ThemeConfig = { + [key: string]: unknown; +}; + +export type MarkdownPreprocessor = (args: { + filePath: string; + fileContent: string; +}) => string; + +export type MDX1CompatOptions = { + comments: boolean; + admonitions: boolean; + headingIds: boolean; +}; + +export type MarkdownConfig = { + /** + * The Markdown format to use by default. + * + * This is the format passed down to the MDX compiler, impacting the way the + * content is parsed. + * + * Possible values: + * - `'mdx'`: use the MDX format (JSX support) + * - `'md'`: use the CommonMark format (no JSX support) + * - `'detect'`: select the format based on file extension (.md / .mdx) + * + * @see https://mdxjs.com/packages/mdx/#optionsformat + * @default 'mdx' + */ + format: 'mdx' | 'md' | 'detect'; + + /** + * Allow mermaid language code blocks to be rendered into Mermaid diagrams: + * + * - `true`: code blocks with language mermaid will be rendered. + * - `false` | `undefined` (default): code blocks with language mermaid + * will be left as code blocks. + * + * @see https://docusaurus.io/docs/markdown-features/diagrams/ + * @default false + */ + mermaid: boolean; + + /** + * Gives opportunity to preprocess the MDX string content before compiling. + * A good escape hatch that can be used to handle edge cases. + * + * @param args + */ + preprocessor?: MarkdownPreprocessor; + + /** + * Set of flags make it easier to upgrade from MDX 1 to MDX 2 + * See also https://github.com/facebook/docusaurus/issues/4029 + */ + mdx1Compat: MDX1CompatOptions; +}; + +/** + * Docusaurus config, after validation/normalization. + */ +export type DocusaurusConfig = { + /** + * Title for your website. Will be used in metadata and as browser tab title. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#title + */ + title: string; + /** + * URL for your website. This can also be considered the top-level hostname. + * For example, `https://facebook.github.io` is the URL of + * https://facebook.github.io/metro/, and `https://docusaurus.io` is the URL + * for https://docusaurus.io. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#url + */ + url: string; + /** + * Can be considered as the path after the host. For example, `/metro/` is the + * base URL of https://facebook.github.io/metro/. For URLs that have no path, + * it should be set to `/`. Always has both leading and trailing slash. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#baseUrl + */ + baseUrl: string; + /** + * Path to your site favicon; must be a URL that can be used in link's href. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#favicon + */ + favicon?: string; + /** + * Allow to customize the presence/absence of a trailing slash at the end of + * URLs/links, and how static HTML files are generated: + * + * - `undefined` (default): keeps URLs untouched, and emit + * `/docs/myDoc/index.html` for `/docs/myDoc.md` + * - `true`: add trailing slashes to URLs/links, and emit + * `/docs/myDoc/index.html` for `/docs/myDoc.md` + * - `false`: remove trailing slashes from URLs/links, and emit + * `/docs/myDoc.html` for `/docs/myDoc.md` + * + * @see https://github.com/slorber/trailing-slash-guide + * @see https://docusaurus.io/docs/api/docusaurus-config#trailingSlash + * @default undefined + */ + trailingSlash: boolean | undefined; + /** + * The i18n configuration object to [localize your + * site](https://docusaurus.io/docs/i18n/introduction). + * + * @see https://docusaurus.io/docs/api/docusaurus-config#i18n + */ + i18n: I18nConfig; + /** + * This option adds `` to + * every page to tell search engines to avoid indexing your site. + * + * @see https://moz.com/learn/seo/robots-meta-directives + * @see https://docusaurus.io/docs/api/docusaurus-config#noIndex + * @default false + */ + noIndex: boolean; + /** + * The behavior of Docusaurus when it detects any broken link. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#onBrokenLinks + * @default "throw" + */ + onBrokenLinks: ReportingSeverity; + /** + * The behavior of Docusaurus when it detects any broken markdown link. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#onBrokenMarkdownLinks + * @default "warn" + */ + onBrokenMarkdownLinks: ReportingSeverity; + /** + * The behavior of Docusaurus when it detects any [duplicate + * routes](https://docusaurus.io/docs/creating-pages#duplicate-routes). + * + * @see https://docusaurus.io/docs/api/docusaurus-config#onDuplicateRoutes + * @default "warn" + */ + onDuplicateRoutes: ReportingSeverity; + /** + * The tagline for your website. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#tagline + * @default "" + */ + tagline: string; + /** + * The GitHub user or organization that owns the repository. You don't need + * this if you are not using the `docusaurus deploy` command. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#organizationName + */ + organizationName?: string; + /** + * The name of the GitHub repository. You don't need this if you are not using + * the `docusaurus deploy` command. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#projectName + */ + projectName?: string; + /** + * The name of the branch to deploy the static files to. You don't need this + * if you are not using the `docusaurus deploy` command. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#deploymentBranch + */ + deploymentBranch?: string; + /** + * The hostname of your server. Useful if you are using GitHub Enterprise. You + * don't need this if you are not using the `docusaurus deploy` command. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#githubHost + */ + githubHost?: string; + /** + * The port of your server. Useful if you are using GitHub Enterprise. You + * don't need this if you are not using the `docusaurus deploy` command. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#githubPort + */ + githubPort?: string; + /** + * The [theme configuration](https://docusaurus.io/docs/api/themes/configuration) + * object to customize your site UI like navbar and footer. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#themeConfig + * @default {} + */ + themeConfig: ThemeConfig; + /** + * List of plugins. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#plugins + * @default [] + */ + plugins: PluginConfig[]; + /** + * List of themes. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#themes + * @default [] + */ + themes: PluginConfig[]; + /** + * List of presets. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#presets + * @default [] + */ + presets: PresetConfig[]; + /** + * Docusaurus guards `docusaurus.config.js` from unknown fields. To add a + * custom field, define it on `customFields`. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#customFields + * @default {} + */ + customFields?: { + [key: string]: unknown; + }; + /** + * An array of paths, relative to the site's directory or absolute. Files + * under these paths will be copied to the build output as-is. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#staticDirectories + * @default ["static"] + */ + staticDirectories: string[]; + /** + * An array of tags that will be inserted in the HTML ``. + * + * @see https://docusaurus.io/docs/api/docusaurus-config#head + * @default [] + */ + headTags: HtmlTagObject[]; + /** + * An array of scripts to load. The values can be either strings or plain + * objects of attribute-value maps. The ` + + +-------------------------------------------------------------------------------- + + + + + +## Table of Contents + +- [Examples](#examples) + - [Consuming a source map](#consuming-a-source-map) + - [Generating a source map](#generating-a-source-map) + - [With SourceNode (high level API)](#with-sourcenode-high-level-api) + - [With SourceMapGenerator (low level API)](#with-sourcemapgenerator-low-level-api) +- [API](#api) + - [SourceMapConsumer](#sourcemapconsumer) + - [SourceMapConsumer.initialize(options)](#sourcemapconsumerinitializeoptions) + - [new SourceMapConsumer(rawSourceMap)](#new-sourcemapconsumerrawsourcemap) + - [SourceMapConsumer.with](#sourcemapconsumerwith) + - [SourceMapConsumer.prototype.destroy()](#sourcemapconsumerprototypedestroy) + - [SourceMapConsumer.prototype.computeColumnSpans()](#sourcemapconsumerprototypecomputecolumnspans) + - [SourceMapConsumer.prototype.originalPositionFor(generatedPosition)](#sourcemapconsumerprototypeoriginalpositionforgeneratedposition) + - [SourceMapConsumer.prototype.generatedPositionFor(originalPosition)](#sourcemapconsumerprototypegeneratedpositionfororiginalposition) + - [SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition)](#sourcemapconsumerprototypeallgeneratedpositionsfororiginalposition) + - [SourceMapConsumer.prototype.hasContentsOfAllSources()](#sourcemapconsumerprototypehascontentsofallsources) + - [SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing])](#sourcemapconsumerprototypesourcecontentforsource-returnnullonmissing) + - [SourceMapConsumer.prototype.eachMapping(callback, context, order)](#sourcemapconsumerprototypeeachmappingcallback-context-order) + - [SourceMapGenerator](#sourcemapgenerator) + - [new SourceMapGenerator([startOfSourceMap])](#new-sourcemapgeneratorstartofsourcemap) + - [SourceMapGenerator.fromSourceMap(sourceMapConsumer)](#sourcemapgeneratorfromsourcemapsourcemapconsumer) + - [SourceMapGenerator.prototype.addMapping(mapping)](#sourcemapgeneratorprototypeaddmappingmapping) + - [SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)](#sourcemapgeneratorprototypesetsourcecontentsourcefile-sourcecontent) + - [SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]])](#sourcemapgeneratorprototypeapplysourcemapsourcemapconsumer-sourcefile-sourcemappath) + - [SourceMapGenerator.prototype.toString()](#sourcemapgeneratorprototypetostring) + - [SourceNode](#sourcenode) + - [new SourceNode([line, column, source[, chunk[, name]]])](#new-sourcenodeline-column-source-chunk-name) + - [SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])](#sourcenodefromstringwithsourcemapcode-sourcemapconsumer-relativepath) + - [SourceNode.prototype.add(chunk)](#sourcenodeprototypeaddchunk) + - [SourceNode.prototype.prepend(chunk)](#sourcenodeprototypeprependchunk) + - [SourceNode.prototype.setSourceContent(sourceFile, sourceContent)](#sourcenodeprototypesetsourcecontentsourcefile-sourcecontent) + - [SourceNode.prototype.walk(fn)](#sourcenodeprototypewalkfn) + - [SourceNode.prototype.walkSourceContents(fn)](#sourcenodeprototypewalksourcecontentsfn) + - [SourceNode.prototype.join(sep)](#sourcenodeprototypejoinsep) + - [SourceNode.prototype.replaceRight(pattern, replacement)](#sourcenodeprototypereplacerightpattern-replacement) + - [SourceNode.prototype.toString()](#sourcenodeprototypetostring) + - [SourceNode.prototype.toStringWithSourceMap([startOfSourceMap])](#sourcenodeprototypetostringwithsourcemapstartofsourcemap) + + + +## Examples + +### Consuming a source map + +```js +const rawSourceMap = { + version: 3, + file: 'min.js', + names: ['bar', 'baz', 'n'], + sources: ['one.js', 'two.js'], + sourceRoot: 'http://example.com/www/js/', + mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' +}; + +const whatever = await SourceMapConsumer.with(rawSourceMap, null, consumer => { + + console.log(consumer.sources); + // [ 'http://example.com/www/js/one.js', + // 'http://example.com/www/js/two.js' ] + + console.log(consumer.originalPositionFor({ + line: 2, + column: 28 + })); + // { source: 'http://example.com/www/js/two.js', + // line: 2, + // column: 10, + // name: 'n' } + + console.log(consumer.generatedPositionFor({ + source: 'http://example.com/www/js/two.js', + line: 2, + column: 10 + })); + // { line: 2, column: 28 } + + consumer.eachMapping(function (m) { + // ... + }); + + return computeWhatever(); +}); +``` + +### Generating a source map + +In depth guide: +[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/) + +#### With SourceNode (high level API) + +```js +function compile(ast) { + switch (ast.type) { + case 'BinaryExpression': + return new SourceNode( + ast.location.line, + ast.location.column, + ast.location.source, + [compile(ast.left), " + ", compile(ast.right)] + ); + case 'Literal': + return new SourceNode( + ast.location.line, + ast.location.column, + ast.location.source, + String(ast.value) + ); + // ... + default: + throw new Error("Bad AST"); + } +} + +var ast = parse("40 + 2", "add.js"); +console.log(compile(ast).toStringWithSourceMap({ + file: 'add.js' +})); +// { code: '40 + 2', +// map: [object SourceMapGenerator] } +``` + +#### With SourceMapGenerator (low level API) + +```js +var map = new SourceMapGenerator({ + file: "source-mapped.js" +}); + +map.addMapping({ + generated: { + line: 10, + column: 35 + }, + source: "foo.js", + original: { + line: 33, + column: 2 + }, + name: "christopher" +}); + +console.log(map.toString()); +// '{"version":3,"file":"source-mapped.js","sources":["foo.js"],"names":["christopher"],"mappings":";;;;;;;;;mCAgCEA"}' +``` + +## API + +Get a reference to the module: + +```js +// Node.js +var sourceMap = require('source-map'); + +// Browser builds +var sourceMap = window.sourceMap; + +// Inside Firefox +const sourceMap = require("devtools/toolkit/sourcemap/source-map.js"); +``` + +### SourceMapConsumer + +A `SourceMapConsumer` instance represents a parsed source map which we can query +for information about the original file positions by giving it a file position +in the generated source. + +#### SourceMapConsumer.initialize(options) + +When using `SourceMapConsumer` outside of node.js, for example on the Web, it +needs to know from what URL to load `lib/mappings.wasm`. You must inform it by +calling `initialize` before constructing any `SourceMapConsumer`s. + +The options object has the following properties: + +* `"lib/mappings.wasm"`: A `String` containing the URL of the + `lib/mappings.wasm` file, or an `ArrayBuffer` with the contents of `lib/mappings.wasm`. + +```js +sourceMap.SourceMapConsumer.initialize({ + "lib/mappings.wasm": "https://example.com/source-map/lib/mappings.wasm" +}); +``` + +#### new SourceMapConsumer(rawSourceMap) + +The only parameter is the raw source map (either as a string which can be +`JSON.parse`'d, or an object). According to the spec, source maps have the +following attributes: + +* `version`: Which version of the source map spec this map is following. + +* `sources`: An array of URLs to the original source files. + +* `names`: An array of identifiers which can be referenced by individual + mappings. + +* `sourceRoot`: Optional. The URL root from which all sources are relative. + +* `sourcesContent`: Optional. An array of contents of the original source files. + +* `mappings`: A string of base64 VLQs which contain the actual mappings. + +* `file`: Optional. The generated filename this source map is associated with. + +The promise of the constructed souce map consumer is returned. + +When the `SourceMapConsumer` will no longer be used anymore, you must call its +`destroy` method. + +```js +const consumer = await new sourceMap.SourceMapConsumer(rawSourceMapJsonData); +doStuffWith(consumer); +consumer.destroy(); +``` + +Alternatively, you can use `SourceMapConsumer.with` to avoid needing to remember +to call `destroy`. + +#### SourceMapConsumer.with + +Construct a new `SourceMapConsumer` from `rawSourceMap` and `sourceMapUrl` +(see the `SourceMapConsumer` constructor for details. Then, invoke the `async +function f(SourceMapConsumer) -> T` with the newly constructed consumer, wait +for `f` to complete, call `destroy` on the consumer, and return `f`'s return +value. + +You must not use the consumer after `f` completes! + +By using `with`, you do not have to remember to manually call `destroy` on +the consumer, since it will be called automatically once `f` completes. + +```js +const xSquared = await SourceMapConsumer.with( + myRawSourceMap, + null, + async function (consumer) { + // Use `consumer` inside here and don't worry about remembering + // to call `destroy`. + + const x = await whatever(consumer); + return x * x; + } +); + +// You may not use that `consumer` anymore out here; it has +// been destroyed. But you can use `xSquared`. +console.log(xSquared); +``` + +#### SourceMapConsumer.prototype.destroy() + +Free this source map consumer's associated wasm data that is manually-managed. + +```js +consumer.destroy(); +``` + +Alternatively, you can use `SourceMapConsumer.with` to avoid needing to remember +to call `destroy`. + +#### SourceMapConsumer.prototype.computeColumnSpans() + +Compute the last column for each generated mapping. The last column is +inclusive. + +```js +// Before: +consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" }) +// [ { line: 2, +// column: 1 }, +// { line: 2, +// column: 10 }, +// { line: 2, +// column: 20 } ] + +consumer.computeColumnSpans(); + +// After: +consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" }) +// [ { line: 2, +// column: 1, +// lastColumn: 9 }, +// { line: 2, +// column: 10, +// lastColumn: 19 }, +// { line: 2, +// column: 20, +// lastColumn: Infinity } ] +``` + +#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition) + +Returns the original source, line, and column information for the generated +source's line and column positions provided. The only argument is an object with +the following properties: + +* `line`: The line number in the generated source. Line numbers in + this library are 1-based (note that the underlying source map + specification uses 0-based line numbers -- this library handles the + translation). + +* `column`: The column number in the generated source. Column numbers + in this library are 0-based. + +* `bias`: Either `SourceMapConsumer.GREATEST_LOWER_BOUND` or + `SourceMapConsumer.LEAST_UPPER_BOUND`. Specifies whether to return the closest + element that is smaller than or greater than the one we are searching for, + respectively, if the exact element cannot be found. Defaults to + `SourceMapConsumer.GREATEST_LOWER_BOUND`. + +and an object is returned with the following properties: + +* `source`: The original source file, or null if this information is not + available. + +* `line`: The line number in the original source, or null if this information is + not available. The line number is 1-based. + +* `column`: The column number in the original source, or null if this + information is not available. The column number is 0-based. + +* `name`: The original identifier, or null if this information is not available. + +```js +consumer.originalPositionFor({ line: 2, column: 10 }) +// { source: 'foo.coffee', +// line: 2, +// column: 2, +// name: null } + +consumer.originalPositionFor({ line: 99999999999999999, column: 999999999999999 }) +// { source: null, +// line: null, +// column: null, +// name: null } +``` + +#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition) + +Returns the generated line and column information for the original source, +line, and column positions provided. The only argument is an object with +the following properties: + +* `source`: The filename of the original source. + +* `line`: The line number in the original source. The line number is + 1-based. + +* `column`: The column number in the original source. The column + number is 0-based. + +and an object is returned with the following properties: + +* `line`: The line number in the generated source, or null. The line + number is 1-based. + +* `column`: The column number in the generated source, or null. The + column number is 0-based. + +```js +consumer.generatedPositionFor({ source: "example.js", line: 2, column: 10 }) +// { line: 1, +// column: 56 } +``` + +#### SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition) + +Returns all generated line and column information for the original source, line, +and column provided. If no column is provided, returns all mappings +corresponding to a either the line we are searching for or the next closest line +that has any mappings. Otherwise, returns all mappings corresponding to the +given line and either the column we are searching for or the next closest column +that has any offsets. + +The only argument is an object with the following properties: + +* `source`: The filename of the original source. + +* `line`: The line number in the original source. The line number is + 1-based. + +* `column`: Optional. The column number in the original source. The + column number is 0-based. + +and an array of objects is returned, each with the following properties: + +* `line`: The line number in the generated source, or null. The line + number is 1-based. + +* `column`: The column number in the generated source, or null. The + column number is 0-based. + +```js +consumer.allGeneratedpositionsfor({ line: 2, source: "foo.coffee" }) +// [ { line: 2, +// column: 1 }, +// { line: 2, +// column: 10 }, +// { line: 2, +// column: 20 } ] +``` + +#### SourceMapConsumer.prototype.hasContentsOfAllSources() + +Return true if we have the embedded source content for every source listed in +the source map, false otherwise. + +In other words, if this method returns `true`, then +`consumer.sourceContentFor(s)` will succeed for every source `s` in +`consumer.sources`. + +```js +// ... +if (consumer.hasContentsOfAllSources()) { + consumerReadyCallback(consumer); +} else { + fetchSources(consumer, consumerReadyCallback); +} +// ... +``` + +#### SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing]) + +Returns the original source content for the source provided. The only +argument is the URL of the original source file. + +If the source content for the given source is not found, then an error is +thrown. Optionally, pass `true` as the second param to have `null` returned +instead. + +```js +consumer.sources +// [ "my-cool-lib.clj" ] + +consumer.sourceContentFor("my-cool-lib.clj") +// "..." + +consumer.sourceContentFor("this is not in the source map"); +// Error: "this is not in the source map" is not in the source map + +consumer.sourceContentFor("this is not in the source map", true); +// null +``` + +#### SourceMapConsumer.prototype.eachMapping(callback, context, order) + +Iterate over each mapping between an original source/line/column and a +generated line/column in this source map. + +* `callback`: The function that is called with each mapping. Mappings have the + form `{ source, generatedLine, generatedColumn, originalLine, originalColumn, + name }` + +* `context`: Optional. If specified, this object will be the value of `this` + every time that `callback` is called. + +* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or + `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over + the mappings sorted by the generated file's line/column order or the + original's source/line/column order, respectively. Defaults to + `SourceMapConsumer.GENERATED_ORDER`. + +```js +consumer.eachMapping(function (m) { console.log(m); }) +// ... +// { source: 'illmatic.js', +// generatedLine: 1, +// generatedColumn: 0, +// originalLine: 1, +// originalColumn: 0, +// name: null } +// { source: 'illmatic.js', +// generatedLine: 2, +// generatedColumn: 0, +// originalLine: 2, +// originalColumn: 0, +// name: null } +// ... +``` +### SourceMapGenerator + +An instance of the SourceMapGenerator represents a source map which is being +built incrementally. + +#### new SourceMapGenerator([startOfSourceMap]) + +You may pass an object with the following properties: + +* `file`: The filename of the generated source that this source map is + associated with. + +* `sourceRoot`: A root for all relative URLs in this source map. + +* `skipValidation`: Optional. When `true`, disables validation of mappings as + they are added. This can improve performance but should be used with + discretion, as a last resort. Even then, one should avoid using this flag when + running tests, if possible. + +```js +var generator = new sourceMap.SourceMapGenerator({ + file: "my-generated-javascript-file.js", + sourceRoot: "http://example.com/app/js/" +}); +``` + +#### SourceMapGenerator.fromSourceMap(sourceMapConsumer) + +Creates a new `SourceMapGenerator` from an existing `SourceMapConsumer` instance. + +* `sourceMapConsumer` The SourceMap. + +```js +var generator = sourceMap.SourceMapGenerator.fromSourceMap(consumer); +``` + +#### SourceMapGenerator.prototype.addMapping(mapping) + +Add a single mapping from original source line and column to the generated +source's line and column for this source map being created. The mapping object +should have the following properties: + +* `generated`: An object with the generated line and column positions. + +* `original`: An object with the original line and column positions. + +* `source`: The original source file (relative to the sourceRoot). + +* `name`: An optional original token name for this mapping. + +```js +generator.addMapping({ + source: "module-one.scm", + original: { line: 128, column: 0 }, + generated: { line: 3, column: 456 } +}) +``` + +#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent) + +Set the source content for an original source file. + +* `sourceFile` the URL of the original source file. + +* `sourceContent` the content of the source file. + +```js +generator.setSourceContent("module-one.scm", + fs.readFileSync("path/to/module-one.scm")) +``` + +#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]]) + +Applies a SourceMap for a source file to the SourceMap. +Each mapping to the supplied source file is rewritten using the +supplied SourceMap. Note: The resolution for the resulting mappings +is the minimum of this map and the supplied map. + +* `sourceMapConsumer`: The SourceMap to be applied. + +* `sourceFile`: Optional. The filename of the source file. + If omitted, sourceMapConsumer.file will be used, if it exists. + Otherwise an error will be thrown. + +* `sourceMapPath`: Optional. The dirname of the path to the SourceMap + to be applied. If relative, it is relative to the SourceMap. + + This parameter is needed when the two SourceMaps aren't in the same + directory, and the SourceMap to be applied contains relative source + paths. If so, those relative source paths need to be rewritten + relative to the SourceMap. + + If omitted, it is assumed that both SourceMaps are in the same directory, + thus not needing any rewriting. (Supplying `'.'` has the same effect.) + +#### SourceMapGenerator.prototype.toString() + +Renders the source map being generated to a string. + +```js +generator.toString() +// '{"version":3,"sources":["module-one.scm"],"names":[],"mappings":"...snip...","file":"my-generated-javascript-file.js","sourceRoot":"http://example.com/app/js/"}' +``` + +### SourceNode + +SourceNodes provide a way to abstract over interpolating and/or concatenating +snippets of generated JavaScript source code, while maintaining the line and +column information associated between those snippets and the original source +code. This is useful as the final intermediate representation a compiler might +use before outputting the generated JS and source map. + +#### new SourceNode([line, column, source[, chunk[, name]]]) + +* `line`: The original line number associated with this source node, or null if + it isn't associated with an original line. The line number is 1-based. + +* `column`: The original column number associated with this source node, or null + if it isn't associated with an original column. The column number + is 0-based. + +* `source`: The original source's filename; null if no filename is provided. + +* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see + below. + +* `name`: Optional. The original identifier. + +```js +var node = new SourceNode(1, 2, "a.cpp", [ + new SourceNode(3, 4, "b.cpp", "extern int status;\n"), + new SourceNode(5, 6, "c.cpp", "std::string* make_string(size_t n);\n"), + new SourceNode(7, 8, "d.cpp", "int main(int argc, char** argv) {}\n"), +]); +``` + +#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath]) + +Creates a SourceNode from generated code and a SourceMapConsumer. + +* `code`: The generated code + +* `sourceMapConsumer` The SourceMap for the generated code + +* `relativePath` The optional path that relative sources in `sourceMapConsumer` + should be relative to. + +```js +const consumer = await new SourceMapConsumer(fs.readFileSync("path/to/my-file.js.map", "utf8")); +const node = SourceNode.fromStringWithSourceMap(fs.readFileSync("path/to/my-file.js"), consumer); +``` + +#### SourceNode.prototype.add(chunk) + +Add a chunk of generated JS to this source node. + +* `chunk`: A string snippet of generated JS code, another instance of + `SourceNode`, or an array where each member is one of those things. + +```js +node.add(" + "); +node.add(otherNode); +node.add([leftHandOperandNode, " + ", rightHandOperandNode]); +``` + +#### SourceNode.prototype.prepend(chunk) + +Prepend a chunk of generated JS to this source node. + +* `chunk`: A string snippet of generated JS code, another instance of + `SourceNode`, or an array where each member is one of those things. + +```js +node.prepend("/** Build Id: f783haef86324gf **/\n\n"); +``` + +#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent) + +Set the source content for a source file. This will be added to the +`SourceMap` in the `sourcesContent` field. + +* `sourceFile`: The filename of the source file + +* `sourceContent`: The content of the source file + +```js +node.setSourceContent("module-one.scm", + fs.readFileSync("path/to/module-one.scm")) +``` + +#### SourceNode.prototype.walk(fn) + +Walk over the tree of JS snippets in this node and its children. The walking +function is called once for each snippet of JS and is passed that snippet and +the its original associated source's line/column location. + +* `fn`: The traversal function. + +```js +var node = new SourceNode(1, 2, "a.js", [ + new SourceNode(3, 4, "b.js", "uno"), + "dos", + [ + "tres", + new SourceNode(5, 6, "c.js", "quatro") + ] +]); + +node.walk(function (code, loc) { console.log("WALK:", code, loc); }) +// WALK: uno { source: 'b.js', line: 3, column: 4, name: null } +// WALK: dos { source: 'a.js', line: 1, column: 2, name: null } +// WALK: tres { source: 'a.js', line: 1, column: 2, name: null } +// WALK: quatro { source: 'c.js', line: 5, column: 6, name: null } +``` + +#### SourceNode.prototype.walkSourceContents(fn) + +Walk over the tree of SourceNodes. The walking function is called for each +source file content and is passed the filename and source content. + +* `fn`: The traversal function. + +```js +var a = new SourceNode(1, 2, "a.js", "generated from a"); +a.setSourceContent("a.js", "original a"); +var b = new SourceNode(1, 2, "b.js", "generated from b"); +b.setSourceContent("b.js", "original b"); +var c = new SourceNode(1, 2, "c.js", "generated from c"); +c.setSourceContent("c.js", "original c"); + +var node = new SourceNode(null, null, null, [a, b, c]); +node.walkSourceContents(function (source, contents) { console.log("WALK:", source, ":", contents); }) +// WALK: a.js : original a +// WALK: b.js : original b +// WALK: c.js : original c +``` + +#### SourceNode.prototype.join(sep) + +Like `Array.prototype.join` except for SourceNodes. Inserts the separator +between each of this source node's children. + +* `sep`: The separator. + +```js +var lhs = new SourceNode(1, 2, "a.rs", "my_copy"); +var operand = new SourceNode(3, 4, "a.rs", "="); +var rhs = new SourceNode(5, 6, "a.rs", "orig.clone()"); + +var node = new SourceNode(null, null, null, [ lhs, operand, rhs ]); +var joinedNode = node.join(" "); +``` + +#### SourceNode.prototype.replaceRight(pattern, replacement) + +Call `String.prototype.replace` on the very right-most source snippet. Useful +for trimming white space from the end of a source node, etc. + +* `pattern`: The pattern to replace. + +* `replacement`: The thing to replace the pattern with. + +```js +// Trim trailing white space. +node.replaceRight(/\s*$/, ""); +``` + +#### SourceNode.prototype.toString() + +Return the string representation of this source node. Walks over the tree and +concatenates all the various snippets together to one string. + +```js +var node = new SourceNode(1, 2, "a.js", [ + new SourceNode(3, 4, "b.js", "uno"), + "dos", + [ + "tres", + new SourceNode(5, 6, "c.js", "quatro") + ] +]); + +node.toString() +// 'unodostresquatro' +``` + +#### SourceNode.prototype.toStringWithSourceMap([startOfSourceMap]) + +Returns the string representation of this tree of source nodes, plus a +SourceMapGenerator which contains all the mappings between the generated and +original sources. + +The arguments are the same as those to `new SourceMapGenerator`. + +```js +var node = new SourceNode(1, 2, "a.js", [ + new SourceNode(3, 4, "b.js", "uno"), + "dos", + [ + "tres", + new SourceNode(5, 6, "c.js", "quatro") + ] +]); + +node.toStringWithSourceMap({ file: "my-output-file.js" }) +// { code: 'unodostresquatro', +// map: [object SourceMapGenerator] } +``` diff --git a/node_modules/@mdx-js/mdx/node_modules/source-map/package.json b/node_modules/@mdx-js/mdx/node_modules/source-map/package.json new file mode 100644 index 00000000..1d67accb --- /dev/null +++ b/node_modules/@mdx-js/mdx/node_modules/source-map/package.json @@ -0,0 +1,91 @@ +{ + "name": "source-map", + "description": "Generates and consumes source maps", + "version": "0.7.4", + "homepage": "https://github.com/mozilla/source-map", + "author": "Nick Fitzgerald ", + "contributors": [ + "Tobias Koppers ", + "Duncan Beevers ", + "Stephen Crane ", + "Ryan Seddon ", + "Miles Elam ", + "Mihai Bazon ", + "Michael Ficarra ", + "Todd Wolfson ", + "Alexander Solovyov ", + "Felix Gnass ", + "Conrad Irwin ", + "usrbincc ", + "David Glasser ", + "Chase Douglas ", + "Evan Wallace ", + "Heather Arthur ", + "Hugh Kennedy ", + "David Glasser ", + "Simon Lydell ", + "Jmeas Smith ", + "Michael Z Goddard ", + "azu ", + "John Gozde ", + "Adam Kirkton ", + "Chris Montgomery ", + "J. Ryan Stinnett ", + "Jack Herrington ", + "Chris Truter ", + "Daniel Espeset ", + "Jamie Wong ", + "Eddy Bruël ", + "Hawken Rives ", + "Gilad Peleg ", + "djchie ", + "Gary Ye ", + "Nicolas Lalevée " + ], + "repository": { + "type": "git", + "url": "http://github.com/mozilla/source-map.git" + }, + "main": "./source-map.js", + "types": "./source-map.d.ts", + "files": [ + "source-map.js", + "source-map.d.ts", + "lib/", + "dist/source-map.js" + ], + "engines": { + "node": ">= 8" + }, + "license": "BSD-3-Clause", + "scripts": { + "lint": "eslint *.js lib/ test/", + "prebuild": "npm run lint", + "build": "webpack --color", + "pretest": "npm run build", + "test": "node test/run-tests.js", + "precoverage": "npm run build", + "coverage": "nyc node test/run-tests.js", + "setup": "mkdir -p coverage && cp -n .waiting.html coverage/index.html || true", + "dev:live": "live-server --port=4103 --ignorePattern='(js|css|png)$' coverage", + "dev:watch": "watch 'npm run coverage' lib/ test/", + "predev": "npm run setup", + "dev": "npm-run-all -p --silent dev:*", + "clean": "rm -rf coverage .nyc_output", + "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md" + }, + "devDependencies": { + "doctoc": "^1.3.1", + "eslint": "^4.19.1", + "live-server": "^1.2.0", + "npm-run-all": "^4.1.2", + "nyc": "^11.7.1", + "watch": "^1.0.2", + "webpack": "^4.9.1", + "webpack-cli": "^3.1" + }, + "nyc": { + "reporter": "html" + }, + "typings": "source-map" +} diff --git a/node_modules/@mdx-js/mdx/node_modules/source-map/source-map.d.ts b/node_modules/@mdx-js/mdx/node_modules/source-map/source-map.d.ts new file mode 100644 index 00000000..24593915 --- /dev/null +++ b/node_modules/@mdx-js/mdx/node_modules/source-map/source-map.d.ts @@ -0,0 +1,369 @@ +// Type definitions for source-map 0.7 +// Project: https://github.com/mozilla/source-map +// Definitions by: Morten Houston Ludvigsen , +// Ron Buckton , +// John Vilk +// Definitions: https://github.com/mozilla/source-map +export type SourceMapUrl = string; + +export interface StartOfSourceMap { + file?: string; + sourceRoot?: string; + skipValidation?: boolean; +} + +export interface RawSourceMap { + version: number; + sources: string[]; + names: string[]; + sourceRoot?: string; + sourcesContent?: string[]; + mappings: string; + file: string; +} + +export interface RawIndexMap extends StartOfSourceMap { + version: number; + sections: RawSection[]; +} + +export interface RawSection { + offset: Position; + map: RawSourceMap; +} + +export interface Position { + line: number; + column: number; +} + +export interface NullablePosition { + line: number | null; + column: number | null; + lastColumn: number | null; +} + +export interface MappedPosition { + source: string; + line: number; + column: number; + name?: string; +} + +export interface NullableMappedPosition { + source: string | null; + line: number | null; + column: number | null; + name: string | null; +} + +export interface MappingItem { + source: string; + generatedLine: number; + generatedColumn: number; + originalLine: number; + originalColumn: number; + name: string; +} + +export interface Mapping { + generated: Position; + original: Position; + source: string; + name?: string; +} + +export interface CodeWithSourceMap { + code: string; + map: SourceMapGenerator; +} + +export interface SourceMapConsumer { + /** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ + computeColumnSpans(): void; + + /** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. + * - column: The column number in the generated source. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. + * - column: The column number in the original source, or null. + * - name: The original identifier, or null. + */ + originalPositionFor(generatedPosition: Position & { bias?: number }): NullableMappedPosition; + + /** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. + * - column: The column number in the original source. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. + * - column: The column number in the generated source, or null. + */ + generatedPositionFor(originalPosition: MappedPosition & { bias?: number }): NullablePosition; + + /** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. + * - column: Optional. the column number in the original source. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. + * - column: The column number in the generated source, or null. + */ + allGeneratedPositionsFor(originalPosition: MappedPosition): NullablePosition[]; + + /** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ + hasContentsOfAllSources(): boolean; + + /** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ + sourceContentFor(source: string, returnNullOnMissing?: boolean): string | null; + + /** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param callback + * The function that is called with each mapping. + * @param context + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param order + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ + eachMapping(callback: (mapping: MappingItem) => void, context?: any, order?: number): void; + /** + * Free this source map consumer's associated wasm data that is manually-managed. + * Alternatively, you can use SourceMapConsumer.with to avoid needing to remember to call destroy. + */ + destroy(): void; +} + +export interface SourceMapConsumerConstructor { + prototype: SourceMapConsumer; + + GENERATED_ORDER: number; + ORIGINAL_ORDER: number; + GREATEST_LOWER_BOUND: number; + LEAST_UPPER_BOUND: number; + + new (rawSourceMap: RawSourceMap, sourceMapUrl?: SourceMapUrl): Promise; + new (rawSourceMap: RawIndexMap, sourceMapUrl?: SourceMapUrl): Promise; + new (rawSourceMap: RawSourceMap | RawIndexMap | string, sourceMapUrl?: SourceMapUrl): Promise; + + /** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param sourceMap + * The source map that will be consumed. + */ + fromSourceMap(sourceMap: SourceMapGenerator, sourceMapUrl?: SourceMapUrl): Promise; + + /** + * Construct a new `SourceMapConsumer` from `rawSourceMap` and `sourceMapUrl` + * (see the `SourceMapConsumer` constructor for details. Then, invoke the `async + * function f(SourceMapConsumer) -> T` with the newly constructed consumer, wait + * for `f` to complete, call `destroy` on the consumer, and return `f`'s return + * value. + * + * You must not use the consumer after `f` completes! + * + * By using `with`, you do not have to remember to manually call `destroy` on + * the consumer, since it will be called automatically once `f` completes. + * + * ```js + * const xSquared = await SourceMapConsumer.with( + * myRawSourceMap, + * null, + * async function (consumer) { + * // Use `consumer` inside here and don't worry about remembering + * // to call `destroy`. + * + * const x = await whatever(consumer); + * return x * x; + * } + * ); + * + * // You may not use that `consumer` anymore out here; it has + * // been destroyed. But you can use `xSquared`. + * console.log(xSquared); + * ``` + */ + with(rawSourceMap: RawSourceMap | RawIndexMap | string, sourceMapUrl: SourceMapUrl | null | undefined, callback: (consumer: BasicSourceMapConsumer | IndexedSourceMapConsumer) => Promise | T): Promise; +} + +export const SourceMapConsumer: SourceMapConsumerConstructor; + +export interface BasicSourceMapConsumer extends SourceMapConsumer { + file: string; + sourceRoot: string; + sources: string[]; + sourcesContent: string[]; +} + +export interface BasicSourceMapConsumerConstructor { + prototype: BasicSourceMapConsumer; + + new (rawSourceMap: RawSourceMap | string): Promise; + + /** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param sourceMap + * The source map that will be consumed. + */ + fromSourceMap(sourceMap: SourceMapGenerator): Promise; +} + +export const BasicSourceMapConsumer: BasicSourceMapConsumerConstructor; + +export interface IndexedSourceMapConsumer extends SourceMapConsumer { + sources: string[]; +} + +export interface IndexedSourceMapConsumerConstructor { + prototype: IndexedSourceMapConsumer; + + new (rawSourceMap: RawIndexMap | string): Promise; +} + +export const IndexedSourceMapConsumer: IndexedSourceMapConsumerConstructor; + +export class SourceMapGenerator { + constructor(startOfSourceMap?: StartOfSourceMap); + + /** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param sourceMapConsumer The SourceMap. + */ + static fromSourceMap(sourceMapConsumer: SourceMapConsumer): SourceMapGenerator; + + /** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ + addMapping(mapping: Mapping): void; + + /** + * Set the source content for a source file. + */ + setSourceContent(sourceFile: string, sourceContent: string): void; + + /** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param sourceMapConsumer The source map to be applied. + * @param sourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param sourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ + applySourceMap(sourceMapConsumer: SourceMapConsumer, sourceFile?: string, sourceMapPath?: string): void; + + toString(): string; + + toJSON(): RawSourceMap; +} + +export class SourceNode { + children: SourceNode[]; + sourceContents: any; + line: number; + column: number; + source: string; + name: string; + + constructor(); + constructor( + line: number | null, + column: number | null, + source: string | null, + chunks?: Array<(string | SourceNode)> | SourceNode | string, + name?: string + ); + + static fromStringWithSourceMap( + code: string, + sourceMapConsumer: SourceMapConsumer, + relativePath?: string + ): SourceNode; + + add(chunk: Array<(string | SourceNode)> | SourceNode | string): SourceNode; + + prepend(chunk: Array<(string | SourceNode)> | SourceNode | string): SourceNode; + + setSourceContent(sourceFile: string, sourceContent: string): void; + + walk(fn: (chunk: string, mapping: MappedPosition) => void): void; + + walkSourceContents(fn: (file: string, content: string) => void): void; + + join(sep: string): SourceNode; + + replaceRight(pattern: string, replacement: string): SourceNode; + + toString(): string; + + toStringWithSourceMap(startOfSourceMap?: StartOfSourceMap): CodeWithSourceMap; +} diff --git a/node_modules/@mdx-js/mdx/node_modules/source-map/source-map.js b/node_modules/@mdx-js/mdx/node_modules/source-map/source-map.js new file mode 100644 index 00000000..a84abf1e --- /dev/null +++ b/node_modules/@mdx-js/mdx/node_modules/source-map/source-map.js @@ -0,0 +1,8 @@ +/* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ +exports.SourceMapGenerator = require("./lib/source-map-generator").SourceMapGenerator; +exports.SourceMapConsumer = require("./lib/source-map-consumer").SourceMapConsumer; +exports.SourceNode = require("./lib/source-node").SourceNode; diff --git a/node_modules/@mdx-js/mdx/package.json b/node_modules/@mdx-js/mdx/package.json new file mode 100644 index 00000000..fdf5e50f --- /dev/null +++ b/node_modules/@mdx-js/mdx/package.json @@ -0,0 +1,97 @@ +{ + "name": "@mdx-js/mdx", + "version": "3.0.0", + "description": "MDX compiler", + "license": "MIT", + "keywords": [ + "jsx", + "markdown", + "mdx", + "remark" + ], + "homepage": "https://mdxjs.com", + "repository": { + "type": "git", + "url": "https://github.com/mdx-js/mdx", + "directory": "packages/mdx/" + }, + "bugs": "https://github.com/mdx-js/mdx/issues", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "author": "John Otander (https://johno.com)", + "contributors": [ + "John Otander (https://johno.com)", + "Tim Neutkens ", + "Matija Marohnić ", + "Titus Wormer (https://wooorm.com)", + "JounQin (https://www.1stg.me)", + "Christian Murphy " + ], + "type": "module", + "sideEffects": false, + "exports": { + ".": "./index.js", + "./internal-create-format-aware-processors": "./lib/util/create-format-aware-processors.js", + "./internal-extnames-to-regex": "./lib/util/extnames-to-regex.js", + "./internal-resolve-evaluate-options": "./lib/util/resolve-evaluate-options.js" + }, + "files": [ + "lib/", + "index.d.ts", + "index.js" + ], + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-to-js": "^2.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "scripts": { + "test": "npm run test-coverage", + "test-api": "node --conditions development --enable-source-maps test/index.js", + "test-coverage": "c8 --100 --reporter lcov npm run test-api" + }, + "xo": { + "overrides": [ + { + "files": [ + "**/*.ts" + ], + "rules": { + "@typescript-eslint/array-type": "off", + "@typescript-eslint/ban-types": "off", + "@typescript-eslint/consistent-type-definitions": "off" + } + } + ], + "prettier": true, + "rules": { + "complexity": "off", + "max-depth": "off", + "n/file-extension-in-import": "off", + "unicorn/prefer-at": "off", + "unicorn/prefer-code-point": "off" + } + } +} diff --git a/node_modules/@mdx-js/mdx/readme.md b/node_modules/@mdx-js/mdx/readme.md new file mode 100644 index 00000000..f003c5b8 --- /dev/null +++ b/node_modules/@mdx-js/mdx/readme.md @@ -0,0 +1,1308 @@ +# `@mdx-js/mdx` + +[![Build][build-badge]][build] +[![Coverage][coverage-badge]][coverage] +[![Downloads][downloads-badge]][downloads] +[![Size][size-badge]][size] +[![Sponsors][sponsors-badge]][collective] +[![Backers][backers-badge]][collective] +[![Chat][chat-badge]][chat] + +MDX compiler. + + + +## Contents + +* [What is this?](#what-is-this) +* [When should I use this?](#when-should-i-use-this) +* [Install](#install) +* [Use](#use) +* [API](#api) + * [`compile(file, options?)`](#compilefile-options) + * [`compileSync(file, options?)`](#compilesyncfile-options) + * [`createProcessor(options?)`](#createprocessoroptions) + * [`evaluate(file, options)`](#evaluatefile-options) + * [`evaluateSync(file, options)`](#evaluatesyncfile-options) + * [`nodeTypes`](#nodetypes) + * [`run(code, options)`](#runcode-options) + * [`runSync(code, options)`](#runsynccode-options) + * [`CompileOptions`](#compileoptions) + * [`EvaluateOptions`](#evaluateoptions) + * [`Fragment`](#fragment) + * [`Jsx`](#jsx) + * [`JsxDev`](#jsxdev) + * [`ProcessorOptions`](#processoroptions) + * [`RunOptions`](#runoptions) + * [`UseMdxComponents`](#usemdxcomponents) +* [Types](#types) +* [Architecture](#architecture) +* [Compatibility](#compatibility) +* [Security](#security) +* [Contribute](#contribute) +* [License](#license) + +## What is this? + +This package is a compiler that turns MDX into JavaScript. +It can also evaluate MDX code. + +## When should I use this? + +This is the core compiler for turning MDX into JavaScript which gives you the +most control. +If you’re using a bundler (Rollup, esbuild, webpack), a site builder (Next.js), +or build system (Vite) which comes with a bundler, you’re better off using an +integration: see [§ Integrations][integrations]. + +## Install + +This package is [ESM only][esm]. +In Node.js (version 16+), install with [npm][]: + +```sh +npm install @mdx-js/mdx +``` + +In Deno with [`esm.sh`][esmsh]: + +```tsx +import {compile} from 'https://esm.sh/@mdx-js/mdx@2' +``` + +In browsers with [`esm.sh`][esmsh]: + +```html + +``` + +## Use + +Say we have an MDX document, `example.mdx`: + +```mdx +export function Thing() { + return <>World! +} + +# Hello, +``` + +…and some code in `example.js` to compile `example.mdx` to JavaScript: + +```tsx +import fs from 'node:fs/promises' +import {compile} from '@mdx-js/mdx' + +const compiled = await compile(await fs.readFile('example.mdx')) + +console.log(String(compiled)) +``` + +Yields roughly: + +```tsx +import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from 'react/jsx-runtime' + +export function Thing() { + return _jsx(_Fragment, {children: 'World!'}) +} + +function _createMdxContent(props) { + const _components = {h1: 'h1', ...props.components} + return _jsxs(_components.h1, {children: ['Hello, ', _jsx(Thing, {})]}) +} + +export default function MDXContent(props = {}) { + const {wrapper: MDXLayout} = props.components || {} + return MDXLayout + ? _jsx(MDXLayout, {...props, children: _jsx(_createMdxContent, {...props})}) + : _createMdxContent(props) +} +``` + +See [§ Using MDX][using-mdx] for more on how MDX work and how to use the result. + +## API + +This package exports the following identifiers: +[`compile`][api-compile], +[`compileSync`][api-compile-sync], +[`createProcessor`][api-create-processor], +[`evaluate`][api-evaluate], +[`evaluateSync`][api-evaluate-sync], +[`nodeTypes`][api-node-types], +[`run`][api-run], and +[`runSync`][api-run-sync]. +There is no default export. + +### `compile(file, options?)` + +Compile MDX to JS. + +###### Parameters + +* `file` ([`Compatible` from `vfile`][vfile-compatible]) + — MDX document to parse +* `options` ([`CompileOptions`][api-compile-options], optional) + — compile configuration + +###### Returns + +Promise to compiled file ([`Promise`][vfile]). + +###### Examples + +The input value for `file` can be many different things. +You can pass a `string`, `Uint8Array` in UTF-8, [`VFile`][vfile], or anything +that can be given to `new VFile`. + +```tsx +import {compile} from '@mdx-js/mdx' +import {VFile} from 'vfile' + +await compile(':)') +await compile(Buffer.from(':-)')) +await compile({path: 'path/to/file.mdx', value: '🥳'}) +await compile(new VFile({path: 'path/to/file.mdx', value: '🤭'})) +``` + +The output `VFile` can be used to access more than the generated code: + +```tsx +import {compile} from '@mdx-js/mdx' +import remarkPresetLintConsistent from 'remark-preset-lint-consistent' // Lint rules to check for consistent markdown. +import {reporter} from 'vfile-reporter' + +const file = await compile('*like this* or _like this_?', {remarkPlugins: [remarkPresetLintConsistent]}) + +console.error(reporter(file)) +``` + +Yields: + +```txt + 1:16-1:27 warning Emphasis should use `*` as a marker emphasis-marker remark-lint + +⚠ 1 warning +``` + +### `compileSync(file, options?)` + +Synchronously compile MDX to JS. + +When possible please use the async [`compile`][api-compile]. + +###### Parameters + +* `file` ([`Compatible` from `vfile`][vfile-compatible]) + — MDX document to parse +* `options` ([`CompileOptions`][api-compile-options], optional) + — compile configuration + +###### Returns + +Compiled file ([`VFile`][vfile]). + +### `createProcessor(options?)` + +Create a processor to compile markdown or MDX to JavaScript. + +> **Note**: `format: 'detect'` is not allowed in `ProcessorOptions`. + +###### Parameters + +* `options` ([`ProcessorOptions`][api-processor-options], optional) + — process configuration + +###### Returns + +Processor ([`Processor` from `unified`][unified-processor]). + +### `evaluate(file, options)` + +[Compile][api-compile] and [run][api-run] MDX. + +When you trust your content, `evaluate` can work. +When possible, use [`compile`][api-compile], write to a file, and then run with +Node or use one of the [§ Integrations][integrations]. + +> ☢️ **Danger**: it’s called **evaluate** because it `eval`s JavaScript. + +###### Parameters + +* `file` ([`Compatible` from `vfile`][vfile-compatible]) + — MDX document to parse +* `options` ([`EvaluateOptions`][api-evaluate-options], **required**) + — configuration + +###### Returns + +Promise to a module ([`Promise` from +`mdx/types.js`][mdx-types-module]). + +The result is an object with a `default` field set to the component; +anything else that was exported is available too. +For example, assuming the contents of `example.mdx` from [§ Use][use] was in +`file`, then: + +```tsx +import {evaluate} from '@mdx-js/mdx' +import * as runtime from 'react/jsx-runtime' + +console.log(await evaluate(file, runtime)) +``` + +…yields: + +```tsx +{Thing: [Function: Thing], default: [Function: MDXContent]} +``` + +###### Notes + +Compiling (and running) MDX takes time. + +If you are live-rendering a string of MDX that often changes using a virtual DOM +based framework (such as React), one performance improvement is to call the +`MDXContent` component yourself. +The reason is that the `evaluate` creates a new function each time, which cannot +be diffed: + +```diff + const {default: MDXContent} = await evaluate('…') + +- ++MDXContent(props) +``` + +### `evaluateSync(file, options)` + +Compile and run MDX, synchronously. + +When possible please use the async [`evaluate`][api-evaluate]. + +> ☢️ **Danger**: it’s called **evaluate** because it `eval`s JavaScript. + +###### Parameters + +* `file` ([`Compatible` from `vfile`][vfile-compatible]) + — MDX document to parse +* `options` ([`EvaluateOptions`][api-evaluate-options], **required**) + — configuration + +###### Returns + +Module ([`MDXModule` from `mdx/types.js`][mdx-types-module]). + +### `nodeTypes` + +List of node types made by `mdast-util-mdx`, which have to be passed +through untouched from the mdast tree to the hast tree (`Array`). + +### `run(code, options)` + +Run code compiled with `outputFormat: 'function-body'`. + +> ☢️ **Danger**: this `eval`s JavaScript. + +###### Parameters + +* `code` ([`VFile`][vfile] or `string`) + — JavaScript function body to run +* `options` ([`RunOptions`][api-run-options], **required**) + — configuration + +###### Returns + +Promise to a module ([`Promise` from +`mdx/types.js`][mdx-types-module]); +the result is an object with a `default` field set to the component; +anything else that was exported is available too. + +###### Example + +On the server: + +```tsx +import {compile} from '@mdx-js/mdx' + +const code = String(await compile('# hi', {outputFormat: 'function-body'})) +// To do: send `code` to the client somehow. +``` + +On the client: + +```tsx +import {run} from '@mdx-js/mdx' +import * as runtime from 'react/jsx-runtime' + +const code = '' // To do: get `code` from server somehow. + +const {default: Content} = await run(code, {...runtime, baseUrl: import.meta.url}) + +console.log(Content) +``` + +…yields: + +```tsx +[Function: MDXContent] +``` + +### `runSync(code, options)` + +Run code, synchronously. + +When possible please use the async [`run`][api-run]. + +> ☢️ **Danger**: this `eval`s JavaScript. + +###### Parameters + +* `code` ([`VFile`][vfile] or `string`) + — JavaScript function body to run +* `options` ([`RunOptions`][api-run-options], **required**) + — configuration + +###### Returns + +Module ([`MDXModule` from `mdx/types.js`][mdx-types-module]). + +### `CompileOptions` + +Configuration for `compile` (TypeScript type). + +`CompileOptions` is the same as [`ProcessorOptions`][api-processor-options] +with the exception that the `format` option supports a `'detect'` value, +which is the default. +The `'detect'` format means to use `'md'` for files with an extension in +`mdExtensions` and `'mdx'` otherwise. + +###### Type + +```tsx +/** + * Configuration for `compile` + */ +type CompileOptions = Omit & { + /** + * Format of `file` (default: `'detect'`). + */ + format?: 'detect' | 'md' | 'mdx' | null | undefined +} +``` + +### `EvaluateOptions` + +Configuration for `evaluate` (TypeScript type). + +`EvaluateOptions` is the same as [`CompileOptions`][api-compile-options], +except that the options `baseUrl`, `jsx`, `jsxImportSource`, `jsxRuntime`, +`outputFormat`, `pragma`, `pragmaFrag`, `pragmaImportSource`, and +`providerImportSource` are not allowed, and that +[`RunOptions`][api-run-options] are also used. + +###### Type + +```tsx +/** + * Configuration for `evaluate`. + */ +type EvaluateOptions = Omit< + CompileOptions, + | 'baseUrl' // Note that this is also in `RunOptions`. + | 'jsx' + | 'jsxImportSource' + | 'jsxRuntime' + | 'outputFormat' + | 'pragma' + | 'pragmaFrag' + | 'pragmaImportSource' + | 'providerImportSource' +> & + RunOptions +``` + +### `Fragment` + +Represent the children, typically a symbol (TypeScript type). + +###### Type + +```ts +type Fragment = unknown +``` + +### `Jsx` + +Create a production element (TypeScript type). + +###### Parameters + +* `type` (`unknown`) + — element type: `Fragment` symbol, tag name (`string`), component +* `props` (`Props`) + — element props and `children` +* `key` (`string` or `undefined`) + — key to use + +###### Returns + +Element from your framework (`JSX.Element`). + +### `JsxDev` + +Create a development element (TypeScript type). + +###### Parameters + +* `type` (`unknown`) + — element type: `Fragment` symbol, tag name (`string`), component +* `props` (`Props`) + — element props and `children` +* `key` (`string` or `undefined`) + — key to use +* `isStaticChildren` (`boolean`) + — whether two or more children are passed (in an array), which is whether + `jsxs` or `jsx` would be used +* `source` (`Source`) + — info about source +* `self` (`unknown`) + — context object (`this`) + +### `ProcessorOptions` + +Configuration for `createProcessor` (TypeScript type). + +###### Fields + +* `SourceMapGenerator` (`SourceMapGenerator` from [`source-map`][source-map], + optional) + — add a source map (object form) as the `map` field on the resulting file + +
Expand example + + Assuming `example.mdx` from [§ Use][use] exists, then: + + ```tsx + import fs from 'node:fs/promises' + import {compile} from '@mdx-js/mdx' + import {SourceMapGenerator} from 'source-map' + + const file = await compile( + {path: 'example.mdx', value: await fs.readFile('example.mdx')}, + {SourceMapGenerator} + ) + + console.log(file.map) + ``` + + …yields: + + ```tsx + { + file: 'example.mdx', + mappings: ';;aAAaA,QAAQ;YAAQ;;;;;;;;iBAE3B', + names: ['Thing'], + sources: ['example.mdx'], + version: 3 + } + ``` + +
+ +* `baseUrl` (`URL` or `string`, optional, example: `import.meta.url`) + — use this URL as `import.meta.url` and resolve `import` and + `export … from` relative to it + +
Expand example + + Say we have a module `example.js`: + + ```tsx + import {compile} from '@mdx-js/mdx' + + const code = 'export {number} from "./data.js"\n\n# hi' + const baseUrl = 'https://a.full/url' // Typically `import.meta.url` + + console.log(String(await compile(code, {baseUrl}))) + ``` + + …now running `node example.js` yields: + + ```tsx + import {jsx as _jsx} from 'react/jsx-runtime' + export {number} from 'https://a.full/data.js' + function _createMdxContent(props) { /* … */ } + export default function MDXContent(props = {}) { /* … */ } + ``` + +
+ +* `development` (`boolean`, default: `false`) + — whether to add extra info to error messages in generated code and use the + development automatic JSX runtime (`Fragment` and `jsxDEV` from + `/jsx-dev-runtime`); + when using the webpack loader (`@mdx-js/loader`) or the Rollup integration + (`@mdx-js/rollup`) through Vite, this is automatically inferred from how + you configure those tools + +
Expand example + + Say we had some MDX that references a component that can be passed or + provided at runtime: + + ```mdx + **Note**: some stuff. + ``` + + And a module to evaluate that: + + ```tsx + import fs from 'node:fs/promises' + import {evaluate} from '@mdx-js/mdx' + import * as runtime from 'react/jsx-runtime' + + const path = 'example.mdx' + const value = await fs.readFile(path) + const MDXContent = (await evaluate({path, value}, {...runtime, baseUrl: import.meta.url})).default + + console.log(MDXContent({})) + ``` + + …running that would normally (production) yield: + + ```txt + Error: Expected component `NoteIcon` to be defined: you likely forgot to import, pass, or provide it. + at _missingMdxReference (eval at run (…/@mdx-js/mdx/lib/run.js:18:10), :27:9) + at _createMdxContent (eval at run (…/@mdx-js/mdx/lib/run.js:18:10), :15:20) + at MDXContent (eval at run (…/@mdx-js/mdx/lib/run.js:18:10), :9:9) + at main (…/example.js:11:15) + ``` + + …but if we add `development: true` to our example: + + ```diff + @@ -7,6 +7,6 @@ + import fs from 'node:fs/promises' + -import * as runtime from 'react/jsx-runtime' + +import * as runtime from 'react/jsx-dev-runtime' + import {evaluate} from '@mdx-js/mdx' + + const path = 'example.mdx' + const value = await fs.readFile(path) + -const MDXContent = (await evaluate({path, value}, {...runtime, baseUrl: import.meta.url})).default + +const MDXContent = (await evaluate({path, value}, {development: true, ...runtime, baseUrl: import.meta.url})).default + + console.log(MDXContent({})) + ``` + + …and we’d run it again, we’d get: + + ```txt + Error: Expected component `NoteIcon` to be defined: you likely forgot to import, pass, or provide it. + It’s referenced in your code at `1:9-1:21` in `example.mdx` + provide it. + at _missingMdxReference (eval at run (…/@mdx-js/mdx/lib/run.js:18:10), :27:9) + at _createMdxContent (eval at run (…/@mdx-js/mdx/lib/run.js:18:10), :15:20) + at MDXContent (eval at run (…/@mdx-js/mdx/lib/run.js:18:10), :9:9) + at main (…/example.js:11:15) + ``` + +
+ +* `elementAttributeNameCase` (`'html'` or `'react`, default: `'react'`) + — casing to use for attribute names; + HTML casing is for example `class`, `stroke-linecap`, `xml:lang`; + React casing is for example `className`, `strokeLinecap`, `xmlLang`; + for JSX components written in MDX, the author has to be aware of which + framework they use and write code accordingly; + for AST nodes generated by this project, this option configures it + +* `format` (`'md'` or `'mdx'`, default: `'mdx'`) + — format of the file; + `'md'` means treat as markdown and `'mdx'` means treat as [MDX][mdx-syntax] + +
Expand example + + ```tsx + compile('…') // Seen as MDX. + compile('…', {format: 'mdx'}) // Seen as MDX. + compile('…', {format: 'md'}) // Seen as markdown. + ``` + +
+ +* `jsx` (`boolean`, default: `false`) + — whether to keep JSX; + the default is to compile JSX away so that the resulting file is + immediately runnable. + +
Expand example + + If `file` is the contents of `example.mdx` from [§ Use][use], then: + + ```tsx + compile(file, {jsx: true}) + ``` + + …yields this difference: + + ```diff + -import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from 'react/jsx-runtime' + +/* @jsxRuntime automatic @jsxImportSource react */ + + export function Thing() { + - return _jsx(_Fragment, {children: 'World'}) + + return <>World! + } + + function _createMdxContent(props) { + const _components = { + h1: 'h1', + ...props.components + } + - return _jsxs(_components.h1, {children: ['Hello ', _jsx(Thing, {})]}) + + return <_components.h1>{"Hello "} + } + + export default function MDXContent(props = {}) { + const {wrapper: MDXLayout} = props.components || {} + return MDXLayout + - ? _jsx(MDXLayout, { + - ...props, + - children: _jsx(_createMdxContent, props) + - }) + + ? <_createMdxContent {...props} /> + : _createMdxContent(props) + } + } + ``` + +
+ +* `jsxImportSource` (`string`, default: `'react'`) + — place to import automatic JSX runtimes from; + when in the `automatic` runtime, this is used to define an import for + `Fragment`, `jsx`, `jsxDEV`, and `jsxs` + +
Expand example + + If `file` is the contents of `example.mdx` from [§ Use][use], then: + + ```tsx + compile(file, {jsxImportSource: 'preact'}) + ``` + + …yields this difference: + + ```diff + -import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from 'react/jsx-runtime' + +import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from 'preact/jsx-runtime' + ``` + +
+ +* `jsxRuntime` (`'automatic'` or `'classic'`, default: `'automatic'`) + — JSX runtime to use; + the automatic runtime compiles to `import _jsx from + '$importSource/jsx-runtime'\n_jsx('p')`; + the classic runtime compiles to calls such as `h('p')` + + > 👉 **Note**: support for the classic runtime is deprecated and will + > likely be removed in the next major version. + +
Expand example + + If `file` is the contents of `example.mdx` from [§ Use][use], then: + + ```tsx + compile(file, {jsxRuntime: 'classic'}) + ``` + + …yields this difference: + + ```diff + -import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from 'react/jsx-runtime' + +import React from 'react' + + export function Thing() { + - return _jsx(_Fragment, {children: 'World'}) + + return React.createElement(React.Fragment, null, 'World!') + } + … + ``` + +
+ +* `outputFormat` (`'function-body'` or `'program'`, default: `'program'`) + — output format to generate; + in most cases `'program'` should be used, it results in a whole program; + internally [`evaluate`][api-evaluate] uses `'function-body'` to compile to + code that can be passed to [`run`][api-run]; + in some cases, you might want what `evaluate` does in separate steps, such + as when compiling on the server and running on the client. + +
Expand example + + With a module `example.js`: + + ```tsx + import {compile} from '@mdx-js/mdx' + + const code = 'export const no = 3.14\n\n# hi {no}' + + console.log(String(await compile(code, {outputFormat: 'program'}))) // Default. + console.log(String(await compile(code, {outputFormat: 'function-body'}))) + ``` + + …yields: + + ```tsx + import {jsx as _jsx, jsxs as _jsxs} from 'react/jsx-runtime' + export const no = 3.14 + function _createMdxContent(props) { /* … */ } + export default function MDXContent(props = {}) { /* … */ } + ``` + + ```tsx + 'use strict' + const {Fragment: _Fragment, jsx: _jsx} = arguments[0] + const no = 3.14 + function _createMdxContent(props) { /* … */ } + function MDXContent(props = {}) { /* … */ } + return {no, default: MDXContent} + ``` + + The `'program'` format will use import statements to import the runtime (and + optionally provider) and use an export statement to yield the `MDXContent` + component. + + The `'function-body'` format will get the runtime (and optionally provider) + from `arguments[0]`, rewrite export statements, and use a return statement to + yield what was exported. + +
+ +* `mdExtensions` (`Array`, default: `['.md', '.markdown', '.mdown', + '.mkdn', '.mkd', '.mdwn', '.mkdown', '.ron']`) + — list of markdown extensions, with dot + affects [§ Integrations][integrations] + +* `mdxExtensions` (`Array`, default: `['.mdx']`) + — list of MDX extensions, with dot; + affects [§ Integrations][integrations] + +* `pragma` (`string`, default: `'React.createElement'`) + — pragma for JSX, used in the classic runtime as an identifier for function + calls: `` to `React.createElement('x')`; + when changing this, you should also define `pragmaFrag` and + `pragmaImportSource` too + + > 👉 **Note**: support for the classic runtime is deprecated and will + > likely be removed in the next major version. + +
Expand example + + If `file` is the contents of `example.mdx` from [§ Use][use], then: + + ```tsx + compile(file, { + jsxRuntime: 'classic', + pragma: 'preact.createElement', + pragmaFrag: 'preact.Fragment', + pragmaImportSource: 'preact/compat' + }) + ``` + + …yields this difference: + + ```diff + -import React from 'react' + +import preact from 'preact/compat' + + export function Thing() { + - return React.createElement(React.Fragment, null, 'World!') + + return preact.createElement(preact.Fragment, null, 'World!') + } + … + ``` + +
+ +* `pragmaFrag` (`string`, default: `'React.Fragment'`) + — pragma for fragment symbol, used in the classic runtime as an identifier + for unnamed calls: `<>` to `React.createElement(React.Fragment)`; + when changing this, you should also define `pragma` and `pragmaImportSource` + too + + > 👉 **Note**: support for the classic runtime is deprecated and will + > likely be removed in the next major version. + +* `pragmaImportSource` (`string`, default: `'react'`) + — where to import the identifier of `pragma` from, used in the classic + runtime; + to illustrate, when `pragma` is `'a.b'` and `pragmaImportSource` is `'c'` + the following will be generated: `import a from 'c'` and things such as + `a.b('h1', {})`; + when changing this, you should also define `pragma` and `pragmaFrag` too + + > 👉 **Note**: support for the classic runtime is deprecated and will + > likely be removed in the next major version. + +* `providerImportSource` (`string`, optional, example: `'@mdx-js/react'`) + — place to import a provider from; + normally it’s used for runtimes that support context (React, Preact), but + it can be used to inject components into the compiled code; + the module must export and identifier `useMDXComponents` which is called + without arguments to get an object of components (see + [`UseMdxComponents`][api-use-mdx-components]) + +
Expand example + + If `file` is the contents of `example.mdx` from [§ Use][use], then: + + ```tsx + compile(file, {providerImportSource: '@mdx-js/react'}) + ``` + + …yields this difference: + + ```diff + import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from 'react/jsx-runtime' + +import {useMDXComponents as _provideComponents} from '@mdx-js/react' + + export function Thing() { + return _jsx(_Fragment, {children: 'World'}) + } + + function _createMdxContent(props) { + const _components = { + h1: 'h1', + + ..._provideComponents(), + ...props.components + } + return _jsxs(_components.h1, {children: ['Hello ', _jsx(Thing, {})]}) + } + + export default function MDXContent(props = {}) { + - const {wrapper: MDXLayout} = props.components || {} + + const {wrapper: MDXLayout} = { + + ..._provideComponents(), + + ...props.components + + } + + return MDXLayout + ? _jsx(MDXLayout, {...props, children: _jsx(_createMdxContent, {})}) + : _createMdxContent() + ``` + +
+ +* `recmaPlugins` ([`PluggableList` from `unified`][unified-pluggable-list], + optional) + — list of recma plugins; + this is a new ecosystem, currently in beta, to transform [esast][] trees + (JavaScript) + +
Expand example + + ```tsx + import recmaMdxIsMdxComponent from 'recma-mdx-is-mdx-component' + + await compile(file, {recmaPlugins: [recmaMdxIsMdxComponent]}) + ``` + +
+ +* `rehypePlugins` ([`PluggableList` from `unified`][unified-pluggable-list], + optional) + — list of [rehype plugins][rehype-plugins] + +
Expand example + + ```tsx + import rehypeKatex from 'rehype-katex' // Render math with KaTeX. + import remarkMath from 'remark-math' // Support math like `$so$`. + + await compile(file, {rehypePlugins: [rehypeKatex], remarkPlugins: [remarkMath]}) + + await compile(file, { + // A plugin with options: + rehypePlugins: [[rehypeKatex, {strict: true, throwOnError: true}]], + remarkPlugins: [remarkMath] + }) + ``` + +
+ +* `remarkPlugins` ([`PluggableList` from `unified`][unified-pluggable-list], + optional) + — list of [remark plugins][remark-plugins] + +
Expand example + + ```tsx + import remarkFrontmatter from 'remark-frontmatter' // YAML and such. + import remarkGfm from 'remark-gfm' // Tables, footnotes, strikethrough, task lists, literal URLs. + + await compile(file, {remarkPlugins: [remarkGfm]}) // One plugin. + await compile(file, {remarkPlugins: [[remarkFrontmatter, 'toml']]}) // A plugin with options. + await compile(file, {remarkPlugins: [remarkGfm, remarkFrontmatter]}) // Two plugins. + await compile(file, {remarkPlugins: [[remarkGfm, {singleTilde: false}], remarkFrontmatter]}) // Two plugins, first w/ options. + ``` + +
+ +* `remarkRehypeOptions` ([`Options` from + `remark-rehype`][remark-rehype-options], optional) + — options to pass through to `remark-rehype`; + the option `allowDangerousHtml` will always be set to `true` and the MDX + nodes (see [`nodeTypes`][api-node-types]) are passed through; + In particular, you might want to pass configuration for footnotes if your + content is not in English + +
Expand example + + ```tsx + compile({value: '…'}, {remarkRehypeOptions: {clobberPrefix: 'comment-1'}}) + ``` + +
+ +* `stylePropertyNameCase` (`'css'` or `'dom`, default: `'dom'`) + — casing to use for property names in `style` objects; + CSS casing is for example `background-color` and `-webkit-line-clamp`; + DOM casing is for example `backgroundColor` and `WebkitLineClamp`; + for JSX components written in MDX, the author has to be aware of which + framework they use and write code accordingly; + for AST nodes generated by this project, this option configures it + +* `tableCellAlignToStyle` (`boolean`, default: `true`) + — turn obsolete `align` props on `td` and `th` into CSS `style` props + +### `RunOptions` + +Configuration to run compiled code (TypeScript type). + +`Fragment`, `jsx`, and `jsxs` are used when the code is compiled in production +mode (`development: false`). +`Fragment` and `jsxDEV` are used when compiled in development mode +(`development: true`). +`useMDXComponents` is used when the code is compiled with +`providerImportSource: '#'` (the exact value of this compile option doesn’t +matter). + +###### Fields + +* `Fragment` ([`Fragment`][api-fragment], **required**) + — symbol to use for fragments +* `baseUrl` (`URL` or `string`, optional, example: `import.meta.url`) + — use this URL as `import.meta.url` and resolve `import` and + `export … from` relative to it; + this option can also be given at compile time in `CompileOptions`; + you should pass this (likely at runtime), as you might get runtime errors + when using `import.meta.url` / `import` / `export … from ` otherwise +* `jsx` ([`Jsx`][api-jsx], optional) + — function to generate an element with static children in production mode +* `jsxDEV` ([`JsxDev`][api-jsx-dev], optional) + — function to generate an element in development mode +* `jsxs` ([`Jsx`][api-jsx], optional) + — function to generate an element with dynamic children in production mode +* `useMDXComponents` ([`UseMdxComponents`][api-use-mdx-components], optional) + — function to get components to use + +###### Examples + +A `/jsx-runtime` module will expose `Fragment`, `jsx`, and `jsxs`: + +```tsx +import * as runtime from 'react/jsx-runtime' + +const {default: Content} = await evaluate('# hi', {...runtime, baseUrl: import.meta.url, ...otherOptions}) + +``` + +A `/jsx-dev-runtime` module will expose `Fragment` and `jsxDEV`: + +```tsx +import * as runtime from 'react/jsx-dev-runtime' + +const {default: Content} = await evaluate('# hi', {development: true, baseUrl: import.meta.url, ...runtime, ...otherOptions}) +``` + +Our providers will expose `useMDXComponents`: + +```tsx +import * as provider from '@mdx-js/react' +import * as runtime from 'react/jsx-runtime' + +const {default: Content} = await evaluate('# hi', {...provider, ...runtime, baseUrl: import.meta.url, ...otherOptions}) +``` + +### `UseMdxComponents` + +Get components (TypeScript type). + +###### Parameters + +There are no parameters. + +###### Returns + +Components ([`MDXComponents` from `mdx/types.js`][mdx-types-components]). + +## Types + +This package is fully typed with [TypeScript][]. +It exports the additional types +[`CompileOptions`][api-compile-options], +[`EvaluateOptions`][api-evaluate-options], +[`Fragment`][api-fragment], +[`Jsx`][api-jsx], +[`JsxDev`][api-jsx-dev], +[`ProcessorOptions`][api-processor-options], +[`RunOptions`][api-run-options], and +[`UseMdxComponents`][api-use-mdx-components]. + +For types of evaluated MDX to work, make sure the TypeScript `JSX` namespace is +typed. +This is done by installing and using the types of your framework, such as +[`@types/react`](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react). +See [§ Types][types] on our website for information. + +## Architecture + +To understand what this project does, it’s very important to first understand +what unified does: please read through the [`unifiedjs/unified`][unified] readme +(the part until you hit the API section is required reading). + +`@mdx-js/mdx` is a unified pipeline — wrapped so that most folks don’t need to +know about unified: [`core.js#L65`][core]. +The processor goes through these steps: + +1. parse MDX (serialized markdown with embedded JSX, ESM, and expressions) + to mdast (markdown syntax tree) +2. transform through remark (markdown ecosystem) +3. transform mdast to hast (HTML syntax tree) +4. transform through rehype (HTML ecosystem) +5. transform hast to esast (JS syntax tree) +6. do the work needed to get a component +7. transform through recma (JS ecosystem) +8. serialize esast as JavaScript + +The *input* is MDX (serialized markdown with embedded JSX, ESM, and +expressions). +The markdown is parsed with [`micromark/micromark`][micromark] and the embedded +JS with one of its extensions +[`micromark/micromark-extension-mdxjs`][micromark-extension-mdxjs] (which in +turn uses [acorn][]). +Then [`syntax-tree/mdast-util-from-markdown`][mdast-util-from-markdown] and its +extension [`syntax-tree/mdast-util-mdx`][mdast-util-mdx] are used to turn the +results from the parser into a syntax tree: [mdast][]. + +Markdown is closest to the source format. +This is where [remark plugins][remark-plugins] come in. +Typically, there shouldn’t be much going on here. +But perhaps you want to support GFM (tables and such) or frontmatter? +Then you can add a plugin here: `remark-gfm` or `remark-frontmatter`, +respectively. + +After markdown, we go to [hast][] (HTML). +This transformation is done by +[`syntax-tree/mdast-util-to-hast`][mdast-util-to-hast]. +Wait, why, what is HTML needed? +Part of the reason is that we care about HTML semantics: we want to know that +something is an `
`, not whether it’s a link with a resource (`[text](url)`) +or a reference to a defined link definition (`[text][id]\n\n[id]: url`). +So an HTML AST is *closer* to where we want to go. +Another reason is that there are many things folks need when they go MDX -> JS, +markdown -> HTML, or even folks who only process their HTML -> HTML: use cases +other than MDX. +By having a single AST in these cases and writing a plugin that works on that +AST, that plugin can supports *all* these use cases (for example, +[`rehypejs/rehype-highlight`][rehype-highlight] for syntax highlighting or +[`rehypejs/rehype-katex`][rehype-katex] for math). +So, this is where [rehype plugins][rehype-plugins] come in: most of the plugins, +probably. + +Then we go to JavaScript: [esast][] (JS; an +AST which is compatible with estree but looks a bit more like other unist ASTs). +This transformation is done by +[`syntax-tree/hast-util-to-estree`][hast-util-to-estree]. +This is a new ecosystem that does not have utilities or plugins yet. +But it’s where `@mdx-js/mdx` does its thing: where it adds imports/exports, +where it compiles JSX away into `_jsx()` calls, and where it does the other cool +things that it provides. + +Finally, The output is serialized JavaScript. +That final step is done by [astring][], a +small and fast JS generator. + +## Compatibility + +Projects maintained by the unified collective are compatible with maintained +versions of Node.js. + +When we cut a new major release, we drop support for unmaintained versions of +Node. +This means we try to keep the current release line, `@mdx-js/mdx@^3`, +compatible with Node.js 16. + +## Security + +See [§ Security][security] on our website for information. + +## Contribute + +See [§ Contribute][contribute] on our website for ways to get started. +See [§ Support][support] for ways to get help. + +This project has a [code of conduct][coc]. +By interacting with this repository, organization, or community you agree to +abide by its terms. + +## License + +[MIT][] © Compositor and [Vercel][] + +[build-badge]: https://github.com/mdx-js/mdx/workflows/main/badge.svg + +[build]: https://github.com/mdx-js/mdx/actions + +[coverage-badge]: https://img.shields.io/codecov/c/github/mdx-js/mdx/main.svg + +[coverage]: https://codecov.io/github/mdx-js/mdx + +[downloads-badge]: https://img.shields.io/npm/dm/@mdx-js/mdx.svg + +[downloads]: https://www.npmjs.com/package/@mdx-js/mdx + +[size-badge]: https://img.shields.io/bundlejs/size/@mdx-js/mdx + +[size]: https://bundlejs.com/?q=@mdx-js/mdx + +[sponsors-badge]: https://opencollective.com/unified/sponsors/badge.svg + +[backers-badge]: https://opencollective.com/unified/backers/badge.svg + +[collective]: https://opencollective.com/unified + +[chat-badge]: https://img.shields.io/badge/chat-discussions-success.svg + +[chat]: https://github.com/mdx-js/mdx/discussions + +[npm]: https://docs.npmjs.com/cli/install + +[contribute]: https://mdxjs.com/community/contribute/ + +[support]: https://mdxjs.com/community/support/ + +[coc]: https://github.com/mdx-js/.github/blob/main/code-of-conduct.md + +[mit]: https://github.com/mdx-js/mdx/blob/main/packages/mdx/license + +[vercel]: https://vercel.com + +[source-map]: https://github.com/mozilla/source-map + +[vfile]: https://github.com/vfile/vfile + +[remark-plugins]: https://github.com/remarkjs/remark/blob/main/doc/plugins.md#list-of-plugins + +[rehype-plugins]: https://github.com/rehypejs/rehype/blob/main/doc/plugins.md#list-of-plugins + +[mdx-syntax]: https://mdxjs.com/docs/what-is-mdx/#mdx-syntax + +[use]: #use + +[unified]: https://github.com/unifiedjs/unified + +[core]: https://github.com/mdx-js/mdx/blob/main/packages/mdx/lib/core.js#L65 + +[micromark]: https://github.com/micromark/micromark + +[acorn]: https://github.com/acornjs/acorn + +[micromark-extension-mdxjs]: https://github.com/micromark/micromark-extension-mdxjs + +[mdast-util-from-markdown]: https://github.com/syntax-tree/mdast-util-from-markdown + +[mdast-util-mdx]: https://github.com/syntax-tree/mdast-util-mdx + +[mdast]: https://github.com/syntax-tree/mdast + +[mdast-util-to-hast]: https://github.com/syntax-tree/mdast-util-to-hast + +[hast]: https://github.com/syntax-tree/hast + +[hast-util-to-estree]: https://github.com/syntax-tree/hast-util-to-estree + +[rehype-highlight]: https://github.com/rehypejs/rehype-highlight + +[rehype-katex]: https://github.com/remarkjs/remark-math/tree/main/packages/rehype-katex + +[esast]: https://github.com/syntax-tree/esast + +[astring]: https://github.com/davidbonnet/astring + +[integrations]: https://mdxjs.com/getting-started/#integrations + +[using-mdx]: https://mdxjs.com/docs/using-mdx/ + +[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c + +[esmsh]: https://esm.sh + +[types]: https://mdxjs.com/getting-started/#types + +[security]: https://mdxjs.com/getting-started/#security + +[typescript]: https://www.typescriptlang.org + +[mdx-types-components]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/HEAD/types/mdx/types.d.ts#L65 + +[mdx-types-module]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/HEAD/types/mdx/types.d.ts#L101 + +[remark-rehype-options]: https://github.com/remarkjs/remark-rehype#options + +[unified-pluggable-list]: https://github.com/unifiedjs/unified#pluggablelist + +[unified-processor]: https://github.com/unifiedjs/unified#processor + +[vfile-compatible]: https://github.com/vfile/vfile#compatible + +[api-compile]: #compilefile-options + +[api-compile-options]: #compileoptions + +[api-compile-sync]: #compilesyncfile-options + +[api-create-processor]: #createprocessoroptions + +[api-evaluate]: #evaluatefile-options + +[api-evaluate-options]: #evaluateoptions + +[api-evaluate-sync]: #evaluatesyncfile-options + +[api-fragment]: #fragment + +[api-jsx]: #jsx + +[api-jsx-dev]: #jsxdev + +[api-node-types]: #nodetypes + +[api-processor-options]: #processoroptions + +[api-run]: #runcode-options + +[api-run-options]: #runoptions + +[api-run-sync]: #runsynccode-options + +[api-use-mdx-components]: #usemdxcomponents diff --git a/node_modules/@nodelib/fs.scandir/LICENSE b/node_modules/@nodelib/fs.scandir/LICENSE new file mode 100644 index 00000000..65a99946 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Denis Malinochkin + +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. diff --git a/node_modules/@nodelib/fs.scandir/README.md b/node_modules/@nodelib/fs.scandir/README.md new file mode 100644 index 00000000..e0b218b9 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/README.md @@ -0,0 +1,171 @@ +# @nodelib/fs.scandir + +> List files and directories inside the specified directory. + +## :bulb: Highlights + +The package is aimed at obtaining information about entries in the directory. + +* :moneybag: Returns useful information: `name`, `path`, `dirent` and `stats` (optional). +* :gear: On Node.js 10.10+ uses the mechanism without additional calls to determine the entry type. See [`old` and `modern` mode](#old-and-modern-mode). +* :link: Can safely work with broken symbolic links. + +## Install + +```console +npm install @nodelib/fs.scandir +``` + +## Usage + +```ts +import * as fsScandir from '@nodelib/fs.scandir'; + +fsScandir.scandir('path', (error, stats) => { /* … */ }); +``` + +## API + +### .scandir(path, [optionsOrSettings], callback) + +Returns an array of plain objects ([`Entry`](#entry)) with information about entry for provided path with standard callback-style. + +```ts +fsScandir.scandir('path', (error, entries) => { /* … */ }); +fsScandir.scandir('path', {}, (error, entries) => { /* … */ }); +fsScandir.scandir('path', new fsScandir.Settings(), (error, entries) => { /* … */ }); +``` + +### .scandirSync(path, [optionsOrSettings]) + +Returns an array of plain objects ([`Entry`](#entry)) with information about entry for provided path. + +```ts +const entries = fsScandir.scandirSync('path'); +const entries = fsScandir.scandirSync('path', {}); +const entries = fsScandir.scandirSync(('path', new fsScandir.Settings()); +``` + +#### path + +* Required: `true` +* Type: `string | Buffer | URL` + +A path to a file. If a URL is provided, it must use the `file:` protocol. + +#### optionsOrSettings + +* Required: `false` +* Type: `Options | Settings` +* Default: An instance of `Settings` class + +An [`Options`](#options) object or an instance of [`Settings`](#settingsoptions) class. + +> :book: When you pass a plain object, an instance of the `Settings` class will be created automatically. If you plan to call the method frequently, use a pre-created instance of the `Settings` class. + +### Settings([options]) + +A class of full settings of the package. + +```ts +const settings = new fsScandir.Settings({ followSymbolicLinks: false }); + +const entries = fsScandir.scandirSync('path', settings); +``` + +## Entry + +* `name` — The name of the entry (`unknown.txt`). +* `path` — The path of the entry relative to call directory (`root/unknown.txt`). +* `dirent` — An instance of [`fs.Dirent`](./src/types/index.ts) class. On Node.js below 10.10 will be emulated by [`DirentFromStats`](./src/utils/fs.ts) class. +* `stats` (optional) — An instance of `fs.Stats` class. + +For example, the `scandir` call for `tools` directory with one directory inside: + +```ts +{ + dirent: Dirent { name: 'typedoc', /* … */ }, + name: 'typedoc', + path: 'tools/typedoc' +} +``` + +## Options + +### stats + +* Type: `boolean` +* Default: `false` + +Adds an instance of `fs.Stats` class to the [`Entry`](#entry). + +> :book: Always use `fs.readdir` without the `withFileTypes` option. ??TODO?? + +### followSymbolicLinks + +* Type: `boolean` +* Default: `false` + +Follow symbolic links or not. Call `fs.stat` on symbolic link if `true`. + +### `throwErrorOnBrokenSymbolicLink` + +* Type: `boolean` +* Default: `true` + +Throw an error when symbolic link is broken if `true` or safely use `lstat` call if `false`. + +### `pathSegmentSeparator` + +* Type: `string` +* Default: `path.sep` + +By default, this package uses the correct path separator for your OS (`\` on Windows, `/` on Unix-like systems). But you can set this option to any separator character(s) that you want to use instead. + +### `fs` + +* Type: [`FileSystemAdapter`](./src/adapters/fs.ts) +* Default: A default FS methods + +By default, the built-in Node.js module (`fs`) is used to work with the file system. You can replace any method with your own. + +```ts +interface FileSystemAdapter { + lstat?: typeof fs.lstat; + stat?: typeof fs.stat; + lstatSync?: typeof fs.lstatSync; + statSync?: typeof fs.statSync; + readdir?: typeof fs.readdir; + readdirSync?: typeof fs.readdirSync; +} + +const settings = new fsScandir.Settings({ + fs: { lstat: fakeLstat } +}); +``` + +## `old` and `modern` mode + +This package has two modes that are used depending on the environment and parameters of use. + +### old + +* Node.js below `10.10` or when the `stats` option is enabled + +When working in the old mode, the directory is read first (`fs.readdir`), then the type of entries is determined (`fs.lstat` and/or `fs.stat` for symbolic links). + +### modern + +* Node.js 10.10+ and the `stats` option is disabled + +In the modern mode, reading the directory (`fs.readdir` with the `withFileTypes` option) is combined with obtaining information about its entries. An additional call for symbolic links (`fs.stat`) is still present. + +This mode makes fewer calls to the file system. It's faster. + +## Changelog + +See the [Releases section of our GitHub project](https://github.com/nodelib/nodelib/releases) for changelog for each release version. + +## License + +This software is released under the terms of the MIT license. diff --git a/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts b/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts new file mode 100644 index 00000000..827f1db0 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts @@ -0,0 +1,20 @@ +import type * as fsStat from '@nodelib/fs.stat'; +import type { Dirent, ErrnoException } from '../types'; +export interface ReaddirAsynchronousMethod { + (filepath: string, options: { + withFileTypes: true; + }, callback: (error: ErrnoException | null, files: Dirent[]) => void): void; + (filepath: string, callback: (error: ErrnoException | null, files: string[]) => void): void; +} +export interface ReaddirSynchronousMethod { + (filepath: string, options: { + withFileTypes: true; + }): Dirent[]; + (filepath: string): string[]; +} +export declare type FileSystemAdapter = fsStat.FileSystemAdapter & { + readdir: ReaddirAsynchronousMethod; + readdirSync: ReaddirSynchronousMethod; +}; +export declare const FILE_SYSTEM_ADAPTER: FileSystemAdapter; +export declare function createFileSystemAdapter(fsMethods?: Partial): FileSystemAdapter; diff --git a/node_modules/@nodelib/fs.scandir/out/adapters/fs.js b/node_modules/@nodelib/fs.scandir/out/adapters/fs.js new file mode 100644 index 00000000..f0fe0220 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/adapters/fs.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0; +const fs = require("fs"); +exports.FILE_SYSTEM_ADAPTER = { + lstat: fs.lstat, + stat: fs.stat, + lstatSync: fs.lstatSync, + statSync: fs.statSync, + readdir: fs.readdir, + readdirSync: fs.readdirSync +}; +function createFileSystemAdapter(fsMethods) { + if (fsMethods === undefined) { + return exports.FILE_SYSTEM_ADAPTER; + } + return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods); +} +exports.createFileSystemAdapter = createFileSystemAdapter; diff --git a/node_modules/@nodelib/fs.scandir/out/constants.d.ts b/node_modules/@nodelib/fs.scandir/out/constants.d.ts new file mode 100644 index 00000000..33f17497 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/constants.d.ts @@ -0,0 +1,4 @@ +/** + * IS `true` for Node.js 10.10 and greater. + */ +export declare const IS_SUPPORT_READDIR_WITH_FILE_TYPES: boolean; diff --git a/node_modules/@nodelib/fs.scandir/out/constants.js b/node_modules/@nodelib/fs.scandir/out/constants.js new file mode 100644 index 00000000..7e3d4411 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/constants.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = void 0; +const NODE_PROCESS_VERSION_PARTS = process.versions.node.split('.'); +if (NODE_PROCESS_VERSION_PARTS[0] === undefined || NODE_PROCESS_VERSION_PARTS[1] === undefined) { + throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`); +} +const MAJOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[0], 10); +const MINOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[1], 10); +const SUPPORTED_MAJOR_VERSION = 10; +const SUPPORTED_MINOR_VERSION = 10; +const IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION; +const IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION; +/** + * IS `true` for Node.js 10.10 and greater. + */ +exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR; diff --git a/node_modules/@nodelib/fs.scandir/out/index.d.ts b/node_modules/@nodelib/fs.scandir/out/index.d.ts new file mode 100644 index 00000000..b9da83ed --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/index.d.ts @@ -0,0 +1,12 @@ +import type { FileSystemAdapter, ReaddirAsynchronousMethod, ReaddirSynchronousMethod } from './adapters/fs'; +import * as async from './providers/async'; +import Settings, { Options } from './settings'; +import type { Dirent, Entry } from './types'; +declare type AsyncCallback = async.AsyncCallback; +declare function scandir(path: string, callback: AsyncCallback): void; +declare function scandir(path: string, optionsOrSettings: Options | Settings, callback: AsyncCallback): void; +declare namespace scandir { + function __promisify__(path: string, optionsOrSettings?: Options | Settings): Promise; +} +declare function scandirSync(path: string, optionsOrSettings?: Options | Settings): Entry[]; +export { scandir, scandirSync, Settings, AsyncCallback, Dirent, Entry, FileSystemAdapter, ReaddirAsynchronousMethod, ReaddirSynchronousMethod, Options }; diff --git a/node_modules/@nodelib/fs.scandir/out/index.js b/node_modules/@nodelib/fs.scandir/out/index.js new file mode 100644 index 00000000..99c70d3d --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/index.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Settings = exports.scandirSync = exports.scandir = void 0; +const async = require("./providers/async"); +const sync = require("./providers/sync"); +const settings_1 = require("./settings"); +exports.Settings = settings_1.default; +function scandir(path, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === 'function') { + async.read(path, getSettings(), optionsOrSettingsOrCallback); + return; + } + async.read(path, getSettings(optionsOrSettingsOrCallback), callback); +} +exports.scandir = scandir; +function scandirSync(path, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + return sync.read(path, settings); +} +exports.scandirSync = scandirSync; +function getSettings(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); +} diff --git a/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts b/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts new file mode 100644 index 00000000..5829676d --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts @@ -0,0 +1,7 @@ +/// +import type Settings from '../settings'; +import type { Entry } from '../types'; +export declare type AsyncCallback = (error: NodeJS.ErrnoException, entries: Entry[]) => void; +export declare function read(directory: string, settings: Settings, callback: AsyncCallback): void; +export declare function readdirWithFileTypes(directory: string, settings: Settings, callback: AsyncCallback): void; +export declare function readdir(directory: string, settings: Settings, callback: AsyncCallback): void; diff --git a/node_modules/@nodelib/fs.scandir/out/providers/async.js b/node_modules/@nodelib/fs.scandir/out/providers/async.js new file mode 100644 index 00000000..e8e2f0a9 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/providers/async.js @@ -0,0 +1,104 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.readdir = exports.readdirWithFileTypes = exports.read = void 0; +const fsStat = require("@nodelib/fs.stat"); +const rpl = require("run-parallel"); +const constants_1 = require("../constants"); +const utils = require("../utils"); +const common = require("./common"); +function read(directory, settings, callback) { + if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { + readdirWithFileTypes(directory, settings, callback); + return; + } + readdir(directory, settings, callback); +} +exports.read = read; +function readdirWithFileTypes(directory, settings, callback) { + settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => { + if (readdirError !== null) { + callFailureCallback(callback, readdirError); + return; + } + const entries = dirents.map((dirent) => ({ + dirent, + name: dirent.name, + path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator) + })); + if (!settings.followSymbolicLinks) { + callSuccessCallback(callback, entries); + return; + } + const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings)); + rpl(tasks, (rplError, rplEntries) => { + if (rplError !== null) { + callFailureCallback(callback, rplError); + return; + } + callSuccessCallback(callback, rplEntries); + }); + }); +} +exports.readdirWithFileTypes = readdirWithFileTypes; +function makeRplTaskEntry(entry, settings) { + return (done) => { + if (!entry.dirent.isSymbolicLink()) { + done(null, entry); + return; + } + settings.fs.stat(entry.path, (statError, stats) => { + if (statError !== null) { + if (settings.throwErrorOnBrokenSymbolicLink) { + done(statError); + return; + } + done(null, entry); + return; + } + entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); + done(null, entry); + }); + }; +} +function readdir(directory, settings, callback) { + settings.fs.readdir(directory, (readdirError, names) => { + if (readdirError !== null) { + callFailureCallback(callback, readdirError); + return; + } + const tasks = names.map((name) => { + const path = common.joinPathSegments(directory, name, settings.pathSegmentSeparator); + return (done) => { + fsStat.stat(path, settings.fsStatSettings, (error, stats) => { + if (error !== null) { + done(error); + return; + } + const entry = { + name, + path, + dirent: utils.fs.createDirentFromStats(name, stats) + }; + if (settings.stats) { + entry.stats = stats; + } + done(null, entry); + }); + }; + }); + rpl(tasks, (rplError, entries) => { + if (rplError !== null) { + callFailureCallback(callback, rplError); + return; + } + callSuccessCallback(callback, entries); + }); + }); +} +exports.readdir = readdir; +function callFailureCallback(callback, error) { + callback(error); +} +function callSuccessCallback(callback, result) { + callback(null, result); +} diff --git a/node_modules/@nodelib/fs.scandir/out/providers/common.d.ts b/node_modules/@nodelib/fs.scandir/out/providers/common.d.ts new file mode 100644 index 00000000..2b4d08b5 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/providers/common.d.ts @@ -0,0 +1 @@ +export declare function joinPathSegments(a: string, b: string, separator: string): string; diff --git a/node_modules/@nodelib/fs.scandir/out/providers/common.js b/node_modules/@nodelib/fs.scandir/out/providers/common.js new file mode 100644 index 00000000..8724cb59 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/providers/common.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.joinPathSegments = void 0; +function joinPathSegments(a, b, separator) { + /** + * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`). + */ + if (a.endsWith(separator)) { + return a + b; + } + return a + separator + b; +} +exports.joinPathSegments = joinPathSegments; diff --git a/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts b/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts new file mode 100644 index 00000000..e05c8f07 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts @@ -0,0 +1,5 @@ +import type Settings from '../settings'; +import type { Entry } from '../types'; +export declare function read(directory: string, settings: Settings): Entry[]; +export declare function readdirWithFileTypes(directory: string, settings: Settings): Entry[]; +export declare function readdir(directory: string, settings: Settings): Entry[]; diff --git a/node_modules/@nodelib/fs.scandir/out/providers/sync.js b/node_modules/@nodelib/fs.scandir/out/providers/sync.js new file mode 100644 index 00000000..146db343 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/providers/sync.js @@ -0,0 +1,54 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.readdir = exports.readdirWithFileTypes = exports.read = void 0; +const fsStat = require("@nodelib/fs.stat"); +const constants_1 = require("../constants"); +const utils = require("../utils"); +const common = require("./common"); +function read(directory, settings) { + if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { + return readdirWithFileTypes(directory, settings); + } + return readdir(directory, settings); +} +exports.read = read; +function readdirWithFileTypes(directory, settings) { + const dirents = settings.fs.readdirSync(directory, { withFileTypes: true }); + return dirents.map((dirent) => { + const entry = { + dirent, + name: dirent.name, + path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator) + }; + if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) { + try { + const stats = settings.fs.statSync(entry.path); + entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); + } + catch (error) { + if (settings.throwErrorOnBrokenSymbolicLink) { + throw error; + } + } + } + return entry; + }); +} +exports.readdirWithFileTypes = readdirWithFileTypes; +function readdir(directory, settings) { + const names = settings.fs.readdirSync(directory); + return names.map((name) => { + const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator); + const stats = fsStat.statSync(entryPath, settings.fsStatSettings); + const entry = { + name, + path: entryPath, + dirent: utils.fs.createDirentFromStats(name, stats) + }; + if (settings.stats) { + entry.stats = stats; + } + return entry; + }); +} +exports.readdir = readdir; diff --git a/node_modules/@nodelib/fs.scandir/out/settings.d.ts b/node_modules/@nodelib/fs.scandir/out/settings.d.ts new file mode 100644 index 00000000..a0db1155 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/settings.d.ts @@ -0,0 +1,20 @@ +import * as fsStat from '@nodelib/fs.stat'; +import * as fs from './adapters/fs'; +export interface Options { + followSymbolicLinks?: boolean; + fs?: Partial; + pathSegmentSeparator?: string; + stats?: boolean; + throwErrorOnBrokenSymbolicLink?: boolean; +} +export default class Settings { + private readonly _options; + readonly followSymbolicLinks: boolean; + readonly fs: fs.FileSystemAdapter; + readonly pathSegmentSeparator: string; + readonly stats: boolean; + readonly throwErrorOnBrokenSymbolicLink: boolean; + readonly fsStatSettings: fsStat.Settings; + constructor(_options?: Options); + private _getValue; +} diff --git a/node_modules/@nodelib/fs.scandir/out/settings.js b/node_modules/@nodelib/fs.scandir/out/settings.js new file mode 100644 index 00000000..15a3e8cd --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/settings.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const path = require("path"); +const fsStat = require("@nodelib/fs.stat"); +const fs = require("./adapters/fs"); +class Settings { + constructor(_options = {}) { + this._options = _options; + this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false); + this.fs = fs.createFileSystemAdapter(this._options.fs); + this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep); + this.stats = this._getValue(this._options.stats, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); + this.fsStatSettings = new fsStat.Settings({ + followSymbolicLink: this.followSymbolicLinks, + fs: this.fs, + throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink + }); + } + _getValue(option, value) { + return option !== null && option !== void 0 ? option : value; + } +} +exports.default = Settings; diff --git a/node_modules/@nodelib/fs.scandir/out/types/index.d.ts b/node_modules/@nodelib/fs.scandir/out/types/index.d.ts new file mode 100644 index 00000000..f326c5e5 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/types/index.d.ts @@ -0,0 +1,20 @@ +/// +import type * as fs from 'fs'; +export interface Entry { + dirent: Dirent; + name: string; + path: string; + stats?: Stats; +} +export declare type Stats = fs.Stats; +export declare type ErrnoException = NodeJS.ErrnoException; +export interface Dirent { + isBlockDevice: () => boolean; + isCharacterDevice: () => boolean; + isDirectory: () => boolean; + isFIFO: () => boolean; + isFile: () => boolean; + isSocket: () => boolean; + isSymbolicLink: () => boolean; + name: string; +} diff --git a/node_modules/@nodelib/fs.scandir/out/types/index.js b/node_modules/@nodelib/fs.scandir/out/types/index.js new file mode 100644 index 00000000..c8ad2e54 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/types/index.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts b/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts new file mode 100644 index 00000000..bb863f15 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts @@ -0,0 +1,2 @@ +import type { Dirent, Stats } from '../types'; +export declare function createDirentFromStats(name: string, stats: Stats): Dirent; diff --git a/node_modules/@nodelib/fs.scandir/out/utils/fs.js b/node_modules/@nodelib/fs.scandir/out/utils/fs.js new file mode 100644 index 00000000..ace7c74d --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/utils/fs.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createDirentFromStats = void 0; +class DirentFromStats { + constructor(name, stats) { + this.name = name; + this.isBlockDevice = stats.isBlockDevice.bind(stats); + this.isCharacterDevice = stats.isCharacterDevice.bind(stats); + this.isDirectory = stats.isDirectory.bind(stats); + this.isFIFO = stats.isFIFO.bind(stats); + this.isFile = stats.isFile.bind(stats); + this.isSocket = stats.isSocket.bind(stats); + this.isSymbolicLink = stats.isSymbolicLink.bind(stats); + } +} +function createDirentFromStats(name, stats) { + return new DirentFromStats(name, stats); +} +exports.createDirentFromStats = createDirentFromStats; diff --git a/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts b/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts new file mode 100644 index 00000000..1b41954e --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts @@ -0,0 +1,2 @@ +import * as fs from './fs'; +export { fs }; diff --git a/node_modules/@nodelib/fs.scandir/out/utils/index.js b/node_modules/@nodelib/fs.scandir/out/utils/index.js new file mode 100644 index 00000000..f5de129f --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/out/utils/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fs = void 0; +const fs = require("./fs"); +exports.fs = fs; diff --git a/node_modules/@nodelib/fs.scandir/package.json b/node_modules/@nodelib/fs.scandir/package.json new file mode 100644 index 00000000..d3a89241 --- /dev/null +++ b/node_modules/@nodelib/fs.scandir/package.json @@ -0,0 +1,44 @@ +{ + "name": "@nodelib/fs.scandir", + "version": "2.1.5", + "description": "List files and directories inside the specified directory", + "license": "MIT", + "repository": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.scandir", + "keywords": [ + "NodeLib", + "fs", + "FileSystem", + "file system", + "scandir", + "readdir", + "dirent" + ], + "engines": { + "node": ">= 8" + }, + "files": [ + "out/**", + "!out/**/*.map", + "!out/**/*.spec.*" + ], + "main": "out/index.js", + "typings": "out/index.d.ts", + "scripts": { + "clean": "rimraf {tsconfig.tsbuildinfo,out}", + "lint": "eslint \"src/**/*.ts\" --cache", + "compile": "tsc -b .", + "compile:watch": "tsc -p . --watch --sourceMap", + "test": "mocha \"out/**/*.spec.js\" -s 0", + "build": "npm run clean && npm run compile && npm run lint && npm test", + "watch": "npm run clean && npm run compile:watch" + }, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "devDependencies": { + "@nodelib/fs.macchiato": "1.0.4", + "@types/run-parallel": "^1.1.0" + }, + "gitHead": "d6a7960d5281d3dd5f8e2efba49bb552d090f562" +} diff --git a/node_modules/@nodelib/fs.stat/LICENSE b/node_modules/@nodelib/fs.stat/LICENSE new file mode 100644 index 00000000..65a99946 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Denis Malinochkin + +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. diff --git a/node_modules/@nodelib/fs.stat/README.md b/node_modules/@nodelib/fs.stat/README.md new file mode 100644 index 00000000..686f0471 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/README.md @@ -0,0 +1,126 @@ +# @nodelib/fs.stat + +> Get the status of a file with some features. + +## :bulb: Highlights + +Wrapper around standard method `fs.lstat` and `fs.stat` with some features. + +* :beginner: Normally follows symbolic link. +* :gear: Can safely work with broken symbolic link. + +## Install + +```console +npm install @nodelib/fs.stat +``` + +## Usage + +```ts +import * as fsStat from '@nodelib/fs.stat'; + +fsStat.stat('path', (error, stats) => { /* … */ }); +``` + +## API + +### .stat(path, [optionsOrSettings], callback) + +Returns an instance of `fs.Stats` class for provided path with standard callback-style. + +```ts +fsStat.stat('path', (error, stats) => { /* … */ }); +fsStat.stat('path', {}, (error, stats) => { /* … */ }); +fsStat.stat('path', new fsStat.Settings(), (error, stats) => { /* … */ }); +``` + +### .statSync(path, [optionsOrSettings]) + +Returns an instance of `fs.Stats` class for provided path. + +```ts +const stats = fsStat.stat('path'); +const stats = fsStat.stat('path', {}); +const stats = fsStat.stat('path', new fsStat.Settings()); +``` + +#### path + +* Required: `true` +* Type: `string | Buffer | URL` + +A path to a file. If a URL is provided, it must use the `file:` protocol. + +#### optionsOrSettings + +* Required: `false` +* Type: `Options | Settings` +* Default: An instance of `Settings` class + +An [`Options`](#options) object or an instance of [`Settings`](#settings) class. + +> :book: When you pass a plain object, an instance of the `Settings` class will be created automatically. If you plan to call the method frequently, use a pre-created instance of the `Settings` class. + +### Settings([options]) + +A class of full settings of the package. + +```ts +const settings = new fsStat.Settings({ followSymbolicLink: false }); + +const stats = fsStat.stat('path', settings); +``` + +## Options + +### `followSymbolicLink` + +* Type: `boolean` +* Default: `true` + +Follow symbolic link or not. Call `fs.stat` on symbolic link if `true`. + +### `markSymbolicLink` + +* Type: `boolean` +* Default: `false` + +Mark symbolic link by setting the return value of `isSymbolicLink` function to always `true` (even after `fs.stat`). + +> :book: Can be used if you want to know what is hidden behind a symbolic link, but still continue to know that it is a symbolic link. + +### `throwErrorOnBrokenSymbolicLink` + +* Type: `boolean` +* Default: `true` + +Throw an error when symbolic link is broken if `true` or safely return `lstat` call if `false`. + +### `fs` + +* Type: [`FileSystemAdapter`](./src/adapters/fs.ts) +* Default: A default FS methods + +By default, the built-in Node.js module (`fs`) is used to work with the file system. You can replace any method with your own. + +```ts +interface FileSystemAdapter { + lstat?: typeof fs.lstat; + stat?: typeof fs.stat; + lstatSync?: typeof fs.lstatSync; + statSync?: typeof fs.statSync; +} + +const settings = new fsStat.Settings({ + fs: { lstat: fakeLstat } +}); +``` + +## Changelog + +See the [Releases section of our GitHub project](https://github.com/nodelib/nodelib/releases) for changelog for each release version. + +## License + +This software is released under the terms of the MIT license. diff --git a/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts b/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts new file mode 100644 index 00000000..3af759c9 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts @@ -0,0 +1,13 @@ +/// +import * as fs from 'fs'; +import type { ErrnoException } from '../types'; +export declare type StatAsynchronousMethod = (path: string, callback: (error: ErrnoException | null, stats: fs.Stats) => void) => void; +export declare type StatSynchronousMethod = (path: string) => fs.Stats; +export interface FileSystemAdapter { + lstat: StatAsynchronousMethod; + stat: StatAsynchronousMethod; + lstatSync: StatSynchronousMethod; + statSync: StatSynchronousMethod; +} +export declare const FILE_SYSTEM_ADAPTER: FileSystemAdapter; +export declare function createFileSystemAdapter(fsMethods?: Partial): FileSystemAdapter; diff --git a/node_modules/@nodelib/fs.stat/out/adapters/fs.js b/node_modules/@nodelib/fs.stat/out/adapters/fs.js new file mode 100644 index 00000000..8dc08c8c --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/adapters/fs.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0; +const fs = require("fs"); +exports.FILE_SYSTEM_ADAPTER = { + lstat: fs.lstat, + stat: fs.stat, + lstatSync: fs.lstatSync, + statSync: fs.statSync +}; +function createFileSystemAdapter(fsMethods) { + if (fsMethods === undefined) { + return exports.FILE_SYSTEM_ADAPTER; + } + return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods); +} +exports.createFileSystemAdapter = createFileSystemAdapter; diff --git a/node_modules/@nodelib/fs.stat/out/index.d.ts b/node_modules/@nodelib/fs.stat/out/index.d.ts new file mode 100644 index 00000000..f95db995 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/index.d.ts @@ -0,0 +1,12 @@ +import type { FileSystemAdapter, StatAsynchronousMethod, StatSynchronousMethod } from './adapters/fs'; +import * as async from './providers/async'; +import Settings, { Options } from './settings'; +import type { Stats } from './types'; +declare type AsyncCallback = async.AsyncCallback; +declare function stat(path: string, callback: AsyncCallback): void; +declare function stat(path: string, optionsOrSettings: Options | Settings, callback: AsyncCallback): void; +declare namespace stat { + function __promisify__(path: string, optionsOrSettings?: Options | Settings): Promise; +} +declare function statSync(path: string, optionsOrSettings?: Options | Settings): Stats; +export { Settings, stat, statSync, AsyncCallback, FileSystemAdapter, StatAsynchronousMethod, StatSynchronousMethod, Options, Stats }; diff --git a/node_modules/@nodelib/fs.stat/out/index.js b/node_modules/@nodelib/fs.stat/out/index.js new file mode 100644 index 00000000..b23f7510 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/index.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.statSync = exports.stat = exports.Settings = void 0; +const async = require("./providers/async"); +const sync = require("./providers/sync"); +const settings_1 = require("./settings"); +exports.Settings = settings_1.default; +function stat(path, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === 'function') { + async.read(path, getSettings(), optionsOrSettingsOrCallback); + return; + } + async.read(path, getSettings(optionsOrSettingsOrCallback), callback); +} +exports.stat = stat; +function statSync(path, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + return sync.read(path, settings); +} +exports.statSync = statSync; +function getSettings(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); +} diff --git a/node_modules/@nodelib/fs.stat/out/providers/async.d.ts b/node_modules/@nodelib/fs.stat/out/providers/async.d.ts new file mode 100644 index 00000000..85423ce1 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/providers/async.d.ts @@ -0,0 +1,4 @@ +import type Settings from '../settings'; +import type { ErrnoException, Stats } from '../types'; +export declare type AsyncCallback = (error: ErrnoException, stats: Stats) => void; +export declare function read(path: string, settings: Settings, callback: AsyncCallback): void; diff --git a/node_modules/@nodelib/fs.stat/out/providers/async.js b/node_modules/@nodelib/fs.stat/out/providers/async.js new file mode 100644 index 00000000..983ff0e6 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/providers/async.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.read = void 0; +function read(path, settings, callback) { + settings.fs.lstat(path, (lstatError, lstat) => { + if (lstatError !== null) { + callFailureCallback(callback, lstatError); + return; + } + if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { + callSuccessCallback(callback, lstat); + return; + } + settings.fs.stat(path, (statError, stat) => { + if (statError !== null) { + if (settings.throwErrorOnBrokenSymbolicLink) { + callFailureCallback(callback, statError); + return; + } + callSuccessCallback(callback, lstat); + return; + } + if (settings.markSymbolicLink) { + stat.isSymbolicLink = () => true; + } + callSuccessCallback(callback, stat); + }); + }); +} +exports.read = read; +function callFailureCallback(callback, error) { + callback(error); +} +function callSuccessCallback(callback, result) { + callback(null, result); +} diff --git a/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts b/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts new file mode 100644 index 00000000..428c3d79 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts @@ -0,0 +1,3 @@ +import type Settings from '../settings'; +import type { Stats } from '../types'; +export declare function read(path: string, settings: Settings): Stats; diff --git a/node_modules/@nodelib/fs.stat/out/providers/sync.js b/node_modules/@nodelib/fs.stat/out/providers/sync.js new file mode 100644 index 00000000..1521c361 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/providers/sync.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.read = void 0; +function read(path, settings) { + const lstat = settings.fs.lstatSync(path); + if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { + return lstat; + } + try { + const stat = settings.fs.statSync(path); + if (settings.markSymbolicLink) { + stat.isSymbolicLink = () => true; + } + return stat; + } + catch (error) { + if (!settings.throwErrorOnBrokenSymbolicLink) { + return lstat; + } + throw error; + } +} +exports.read = read; diff --git a/node_modules/@nodelib/fs.stat/out/settings.d.ts b/node_modules/@nodelib/fs.stat/out/settings.d.ts new file mode 100644 index 00000000..f4b3d444 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/settings.d.ts @@ -0,0 +1,16 @@ +import * as fs from './adapters/fs'; +export interface Options { + followSymbolicLink?: boolean; + fs?: Partial; + markSymbolicLink?: boolean; + throwErrorOnBrokenSymbolicLink?: boolean; +} +export default class Settings { + private readonly _options; + readonly followSymbolicLink: boolean; + readonly fs: fs.FileSystemAdapter; + readonly markSymbolicLink: boolean; + readonly throwErrorOnBrokenSymbolicLink: boolean; + constructor(_options?: Options); + private _getValue; +} diff --git a/node_modules/@nodelib/fs.stat/out/settings.js b/node_modules/@nodelib/fs.stat/out/settings.js new file mode 100644 index 00000000..111ec09c --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/settings.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const fs = require("./adapters/fs"); +class Settings { + constructor(_options = {}) { + this._options = _options; + this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true); + this.fs = fs.createFileSystemAdapter(this._options.fs); + this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); + } + _getValue(option, value) { + return option !== null && option !== void 0 ? option : value; + } +} +exports.default = Settings; diff --git a/node_modules/@nodelib/fs.stat/out/types/index.d.ts b/node_modules/@nodelib/fs.stat/out/types/index.d.ts new file mode 100644 index 00000000..74c08ed2 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/types/index.d.ts @@ -0,0 +1,4 @@ +/// +import type * as fs from 'fs'; +export declare type Stats = fs.Stats; +export declare type ErrnoException = NodeJS.ErrnoException; diff --git a/node_modules/@nodelib/fs.stat/out/types/index.js b/node_modules/@nodelib/fs.stat/out/types/index.js new file mode 100644 index 00000000..c8ad2e54 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/out/types/index.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@nodelib/fs.stat/package.json b/node_modules/@nodelib/fs.stat/package.json new file mode 100644 index 00000000..f2540c28 --- /dev/null +++ b/node_modules/@nodelib/fs.stat/package.json @@ -0,0 +1,37 @@ +{ + "name": "@nodelib/fs.stat", + "version": "2.0.5", + "description": "Get the status of a file with some features", + "license": "MIT", + "repository": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.stat", + "keywords": [ + "NodeLib", + "fs", + "FileSystem", + "file system", + "stat" + ], + "engines": { + "node": ">= 8" + }, + "files": [ + "out/**", + "!out/**/*.map", + "!out/**/*.spec.*" + ], + "main": "out/index.js", + "typings": "out/index.d.ts", + "scripts": { + "clean": "rimraf {tsconfig.tsbuildinfo,out}", + "lint": "eslint \"src/**/*.ts\" --cache", + "compile": "tsc -b .", + "compile:watch": "tsc -p . --watch --sourceMap", + "test": "mocha \"out/**/*.spec.js\" -s 0", + "build": "npm run clean && npm run compile && npm run lint && npm test", + "watch": "npm run clean && npm run compile:watch" + }, + "devDependencies": { + "@nodelib/fs.macchiato": "1.0.4" + }, + "gitHead": "d6a7960d5281d3dd5f8e2efba49bb552d090f562" +} diff --git a/node_modules/@nodelib/fs.walk/LICENSE b/node_modules/@nodelib/fs.walk/LICENSE new file mode 100644 index 00000000..65a99946 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Denis Malinochkin + +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. diff --git a/node_modules/@nodelib/fs.walk/README.md b/node_modules/@nodelib/fs.walk/README.md new file mode 100644 index 00000000..6ccc08db --- /dev/null +++ b/node_modules/@nodelib/fs.walk/README.md @@ -0,0 +1,215 @@ +# @nodelib/fs.walk + +> A library for efficiently walking a directory recursively. + +## :bulb: Highlights + +* :moneybag: Returns useful information: `name`, `path`, `dirent` and `stats` (optional). +* :rocket: On Node.js 10.10+ uses the mechanism without additional calls to determine the entry type for performance reasons. See [`old` and `modern` mode](https://github.com/nodelib/nodelib/blob/master/packages/fs/fs.scandir/README.md#old-and-modern-mode). +* :gear: Built-in directories/files and error filtering system. +* :link: Can safely work with broken symbolic links. + +## Install + +```console +npm install @nodelib/fs.walk +``` + +## Usage + +```ts +import * as fsWalk from '@nodelib/fs.walk'; + +fsWalk.walk('path', (error, entries) => { /* … */ }); +``` + +## API + +### .walk(path, [optionsOrSettings], callback) + +Reads the directory recursively and asynchronously. Requires a callback function. + +> :book: If you want to use the Promise API, use `util.promisify`. + +```ts +fsWalk.walk('path', (error, entries) => { /* … */ }); +fsWalk.walk('path', {}, (error, entries) => { /* … */ }); +fsWalk.walk('path', new fsWalk.Settings(), (error, entries) => { /* … */ }); +``` + +### .walkStream(path, [optionsOrSettings]) + +Reads the directory recursively and asynchronously. [Readable Stream](https://nodejs.org/dist/latest-v12.x/docs/api/stream.html#stream_readable_streams) is used as a provider. + +```ts +const stream = fsWalk.walkStream('path'); +const stream = fsWalk.walkStream('path', {}); +const stream = fsWalk.walkStream('path', new fsWalk.Settings()); +``` + +### .walkSync(path, [optionsOrSettings]) + +Reads the directory recursively and synchronously. Returns an array of entries. + +```ts +const entries = fsWalk.walkSync('path'); +const entries = fsWalk.walkSync('path', {}); +const entries = fsWalk.walkSync('path', new fsWalk.Settings()); +``` + +#### path + +* Required: `true` +* Type: `string | Buffer | URL` + +A path to a file. If a URL is provided, it must use the `file:` protocol. + +#### optionsOrSettings + +* Required: `false` +* Type: `Options | Settings` +* Default: An instance of `Settings` class + +An [`Options`](#options) object or an instance of [`Settings`](#settings) class. + +> :book: When you pass a plain object, an instance of the `Settings` class will be created automatically. If you plan to call the method frequently, use a pre-created instance of the `Settings` class. + +### Settings([options]) + +A class of full settings of the package. + +```ts +const settings = new fsWalk.Settings({ followSymbolicLinks: true }); + +const entries = fsWalk.walkSync('path', settings); +``` + +## Entry + +* `name` — The name of the entry (`unknown.txt`). +* `path` — The path of the entry relative to call directory (`root/unknown.txt`). +* `dirent` — An instance of [`fs.Dirent`](./src/types/index.ts) class. +* [`stats`] — An instance of `fs.Stats` class. + +## Options + +### basePath + +* Type: `string` +* Default: `undefined` + +By default, all paths are built relative to the root path. You can use this option to set custom root path. + +In the example below we read the files from the `root` directory, but in the results the root path will be `custom`. + +```ts +fsWalk.walkSync('root'); // → ['root/file.txt'] +fsWalk.walkSync('root', { basePath: 'custom' }); // → ['custom/file.txt'] +``` + +### concurrency + +* Type: `number` +* Default: `Infinity` + +The maximum number of concurrent calls to `fs.readdir`. + +> :book: The higher the number, the higher performance and the load on the File System. If you want to read in quiet mode, set the value to `4 * os.cpus().length` (4 is default size of [thread pool work scheduling](http://docs.libuv.org/en/v1.x/threadpool.html#thread-pool-work-scheduling)). + +### deepFilter + +* Type: [`DeepFilterFunction`](./src/settings.ts) +* Default: `undefined` + +A function that indicates whether the directory will be read deep or not. + +```ts +// Skip all directories that starts with `node_modules` +const filter: DeepFilterFunction = (entry) => !entry.path.startsWith('node_modules'); +``` + +### entryFilter + +* Type: [`EntryFilterFunction`](./src/settings.ts) +* Default: `undefined` + +A function that indicates whether the entry will be included to results or not. + +```ts +// Exclude all `.js` files from results +const filter: EntryFilterFunction = (entry) => !entry.name.endsWith('.js'); +``` + +### errorFilter + +* Type: [`ErrorFilterFunction`](./src/settings.ts) +* Default: `undefined` + +A function that allows you to skip errors that occur when reading directories. + +For example, you can skip `ENOENT` errors if required: + +```ts +// Skip all ENOENT errors +const filter: ErrorFilterFunction = (error) => error.code == 'ENOENT'; +``` + +### stats + +* Type: `boolean` +* Default: `false` + +Adds an instance of `fs.Stats` class to the [`Entry`](#entry). + +> :book: Always use `fs.readdir` with additional `fs.lstat/fs.stat` calls to determine the entry type. + +### followSymbolicLinks + +* Type: `boolean` +* Default: `false` + +Follow symbolic links or not. Call `fs.stat` on symbolic link if `true`. + +### `throwErrorOnBrokenSymbolicLink` + +* Type: `boolean` +* Default: `true` + +Throw an error when symbolic link is broken if `true` or safely return `lstat` call if `false`. + +### `pathSegmentSeparator` + +* Type: `string` +* Default: `path.sep` + +By default, this package uses the correct path separator for your OS (`\` on Windows, `/` on Unix-like systems). But you can set this option to any separator character(s) that you want to use instead. + +### `fs` + +* Type: `FileSystemAdapter` +* Default: A default FS methods + +By default, the built-in Node.js module (`fs`) is used to work with the file system. You can replace any method with your own. + +```ts +interface FileSystemAdapter { + lstat: typeof fs.lstat; + stat: typeof fs.stat; + lstatSync: typeof fs.lstatSync; + statSync: typeof fs.statSync; + readdir: typeof fs.readdir; + readdirSync: typeof fs.readdirSync; +} + +const settings = new fsWalk.Settings({ + fs: { lstat: fakeLstat } +}); +``` + +## Changelog + +See the [Releases section of our GitHub project](https://github.com/nodelib/nodelib/releases) for changelog for each release version. + +## License + +This software is released under the terms of the MIT license. diff --git a/node_modules/@nodelib/fs.walk/out/index.d.ts b/node_modules/@nodelib/fs.walk/out/index.d.ts new file mode 100644 index 00000000..8864c7bf --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/index.d.ts @@ -0,0 +1,14 @@ +/// +import type { Readable } from 'stream'; +import type { Dirent, FileSystemAdapter } from '@nodelib/fs.scandir'; +import { AsyncCallback } from './providers/async'; +import Settings, { DeepFilterFunction, EntryFilterFunction, ErrorFilterFunction, Options } from './settings'; +import type { Entry } from './types'; +declare function walk(directory: string, callback: AsyncCallback): void; +declare function walk(directory: string, optionsOrSettings: Options | Settings, callback: AsyncCallback): void; +declare namespace walk { + function __promisify__(directory: string, optionsOrSettings?: Options | Settings): Promise; +} +declare function walkSync(directory: string, optionsOrSettings?: Options | Settings): Entry[]; +declare function walkStream(directory: string, optionsOrSettings?: Options | Settings): Readable; +export { walk, walkSync, walkStream, Settings, AsyncCallback, Dirent, Entry, FileSystemAdapter, Options, DeepFilterFunction, EntryFilterFunction, ErrorFilterFunction }; diff --git a/node_modules/@nodelib/fs.walk/out/index.js b/node_modules/@nodelib/fs.walk/out/index.js new file mode 100644 index 00000000..15207874 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/index.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Settings = exports.walkStream = exports.walkSync = exports.walk = void 0; +const async_1 = require("./providers/async"); +const stream_1 = require("./providers/stream"); +const sync_1 = require("./providers/sync"); +const settings_1 = require("./settings"); +exports.Settings = settings_1.default; +function walk(directory, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === 'function') { + new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback); + return; + } + new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback); +} +exports.walk = walk; +function walkSync(directory, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + const provider = new sync_1.default(directory, settings); + return provider.read(); +} +exports.walkSync = walkSync; +function walkStream(directory, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + const provider = new stream_1.default(directory, settings); + return provider.read(); +} +exports.walkStream = walkStream; +function getSettings(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); +} diff --git a/node_modules/@nodelib/fs.walk/out/providers/async.d.ts b/node_modules/@nodelib/fs.walk/out/providers/async.d.ts new file mode 100644 index 00000000..0f6717d7 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/providers/async.d.ts @@ -0,0 +1,12 @@ +import AsyncReader from '../readers/async'; +import type Settings from '../settings'; +import type { Entry, Errno } from '../types'; +export declare type AsyncCallback = (error: Errno, entries: Entry[]) => void; +export default class AsyncProvider { + private readonly _root; + private readonly _settings; + protected readonly _reader: AsyncReader; + private readonly _storage; + constructor(_root: string, _settings: Settings); + read(callback: AsyncCallback): void; +} diff --git a/node_modules/@nodelib/fs.walk/out/providers/async.js b/node_modules/@nodelib/fs.walk/out/providers/async.js new file mode 100644 index 00000000..51d3be51 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/providers/async.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const async_1 = require("../readers/async"); +class AsyncProvider { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new async_1.default(this._root, this._settings); + this._storage = []; + } + read(callback) { + this._reader.onError((error) => { + callFailureCallback(callback, error); + }); + this._reader.onEntry((entry) => { + this._storage.push(entry); + }); + this._reader.onEnd(() => { + callSuccessCallback(callback, this._storage); + }); + this._reader.read(); + } +} +exports.default = AsyncProvider; +function callFailureCallback(callback, error) { + callback(error); +} +function callSuccessCallback(callback, entries) { + callback(null, entries); +} diff --git a/node_modules/@nodelib/fs.walk/out/providers/index.d.ts b/node_modules/@nodelib/fs.walk/out/providers/index.d.ts new file mode 100644 index 00000000..874f60c5 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/providers/index.d.ts @@ -0,0 +1,4 @@ +import AsyncProvider from './async'; +import StreamProvider from './stream'; +import SyncProvider from './sync'; +export { AsyncProvider, StreamProvider, SyncProvider }; diff --git a/node_modules/@nodelib/fs.walk/out/providers/index.js b/node_modules/@nodelib/fs.walk/out/providers/index.js new file mode 100644 index 00000000..4c2529ce --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/providers/index.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SyncProvider = exports.StreamProvider = exports.AsyncProvider = void 0; +const async_1 = require("./async"); +exports.AsyncProvider = async_1.default; +const stream_1 = require("./stream"); +exports.StreamProvider = stream_1.default; +const sync_1 = require("./sync"); +exports.SyncProvider = sync_1.default; diff --git a/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts b/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts new file mode 100644 index 00000000..294185f8 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts @@ -0,0 +1,12 @@ +/// +import { Readable } from 'stream'; +import AsyncReader from '../readers/async'; +import type Settings from '../settings'; +export default class StreamProvider { + private readonly _root; + private readonly _settings; + protected readonly _reader: AsyncReader; + protected readonly _stream: Readable; + constructor(_root: string, _settings: Settings); + read(): Readable; +} diff --git a/node_modules/@nodelib/fs.walk/out/providers/stream.js b/node_modules/@nodelib/fs.walk/out/providers/stream.js new file mode 100644 index 00000000..51298b0f --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/providers/stream.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const stream_1 = require("stream"); +const async_1 = require("../readers/async"); +class StreamProvider { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new async_1.default(this._root, this._settings); + this._stream = new stream_1.Readable({ + objectMode: true, + read: () => { }, + destroy: () => { + if (!this._reader.isDestroyed) { + this._reader.destroy(); + } + } + }); + } + read() { + this._reader.onError((error) => { + this._stream.emit('error', error); + }); + this._reader.onEntry((entry) => { + this._stream.push(entry); + }); + this._reader.onEnd(() => { + this._stream.push(null); + }); + this._reader.read(); + return this._stream; + } +} +exports.default = StreamProvider; diff --git a/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts b/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts new file mode 100644 index 00000000..551c42e4 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts @@ -0,0 +1,10 @@ +import SyncReader from '../readers/sync'; +import type Settings from '../settings'; +import type { Entry } from '../types'; +export default class SyncProvider { + private readonly _root; + private readonly _settings; + protected readonly _reader: SyncReader; + constructor(_root: string, _settings: Settings); + read(): Entry[]; +} diff --git a/node_modules/@nodelib/fs.walk/out/providers/sync.js b/node_modules/@nodelib/fs.walk/out/providers/sync.js new file mode 100644 index 00000000..faab6ca2 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/providers/sync.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const sync_1 = require("../readers/sync"); +class SyncProvider { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new sync_1.default(this._root, this._settings); + } + read() { + return this._reader.read(); + } +} +exports.default = SyncProvider; diff --git a/node_modules/@nodelib/fs.walk/out/readers/async.d.ts b/node_modules/@nodelib/fs.walk/out/readers/async.d.ts new file mode 100644 index 00000000..9acf4e6c --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/readers/async.d.ts @@ -0,0 +1,30 @@ +/// +import { EventEmitter } from 'events'; +import * as fsScandir from '@nodelib/fs.scandir'; +import type Settings from '../settings'; +import type { Entry, Errno } from '../types'; +import Reader from './reader'; +declare type EntryEventCallback = (entry: Entry) => void; +declare type ErrorEventCallback = (error: Errno) => void; +declare type EndEventCallback = () => void; +export default class AsyncReader extends Reader { + protected readonly _settings: Settings; + protected readonly _scandir: typeof fsScandir.scandir; + protected readonly _emitter: EventEmitter; + private readonly _queue; + private _isFatalError; + private _isDestroyed; + constructor(_root: string, _settings: Settings); + read(): EventEmitter; + get isDestroyed(): boolean; + destroy(): void; + onEntry(callback: EntryEventCallback): void; + onError(callback: ErrorEventCallback): void; + onEnd(callback: EndEventCallback): void; + private _pushToQueue; + private _worker; + private _handleError; + private _handleEntry; + private _emitEntry; +} +export {}; diff --git a/node_modules/@nodelib/fs.walk/out/readers/async.js b/node_modules/@nodelib/fs.walk/out/readers/async.js new file mode 100644 index 00000000..ebe8dd57 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/readers/async.js @@ -0,0 +1,97 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const events_1 = require("events"); +const fsScandir = require("@nodelib/fs.scandir"); +const fastq = require("fastq"); +const common = require("./common"); +const reader_1 = require("./reader"); +class AsyncReader extends reader_1.default { + constructor(_root, _settings) { + super(_root, _settings); + this._settings = _settings; + this._scandir = fsScandir.scandir; + this._emitter = new events_1.EventEmitter(); + this._queue = fastq(this._worker.bind(this), this._settings.concurrency); + this._isFatalError = false; + this._isDestroyed = false; + this._queue.drain = () => { + if (!this._isFatalError) { + this._emitter.emit('end'); + } + }; + } + read() { + this._isFatalError = false; + this._isDestroyed = false; + setImmediate(() => { + this._pushToQueue(this._root, this._settings.basePath); + }); + return this._emitter; + } + get isDestroyed() { + return this._isDestroyed; + } + destroy() { + if (this._isDestroyed) { + throw new Error('The reader is already destroyed'); + } + this._isDestroyed = true; + this._queue.killAndDrain(); + } + onEntry(callback) { + this._emitter.on('entry', callback); + } + onError(callback) { + this._emitter.once('error', callback); + } + onEnd(callback) { + this._emitter.once('end', callback); + } + _pushToQueue(directory, base) { + const queueItem = { directory, base }; + this._queue.push(queueItem, (error) => { + if (error !== null) { + this._handleError(error); + } + }); + } + _worker(item, done) { + this._scandir(item.directory, this._settings.fsScandirSettings, (error, entries) => { + if (error !== null) { + done(error, undefined); + return; + } + for (const entry of entries) { + this._handleEntry(entry, item.base); + } + done(null, undefined); + }); + } + _handleError(error) { + if (this._isDestroyed || !common.isFatalError(this._settings, error)) { + return; + } + this._isFatalError = true; + this._isDestroyed = true; + this._emitter.emit('error', error); + } + _handleEntry(entry, base) { + if (this._isDestroyed || this._isFatalError) { + return; + } + const fullpath = entry.path; + if (base !== undefined) { + entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); + } + if (common.isAppliedFilter(this._settings.entryFilter, entry)) { + this._emitEntry(entry); + } + if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { + this._pushToQueue(fullpath, base === undefined ? undefined : entry.path); + } + } + _emitEntry(entry) { + this._emitter.emit('entry', entry); + } +} +exports.default = AsyncReader; diff --git a/node_modules/@nodelib/fs.walk/out/readers/common.d.ts b/node_modules/@nodelib/fs.walk/out/readers/common.d.ts new file mode 100644 index 00000000..5985f97c --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/readers/common.d.ts @@ -0,0 +1,7 @@ +import type { FilterFunction } from '../settings'; +import type Settings from '../settings'; +import type { Errno } from '../types'; +export declare function isFatalError(settings: Settings, error: Errno): boolean; +export declare function isAppliedFilter(filter: FilterFunction | null, value: T): boolean; +export declare function replacePathSegmentSeparator(filepath: string, separator: string): string; +export declare function joinPathSegments(a: string, b: string, separator: string): string; diff --git a/node_modules/@nodelib/fs.walk/out/readers/common.js b/node_modules/@nodelib/fs.walk/out/readers/common.js new file mode 100644 index 00000000..a93572f4 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/readers/common.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.joinPathSegments = exports.replacePathSegmentSeparator = exports.isAppliedFilter = exports.isFatalError = void 0; +function isFatalError(settings, error) { + if (settings.errorFilter === null) { + return true; + } + return !settings.errorFilter(error); +} +exports.isFatalError = isFatalError; +function isAppliedFilter(filter, value) { + return filter === null || filter(value); +} +exports.isAppliedFilter = isAppliedFilter; +function replacePathSegmentSeparator(filepath, separator) { + return filepath.split(/[/\\]/).join(separator); +} +exports.replacePathSegmentSeparator = replacePathSegmentSeparator; +function joinPathSegments(a, b, separator) { + if (a === '') { + return b; + } + /** + * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`). + */ + if (a.endsWith(separator)) { + return a + b; + } + return a + separator + b; +} +exports.joinPathSegments = joinPathSegments; diff --git a/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts b/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts new file mode 100644 index 00000000..e1f383b2 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts @@ -0,0 +1,6 @@ +import type Settings from '../settings'; +export default class Reader { + protected readonly _root: string; + protected readonly _settings: Settings; + constructor(_root: string, _settings: Settings); +} diff --git a/node_modules/@nodelib/fs.walk/out/readers/reader.js b/node_modules/@nodelib/fs.walk/out/readers/reader.js new file mode 100644 index 00000000..782f07cb --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/readers/reader.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const common = require("./common"); +class Reader { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator); + } +} +exports.default = Reader; diff --git a/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts b/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts new file mode 100644 index 00000000..af410335 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts @@ -0,0 +1,15 @@ +import * as fsScandir from '@nodelib/fs.scandir'; +import type { Entry } from '../types'; +import Reader from './reader'; +export default class SyncReader extends Reader { + protected readonly _scandir: typeof fsScandir.scandirSync; + private readonly _storage; + private readonly _queue; + read(): Entry[]; + private _pushToQueue; + private _handleQueue; + private _handleDirectory; + private _handleError; + private _handleEntry; + private _pushToStorage; +} diff --git a/node_modules/@nodelib/fs.walk/out/readers/sync.js b/node_modules/@nodelib/fs.walk/out/readers/sync.js new file mode 100644 index 00000000..9a8d5a6f --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/readers/sync.js @@ -0,0 +1,59 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const fsScandir = require("@nodelib/fs.scandir"); +const common = require("./common"); +const reader_1 = require("./reader"); +class SyncReader extends reader_1.default { + constructor() { + super(...arguments); + this._scandir = fsScandir.scandirSync; + this._storage = []; + this._queue = new Set(); + } + read() { + this._pushToQueue(this._root, this._settings.basePath); + this._handleQueue(); + return this._storage; + } + _pushToQueue(directory, base) { + this._queue.add({ directory, base }); + } + _handleQueue() { + for (const item of this._queue.values()) { + this._handleDirectory(item.directory, item.base); + } + } + _handleDirectory(directory, base) { + try { + const entries = this._scandir(directory, this._settings.fsScandirSettings); + for (const entry of entries) { + this._handleEntry(entry, base); + } + } + catch (error) { + this._handleError(error); + } + } + _handleError(error) { + if (!common.isFatalError(this._settings, error)) { + return; + } + throw error; + } + _handleEntry(entry, base) { + const fullpath = entry.path; + if (base !== undefined) { + entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); + } + if (common.isAppliedFilter(this._settings.entryFilter, entry)) { + this._pushToStorage(entry); + } + if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { + this._pushToQueue(fullpath, base === undefined ? undefined : entry.path); + } + } + _pushToStorage(entry) { + this._storage.push(entry); + } +} +exports.default = SyncReader; diff --git a/node_modules/@nodelib/fs.walk/out/settings.d.ts b/node_modules/@nodelib/fs.walk/out/settings.d.ts new file mode 100644 index 00000000..d1c4b45f --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/settings.d.ts @@ -0,0 +1,30 @@ +import * as fsScandir from '@nodelib/fs.scandir'; +import type { Entry, Errno } from './types'; +export declare type FilterFunction = (value: T) => boolean; +export declare type DeepFilterFunction = FilterFunction; +export declare type EntryFilterFunction = FilterFunction; +export declare type ErrorFilterFunction = FilterFunction; +export interface Options { + basePath?: string; + concurrency?: number; + deepFilter?: DeepFilterFunction; + entryFilter?: EntryFilterFunction; + errorFilter?: ErrorFilterFunction; + followSymbolicLinks?: boolean; + fs?: Partial; + pathSegmentSeparator?: string; + stats?: boolean; + throwErrorOnBrokenSymbolicLink?: boolean; +} +export default class Settings { + private readonly _options; + readonly basePath?: string; + readonly concurrency: number; + readonly deepFilter: DeepFilterFunction | null; + readonly entryFilter: EntryFilterFunction | null; + readonly errorFilter: ErrorFilterFunction | null; + readonly pathSegmentSeparator: string; + readonly fsScandirSettings: fsScandir.Settings; + constructor(_options?: Options); + private _getValue; +} diff --git a/node_modules/@nodelib/fs.walk/out/settings.js b/node_modules/@nodelib/fs.walk/out/settings.js new file mode 100644 index 00000000..d7a85c81 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/settings.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const path = require("path"); +const fsScandir = require("@nodelib/fs.scandir"); +class Settings { + constructor(_options = {}) { + this._options = _options; + this.basePath = this._getValue(this._options.basePath, undefined); + this.concurrency = this._getValue(this._options.concurrency, Number.POSITIVE_INFINITY); + this.deepFilter = this._getValue(this._options.deepFilter, null); + this.entryFilter = this._getValue(this._options.entryFilter, null); + this.errorFilter = this._getValue(this._options.errorFilter, null); + this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep); + this.fsScandirSettings = new fsScandir.Settings({ + followSymbolicLinks: this._options.followSymbolicLinks, + fs: this._options.fs, + pathSegmentSeparator: this._options.pathSegmentSeparator, + stats: this._options.stats, + throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink + }); + } + _getValue(option, value) { + return option !== null && option !== void 0 ? option : value; + } +} +exports.default = Settings; diff --git a/node_modules/@nodelib/fs.walk/out/types/index.d.ts b/node_modules/@nodelib/fs.walk/out/types/index.d.ts new file mode 100644 index 00000000..6ee9bd3f --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/types/index.d.ts @@ -0,0 +1,8 @@ +/// +import type * as scandir from '@nodelib/fs.scandir'; +export declare type Entry = scandir.Entry; +export declare type Errno = NodeJS.ErrnoException; +export interface QueueItem { + directory: string; + base?: string; +} diff --git a/node_modules/@nodelib/fs.walk/out/types/index.js b/node_modules/@nodelib/fs.walk/out/types/index.js new file mode 100644 index 00000000..c8ad2e54 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/out/types/index.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@nodelib/fs.walk/package.json b/node_modules/@nodelib/fs.walk/package.json new file mode 100644 index 00000000..86bfce48 --- /dev/null +++ b/node_modules/@nodelib/fs.walk/package.json @@ -0,0 +1,44 @@ +{ + "name": "@nodelib/fs.walk", + "version": "1.2.8", + "description": "A library for efficiently walking a directory recursively", + "license": "MIT", + "repository": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.walk", + "keywords": [ + "NodeLib", + "fs", + "FileSystem", + "file system", + "walk", + "scanner", + "crawler" + ], + "engines": { + "node": ">= 8" + }, + "files": [ + "out/**", + "!out/**/*.map", + "!out/**/*.spec.*", + "!out/**/tests/**" + ], + "main": "out/index.js", + "typings": "out/index.d.ts", + "scripts": { + "clean": "rimraf {tsconfig.tsbuildinfo,out}", + "lint": "eslint \"src/**/*.ts\" --cache", + "compile": "tsc -b .", + "compile:watch": "tsc -p . --watch --sourceMap", + "test": "mocha \"out/**/*.spec.js\" -s 0", + "build": "npm run clean && npm run compile && npm run lint && npm test", + "watch": "npm run clean && npm run compile:watch" + }, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "devDependencies": { + "@nodelib/fs.macchiato": "1.0.4" + }, + "gitHead": "1e5bad48565da2b06b8600e744324ea240bf49d8" +} diff --git a/node_modules/@pnpm/config.env-replace/env-replace.docs.mdx b/node_modules/@pnpm/config.env-replace/env-replace.docs.mdx new file mode 100644 index 00000000..355abcb2 --- /dev/null +++ b/node_modules/@pnpm/config.env-replace/env-replace.docs.mdx @@ -0,0 +1,18 @@ +--- +labels: ['configuration'] +description: 'A function for repacing env variables in configuration settings' +--- + +API: + +```ts +function envReplace(settingValue: string, env: NodeJS.ProcessEnv): string; +``` + +Usage: + +```ts +import { envReplace } from '@pnpm/config.env-replace' + +envReplace('${foo}', process.env) +``` diff --git a/node_modules/@pnpm/config.env-replace/env-replace.spec.ts b/node_modules/@pnpm/config.env-replace/env-replace.spec.ts new file mode 100644 index 00000000..ec1b09d4 --- /dev/null +++ b/node_modules/@pnpm/config.env-replace/env-replace.spec.ts @@ -0,0 +1,27 @@ +import { envReplace } from './env-replace'; + +const ENV = { + foo: 'foo_value', + bar: 'bar_value', + zoo: '', +} + +test.each([ + ['-${foo}-${bar}', '-foo_value-bar_value'], + ['\\${foo}', '${foo}'], + ['\\${zoo}', '${zoo}'], + ['\\\\${foo}', '\\foo_value'], + ['-${foo-fallback-value}-${bar:-fallback-value}', '-foo_value-bar_value'], + ['-${qar-fallback-value}-${zoo-fallback-value}', '-fallback-value-'], + ['-${qar-fallback-value}-${zoo:-fallback-for-empty-value}', '-fallback-value-fallback-for-empty-value'] +])('success %s => %s', (settingValue, expected) => { + const actual = envReplace(settingValue, ENV); + expect(actual).toEqual(expected); +}) + +test('fail when the env variable is not found', () => { + expect(() => envReplace('${baz}', ENV)).toThrow(`Failed to replace env in config: \${baz}`); + expect(() => envReplace('${foo-}', ENV)).toThrow(`Failed to replace env in config: \${foo-}`); + expect(() => envReplace('${foo:-}', ENV)).toThrow(`Failed to replace env in config: \${foo:-}`); +}) + diff --git a/node_modules/@pnpm/config.env-replace/env-replace.ts b/node_modules/@pnpm/config.env-replace/env-replace.ts new file mode 100644 index 00000000..cfe597bd --- /dev/null +++ b/node_modules/@pnpm/config.env-replace/env-replace.ts @@ -0,0 +1,28 @@ +const ENV_EXPR = /(?=12.22.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/pnpm/components" + }, + "keywords": [], + "publishConfig": { + "registry": "https://registry.npmjs.org/" + } +} diff --git a/node_modules/@pnpm/config.env-replace/tsconfig.json b/node_modules/@pnpm/config.env-replace/tsconfig.json new file mode 100644 index 00000000..12beaf4d --- /dev/null +++ b/node_modules/@pnpm/config.env-replace/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "lib": [ + "es2019", + "DOM", + "ES6", + "DOM.Iterable" + ], + "target": "es2015", + "module": "CommonJS", + "jsx": "react", + "allowJs": true, + "composite": true, + "declaration": true, + "sourceMap": true, + "skipLibCheck": true, + "experimentalDecorators": true, + "outDir": "dist", + "moduleResolution": "node", + "esModuleInterop": true, + "rootDir": ".", + "resolveJsonModule": true + }, + "exclude": [ + "dist", + "package.json" + ], + "include": [ + "**/*", + "**/*.json" + ] +} \ No newline at end of file diff --git a/node_modules/@pnpm/config.env-replace/types/asset.d.ts b/node_modules/@pnpm/config.env-replace/types/asset.d.ts new file mode 100644 index 00000000..1372573a --- /dev/null +++ b/node_modules/@pnpm/config.env-replace/types/asset.d.ts @@ -0,0 +1,29 @@ +declare module '*.png' { + const value: any; + export = value; +} +declare module '*.svg' { + import type { FunctionComponent, SVGProps } from 'react'; + + export const ReactComponent: FunctionComponent & { title?: string }>; + const src: string; + export default src; +} + +// @TODO Gilad +declare module '*.jpg' { + const value: any; + export = value; +} +declare module '*.jpeg' { + const value: any; + export = value; +} +declare module '*.gif' { + const value: any; + export = value; +} +declare module '*.bmp' { + const value: any; + export = value; +} diff --git a/node_modules/@pnpm/config.env-replace/types/style.d.ts b/node_modules/@pnpm/config.env-replace/types/style.d.ts new file mode 100644 index 00000000..c7a53637 --- /dev/null +++ b/node_modules/@pnpm/config.env-replace/types/style.d.ts @@ -0,0 +1,42 @@ +declare module '*.module.css' { + const classes: { readonly [key: string]: string }; + export default classes; +} +declare module '*.module.scss' { + const classes: { readonly [key: string]: string }; + export default classes; +} +declare module '*.module.sass' { + const classes: { readonly [key: string]: string }; + export default classes; +} + +declare module '*.module.less' { + const classes: { readonly [key: string]: string }; + export default classes; +} + +declare module '*.less' { + const classes: { readonly [key: string]: string }; + export default classes; +} + +declare module '*.css' { + const classes: { readonly [key: string]: string }; + export default classes; +} + +declare module '*.sass' { + const classes: { readonly [key: string]: string }; + export default classes; +} + +declare module '*.scss' { + const classes: { readonly [key: string]: string }; + export default classes; +} + +declare module '*.mdx' { + const component: any; + export default component; +} diff --git a/node_modules/@pnpm/network.ca-file/ca-file.docs.mdx b/node_modules/@pnpm/network.ca-file/ca-file.docs.mdx new file mode 100644 index 00000000..1002c20c --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/ca-file.docs.mdx @@ -0,0 +1,12 @@ +--- +labels: ['ca', 'certificate authority'] +description: 'A component for reading the certificate authority data from a text file' +--- + +API: + +```ts +import { readCAFileSync } from '@pnpm/network.ca-file' + +readCAFileSync('cafile.txt') +``` diff --git a/node_modules/@pnpm/network.ca-file/ca-file.spec.ts b/node_modules/@pnpm/network.ca-file/ca-file.spec.ts new file mode 100644 index 00000000..3c73aaef --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/ca-file.spec.ts @@ -0,0 +1,20 @@ +import path from 'path' +import { readCAFileSync } from './ca-file'; + +it('should read CA file', () => { + expect(readCAFileSync(path.join(__dirname, 'fixtures/ca-file1.txt'))).toStrictEqual([ + `-----BEGIN CERTIFICATE----- +XXXX +-----END CERTIFICATE-----`, + `-----BEGIN CERTIFICATE----- +YYYY +-----END CERTIFICATE-----`, + `-----BEGIN CERTIFICATE----- +ZZZZ +-----END CERTIFICATE-----`, + ]); +}); + +it('should not fail when the file does not exist', () => { + expect(readCAFileSync(path.join(__dirname, 'not-exists.txt'))).toEqual(undefined) +}) diff --git a/node_modules/@pnpm/network.ca-file/ca-file.ts b/node_modules/@pnpm/network.ca-file/ca-file.ts new file mode 100644 index 00000000..b9771acb --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/ca-file.ts @@ -0,0 +1,16 @@ +import fs from 'graceful-fs' + +export function readCAFileSync (filePath: string): string[] | undefined { + try { + const contents = fs.readFileSync(filePath, 'utf8') + const delim = '-----END CERTIFICATE-----' + const output = contents + .split(delim) + .filter((ca) => Boolean(ca.trim())) + .map((ca) => `${ca.trimLeft()}${delim}`) + return output + } catch (err) { + if (err.code === 'ENOENT') return undefined + throw err + } +} diff --git a/node_modules/@pnpm/network.ca-file/fixtures/ca-file1.txt b/node_modules/@pnpm/network.ca-file/fixtures/ca-file1.txt new file mode 100644 index 00000000..c8be1bae --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/fixtures/ca-file1.txt @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +XXXX +-----END CERTIFICATE----- + +-----BEGIN CERTIFICATE----- +YYYY +-----END CERTIFICATE----- + + +-----BEGIN CERTIFICATE----- +ZZZZ +-----END CERTIFICATE----- + + diff --git a/node_modules/@pnpm/network.ca-file/index.ts b/node_modules/@pnpm/network.ca-file/index.ts new file mode 100644 index 00000000..3278b5d2 --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/index.ts @@ -0,0 +1 @@ +export * from './ca-file' diff --git a/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/LICENSE b/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/LICENSE new file mode 100644 index 00000000..e906a25a --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) 2011-2022 Isaac Z. Schlueter, Ben Noordhuis, and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/README.md b/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/README.md new file mode 100644 index 00000000..82d6e4da --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/README.md @@ -0,0 +1,143 @@ +# graceful-fs + +graceful-fs functions as a drop-in replacement for the fs module, +making various improvements. + +The improvements are meant to normalize behavior across different +platforms and environments, and to make filesystem access more +resilient to errors. + +## Improvements over [fs module](https://nodejs.org/api/fs.html) + +* Queues up `open` and `readdir` calls, and retries them once + something closes if there is an EMFILE error from too many file + descriptors. +* fixes `lchmod` for Node versions prior to 0.6.2. +* implements `fs.lutimes` if possible. Otherwise it becomes a noop. +* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or + `lchown` if the user isn't root. +* makes `lchmod` and `lchown` become noops, if not available. +* retries reading a file if `read` results in EAGAIN error. + +On Windows, it retries renaming a file for up to one second if `EACCESS` +or `EPERM` error occurs, likely because antivirus software has locked +the directory. + +## USAGE + +```javascript +// use just like fs +var fs = require('graceful-fs') + +// now go and do stuff with it... +fs.readFile('some-file-or-whatever', (err, data) => { + // Do stuff here. +}) +``` + +## Sync methods + +This module cannot intercept or handle `EMFILE` or `ENFILE` errors from sync +methods. If you use sync methods which open file descriptors then you are +responsible for dealing with any errors. + +This is a known limitation, not a bug. + +## Global Patching + +If you want to patch the global fs module (or any other fs-like +module) you can do this: + +```javascript +// Make sure to read the caveat below. +var realFs = require('fs') +var gracefulFs = require('graceful-fs') +gracefulFs.gracefulify(realFs) +``` + +This should only ever be done at the top-level application layer, in +order to delay on EMFILE errors from any fs-using dependencies. You +should **not** do this in a library, because it can cause unexpected +delays in other parts of the program. + +## Changes + +This module is fairly stable at this point, and used by a lot of +things. That being said, because it implements a subtle behavior +change in a core part of the node API, even modest changes can be +extremely breaking, and the versioning is thus biased towards +bumping the major when in doubt. + +The main change between major versions has been switching between +providing a fully-patched `fs` module vs monkey-patching the node core +builtin, and the approach by which a non-monkey-patched `fs` was +created. + +The goal is to trade `EMFILE` errors for slower fs operations. So, if +you try to open a zillion files, rather than crashing, `open` +operations will be queued up and wait for something else to `close`. + +There are advantages to each approach. Monkey-patching the fs means +that no `EMFILE` errors can possibly occur anywhere in your +application, because everything is using the same core `fs` module, +which is patched. However, it can also obviously cause undesirable +side-effects, especially if the module is loaded multiple times. + +Implementing a separate-but-identical patched `fs` module is more +surgical (and doesn't run the risk of patching multiple times), but +also imposes the challenge of keeping in sync with the core module. + +The current approach loads the `fs` module, and then creates a +lookalike object that has all the same methods, except a few that are +patched. It is safe to use in all versions of Node from 0.8 through +7.0. + +### v4 + +* Do not monkey-patch the fs module. This module may now be used as a + drop-in dep, and users can opt into monkey-patching the fs builtin + if their app requires it. + +### v3 + +* Monkey-patch fs, because the eval approach no longer works on recent + node. +* fixed possible type-error throw if rename fails on windows +* verify that we *never* get EMFILE errors +* Ignore ENOSYS from chmod/chown +* clarify that graceful-fs must be used as a drop-in + +### v2.1.0 + +* Use eval rather than monkey-patching fs. +* readdir: Always sort the results +* win32: requeue a file if error has an OK status + +### v2.0 + +* A return to monkey patching +* wrap process.cwd + +### v1.1 + +* wrap readFile +* Wrap fs.writeFile. +* readdir protection +* Don't clobber the fs builtin +* Handle fs.read EAGAIN errors by trying again +* Expose the curOpen counter +* No-op lchown/lchmod if not implemented +* fs.rename patch only for win32 +* Patch fs.rename to handle AV software on Windows +* Close #4 Chown should not fail on einval or eperm if non-root +* Fix isaacs/fstream#1 Only wrap fs one time +* Fix #3 Start at 1024 max files, then back off on EMFILE +* lutimes that doens't blow up on Linux +* A full on-rewrite using a queue instead of just swallowing the EMFILE error +* Wrap Read/Write streams as well + +### 1.0 + +* Update engines for node 0.6 +* Be lstat-graceful on Windows +* first diff --git a/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/clone.js b/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/clone.js new file mode 100644 index 00000000..dff3cc8c --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/clone.js @@ -0,0 +1,23 @@ +'use strict' + +module.exports = clone + +var getPrototypeOf = Object.getPrototypeOf || function (obj) { + return obj.__proto__ +} + +function clone (obj) { + if (obj === null || typeof obj !== 'object') + return obj + + if (obj instanceof Object) + var copy = { __proto__: getPrototypeOf(obj) } + else + var copy = Object.create(null) + + Object.getOwnPropertyNames(obj).forEach(function (key) { + Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)) + }) + + return copy +} diff --git a/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/graceful-fs.js b/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/graceful-fs.js new file mode 100644 index 00000000..8d5b89e4 --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/graceful-fs.js @@ -0,0 +1,448 @@ +var fs = require('fs') +var polyfills = require('./polyfills.js') +var legacy = require('./legacy-streams.js') +var clone = require('./clone.js') + +var util = require('util') + +/* istanbul ignore next - node 0.x polyfill */ +var gracefulQueue +var previousSymbol + +/* istanbul ignore else - node 0.x polyfill */ +if (typeof Symbol === 'function' && typeof Symbol.for === 'function') { + gracefulQueue = Symbol.for('graceful-fs.queue') + // This is used in testing by future versions + previousSymbol = Symbol.for('graceful-fs.previous') +} else { + gracefulQueue = '___graceful-fs.queue' + previousSymbol = '___graceful-fs.previous' +} + +function noop () {} + +function publishQueue(context, queue) { + Object.defineProperty(context, gracefulQueue, { + get: function() { + return queue + } + }) +} + +var debug = noop +if (util.debuglog) + debug = util.debuglog('gfs4') +else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) + debug = function() { + var m = util.format.apply(util, arguments) + m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ') + console.error(m) + } + +// Once time initialization +if (!fs[gracefulQueue]) { + // This queue can be shared by multiple loaded instances + var queue = global[gracefulQueue] || [] + publishQueue(fs, queue) + + // Patch fs.close/closeSync to shared queue version, because we need + // to retry() whenever a close happens *anywhere* in the program. + // This is essential when multiple graceful-fs instances are + // in play at the same time. + fs.close = (function (fs$close) { + function close (fd, cb) { + return fs$close.call(fs, fd, function (err) { + // This function uses the graceful-fs shared queue + if (!err) { + resetQueue() + } + + if (typeof cb === 'function') + cb.apply(this, arguments) + }) + } + + Object.defineProperty(close, previousSymbol, { + value: fs$close + }) + return close + })(fs.close) + + fs.closeSync = (function (fs$closeSync) { + function closeSync (fd) { + // This function uses the graceful-fs shared queue + fs$closeSync.apply(fs, arguments) + resetQueue() + } + + Object.defineProperty(closeSync, previousSymbol, { + value: fs$closeSync + }) + return closeSync + })(fs.closeSync) + + if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { + process.on('exit', function() { + debug(fs[gracefulQueue]) + require('assert').equal(fs[gracefulQueue].length, 0) + }) + } +} + +if (!global[gracefulQueue]) { + publishQueue(global, fs[gracefulQueue]); +} + +module.exports = patch(clone(fs)) +if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { + module.exports = patch(fs) + fs.__patched = true; +} + +function patch (fs) { + // Everything that references the open() function needs to be in here + polyfills(fs) + fs.gracefulify = patch + + fs.createReadStream = createReadStream + fs.createWriteStream = createWriteStream + var fs$readFile = fs.readFile + fs.readFile = readFile + function readFile (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$readFile(path, options, cb) + + function go$readFile (path, options, cb, startTime) { + return fs$readFile(path, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$writeFile = fs.writeFile + fs.writeFile = writeFile + function writeFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$writeFile(path, data, options, cb) + + function go$writeFile (path, data, options, cb, startTime) { + return fs$writeFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$appendFile = fs.appendFile + if (fs$appendFile) + fs.appendFile = appendFile + function appendFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$appendFile(path, data, options, cb) + + function go$appendFile (path, data, options, cb, startTime) { + return fs$appendFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$copyFile = fs.copyFile + if (fs$copyFile) + fs.copyFile = copyFile + function copyFile (src, dest, flags, cb) { + if (typeof flags === 'function') { + cb = flags + flags = 0 + } + return go$copyFile(src, dest, flags, cb) + + function go$copyFile (src, dest, flags, cb, startTime) { + return fs$copyFile(src, dest, flags, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$readdir = fs.readdir + fs.readdir = readdir + var noReaddirOptionVersions = /^v[0-5]\./ + function readdir (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + var go$readdir = noReaddirOptionVersions.test(process.version) + ? function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, fs$readdirCallback( + path, options, cb, startTime + )) + } + : function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, options, fs$readdirCallback( + path, options, cb, startTime + )) + } + + return go$readdir(path, options, cb) + + function fs$readdirCallback (path, options, cb, startTime) { + return function (err, files) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([ + go$readdir, + [path, options, cb], + err, + startTime || Date.now(), + Date.now() + ]) + else { + if (files && files.sort) + files.sort() + + if (typeof cb === 'function') + cb.call(this, err, files) + } + } + } + } + + if (process.version.substr(0, 4) === 'v0.8') { + var legStreams = legacy(fs) + ReadStream = legStreams.ReadStream + WriteStream = legStreams.WriteStream + } + + var fs$ReadStream = fs.ReadStream + if (fs$ReadStream) { + ReadStream.prototype = Object.create(fs$ReadStream.prototype) + ReadStream.prototype.open = ReadStream$open + } + + var fs$WriteStream = fs.WriteStream + if (fs$WriteStream) { + WriteStream.prototype = Object.create(fs$WriteStream.prototype) + WriteStream.prototype.open = WriteStream$open + } + + Object.defineProperty(fs, 'ReadStream', { + get: function () { + return ReadStream + }, + set: function (val) { + ReadStream = val + }, + enumerable: true, + configurable: true + }) + Object.defineProperty(fs, 'WriteStream', { + get: function () { + return WriteStream + }, + set: function (val) { + WriteStream = val + }, + enumerable: true, + configurable: true + }) + + // legacy names + var FileReadStream = ReadStream + Object.defineProperty(fs, 'FileReadStream', { + get: function () { + return FileReadStream + }, + set: function (val) { + FileReadStream = val + }, + enumerable: true, + configurable: true + }) + var FileWriteStream = WriteStream + Object.defineProperty(fs, 'FileWriteStream', { + get: function () { + return FileWriteStream + }, + set: function (val) { + FileWriteStream = val + }, + enumerable: true, + configurable: true + }) + + function ReadStream (path, options) { + if (this instanceof ReadStream) + return fs$ReadStream.apply(this, arguments), this + else + return ReadStream.apply(Object.create(ReadStream.prototype), arguments) + } + + function ReadStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + if (that.autoClose) + that.destroy() + + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + that.read() + } + }) + } + + function WriteStream (path, options) { + if (this instanceof WriteStream) + return fs$WriteStream.apply(this, arguments), this + else + return WriteStream.apply(Object.create(WriteStream.prototype), arguments) + } + + function WriteStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + that.destroy() + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + } + }) + } + + function createReadStream (path, options) { + return new fs.ReadStream(path, options) + } + + function createWriteStream (path, options) { + return new fs.WriteStream(path, options) + } + + var fs$open = fs.open + fs.open = open + function open (path, flags, mode, cb) { + if (typeof mode === 'function') + cb = mode, mode = null + + return go$open(path, flags, mode, cb) + + function go$open (path, flags, mode, cb, startTime) { + return fs$open(path, flags, mode, function (err, fd) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + return fs +} + +function enqueue (elem) { + debug('ENQUEUE', elem[0].name, elem[1]) + fs[gracefulQueue].push(elem) + retry() +} + +// keep track of the timeout between retry() calls +var retryTimer + +// reset the startTime and lastTime to now +// this resets the start of the 60 second overall timeout as well as the +// delay between attempts so that we'll retry these jobs sooner +function resetQueue () { + var now = Date.now() + for (var i = 0; i < fs[gracefulQueue].length; ++i) { + // entries that are only a length of 2 are from an older version, don't + // bother modifying those since they'll be retried anyway. + if (fs[gracefulQueue][i].length > 2) { + fs[gracefulQueue][i][3] = now // startTime + fs[gracefulQueue][i][4] = now // lastTime + } + } + // call retry to make sure we're actively processing the queue + retry() +} + +function retry () { + // clear the timer and remove it to help prevent unintended concurrency + clearTimeout(retryTimer) + retryTimer = undefined + + if (fs[gracefulQueue].length === 0) + return + + var elem = fs[gracefulQueue].shift() + var fn = elem[0] + var args = elem[1] + // these items may be unset if they were added by an older graceful-fs + var err = elem[2] + var startTime = elem[3] + var lastTime = elem[4] + + // if we don't have a startTime we have no way of knowing if we've waited + // long enough, so go ahead and retry this item now + if (startTime === undefined) { + debug('RETRY', fn.name, args) + fn.apply(null, args) + } else if (Date.now() - startTime >= 60000) { + // it's been more than 60 seconds total, bail now + debug('TIMEOUT', fn.name, args) + var cb = args.pop() + if (typeof cb === 'function') + cb.call(null, err) + } else { + // the amount of time between the last attempt and right now + var sinceAttempt = Date.now() - lastTime + // the amount of time between when we first tried, and when we last tried + // rounded up to at least 1 + var sinceStart = Math.max(lastTime - startTime, 1) + // backoff. wait longer than the total time we've been retrying, but only + // up to a maximum of 100ms + var desiredDelay = Math.min(sinceStart * 1.2, 100) + // it's been long enough since the last retry, do it again + if (sinceAttempt >= desiredDelay) { + debug('RETRY', fn.name, args) + fn.apply(null, args.concat([startTime])) + } else { + // if we can't do this job yet, push it to the end of the queue + // and let the next iteration check again + fs[gracefulQueue].push(elem) + } + } + + // schedule our next run if one isn't already scheduled + if (retryTimer === undefined) { + retryTimer = setTimeout(retry, 0) + } +} diff --git a/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/legacy-streams.js b/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/legacy-streams.js new file mode 100644 index 00000000..d617b50f --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/legacy-streams.js @@ -0,0 +1,118 @@ +var Stream = require('stream').Stream + +module.exports = legacy + +function legacy (fs) { + return { + ReadStream: ReadStream, + WriteStream: WriteStream + } + + function ReadStream (path, options) { + if (!(this instanceof ReadStream)) return new ReadStream(path, options); + + Stream.call(this); + + var self = this; + + this.path = path; + this.fd = null; + this.readable = true; + this.paused = false; + + this.flags = 'r'; + this.mode = 438; /*=0666*/ + this.bufferSize = 64 * 1024; + + options = options || {}; + + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + + if (this.encoding) this.setEncoding(this.encoding); + + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.end === undefined) { + this.end = Infinity; + } else if ('number' !== typeof this.end) { + throw TypeError('end must be a Number'); + } + + if (this.start > this.end) { + throw new Error('start must be <= end'); + } + + this.pos = this.start; + } + + if (this.fd !== null) { + process.nextTick(function() { + self._read(); + }); + return; + } + + fs.open(this.path, this.flags, this.mode, function (err, fd) { + if (err) { + self.emit('error', err); + self.readable = false; + return; + } + + self.fd = fd; + self.emit('open', fd); + self._read(); + }) + } + + function WriteStream (path, options) { + if (!(this instanceof WriteStream)) return new WriteStream(path, options); + + Stream.call(this); + + this.path = path; + this.fd = null; + this.writable = true; + + this.flags = 'w'; + this.encoding = 'binary'; + this.mode = 438; /*=0666*/ + this.bytesWritten = 0; + + options = options || {}; + + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.start < 0) { + throw new Error('start must be >= zero'); + } + + this.pos = this.start; + } + + this.busy = false; + this._queue = []; + + if (this.fd === null) { + this._open = fs.open; + this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); + this.flush(); + } + } +} diff --git a/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/package.json b/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/package.json new file mode 100644 index 00000000..30578568 --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/package.json @@ -0,0 +1,50 @@ +{ + "name": "graceful-fs", + "description": "A drop-in replacement for fs, making various improvements.", + "version": "4.2.10", + "repository": { + "type": "git", + "url": "https://github.com/isaacs/node-graceful-fs" + }, + "main": "graceful-fs.js", + "directories": { + "test": "test" + }, + "scripts": { + "preversion": "npm test", + "postversion": "npm publish", + "postpublish": "git push origin --follow-tags", + "test": "nyc --silent node test.js | tap -c -", + "posttest": "nyc report" + }, + "keywords": [ + "fs", + "module", + "reading", + "retry", + "retries", + "queue", + "error", + "errors", + "handling", + "EMFILE", + "EAGAIN", + "EINVAL", + "EPERM", + "EACCESS" + ], + "license": "ISC", + "devDependencies": { + "import-fresh": "^2.0.0", + "mkdirp": "^0.5.0", + "rimraf": "^2.2.8", + "tap": "^12.7.0" + }, + "files": [ + "fs.js", + "graceful-fs.js", + "legacy-streams.js", + "polyfills.js", + "clone.js" + ] +} diff --git a/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/polyfills.js b/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/polyfills.js new file mode 100644 index 00000000..46dea36c --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/polyfills.js @@ -0,0 +1,355 @@ +var constants = require('constants') + +var origCwd = process.cwd +var cwd = null + +var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform + +process.cwd = function() { + if (!cwd) + cwd = origCwd.call(process) + return cwd +} +try { + process.cwd() +} catch (er) {} + +// This check is needed until node.js 12 is required +if (typeof process.chdir === 'function') { + var chdir = process.chdir + process.chdir = function (d) { + cwd = null + chdir.call(process, d) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir) +} + +module.exports = patch + +function patch (fs) { + // (re-)implement some things that are known busted or missing. + + // lchmod, broken prior to 0.6.2 + // back-port the fix here. + if (constants.hasOwnProperty('O_SYMLINK') && + process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { + patchLchmod(fs) + } + + // lutimes implementation, or no-op + if (!fs.lutimes) { + patchLutimes(fs) + } + + // https://github.com/isaacs/node-graceful-fs/issues/4 + // Chown should not fail on einval or eperm if non-root. + // It should not fail on enosys ever, as this just indicates + // that a fs doesn't support the intended operation. + + fs.chown = chownFix(fs.chown) + fs.fchown = chownFix(fs.fchown) + fs.lchown = chownFix(fs.lchown) + + fs.chmod = chmodFix(fs.chmod) + fs.fchmod = chmodFix(fs.fchmod) + fs.lchmod = chmodFix(fs.lchmod) + + fs.chownSync = chownFixSync(fs.chownSync) + fs.fchownSync = chownFixSync(fs.fchownSync) + fs.lchownSync = chownFixSync(fs.lchownSync) + + fs.chmodSync = chmodFixSync(fs.chmodSync) + fs.fchmodSync = chmodFixSync(fs.fchmodSync) + fs.lchmodSync = chmodFixSync(fs.lchmodSync) + + fs.stat = statFix(fs.stat) + fs.fstat = statFix(fs.fstat) + fs.lstat = statFix(fs.lstat) + + fs.statSync = statFixSync(fs.statSync) + fs.fstatSync = statFixSync(fs.fstatSync) + fs.lstatSync = statFixSync(fs.lstatSync) + + // if lchmod/lchown do not exist, then make them no-ops + if (fs.chmod && !fs.lchmod) { + fs.lchmod = function (path, mode, cb) { + if (cb) process.nextTick(cb) + } + fs.lchmodSync = function () {} + } + if (fs.chown && !fs.lchown) { + fs.lchown = function (path, uid, gid, cb) { + if (cb) process.nextTick(cb) + } + fs.lchownSync = function () {} + } + + // on Windows, A/V software can lock the directory, causing this + // to fail with an EACCES or EPERM if the directory contains newly + // created files. Try again on failure, for up to 60 seconds. + + // Set the timeout this long because some Windows Anti-Virus, such as Parity + // bit9, may lock files for up to a minute, causing npm package install + // failures. Also, take care to yield the scheduler. Windows scheduling gives + // CPU to a busy looping process, which can cause the program causing the lock + // contention to be starved of CPU by node, so the contention doesn't resolve. + if (platform === "win32") { + fs.rename = typeof fs.rename !== 'function' ? fs.rename + : (function (fs$rename) { + function rename (from, to, cb) { + var start = Date.now() + var backoff = 0; + fs$rename(from, to, function CB (er) { + if (er + && (er.code === "EACCES" || er.code === "EPERM") + && Date.now() - start < 60000) { + setTimeout(function() { + fs.stat(to, function (stater, st) { + if (stater && stater.code === "ENOENT") + fs$rename(from, to, CB); + else + cb(er) + }) + }, backoff) + if (backoff < 100) + backoff += 10; + return; + } + if (cb) cb(er) + }) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename) + return rename + })(fs.rename) + } + + // if read() returns EAGAIN, then just try it again. + fs.read = typeof fs.read !== 'function' ? fs.read + : (function (fs$read) { + function read (fd, buffer, offset, length, position, callback_) { + var callback + if (callback_ && typeof callback_ === 'function') { + var eagCounter = 0 + callback = function (er, _, __) { + if (er && er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + callback_.apply(this, arguments) + } + } + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + + // This ensures `util.promisify` works as it does for native `fs.read`. + if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read) + return read + })(fs.read) + + fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync + : (function (fs$readSync) { return function (fd, buffer, offset, length, position) { + var eagCounter = 0 + while (true) { + try { + return fs$readSync.call(fs, fd, buffer, offset, length, position) + } catch (er) { + if (er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + continue + } + throw er + } + } + }})(fs.readSync) + + function patchLchmod (fs) { + fs.lchmod = function (path, mode, callback) { + fs.open( path + , constants.O_WRONLY | constants.O_SYMLINK + , mode + , function (err, fd) { + if (err) { + if (callback) callback(err) + return + } + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + fs.fchmod(fd, mode, function (err) { + fs.close(fd, function(err2) { + if (callback) callback(err || err2) + }) + }) + }) + } + + fs.lchmodSync = function (path, mode) { + var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) + + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + var threw = true + var ret + try { + ret = fs.fchmodSync(fd, mode) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + } + + function patchLutimes (fs) { + if (constants.hasOwnProperty("O_SYMLINK") && fs.futimes) { + fs.lutimes = function (path, at, mt, cb) { + fs.open(path, constants.O_SYMLINK, function (er, fd) { + if (er) { + if (cb) cb(er) + return + } + fs.futimes(fd, at, mt, function (er) { + fs.close(fd, function (er2) { + if (cb) cb(er || er2) + }) + }) + }) + } + + fs.lutimesSync = function (path, at, mt) { + var fd = fs.openSync(path, constants.O_SYMLINK) + var ret + var threw = true + try { + ret = fs.futimesSync(fd, at, mt) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + + } else if (fs.futimes) { + fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) } + fs.lutimesSync = function () {} + } + } + + function chmodFix (orig) { + if (!orig) return orig + return function (target, mode, cb) { + return orig.call(fs, target, mode, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + + function chmodFixSync (orig) { + if (!orig) return orig + return function (target, mode) { + try { + return orig.call(fs, target, mode) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } + + + function chownFix (orig) { + if (!orig) return orig + return function (target, uid, gid, cb) { + return orig.call(fs, target, uid, gid, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + + function chownFixSync (orig) { + if (!orig) return orig + return function (target, uid, gid) { + try { + return orig.call(fs, target, uid, gid) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } + + function statFix (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + function callback (er, stats) { + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + if (cb) cb.apply(this, arguments) + } + return options ? orig.call(fs, target, options, callback) + : orig.call(fs, target, callback) + } + } + + function statFixSync (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options) { + var stats = options ? orig.call(fs, target, options) + : orig.call(fs, target) + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + return stats; + } + } + + // ENOSYS means that the fs doesn't support the op. Just ignore + // that, because it doesn't matter. + // + // if there's no getuid, or if getuid() is something other + // than 0, and the error is EINVAL or EPERM, then just ignore + // it. + // + // This specific case is a silent failure in cp, install, tar, + // and most other unix tools that manage permissions. + // + // When running as root, or if other types of errors are + // encountered, then it's strict. + function chownErOk (er) { + if (!er) + return true + + if (er.code === "ENOSYS") + return true + + var nonroot = !process.getuid || process.getuid() !== 0 + if (nonroot) { + if (er.code === "EINVAL" || er.code === "EPERM") + return true + } + + return false + } +} diff --git a/node_modules/@pnpm/network.ca-file/package-tar/pnpm-network.ca-file-1.0.2.tgz b/node_modules/@pnpm/network.ca-file/package-tar/pnpm-network.ca-file-1.0.2.tgz new file mode 100644 index 00000000..77d169d1 Binary files /dev/null and b/node_modules/@pnpm/network.ca-file/package-tar/pnpm-network.ca-file-1.0.2.tgz differ diff --git a/node_modules/@pnpm/network.ca-file/package.json b/node_modules/@pnpm/network.ca-file/package.json new file mode 100644 index 00000000..7455e8ee --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/package.json @@ -0,0 +1,34 @@ +{ + "name": "@pnpm/network.ca-file", + "version": "1.0.2", + "homepage": "https://bit.dev/pnpm/network/ca-file", + "main": "dist/index.js", + "componentId": { + "scope": "pnpm.network", + "name": "ca-file", + "version": "1.0.2" + }, + "dependencies": { + "graceful-fs": "4.2.10" + }, + "devDependencies": { + "@types/graceful-fs": "4.1.5", + "@babel/runtime": "7.20.0", + "@types/node": "12.20.4", + "@types/jest": "26.0.20" + }, + "peerDependencies": {}, + "license": "MIT", + "private": false, + "engines": { + "node": ">=12.22.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/pnpm/components" + }, + "keywords": [], + "publishConfig": { + "registry": "https://registry.npmjs.org/" + } +} diff --git a/node_modules/@pnpm/network.ca-file/preview-1668994697977.js b/node_modules/@pnpm/network.ca-file/preview-1668994697977.js new file mode 100644 index 00000000..3920e3a1 --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/preview-1668994697977.js @@ -0,0 +1,7 @@ +; +import * as overview_0 from '/home/zoli/Library/Caches/Bit/capsules/05477724e6beef4627535027aa98d5f966dd9894/pnpm.network_ca-file@1.0.2/dist/ca-file.docs.mdx'; + +export const compositions = []; +export const overview = [overview_0]; + +export const compositions_metadata = {"compositions":[]}; diff --git a/node_modules/@pnpm/network.ca-file/tsconfig.json b/node_modules/@pnpm/network.ca-file/tsconfig.json new file mode 100644 index 00000000..12beaf4d --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "lib": [ + "es2019", + "DOM", + "ES6", + "DOM.Iterable" + ], + "target": "es2015", + "module": "CommonJS", + "jsx": "react", + "allowJs": true, + "composite": true, + "declaration": true, + "sourceMap": true, + "skipLibCheck": true, + "experimentalDecorators": true, + "outDir": "dist", + "moduleResolution": "node", + "esModuleInterop": true, + "rootDir": ".", + "resolveJsonModule": true + }, + "exclude": [ + "dist", + "package.json" + ], + "include": [ + "**/*", + "**/*.json" + ] +} \ No newline at end of file diff --git a/node_modules/@pnpm/network.ca-file/types/asset.d.ts b/node_modules/@pnpm/network.ca-file/types/asset.d.ts new file mode 100644 index 00000000..1372573a --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/types/asset.d.ts @@ -0,0 +1,29 @@ +declare module '*.png' { + const value: any; + export = value; +} +declare module '*.svg' { + import type { FunctionComponent, SVGProps } from 'react'; + + export const ReactComponent: FunctionComponent & { title?: string }>; + const src: string; + export default src; +} + +// @TODO Gilad +declare module '*.jpg' { + const value: any; + export = value; +} +declare module '*.jpeg' { + const value: any; + export = value; +} +declare module '*.gif' { + const value: any; + export = value; +} +declare module '*.bmp' { + const value: any; + export = value; +} diff --git a/node_modules/@pnpm/network.ca-file/types/style.d.ts b/node_modules/@pnpm/network.ca-file/types/style.d.ts new file mode 100644 index 00000000..c7a53637 --- /dev/null +++ b/node_modules/@pnpm/network.ca-file/types/style.d.ts @@ -0,0 +1,42 @@ +declare module '*.module.css' { + const classes: { readonly [key: string]: string }; + export default classes; +} +declare module '*.module.scss' { + const classes: { readonly [key: string]: string }; + export default classes; +} +declare module '*.module.sass' { + const classes: { readonly [key: string]: string }; + export default classes; +} + +declare module '*.module.less' { + const classes: { readonly [key: string]: string }; + export default classes; +} + +declare module '*.less' { + const classes: { readonly [key: string]: string }; + export default classes; +} + +declare module '*.css' { + const classes: { readonly [key: string]: string }; + export default classes; +} + +declare module '*.sass' { + const classes: { readonly [key: string]: string }; + export default classes; +} + +declare module '*.scss' { + const classes: { readonly [key: string]: string }; + export default classes; +} + +declare module '*.mdx' { + const component: any; + export default component; +} diff --git a/node_modules/@pnpm/npm-conf/index.js b/node_modules/@pnpm/npm-conf/index.js new file mode 100644 index 00000000..6b6dbb4a --- /dev/null +++ b/node_modules/@pnpm/npm-conf/index.js @@ -0,0 +1,83 @@ +'use strict'; +const path = require('path'); +const Conf = require('./lib/conf'); +const _defaults = require('./lib/defaults'); + +// https://github.com/npm/cli/blob/latest/lib/config/core.js#L101-L200 +module.exports = (opts, types, defaults) => { + const conf = new Conf(Object.assign({}, _defaults.defaults, defaults), types); + + conf.add(Object.assign({}, opts), 'cli'); + const warnings = []; + let failedToLoadBuiltInConfig = false; + + if (require.resolve.paths) { + const paths = require.resolve.paths('npm'); + // Assume that last path in resolve paths is builtin modules directory + let npmPath; + try { + npmPath = require.resolve('npm', {paths: paths.slice(-1)}); + } catch (error) { + // Error will be thrown if module cannot be found. + // Update the flag while loading builtin config failed. + failedToLoadBuiltInConfig = true; + } + + if (npmPath) { + /** + * According to https://github.com/npm/cli/blob/86f5bdb91f7a5971953a5171d32d6eeda6a2e972/lib/npm.js#L258 + * and https://github.com/npm/cli/blob/86f5bdb91f7a5971953a5171d32d6eeda6a2e972/lib/config/core.js#L92 + */ + warnings.push(conf.addFile(path.resolve(path.dirname(npmPath), '..', 'npmrc'), 'builtin')); + } + } + + conf.addEnv(); + conf.loadPrefix(); + + const projectConf = path.resolve(conf.localPrefix, '.npmrc'); + const userConf = conf.get('userconfig'); + + if (!conf.get('global') && projectConf !== userConf) { + warnings.push(conf.addFile(projectConf, 'project')); + } else { + conf.add({}, 'project'); + } + + // TODO: cover with tests that configs from workspace .npmrc have bigger priority + // than the ones in userconfig + if (conf.get('workspace-prefix') && conf.get('workspace-prefix') !== projectConf) { + const workspaceConf = path.resolve(conf.get('workspace-prefix'), '.npmrc'); + warnings.push(conf.addFile(workspaceConf, 'workspace')); + } + + warnings.push(conf.addFile(conf.get('userconfig'), 'user')); + + if (conf.get('prefix')) { + const etc = path.resolve(conf.get('prefix'), 'etc'); + conf.root.globalconfig = path.resolve(etc, 'npmrc'); + conf.root.globalignorefile = path.resolve(etc, 'npmignore'); + } + + warnings.push(conf.addFile(conf.get('globalconfig'), 'global')); + conf.loadUser(); + + const caFile = conf.get('cafile'); + + if (caFile) { + conf.loadCAFile(caFile); + } + + return { + config: conf, + warnings: warnings.filter(Boolean), + failedToLoadBuiltInConfig, + }; +}; + +Object.defineProperty(module.exports, 'defaults', { + get() { + return _defaults.defaults; + }, + enumerable: true +}) diff --git a/node_modules/@pnpm/npm-conf/license b/node_modules/@pnpm/npm-conf/license new file mode 100644 index 00000000..db6bc32c --- /dev/null +++ b/node_modules/@pnpm/npm-conf/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Kevin Mårtensson (github.com/kevva) + +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. diff --git a/node_modules/@pnpm/npm-conf/package.json b/node_modules/@pnpm/npm-conf/package.json new file mode 100644 index 00000000..b6508e5f --- /dev/null +++ b/node_modules/@pnpm/npm-conf/package.json @@ -0,0 +1,42 @@ +{ + "name": "@pnpm/npm-conf", + "version": "2.2.2", + "description": "Get the npm config", + "license": "MIT", + "repository": "pnpm/npm-conf", + "engines": { + "node": ">=12" + }, + "files": [ + "index.js", + "lib" + ], + "keywords": [ + "conf", + "config", + "global", + "npm", + "path", + "prefix", + "rc" + ], + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "devDependencies": { + "@types/node": "^14.0.14", + "babel-generator": "^6.24.1", + "babel-traverse": "^6.24.1", + "babylon": "^6.17.1", + "eslint-import-resolver-node": "^0.3.2", + "jest": "^25.1.0", + "npm": "^5.0.4", + "typescript": "^3.9.6" + }, + "scripts": { + "__prepublishOnly": "node lib/make.js && tsc -p lib/tsconfig.make-out.json", + "test": "jest" + } +} \ No newline at end of file diff --git a/node_modules/@pnpm/npm-conf/readme.md b/node_modules/@pnpm/npm-conf/readme.md new file mode 100644 index 00000000..28e80d2d --- /dev/null +++ b/node_modules/@pnpm/npm-conf/readme.md @@ -0,0 +1,47 @@ +# @pnpm/npm-conf [![Build Status](https://travis-ci.com/pnpm/npm-conf.svg?branch=master)](https://travis-ci.com/pnpm/npm-conf) + +> Get the npm config + + +## Install + +``` +$ pnpm add @pnpm/npm-conf +``` + + +## Usage + +```js +const npmConf = require('@pnpm/npm-conf'); + +const conf = npmConf(); + +conf.get('prefix') +//=> //=> /Users/unicorn/.npm-packages + +conf.get('registry') +//=> https://registry.npmjs.org/ +``` + +To get a list of all available `npm` config options: + +```bash +$ npm config list --long +``` + + +## API + +### npmConf() + +Returns the `npm` config. + +### npmConf.defaults + +Returns the default `npm` config. + + +## License + +MIT © [Kevin Mårtensson](https://github.com/kevva) diff --git a/node_modules/@polka/url/build.js b/node_modules/@polka/url/build.js new file mode 100644 index 00000000..33dfc56c --- /dev/null +++ b/node_modules/@polka/url/build.js @@ -0,0 +1,42 @@ +const qs = require('querystring'); + +/** + * @typedef ParsedURL + * @type {import('.').ParsedURL} + */ + +/** + * @typedef Request + * @property {string} url + * @property {ParsedURL} _parsedUrl + */ + +/** + * @param {Request} req + * @returns {ParsedURL|void} + */ +function parse(req) { + let raw = req.url; + if (raw == null) return; + + let prev = req._parsedUrl; + if (prev && prev.raw === raw) return prev; + + let pathname=raw, search='', query; + + if (raw.length > 1) { + let idx = raw.indexOf('?', 1); + + if (idx !== -1) { + search = raw.substring(idx); + pathname = raw.substring(0, idx); + if (search.length > 1) { + query = qs.parse(search.substring(1)); + } + } + } + + return req._parsedUrl = { pathname, search, query, raw }; +} + +exports.parse = parse; \ No newline at end of file diff --git a/node_modules/@polka/url/build.mjs b/node_modules/@polka/url/build.mjs new file mode 100644 index 00000000..9d5e7b91 --- /dev/null +++ b/node_modules/@polka/url/build.mjs @@ -0,0 +1,40 @@ +import * as qs from 'querystring'; + +/** + * @typedef ParsedURL + * @type {import('.').ParsedURL} + */ + +/** + * @typedef Request + * @property {string} url + * @property {ParsedURL} _parsedUrl + */ + +/** + * @param {Request} req + * @returns {ParsedURL|void} + */ +export function parse(req) { + let raw = req.url; + if (raw == null) return; + + let prev = req._parsedUrl; + if (prev && prev.raw === raw) return prev; + + let pathname=raw, search='', query; + + if (raw.length > 1) { + let idx = raw.indexOf('?', 1); + + if (idx !== -1) { + search = raw.substring(idx); + pathname = raw.substring(0, idx); + if (search.length > 1) { + query = qs.parse(search.substring(1)); + } + } + } + + return req._parsedUrl = { pathname, search, query, raw }; +} diff --git a/node_modules/@polka/url/index.d.ts b/node_modules/@polka/url/index.d.ts new file mode 100644 index 00000000..9b27c042 --- /dev/null +++ b/node_modules/@polka/url/index.d.ts @@ -0,0 +1,10 @@ +import type { IncomingMessage } from 'http'; + +export interface ParsedURL { + pathname: string; + search: string; + query: Record | void; + raw: string; +} + +export function parse(req: IncomingMessage): ParsedURL; diff --git a/node_modules/@polka/url/package.json b/node_modules/@polka/url/package.json new file mode 100644 index 00000000..f934d0e4 --- /dev/null +++ b/node_modules/@polka/url/package.json @@ -0,0 +1,30 @@ +{ + "version": "1.0.0-next.23", + "name": "@polka/url", + "repository": "lukeed/polka", + "description": "Super fast, memoized `req.url` parser", + "module": "build.mjs", + "types": "index.d.ts", + "main": "build.js", + "license": "MIT", + "exports": { + ".": { + "types": "./index.d.ts", + "import": "./build.mjs", + "require": "./build.js" + }, + "./package.json": "./package.json" + }, + "files": [ + "*.d.ts", + "build.*" + ], + "author": { + "name": "Luke Edwards", + "email": "luke@lukeed.com", + "url": "https://lukeed.com" + }, + "publishConfig": { + "access": "public" + } +} \ No newline at end of file diff --git a/node_modules/@polka/url/readme.md b/node_modules/@polka/url/readme.md new file mode 100644 index 00000000..69947a7a --- /dev/null +++ b/node_modules/@polka/url/readme.md @@ -0,0 +1,68 @@ +# @polka/url [![npm](https://badgen.now.sh/npm/v/@polka/url)](https://npmjs.org/package/@polka/url) + +> Super fast, memoized `req.url` parser; _not_ limited to [Polka][polka]! + +Parses the `url` from a [`IncomingMessage`](https://nodejs.org/api/http.html#http_class_http_incomingmessage) request. The returned object will always only contain the following keys: `search`, `query`, `pathname`, and `raw`. + +> **Note:** This library does not process `protocol`, `hostname`, `port`, etc.
This is because the incoming `req.url` value only begins with the path information. + +Parsed requests will be mutated with a `_parsedUrl` key, containing the returned output. This is used for future memoization, avoiding the need to fully parse the same `url` value multiple times. + +## Install + +``` +$ npm install --save @polka/url +``` + +## Usage + +```js +const parse = require('@polka/url'); + +let req = { + url: '/foo/bar?fizz=buzz' +}; +let output = parse(req); +//=> { +//=> pathname: '/foo/bar', +//=> raw: '/foo/bar?fizz=buzz', +//=> search: '?fizz=buzz', +//=> query: { +//=> fizz: 'buzz' +//=> }, +//=> } + +// Attaches result for future memoization +assert.deepEqual(output, req._parsedUrl); //=> true +``` + +## API + +### url(req) +Returns: `Object` or `undefined` + +> **Important:** The `req` must have a `url` key, otherwise `undefined` will be returned.
If no input is provided at all, a `TypeError` will be thrown. + +#### req +Type: `IncomingMessage` or `{ url: string }` + +The incoming HTTP request (`req`) or a plain `Object` with a `url` key. + +> **Note:** In Node.js servers, the [`req.url`](https://nodejs.org/api/http.html#http_message_url) begins with a pathname & does not include a `hash`. + + +## Benchmarks + +Check out the [`bench`](/bench) directory for in-depth benchmark results and comparisons. + + +## Support + +Any issues or questions can be sent to the [Polka][polka] repository.
However, please specify that your inquiry is about `@polka/url` specifically. + + +## License + +MIT © [Luke Edwards](https://lukeed.com) + +[polka]: https://github.com/lukeed/polka diff --git a/node_modules/@sideway/address/LICENSE.md b/node_modules/@sideway/address/LICENSE.md new file mode 100644 index 00000000..0c6e658d --- /dev/null +++ b/node_modules/@sideway/address/LICENSE.md @@ -0,0 +1,9 @@ +Copyright (c) 2019-2020, Sideway, Inc. and Project contributors +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + * The names of any contributors may not be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/@sideway/address/README.md b/node_modules/@sideway/address/README.md new file mode 100755 index 00000000..c26895fe --- /dev/null +++ b/node_modules/@sideway/address/README.md @@ -0,0 +1,14 @@ +# @sideway/address + +#### Validate email address and domain. + +**address** is part of the **joi** ecosystem. + +### Visit the [joi.dev](https://joi.dev) Developer Portal for tutorials, documentation, and support + +## Useful resources + +- [Documentation and API](https://joi.dev/module/address/) +- [Versions status](https://joi.dev/resources/status/#address) +- [Changelog](https://joi.dev/module/address/changelog/) +- [Project policies](https://joi.dev/policies/) diff --git a/node_modules/@sideway/address/package.json b/node_modules/@sideway/address/package.json new file mode 100755 index 00000000..68633691 --- /dev/null +++ b/node_modules/@sideway/address/package.json @@ -0,0 +1,30 @@ +{ + "name": "@sideway/address", + "description": "Email address and domain validation", + "version": "4.1.4", + "repository": "git://github.com/sideway/address", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "files": [ + "lib" + ], + "keywords": [ + "email", + "domain", + "address", + "validation" + ], + "dependencies": { + "@hapi/hoek": "^9.0.0" + }, + "devDependencies": { + "typescript": "4.0.x", + "@hapi/code": "8.x.x", + "@hapi/lab": "24.x.x" + }, + "scripts": { + "test": "lab -a @hapi/code -t 100 -L -Y", + "test-cov-html": "lab -a @hapi/code -t 100 -L -r html -o coverage.html" + }, + "license": "BSD-3-Clause" +} diff --git a/node_modules/@sideway/formula/LICENSE.md b/node_modules/@sideway/formula/LICENSE.md new file mode 100644 index 00000000..995d3407 --- /dev/null +++ b/node_modules/@sideway/formula/LICENSE.md @@ -0,0 +1,9 @@ +Copyright (c) 2019-2020, Sideway. Inc, and project contributors +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + * The names of any contributors may not be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/@sideway/formula/README.md b/node_modules/@sideway/formula/README.md new file mode 100755 index 00000000..13da3afa --- /dev/null +++ b/node_modules/@sideway/formula/README.md @@ -0,0 +1,18 @@ +# @sideway/formula + +#### Math and string formula parser. + +**formula** is part of the **joi** ecosystem. + +### Visit the [joi.dev](https://joi.dev) Developer Portal for tutorials, documentation, and support + +## Useful resources + +- [Documentation and API](https://joi.dev/module/formula/) +- [Version status](https://joi.dev/resources/status/#formula) (builds, dependencies, node versions, licenses, eol) +- [Changelog](https://joi.dev/module/formula/changelog/) +- [Project policies](https://joi.dev/policies/) + +## Acknowledgements + +Inspired by [**fparse**](https://github.com/bylexus/fparse), copyright 2012-2018 Alexander Schenkel diff --git a/node_modules/@sideway/formula/package.json b/node_modules/@sideway/formula/package.json new file mode 100755 index 00000000..4f314474 --- /dev/null +++ b/node_modules/@sideway/formula/package.json @@ -0,0 +1,28 @@ +{ + "name": "@sideway/formula", + "description": "Math and string formula parser.", + "version": "3.0.1", + "repository": "git://github.com/sideway/formula", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "keywords": [ + "formula", + "parser", + "math", + "string" + ], + "files": [ + "lib" + ], + "dependencies": {}, + "devDependencies": { + "typescript": "4.0.x", + "@hapi/code": "8.x.x", + "@hapi/lab": "24.x.x" + }, + "scripts": { + "test": "lab -a @hapi/code -t 100 -L -Y", + "test-cov-html": "lab -a @hapi/code -t 100 -L -r html -o coverage.html" + }, + "license": "BSD-3-Clause" +} diff --git a/node_modules/@sideway/pinpoint/LICENSE.md b/node_modules/@sideway/pinpoint/LICENSE.md new file mode 100755 index 00000000..f0dfb171 --- /dev/null +++ b/node_modules/@sideway/pinpoint/LICENSE.md @@ -0,0 +1,10 @@ +Copyright (c) 2019-2020, Sideway. Inc, and project contributors + +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +* The names of any contributors may not be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS OFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/@sideway/pinpoint/README.md b/node_modules/@sideway/pinpoint/README.md new file mode 100755 index 00000000..2996c821 --- /dev/null +++ b/node_modules/@sideway/pinpoint/README.md @@ -0,0 +1,14 @@ +# @sideway/pinpoint + +#### Return the filename and line number of the calling function. + +**pinpoint** is part of the **joi** ecosystem. + +### Visit the [joi.dev](https://joi.dev) Developer Portal for tutorials, documentation, and support + +## Useful resources + +- [Documentation and API](https://joi.dev/module/pinpoint/) +- [Version status](https://joi.dev/resources/status/#pinpoint) (builds, dependencies, node versions, licenses, eol) +- [Changelog](https://joi.dev/module/pinpoint/changelog/) +- [Project policies](https://joi.dev/policies/) diff --git a/node_modules/@sideway/pinpoint/package.json b/node_modules/@sideway/pinpoint/package.json new file mode 100755 index 00000000..b2f09a62 --- /dev/null +++ b/node_modules/@sideway/pinpoint/package.json @@ -0,0 +1,25 @@ +{ + "name": "@sideway/pinpoint", + "description": "Return the filename and line number of the calling function", + "version": "2.0.0", + "repository": "git://github.com/sideway/pinpoint", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "files": [ + "lib" + ], + "keywords": [ + "utilities" + ], + "dependencies": {}, + "devDependencies": { + "typescript": "4.0.x", + "@hapi/code": "8.x.x", + "@hapi/lab": "24.x.x" + }, + "scripts": { + "test": "lab -a @hapi/code -t 100 -L -Y", + "test-cov-html": "lab -a @hapi/code -t 100 -L -r html -o coverage.html" + }, + "license": "BSD-3-Clause" +} diff --git a/node_modules/@sinclair/typebox/compiler/compiler.d.ts b/node_modules/@sinclair/typebox/compiler/compiler.d.ts new file mode 100644 index 00000000..f35f75f5 --- /dev/null +++ b/node_modules/@sinclair/typebox/compiler/compiler.d.ts @@ -0,0 +1,35 @@ +import * as Types from '../typebox'; +import { ValueErrorIterator } from '../errors/index'; +export type CheckFunction = (value: unknown) => boolean; +export declare class TypeCheck { + private readonly schema; + private readonly references; + private readonly checkFunc; + private readonly code; + constructor(schema: T, references: Types.TSchema[], checkFunc: CheckFunction, code: string); + /** Returns the generated assertion code used to validate this type. */ + Code(): string; + /** Returns an iterator for each error in this value. */ + Errors(value: unknown): ValueErrorIterator; + /** Returns true if the value matches the compiled type. */ + Check(value: unknown): value is Types.Static; +} +export declare class TypeCompilerUnknownTypeError extends Error { + readonly schema: Types.TSchema; + constructor(schema: Types.TSchema); +} +export declare class TypeCompilerDereferenceError extends Error { + readonly schema: Types.TRef; + constructor(schema: Types.TRef); +} +export declare class TypeCompilerTypeGuardError extends Error { + readonly schema: Types.TSchema; + constructor(schema: Types.TSchema); +} +/** Compiles Types for Runtime Type Checking */ +export declare namespace TypeCompiler { + /** Returns the generated assertion code used to validate this type. */ + function Code(schema: T, references?: Types.TSchema[]): string; + /** Compiles the given type for runtime type checking. This compiler only accepts known TypeBox types non-inclusive of unsafe types. */ + function Compile(schema: T, references?: Types.TSchema[]): TypeCheck; +} diff --git a/node_modules/@sinclair/typebox/compiler/compiler.js b/node_modules/@sinclair/typebox/compiler/compiler.js new file mode 100644 index 00000000..b318e7d8 --- /dev/null +++ b/node_modules/@sinclair/typebox/compiler/compiler.js @@ -0,0 +1,577 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/compiler + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TypeCompiler = exports.TypeCompilerTypeGuardError = exports.TypeCompilerDereferenceError = exports.TypeCompilerUnknownTypeError = exports.TypeCheck = void 0; +const Types = require("../typebox"); +const index_1 = require("../errors/index"); +const index_2 = require("../system/index"); +const hash_1 = require("../value/hash"); +// ------------------------------------------------------------------- +// TypeCheck +// ------------------------------------------------------------------- +class TypeCheck { + constructor(schema, references, checkFunc, code) { + this.schema = schema; + this.references = references; + this.checkFunc = checkFunc; + this.code = code; + } + /** Returns the generated assertion code used to validate this type. */ + Code() { + return this.code; + } + /** Returns an iterator for each error in this value. */ + Errors(value) { + return index_1.ValueErrors.Errors(this.schema, this.references, value); + } + /** Returns true if the value matches the compiled type. */ + Check(value) { + return this.checkFunc(value); + } +} +exports.TypeCheck = TypeCheck; +// ------------------------------------------------------------------- +// Character +// ------------------------------------------------------------------- +var Character; +(function (Character) { + function DollarSign(code) { + return code === 36; + } + Character.DollarSign = DollarSign; + function IsUnderscore(code) { + return code === 95; + } + Character.IsUnderscore = IsUnderscore; + function IsAlpha(code) { + return (code >= 65 && code <= 90) || (code >= 97 && code <= 122); + } + Character.IsAlpha = IsAlpha; + function IsNumeric(code) { + return code >= 48 && code <= 57; + } + Character.IsNumeric = IsNumeric; +})(Character || (Character = {})); +// ------------------------------------------------------------------- +// MemberExpression +// ------------------------------------------------------------------- +var MemberExpression; +(function (MemberExpression) { + function IsFirstCharacterNumeric(value) { + if (value.length === 0) + return false; + return Character.IsNumeric(value.charCodeAt(0)); + } + function IsAccessor(value) { + if (IsFirstCharacterNumeric(value)) + return false; + for (let i = 0; i < value.length; i++) { + const code = value.charCodeAt(i); + const check = Character.IsAlpha(code) || Character.IsNumeric(code) || Character.DollarSign(code) || Character.IsUnderscore(code); + if (!check) + return false; + } + return true; + } + function EscapeHyphen(key) { + return key.replace(/'/g, "\\'"); + } + function Encode(object, key) { + return IsAccessor(key) ? `${object}.${key}` : `${object}['${EscapeHyphen(key)}']`; + } + MemberExpression.Encode = Encode; +})(MemberExpression || (MemberExpression = {})); +// ------------------------------------------------------------------- +// Identifier +// ------------------------------------------------------------------- +var Identifier; +(function (Identifier) { + function Encode($id) { + const buffer = []; + for (let i = 0; i < $id.length; i++) { + const code = $id.charCodeAt(i); + if (Character.IsNumeric(code) || Character.IsAlpha(code)) { + buffer.push($id.charAt(i)); + } + else { + buffer.push(`_${code}_`); + } + } + return buffer.join('').replace(/__/g, '_'); + } + Identifier.Encode = Encode; +})(Identifier || (Identifier = {})); +// ------------------------------------------------------------------- +// TypeCompiler +// ------------------------------------------------------------------- +class TypeCompilerUnknownTypeError extends Error { + constructor(schema) { + super('TypeCompiler: Unknown type'); + this.schema = schema; + } +} +exports.TypeCompilerUnknownTypeError = TypeCompilerUnknownTypeError; +class TypeCompilerDereferenceError extends Error { + constructor(schema) { + super(`TypeCompiler: Unable to dereference schema with $id '${schema.$ref}'`); + this.schema = schema; + } +} +exports.TypeCompilerDereferenceError = TypeCompilerDereferenceError; +class TypeCompilerTypeGuardError extends Error { + constructor(schema) { + super('TypeCompiler: Preflight validation check failed to guard for the given schema'); + this.schema = schema; + } +} +exports.TypeCompilerTypeGuardError = TypeCompilerTypeGuardError; +/** Compiles Types for Runtime Type Checking */ +var TypeCompiler; +(function (TypeCompiler) { + // ------------------------------------------------------------------- + // Guards + // ------------------------------------------------------------------- + function IsBigInt(value) { + return typeof value === 'bigint'; + } + function IsNumber(value) { + return typeof value === 'number' && globalThis.Number.isFinite(value); + } + function IsString(value) { + return typeof value === 'string'; + } + // ------------------------------------------------------------------- + // Polices + // ------------------------------------------------------------------- + function IsExactOptionalProperty(value, key, expression) { + return index_2.TypeSystem.ExactOptionalPropertyTypes ? `('${key}' in ${value} ? ${expression} : true)` : `(${MemberExpression.Encode(value, key)} !== undefined ? ${expression} : true)`; + } + function IsObjectCheck(value) { + return !index_2.TypeSystem.AllowArrayObjects ? `(typeof ${value} === 'object' && ${value} !== null && !Array.isArray(${value}))` : `(typeof ${value} === 'object' && ${value} !== null)`; + } + function IsRecordCheck(value) { + return !index_2.TypeSystem.AllowArrayObjects + ? `(typeof ${value} === 'object' && ${value} !== null && !Array.isArray(${value}) && !(${value} instanceof Date) && !(${value} instanceof Uint8Array))` + : `(typeof ${value} === 'object' && ${value} !== null && !(${value} instanceof Date) && !(${value} instanceof Uint8Array))`; + } + function IsNumberCheck(value) { + return !index_2.TypeSystem.AllowNaN ? `(typeof ${value} === 'number' && Number.isFinite(${value}))` : `typeof ${value} === 'number'`; + } + function IsVoidCheck(value) { + return index_2.TypeSystem.AllowVoidNull ? `(${value} === undefined || ${value} === null)` : `${value} === undefined`; + } + // ------------------------------------------------------------------- + // Types + // ------------------------------------------------------------------- + function* Any(schema, references, value) { + yield 'true'; + } + function* Array(schema, references, value) { + const expression = CreateExpression(schema.items, references, 'value'); + yield `Array.isArray(${value}) && ${value}.every(value => ${expression})`; + if (IsNumber(schema.minItems)) + yield `${value}.length >= ${schema.minItems}`; + if (IsNumber(schema.maxItems)) + yield `${value}.length <= ${schema.maxItems}`; + if (schema.uniqueItems === true) + yield `((function() { const set = new Set(); for(const element of ${value}) { const hashed = hash(element); if(set.has(hashed)) { return false } else { set.add(hashed) } } return true })())`; + } + function* BigInt(schema, references, value) { + yield `(typeof ${value} === 'bigint')`; + if (IsBigInt(schema.multipleOf)) + yield `(${value} % BigInt(${schema.multipleOf})) === 0`; + if (IsBigInt(schema.exclusiveMinimum)) + yield `${value} > BigInt(${schema.exclusiveMinimum})`; + if (IsBigInt(schema.exclusiveMaximum)) + yield `${value} < BigInt(${schema.exclusiveMaximum})`; + if (IsBigInt(schema.minimum)) + yield `${value} >= BigInt(${schema.minimum})`; + if (IsBigInt(schema.maximum)) + yield `${value} <= BigInt(${schema.maximum})`; + } + function* Boolean(schema, references, value) { + yield `typeof ${value} === 'boolean'`; + } + function* Constructor(schema, references, value) { + yield* Visit(schema.returns, references, `${value}.prototype`); + } + function* Date(schema, references, value) { + yield `(${value} instanceof Date) && Number.isFinite(${value}.getTime())`; + if (IsNumber(schema.exclusiveMinimumTimestamp)) + yield `${value}.getTime() > ${schema.exclusiveMinimumTimestamp}`; + if (IsNumber(schema.exclusiveMaximumTimestamp)) + yield `${value}.getTime() < ${schema.exclusiveMaximumTimestamp}`; + if (IsNumber(schema.minimumTimestamp)) + yield `${value}.getTime() >= ${schema.minimumTimestamp}`; + if (IsNumber(schema.maximumTimestamp)) + yield `${value}.getTime() <= ${schema.maximumTimestamp}`; + } + function* Function(schema, references, value) { + yield `typeof ${value} === 'function'`; + } + function* Integer(schema, references, value) { + yield `(typeof ${value} === 'number' && Number.isInteger(${value}))`; + if (IsNumber(schema.multipleOf)) + yield `(${value} % ${schema.multipleOf}) === 0`; + if (IsNumber(schema.exclusiveMinimum)) + yield `${value} > ${schema.exclusiveMinimum}`; + if (IsNumber(schema.exclusiveMaximum)) + yield `${value} < ${schema.exclusiveMaximum}`; + if (IsNumber(schema.minimum)) + yield `${value} >= ${schema.minimum}`; + if (IsNumber(schema.maximum)) + yield `${value} <= ${schema.maximum}`; + } + function* Intersect(schema, references, value) { + if (schema.unevaluatedProperties === undefined) { + const expressions = schema.allOf.map((schema) => CreateExpression(schema, references, value)); + yield `${expressions.join(' && ')}`; + } + else if (schema.unevaluatedProperties === false) { + // prettier-ignore + const schemaKeys = Types.KeyResolver.Resolve(schema).map((key) => `'${key}'`).join(', '); + const expressions = schema.allOf.map((schema) => CreateExpression(schema, references, value)); + const expression1 = `Object.getOwnPropertyNames(${value}).every(key => [${schemaKeys}].includes(key))`; + yield `${expressions.join(' && ')} && ${expression1}`; + } + else if (typeof schema.unevaluatedProperties === 'object') { + // prettier-ignore + const schemaKeys = Types.KeyResolver.Resolve(schema).map((key) => `'${key}'`).join(', '); + const expressions = schema.allOf.map((schema) => CreateExpression(schema, references, value)); + const expression1 = CreateExpression(schema.unevaluatedProperties, references, 'value[key]'); + const expression2 = `Object.getOwnPropertyNames(${value}).every(key => [${schemaKeys}].includes(key) || ${expression1})`; + yield `${expressions.join(' && ')} && ${expression2}`; + } + } + function* Literal(schema, references, value) { + if (typeof schema.const === 'number' || typeof schema.const === 'boolean') { + yield `${value} === ${schema.const}`; + } + else { + yield `${value} === '${schema.const}'`; + } + } + function* Never(schema, references, value) { + yield `false`; + } + function* Not(schema, references, value) { + const left = CreateExpression(schema.allOf[0].not, references, value); + const right = CreateExpression(schema.allOf[1], references, value); + yield `!${left} && ${right}`; + } + function* Null(schema, references, value) { + yield `${value} === null`; + } + function* Number(schema, references, value) { + yield IsNumberCheck(value); + if (IsNumber(schema.multipleOf)) + yield `(${value} % ${schema.multipleOf}) === 0`; + if (IsNumber(schema.exclusiveMinimum)) + yield `${value} > ${schema.exclusiveMinimum}`; + if (IsNumber(schema.exclusiveMaximum)) + yield `${value} < ${schema.exclusiveMaximum}`; + if (IsNumber(schema.minimum)) + yield `${value} >= ${schema.minimum}`; + if (IsNumber(schema.maximum)) + yield `${value} <= ${schema.maximum}`; + } + function* Object(schema, references, value) { + yield IsObjectCheck(value); + if (IsNumber(schema.minProperties)) + yield `Object.getOwnPropertyNames(${value}).length >= ${schema.minProperties}`; + if (IsNumber(schema.maxProperties)) + yield `Object.getOwnPropertyNames(${value}).length <= ${schema.maxProperties}`; + const knownKeys = globalThis.Object.getOwnPropertyNames(schema.properties); + for (const knownKey of knownKeys) { + const memberExpression = MemberExpression.Encode(value, knownKey); + const property = schema.properties[knownKey]; + if (schema.required && schema.required.includes(knownKey)) { + yield* Visit(property, references, memberExpression); + if (Types.ExtendsUndefined.Check(property)) + yield `('${knownKey}' in ${value})`; + } + else { + const expression = CreateExpression(property, references, memberExpression); + yield IsExactOptionalProperty(value, knownKey, expression); + } + } + if (schema.additionalProperties === false) { + if (schema.required && schema.required.length === knownKeys.length) { + yield `Object.getOwnPropertyNames(${value}).length === ${knownKeys.length}`; + } + else { + const keys = `[${knownKeys.map((key) => `'${key}'`).join(', ')}]`; + yield `Object.getOwnPropertyNames(${value}).every(key => ${keys}.includes(key))`; + } + } + if (typeof schema.additionalProperties === 'object') { + const expression = CreateExpression(schema.additionalProperties, references, 'value[key]'); + const keys = `[${knownKeys.map((key) => `'${key}'`).join(', ')}]`; + yield `(Object.getOwnPropertyNames(${value}).every(key => ${keys}.includes(key) || ${expression}))`; + } + } + function* Promise(schema, references, value) { + yield `(typeof value === 'object' && typeof ${value}.then === 'function')`; + } + function* Record(schema, references, value) { + yield IsRecordCheck(value); + if (IsNumber(schema.minProperties)) + yield `Object.getOwnPropertyNames(${value}).length >= ${schema.minProperties}`; + if (IsNumber(schema.maxProperties)) + yield `Object.getOwnPropertyNames(${value}).length <= ${schema.maxProperties}`; + const [keyPattern, valueSchema] = globalThis.Object.entries(schema.patternProperties)[0]; + const local = PushLocal(`new RegExp(/${keyPattern}/)`); + yield `(Object.getOwnPropertyNames(${value}).every(key => ${local}.test(key)))`; + const expression = CreateExpression(valueSchema, references, 'value'); + yield `Object.values(${value}).every(value => ${expression})`; + } + function* Ref(schema, references, value) { + const index = references.findIndex((foreign) => foreign.$id === schema.$ref); + if (index === -1) + throw new TypeCompilerDereferenceError(schema); + const target = references[index]; + // Reference: If we have seen this reference before we can just yield and return + // the function call. If this isn't the case we defer to visit to generate and + // set the function for subsequent passes. Consider for refactor. + if (state_local_function_names.has(schema.$ref)) + return yield `${CreateFunctionName(schema.$ref)}(${value})`; + yield* Visit(target, references, value); + } + function* String(schema, references, value) { + yield `(typeof ${value} === 'string')`; + if (IsNumber(schema.minLength)) + yield `${value}.length >= ${schema.minLength}`; + if (IsNumber(schema.maxLength)) + yield `${value}.length <= ${schema.maxLength}`; + if (schema.pattern !== undefined) { + const local = PushLocal(`${new RegExp(schema.pattern)};`); + yield `${local}.test(${value})`; + } + if (schema.format !== undefined) { + yield `format('${schema.format}', ${value})`; + } + } + function* Symbol(schema, references, value) { + yield `(typeof ${value} === 'symbol')`; + } + function* TemplateLiteral(schema, references, value) { + yield `(typeof ${value} === 'string')`; + const local = PushLocal(`${new RegExp(schema.pattern)};`); + yield `${local}.test(${value})`; + } + function* This(schema, references, value) { + const func = CreateFunctionName(schema.$ref); + yield `${func}(${value})`; + } + function* Tuple(schema, references, value) { + yield `(Array.isArray(${value}))`; + if (schema.items === undefined) + return yield `${value}.length === 0`; + yield `(${value}.length === ${schema.maxItems})`; + for (let i = 0; i < schema.items.length; i++) { + const expression = CreateExpression(schema.items[i], references, `${value}[${i}]`); + yield `${expression}`; + } + } + function* Undefined(schema, references, value) { + yield `${value} === undefined`; + } + function* Union(schema, references, value) { + const expressions = schema.anyOf.map((schema) => CreateExpression(schema, references, value)); + yield `(${expressions.join(' || ')})`; + } + function* Uint8Array(schema, references, value) { + yield `${value} instanceof Uint8Array`; + if (IsNumber(schema.maxByteLength)) + yield `(${value}.length <= ${schema.maxByteLength})`; + if (IsNumber(schema.minByteLength)) + yield `(${value}.length >= ${schema.minByteLength})`; + } + function* Unknown(schema, references, value) { + yield 'true'; + } + function* Void(schema, references, value) { + yield IsVoidCheck(value); + } + function* UserDefined(schema, references, value) { + const schema_key = `schema_key_${state_remote_custom_types.size}`; + state_remote_custom_types.set(schema_key, schema); + yield `custom('${schema[Types.Kind]}', '${schema_key}', ${value})`; + } + function* Visit(schema, references, value) { + const references_ = IsString(schema.$id) ? [...references, schema] : references; + const schema_ = schema; + // Reference: Referenced schemas can originate from either additional schemas + // or inline in the schema itself. Ideally the recursive path should align to + // reference path. Consider for refactor. + if (IsString(schema.$id) && !state_local_function_names.has(schema.$id)) { + state_local_function_names.add(schema.$id); + const name = CreateFunctionName(schema.$id); + const body = CreateFunction(name, schema, references, 'value'); + PushFunction(body); + yield `${name}(${value})`; + return; + } + switch (schema_[Types.Kind]) { + case 'Any': + return yield* Any(schema_, references_, value); + case 'Array': + return yield* Array(schema_, references_, value); + case 'BigInt': + return yield* BigInt(schema_, references_, value); + case 'Boolean': + return yield* Boolean(schema_, references_, value); + case 'Constructor': + return yield* Constructor(schema_, references_, value); + case 'Date': + return yield* Date(schema_, references_, value); + case 'Function': + return yield* Function(schema_, references_, value); + case 'Integer': + return yield* Integer(schema_, references_, value); + case 'Intersect': + return yield* Intersect(schema_, references_, value); + case 'Literal': + return yield* Literal(schema_, references_, value); + case 'Never': + return yield* Never(schema_, references_, value); + case 'Not': + return yield* Not(schema_, references_, value); + case 'Null': + return yield* Null(schema_, references_, value); + case 'Number': + return yield* Number(schema_, references_, value); + case 'Object': + return yield* Object(schema_, references_, value); + case 'Promise': + return yield* Promise(schema_, references_, value); + case 'Record': + return yield* Record(schema_, references_, value); + case 'Ref': + return yield* Ref(schema_, references_, value); + case 'String': + return yield* String(schema_, references_, value); + case 'Symbol': + return yield* Symbol(schema_, references_, value); + case 'TemplateLiteral': + return yield* TemplateLiteral(schema_, references_, value); + case 'This': + return yield* This(schema_, references_, value); + case 'Tuple': + return yield* Tuple(schema_, references_, value); + case 'Undefined': + return yield* Undefined(schema_, references_, value); + case 'Union': + return yield* Union(schema_, references_, value); + case 'Uint8Array': + return yield* Uint8Array(schema_, references_, value); + case 'Unknown': + return yield* Unknown(schema_, references_, value); + case 'Void': + return yield* Void(schema_, references_, value); + default: + if (!Types.TypeRegistry.Has(schema_[Types.Kind])) + throw new TypeCompilerUnknownTypeError(schema); + return yield* UserDefined(schema_, references_, value); + } + } + // ------------------------------------------------------------------- + // Compiler State + // ------------------------------------------------------------------- + const state_local_variables = new Set(); // local variables and functions + const state_local_function_names = new Set(); // local function names used call ref validators + const state_remote_custom_types = new Map(); // remote custom types used during compilation + function ResetCompiler() { + state_local_variables.clear(); + state_local_function_names.clear(); + state_remote_custom_types.clear(); + } + function CreateExpression(schema, references, value) { + return `(${[...Visit(schema, references, value)].join(' && ')})`; + } + function CreateFunctionName($id) { + return `check_${Identifier.Encode($id)}`; + } + function CreateFunction(name, schema, references, value) { + const expression = [...Visit(schema, references, value)].map((condition) => ` ${condition}`).join(' &&\n'); + return `function ${name}(value) {\n return (\n${expression}\n )\n}`; + } + function PushFunction(functionBody) { + state_local_variables.add(functionBody); + } + function PushLocal(expression) { + const local = `local_${state_local_variables.size}`; + state_local_variables.add(`const ${local} = ${expression}`); + return local; + } + function GetLocals() { + return [...state_local_variables.values()]; + } + // ------------------------------------------------------------------- + // Compile + // ------------------------------------------------------------------- + function Build(schema, references) { + ResetCompiler(); + const check = CreateFunction('check', schema, references, 'value'); + const locals = GetLocals(); + return `${locals.join('\n')}\nreturn ${check}`; + } + /** Returns the generated assertion code used to validate this type. */ + function Code(schema, references = []) { + if (!Types.TypeGuard.TSchema(schema)) + throw new TypeCompilerTypeGuardError(schema); + for (const schema of references) + if (!Types.TypeGuard.TSchema(schema)) + throw new TypeCompilerTypeGuardError(schema); + return Build(schema, references); + } + TypeCompiler.Code = Code; + /** Compiles the given type for runtime type checking. This compiler only accepts known TypeBox types non-inclusive of unsafe types. */ + function Compile(schema, references = []) { + const code = Code(schema, references); + const custom_schemas = new Map(state_remote_custom_types); + const compiledFunction = globalThis.Function('custom', 'format', 'hash', code); + const checkFunction = compiledFunction((kind, schema_key, value) => { + if (!Types.TypeRegistry.Has(kind) || !custom_schemas.has(schema_key)) + return false; + const schema = custom_schemas.get(schema_key); + const func = Types.TypeRegistry.Get(kind); + return func(schema, value); + }, (format, value) => { + if (!Types.FormatRegistry.Has(format)) + return false; + const func = Types.FormatRegistry.Get(format); + return func(value); + }, (value) => { + return hash_1.ValueHash.Create(value); + }); + return new TypeCheck(schema, references, checkFunction, code); + } + TypeCompiler.Compile = Compile; +})(TypeCompiler = exports.TypeCompiler || (exports.TypeCompiler = {})); diff --git a/node_modules/@sinclair/typebox/compiler/index.d.ts b/node_modules/@sinclair/typebox/compiler/index.d.ts new file mode 100644 index 00000000..4062a62f --- /dev/null +++ b/node_modules/@sinclair/typebox/compiler/index.d.ts @@ -0,0 +1,2 @@ +export { ValueError, ValueErrorType } from '../errors/index'; +export * from './compiler'; diff --git a/node_modules/@sinclair/typebox/compiler/index.js b/node_modules/@sinclair/typebox/compiler/index.js new file mode 100644 index 00000000..7a013c3e --- /dev/null +++ b/node_modules/@sinclair/typebox/compiler/index.js @@ -0,0 +1,47 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/compiler + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValueErrorType = void 0; +var index_1 = require("../errors/index"); +Object.defineProperty(exports, "ValueErrorType", { enumerable: true, get: function () { return index_1.ValueErrorType; } }); +__exportStar(require("./compiler"), exports); diff --git a/node_modules/@sinclair/typebox/errors/errors.d.ts b/node_modules/@sinclair/typebox/errors/errors.d.ts new file mode 100644 index 00000000..89786c61 --- /dev/null +++ b/node_modules/@sinclair/typebox/errors/errors.d.ts @@ -0,0 +1,88 @@ +import * as Types from '../typebox'; +export declare enum ValueErrorType { + Array = 0, + ArrayMinItems = 1, + ArrayMaxItems = 2, + ArrayUniqueItems = 3, + BigInt = 4, + BigIntMultipleOf = 5, + BigIntExclusiveMinimum = 6, + BigIntExclusiveMaximum = 7, + BigIntMinimum = 8, + BigIntMaximum = 9, + Boolean = 10, + Date = 11, + DateExclusiveMinimumTimestamp = 12, + DateExclusiveMaximumTimestamp = 13, + DateMinimumTimestamp = 14, + DateMaximumTimestamp = 15, + Function = 16, + Integer = 17, + IntegerMultipleOf = 18, + IntegerExclusiveMinimum = 19, + IntegerExclusiveMaximum = 20, + IntegerMinimum = 21, + IntegerMaximum = 22, + Intersect = 23, + IntersectUnevaluatedProperties = 24, + Literal = 25, + Never = 26, + Not = 27, + Null = 28, + Number = 29, + NumberMultipleOf = 30, + NumberExclusiveMinimum = 31, + NumberExclusiveMaximum = 32, + NumberMinumum = 33, + NumberMaximum = 34, + Object = 35, + ObjectMinProperties = 36, + ObjectMaxProperties = 37, + ObjectAdditionalProperties = 38, + ObjectRequiredProperties = 39, + Promise = 40, + RecordKeyNumeric = 41, + RecordKeyString = 42, + String = 43, + StringMinLength = 44, + StringMaxLength = 45, + StringPattern = 46, + StringFormatUnknown = 47, + StringFormat = 48, + Symbol = 49, + TupleZeroLength = 50, + TupleLength = 51, + Undefined = 52, + Union = 53, + Uint8Array = 54, + Uint8ArrayMinByteLength = 55, + Uint8ArrayMaxByteLength = 56, + Void = 57, + Custom = 58 +} +export interface ValueError { + type: ValueErrorType; + schema: Types.TSchema; + path: string; + value: unknown; + message: string; +} +export declare class ValueErrorIterator { + private readonly iterator; + constructor(iterator: IterableIterator); + [Symbol.iterator](): IterableIterator; + /** Returns the first value error or undefined if no errors */ + First(): ValueError | undefined; +} +export declare class ValueErrorsUnknownTypeError extends Error { + readonly schema: Types.TSchema; + constructor(schema: Types.TSchema); +} +export declare class ValueErrorsDereferenceError extends Error { + readonly schema: Types.TRef | Types.TThis; + constructor(schema: Types.TRef | Types.TThis); +} +/** Provides functionality to generate a sequence of errors against a TypeBox type. */ +export declare namespace ValueErrors { + function Errors(schema: T, references: Types.TSchema[], value: any): ValueErrorIterator; +} diff --git a/node_modules/@sinclair/typebox/errors/errors.js b/node_modules/@sinclair/typebox/errors/errors.js new file mode 100644 index 00000000..4f7210ba --- /dev/null +++ b/node_modules/@sinclair/typebox/errors/errors.js @@ -0,0 +1,609 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValueErrors = exports.ValueErrorsDereferenceError = exports.ValueErrorsUnknownTypeError = exports.ValueErrorIterator = exports.ValueErrorType = void 0; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/errors + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +const Types = require("../typebox"); +const index_1 = require("../system/index"); +const hash_1 = require("../value/hash"); +// ------------------------------------------------------------------- +// ValueErrorType +// ------------------------------------------------------------------- +var ValueErrorType; +(function (ValueErrorType) { + ValueErrorType[ValueErrorType["Array"] = 0] = "Array"; + ValueErrorType[ValueErrorType["ArrayMinItems"] = 1] = "ArrayMinItems"; + ValueErrorType[ValueErrorType["ArrayMaxItems"] = 2] = "ArrayMaxItems"; + ValueErrorType[ValueErrorType["ArrayUniqueItems"] = 3] = "ArrayUniqueItems"; + ValueErrorType[ValueErrorType["BigInt"] = 4] = "BigInt"; + ValueErrorType[ValueErrorType["BigIntMultipleOf"] = 5] = "BigIntMultipleOf"; + ValueErrorType[ValueErrorType["BigIntExclusiveMinimum"] = 6] = "BigIntExclusiveMinimum"; + ValueErrorType[ValueErrorType["BigIntExclusiveMaximum"] = 7] = "BigIntExclusiveMaximum"; + ValueErrorType[ValueErrorType["BigIntMinimum"] = 8] = "BigIntMinimum"; + ValueErrorType[ValueErrorType["BigIntMaximum"] = 9] = "BigIntMaximum"; + ValueErrorType[ValueErrorType["Boolean"] = 10] = "Boolean"; + ValueErrorType[ValueErrorType["Date"] = 11] = "Date"; + ValueErrorType[ValueErrorType["DateExclusiveMinimumTimestamp"] = 12] = "DateExclusiveMinimumTimestamp"; + ValueErrorType[ValueErrorType["DateExclusiveMaximumTimestamp"] = 13] = "DateExclusiveMaximumTimestamp"; + ValueErrorType[ValueErrorType["DateMinimumTimestamp"] = 14] = "DateMinimumTimestamp"; + ValueErrorType[ValueErrorType["DateMaximumTimestamp"] = 15] = "DateMaximumTimestamp"; + ValueErrorType[ValueErrorType["Function"] = 16] = "Function"; + ValueErrorType[ValueErrorType["Integer"] = 17] = "Integer"; + ValueErrorType[ValueErrorType["IntegerMultipleOf"] = 18] = "IntegerMultipleOf"; + ValueErrorType[ValueErrorType["IntegerExclusiveMinimum"] = 19] = "IntegerExclusiveMinimum"; + ValueErrorType[ValueErrorType["IntegerExclusiveMaximum"] = 20] = "IntegerExclusiveMaximum"; + ValueErrorType[ValueErrorType["IntegerMinimum"] = 21] = "IntegerMinimum"; + ValueErrorType[ValueErrorType["IntegerMaximum"] = 22] = "IntegerMaximum"; + ValueErrorType[ValueErrorType["Intersect"] = 23] = "Intersect"; + ValueErrorType[ValueErrorType["IntersectUnevaluatedProperties"] = 24] = "IntersectUnevaluatedProperties"; + ValueErrorType[ValueErrorType["Literal"] = 25] = "Literal"; + ValueErrorType[ValueErrorType["Never"] = 26] = "Never"; + ValueErrorType[ValueErrorType["Not"] = 27] = "Not"; + ValueErrorType[ValueErrorType["Null"] = 28] = "Null"; + ValueErrorType[ValueErrorType["Number"] = 29] = "Number"; + ValueErrorType[ValueErrorType["NumberMultipleOf"] = 30] = "NumberMultipleOf"; + ValueErrorType[ValueErrorType["NumberExclusiveMinimum"] = 31] = "NumberExclusiveMinimum"; + ValueErrorType[ValueErrorType["NumberExclusiveMaximum"] = 32] = "NumberExclusiveMaximum"; + ValueErrorType[ValueErrorType["NumberMinumum"] = 33] = "NumberMinumum"; + ValueErrorType[ValueErrorType["NumberMaximum"] = 34] = "NumberMaximum"; + ValueErrorType[ValueErrorType["Object"] = 35] = "Object"; + ValueErrorType[ValueErrorType["ObjectMinProperties"] = 36] = "ObjectMinProperties"; + ValueErrorType[ValueErrorType["ObjectMaxProperties"] = 37] = "ObjectMaxProperties"; + ValueErrorType[ValueErrorType["ObjectAdditionalProperties"] = 38] = "ObjectAdditionalProperties"; + ValueErrorType[ValueErrorType["ObjectRequiredProperties"] = 39] = "ObjectRequiredProperties"; + ValueErrorType[ValueErrorType["Promise"] = 40] = "Promise"; + ValueErrorType[ValueErrorType["RecordKeyNumeric"] = 41] = "RecordKeyNumeric"; + ValueErrorType[ValueErrorType["RecordKeyString"] = 42] = "RecordKeyString"; + ValueErrorType[ValueErrorType["String"] = 43] = "String"; + ValueErrorType[ValueErrorType["StringMinLength"] = 44] = "StringMinLength"; + ValueErrorType[ValueErrorType["StringMaxLength"] = 45] = "StringMaxLength"; + ValueErrorType[ValueErrorType["StringPattern"] = 46] = "StringPattern"; + ValueErrorType[ValueErrorType["StringFormatUnknown"] = 47] = "StringFormatUnknown"; + ValueErrorType[ValueErrorType["StringFormat"] = 48] = "StringFormat"; + ValueErrorType[ValueErrorType["Symbol"] = 49] = "Symbol"; + ValueErrorType[ValueErrorType["TupleZeroLength"] = 50] = "TupleZeroLength"; + ValueErrorType[ValueErrorType["TupleLength"] = 51] = "TupleLength"; + ValueErrorType[ValueErrorType["Undefined"] = 52] = "Undefined"; + ValueErrorType[ValueErrorType["Union"] = 53] = "Union"; + ValueErrorType[ValueErrorType["Uint8Array"] = 54] = "Uint8Array"; + ValueErrorType[ValueErrorType["Uint8ArrayMinByteLength"] = 55] = "Uint8ArrayMinByteLength"; + ValueErrorType[ValueErrorType["Uint8ArrayMaxByteLength"] = 56] = "Uint8ArrayMaxByteLength"; + ValueErrorType[ValueErrorType["Void"] = 57] = "Void"; + ValueErrorType[ValueErrorType["Custom"] = 58] = "Custom"; +})(ValueErrorType = exports.ValueErrorType || (exports.ValueErrorType = {})); +// ------------------------------------------------------------------- +// ValueErrorIterator +// ------------------------------------------------------------------- +class ValueErrorIterator { + constructor(iterator) { + this.iterator = iterator; + } + [Symbol.iterator]() { + return this.iterator; + } + /** Returns the first value error or undefined if no errors */ + First() { + const next = this.iterator.next(); + return next.done ? undefined : next.value; + } +} +exports.ValueErrorIterator = ValueErrorIterator; +// ------------------------------------------------------------------- +// ValueErrors +// ------------------------------------------------------------------- +class ValueErrorsUnknownTypeError extends Error { + constructor(schema) { + super('ValueErrors: Unknown type'); + this.schema = schema; + } +} +exports.ValueErrorsUnknownTypeError = ValueErrorsUnknownTypeError; +class ValueErrorsDereferenceError extends Error { + constructor(schema) { + super(`ValueErrors: Unable to dereference schema with $id '${schema.$ref}'`); + this.schema = schema; + } +} +exports.ValueErrorsDereferenceError = ValueErrorsDereferenceError; +/** Provides functionality to generate a sequence of errors against a TypeBox type. */ +var ValueErrors; +(function (ValueErrors) { + // ---------------------------------------------------------------------- + // Guards + // ---------------------------------------------------------------------- + function IsBigInt(value) { + return typeof value === 'bigint'; + } + function IsInteger(value) { + return globalThis.Number.isInteger(value); + } + function IsString(value) { + return typeof value === 'string'; + } + function IsDefined(value) { + return value !== undefined; + } + // ---------------------------------------------------------------------- + // Policies + // ---------------------------------------------------------------------- + function IsExactOptionalProperty(value, key) { + return index_1.TypeSystem.ExactOptionalPropertyTypes ? key in value : value[key] !== undefined; + } + function IsObject(value) { + const result = typeof value === 'object' && value !== null; + return index_1.TypeSystem.AllowArrayObjects ? result : result && !globalThis.Array.isArray(value); + } + function IsRecordObject(value) { + return IsObject(value) && !(value instanceof globalThis.Date) && !(value instanceof globalThis.Uint8Array); + } + function IsNumber(value) { + const result = typeof value === 'number'; + return index_1.TypeSystem.AllowNaN ? result : result && globalThis.Number.isFinite(value); + } + function IsVoid(value) { + const result = value === undefined; + return index_1.TypeSystem.AllowVoidNull ? result || value === null : result; + } + // ---------------------------------------------------------------------- + // Types + // ---------------------------------------------------------------------- + function* Any(schema, references, path, value) { } + function* Array(schema, references, path, value) { + if (!globalThis.Array.isArray(value)) { + return yield { type: ValueErrorType.Array, schema, path, value, message: `Expected array` }; + } + if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) { + yield { type: ValueErrorType.ArrayMinItems, schema, path, value, message: `Expected array length to be greater or equal to ${schema.minItems}` }; + } + if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) { + yield { type: ValueErrorType.ArrayMinItems, schema, path, value, message: `Expected array length to be less or equal to ${schema.maxItems}` }; + } + // prettier-ignore + if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) { + const hashed = hash_1.ValueHash.Create(element); + if (set.has(hashed)) { + return false; + } + else { + set.add(hashed); + } + } return true; })())) { + yield { type: ValueErrorType.ArrayUniqueItems, schema, path, value, message: `Expected array elements to be unique` }; + } + for (let i = 0; i < value.length; i++) { + yield* Visit(schema.items, references, `${path}/${i}`, value[i]); + } + } + function* BigInt(schema, references, path, value) { + if (!IsBigInt(value)) { + return yield { type: ValueErrorType.BigInt, schema, path, value, message: `Expected bigint` }; + } + if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === globalThis.BigInt(0))) { + yield { type: ValueErrorType.BigIntMultipleOf, schema, path, value, message: `Expected bigint to be a multiple of ${schema.multipleOf}` }; + } + if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { + yield { type: ValueErrorType.BigIntExclusiveMinimum, schema, path, value, message: `Expected bigint to be greater than ${schema.exclusiveMinimum}` }; + } + if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { + yield { type: ValueErrorType.BigIntExclusiveMaximum, schema, path, value, message: `Expected bigint to be less than ${schema.exclusiveMaximum}` }; + } + if (IsDefined(schema.minimum) && !(value >= schema.minimum)) { + yield { type: ValueErrorType.BigIntMinimum, schema, path, value, message: `Expected bigint to be greater or equal to ${schema.minimum}` }; + } + if (IsDefined(schema.maximum) && !(value <= schema.maximum)) { + yield { type: ValueErrorType.BigIntMaximum, schema, path, value, message: `Expected bigint to be less or equal to ${schema.maximum}` }; + } + } + function* Boolean(schema, references, path, value) { + if (!(typeof value === 'boolean')) { + return yield { type: ValueErrorType.Boolean, schema, path, value, message: `Expected boolean` }; + } + } + function* Constructor(schema, references, path, value) { + yield* Visit(schema.returns, references, path, value.prototype); + } + function* Date(schema, references, path, value) { + if (!(value instanceof globalThis.Date)) { + return yield { type: ValueErrorType.Date, schema, path, value, message: `Expected Date object` }; + } + if (!globalThis.isFinite(value.getTime())) { + return yield { type: ValueErrorType.Date, schema, path, value, message: `Invalid Date` }; + } + if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) { + yield { type: ValueErrorType.DateExclusiveMinimumTimestamp, schema, path, value, message: `Expected Date timestamp to be greater than ${schema.exclusiveMinimum}` }; + } + if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) { + yield { type: ValueErrorType.DateExclusiveMaximumTimestamp, schema, path, value, message: `Expected Date timestamp to be less than ${schema.exclusiveMaximum}` }; + } + if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) { + yield { type: ValueErrorType.DateMinimumTimestamp, schema, path, value, message: `Expected Date timestamp to be greater or equal to ${schema.minimum}` }; + } + if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) { + yield { type: ValueErrorType.DateMaximumTimestamp, schema, path, value, message: `Expected Date timestamp to be less or equal to ${schema.maximum}` }; + } + } + function* Function(schema, references, path, value) { + if (!(typeof value === 'function')) { + return yield { type: ValueErrorType.Function, schema, path, value, message: `Expected function` }; + } + } + function* Integer(schema, references, path, value) { + if (!IsInteger(value)) { + return yield { type: ValueErrorType.Integer, schema, path, value, message: `Expected integer` }; + } + if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) { + yield { type: ValueErrorType.IntegerMultipleOf, schema, path, value, message: `Expected integer to be a multiple of ${schema.multipleOf}` }; + } + if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { + yield { type: ValueErrorType.IntegerExclusiveMinimum, schema, path, value, message: `Expected integer to be greater than ${schema.exclusiveMinimum}` }; + } + if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { + yield { type: ValueErrorType.IntegerExclusiveMaximum, schema, path, value, message: `Expected integer to be less than ${schema.exclusiveMaximum}` }; + } + if (IsDefined(schema.minimum) && !(value >= schema.minimum)) { + yield { type: ValueErrorType.IntegerMinimum, schema, path, value, message: `Expected integer to be greater or equal to ${schema.minimum}` }; + } + if (IsDefined(schema.maximum) && !(value <= schema.maximum)) { + yield { type: ValueErrorType.IntegerMaximum, schema, path, value, message: `Expected integer to be less or equal to ${schema.maximum}` }; + } + } + function* Intersect(schema, references, path, value) { + for (const subschema of schema.allOf) { + const next = Visit(subschema, references, path, value).next(); + if (!next.done) { + yield next.value; + yield { type: ValueErrorType.Intersect, schema, path, value, message: `Expected all sub schemas to be valid` }; + return; + } + } + if (schema.unevaluatedProperties === false) { + const schemaKeys = Types.KeyResolver.Resolve(schema); + const valueKeys = globalThis.Object.getOwnPropertyNames(value); + for (const valueKey of valueKeys) { + if (!schemaKeys.includes(valueKey)) { + yield { type: ValueErrorType.IntersectUnevaluatedProperties, schema, path: `${path}/${valueKey}`, value, message: `Unexpected property` }; + } + } + } + if (typeof schema.unevaluatedProperties === 'object') { + const schemaKeys = Types.KeyResolver.Resolve(schema); + const valueKeys = globalThis.Object.getOwnPropertyNames(value); + for (const valueKey of valueKeys) { + if (!schemaKeys.includes(valueKey)) { + const next = Visit(schema.unevaluatedProperties, references, `${path}/${valueKey}`, value[valueKey]).next(); + if (!next.done) { + yield next.value; + yield { type: ValueErrorType.IntersectUnevaluatedProperties, schema, path: `${path}/${valueKey}`, value, message: `Invalid additional property` }; + return; + } + } + } + } + } + function* Literal(schema, references, path, value) { + if (!(value === schema.const)) { + const error = typeof schema.const === 'string' ? `'${schema.const}'` : schema.const; + return yield { type: ValueErrorType.Literal, schema, path, value, message: `Expected ${error}` }; + } + } + function* Never(schema, references, path, value) { + yield { type: ValueErrorType.Never, schema, path, value, message: `Value cannot be validated` }; + } + function* Not(schema, references, path, value) { + if (Visit(schema.allOf[0].not, references, path, value).next().done === true) { + yield { type: ValueErrorType.Not, schema, path, value, message: `Value should not validate` }; + } + yield* Visit(schema.allOf[1], references, path, value); + } + function* Null(schema, references, path, value) { + if (!(value === null)) { + return yield { type: ValueErrorType.Null, schema, path, value, message: `Expected null` }; + } + } + function* Number(schema, references, path, value) { + if (!IsNumber(value)) { + return yield { type: ValueErrorType.Number, schema, path, value, message: `Expected number` }; + } + if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) { + yield { type: ValueErrorType.NumberMultipleOf, schema, path, value, message: `Expected number to be a multiple of ${schema.multipleOf}` }; + } + if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { + yield { type: ValueErrorType.NumberExclusiveMinimum, schema, path, value, message: `Expected number to be greater than ${schema.exclusiveMinimum}` }; + } + if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { + yield { type: ValueErrorType.NumberExclusiveMaximum, schema, path, value, message: `Expected number to be less than ${schema.exclusiveMaximum}` }; + } + if (IsDefined(schema.minimum) && !(value >= schema.minimum)) { + yield { type: ValueErrorType.NumberMaximum, schema, path, value, message: `Expected number to be greater or equal to ${schema.minimum}` }; + } + if (IsDefined(schema.maximum) && !(value <= schema.maximum)) { + yield { type: ValueErrorType.NumberMinumum, schema, path, value, message: `Expected number to be less or equal to ${schema.maximum}` }; + } + } + function* Object(schema, references, path, value) { + if (!IsObject(value)) { + return yield { type: ValueErrorType.Object, schema, path, value, message: `Expected object` }; + } + if (IsDefined(schema.minProperties) && !(globalThis.Object.getOwnPropertyNames(value).length >= schema.minProperties)) { + yield { type: ValueErrorType.ObjectMinProperties, schema, path, value, message: `Expected object to have at least ${schema.minProperties} properties` }; + } + if (IsDefined(schema.maxProperties) && !(globalThis.Object.getOwnPropertyNames(value).length <= schema.maxProperties)) { + yield { type: ValueErrorType.ObjectMaxProperties, schema, path, value, message: `Expected object to have less than ${schema.minProperties} properties` }; + } + const requiredKeys = globalThis.Array.isArray(schema.required) ? schema.required : []; + const knownKeys = globalThis.Object.getOwnPropertyNames(schema.properties); + const unknownKeys = globalThis.Object.getOwnPropertyNames(value); + for (const knownKey of knownKeys) { + const property = schema.properties[knownKey]; + if (schema.required && schema.required.includes(knownKey)) { + yield* Visit(property, references, `${path}/${knownKey}`, value[knownKey]); + if (Types.ExtendsUndefined.Check(schema) && !(knownKey in value)) { + yield { type: ValueErrorType.ObjectRequiredProperties, schema: property, path: `${path}/${knownKey}`, value: undefined, message: `Expected required property` }; + } + } + else { + if (IsExactOptionalProperty(value, knownKey)) { + yield* Visit(property, references, `${path}/${knownKey}`, value[knownKey]); + } + } + } + for (const requiredKey of requiredKeys) { + if (unknownKeys.includes(requiredKey)) + continue; + yield { type: ValueErrorType.ObjectRequiredProperties, schema: schema.properties[requiredKey], path: `${path}/${requiredKey}`, value: undefined, message: `Expected required property` }; + } + if (schema.additionalProperties === false) { + for (const valueKey of unknownKeys) { + if (!knownKeys.includes(valueKey)) { + yield { type: ValueErrorType.ObjectAdditionalProperties, schema, path: `${path}/${valueKey}`, value: value[valueKey], message: `Unexpected property` }; + } + } + } + if (typeof schema.additionalProperties === 'object') { + for (const valueKey of unknownKeys) { + if (knownKeys.includes(valueKey)) + continue; + yield* Visit(schema.additionalProperties, references, `${path}/${valueKey}`, value[valueKey]); + } + } + } + function* Promise(schema, references, path, value) { + if (!(typeof value === 'object' && typeof value.then === 'function')) { + yield { type: ValueErrorType.Promise, schema, path, value, message: `Expected Promise` }; + } + } + function* Record(schema, references, path, value) { + if (!IsRecordObject(value)) { + return yield { type: ValueErrorType.Object, schema, path, value, message: `Expected record object` }; + } + if (IsDefined(schema.minProperties) && !(globalThis.Object.getOwnPropertyNames(value).length >= schema.minProperties)) { + yield { type: ValueErrorType.ObjectMinProperties, schema, path, value, message: `Expected object to have at least ${schema.minProperties} properties` }; + } + if (IsDefined(schema.maxProperties) && !(globalThis.Object.getOwnPropertyNames(value).length <= schema.maxProperties)) { + yield { type: ValueErrorType.ObjectMaxProperties, schema, path, value, message: `Expected object to have less than ${schema.minProperties} properties` }; + } + const [keyPattern, valueSchema] = globalThis.Object.entries(schema.patternProperties)[0]; + const regex = new RegExp(keyPattern); + if (!globalThis.Object.getOwnPropertyNames(value).every((key) => regex.test(key))) { + const numeric = keyPattern === Types.PatternNumberExact; + const type = numeric ? ValueErrorType.RecordKeyNumeric : ValueErrorType.RecordKeyString; + const message = numeric ? 'Expected all object property keys to be numeric' : 'Expected all object property keys to be strings'; + return yield { type, schema, path, value, message }; + } + for (const [propKey, propValue] of globalThis.Object.entries(value)) { + yield* Visit(valueSchema, references, `${path}/${propKey}`, propValue); + } + } + function* Ref(schema, references, path, value) { + const index = references.findIndex((foreign) => foreign.$id === schema.$ref); + if (index === -1) + throw new ValueErrorsDereferenceError(schema); + const target = references[index]; + yield* Visit(target, references, path, value); + } + function* String(schema, references, path, value) { + if (!IsString(value)) { + return yield { type: ValueErrorType.String, schema, path, value, message: 'Expected string' }; + } + if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) { + yield { type: ValueErrorType.StringMinLength, schema, path, value, message: `Expected string length greater or equal to ${schema.minLength}` }; + } + if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) { + yield { type: ValueErrorType.StringMaxLength, schema, path, value, message: `Expected string length less or equal to ${schema.maxLength}` }; + } + if (schema.pattern !== undefined) { + const regex = new RegExp(schema.pattern); + if (!regex.test(value)) { + yield { type: ValueErrorType.StringPattern, schema, path, value, message: `Expected string to match pattern ${schema.pattern}` }; + } + } + if (schema.format !== undefined) { + if (!Types.FormatRegistry.Has(schema.format)) { + yield { type: ValueErrorType.StringFormatUnknown, schema, path, value, message: `Unknown string format '${schema.format}'` }; + } + else { + const format = Types.FormatRegistry.Get(schema.format); + if (!format(value)) { + yield { type: ValueErrorType.StringFormat, schema, path, value, message: `Expected string to match format '${schema.format}'` }; + } + } + } + } + function* Symbol(schema, references, path, value) { + if (!(typeof value === 'symbol')) { + return yield { type: ValueErrorType.Symbol, schema, path, value, message: 'Expected symbol' }; + } + } + function* TemplateLiteral(schema, references, path, value) { + if (!IsString(value)) { + return yield { type: ValueErrorType.String, schema, path, value, message: 'Expected string' }; + } + const regex = new RegExp(schema.pattern); + if (!regex.test(value)) { + yield { type: ValueErrorType.StringPattern, schema, path, value, message: `Expected string to match pattern ${schema.pattern}` }; + } + } + function* This(schema, references, path, value) { + const index = references.findIndex((foreign) => foreign.$id === schema.$ref); + if (index === -1) + throw new ValueErrorsDereferenceError(schema); + const target = references[index]; + yield* Visit(target, references, path, value); + } + function* Tuple(schema, references, path, value) { + if (!globalThis.Array.isArray(value)) { + return yield { type: ValueErrorType.Array, schema, path, value, message: 'Expected Array' }; + } + if (schema.items === undefined && !(value.length === 0)) { + return yield { type: ValueErrorType.TupleZeroLength, schema, path, value, message: 'Expected tuple to have 0 elements' }; + } + if (!(value.length === schema.maxItems)) { + yield { type: ValueErrorType.TupleLength, schema, path, value, message: `Expected tuple to have ${schema.maxItems} elements` }; + } + if (!schema.items) { + return; + } + for (let i = 0; i < schema.items.length; i++) { + yield* Visit(schema.items[i], references, `${path}/${i}`, value[i]); + } + } + function* Undefined(schema, references, path, value) { + if (!(value === undefined)) { + yield { type: ValueErrorType.Undefined, schema, path, value, message: `Expected undefined` }; + } + } + function* Union(schema, references, path, value) { + const errors = []; + for (const inner of schema.anyOf) { + const variantErrors = [...Visit(inner, references, path, value)]; + if (variantErrors.length === 0) + return; + errors.push(...variantErrors); + } + if (errors.length > 0) { + yield { type: ValueErrorType.Union, schema, path, value, message: 'Expected value of union' }; + } + for (const error of errors) { + yield error; + } + } + function* Uint8Array(schema, references, path, value) { + if (!(value instanceof globalThis.Uint8Array)) { + return yield { type: ValueErrorType.Uint8Array, schema, path, value, message: `Expected Uint8Array` }; + } + if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) { + yield { type: ValueErrorType.Uint8ArrayMaxByteLength, schema, path, value, message: `Expected Uint8Array to have a byte length less or equal to ${schema.maxByteLength}` }; + } + if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) { + yield { type: ValueErrorType.Uint8ArrayMinByteLength, schema, path, value, message: `Expected Uint8Array to have a byte length greater or equal to ${schema.maxByteLength}` }; + } + } + function* Unknown(schema, references, path, value) { } + function* Void(schema, references, path, value) { + if (!IsVoid(value)) { + return yield { type: ValueErrorType.Void, schema, path, value, message: `Expected void` }; + } + } + function* UserDefined(schema, references, path, value) { + const check = Types.TypeRegistry.Get(schema[Types.Kind]); + if (!check(schema, value)) { + return yield { type: ValueErrorType.Custom, schema, path, value, message: `Expected kind ${schema[Types.Kind]}` }; + } + } + function* Visit(schema, references, path, value) { + const references_ = IsDefined(schema.$id) ? [...references, schema] : references; + const schema_ = schema; + switch (schema_[Types.Kind]) { + case 'Any': + return yield* Any(schema_, references_, path, value); + case 'Array': + return yield* Array(schema_, references_, path, value); + case 'BigInt': + return yield* BigInt(schema_, references_, path, value); + case 'Boolean': + return yield* Boolean(schema_, references_, path, value); + case 'Constructor': + return yield* Constructor(schema_, references_, path, value); + case 'Date': + return yield* Date(schema_, references_, path, value); + case 'Function': + return yield* Function(schema_, references_, path, value); + case 'Integer': + return yield* Integer(schema_, references_, path, value); + case 'Intersect': + return yield* Intersect(schema_, references_, path, value); + case 'Literal': + return yield* Literal(schema_, references_, path, value); + case 'Never': + return yield* Never(schema_, references_, path, value); + case 'Not': + return yield* Not(schema_, references_, path, value); + case 'Null': + return yield* Null(schema_, references_, path, value); + case 'Number': + return yield* Number(schema_, references_, path, value); + case 'Object': + return yield* Object(schema_, references_, path, value); + case 'Promise': + return yield* Promise(schema_, references_, path, value); + case 'Record': + return yield* Record(schema_, references_, path, value); + case 'Ref': + return yield* Ref(schema_, references_, path, value); + case 'String': + return yield* String(schema_, references_, path, value); + case 'Symbol': + return yield* Symbol(schema_, references_, path, value); + case 'TemplateLiteral': + return yield* TemplateLiteral(schema_, references_, path, value); + case 'This': + return yield* This(schema_, references_, path, value); + case 'Tuple': + return yield* Tuple(schema_, references_, path, value); + case 'Undefined': + return yield* Undefined(schema_, references_, path, value); + case 'Union': + return yield* Union(schema_, references_, path, value); + case 'Uint8Array': + return yield* Uint8Array(schema_, references_, path, value); + case 'Unknown': + return yield* Unknown(schema_, references_, path, value); + case 'Void': + return yield* Void(schema_, references_, path, value); + default: + if (!Types.TypeRegistry.Has(schema_[Types.Kind])) + throw new ValueErrorsUnknownTypeError(schema); + return yield* UserDefined(schema_, references_, path, value); + } + } + function Errors(schema, references, value) { + const iterator = Visit(schema, references, '', value); + return new ValueErrorIterator(iterator); + } + ValueErrors.Errors = Errors; +})(ValueErrors = exports.ValueErrors || (exports.ValueErrors = {})); diff --git a/node_modules/@sinclair/typebox/errors/index.d.ts b/node_modules/@sinclair/typebox/errors/index.d.ts new file mode 100644 index 00000000..f72bc43e --- /dev/null +++ b/node_modules/@sinclair/typebox/errors/index.d.ts @@ -0,0 +1 @@ +export * from './errors'; diff --git a/node_modules/@sinclair/typebox/errors/index.js b/node_modules/@sinclair/typebox/errors/index.js new file mode 100644 index 00000000..9637155f --- /dev/null +++ b/node_modules/@sinclair/typebox/errors/index.js @@ -0,0 +1,44 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/errors + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./errors"), exports); diff --git a/node_modules/@sinclair/typebox/license b/node_modules/@sinclair/typebox/license new file mode 100644 index 00000000..1aa53980 --- /dev/null +++ b/node_modules/@sinclair/typebox/license @@ -0,0 +1,23 @@ +TypeBox: JSON Schema Type Builder with Static Type Resolution for TypeScript + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. \ No newline at end of file diff --git a/node_modules/@sinclair/typebox/package.json b/node_modules/@sinclair/typebox/package.json new file mode 100644 index 00000000..fff6589e --- /dev/null +++ b/node_modules/@sinclair/typebox/package.json @@ -0,0 +1,47 @@ +{ + "name": "@sinclair/typebox", + "version": "0.27.8", + "description": "JSONSchema Type Builder with Static Type Resolution for TypeScript", + "keywords": [ + "typescript", + "json-schema", + "validate", + "typecheck" + ], + "author": "sinclairzx81", + "license": "MIT", + "main": "./typebox.js", + "types": "./typebox.d.ts", + "exports": { + "./compiler": "./compiler/index.js", + "./errors": "./errors/index.js", + "./system": "./system/index.js", + "./value": "./value/index.js", + ".": "./typebox.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/sinclairzx81/typebox" + }, + "scripts": { + "clean": "hammer task clean", + "format": "hammer task format", + "start": "hammer task start", + "test": "hammer task test", + "benchmark": "hammer task benchmark", + "build": "hammer task build", + "publish": "hammer task publish" + }, + "devDependencies": { + "@sinclair/hammer": "^0.17.1", + "@types/chai": "^4.3.3", + "@types/mocha": "^9.1.1", + "@types/node": "^18.11.9", + "ajv": "^8.12.0", + "ajv-formats": "^2.1.1", + "chai": "^4.3.6", + "mocha": "^9.2.2", + "prettier": "^2.7.1", + "typescript": "^5.0.2" + } +} diff --git a/node_modules/@sinclair/typebox/readme.md b/node_modules/@sinclair/typebox/readme.md new file mode 100644 index 00000000..8e71d68d --- /dev/null +++ b/node_modules/@sinclair/typebox/readme.md @@ -0,0 +1,1424 @@ +
+ +

TypeBox

+ +

JSON Schema Type Builder with Static Type Resolution for TypeScript

+ + + +
+
+ +[![npm version](https://badge.fury.io/js/%40sinclair%2Ftypebox.svg)](https://badge.fury.io/js/%40sinclair%2Ftypebox) +[![Downloads](https://img.shields.io/npm/dm/%40sinclair%2Ftypebox.svg)](https://www.npmjs.com/package/%40sinclair%2Ftypebox) +[![GitHub CI](https://github.com/sinclairzx81/typebox/workflows/GitHub%20CI/badge.svg)](https://github.com/sinclairzx81/typebox/actions) + +
+ +
+ +## Install + +#### Npm +```bash +$ npm install @sinclair/typebox --save +``` + +#### Deno +```typescript +import { Static, Type } from 'npm:@sinclair/typebox' +``` + +#### Esm + +```typescript +import { Static, Type } from 'https://esm.sh/@sinclair/typebox' +``` + +## Example + +```typescript +import { Static, Type } from '@sinclair/typebox' + +const T = Type.Object({ // const T = { + x: Type.Number(), // type: 'object', + y: Type.Number(), // required: ['x', 'y', 'z'], + z: Type.Number() // properties: { +}) // x: { type: 'number' }, + // y: { type: 'number' }, + // z: { type: 'number' } + // } + // } + +type T = Static // type T = { + // x: number, + // y: number, + // z: number + // } +``` + + + + +## Overview + +TypeBox is a runtime type builder that creates in-memory JSON Schema objects that can be statically inferred as TypeScript types. The schemas produced by this library are designed to match the static type assertion rules of the TypeScript compiler. TypeBox enables one to create a unified type that can be statically checked by TypeScript and runtime asserted using standard JSON Schema validation. + +This library is designed to enable JSON schema to compose with the same flexibility as TypeScript's type system. It can be used as a simple tool to build up complex schemas or integrated into REST or RPC services to help validate data received over the wire. + +License MIT + +## Contents +- [Install](#install) +- [Overview](#overview) +- [Usage](#usage) +- [Types](#types) + - [Standard](#types-standard) + - [Extended](#types-extended) + - [Modifiers](#types-modifiers) + - [Options](#types-options) + - [Generics](#types-generics) + - [References](#types-references) + - [Recursive](#types-recursive) + - [Conditional](#types-conditional) + - [Template Literal](#types-template-literal) + - [Guards](#types-guards) + - [Unsafe](#types-unsafe) + - [Strict](#types-strict) +- [Values](#values) + - [Create](#values-create) + - [Clone](#values-clone) + - [Check](#values-check) + - [Convert](#values-convert) + - [Cast](#values-cast) + - [Equal](#values-equal) + - [Hash](#values-hash) + - [Diff](#values-diff) + - [Patch](#values-patch) + - [Errors](#values-errors) + - [Mutate](#values-mutate) + - [Pointer](#values-pointer) +- [TypeCheck](#typecheck) + - [Ajv](#typecheck-ajv) + - [TypeCompiler](#typecheck-typecompiler) +- [TypeSystem](#typesystem) + - [Types](#typesystem-types) + - [Formats](#typesystem-formats) + - [Policies](#typesystem-policies) +- [Benchmark](#benchmark) + - [Compile](#benchmark-compile) + - [Validate](#benchmark-validate) + - [Compression](#benchmark-compression) +- [Contribute](#contribute) + + + +## Usage + +The following shows general usage. + +```typescript +import { Static, Type } from '@sinclair/typebox' + +//-------------------------------------------------------------------------------------------- +// +// Let's say you have the following type ... +// +//-------------------------------------------------------------------------------------------- + +type T = { + id: string, + name: string, + timestamp: number +} + +//-------------------------------------------------------------------------------------------- +// +// ... you can express this type in the following way. +// +//-------------------------------------------------------------------------------------------- + +const T = Type.Object({ // const T = { + id: Type.String(), // type: 'object', + name: Type.String(), // properties: { + timestamp: Type.Integer() // id: { +}) // type: 'string' + // }, + // name: { + // type: 'string' + // }, + // timestamp: { + // type: 'integer' + // } + // }, + // required: [ + // 'id', + // 'name', + // 'timestamp' + // ] + // } + +//-------------------------------------------------------------------------------------------- +// +// ... then infer back to the original static type this way. +// +//-------------------------------------------------------------------------------------------- + +type T = Static // type T = { + // id: string, + // name: string, + // timestamp: number + // } + +//-------------------------------------------------------------------------------------------- +// +// ... then use the type both as JSON schema and as a TypeScript type. +// +//-------------------------------------------------------------------------------------------- + +import { Value } from '@sinclair/typebox/value' + +function receive(value: T) { // ... as a Static Type + + if(Value.Check(T, value)) { // ... as a JSON Schema + + // ok... + } +} +``` + + + +## Types + +TypeBox types are JSON schema fragments that can be composed into more complex types. Each fragment is structured such that a JSON schema compliant validator can runtime assert a value the same way TypeScript will statically assert a type. TypeBox provides a set of Standard types which are used create JSON schema compliant schematics as well as an Extended type set used to create schematics for constructs native to JavaScript. + + + +### Standard Types + +The following table lists the Standard TypeBox types. These types are fully compatible with the JSON Schema Draft 6 specification. + +```typescript +┌────────────────────────────────┬─────────────────────────────┬────────────────────────────────┐ +│ TypeBox │ TypeScript │ JSON Schema │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Any() │ type T = any │ const T = { } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Unknown() │ type T = unknown │ const T = { } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.String() │ type T = string │ const T = { │ +│ │ │ type: 'string' │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Number() │ type T = number │ const T = { │ +│ │ │ type: 'number' │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Integer() │ type T = number │ const T = { │ +│ │ │ type: 'integer' │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Boolean() │ type T = boolean │ const T = { │ +│ │ │ type: 'boolean' │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Null() │ type T = null │ const T = { │ +│ │ │ type: 'null' │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Literal(42) │ type T = 42 │ const T = { │ +│ │ │ const: 42, │ +│ │ │ type: 'number' │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Array( │ type T = number[] │ const T = { │ +│ Type.Number() │ │ type: 'array', │ +│ ) │ │ items: { │ +│ │ │ type: 'number' │ +│ │ │ } │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Object({ │ type T = { │ const T = { │ +│ x: Type.Number(), │ x: number, │ type: 'object', │ +│ y: Type.Number() │ y: number │ required: ['x', 'y'], │ +│ }) │ } │ properties: { │ +│ │ │ x: { │ +│ │ │ type: 'number' │ +│ │ │ }, { │ +│ │ │ type: 'number' │ +│ │ │ } │ +│ │ │ } │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Tuple([ │ type T = [number, number] │ const T = { │ +│ Type.Number(), │ │ type: 'array', │ +│ Type.Number() │ │ items: [{ │ +│ ]) │ │ type: 'number' │ +│ │ │ }, { │ +│ │ │ type: 'number' │ +│ │ │ }], │ +│ │ │ additionalItems: false, │ +│ │ │ minItems: 2, │ +│ │ │ maxItems: 2 │ +│ │ │ } │ +│ │ │ │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ enum Foo { │ enum Foo { │ const T = { │ +│ A, │ A, │ anyOf: [{ │ +│ B │ B │ type: 'number', │ +│ } │ } │ const: 0 │ +│ │ │ }, { │ +│ const T = Type.Enum(Foo) │ type T = Foo │ type: 'number', │ +│ │ │ const: 1 │ +│ │ │ }] │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.KeyOf( │ type T = keyof { │ const T = { │ +│ Type.Object({ │ x: number, │ anyOf: [{ │ +│ x: Type.Number(), │ y: number │ type: 'string', │ +│ y: Type.Number() │ } │ const: 'x' │ +│ }) │ │ }, { │ +│ ) │ │ type: 'string', │ +│ │ │ const: 'y' │ +│ │ │ }] │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Union([ │ type T = string | number │ const T = { │ +│ Type.String(), │ │ anyOf: [{ │ +│ Type.Number() │ │ type: 'string' │ +│ ]) │ │ }, { │ +│ │ │ type: 'number' │ +│ │ │ }] │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Intersect([ │ type T = { │ const T = { │ +│ Type.Object({ │ x: number │ allOf: [{ │ +│ x: Type.Number() │ } & { │ type: 'object', │ +│ }), │ y: number │ required: ['x'], │ +│ Type.Object({ │ } │ properties: { │ +│ y: Type.Number() │ │ x: { │ +│ ]) │ │ type: 'number' │ +│ ]) │ │ } │ +│ │ │ } │ +│ │ │ }, { │ +│ │ │ type: 'object', | +│ │ │ required: ['y'], │ +│ │ │ properties: { │ +│ │ │ y: { │ +│ │ │ type: 'number' │ +│ │ │ } │ +│ │ │ } │ +│ │ │ }] │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Composite([ │ type I = { │ const T = { │ +│ Type.Object({ │ x: number │ type: 'object', │ +│ x: Type.Number() │ } & { │ required: ['x', 'y'], │ +│ }), │ y: number │ properties: { │ +│ Type.Object({ │ } │ x: { │ +│ y: Type.Number() │ │ type: 'number' │ +│ }) │ type T = { │ }, │ +│ ]) │ [K in keyof I]: I[K] │ y: { │ +│ │ } │ type: 'number' │ +│ │ │ } │ +│ │ │ } │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Never() │ type T = never │ const T = { │ +│ │ │ not: {} │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Not( | type T = string │ const T = { │ +| Type.Union([ │ │ allOf: [{ │ +│ Type.Literal('x'), │ │ not: { │ +│ Type.Literal('y'), │ │ anyOf: [ │ +│ Type.Literal('z') │ │ { const: 'x' }, │ +│ ]), │ │ { const: 'y' }, │ +│ Type.String() │ │ { const: 'z' } │ +│ ) │ │ ] │ +│ │ │ } │ +│ │ │ }, { │ +│ │ │ type: 'string' │ +│ │ │ }] │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Extends( │ type T = │ const T = { │ +│ Type.String(), │ string extends number │ const: false, │ +│ Type.Number(), │ true : false │ type: 'boolean' │ +│ Type.Literal(true), │ │ } │ +│ Type.Literal(false) │ │ │ +│ ) │ │ │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Extract( │ type T = Extract< │ const T = { │ +│ Type.Union([ │ string | number, │ type: 'string' │ +│ Type.String(), │ string │ } │ +│ Type.Number(), │ > │ │ +│ ]), │ │ │ +│ Type.String() │ │ │ +│ ) │ │ │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Exclude( │ type T = Exclude< │ const T = { │ +│ Type.Union([ │ string | number, │ type: 'number' │ +│ Type.String(), │ string │ } │ +│ Type.Number(), │ > │ │ +│ ]), │ │ │ +│ Type.String() │ │ │ +│ ) │ │ │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const U = Type.Union([ │ type U = 'open' | 'close' │ const T = { │ +│ Type.Literal('open'), │ │ type: 'string', │ +│ Type.Literal('close') │ type T = `on${U}` │ pattern: '^on(open|close)$' │ +│ ]) │ │ } │ +│ │ │ │ +│ const T = Type │ │ │ +│ .TemplateLiteral([ │ │ │ +│ Type.Literal('on'), │ │ │ +│ U │ │ │ +│ ]) │ │ │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Record( │ type T = Record< │ const T = { │ +│ Type.String(), │ string, │ type: 'object', │ +│ Type.Number() │ number │ patternProperties: { │ +│ ) │ > │ '^.*$': { │ +│ │ │ type: 'number' │ +│ │ │ } │ +│ │ │ } │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Partial( │ type T = Partial<{ │ const T = { │ +│ Type.Object({ │ x: number, │ type: 'object', │ +│ x: Type.Number(), │ y: number │ properties: { │ +│ y: Type.Number() | }> │ x: { │ +│ }) │ │ type: 'number' │ +│ ) │ │ }, │ +│ │ │ y: { │ +│ │ │ type: 'number' │ +│ │ │ } │ +│ │ │ } │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Required( │ type T = Required<{ │ const T = { │ +│ Type.Object({ │ x?: number, │ type: 'object', │ +│ x: Type.Optional( │ y?: number │ required: ['x', 'y'], │ +│ Type.Number() | }> │ properties: { │ +│ ), │ │ x: { │ +│ y: Type.Optional( │ │ type: 'number' │ +│ Type.Number() │ │ }, │ +│ ) │ │ y: { │ +│ }) │ │ type: 'number' │ +│ ) │ │ } │ +│ │ │ } │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Pick( │ type T = Pick<{ │ const T = { │ +│ Type.Object({ │ x: number, │ type: 'object', │ +│ x: Type.Number(), │ y: number │ required: ['x'], │ +│ y: Type.Number() │ }, 'x'> │ properties: { │ +│ }), ['x'] | │ x: { │ +│ ) │ │ type: 'number' │ +│ │ │ } │ +│ │ │ } │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Omit( │ type T = Omit<{ │ const T = { │ +│ Type.Object({ │ x: number, │ type: 'object', │ +│ x: Type.Number(), │ y: number │ required: ['y'], │ +│ y: Type.Number() │ }, 'x'> │ properties: { │ +│ }), ['x'] | │ y: { │ +│ ) │ │ type: 'number' │ +│ │ │ } │ +│ │ │ } │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Object({ │ type T = { │ const R = { │ +│ x: Type.Number(), │ x: number, │ $ref: 'T' │ +│ y: Type.Number() │ y: number │ } │ +│ }, { $id: 'T' }) | } │ │ +│ │ │ │ +│ const R = Type.Ref(T) │ type R = T │ │ +│ │ │ │ +│ │ │ │ +│ │ │ │ +│ │ │ │ +└────────────────────────────────┴─────────────────────────────┴────────────────────────────────┘ +``` + + + +### Extended Types + +TypeBox provides several extended types that can be used to produce schematics for common JavaScript constructs. These types can not be used with standard JSON schema validators; but are useful to help frame schematics for RPC interfaces that may receive JSON validated data. Extended types are prefixed with the `[Extended]` doc comment for convenience. The following table lists the supported types. + +```typescript +┌────────────────────────────────┬─────────────────────────────┬────────────────────────────────┐ +│ TypeBox │ TypeScript │ Extended Schema │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Constructor([ │ type T = new ( │ const T = { │ +│ Type.String(), │ arg0: string, │ type: 'object', │ +│ Type.Number() │ arg1: number │ instanceOf: 'Constructor', │ +│ ], Type.Boolean()) │ ) => boolean │ parameters: [{ │ +│ │ │ type: 'string' │ +│ │ │ }, { │ +│ │ │ type: 'number' │ +│ │ │ }], │ +│ │ │ return: { │ +│ │ │ type: 'boolean' │ +│ │ │ } │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Function([ │ type T = ( │ const T = { │ +| Type.String(), │ arg0: string, │ type : 'object', │ +│ Type.Number() │ arg1: number │ instanceOf: 'Function', │ +│ ], Type.Boolean()) │ ) => boolean │ parameters: [{ │ +│ │ │ type: 'string' │ +│ │ │ }, { │ +│ │ │ type: 'number' │ +│ │ │ }], │ +│ │ │ return: { │ +│ │ │ type: 'boolean' │ +│ │ │ } │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Promise( │ type T = Promise │ const T = { │ +│ Type.String() │ │ type: 'object', │ +│ ) │ │ instanceOf: 'Promise', │ +│ │ │ item: { │ +│ │ │ type: 'string' │ +│ │ │ } │ +│ │ │ } │ +│ │ │ │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Uint8Array() │ type T = Uint8Array │ const T = { │ +│ │ │ type: 'object', │ +│ │ │ instanceOf: 'Uint8Array' │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Date() │ type T = Date │ const T = { │ +│ │ │ type: 'object', │ +│ │ │ instanceOf: 'Date' │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Undefined() │ type T = undefined │ const T = { │ +│ │ │ type: 'null', │ +│ │ │ typeOf: 'Undefined' │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.RegEx(/foo/) │ type T = string │ const T = { │ +│ │ │ type: 'string', │ +│ │ │ pattern: 'foo' │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Symbol() │ type T = symbol │ const T = { │ +│ │ │ type: 'null', │ +│ │ │ typeOf: 'Symbol' │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.BigInt() │ type T = bigint │ const T = { │ +│ │ │ type: 'null', │ +│ │ │ typeOf: 'BigInt' │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Void() │ type T = void │ const T = { │ +│ │ │ type: 'null' │ +│ │ │ typeOf: 'Void' │ +│ │ │ } │ +│ │ │ │ +└────────────────────────────────┴─────────────────────────────┴────────────────────────────────┘ +``` + + + +### Modifiers + +TypeBox provides modifiers that allow schema properties to be statically inferred as `readonly` or `optional`. The following table shows the supported modifiers and how they map between TypeScript and JSON Schema. + +```typescript +┌────────────────────────────────┬─────────────────────────────┬────────────────────────────────┐ +│ TypeBox │ TypeScript │ JSON Schema │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Object({ │ type T = { │ const T = { │ +│ name: Type.Optional( │ name?: string │ type: 'object', │ +│ Type.String() │ } │ properties: { │ +│ ) │ │ name: { │ +│ }) │ │ type: 'string' │ +│ │ │ } │ +│ │ │ } │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Object({ │ type T = { │ const T = { │ +│ name: Type.Readonly( │ readonly name: string │ type: 'object', │ +│ Type.String() │ } │ properties: { │ +│ ) │ │ name: { │ +│ }) │ │ type: 'string' │ +│ │ │ } │ +│ │ │ }, │ +│ │ │ required: ['name'] │ +│ │ │ } │ +│ │ │ │ +├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┤ +│ const T = Type.Object({ │ type T = { │ const T = { │ +│ name: Type.ReadonlyOptional( │ readonly name?: string │ type: 'object', │ +│ Type.String() │ } │ properties: { │ +│ ) │ │ name: { │ +│ }) │ │ type: 'string' │ +│ │ │ } │ +│ │ │ } │ +│ │ │ } │ +│ │ │ │ +└────────────────────────────────┴─────────────────────────────┴────────────────────────────────┘ +``` + + + +### Options + +You can pass JSON Schema options on the last argument of any type. Option hints specific to each type are provided for convenience. + +```typescript +// String must be an email +const T = Type.String({ // const T = { + format: 'email' // type: 'string', +}) // format: 'email' + // } + +// Mumber must be a multiple of 2 +const T = Type.Number({ // const T = { + multipleOf: 2 // type: 'number', +}) // multipleOf: 2 + // } + +// Array must have at least 5 integer values +const T = Type.Array(Type.Integer(), { // const T = { + minItems: 5 // type: 'array', +}) // minItems: 5, + // items: { + // type: 'integer' + // } + // } + +``` + + + +### Generic Types + +Generic types can be created with generic functions constrained to type `TSchema`. The following creates a generic `Vector` type. + +```typescript +import { Type, Static, TSchema } from '@sinclair/typebox' + +const Vector = (t: T) => Type.Object({ x: t, y: t, z: t }) + +const NumberVector = Vector(Type.Number()) // const NumberVector = { + // type: 'object', + // required: ['x', 'y', 'z'], + // properties: { + // x: { type: 'number' }, + // y: { type: 'number' }, + // z: { type: 'number' } + // } + // } + +type NumberVector = Static // type NumberVector = { + // x: number, + // y: number, + // z: number + // } + +const BooleanVector = Vector(Type.Boolean()) // const BooleanVector = { + // type: 'object', + // required: ['x', 'y', 'z'], + // properties: { + // x: { type: 'boolean' }, + // y: { type: 'boolean' }, + // z: { type: 'boolean' } + // } + // } + +type BooleanVector = Static // type BooleanVector = { + // x: boolean, + // y: boolean, + // z: boolean + // } +``` + +The following creates a generic `Nullable` type. + +```typescript +const Nullable = (schema: T) => Type.Union([schema, Type.Null()]) + +const T = Nullable(Type.String()) // const T = { + // anyOf: [ + // { type: 'string' }, + // { type: 'null' } + // ] + // } + +type T = Static // type T = string | null +``` + + + +### Reference Types + +Reference types are supported with `Type.Ref`. The target type must specify a valid `$id`. + +```typescript +const T = Type.String({ $id: 'T' }) // const T = { + // $id: 'T', + // type: 'string' + // } + +const R = Type.Ref(T) // const R = { + // $ref: 'T' + // } +``` + + + +### Recursive Types + +Recursive types are supported with `Type.Recursive` + +```typescript +const Node = Type.Recursive(Node => Type.Object({ // const Node = { + id: Type.String(), // $id: 'Node', + nodes: Type.Array(Node) // type: 'object', +}), { $id: 'Node' }) // properties: { + // id: { + // type: 'string' + // }, + // nodes: { + // type: 'array', + // items: { + // $ref: 'Node' + // } + // } + // }, + // required: [ + // 'id', + // 'nodes' + // ] + // } + +type Node = Static // type Node = { + // id: string + // nodes: Node[] + // } + +function test(node: Node) { + const id = node.nodes[0].nodes[0].id // id is string +} +``` + + + +### Conditional Types + +Conditional types are supported with `Type.Extends`, `Type.Exclude` and `Type.Extract` + +```typescript +// TypeScript + +type T0 = string extends number ? true : false // type T0 = false + +type T1 = Extract // type T1 = number + +type T2 = Exclude // type T2 = string + +// TypeBox + +const T0 = Type.Extends(Type.String(), Type.Number(), Type.Literal(true), Type.Literal(false)) + +const T1 = Type.Extract(Type.Union([Type.String(), Type.Number()]), Type.Number()) + +const T2 = Type.Exclude(Type.Union([Type.String(), Type.Number()]), Type.Number()) + + +type T0 = Static // type T0 = false + +type T1 = Static // type T1 = number + +type T2 = Static // type T2 = string +``` + + + +### Template Literal Types + +Template Literal types are supported with `Type.TemplateLiteral` + +```typescript +// TypeScript + +type T = `option${'A'|'B'}` // type T = 'optionA' | 'optionB' + +type R = Record // type R = { + // optionA: string + // optionB: string + // } + +// TypeBox + +const T = Type.TemplateLiteral([ // const T = { + Type.Literal('option'), // pattern: '^option(A|B)$', + Type.Union([ // type: 'string' + Type.Literal('A'), // } + Type.Literal('B') + ]) +]) + +const R = Type.Record(T, Type.String()) // const R = { + // type: 'object', + // required: ['optionA', 'optionB'], + // properties: { + // optionA: { + // type: 'string' + // }, + // optionB: { + // type: 'string' + // } + // } + // } + +type T = Static // type T = 'optionA' | 'optionB' + +type R = Static // type R = { + // optionA: string + // optionB: string + // } +``` + + + +### Unsafe + +Use `Type.Unsafe` to create custom schematics with user defined inference rules. + +```typescript +const T = Type.Unsafe({ type: 'number' }) // const T = { + // type: 'number' + // } + +type T = Static // type T = string +``` + +The `Type.Unsafe` type can be useful to express specific OpenAPI schema representations. + +```typescript +import { Type, Static, TSchema } from '@sinclair/typebox' + +// Nullable + +function Nullable(schema: T) { + return Type.Unsafe | null>({ ...schema, nullable: true }) +} + +const T = Nullable(Type.String()) // const T = { + // type: 'string', + // nullable: true + // } + +type T = Static // type T = string | null + +// StringEnum + +function StringEnum(values: [...T]) { + return Type.Unsafe({ type: 'string', enum: values }) +} + +const T = StringEnum(['A', 'B', 'C']) // const T = { + // enum: ['A', 'B', 'C'] + // } + +type T = Static // type T = 'A' | 'B' | 'C' +``` + + + +### Guards + +TypeBox provides a `TypeGuard` module that can be used for reflection and asserting values as types. + +```typescript +import { Type, TypeGuard } from '@sinclair/typebox' + +const T = Type.String() + +if(TypeGuard.TString(T)) { + + // T is TString +} +``` + + + +### Strict + +TypeBox schemas contain the `Kind` and `Modifier` symbol properties. These properties are used for type composition and reflection. These properties are not strictly valid JSON schema; so in some cases it may be desirable to omit them. TypeBox provides a `Type.Strict` function that will omit these properties if necessary. + +```typescript +const T = Type.Object({ // const T = { + name: Type.Optional(Type.String()) // [Kind]: 'Object', +}) // type: 'object', + // properties: { + // name: { + // [Kind]: 'String', + // type: 'string', + // [Modifier]: 'Optional' + // } + // } + // } + +const U = Type.Strict(T) // const U = { + // type: 'object', + // properties: { + // name: { + // type: 'string' + // } + // } + // } +``` + + + +## Values + +TypeBox provides an optional utility module that can be used to perform common operations on JavaScript values. This module includes functionality to create, check and cast values from types as well as check equality, clone, diff and patch JavaScript values. This module is provided via optional import. + +```typescript +import { Value } from '@sinclair/typebox/value' +``` + + + +### Create + +Use the Create function to create a value from a type. TypeBox will use default values if specified. + +```typescript +const T = Type.Object({ x: Type.Number(), y: Type.Number({ default: 42 }) }) + +const A = Value.Create(T) // const A = { x: 0, y: 42 } +``` + + + +### Clone + +Use the Clone function to deeply clone a value + +```typescript +const A = Value.Clone({ x: 1, y: 2, z: 3 }) // const A = { x: 1, y: 2, z: 3 } +``` + + + +### Check + +Use the Check function to type check a value + +```typescript +const T = Type.Object({ x: Type.Number() }) + +const R = Value.Check(T, { x: 1 }) // const R = true +``` + + + +### Convert + +Use the Convert function to convert a value into its target type if a reasonable conversion is possible. + +```typescript +const T = Type.Object({ x: Type.Number() }) + +const R1 = Value.Convert(T, { x: '3.14' }) // const R1 = { x: 3.14 } + +const R2 = Value.Convert(T, { x: 'not a number' }) // const R2 = { x: 'not a number' } +``` + + + +### Cast + +Use the Cast function to cast a value into a type. The cast function will retain as much information as possible from the original value. + +```typescript +const T = Type.Object({ x: Type.Number(), y: Type.Number() }, { additionalProperties: false }) + +const X = Value.Cast(T, null) // const X = { x: 0, y: 0 } + +const Y = Value.Cast(T, { x: 1 }) // const Y = { x: 1, y: 0 } + +const Z = Value.Cast(T, { x: 1, y: 2, z: 3 }) // const Z = { x: 1, y: 2 } +``` + + + +### Equal + +Use the Equal function to deeply check for value equality. + +```typescript +const R = Value.Equal( // const R = true + { x: 1, y: 2, z: 3 }, + { x: 1, y: 2, z: 3 } +) +``` + + + +### Hash + +Use the Hash function to create a [FNV1A-64](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function) non cryptographic hash of a value. + +```typescript +const A = Value.Hash({ x: 1, y: 2, z: 3 }) // const A = 2910466848807138541n + +const B = Value.Hash({ x: 1, y: 4, z: 3 }) // const B = 1418369778807423581n +``` + + + +### Diff + +Use the Diff function to produce a sequence of edits to transform one value into another. + +```typescript +const E = Value.Diff( // const E = [ + { x: 1, y: 2, z: 3 }, // { type: 'update', path: '/y', value: 4 }, + { y: 4, z: 5, w: 6 } // { type: 'update', path: '/z', value: 5 }, +) // { type: 'insert', path: '/w', value: 6 }, + // { type: 'delete', path: '/x' } + // ] +``` + + + +### Patch + +Use the Patch function to apply edits + +```typescript +const A = { x: 1, y: 2 } + +const B = { x: 3 } + +const E = Value.Diff(A, B) // const E = [ + // { type: 'update', path: '/x', value: 3 }, + // { type: 'delete', path: '/y' } + // ] + +const C = Value.Patch(A, E) // const C = { x: 3 } +``` + + + +### Errors + +Use the Errors function enumerate validation errors. + +```typescript +const T = Type.Object({ x: Type.Number(), y: Type.Number() }) + +const R = [...Value.Errors(T, { x: '42' })] // const R = [{ + // schema: { type: 'number' }, + // path: '/x', + // value: '42', + // message: 'Expected number' + // }, { + // schema: { type: 'number' }, + // path: '/y', + // value: undefined, + // message: 'Expected number' + // }] +``` + + + +### Mutate + +Use the Mutate function to perform a deep mutable value assignment while retaining internal references. + +```typescript +const Y = { z: 1 } // const Y = { z: 1 } + +const X = { y: Y } // const X = { y: { z: 1 } } + +const A = { x: X } // const A = { x: { y: { z: 1 } } } + + +Value.Mutate(A, { x: { y: { z: 2 } } }) // const A' = { x: { y: { z: 2 } } } + +const R0 = A.x.y.z === 2 // const R0 = 2 + +const R1 = A.x.y === Y // const R1 = true + +const R2 = A.x === X // const R2 = true +``` + + + +### Pointer + +Use ValuePointer to perform mutable updates on existing values using [RFC6901](https://www.rfc-editor.org/rfc/rfc6901) JSON Pointers. + +```typescript +import { ValuePointer } from '@sinclair/typebox/value' + +const A = { x: 0, y: 0, z: 0 } + +ValuePointer.Set(A, '/x', 1) // const A' = { x: 1, y: 0, z: 0 } + +ValuePointer.Set(A, '/y', 1) // const A' = { x: 1, y: 1, z: 0 } + +ValuePointer.Set(A, '/z', 1) // const A' = { x: 1, y: 1, z: 1 } +``` + + + +## TypeCheck + +TypeBox types target JSON Schema draft 6 so are compatible with any validator that supports this specification. TypeBox also provides a built in type checking compiler designed specifically for high performance compilation and value assertion. + +The following sections detail using Ajv and TypeBox's compiler infrastructure. + + + +## Ajv + +The following shows the recommended setup for Ajv. + +```bash +$ npm install ajv ajv-formats --save +``` + +```typescript +import { Type } from '@sinclair/typebox' +import addFormats from 'ajv-formats' +import Ajv from 'ajv' + +const ajv = addFormats(new Ajv({}), [ + 'date-time', + 'time', + 'date', + 'email', + 'hostname', + 'ipv4', + 'ipv6', + 'uri', + 'uri-reference', + 'uuid', + 'uri-template', + 'json-pointer', + 'relative-json-pointer', + 'regex' +]) + +const C = ajv.compile(Type.Object({ + x: Type.Number(), + y: Type.Number(), + z: Type.Number() +})) + +const R = C({ x: 1, y: 2, z: 3 }) // const R = true +``` + + + +### TypeCompiler + +The TypeBox TypeCompiler is a high performance JIT compiler that transforms TypeBox types into optimized JavaScript validation routines. The compiler is tuned for fast compilation as well as fast value assertion. It is designed to serve as a validation backend that can be integrated into larger applications; but can also be used as a general purpose validator. + +The TypeCompiler is provided as an optional import. + +```typescript +import { TypeCompiler } from '@sinclair/typebox/compiler' +``` + +Use the `Compile(...)` function to compile a type. + +```typescript +const C = TypeCompiler.Compile(Type.Object({ // const C: TypeCheck> + +const R = C.Check({ x: 1, y: 2, z: 3 }) // const R = true +``` + +Use the `Errors(...)` function to produce diagnostic errors for a value. The `Errors(...)` function will return an iterator that if enumerated; will perform an exhaustive check across the entire value and yield any error found. For performance, this function should only be called after failed `Check(...)`. Applications may also choose to yield only the first value to avoid exhaustive error generation. + +```typescript +const C = TypeCompiler.Compile(Type.Object({ // const C: TypeCheck> + +const value = { } + +const errors = [...C.Errors(value)] // const errors = [{ + // schema: { type: 'number' }, + // path: '/x', + // value: undefined, + // message: 'Expected number' + // }, { + // schema: { type: 'number' }, + // path: '/y', + // value: undefined, + // message: 'Expected number' + // }, { + // schema: { type: 'number' }, + // path: '/z', + // value: undefined, + // message: 'Expected number' + // }] +``` + +Compiled routines can be inspected with the `.Code()` function. + +```typescript +const C = TypeCompiler.Compile(Type.String()) // const C: TypeCheck + +console.log(C.Code()) // return function check(value) { + // return ( + // (typeof value === 'string') + // ) + // } +``` + + + +## TypeSystem + +The TypeBox TypeSystem module provides functionality to define types above and beyond the Standard and Extended type sets as well as control various assertion polices. Configurations made to the TypeSystem module are observed by both `TypeCompiler` and `Value` modules. + +The TypeSystem module is provided as an optional import. + +```typescript +import { TypeSystem } from '@sinclair/typebox/system' +``` + + + +### Types + +Use the `Type(...)` function to create a custom type. This function will return a type factory function that can be used to construct the type. The following creates a Point type. + +```typescript +type PointOptions = { } // The Type Options + +type PointType = { x: number, y: number } // The Static Type + +const Point = TypeSystem.Type('Point', (options, value) => { + return ( + typeof value === 'object' && value !== null && + typeof value.x === 'number' && + typeof value.y === 'number' + ) +}) + +const T = Point() + +type T = Static // type T = { x: number, y: number } + +const R = Value.Check(T, { x: 1, y: 2 }) // const R = true +``` + + + +### Formats + +Use the `Format(...)` function to create a custom string format. The following creates a format that checks for lowercase strings. + +```typescript +TypeSystem.Format('lowercase', value => value === value.toLowerCase()) // format should be lowercase + +const T = Type.String({ format: 'lowercase' }) + +const A = Value.Check(T, 'Hello') // const A = false + +const B = Value.Check(T, 'hello') // const B = true +``` + + + +### Policies + +TypeBox validates using JSON Schema assertion policies by default. It is possible to override these policies and have TypeBox assert using TypeScript policies. The following overrides are available. + +```typescript +// Allow arrays to validate as object types (default is false) +// +// const A: {} = [] - allowed in TS + +TypeSystem.AllowArrayObjects = true + +// Allow numeric values to be NaN or + or - Infinity (default is false) +// +// const A: number = NaN - allowed in TS + +TypeSystem.AllowNaN = true +``` + + + +## Benchmark + +This project maintains a set of benchmarks that measure Ajv, Value and TypeCompiler compilation and validation performance. These benchmarks can be run locally by cloning this repository and running `npm run benchmark`. The results below show for Ajv version 8.12.0. + +For additional comparative benchmarks, please refer to [typescript-runtime-type-benchmarks](https://moltar.github.io/typescript-runtime-type-benchmarks/). + + + +### Compile + +This benchmark measures compilation performance for varying types. You can review this benchmark [here](https://github.com/sinclairzx81/typebox/blob/master/benchmark/measurement/module/compile.ts). + +```typescript +┌────────────────────────────┬────────────┬──────────────┬──────────────┬──────────────┐ +│ (index) │ Iterations │ Ajv │ TypeCompiler │ Performance │ +├────────────────────────────┼────────────┼──────────────┼──────────────┼──────────────┤ +│ Literal_String │ 1000 │ ' 257 ms' │ ' 8 ms' │ ' 32.13 x' │ +│ Literal_Number │ 1000 │ ' 203 ms' │ ' 4 ms' │ ' 50.75 x' │ +│ Literal_Boolean │ 1000 │ ' 183 ms' │ ' 4 ms' │ ' 45.75 x' │ +│ Primitive_Number │ 1000 │ ' 174 ms' │ ' 8 ms' │ ' 21.75 x' │ +│ Primitive_String │ 1000 │ ' 158 ms' │ ' 9 ms' │ ' 17.56 x' │ +│ Primitive_String_Pattern │ 1000 │ ' 213 ms' │ ' 13 ms' │ ' 16.38 x' │ +│ Primitive_Boolean │ 1000 │ ' 136 ms' │ ' 6 ms' │ ' 22.67 x' │ +│ Primitive_Null │ 1000 │ ' 144 ms' │ ' 6 ms' │ ' 24.00 x' │ +│ Object_Unconstrained │ 1000 │ ' 1176 ms' │ ' 38 ms' │ ' 30.95 x' │ +│ Object_Constrained │ 1000 │ ' 1181 ms' │ ' 31 ms' │ ' 38.10 x' │ +│ Object_Vector3 │ 1000 │ ' 387 ms' │ ' 8 ms' │ ' 48.38 x' │ +│ Object_Box3D │ 1000 │ ' 1693 ms' │ ' 25 ms' │ ' 67.72 x' │ +│ Tuple_Primitive │ 1000 │ ' 470 ms' │ ' 15 ms' │ ' 31.33 x' │ +│ Tuple_Object │ 1000 │ ' 1206 ms' │ ' 17 ms' │ ' 70.94 x' │ +│ Composite_Intersect │ 1000 │ ' 567 ms' │ ' 20 ms' │ ' 28.35 x' │ +│ Composite_Union │ 1000 │ ' 515 ms' │ ' 21 ms' │ ' 24.52 x' │ +│ Math_Vector4 │ 1000 │ ' 787 ms' │ ' 10 ms' │ ' 78.70 x' │ +│ Math_Matrix4 │ 1000 │ ' 386 ms' │ ' 8 ms' │ ' 48.25 x' │ +│ Array_Primitive_Number │ 1000 │ ' 349 ms' │ ' 7 ms' │ ' 49.86 x' │ +│ Array_Primitive_String │ 1000 │ ' 336 ms' │ ' 4 ms' │ ' 84.00 x' │ +│ Array_Primitive_Boolean │ 1000 │ ' 284 ms' │ ' 3 ms' │ ' 94.67 x' │ +│ Array_Object_Unconstrained │ 1000 │ ' 1704 ms' │ ' 19 ms' │ ' 89.68 x' │ +│ Array_Object_Constrained │ 1000 │ ' 1456 ms' │ ' 18 ms' │ ' 80.89 x' │ +│ Array_Tuple_Primitive │ 1000 │ ' 792 ms' │ ' 15 ms' │ ' 52.80 x' │ +│ Array_Tuple_Object │ 1000 │ ' 1552 ms' │ ' 17 ms' │ ' 91.29 x' │ +│ Array_Composite_Intersect │ 1000 │ ' 744 ms' │ ' 18 ms' │ ' 41.33 x' │ +│ Array_Composite_Union │ 1000 │ ' 783 ms' │ ' 15 ms' │ ' 52.20 x' │ +│ Array_Math_Vector4 │ 1000 │ ' 1093 ms' │ ' 14 ms' │ ' 78.07 x' │ +│ Array_Math_Matrix4 │ 1000 │ ' 684 ms' │ ' 6 ms' │ ' 114.00 x' │ +└────────────────────────────┴────────────┴──────────────┴──────────────┴──────────────┘ +``` + + + +### Validate + +This benchmark measures validation performance for varying types. You can review this benchmark [here](https://github.com/sinclairzx81/typebox/blob/master/benchmark/measurement/module/check.ts). + +```typescript +┌────────────────────────────┬────────────┬──────────────┬──────────────┬──────────────┬──────────────┐ +│ (index) │ Iterations │ ValueCheck │ Ajv │ TypeCompiler │ Performance │ +├────────────────────────────┼────────────┼──────────────┼──────────────┼──────────────┼──────────────┤ +│ Literal_String │ 1000000 │ ' 27 ms' │ ' 6 ms' │ ' 5 ms' │ ' 1.20 x' │ +│ Literal_Number │ 1000000 │ ' 23 ms' │ ' 21 ms' │ ' 11 ms' │ ' 1.91 x' │ +│ Literal_Boolean │ 1000000 │ ' 21 ms' │ ' 20 ms' │ ' 10 ms' │ ' 2.00 x' │ +│ Primitive_Number │ 1000000 │ ' 26 ms' │ ' 19 ms' │ ' 11 ms' │ ' 1.73 x' │ +│ Primitive_String │ 1000000 │ ' 25 ms' │ ' 19 ms' │ ' 10 ms' │ ' 1.90 x' │ +│ Primitive_String_Pattern │ 1000000 │ ' 155 ms' │ ' 49 ms' │ ' 43 ms' │ ' 1.14 x' │ +│ Primitive_Boolean │ 1000000 │ ' 23 ms' │ ' 19 ms' │ ' 10 ms' │ ' 1.90 x' │ +│ Primitive_Null │ 1000000 │ ' 24 ms' │ ' 19 ms' │ ' 10 ms' │ ' 1.90 x' │ +│ Object_Unconstrained │ 1000000 │ ' 804 ms' │ ' 35 ms' │ ' 28 ms' │ ' 1.25 x' │ +│ Object_Constrained │ 1000000 │ ' 1041 ms' │ ' 55 ms' │ ' 41 ms' │ ' 1.34 x' │ +│ Object_Vector3 │ 1000000 │ ' 380 ms' │ ' 26 ms' │ ' 20 ms' │ ' 1.30 x' │ +│ Object_Box3D │ 1000000 │ ' 1785 ms' │ ' 65 ms' │ ' 52 ms' │ ' 1.25 x' │ +│ Object_Recursive │ 1000000 │ ' 4984 ms' │ ' 396 ms' │ ' 114 ms' │ ' 3.47 x' │ +│ Tuple_Primitive │ 1000000 │ ' 168 ms' │ ' 24 ms' │ ' 16 ms' │ ' 1.50 x' │ +│ Tuple_Object │ 1000000 │ ' 673 ms' │ ' 30 ms' │ ' 26 ms' │ ' 1.15 x' │ +│ Composite_Intersect │ 1000000 │ ' 751 ms' │ ' 28 ms' │ ' 20 ms' │ ' 1.40 x' │ +│ Composite_Union │ 1000000 │ ' 489 ms' │ ' 24 ms' │ ' 16 ms' │ ' 1.50 x' │ +│ Math_Vector4 │ 1000000 │ ' 259 ms' │ ' 23 ms' │ ' 13 ms' │ ' 1.77 x' │ +│ Math_Matrix4 │ 1000000 │ ' 1002 ms' │ ' 40 ms' │ ' 30 ms' │ ' 1.33 x' │ +│ Array_Primitive_Number │ 1000000 │ ' 252 ms' │ ' 22 ms' │ ' 15 ms' │ ' 1.47 x' │ +│ Array_Primitive_String │ 1000000 │ ' 227 ms' │ ' 22 ms' │ ' 18 ms' │ ' 1.22 x' │ +│ Array_Primitive_Boolean │ 1000000 │ ' 150 ms' │ ' 23 ms' │ ' 22 ms' │ ' 1.05 x' │ +│ Array_Object_Unconstrained │ 1000000 │ ' 4754 ms' │ ' 71 ms' │ ' 64 ms' │ ' 1.11 x' │ +│ Array_Object_Constrained │ 1000000 │ ' 4787 ms' │ ' 142 ms' │ ' 123 ms' │ ' 1.15 x' │ +│ Array_Object_Recursive │ 1000000 │ ' 19088 ms' │ ' 1735 ms' │ ' 314 ms' │ ' 5.53 x' │ +│ Array_Tuple_Primitive │ 1000000 │ ' 650 ms' │ ' 41 ms' │ ' 31 ms' │ ' 1.32 x' │ +│ Array_Tuple_Object │ 1000000 │ ' 2770 ms' │ ' 67 ms' │ ' 55 ms' │ ' 1.22 x' │ +│ Array_Composite_Intersect │ 1000000 │ ' 2693 ms' │ ' 50 ms' │ ' 39 ms' │ ' 1.28 x' │ +│ Array_Composite_Union │ 1000000 │ ' 1982 ms' │ ' 72 ms' │ ' 33 ms' │ ' 2.18 x' │ +│ Array_Math_Vector4 │ 1000000 │ ' 1068 ms' │ ' 40 ms' │ ' 26 ms' │ ' 1.54 x' │ +│ Array_Math_Matrix4 │ 1000000 │ ' 4609 ms' │ ' 115 ms' │ ' 88 ms' │ ' 1.31 x' │ +└────────────────────────────┴────────────┴──────────────┴──────────────┴──────────────┴──────────────┘ +``` + + + +### Compression + +The following table lists esbuild compiled and minified sizes for each TypeBox module. + +```typescript +┌──────────────────────┬────────────┬────────────┬─────────────┐ +│ (index) │ Compiled │ Minified │ Compression │ +├──────────────────────┼────────────┼────────────┼─────────────┤ +│ typebox/compiler │ '124.3 kb' │ ' 55.7 kb' │ '2.23 x' │ +│ typebox/errors │ '107.8 kb' │ ' 47.9 kb' │ '2.25 x' │ +│ typebox/system │ ' 73.3 kb' │ ' 30.2 kb' │ '2.43 x' │ +│ typebox/value │ '170.7 kb' │ ' 74.2 kb' │ '2.30 x' │ +│ typebox │ ' 72.0 kb' │ ' 29.7 kb' │ '2.43 x' │ +└──────────────────────┴────────────┴────────────┴─────────────┘ +``` + + + +## Contribute + +TypeBox is open to community contribution. Please ensure you submit an open issue before submitting your pull request. The TypeBox project preferences open community discussion prior to accepting new features. diff --git a/node_modules/@sinclair/typebox/system/index.d.ts b/node_modules/@sinclair/typebox/system/index.d.ts new file mode 100644 index 00000000..4b58cda6 --- /dev/null +++ b/node_modules/@sinclair/typebox/system/index.d.ts @@ -0,0 +1 @@ +export * from './system'; diff --git a/node_modules/@sinclair/typebox/system/index.js b/node_modules/@sinclair/typebox/system/index.js new file mode 100644 index 00000000..3c5107f1 --- /dev/null +++ b/node_modules/@sinclair/typebox/system/index.js @@ -0,0 +1,44 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/system + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./system"), exports); diff --git a/node_modules/@sinclair/typebox/system/system.d.ts b/node_modules/@sinclair/typebox/system/system.d.ts new file mode 100644 index 00000000..43084544 --- /dev/null +++ b/node_modules/@sinclair/typebox/system/system.d.ts @@ -0,0 +1,26 @@ +import * as Types from '../typebox'; +export declare class TypeSystemDuplicateTypeKind extends Error { + constructor(kind: string); +} +export declare class TypeSystemDuplicateFormat extends Error { + constructor(kind: string); +} +/** Creates user defined types and formats and provides overrides for value checking behaviours */ +export declare namespace TypeSystem { + /** Sets whether TypeBox should assert optional properties using the TypeScript `exactOptionalPropertyTypes` assertion policy. The default is `false` */ + let ExactOptionalPropertyTypes: boolean; + /** Sets whether arrays should be treated as a kind of objects. The default is `false` */ + let AllowArrayObjects: boolean; + /** Sets whether `NaN` or `Infinity` should be treated as valid numeric values. The default is `false` */ + let AllowNaN: boolean; + /** Sets whether `null` should validate for void types. The default is `false` */ + let AllowVoidNull: boolean; + /** Creates a new type */ + function Type(kind: string, check: (options: Options, value: unknown) => boolean): (options?: Partial) => Types.TUnsafe; + /** Creates a new string format */ + function Format(format: F, check: (value: string) => boolean): F; + /** @deprecated Use `TypeSystem.Type()` instead. */ + function CreateType(kind: string, check: (options: Options, value: unknown) => boolean): (options?: Partial) => Types.TUnsafe; + /** @deprecated Use `TypeSystem.Format()` instead. */ + function CreateFormat(format: F, check: (value: string) => boolean): F; +} diff --git a/node_modules/@sinclair/typebox/system/system.js b/node_modules/@sinclair/typebox/system/system.js new file mode 100644 index 00000000..44911a48 --- /dev/null +++ b/node_modules/@sinclair/typebox/system/system.js @@ -0,0 +1,90 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/system + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TypeSystem = exports.TypeSystemDuplicateFormat = exports.TypeSystemDuplicateTypeKind = void 0; +const Types = require("../typebox"); +class TypeSystemDuplicateTypeKind extends Error { + constructor(kind) { + super(`Duplicate type kind '${kind}' detected`); + } +} +exports.TypeSystemDuplicateTypeKind = TypeSystemDuplicateTypeKind; +class TypeSystemDuplicateFormat extends Error { + constructor(kind) { + super(`Duplicate string format '${kind}' detected`); + } +} +exports.TypeSystemDuplicateFormat = TypeSystemDuplicateFormat; +/** Creates user defined types and formats and provides overrides for value checking behaviours */ +var TypeSystem; +(function (TypeSystem) { + // ------------------------------------------------------------------------ + // Assertion Policies + // ------------------------------------------------------------------------ + /** Sets whether TypeBox should assert optional properties using the TypeScript `exactOptionalPropertyTypes` assertion policy. The default is `false` */ + TypeSystem.ExactOptionalPropertyTypes = false; + /** Sets whether arrays should be treated as a kind of objects. The default is `false` */ + TypeSystem.AllowArrayObjects = false; + /** Sets whether `NaN` or `Infinity` should be treated as valid numeric values. The default is `false` */ + TypeSystem.AllowNaN = false; + /** Sets whether `null` should validate for void types. The default is `false` */ + TypeSystem.AllowVoidNull = false; + // ------------------------------------------------------------------------ + // String Formats and Types + // ------------------------------------------------------------------------ + /** Creates a new type */ + function Type(kind, check) { + if (Types.TypeRegistry.Has(kind)) + throw new TypeSystemDuplicateTypeKind(kind); + Types.TypeRegistry.Set(kind, check); + return (options = {}) => Types.Type.Unsafe({ ...options, [Types.Kind]: kind }); + } + TypeSystem.Type = Type; + /** Creates a new string format */ + function Format(format, check) { + if (Types.FormatRegistry.Has(format)) + throw new TypeSystemDuplicateFormat(format); + Types.FormatRegistry.Set(format, check); + return format; + } + TypeSystem.Format = Format; + // ------------------------------------------------------------------------ + // Deprecated + // ------------------------------------------------------------------------ + /** @deprecated Use `TypeSystem.Type()` instead. */ + function CreateType(kind, check) { + return Type(kind, check); + } + TypeSystem.CreateType = CreateType; + /** @deprecated Use `TypeSystem.Format()` instead. */ + function CreateFormat(format, check) { + return Format(format, check); + } + TypeSystem.CreateFormat = CreateFormat; +})(TypeSystem = exports.TypeSystem || (exports.TypeSystem = {})); diff --git a/node_modules/@sinclair/typebox/typebox.d.ts b/node_modules/@sinclair/typebox/typebox.d.ts new file mode 100644 index 00000000..1632b965 --- /dev/null +++ b/node_modules/@sinclair/typebox/typebox.d.ts @@ -0,0 +1,723 @@ +export declare const Modifier: unique symbol; +export declare const Hint: unique symbol; +export declare const Kind: unique symbol; +export declare const PatternBoolean = "(true|false)"; +export declare const PatternNumber = "(0|[1-9][0-9]*)"; +export declare const PatternString = "(.*)"; +export declare const PatternBooleanExact: string; +export declare const PatternNumberExact: string; +export declare const PatternStringExact: string; +export type TupleToIntersect = T extends [infer I] ? I : T extends [infer I, ...infer R] ? I & TupleToIntersect : never; +export type TupleToUnion = { + [K in keyof T]: T[K]; +}[number]; +export type UnionToIntersect = (U extends unknown ? (arg: U) => 0 : never) extends (arg: infer I) => 0 ? I : never; +export type UnionLast = UnionToIntersect 0 : never> extends (x: infer L) => 0 ? L : never; +export type UnionToTuple> = [U] extends [never] ? [] : [...UnionToTuple>, L]; +export type Assert = T extends E ? T : never; +export type Evaluate = T extends infer O ? { + [K in keyof O]: O[K]; +} : never; +export type Ensure = T extends infer U ? U : never; +export type TModifier = TReadonlyOptional | TOptional | TReadonly; +export type TReadonly = T & { + [Modifier]: 'Readonly'; +}; +export type TOptional = T & { + [Modifier]: 'Optional'; +}; +export type TReadonlyOptional = T & { + [Modifier]: 'ReadonlyOptional'; +}; +export interface SchemaOptions { + $schema?: string; + /** Id for this schema */ + $id?: string; + /** Title of this schema */ + title?: string; + /** Description of this schema */ + description?: string; + /** Default value for this schema */ + default?: any; + /** Example values matching this schema */ + examples?: any; + [prop: string]: any; +} +export interface TKind { + [Kind]: string; +} +export interface TSchema extends SchemaOptions, TKind { + [Modifier]?: string; + [Hint]?: string; + params: unknown[]; + static: unknown; +} +export type TAnySchema = TSchema | TAny | TArray | TBigInt | TBoolean | TConstructor | TDate | TEnum | TFunction | TInteger | TIntersect | TLiteral | TNot | TNull | TNumber | TObject | TPromise | TRecord | TRef | TString | TSymbol | TTemplateLiteral | TThis | TTuple | TUndefined | TUnion | TUint8Array | TUnknown | TVoid; +export type TNumeric = TInteger | TNumber; +export interface NumericOptions extends SchemaOptions { + exclusiveMaximum?: N; + exclusiveMinimum?: N; + maximum?: N; + minimum?: N; + multipleOf?: N; +} +export interface TAny extends TSchema { + [Kind]: 'Any'; + static: any; +} +export interface ArrayOptions extends SchemaOptions { + uniqueItems?: boolean; + minItems?: number; + maxItems?: number; +} +export interface TArray extends TSchema, ArrayOptions { + [Kind]: 'Array'; + static: Static[]; + type: 'array'; + items: T; +} +export interface TBigInt extends TSchema, NumericOptions { + [Kind]: 'BigInt'; + static: bigint; + type: 'null'; + typeOf: 'BigInt'; +} +export interface TBoolean extends TSchema { + [Kind]: 'Boolean'; + static: boolean; + type: 'boolean'; +} +export type TConstructorParameters> = TTuple; +export type TInstanceType> = T['returns']; +export type TCompositeEvaluateArray = { + [K in keyof T]: T[K] extends TSchema ? Static : never; +}; +export type TCompositeArray = { + [K in keyof T]: T[K] extends TObject ? P : {}; +}; +export type TCompositeProperties = Evaluate : I extends object ? I : {}>; +export interface TComposite extends TObject { + [Hint]: 'Composite'; + static: Evaluate>>; + properties: TCompositeProperties>; +} +export type TConstructorParameterArray = [...{ + [K in keyof T]: Static, P>; +}]; +export interface TConstructor extends TSchema { + [Kind]: 'Constructor'; + static: new (...param: TConstructorParameterArray) => Static; + type: 'object'; + instanceOf: 'Constructor'; + parameters: T; + returns: U; +} +export interface DateOptions extends SchemaOptions { + exclusiveMaximumTimestamp?: number; + exclusiveMinimumTimestamp?: number; + maximumTimestamp?: number; + minimumTimestamp?: number; +} +export interface TDate extends TSchema, DateOptions { + [Kind]: 'Date'; + static: Date; + type: 'object'; + instanceOf: 'Date'; +} +export interface TEnumOption { + type: 'number' | 'string'; + const: T; +} +export interface TEnum = Record> extends TSchema { + [Kind]: 'Union'; + static: T[keyof T]; + anyOf: TLiteral[]; +} +export type TExtends = (Static extends Static ? T : U) extends infer O ? UnionToTuple extends [infer X, infer Y] ? TUnion<[Assert, Assert]> : Assert : never; +export type TExcludeTemplateLiteralResult = TUnionResult; +}[T]>, TSchema[]>>; +export type TExcludeTemplateLiteral = Exclude, Static> extends infer S ? TExcludeTemplateLiteralResult> : never; +export type TExcludeArray = Assert> extends Static ? never : T[K]; +}[number]>, TSchema[]> extends infer R ? TUnionResult> : never; +export type TExclude = T extends TTemplateLiteral ? TExcludeTemplateLiteral : T extends TUnion ? TExcludeArray : T extends U ? TNever : T; +export type TExtractTemplateLiteralResult = TUnionResult; +}[T]>, TSchema[]>>; +export type TExtractTemplateLiteral = Extract, Static> extends infer S ? TExtractTemplateLiteralResult> : never; +export type TExtractArray = Assert> extends Static ? T[K] : never; +}[number]>, TSchema[]> extends infer R ? TUnionResult> : never; +export type TExtract = T extends TTemplateLiteral ? TExtractTemplateLiteral : T extends TUnion ? TExtractArray : T extends U ? T : T; +export type TFunctionParameters = [...{ + [K in keyof T]: Static, P>; +}]; +export interface TFunction extends TSchema { + [Kind]: 'Function'; + static: (...param: TFunctionParameters) => Static; + type: 'object'; + instanceOf: 'Function'; + parameters: T; + returns: U; +} +export interface TInteger extends TSchema, NumericOptions { + [Kind]: 'Integer'; + static: number; + type: 'integer'; +} +export type TUnevaluatedProperties = undefined | TSchema | boolean; +export interface IntersectOptions extends SchemaOptions { + unevaluatedProperties?: TUnevaluatedProperties; +} +export interface TIntersect extends TSchema, IntersectOptions { + [Kind]: 'Intersect'; + static: TupleToIntersect<{ + [K in keyof T]: Static, this['params']>; + }>; + type?: 'object'; + allOf: [...T]; +} +export type TKeyOfTuple = { + [K in keyof Static]: TLiteral>; +} extends infer U ? UnionToTuple> : never; +export type TKeyOf = (T extends TRecursive ? TKeyOfTuple : T extends TComposite ? TKeyOfTuple : T extends TIntersect ? TKeyOfTuple : T extends TUnion ? TKeyOfTuple : T extends TObject ? TKeyOfTuple : T extends TRecord ? [K] : [ +]) extends infer R ? TUnionResult> : never; +export type TLiteralValue = string | number | boolean; +export interface TLiteral extends TSchema { + [Kind]: 'Literal'; + static: T; + const: T; +} +export interface TNever extends TSchema { + [Kind]: 'Never'; + static: never; + not: {}; +} +export interface TNot extends TSchema { + [Kind]: 'Not'; + static: Static; + allOf: [{ + not: Not; + }, T]; +} +export interface TNull extends TSchema { + [Kind]: 'Null'; + static: null; + type: 'null'; +} +export interface TNumber extends TSchema, NumericOptions { + [Kind]: 'Number'; + static: number; + type: 'number'; +} +export type ReadonlyOptionalPropertyKeys = { + [K in keyof T]: T[K] extends TReadonlyOptional ? K : never; +}[keyof T]; +export type ReadonlyPropertyKeys = { + [K in keyof T]: T[K] extends TReadonly ? K : never; +}[keyof T]; +export type OptionalPropertyKeys = { + [K in keyof T]: T[K] extends TOptional ? K : never; +}[keyof T]; +export type RequiredPropertyKeys = keyof Omit | ReadonlyPropertyKeys | OptionalPropertyKeys>; +export type PropertiesReducer> = Evaluate<(Readonly>>> & Readonly>> & Partial>> & Required>>)>; +export type PropertiesReduce = PropertiesReducer; +}>; +export type TProperties = Record; +export type ObjectProperties = T extends TObject ? U : never; +export type ObjectPropertyKeys = T extends TObject ? keyof U : never; +export type TAdditionalProperties = undefined | TSchema | boolean; +export interface ObjectOptions extends SchemaOptions { + additionalProperties?: TAdditionalProperties; + minProperties?: number; + maxProperties?: number; +} +export interface TObject extends TSchema, ObjectOptions { + [Kind]: 'Object'; + static: PropertiesReduce; + additionalProperties?: TAdditionalProperties; + type: 'object'; + properties: T; + required?: string[]; +} +export type TOmitArray = Assert<{ + [K2 in keyof T]: TOmit, K>; +}, TSchema[]>; +export type TOmitProperties = Evaluate, TProperties>>; +export type TOmit = T extends TRecursive ? TRecursive> : T extends TComposite ? TComposite> : T extends TIntersect ? TIntersect> : T extends TUnion ? TUnion> : T extends TObject ? TObject> : T; +export type TParameters = TTuple; +export type TPartialObjectArray = Assert<{ + [K in keyof T]: TPartial>; +}, TObject[]>; +export type TPartialArray = Assert<{ + [K in keyof T]: TPartial>; +}, TSchema[]>; +export type TPartialProperties = Evaluate ? TReadonlyOptional : T[K] extends TReadonly ? TReadonlyOptional : T[K] extends TOptional ? TOptional : TOptional; +}, TProperties>>; +export type TPartial = T extends TRecursive ? TRecursive> : T extends TComposite ? TComposite> : T extends TIntersect ? TIntersect> : T extends TUnion ? TUnion> : T extends TObject ? TObject> : T; +export type TPickArray = { + [K2 in keyof T]: TPick, K>; +}; +export type TPickProperties = Pick, keyof T>> extends infer R ? ({ + [K in keyof R]: Assert extends TSchema ? R[K] : never; +}) : never; +export type TPick = T extends TRecursive ? TRecursive> : T extends TComposite ? TComposite> : T extends TIntersect ? TIntersect> : T extends TUnion ? TUnion> : T extends TObject ? TObject> : T; +export interface TPromise extends TSchema { + [Kind]: 'Promise'; + static: Promise>; + type: 'object'; + instanceOf: 'Promise'; + item: TSchema; +} +export type RecordTemplateLiteralObjectType = Ensure]: T; +}>>>; +export type RecordTemplateLiteralType = IsTemplateLiteralFinite extends true ? RecordTemplateLiteralObjectType : TRecord; +export type RecordUnionLiteralType[]>, T extends TSchema> = Static extends string ? Ensure]: T; +}>> : never; +export type RecordLiteralType, T extends TSchema> = Ensure>; +export type RecordNumberType = Ensure>; +export type RecordStringType = Ensure>; +export type RecordKey = TUnion[]> | TLiteral | TTemplateLiteral | TInteger | TNumber | TString; +export interface TRecord extends TSchema { + [Kind]: 'Record'; + static: Record, Static>; + type: 'object'; + patternProperties: { + [pattern: string]: T; + }; + additionalProperties: false; +} +export interface TThis extends TSchema { + [Kind]: 'This'; + static: this['params'][0]; + $ref: string; +} +export type TRecursiveReduce = Static]>; +export interface TRecursive extends TSchema { + [Hint]: 'Recursive'; + static: TRecursiveReduce; +} +export interface TRef extends TSchema { + [Kind]: 'Ref'; + static: Static; + $ref: string; +} +export type TReturnType = T['returns']; +export type TRequiredArray = Assert<{ + [K in keyof T]: TRequired>; +}, TSchema[]>; +export type TRequiredProperties = Evaluate ? TReadonly : T[K] extends TReadonly ? TReadonly : T[K] extends TOptional ? U : T[K]; +}, TProperties>>; +export type TRequired = T extends TRecursive ? TRecursive> : T extends TComposite ? TComposite> : T extends TIntersect ? TIntersect> : T extends TUnion ? TUnion> : T extends TObject ? TObject> : T; +export type StringFormatOption = 'date-time' | 'time' | 'date' | 'email' | 'idn-email' | 'hostname' | 'idn-hostname' | 'ipv4' | 'ipv6' | 'uri' | 'uri-reference' | 'iri' | 'uuid' | 'iri-reference' | 'uri-template' | 'json-pointer' | 'relative-json-pointer' | 'regex'; +export interface StringOptions extends SchemaOptions { + minLength?: number; + maxLength?: number; + pattern?: string; + format?: Format; + contentEncoding?: '7bit' | '8bit' | 'binary' | 'quoted-printable' | 'base64'; + contentMediaType?: string; +} +export interface TString extends TSchema, StringOptions { + [Kind]: 'String'; + static: string; + type: 'string'; +} +export type SymbolValue = string | number | undefined; +export interface TSymbol extends TSchema, SchemaOptions { + [Kind]: 'Symbol'; + static: symbol; + type: 'null'; + typeOf: 'Symbol'; +} +export type IsTemplateLiteralFiniteCheck = T extends TTemplateLiteral ? IsTemplateLiteralFiniteArray> : T extends TUnion ? IsTemplateLiteralFiniteArray> : T extends TString ? false : T extends TBoolean ? false : T extends TNumber ? false : T extends TInteger ? false : T extends TBigInt ? false : T extends TLiteral ? true : false; +export type IsTemplateLiteralFiniteArray = T extends [infer L, ...infer R] ? IsTemplateLiteralFiniteCheck extends false ? false : IsTemplateLiteralFiniteArray> : T extends [infer L] ? IsTemplateLiteralFiniteCheck extends false ? false : true : true; +export type IsTemplateLiteralFinite = T extends TTemplateLiteral ? IsTemplateLiteralFiniteArray : false; +export type TTemplateLiteralKind = TUnion | TLiteral | TInteger | TTemplateLiteral | TNumber | TBigInt | TString | TBoolean | TNever; +export type TTemplateLiteralConst = T extends TUnion ? { + [K in keyof U]: TTemplateLiteralUnion, Acc>; +}[number] : T extends TTemplateLiteral ? `${Static}` : T extends TLiteral ? `${U}` : T extends TString ? `${string}` : T extends TNumber ? `${number}` : T extends TBigInt ? `${bigint}` : T extends TBoolean ? `${boolean}` : never; +export type TTemplateLiteralUnion = T extends [infer L, ...infer R] ? `${TTemplateLiteralConst}${TTemplateLiteralUnion, Acc>}` : T extends [infer L] ? `${TTemplateLiteralConst}${Acc}` : Acc; +export interface TTemplateLiteral extends TSchema { + [Kind]: 'TemplateLiteral'; + static: TTemplateLiteralUnion; + type: 'string'; + pattern: string; +} +export type TTupleIntoArray> = T extends TTuple ? Assert : never; +export interface TTuple extends TSchema { + [Kind]: 'Tuple'; + static: { + [K in keyof T]: T[K] extends TSchema ? Static : T[K]; + }; + type: 'array'; + items?: T; + additionalItems?: false; + minItems: number; + maxItems: number; +} +export interface TUndefined extends TSchema { + [Kind]: 'Undefined'; + static: undefined; + type: 'null'; + typeOf: 'Undefined'; +} +export type TUnionOfLiteralArray[]> = { + [K in keyof T]: Assert['const']; +}[number]; +export type TUnionOfLiteral[]>> = TUnionOfLiteralArray; +export type TUnionResult = T extends [] ? TNever : T extends [infer S] ? S : TUnion; +export type TUnionTemplateLiteral> = Ensure; +}[S]>, TLiteral[]>>>; +export interface TUnion extends TSchema { + [Kind]: 'Union'; + static: { + [K in keyof T]: T[K] extends TSchema ? Static : never; + }[number]; + anyOf: T; +} +export interface Uint8ArrayOptions extends SchemaOptions { + maxByteLength?: number; + minByteLength?: number; +} +export interface TUint8Array extends TSchema, Uint8ArrayOptions { + [Kind]: 'Uint8Array'; + static: Uint8Array; + instanceOf: 'Uint8Array'; + type: 'object'; +} +export interface TUnknown extends TSchema { + [Kind]: 'Unknown'; + static: unknown; +} +export interface UnsafeOptions extends SchemaOptions { + [Kind]?: string; +} +export interface TUnsafe extends TSchema { + [Kind]: string; + static: T; +} +export interface TVoid extends TSchema { + [Kind]: 'Void'; + static: void; + type: 'null'; + typeOf: 'Void'; +} +/** Creates a TypeScript static type from a TypeBox type */ +export type Static = (T & { + params: P; +})['static']; +export type TypeRegistryValidationFunction = (schema: TSchema, value: unknown) => boolean; +/** A registry for user defined types */ +export declare namespace TypeRegistry { + /** Returns the entries in this registry */ + function Entries(): Map>; + /** Clears all user defined types */ + function Clear(): void; + /** Returns true if this registry contains this kind */ + function Has(kind: string): boolean; + /** Sets a validation function for a user defined type */ + function Set(kind: string, func: TypeRegistryValidationFunction): void; + /** Gets a custom validation function for a user defined type */ + function Get(kind: string): TypeRegistryValidationFunction | undefined; +} +export type FormatRegistryValidationFunction = (value: string) => boolean; +/** A registry for user defined string formats */ +export declare namespace FormatRegistry { + /** Returns the entries in this registry */ + function Entries(): Map; + /** Clears all user defined string formats */ + function Clear(): void; + /** Returns true if the user defined string format exists */ + function Has(format: string): boolean; + /** Sets a validation function for a user defined string format */ + function Set(format: string, func: FormatRegistryValidationFunction): void; + /** Gets a validation function for a user defined string format */ + function Get(format: string): FormatRegistryValidationFunction | undefined; +} +export declare class TypeGuardUnknownTypeError extends Error { + readonly schema: unknown; + constructor(schema: unknown); +} +/** Provides functions to test if JavaScript values are TypeBox types */ +export declare namespace TypeGuard { + /** Returns true if the given schema is TAny */ + function TAny(schema: unknown): schema is TAny; + /** Returns true if the given schema is TArray */ + function TArray(schema: unknown): schema is TArray; + /** Returns true if the given schema is TBigInt */ + function TBigInt(schema: unknown): schema is TBigInt; + /** Returns true if the given schema is TBoolean */ + function TBoolean(schema: unknown): schema is TBoolean; + /** Returns true if the given schema is TConstructor */ + function TConstructor(schema: unknown): schema is TConstructor; + /** Returns true if the given schema is TDate */ + function TDate(schema: unknown): schema is TDate; + /** Returns true if the given schema is TFunction */ + function TFunction(schema: unknown): schema is TFunction; + /** Returns true if the given schema is TInteger */ + function TInteger(schema: unknown): schema is TInteger; + /** Returns true if the given schema is TIntersect */ + function TIntersect(schema: unknown): schema is TIntersect; + /** Returns true if the given schema is TKind */ + function TKind(schema: unknown): schema is Record; + /** Returns true if the given schema is TLiteral */ + function TLiteral(schema: unknown): schema is TLiteral; + /** Returns true if the given schema is TNever */ + function TNever(schema: unknown): schema is TNever; + /** Returns true if the given schema is TNot */ + function TNot(schema: unknown): schema is TNot; + /** Returns true if the given schema is TNull */ + function TNull(schema: unknown): schema is TNull; + /** Returns true if the given schema is TNumber */ + function TNumber(schema: unknown): schema is TNumber; + /** Returns true if the given schema is TObject */ + function TObject(schema: unknown): schema is TObject; + /** Returns true if the given schema is TPromise */ + function TPromise(schema: unknown): schema is TPromise; + /** Returns true if the given schema is TRecord */ + function TRecord(schema: unknown): schema is TRecord; + /** Returns true if the given schema is TRef */ + function TRef(schema: unknown): schema is TRef; + /** Returns true if the given schema is TString */ + function TString(schema: unknown): schema is TString; + /** Returns true if the given schema is TSymbol */ + function TSymbol(schema: unknown): schema is TSymbol; + /** Returns true if the given schema is TTemplateLiteral */ + function TTemplateLiteral(schema: unknown): schema is TTemplateLiteral; + /** Returns true if the given schema is TThis */ + function TThis(schema: unknown): schema is TThis; + /** Returns true if the given schema is TTuple */ + function TTuple(schema: unknown): schema is TTuple; + /** Returns true if the given schema is TUndefined */ + function TUndefined(schema: unknown): schema is TUndefined; + /** Returns true if the given schema is TUnion */ + function TUnion(schema: unknown): schema is TUnion; + /** Returns true if the given schema is TUnion[]> */ + function TUnionLiteral(schema: unknown): schema is TUnion[]>; + /** Returns true if the given schema is TUint8Array */ + function TUint8Array(schema: unknown): schema is TUint8Array; + /** Returns true if the given schema is TUnknown */ + function TUnknown(schema: unknown): schema is TUnknown; + /** Returns true if the given schema is a raw TUnsafe */ + function TUnsafe(schema: unknown): schema is TUnsafe; + /** Returns true if the given schema is TVoid */ + function TVoid(schema: unknown): schema is TVoid; + /** Returns true if this schema has the ReadonlyOptional modifier */ + function TReadonlyOptional(schema: T): schema is TReadonlyOptional; + /** Returns true if this schema has the Readonly modifier */ + function TReadonly(schema: T): schema is TReadonly; + /** Returns true if this schema has the Optional modifier */ + function TOptional(schema: T): schema is TOptional; + /** Returns true if the given schema is TSchema */ + function TSchema(schema: unknown): schema is TSchema; +} +/** Fast undefined check used for properties of type undefined */ +export declare namespace ExtendsUndefined { + function Check(schema: TSchema): boolean; +} +export declare enum TypeExtendsResult { + Union = 0, + True = 1, + False = 2 +} +export declare namespace TypeExtends { + function Extends(left: TSchema, right: TSchema): TypeExtendsResult; +} +/** Specialized Clone for Types */ +export declare namespace TypeClone { + /** Clones a type. */ + function Clone(schema: T, options: SchemaOptions): T; +} +export declare namespace ObjectMap { + function Map(schema: TSchema, callback: (object: TObject) => TObject, options: SchemaOptions): T; +} +export declare namespace KeyResolver { + function Resolve(schema: T): string[]; +} +export declare namespace TemplateLiteralPattern { + function Create(kinds: TTemplateLiteralKind[]): string; +} +export declare namespace TemplateLiteralResolver { + function Resolve(template: TTemplateLiteral): TString | TUnion | TLiteral; +} +export declare class TemplateLiteralParserError extends Error { + constructor(message: string); +} +export declare namespace TemplateLiteralParser { + type Expression = And | Or | Const; + type Const = { + type: 'const'; + const: string; + }; + type And = { + type: 'and'; + expr: Expression[]; + }; + type Or = { + type: 'or'; + expr: Expression[]; + }; + /** Parses a pattern and returns an expression tree */ + function Parse(pattern: string): Expression; + /** Parses a pattern and strips forward and trailing ^ and $ */ + function ParseExact(pattern: string): Expression; +} +export declare namespace TemplateLiteralFinite { + function Check(expression: TemplateLiteralParser.Expression): boolean; +} +export declare namespace TemplateLiteralGenerator { + function Generate(expression: TemplateLiteralParser.Expression): IterableIterator; +} +export declare class TypeBuilder { + /** `[Utility]` Creates a schema without `static` and `params` types */ + protected Create(schema: Omit): T; + /** `[Standard]` Omits compositing symbols from this schema */ + Strict(schema: T): T; +} +export declare class StandardTypeBuilder extends TypeBuilder { + /** `[Modifier]` Creates a Optional property */ + Optional(schema: T): TOptional; + /** `[Modifier]` Creates a ReadonlyOptional property */ + ReadonlyOptional(schema: T): TReadonlyOptional; + /** `[Modifier]` Creates a Readonly object or property */ + Readonly(schema: T): TReadonly; + /** `[Standard]` Creates an Any type */ + Any(options?: SchemaOptions): TAny; + /** `[Standard]` Creates an Array type */ + Array(items: T, options?: ArrayOptions): TArray; + /** `[Standard]` Creates a Boolean type */ + Boolean(options?: SchemaOptions): TBoolean; + /** `[Standard]` Creates a Composite object type. */ + Composite(objects: [...T], options?: ObjectOptions): TComposite; + /** `[Standard]` Creates a Enum type */ + Enum>(item: T, options?: SchemaOptions): TEnum; + /** `[Standard]` A conditional type expression that will return the true type if the left type extends the right */ + Extends(left: L, right: R, trueType: T, falseType: U, options?: SchemaOptions): TExtends; + /** `[Standard]` Excludes from the left type any type that is not assignable to the right */ + Exclude(left: L, right: R, options?: SchemaOptions): TExclude; + /** `[Standard]` Extracts from the left type any type that is assignable to the right */ + Extract(left: L, right: R, options?: SchemaOptions): TExtract; + /** `[Standard]` Creates an Integer type */ + Integer(options?: NumericOptions): TInteger; + /** `[Standard]` Creates a Intersect type */ + Intersect(allOf: [], options?: SchemaOptions): TNever; + /** `[Standard]` Creates a Intersect type */ + Intersect(allOf: [...T], options?: SchemaOptions): T[0]; + Intersect(allOf: [...T], options?: IntersectOptions): TIntersect; + /** `[Standard]` Creates a KeyOf type */ + KeyOf(schema: T, options?: SchemaOptions): TKeyOf; + /** `[Standard]` Creates a Literal type */ + Literal(value: T, options?: SchemaOptions): TLiteral; + /** `[Standard]` Creates a Never type */ + Never(options?: SchemaOptions): TNever; + /** `[Standard]` Creates a Not type. The first argument is the disallowed type, the second is the allowed. */ + Not(not: N, schema: T, options?: SchemaOptions): TNot; + /** `[Standard]` Creates a Null type */ + Null(options?: SchemaOptions): TNull; + /** `[Standard]` Creates a Number type */ + Number(options?: NumericOptions): TNumber; + /** `[Standard]` Creates an Object type */ + Object(properties: T, options?: ObjectOptions): TObject; + /** `[Standard]` Creates a mapped type whose keys are omitted from the given type */ + Omit)[]>(schema: T, keys: readonly [...K], options?: SchemaOptions): TOmit; + /** `[Standard]` Creates a mapped type whose keys are omitted from the given type */ + Omit[]>>(schema: T, keys: K, options?: SchemaOptions): TOmit>; + /** `[Standard]` Creates a mapped type whose keys are omitted from the given type */ + Omit>(schema: T, key: K, options?: SchemaOptions): TOmit; + /** `[Standard]` Creates a mapped type whose keys are omitted from the given type */ + Omit(schema: T, key: K, options?: SchemaOptions): TOmit; + /** `[Standard]` Creates a mapped type where all properties are Optional */ + Partial(schema: T, options?: ObjectOptions): TPartial; + /** `[Standard]` Creates a mapped type whose keys are picked from the given type */ + Pick)[]>(schema: T, keys: readonly [...K], options?: SchemaOptions): TPick; + /** `[Standard]` Creates a mapped type whose keys are picked from the given type */ + Pick[]>>(schema: T, keys: K, options?: SchemaOptions): TPick>; + /** `[Standard]` Creates a mapped type whose keys are picked from the given type */ + Pick>(schema: T, key: K, options?: SchemaOptions): TPick; + /** `[Standard]` Creates a mapped type whose keys are picked from the given type */ + Pick(schema: T, key: K, options?: SchemaOptions): TPick; + /** `[Standard]` Creates a Record type */ + Record[]>, T extends TSchema>(key: K, schema: T, options?: ObjectOptions): RecordUnionLiteralType; + /** `[Standard]` Creates a Record type */ + Record, T extends TSchema>(key: K, schema: T, options?: ObjectOptions): RecordLiteralType; + /** `[Standard]` Creates a Record type */ + Record(key: K, schema: T, options?: ObjectOptions): RecordTemplateLiteralType; + /** `[Standard]` Creates a Record type */ + Record(key: K, schema: T, options?: ObjectOptions): RecordNumberType; + /** `[Standard]` Creates a Record type */ + Record(key: K, schema: T, options?: ObjectOptions): RecordStringType; + /** `[Standard]` Creates a Recursive type */ + Recursive(callback: (thisType: TThis) => T, options?: SchemaOptions): TRecursive; + /** `[Standard]` Creates a Ref type. The referenced type must contain a $id */ + Ref(schema: T, options?: SchemaOptions): TRef; + /** `[Standard]` Creates a mapped type where all properties are Required */ + Required(schema: T, options?: SchemaOptions): TRequired; + /** `[Standard]` Creates a String type */ + String(options?: StringOptions): TString; + /** `[Standard]` Creates a template literal type */ + TemplateLiteral(kinds: [...T], options?: SchemaOptions): TTemplateLiteral; + /** `[Standard]` Creates a Tuple type */ + Tuple(items: [...T], options?: SchemaOptions): TTuple; + /** `[Standard]` Creates a Union type */ + Union(anyOf: [], options?: SchemaOptions): TNever; + /** `[Standard]` Creates a Union type */ + Union(anyOf: [...T], options?: SchemaOptions): T[0]; + /** `[Standard]` Creates a Union type */ + Union(anyOf: [...T], options?: SchemaOptions): TUnion; + /** `[Experimental]` Remaps a TemplateLiteral into a Union representation. This function is known to cause TS compiler crashes for finite templates with large generation counts. Use with caution. */ + Union(template: T): TUnionTemplateLiteral; + /** `[Standard]` Creates an Unknown type */ + Unknown(options?: SchemaOptions): TUnknown; + /** `[Standard]` Creates a Unsafe type that infers for the generic argument */ + Unsafe(options?: UnsafeOptions): TUnsafe; +} +export declare class ExtendedTypeBuilder extends StandardTypeBuilder { + /** `[Extended]` Creates a BigInt type */ + BigInt(options?: NumericOptions): TBigInt; + /** `[Extended]` Extracts the ConstructorParameters from the given Constructor type */ + ConstructorParameters>(schema: T, options?: SchemaOptions): TConstructorParameters; + /** `[Extended]` Creates a Constructor type */ + Constructor, U extends TSchema>(parameters: T, returns: U, options?: SchemaOptions): TConstructor, U>; + /** `[Extended]` Creates a Constructor type */ + Constructor(parameters: [...T], returns: U, options?: SchemaOptions): TConstructor; + /** `[Extended]` Creates a Date type */ + Date(options?: DateOptions): TDate; + /** `[Extended]` Creates a Function type */ + Function, U extends TSchema>(parameters: T, returns: U, options?: SchemaOptions): TFunction, U>; + /** `[Extended]` Creates a Function type */ + Function(parameters: [...T], returns: U, options?: SchemaOptions): TFunction; + /** `[Extended]` Extracts the InstanceType from the given Constructor */ + InstanceType>(schema: T, options?: SchemaOptions): TInstanceType; + /** `[Extended]` Extracts the Parameters from the given Function type */ + Parameters>(schema: T, options?: SchemaOptions): TParameters; + /** `[Extended]` Creates a Promise type */ + Promise(item: T, options?: SchemaOptions): TPromise; + /** `[Extended]` Creates a regular expression type */ + RegEx(regex: RegExp, options?: SchemaOptions): TString; + /** `[Extended]` Extracts the ReturnType from the given Function */ + ReturnType>(schema: T, options?: SchemaOptions): TReturnType; + /** `[Extended]` Creates a Symbol type */ + Symbol(options?: SchemaOptions): TSymbol; + /** `[Extended]` Creates a Undefined type */ + Undefined(options?: SchemaOptions): TUndefined; + /** `[Extended]` Creates a Uint8Array type */ + Uint8Array(options?: Uint8ArrayOptions): TUint8Array; + /** `[Extended]` Creates a Void type */ + Void(options?: SchemaOptions): TVoid; +} +/** JSON Schema TypeBuilder with Static Resolution for TypeScript */ +export declare const StandardType: StandardTypeBuilder; +/** JSON Schema TypeBuilder with Static Resolution for TypeScript */ +export declare const Type: ExtendedTypeBuilder; diff --git a/node_modules/@sinclair/typebox/typebox.js b/node_modules/@sinclair/typebox/typebox.js new file mode 100644 index 00000000..c8953c35 --- /dev/null +++ b/node_modules/@sinclair/typebox/typebox.js @@ -0,0 +1,2220 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Type = exports.StandardType = exports.ExtendedTypeBuilder = exports.StandardTypeBuilder = exports.TypeBuilder = exports.TemplateLiteralGenerator = exports.TemplateLiteralFinite = exports.TemplateLiteralParser = exports.TemplateLiteralParserError = exports.TemplateLiteralResolver = exports.TemplateLiteralPattern = exports.KeyResolver = exports.ObjectMap = exports.TypeClone = exports.TypeExtends = exports.TypeExtendsResult = exports.ExtendsUndefined = exports.TypeGuard = exports.TypeGuardUnknownTypeError = exports.FormatRegistry = exports.TypeRegistry = exports.PatternStringExact = exports.PatternNumberExact = exports.PatternBooleanExact = exports.PatternString = exports.PatternNumber = exports.PatternBoolean = exports.Kind = exports.Hint = exports.Modifier = void 0; +// -------------------------------------------------------------------------- +// Symbols +// -------------------------------------------------------------------------- +exports.Modifier = Symbol.for('TypeBox.Modifier'); +exports.Hint = Symbol.for('TypeBox.Hint'); +exports.Kind = Symbol.for('TypeBox.Kind'); +// -------------------------------------------------------------------------- +// Patterns +// -------------------------------------------------------------------------- +exports.PatternBoolean = '(true|false)'; +exports.PatternNumber = '(0|[1-9][0-9]*)'; +exports.PatternString = '(.*)'; +exports.PatternBooleanExact = `^${exports.PatternBoolean}$`; +exports.PatternNumberExact = `^${exports.PatternNumber}$`; +exports.PatternStringExact = `^${exports.PatternString}$`; +/** A registry for user defined types */ +var TypeRegistry; +(function (TypeRegistry) { + const map = new Map(); + /** Returns the entries in this registry */ + function Entries() { + return new Map(map); + } + TypeRegistry.Entries = Entries; + /** Clears all user defined types */ + function Clear() { + return map.clear(); + } + TypeRegistry.Clear = Clear; + /** Returns true if this registry contains this kind */ + function Has(kind) { + return map.has(kind); + } + TypeRegistry.Has = Has; + /** Sets a validation function for a user defined type */ + function Set(kind, func) { + map.set(kind, func); + } + TypeRegistry.Set = Set; + /** Gets a custom validation function for a user defined type */ + function Get(kind) { + return map.get(kind); + } + TypeRegistry.Get = Get; +})(TypeRegistry = exports.TypeRegistry || (exports.TypeRegistry = {})); +/** A registry for user defined string formats */ +var FormatRegistry; +(function (FormatRegistry) { + const map = new Map(); + /** Returns the entries in this registry */ + function Entries() { + return new Map(map); + } + FormatRegistry.Entries = Entries; + /** Clears all user defined string formats */ + function Clear() { + return map.clear(); + } + FormatRegistry.Clear = Clear; + /** Returns true if the user defined string format exists */ + function Has(format) { + return map.has(format); + } + FormatRegistry.Has = Has; + /** Sets a validation function for a user defined string format */ + function Set(format, func) { + map.set(format, func); + } + FormatRegistry.Set = Set; + /** Gets a validation function for a user defined string format */ + function Get(format) { + return map.get(format); + } + FormatRegistry.Get = Get; +})(FormatRegistry = exports.FormatRegistry || (exports.FormatRegistry = {})); +// -------------------------------------------------------------------------- +// TypeGuard +// -------------------------------------------------------------------------- +class TypeGuardUnknownTypeError extends Error { + constructor(schema) { + super('TypeGuard: Unknown type'); + this.schema = schema; + } +} +exports.TypeGuardUnknownTypeError = TypeGuardUnknownTypeError; +/** Provides functions to test if JavaScript values are TypeBox types */ +var TypeGuard; +(function (TypeGuard) { + function IsObject(value) { + return typeof value === 'object' && value !== null && !Array.isArray(value); + } + function IsArray(value) { + return typeof value === 'object' && value !== null && Array.isArray(value); + } + function IsPattern(value) { + try { + new RegExp(value); + return true; + } + catch { + return false; + } + } + function IsControlCharacterFree(value) { + if (typeof value !== 'string') + return false; + for (let i = 0; i < value.length; i++) { + const code = value.charCodeAt(i); + if ((code >= 7 && code <= 13) || code === 27 || code === 127) { + return false; + } + } + return true; + } + function IsBigInt(value) { + return typeof value === 'bigint'; + } + function IsString(value) { + return typeof value === 'string'; + } + function IsNumber(value) { + return typeof value === 'number' && globalThis.Number.isFinite(value); + } + function IsBoolean(value) { + return typeof value === 'boolean'; + } + function IsOptionalBigInt(value) { + return value === undefined || (value !== undefined && IsBigInt(value)); + } + function IsOptionalNumber(value) { + return value === undefined || (value !== undefined && IsNumber(value)); + } + function IsOptionalBoolean(value) { + return value === undefined || (value !== undefined && IsBoolean(value)); + } + function IsOptionalString(value) { + return value === undefined || (value !== undefined && IsString(value)); + } + function IsOptionalPattern(value) { + return value === undefined || (value !== undefined && IsString(value) && IsControlCharacterFree(value) && IsPattern(value)); + } + function IsOptionalFormat(value) { + return value === undefined || (value !== undefined && IsString(value) && IsControlCharacterFree(value)); + } + function IsOptionalSchema(value) { + return value === undefined || TSchema(value); + } + /** Returns true if the given schema is TAny */ + function TAny(schema) { + return TKind(schema) && schema[exports.Kind] === 'Any' && IsOptionalString(schema.$id); + } + TypeGuard.TAny = TAny; + /** Returns true if the given schema is TArray */ + function TArray(schema) { + return (TKind(schema) && + schema[exports.Kind] === 'Array' && + schema.type === 'array' && + IsOptionalString(schema.$id) && + TSchema(schema.items) && + IsOptionalNumber(schema.minItems) && + IsOptionalNumber(schema.maxItems) && + IsOptionalBoolean(schema.uniqueItems)); + } + TypeGuard.TArray = TArray; + /** Returns true if the given schema is TBigInt */ + function TBigInt(schema) { + // prettier-ignore + return (TKind(schema) && + schema[exports.Kind] === 'BigInt' && + schema.type === 'null' && + schema.typeOf === 'BigInt' && + IsOptionalString(schema.$id) && + IsOptionalBigInt(schema.multipleOf) && + IsOptionalBigInt(schema.minimum) && + IsOptionalBigInt(schema.maximum) && + IsOptionalBigInt(schema.exclusiveMinimum) && + IsOptionalBigInt(schema.exclusiveMaximum)); + } + TypeGuard.TBigInt = TBigInt; + /** Returns true if the given schema is TBoolean */ + function TBoolean(schema) { + // prettier-ignore + return (TKind(schema) && + schema[exports.Kind] === 'Boolean' && + schema.type === 'boolean' && + IsOptionalString(schema.$id)); + } + TypeGuard.TBoolean = TBoolean; + /** Returns true if the given schema is TConstructor */ + function TConstructor(schema) { + // prettier-ignore + if (!(TKind(schema) && + schema[exports.Kind] === 'Constructor' && + schema.type === 'object' && + schema.instanceOf === 'Constructor' && + IsOptionalString(schema.$id) && + IsArray(schema.parameters) && + TSchema(schema.returns))) { + return false; + } + for (const parameter of schema.parameters) { + if (!TSchema(parameter)) + return false; + } + return true; + } + TypeGuard.TConstructor = TConstructor; + /** Returns true if the given schema is TDate */ + function TDate(schema) { + return (TKind(schema) && + schema[exports.Kind] === 'Date' && + schema.type === 'object' && + schema.instanceOf === 'Date' && + IsOptionalString(schema.$id) && + IsOptionalNumber(schema.minimumTimestamp) && + IsOptionalNumber(schema.maximumTimestamp) && + IsOptionalNumber(schema.exclusiveMinimumTimestamp) && + IsOptionalNumber(schema.exclusiveMaximumTimestamp)); + } + TypeGuard.TDate = TDate; + /** Returns true if the given schema is TFunction */ + function TFunction(schema) { + // prettier-ignore + if (!(TKind(schema) && + schema[exports.Kind] === 'Function' && + schema.type === 'object' && + schema.instanceOf === 'Function' && + IsOptionalString(schema.$id) && + IsArray(schema.parameters) && + TSchema(schema.returns))) { + return false; + } + for (const parameter of schema.parameters) { + if (!TSchema(parameter)) + return false; + } + return true; + } + TypeGuard.TFunction = TFunction; + /** Returns true if the given schema is TInteger */ + function TInteger(schema) { + return (TKind(schema) && + schema[exports.Kind] === 'Integer' && + schema.type === 'integer' && + IsOptionalString(schema.$id) && + IsOptionalNumber(schema.multipleOf) && + IsOptionalNumber(schema.minimum) && + IsOptionalNumber(schema.maximum) && + IsOptionalNumber(schema.exclusiveMinimum) && + IsOptionalNumber(schema.exclusiveMaximum)); + } + TypeGuard.TInteger = TInteger; + /** Returns true if the given schema is TIntersect */ + function TIntersect(schema) { + // prettier-ignore + if (!(TKind(schema) && + schema[exports.Kind] === 'Intersect' && + IsArray(schema.allOf) && + IsOptionalString(schema.type) && + (IsOptionalBoolean(schema.unevaluatedProperties) || IsOptionalSchema(schema.unevaluatedProperties)) && + IsOptionalString(schema.$id))) { + return false; + } + if ('type' in schema && schema.type !== 'object') { + return false; + } + for (const inner of schema.allOf) { + if (!TSchema(inner)) + return false; + } + return true; + } + TypeGuard.TIntersect = TIntersect; + /** Returns true if the given schema is TKind */ + function TKind(schema) { + return IsObject(schema) && exports.Kind in schema && typeof schema[exports.Kind] === 'string'; // TS 4.1.5: any required for symbol indexer + } + TypeGuard.TKind = TKind; + /** Returns true if the given schema is TLiteral */ + function TLiteral(schema) { + // prettier-ignore + return (TKind(schema) && + schema[exports.Kind] === 'Literal' && + IsOptionalString(schema.$id) && + (IsString(schema.const) || + IsNumber(schema.const) || + IsBoolean(schema.const) || + IsBigInt(schema.const))); + } + TypeGuard.TLiteral = TLiteral; + /** Returns true if the given schema is TNever */ + function TNever(schema) { + return TKind(schema) && schema[exports.Kind] === 'Never' && IsObject(schema.not) && globalThis.Object.getOwnPropertyNames(schema.not).length === 0; + } + TypeGuard.TNever = TNever; + /** Returns true if the given schema is TNot */ + function TNot(schema) { + // prettier-ignore + return (TKind(schema) && + schema[exports.Kind] === 'Not' && + IsArray(schema.allOf) && + schema.allOf.length === 2 && + IsObject(schema.allOf[0]) && + TSchema(schema.allOf[0].not) && + TSchema(schema.allOf[1])); + } + TypeGuard.TNot = TNot; + /** Returns true if the given schema is TNull */ + function TNull(schema) { + // prettier-ignore + return (TKind(schema) && + schema[exports.Kind] === 'Null' && + schema.type === 'null' && + IsOptionalString(schema.$id)); + } + TypeGuard.TNull = TNull; + /** Returns true if the given schema is TNumber */ + function TNumber(schema) { + return (TKind(schema) && + schema[exports.Kind] === 'Number' && + schema.type === 'number' && + IsOptionalString(schema.$id) && + IsOptionalNumber(schema.multipleOf) && + IsOptionalNumber(schema.minimum) && + IsOptionalNumber(schema.maximum) && + IsOptionalNumber(schema.exclusiveMinimum) && + IsOptionalNumber(schema.exclusiveMaximum)); + } + TypeGuard.TNumber = TNumber; + /** Returns true if the given schema is TObject */ + function TObject(schema) { + if (!(TKind(schema) && + schema[exports.Kind] === 'Object' && + schema.type === 'object' && + IsOptionalString(schema.$id) && + IsObject(schema.properties) && + (IsOptionalBoolean(schema.additionalProperties) || IsOptionalSchema(schema.additionalProperties)) && + IsOptionalNumber(schema.minProperties) && + IsOptionalNumber(schema.maxProperties))) { + return false; + } + for (const [key, value] of Object.entries(schema.properties)) { + if (!IsControlCharacterFree(key)) + return false; + if (!TSchema(value)) + return false; + } + return true; + } + TypeGuard.TObject = TObject; + /** Returns true if the given schema is TPromise */ + function TPromise(schema) { + // prettier-ignore + return (TKind(schema) && + schema[exports.Kind] === 'Promise' && + schema.type === 'object' && + schema.instanceOf === 'Promise' && + IsOptionalString(schema.$id) && + TSchema(schema.item)); + } + TypeGuard.TPromise = TPromise; + /** Returns true if the given schema is TRecord */ + function TRecord(schema) { + // prettier-ignore + if (!(TKind(schema) && + schema[exports.Kind] === 'Record' && + schema.type === 'object' && + IsOptionalString(schema.$id) && + schema.additionalProperties === false && + IsObject(schema.patternProperties))) { + return false; + } + const keys = Object.keys(schema.patternProperties); + if (keys.length !== 1) { + return false; + } + if (!IsPattern(keys[0])) { + return false; + } + if (!TSchema(schema.patternProperties[keys[0]])) { + return false; + } + return true; + } + TypeGuard.TRecord = TRecord; + /** Returns true if the given schema is TRef */ + function TRef(schema) { + // prettier-ignore + return (TKind(schema) && + schema[exports.Kind] === 'Ref' && + IsOptionalString(schema.$id) && + IsString(schema.$ref)); + } + TypeGuard.TRef = TRef; + /** Returns true if the given schema is TString */ + function TString(schema) { + return (TKind(schema) && + schema[exports.Kind] === 'String' && + schema.type === 'string' && + IsOptionalString(schema.$id) && + IsOptionalNumber(schema.minLength) && + IsOptionalNumber(schema.maxLength) && + IsOptionalPattern(schema.pattern) && + IsOptionalFormat(schema.format)); + } + TypeGuard.TString = TString; + /** Returns true if the given schema is TSymbol */ + function TSymbol(schema) { + // prettier-ignore + return (TKind(schema) && + schema[exports.Kind] === 'Symbol' && + schema.type === 'null' && + schema.typeOf === 'Symbol' && + IsOptionalString(schema.$id)); + } + TypeGuard.TSymbol = TSymbol; + /** Returns true if the given schema is TTemplateLiteral */ + function TTemplateLiteral(schema) { + // prettier-ignore + return (TKind(schema) && + schema[exports.Kind] === 'TemplateLiteral' && + schema.type === 'string' && + IsString(schema.pattern) && + schema.pattern[0] === '^' && + schema.pattern[schema.pattern.length - 1] === '$'); + } + TypeGuard.TTemplateLiteral = TTemplateLiteral; + /** Returns true if the given schema is TThis */ + function TThis(schema) { + // prettier-ignore + return (TKind(schema) && + schema[exports.Kind] === 'This' && + IsOptionalString(schema.$id) && + IsString(schema.$ref)); + } + TypeGuard.TThis = TThis; + /** Returns true if the given schema is TTuple */ + function TTuple(schema) { + // prettier-ignore + if (!(TKind(schema) && + schema[exports.Kind] === 'Tuple' && + schema.type === 'array' && + IsOptionalString(schema.$id) && + IsNumber(schema.minItems) && + IsNumber(schema.maxItems) && + schema.minItems === schema.maxItems)) { + return false; + } + if (schema.items === undefined && schema.additionalItems === undefined && schema.minItems === 0) { + return true; + } + if (!IsArray(schema.items)) { + return false; + } + for (const inner of schema.items) { + if (!TSchema(inner)) + return false; + } + return true; + } + TypeGuard.TTuple = TTuple; + /** Returns true if the given schema is TUndefined */ + function TUndefined(schema) { + // prettier-ignore + return (TKind(schema) && + schema[exports.Kind] === 'Undefined' && + schema.type === 'null' && + schema.typeOf === 'Undefined' && + IsOptionalString(schema.$id)); + } + TypeGuard.TUndefined = TUndefined; + /** Returns true if the given schema is TUnion */ + function TUnion(schema) { + // prettier-ignore + if (!(TKind(schema) && + schema[exports.Kind] === 'Union' && + IsArray(schema.anyOf) && + IsOptionalString(schema.$id))) { + return false; + } + for (const inner of schema.anyOf) { + if (!TSchema(inner)) + return false; + } + return true; + } + TypeGuard.TUnion = TUnion; + /** Returns true if the given schema is TUnion[]> */ + function TUnionLiteral(schema) { + return TUnion(schema) && schema.anyOf.every((schema) => TLiteral(schema) && typeof schema.const === 'string'); + } + TypeGuard.TUnionLiteral = TUnionLiteral; + /** Returns true if the given schema is TUint8Array */ + function TUint8Array(schema) { + return TKind(schema) && schema[exports.Kind] === 'Uint8Array' && schema.type === 'object' && IsOptionalString(schema.$id) && schema.instanceOf === 'Uint8Array' && IsOptionalNumber(schema.minByteLength) && IsOptionalNumber(schema.maxByteLength); + } + TypeGuard.TUint8Array = TUint8Array; + /** Returns true if the given schema is TUnknown */ + function TUnknown(schema) { + // prettier-ignore + return (TKind(schema) && + schema[exports.Kind] === 'Unknown' && + IsOptionalString(schema.$id)); + } + TypeGuard.TUnknown = TUnknown; + /** Returns true if the given schema is a raw TUnsafe */ + function TUnsafe(schema) { + // prettier-ignore + return (TKind(schema) && + schema[exports.Kind] === 'Unsafe'); + } + TypeGuard.TUnsafe = TUnsafe; + /** Returns true if the given schema is TVoid */ + function TVoid(schema) { + // prettier-ignore + return (TKind(schema) && + schema[exports.Kind] === 'Void' && + schema.type === 'null' && + schema.typeOf === 'Void' && + IsOptionalString(schema.$id)); + } + TypeGuard.TVoid = TVoid; + /** Returns true if this schema has the ReadonlyOptional modifier */ + function TReadonlyOptional(schema) { + return IsObject(schema) && schema[exports.Modifier] === 'ReadonlyOptional'; + } + TypeGuard.TReadonlyOptional = TReadonlyOptional; + /** Returns true if this schema has the Readonly modifier */ + function TReadonly(schema) { + return IsObject(schema) && schema[exports.Modifier] === 'Readonly'; + } + TypeGuard.TReadonly = TReadonly; + /** Returns true if this schema has the Optional modifier */ + function TOptional(schema) { + return IsObject(schema) && schema[exports.Modifier] === 'Optional'; + } + TypeGuard.TOptional = TOptional; + /** Returns true if the given schema is TSchema */ + function TSchema(schema) { + return (typeof schema === 'object' && + (TAny(schema) || + TArray(schema) || + TBoolean(schema) || + TBigInt(schema) || + TConstructor(schema) || + TDate(schema) || + TFunction(schema) || + TInteger(schema) || + TIntersect(schema) || + TLiteral(schema) || + TNever(schema) || + TNot(schema) || + TNull(schema) || + TNumber(schema) || + TObject(schema) || + TPromise(schema) || + TRecord(schema) || + TRef(schema) || + TString(schema) || + TSymbol(schema) || + TTemplateLiteral(schema) || + TThis(schema) || + TTuple(schema) || + TUndefined(schema) || + TUnion(schema) || + TUint8Array(schema) || + TUnknown(schema) || + TUnsafe(schema) || + TVoid(schema) || + (TKind(schema) && TypeRegistry.Has(schema[exports.Kind])))); + } + TypeGuard.TSchema = TSchema; +})(TypeGuard = exports.TypeGuard || (exports.TypeGuard = {})); +// -------------------------------------------------------------------------- +// ExtendsUndefined +// -------------------------------------------------------------------------- +/** Fast undefined check used for properties of type undefined */ +var ExtendsUndefined; +(function (ExtendsUndefined) { + function Check(schema) { + if (schema[exports.Kind] === 'Undefined') + return true; + if (schema[exports.Kind] === 'Union') { + const union = schema; + return union.anyOf.some((schema) => Check(schema)); + } + return false; + } + ExtendsUndefined.Check = Check; +})(ExtendsUndefined = exports.ExtendsUndefined || (exports.ExtendsUndefined = {})); +// -------------------------------------------------------------------------- +// TypeExtends +// -------------------------------------------------------------------------- +var TypeExtendsResult; +(function (TypeExtendsResult) { + TypeExtendsResult[TypeExtendsResult["Union"] = 0] = "Union"; + TypeExtendsResult[TypeExtendsResult["True"] = 1] = "True"; + TypeExtendsResult[TypeExtendsResult["False"] = 2] = "False"; +})(TypeExtendsResult = exports.TypeExtendsResult || (exports.TypeExtendsResult = {})); +var TypeExtends; +(function (TypeExtends) { + // -------------------------------------------------------------------------- + // IntoBooleanResult + // -------------------------------------------------------------------------- + function IntoBooleanResult(result) { + return result === TypeExtendsResult.False ? TypeExtendsResult.False : TypeExtendsResult.True; + } + // -------------------------------------------------------------------------- + // Any + // -------------------------------------------------------------------------- + function AnyRight(left, right) { + return TypeExtendsResult.True; + } + function Any(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right) && right.anyOf.some((schema) => TypeGuard.TAny(schema) || TypeGuard.TUnknown(schema))) + return TypeExtendsResult.True; + if (TypeGuard.TUnion(right)) + return TypeExtendsResult.Union; + if (TypeGuard.TUnknown(right)) + return TypeExtendsResult.True; + if (TypeGuard.TAny(right)) + return TypeExtendsResult.True; + return TypeExtendsResult.Union; + } + // -------------------------------------------------------------------------- + // Array + // -------------------------------------------------------------------------- + function ArrayRight(left, right) { + if (TypeGuard.TUnknown(left)) + return TypeExtendsResult.False; + if (TypeGuard.TAny(left)) + return TypeExtendsResult.Union; + if (TypeGuard.TNever(left)) + return TypeExtendsResult.True; + return TypeExtendsResult.False; + } + function Array(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right) && IsObjectArrayLike(right)) + return TypeExtendsResult.True; + if (!TypeGuard.TArray(right)) + return TypeExtendsResult.False; + return IntoBooleanResult(Visit(left.items, right.items)); + } + // -------------------------------------------------------------------------- + // BigInt + // -------------------------------------------------------------------------- + function BigInt(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TNever(right)) + return NeverRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right)) + return ObjectRight(left, right); + if (TypeGuard.TRecord(right)) + return RecordRight(left, right); + return TypeGuard.TBigInt(right) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + // -------------------------------------------------------------------------- + // Boolean + // -------------------------------------------------------------------------- + function BooleanRight(left, right) { + if (TypeGuard.TLiteral(left) && typeof left.const === 'boolean') + return TypeExtendsResult.True; + return TypeGuard.TBoolean(left) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + function Boolean(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TNever(right)) + return NeverRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right)) + return ObjectRight(left, right); + if (TypeGuard.TRecord(right)) + return RecordRight(left, right); + return TypeGuard.TBoolean(right) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + // -------------------------------------------------------------------------- + // Constructor + // -------------------------------------------------------------------------- + function Constructor(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right)) + return ObjectRight(left, right); + if (!TypeGuard.TConstructor(right)) + return TypeExtendsResult.False; + if (left.parameters.length > right.parameters.length) + return TypeExtendsResult.False; + if (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === TypeExtendsResult.True)) { + return TypeExtendsResult.False; + } + return IntoBooleanResult(Visit(left.returns, right.returns)); + } + // -------------------------------------------------------------------------- + // Date + // -------------------------------------------------------------------------- + function Date(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right)) + return ObjectRight(left, right); + if (TypeGuard.TRecord(right)) + return RecordRight(left, right); + return TypeGuard.TDate(right) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + // -------------------------------------------------------------------------- + // Function + // -------------------------------------------------------------------------- + function Function(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right)) + return ObjectRight(left, right); + if (!TypeGuard.TFunction(right)) + return TypeExtendsResult.False; + if (left.parameters.length > right.parameters.length) + return TypeExtendsResult.False; + if (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === TypeExtendsResult.True)) { + return TypeExtendsResult.False; + } + return IntoBooleanResult(Visit(left.returns, right.returns)); + } + // -------------------------------------------------------------------------- + // Integer + // -------------------------------------------------------------------------- + function IntegerRight(left, right) { + if (TypeGuard.TLiteral(left) && typeof left.const === 'number') + return TypeExtendsResult.True; + return TypeGuard.TNumber(left) || TypeGuard.TInteger(left) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + function Integer(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TNever(right)) + return NeverRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right)) + return ObjectRight(left, right); + if (TypeGuard.TRecord(right)) + return RecordRight(left, right); + return TypeGuard.TInteger(right) || TypeGuard.TNumber(right) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + // -------------------------------------------------------------------------- + // Intersect + // -------------------------------------------------------------------------- + function IntersectRight(left, right) { + return right.allOf.every((schema) => Visit(left, schema) === TypeExtendsResult.True) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + function Intersect(left, right) { + return left.allOf.some((schema) => Visit(schema, right) === TypeExtendsResult.True) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + // -------------------------------------------------------------------------- + // Literal + // -------------------------------------------------------------------------- + function IsLiteralString(schema) { + return typeof schema.const === 'string'; + } + function IsLiteralNumber(schema) { + return typeof schema.const === 'number'; + } + function IsLiteralBoolean(schema) { + return typeof schema.const === 'boolean'; + } + function Literal(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TNever(right)) + return NeverRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right)) + return ObjectRight(left, right); + if (TypeGuard.TRecord(right)) + return RecordRight(left, right); + if (TypeGuard.TString(right)) + return StringRight(left, right); + if (TypeGuard.TNumber(right)) + return NumberRight(left, right); + if (TypeGuard.TInteger(right)) + return IntegerRight(left, right); + if (TypeGuard.TBoolean(right)) + return BooleanRight(left, right); + return TypeGuard.TLiteral(right) && right.const === left.const ? TypeExtendsResult.True : TypeExtendsResult.False; + } + // -------------------------------------------------------------------------- + // Never + // -------------------------------------------------------------------------- + function NeverRight(left, right) { + return TypeExtendsResult.False; + } + function Never(left, right) { + return TypeExtendsResult.True; + } + // -------------------------------------------------------------------------- + // Null + // -------------------------------------------------------------------------- + function Null(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TNever(right)) + return NeverRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right)) + return ObjectRight(left, right); + if (TypeGuard.TRecord(right)) + return RecordRight(left, right); + return TypeGuard.TNull(right) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + // -------------------------------------------------------------------------- + // Number + // -------------------------------------------------------------------------- + function NumberRight(left, right) { + if (TypeGuard.TLiteral(left) && IsLiteralNumber(left)) + return TypeExtendsResult.True; + return TypeGuard.TNumber(left) || TypeGuard.TInteger(left) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + function Number(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TNever(right)) + return NeverRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right)) + return ObjectRight(left, right); + if (TypeGuard.TRecord(right)) + return RecordRight(left, right); + return TypeGuard.TInteger(right) || TypeGuard.TNumber(right) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + // -------------------------------------------------------------------------- + // Object + // -------------------------------------------------------------------------- + function IsObjectPropertyCount(schema, count) { + return globalThis.Object.keys(schema.properties).length === count; + } + function IsObjectStringLike(schema) { + return IsObjectArrayLike(schema); + } + function IsObjectSymbolLike(schema) { + // prettier-ignore + return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'description' in schema.properties && TypeGuard.TUnion(schema.properties.description) && schema.properties.description.anyOf.length === 2 && ((TypeGuard.TString(schema.properties.description.anyOf[0]) && + TypeGuard.TUndefined(schema.properties.description.anyOf[1])) || (TypeGuard.TString(schema.properties.description.anyOf[1]) && + TypeGuard.TUndefined(schema.properties.description.anyOf[0])))); + } + function IsObjectNumberLike(schema) { + return IsObjectPropertyCount(schema, 0); + } + function IsObjectBooleanLike(schema) { + return IsObjectPropertyCount(schema, 0); + } + function IsObjectBigIntLike(schema) { + return IsObjectPropertyCount(schema, 0); + } + function IsObjectDateLike(schema) { + return IsObjectPropertyCount(schema, 0); + } + function IsObjectUint8ArrayLike(schema) { + return IsObjectArrayLike(schema); + } + function IsObjectFunctionLike(schema) { + const length = exports.Type.Number(); + return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === TypeExtendsResult.True); + } + function IsObjectConstructorLike(schema) { + return IsObjectPropertyCount(schema, 0); + } + function IsObjectArrayLike(schema) { + const length = exports.Type.Number(); + return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === TypeExtendsResult.True); + } + function IsObjectPromiseLike(schema) { + const then = exports.Type.Function([exports.Type.Any()], exports.Type.Any()); + return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'then' in schema.properties && IntoBooleanResult(Visit(schema.properties['then'], then)) === TypeExtendsResult.True); + } + // -------------------------------------------------------------------------- + // Property + // -------------------------------------------------------------------------- + function Property(left, right) { + if (Visit(left, right) === TypeExtendsResult.False) + return TypeExtendsResult.False; + if (TypeGuard.TOptional(left) && !TypeGuard.TOptional(right)) + return TypeExtendsResult.False; + return TypeExtendsResult.True; + } + function ObjectRight(left, right) { + if (TypeGuard.TUnknown(left)) + return TypeExtendsResult.False; + if (TypeGuard.TAny(left)) + return TypeExtendsResult.Union; + if (TypeGuard.TNever(left)) + return TypeExtendsResult.True; + if (TypeGuard.TLiteral(left) && IsLiteralString(left) && IsObjectStringLike(right)) + return TypeExtendsResult.True; + if (TypeGuard.TLiteral(left) && IsLiteralNumber(left) && IsObjectNumberLike(right)) + return TypeExtendsResult.True; + if (TypeGuard.TLiteral(left) && IsLiteralBoolean(left) && IsObjectBooleanLike(right)) + return TypeExtendsResult.True; + if (TypeGuard.TSymbol(left) && IsObjectSymbolLike(right)) + return TypeExtendsResult.True; + if (TypeGuard.TBigInt(left) && IsObjectBigIntLike(right)) + return TypeExtendsResult.True; + if (TypeGuard.TString(left) && IsObjectStringLike(right)) + return TypeExtendsResult.True; + if (TypeGuard.TSymbol(left) && IsObjectSymbolLike(right)) + return TypeExtendsResult.True; + if (TypeGuard.TNumber(left) && IsObjectNumberLike(right)) + return TypeExtendsResult.True; + if (TypeGuard.TInteger(left) && IsObjectNumberLike(right)) + return TypeExtendsResult.True; + if (TypeGuard.TBoolean(left) && IsObjectBooleanLike(right)) + return TypeExtendsResult.True; + if (TypeGuard.TUint8Array(left) && IsObjectUint8ArrayLike(right)) + return TypeExtendsResult.True; + if (TypeGuard.TDate(left) && IsObjectDateLike(right)) + return TypeExtendsResult.True; + if (TypeGuard.TConstructor(left) && IsObjectConstructorLike(right)) + return TypeExtendsResult.True; + if (TypeGuard.TFunction(left) && IsObjectFunctionLike(right)) + return TypeExtendsResult.True; + if (TypeGuard.TRecord(left) && TypeGuard.TString(RecordKey(left))) { + // When expressing a Record with literal key values, the Record is converted into a Object with + // the Hint assigned as `Record`. This is used to invert the extends logic. + return right[exports.Hint] === 'Record' ? TypeExtendsResult.True : TypeExtendsResult.False; + } + if (TypeGuard.TRecord(left) && TypeGuard.TNumber(RecordKey(left))) { + return IsObjectPropertyCount(right, 0) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + return TypeExtendsResult.False; + } + function Object(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TRecord(right)) + return RecordRight(left, right); + if (!TypeGuard.TObject(right)) + return TypeExtendsResult.False; + for (const key of globalThis.Object.keys(right.properties)) { + if (!(key in left.properties)) + return TypeExtendsResult.False; + if (Property(left.properties[key], right.properties[key]) === TypeExtendsResult.False) { + return TypeExtendsResult.False; + } + } + return TypeExtendsResult.True; + } + // -------------------------------------------------------------------------- + // Promise + // -------------------------------------------------------------------------- + function Promise(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right) && IsObjectPromiseLike(right)) + return TypeExtendsResult.True; + if (!TypeGuard.TPromise(right)) + return TypeExtendsResult.False; + return IntoBooleanResult(Visit(left.item, right.item)); + } + // -------------------------------------------------------------------------- + // Record + // -------------------------------------------------------------------------- + function RecordKey(schema) { + if (exports.PatternNumberExact in schema.patternProperties) + return exports.Type.Number(); + if (exports.PatternStringExact in schema.patternProperties) + return exports.Type.String(); + throw Error('TypeExtends: Cannot get record key'); + } + function RecordValue(schema) { + if (exports.PatternNumberExact in schema.patternProperties) + return schema.patternProperties[exports.PatternNumberExact]; + if (exports.PatternStringExact in schema.patternProperties) + return schema.patternProperties[exports.PatternStringExact]; + throw Error('TypeExtends: Cannot get record value'); + } + function RecordRight(left, right) { + const Key = RecordKey(right); + const Value = RecordValue(right); + if (TypeGuard.TLiteral(left) && IsLiteralString(left) && TypeGuard.TNumber(Key) && IntoBooleanResult(Visit(left, Value)) === TypeExtendsResult.True) + return TypeExtendsResult.True; + if (TypeGuard.TUint8Array(left) && TypeGuard.TNumber(Key)) + return Visit(left, Value); + if (TypeGuard.TString(left) && TypeGuard.TNumber(Key)) + return Visit(left, Value); + if (TypeGuard.TArray(left) && TypeGuard.TNumber(Key)) + return Visit(left, Value); + if (TypeGuard.TObject(left)) { + for (const key of globalThis.Object.keys(left.properties)) { + if (Property(Value, left.properties[key]) === TypeExtendsResult.False) { + return TypeExtendsResult.False; + } + } + return TypeExtendsResult.True; + } + return TypeExtendsResult.False; + } + function Record(left, right) { + const Value = RecordValue(left); + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right)) + return ObjectRight(left, right); + if (!TypeGuard.TRecord(right)) + return TypeExtendsResult.False; + return Visit(Value, RecordValue(right)); + } + // -------------------------------------------------------------------------- + // String + // -------------------------------------------------------------------------- + function StringRight(left, right) { + if (TypeGuard.TLiteral(left) && typeof left.const === 'string') + return TypeExtendsResult.True; + return TypeGuard.TString(left) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + function String(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TNever(right)) + return NeverRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right)) + return ObjectRight(left, right); + if (TypeGuard.TRecord(right)) + return RecordRight(left, right); + return TypeGuard.TString(right) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + // -------------------------------------------------------------------------- + // Symbol + // -------------------------------------------------------------------------- + function Symbol(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TNever(right)) + return NeverRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right)) + return ObjectRight(left, right); + if (TypeGuard.TRecord(right)) + return RecordRight(left, right); + return TypeGuard.TSymbol(right) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + // -------------------------------------------------------------------------- + // Tuple + // -------------------------------------------------------------------------- + function TupleRight(left, right) { + if (TypeGuard.TUnknown(left)) + return TypeExtendsResult.False; + if (TypeGuard.TAny(left)) + return TypeExtendsResult.Union; + if (TypeGuard.TNever(left)) + return TypeExtendsResult.True; + return TypeExtendsResult.False; + } + function IsArrayOfTuple(left, right) { + return TypeGuard.TArray(right) && left.items !== undefined && left.items.every((schema) => Visit(schema, right.items) === TypeExtendsResult.True); + } + function Tuple(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right) && IsObjectArrayLike(right)) + return TypeExtendsResult.True; + if (TypeGuard.TArray(right) && IsArrayOfTuple(left, right)) + return TypeExtendsResult.True; + if (!TypeGuard.TTuple(right)) + return TypeExtendsResult.False; + if ((left.items === undefined && right.items !== undefined) || (left.items !== undefined && right.items === undefined)) + return TypeExtendsResult.False; + if (left.items === undefined && right.items === undefined) + return TypeExtendsResult.True; + return left.items.every((schema, index) => Visit(schema, right.items[index]) === TypeExtendsResult.True) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + // -------------------------------------------------------------------------- + // Uint8Array + // -------------------------------------------------------------------------- + function Uint8Array(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right)) + return ObjectRight(left, right); + if (TypeGuard.TRecord(right)) + return RecordRight(left, right); + return TypeGuard.TUint8Array(right) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + // -------------------------------------------------------------------------- + // Undefined + // -------------------------------------------------------------------------- + function Undefined(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TNever(right)) + return NeverRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right)) + return ObjectRight(left, right); + if (TypeGuard.TRecord(right)) + return RecordRight(left, right); + if (TypeGuard.TVoid(right)) + return VoidRight(left, right); + return TypeGuard.TUndefined(right) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + // -------------------------------------------------------------------------- + // Union + // -------------------------------------------------------------------------- + function UnionRight(left, right) { + return right.anyOf.some((schema) => Visit(left, schema) === TypeExtendsResult.True) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + function Union(left, right) { + return left.anyOf.every((schema) => Visit(schema, right) === TypeExtendsResult.True) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + // -------------------------------------------------------------------------- + // Unknown + // -------------------------------------------------------------------------- + function UnknownRight(left, right) { + return TypeExtendsResult.True; + } + function Unknown(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TString(right)) + return StringRight(left, right); + if (TypeGuard.TNumber(right)) + return NumberRight(left, right); + if (TypeGuard.TInteger(right)) + return IntegerRight(left, right); + if (TypeGuard.TBoolean(right)) + return BooleanRight(left, right); + if (TypeGuard.TArray(right)) + return ArrayRight(left, right); + if (TypeGuard.TTuple(right)) + return TupleRight(left, right); + if (TypeGuard.TObject(right)) + return ObjectRight(left, right); + return TypeGuard.TUnknown(right) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + // -------------------------------------------------------------------------- + // Void + // -------------------------------------------------------------------------- + function VoidRight(left, right) { + if (TypeGuard.TUndefined(left)) + return TypeExtendsResult.True; + return TypeGuard.TUndefined(left) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + function Void(left, right) { + if (TypeGuard.TIntersect(right)) + return IntersectRight(left, right); + if (TypeGuard.TUnion(right)) + return UnionRight(left, right); + if (TypeGuard.TUnknown(right)) + return UnknownRight(left, right); + if (TypeGuard.TAny(right)) + return AnyRight(left, right); + if (TypeGuard.TObject(right)) + return ObjectRight(left, right); + return TypeGuard.TVoid(right) ? TypeExtendsResult.True : TypeExtendsResult.False; + } + function Visit(left, right) { + // template union remap + if (TypeGuard.TTemplateLiteral(left)) + return Visit(TemplateLiteralResolver.Resolve(left), right); + if (TypeGuard.TTemplateLiteral(right)) + return Visit(left, TemplateLiteralResolver.Resolve(right)); + // standard extends + if (TypeGuard.TAny(left)) + return Any(left, right); + if (TypeGuard.TArray(left)) + return Array(left, right); + if (TypeGuard.TBigInt(left)) + return BigInt(left, right); + if (TypeGuard.TBoolean(left)) + return Boolean(left, right); + if (TypeGuard.TConstructor(left)) + return Constructor(left, right); + if (TypeGuard.TDate(left)) + return Date(left, right); + if (TypeGuard.TFunction(left)) + return Function(left, right); + if (TypeGuard.TInteger(left)) + return Integer(left, right); + if (TypeGuard.TIntersect(left)) + return Intersect(left, right); + if (TypeGuard.TLiteral(left)) + return Literal(left, right); + if (TypeGuard.TNever(left)) + return Never(left, right); + if (TypeGuard.TNull(left)) + return Null(left, right); + if (TypeGuard.TNumber(left)) + return Number(left, right); + if (TypeGuard.TObject(left)) + return Object(left, right); + if (TypeGuard.TRecord(left)) + return Record(left, right); + if (TypeGuard.TString(left)) + return String(left, right); + if (TypeGuard.TSymbol(left)) + return Symbol(left, right); + if (TypeGuard.TTuple(left)) + return Tuple(left, right); + if (TypeGuard.TPromise(left)) + return Promise(left, right); + if (TypeGuard.TUint8Array(left)) + return Uint8Array(left, right); + if (TypeGuard.TUndefined(left)) + return Undefined(left, right); + if (TypeGuard.TUnion(left)) + return Union(left, right); + if (TypeGuard.TUnknown(left)) + return Unknown(left, right); + if (TypeGuard.TVoid(left)) + return Void(left, right); + throw Error(`TypeExtends: Unknown left type operand '${left[exports.Kind]}'`); + } + function Extends(left, right) { + return Visit(left, right); + } + TypeExtends.Extends = Extends; +})(TypeExtends = exports.TypeExtends || (exports.TypeExtends = {})); +// -------------------------------------------------------------------------- +// TypeClone +// -------------------------------------------------------------------------- +/** Specialized Clone for Types */ +var TypeClone; +(function (TypeClone) { + function IsObject(value) { + return typeof value === 'object' && value !== null; + } + function IsArray(value) { + return globalThis.Array.isArray(value); + } + function Array(value) { + return value.map((value) => Visit(value)); + } + function Object(value) { + const clonedProperties = globalThis.Object.getOwnPropertyNames(value).reduce((acc, key) => { + return { ...acc, [key]: Visit(value[key]) }; + }, {}); + const clonedSymbols = globalThis.Object.getOwnPropertySymbols(value).reduce((acc, key) => { + return { ...acc, [key]: Visit(value[key]) }; + }, {}); + return { ...clonedProperties, ...clonedSymbols }; + } + function Visit(value) { + if (IsArray(value)) + return Array(value); + if (IsObject(value)) + return Object(value); + return value; + } + /** Clones a type. */ + function Clone(schema, options) { + return { ...Visit(schema), ...options }; + } + TypeClone.Clone = Clone; +})(TypeClone = exports.TypeClone || (exports.TypeClone = {})); +// -------------------------------------------------------------------------- +// ObjectMap +// -------------------------------------------------------------------------- +var ObjectMap; +(function (ObjectMap) { + function Intersect(schema, callback) { + // prettier-ignore + return exports.Type.Intersect(schema.allOf.map((inner) => Visit(inner, callback)), { ...schema }); + } + function Union(schema, callback) { + // prettier-ignore + return exports.Type.Union(schema.anyOf.map((inner) => Visit(inner, callback)), { ...schema }); + } + function Object(schema, callback) { + return callback(schema); + } + function Visit(schema, callback) { + // There are cases where users need to map objects with unregistered kinds. Using a TypeGuard here would + // prevent sub schema mapping as unregistered kinds will not pass TSchema checks. This is notable in the + // case of TObject where unregistered property kinds cause the TObject check to fail. As mapping is only + // used for composition, we use explicit checks instead. + if (schema[exports.Kind] === 'Intersect') + return Intersect(schema, callback); + if (schema[exports.Kind] === 'Union') + return Union(schema, callback); + if (schema[exports.Kind] === 'Object') + return Object(schema, callback); + return schema; + } + function Map(schema, callback, options) { + return { ...Visit(TypeClone.Clone(schema, {}), callback), ...options }; + } + ObjectMap.Map = Map; +})(ObjectMap = exports.ObjectMap || (exports.ObjectMap = {})); +// -------------------------------------------------------------------------- +// KeyResolver +// -------------------------------------------------------------------------- +var KeyResolver; +(function (KeyResolver) { + function IsKeyable(schema) { + return TypeGuard.TIntersect(schema) || TypeGuard.TUnion(schema) || (TypeGuard.TObject(schema) && globalThis.Object.getOwnPropertyNames(schema.properties).length > 0); + } + function Intersect(schema) { + return [...schema.allOf.filter((schema) => IsKeyable(schema)).reduce((set, schema) => Visit(schema).map((key) => set.add(key))[0], new Set())]; + } + function Union(schema) { + const sets = schema.anyOf.filter((schema) => IsKeyable(schema)).map((inner) => Visit(inner)); + return [...sets.reduce((set, outer) => outer.map((key) => (sets.every((inner) => inner.includes(key)) ? set.add(key) : set))[0], new Set())]; + } + function Object(schema) { + return globalThis.Object.keys(schema.properties); + } + function Visit(schema) { + if (TypeGuard.TIntersect(schema)) + return Intersect(schema); + if (TypeGuard.TUnion(schema)) + return Union(schema); + if (TypeGuard.TObject(schema)) + return Object(schema); + return []; + } + function Resolve(schema) { + return Visit(schema); + } + KeyResolver.Resolve = Resolve; +})(KeyResolver = exports.KeyResolver || (exports.KeyResolver = {})); +// -------------------------------------------------------------------------- +// TemplateLiteralPattern +// -------------------------------------------------------------------------- +var TemplateLiteralPattern; +(function (TemplateLiteralPattern) { + function Escape(value) { + return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + } + function Visit(schema, acc) { + if (TypeGuard.TTemplateLiteral(schema)) { + const pattern = schema.pattern.slice(1, schema.pattern.length - 1); + return pattern; + } + else if (TypeGuard.TUnion(schema)) { + const tokens = schema.anyOf.map((schema) => Visit(schema, acc)).join('|'); + return `(${tokens})`; + } + else if (TypeGuard.TNumber(schema)) { + return `${acc}${exports.PatternNumber}`; + } + else if (TypeGuard.TInteger(schema)) { + return `${acc}${exports.PatternNumber}`; + } + else if (TypeGuard.TBigInt(schema)) { + return `${acc}${exports.PatternNumber}`; + } + else if (TypeGuard.TString(schema)) { + return `${acc}${exports.PatternString}`; + } + else if (TypeGuard.TLiteral(schema)) { + return `${acc}${Escape(schema.const.toString())}`; + } + else if (TypeGuard.TBoolean(schema)) { + return `${acc}${exports.PatternBoolean}`; + } + else if (TypeGuard.TNever(schema)) { + throw Error('TemplateLiteralPattern: TemplateLiteral cannot operate on types of TNever'); + } + else { + throw Error(`TemplateLiteralPattern: Unexpected Kind '${schema[exports.Kind]}'`); + } + } + function Create(kinds) { + return `^${kinds.map((schema) => Visit(schema, '')).join('')}\$`; + } + TemplateLiteralPattern.Create = Create; +})(TemplateLiteralPattern = exports.TemplateLiteralPattern || (exports.TemplateLiteralPattern = {})); +// -------------------------------------------------------------------------------------- +// TemplateLiteralResolver +// -------------------------------------------------------------------------------------- +var TemplateLiteralResolver; +(function (TemplateLiteralResolver) { + function Resolve(template) { + const expression = TemplateLiteralParser.ParseExact(template.pattern); + if (!TemplateLiteralFinite.Check(expression)) + return exports.Type.String(); + const literals = [...TemplateLiteralGenerator.Generate(expression)].map((value) => exports.Type.Literal(value)); + return exports.Type.Union(literals); + } + TemplateLiteralResolver.Resolve = Resolve; +})(TemplateLiteralResolver = exports.TemplateLiteralResolver || (exports.TemplateLiteralResolver = {})); +// -------------------------------------------------------------------------------------- +// TemplateLiteralParser +// -------------------------------------------------------------------------------------- +class TemplateLiteralParserError extends Error { + constructor(message) { + super(message); + } +} +exports.TemplateLiteralParserError = TemplateLiteralParserError; +var TemplateLiteralParser; +(function (TemplateLiteralParser) { + function IsNonEscaped(pattern, index, char) { + return pattern[index] === char && pattern.charCodeAt(index - 1) !== 92; + } + function IsOpenParen(pattern, index) { + return IsNonEscaped(pattern, index, '('); + } + function IsCloseParen(pattern, index) { + return IsNonEscaped(pattern, index, ')'); + } + function IsSeparator(pattern, index) { + return IsNonEscaped(pattern, index, '|'); + } + function IsGroup(pattern) { + if (!(IsOpenParen(pattern, 0) && IsCloseParen(pattern, pattern.length - 1))) + return false; + let count = 0; + for (let index = 0; index < pattern.length; index++) { + if (IsOpenParen(pattern, index)) + count += 1; + if (IsCloseParen(pattern, index)) + count -= 1; + if (count === 0 && index !== pattern.length - 1) + return false; + } + return true; + } + function InGroup(pattern) { + return pattern.slice(1, pattern.length - 1); + } + function IsPrecedenceOr(pattern) { + let count = 0; + for (let index = 0; index < pattern.length; index++) { + if (IsOpenParen(pattern, index)) + count += 1; + if (IsCloseParen(pattern, index)) + count -= 1; + if (IsSeparator(pattern, index) && count === 0) + return true; + } + return false; + } + function IsPrecedenceAnd(pattern) { + for (let index = 0; index < pattern.length; index++) { + if (IsOpenParen(pattern, index)) + return true; + } + return false; + } + function Or(pattern) { + let [count, start] = [0, 0]; + const expressions = []; + for (let index = 0; index < pattern.length; index++) { + if (IsOpenParen(pattern, index)) + count += 1; + if (IsCloseParen(pattern, index)) + count -= 1; + if (IsSeparator(pattern, index) && count === 0) { + const range = pattern.slice(start, index); + if (range.length > 0) + expressions.push(Parse(range)); + start = index + 1; + } + } + const range = pattern.slice(start); + if (range.length > 0) + expressions.push(Parse(range)); + if (expressions.length === 0) + return { type: 'const', const: '' }; + if (expressions.length === 1) + return expressions[0]; + return { type: 'or', expr: expressions }; + } + function And(pattern) { + function Group(value, index) { + if (!IsOpenParen(value, index)) + throw new TemplateLiteralParserError(`TemplateLiteralParser: Index must point to open parens`); + let count = 0; + for (let scan = index; scan < value.length; scan++) { + if (IsOpenParen(value, scan)) + count += 1; + if (IsCloseParen(value, scan)) + count -= 1; + if (count === 0) + return [index, scan]; + } + throw new TemplateLiteralParserError(`TemplateLiteralParser: Unclosed group parens in expression`); + } + function Range(pattern, index) { + for (let scan = index; scan < pattern.length; scan++) { + if (IsOpenParen(pattern, scan)) + return [index, scan]; + } + return [index, pattern.length]; + } + const expressions = []; + for (let index = 0; index < pattern.length; index++) { + if (IsOpenParen(pattern, index)) { + const [start, end] = Group(pattern, index); + const range = pattern.slice(start, end + 1); + expressions.push(Parse(range)); + index = end; + } + else { + const [start, end] = Range(pattern, index); + const range = pattern.slice(start, end); + if (range.length > 0) + expressions.push(Parse(range)); + index = end - 1; + } + } + if (expressions.length === 0) + return { type: 'const', const: '' }; + if (expressions.length === 1) + return expressions[0]; + return { type: 'and', expr: expressions }; + } + /** Parses a pattern and returns an expression tree */ + function Parse(pattern) { + if (IsGroup(pattern)) + return Parse(InGroup(pattern)); + if (IsPrecedenceOr(pattern)) + return Or(pattern); + if (IsPrecedenceAnd(pattern)) + return And(pattern); + return { type: 'const', const: pattern }; + } + TemplateLiteralParser.Parse = Parse; + /** Parses a pattern and strips forward and trailing ^ and $ */ + function ParseExact(pattern) { + return Parse(pattern.slice(1, pattern.length - 1)); + } + TemplateLiteralParser.ParseExact = ParseExact; +})(TemplateLiteralParser = exports.TemplateLiteralParser || (exports.TemplateLiteralParser = {})); +// -------------------------------------------------------------------------------------- +// TemplateLiteralFinite +// -------------------------------------------------------------------------------------- +var TemplateLiteralFinite; +(function (TemplateLiteralFinite) { + function IsNumber(expression) { + // prettier-ignore + return (expression.type === 'or' && + expression.expr.length === 2 && + expression.expr[0].type === 'const' && + expression.expr[0].const === '0' && + expression.expr[1].type === 'const' && + expression.expr[1].const === '[1-9][0-9]*'); + } + function IsBoolean(expression) { + // prettier-ignore + return (expression.type === 'or' && + expression.expr.length === 2 && + expression.expr[0].type === 'const' && + expression.expr[0].const === 'true' && + expression.expr[1].type === 'const' && + expression.expr[1].const === 'false'); + } + function IsString(expression) { + return expression.type === 'const' && expression.const === '.*'; + } + function Check(expression) { + if (IsBoolean(expression)) + return true; + if (IsNumber(expression) || IsString(expression)) + return false; + if (expression.type === 'and') + return expression.expr.every((expr) => Check(expr)); + if (expression.type === 'or') + return expression.expr.every((expr) => Check(expr)); + if (expression.type === 'const') + return true; + throw Error(`TemplateLiteralFinite: Unknown expression type`); + } + TemplateLiteralFinite.Check = Check; +})(TemplateLiteralFinite = exports.TemplateLiteralFinite || (exports.TemplateLiteralFinite = {})); +// -------------------------------------------------------------------------------------- +// TemplateLiteralGenerator +// -------------------------------------------------------------------------------------- +var TemplateLiteralGenerator; +(function (TemplateLiteralGenerator) { + function* Reduce(buffer) { + if (buffer.length === 1) + return yield* buffer[0]; + for (const left of buffer[0]) { + for (const right of Reduce(buffer.slice(1))) { + yield `${left}${right}`; + } + } + } + function* And(expression) { + return yield* Reduce(expression.expr.map((expr) => [...Generate(expr)])); + } + function* Or(expression) { + for (const expr of expression.expr) + yield* Generate(expr); + } + function* Const(expression) { + return yield expression.const; + } + function* Generate(expression) { + if (expression.type === 'and') + return yield* And(expression); + if (expression.type === 'or') + return yield* Or(expression); + if (expression.type === 'const') + return yield* Const(expression); + throw Error('TemplateLiteralGenerator: Unknown expression'); + } + TemplateLiteralGenerator.Generate = Generate; +})(TemplateLiteralGenerator = exports.TemplateLiteralGenerator || (exports.TemplateLiteralGenerator = {})); +// -------------------------------------------------------------------------- +// TypeOrdinal: Used for auto $id generation +// -------------------------------------------------------------------------- +let TypeOrdinal = 0; +// -------------------------------------------------------------------------- +// TypeBuilder +// -------------------------------------------------------------------------- +class TypeBuilder { + /** `[Utility]` Creates a schema without `static` and `params` types */ + Create(schema) { + return schema; + } + /** `[Standard]` Omits compositing symbols from this schema */ + Strict(schema) { + return JSON.parse(JSON.stringify(schema)); + } +} +exports.TypeBuilder = TypeBuilder; +// -------------------------------------------------------------------------- +// StandardTypeBuilder +// -------------------------------------------------------------------------- +class StandardTypeBuilder extends TypeBuilder { + // ------------------------------------------------------------------------ + // Modifiers + // ------------------------------------------------------------------------ + /** `[Modifier]` Creates a Optional property */ + Optional(schema) { + return { [exports.Modifier]: 'Optional', ...TypeClone.Clone(schema, {}) }; + } + /** `[Modifier]` Creates a ReadonlyOptional property */ + ReadonlyOptional(schema) { + return { [exports.Modifier]: 'ReadonlyOptional', ...TypeClone.Clone(schema, {}) }; + } + /** `[Modifier]` Creates a Readonly object or property */ + Readonly(schema) { + return { [exports.Modifier]: 'Readonly', ...schema }; + } + // ------------------------------------------------------------------------ + // Types + // ------------------------------------------------------------------------ + /** `[Standard]` Creates an Any type */ + Any(options = {}) { + return this.Create({ ...options, [exports.Kind]: 'Any' }); + } + /** `[Standard]` Creates an Array type */ + Array(items, options = {}) { + return this.Create({ ...options, [exports.Kind]: 'Array', type: 'array', items: TypeClone.Clone(items, {}) }); + } + /** `[Standard]` Creates a Boolean type */ + Boolean(options = {}) { + return this.Create({ ...options, [exports.Kind]: 'Boolean', type: 'boolean' }); + } + /** `[Standard]` Creates a Composite object type. */ + Composite(objects, options) { + const isOptionalAll = (objects, key) => objects.every((object) => !(key in object.properties) || IsOptional(object.properties[key])); + const IsOptional = (schema) => TypeGuard.TOptional(schema) || TypeGuard.TReadonlyOptional(schema); + const [required, optional] = [new Set(), new Set()]; + for (const object of objects) { + for (const key of globalThis.Object.getOwnPropertyNames(object.properties)) { + if (isOptionalAll(objects, key)) + optional.add(key); + } + } + for (const object of objects) { + for (const key of globalThis.Object.getOwnPropertyNames(object.properties)) { + if (!optional.has(key)) + required.add(key); + } + } + const properties = {}; + for (const object of objects) { + for (const [key, schema] of Object.entries(object.properties)) { + const property = TypeClone.Clone(schema, {}); + if (!optional.has(key)) + delete property[exports.Modifier]; + if (key in properties) { + const left = TypeExtends.Extends(properties[key], property) !== TypeExtendsResult.False; + const right = TypeExtends.Extends(property, properties[key]) !== TypeExtendsResult.False; + if (!left && !right) + properties[key] = exports.Type.Never(); + if (!left && right) + properties[key] = property; + } + else { + properties[key] = property; + } + } + } + if (required.size > 0) { + return this.Create({ ...options, [exports.Kind]: 'Object', [exports.Hint]: 'Composite', type: 'object', properties, required: [...required] }); + } + else { + return this.Create({ ...options, [exports.Kind]: 'Object', [exports.Hint]: 'Composite', type: 'object', properties }); + } + } + /** `[Standard]` Creates a Enum type */ + Enum(item, options = {}) { + // prettier-ignore + const values = globalThis.Object.keys(item).filter((key) => isNaN(key)).map((key) => item[key]); + const anyOf = values.map((value) => (typeof value === 'string' ? { [exports.Kind]: 'Literal', type: 'string', const: value } : { [exports.Kind]: 'Literal', type: 'number', const: value })); + return this.Create({ ...options, [exports.Kind]: 'Union', anyOf }); + } + /** `[Standard]` A conditional type expression that will return the true type if the left type extends the right */ + Extends(left, right, trueType, falseType, options = {}) { + switch (TypeExtends.Extends(left, right)) { + case TypeExtendsResult.Union: + return this.Union([TypeClone.Clone(trueType, options), TypeClone.Clone(falseType, options)]); + case TypeExtendsResult.True: + return TypeClone.Clone(trueType, options); + case TypeExtendsResult.False: + return TypeClone.Clone(falseType, options); + } + } + /** `[Standard]` Excludes from the left type any type that is not assignable to the right */ + Exclude(left, right, options = {}) { + if (TypeGuard.TTemplateLiteral(left)) + return this.Exclude(TemplateLiteralResolver.Resolve(left), right, options); + if (TypeGuard.TTemplateLiteral(right)) + return this.Exclude(left, TemplateLiteralResolver.Resolve(right), options); + if (TypeGuard.TUnion(left)) { + const narrowed = left.anyOf.filter((inner) => TypeExtends.Extends(inner, right) === TypeExtendsResult.False); + return (narrowed.length === 1 ? TypeClone.Clone(narrowed[0], options) : this.Union(narrowed, options)); + } + else { + return (TypeExtends.Extends(left, right) !== TypeExtendsResult.False ? this.Never(options) : TypeClone.Clone(left, options)); + } + } + /** `[Standard]` Extracts from the left type any type that is assignable to the right */ + Extract(left, right, options = {}) { + if (TypeGuard.TTemplateLiteral(left)) + return this.Extract(TemplateLiteralResolver.Resolve(left), right, options); + if (TypeGuard.TTemplateLiteral(right)) + return this.Extract(left, TemplateLiteralResolver.Resolve(right), options); + if (TypeGuard.TUnion(left)) { + const narrowed = left.anyOf.filter((inner) => TypeExtends.Extends(inner, right) !== TypeExtendsResult.False); + return (narrowed.length === 1 ? TypeClone.Clone(narrowed[0], options) : this.Union(narrowed, options)); + } + else { + return (TypeExtends.Extends(left, right) !== TypeExtendsResult.False ? TypeClone.Clone(left, options) : this.Never(options)); + } + } + /** `[Standard]` Creates an Integer type */ + Integer(options = {}) { + return this.Create({ ...options, [exports.Kind]: 'Integer', type: 'integer' }); + } + Intersect(allOf, options = {}) { + if (allOf.length === 0) + return exports.Type.Never(); + if (allOf.length === 1) + return TypeClone.Clone(allOf[0], options); + const objects = allOf.every((schema) => TypeGuard.TObject(schema)); + const cloned = allOf.map((schema) => TypeClone.Clone(schema, {})); + const clonedUnevaluatedProperties = TypeGuard.TSchema(options.unevaluatedProperties) ? { unevaluatedProperties: TypeClone.Clone(options.unevaluatedProperties, {}) } : {}; + if (options.unevaluatedProperties === false || TypeGuard.TSchema(options.unevaluatedProperties) || objects) { + return this.Create({ ...options, ...clonedUnevaluatedProperties, [exports.Kind]: 'Intersect', type: 'object', allOf: cloned }); + } + else { + return this.Create({ ...options, ...clonedUnevaluatedProperties, [exports.Kind]: 'Intersect', allOf: cloned }); + } + } + /** `[Standard]` Creates a KeyOf type */ + KeyOf(schema, options = {}) { + if (TypeGuard.TRecord(schema)) { + const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0]; + if (pattern === exports.PatternNumberExact) + return this.Number(options); + if (pattern === exports.PatternStringExact) + return this.String(options); + throw Error('StandardTypeBuilder: Unable to resolve key type from Record key pattern'); + } + else { + const resolved = KeyResolver.Resolve(schema); + if (resolved.length === 0) + return this.Never(options); + const literals = resolved.map((key) => this.Literal(key)); + return this.Union(literals, options); + } + } + /** `[Standard]` Creates a Literal type */ + Literal(value, options = {}) { + return this.Create({ ...options, [exports.Kind]: 'Literal', const: value, type: typeof value }); + } + /** `[Standard]` Creates a Never type */ + Never(options = {}) { + return this.Create({ ...options, [exports.Kind]: 'Never', not: {} }); + } + /** `[Standard]` Creates a Not type. The first argument is the disallowed type, the second is the allowed. */ + Not(not, schema, options) { + return this.Create({ ...options, [exports.Kind]: 'Not', allOf: [{ not: TypeClone.Clone(not, {}) }, TypeClone.Clone(schema, {})] }); + } + /** `[Standard]` Creates a Null type */ + Null(options = {}) { + return this.Create({ ...options, [exports.Kind]: 'Null', type: 'null' }); + } + /** `[Standard]` Creates a Number type */ + Number(options = {}) { + return this.Create({ ...options, [exports.Kind]: 'Number', type: 'number' }); + } + /** `[Standard]` Creates an Object type */ + Object(properties, options = {}) { + const propertyKeys = globalThis.Object.getOwnPropertyNames(properties); + const optionalKeys = propertyKeys.filter((key) => TypeGuard.TOptional(properties[key]) || TypeGuard.TReadonlyOptional(properties[key])); + const requiredKeys = propertyKeys.filter((name) => !optionalKeys.includes(name)); + const clonedAdditionalProperties = TypeGuard.TSchema(options.additionalProperties) ? { additionalProperties: TypeClone.Clone(options.additionalProperties, {}) } : {}; + const clonedProperties = propertyKeys.reduce((acc, key) => ({ ...acc, [key]: TypeClone.Clone(properties[key], {}) }), {}); + if (requiredKeys.length > 0) { + return this.Create({ ...options, ...clonedAdditionalProperties, [exports.Kind]: 'Object', type: 'object', properties: clonedProperties, required: requiredKeys }); + } + else { + return this.Create({ ...options, ...clonedAdditionalProperties, [exports.Kind]: 'Object', type: 'object', properties: clonedProperties }); + } + } + Omit(schema, unresolved, options = {}) { + // prettier-ignore + const keys = TypeGuard.TUnionLiteral(unresolved) ? unresolved.anyOf.map((schema) => schema.const) : + TypeGuard.TLiteral(unresolved) ? [unresolved.const] : + TypeGuard.TNever(unresolved) ? [] : + unresolved; + // prettier-ignore + return ObjectMap.Map(TypeClone.Clone(schema, {}), (schema) => { + if (schema.required) { + schema.required = schema.required.filter((key) => !keys.includes(key)); + if (schema.required.length === 0) + delete schema.required; + } + for (const key of globalThis.Object.keys(schema.properties)) { + if (keys.includes(key)) + delete schema.properties[key]; + } + return this.Create(schema); + }, options); + } + /** `[Standard]` Creates a mapped type where all properties are Optional */ + Partial(schema, options = {}) { + function Apply(schema) { + // prettier-ignore + switch (schema[exports.Modifier]) { + case 'ReadonlyOptional': + schema[exports.Modifier] = 'ReadonlyOptional'; + break; + case 'Readonly': + schema[exports.Modifier] = 'ReadonlyOptional'; + break; + case 'Optional': + schema[exports.Modifier] = 'Optional'; + break; + default: + schema[exports.Modifier] = 'Optional'; + break; + } + } + // prettier-ignore + return ObjectMap.Map(TypeClone.Clone(schema, {}), (schema) => { + delete schema.required; + globalThis.Object.keys(schema.properties).forEach(key => Apply(schema.properties[key])); + return schema; + }, options); + } + Pick(schema, unresolved, options = {}) { + // prettier-ignore + const keys = TypeGuard.TUnionLiteral(unresolved) ? unresolved.anyOf.map((schema) => schema.const) : + TypeGuard.TLiteral(unresolved) ? [unresolved.const] : + TypeGuard.TNever(unresolved) ? [] : + unresolved; + // prettier-ignore + return ObjectMap.Map(TypeClone.Clone(schema, {}), (schema) => { + if (schema.required) { + schema.required = schema.required.filter((key) => keys.includes(key)); + if (schema.required.length === 0) + delete schema.required; + } + for (const key of globalThis.Object.keys(schema.properties)) { + if (!keys.includes(key)) + delete schema.properties[key]; + } + return this.Create(schema); + }, options); + } + /** `[Standard]` Creates a Record type */ + Record(key, schema, options = {}) { + if (TypeGuard.TTemplateLiteral(key)) { + const expression = TemplateLiteralParser.ParseExact(key.pattern); + // prettier-ignore + return TemplateLiteralFinite.Check(expression) + ? (this.Object([...TemplateLiteralGenerator.Generate(expression)].reduce((acc, key) => ({ ...acc, [key]: TypeClone.Clone(schema, {}) }), {}), options)) + : this.Create({ ...options, [exports.Kind]: 'Record', type: 'object', patternProperties: { [key.pattern]: TypeClone.Clone(schema, {}) }, additionalProperties: false }); + } + else if (TypeGuard.TUnionLiteral(key)) { + if (key.anyOf.every((schema) => TypeGuard.TLiteral(schema) && (typeof schema.const === 'string' || typeof schema.const === 'number'))) { + const properties = key.anyOf.reduce((acc, literal) => ({ ...acc, [literal.const]: TypeClone.Clone(schema, {}) }), {}); + return this.Object(properties, { ...options, [exports.Hint]: 'Record' }); + } + else + throw Error('TypeBuilder: Record key can only be derived from union literal of number or string'); + } + else if (TypeGuard.TLiteral(key)) { + if (typeof key.const === 'string' || typeof key.const === 'number') { + return this.Object({ [key.const]: TypeClone.Clone(schema, {}) }, options); + } + else + throw Error('TypeBuilder: Record key can only be derived from literals of number or string'); + } + else if (TypeGuard.TInteger(key) || TypeGuard.TNumber(key)) { + const pattern = exports.PatternNumberExact; + return this.Create({ ...options, [exports.Kind]: 'Record', type: 'object', patternProperties: { [pattern]: TypeClone.Clone(schema, {}) }, additionalProperties: false }); + } + else if (TypeGuard.TString(key)) { + const pattern = key.pattern === undefined ? exports.PatternStringExact : key.pattern; + return this.Create({ ...options, [exports.Kind]: 'Record', type: 'object', patternProperties: { [pattern]: TypeClone.Clone(schema, {}) }, additionalProperties: false }); + } + else { + throw Error(`StandardTypeBuilder: Invalid Record Key`); + } + } + /** `[Standard]` Creates a Recursive type */ + Recursive(callback, options = {}) { + if (options.$id === undefined) + options.$id = `T${TypeOrdinal++}`; + const thisType = callback({ [exports.Kind]: 'This', $ref: `${options.$id}` }); + thisType.$id = options.$id; + return this.Create({ ...options, [exports.Hint]: 'Recursive', ...thisType }); + } + /** `[Standard]` Creates a Ref type. The referenced type must contain a $id */ + Ref(schema, options = {}) { + if (schema.$id === undefined) + throw Error('StandardTypeBuilder.Ref: Target type must specify an $id'); + return this.Create({ ...options, [exports.Kind]: 'Ref', $ref: schema.$id }); + } + /** `[Standard]` Creates a mapped type where all properties are Required */ + Required(schema, options = {}) { + function Apply(schema) { + // prettier-ignore + switch (schema[exports.Modifier]) { + case 'ReadonlyOptional': + schema[exports.Modifier] = 'Readonly'; + break; + case 'Readonly': + schema[exports.Modifier] = 'Readonly'; + break; + case 'Optional': + delete schema[exports.Modifier]; + break; + default: + delete schema[exports.Modifier]; + break; + } + } + // prettier-ignore + return ObjectMap.Map(TypeClone.Clone(schema, {}), (schema) => { + schema.required = globalThis.Object.keys(schema.properties); + globalThis.Object.keys(schema.properties).forEach(key => Apply(schema.properties[key])); + return schema; + }, options); + } + /** `[Standard]` Creates a String type */ + String(options = {}) { + return this.Create({ ...options, [exports.Kind]: 'String', type: 'string' }); + } + /** `[Standard]` Creates a template literal type */ + TemplateLiteral(kinds, options = {}) { + const pattern = TemplateLiteralPattern.Create(kinds); + return this.Create({ ...options, [exports.Kind]: 'TemplateLiteral', type: 'string', pattern }); + } + /** `[Standard]` Creates a Tuple type */ + Tuple(items, options = {}) { + const [additionalItems, minItems, maxItems] = [false, items.length, items.length]; + const clonedItems = items.map((item) => TypeClone.Clone(item, {})); + // prettier-ignore + const schema = (items.length > 0 ? + { ...options, [exports.Kind]: 'Tuple', type: 'array', items: clonedItems, additionalItems, minItems, maxItems } : + { ...options, [exports.Kind]: 'Tuple', type: 'array', minItems, maxItems }); + return this.Create(schema); + } + Union(union, options = {}) { + if (TypeGuard.TTemplateLiteral(union)) { + return TemplateLiteralResolver.Resolve(union); + } + else { + const anyOf = union; + if (anyOf.length === 0) + return this.Never(options); + if (anyOf.length === 1) + return this.Create(TypeClone.Clone(anyOf[0], options)); + const clonedAnyOf = anyOf.map((schema) => TypeClone.Clone(schema, {})); + return this.Create({ ...options, [exports.Kind]: 'Union', anyOf: clonedAnyOf }); + } + } + /** `[Standard]` Creates an Unknown type */ + Unknown(options = {}) { + return this.Create({ ...options, [exports.Kind]: 'Unknown' }); + } + /** `[Standard]` Creates a Unsafe type that infers for the generic argument */ + Unsafe(options = {}) { + return this.Create({ ...options, [exports.Kind]: options[exports.Kind] || 'Unsafe' }); + } +} +exports.StandardTypeBuilder = StandardTypeBuilder; +// -------------------------------------------------------------------------- +// ExtendedTypeBuilder +// -------------------------------------------------------------------------- +class ExtendedTypeBuilder extends StandardTypeBuilder { + /** `[Extended]` Creates a BigInt type */ + BigInt(options = {}) { + return this.Create({ ...options, [exports.Kind]: 'BigInt', type: 'null', typeOf: 'BigInt' }); + } + /** `[Extended]` Extracts the ConstructorParameters from the given Constructor type */ + ConstructorParameters(schema, options = {}) { + return this.Tuple([...schema.parameters], { ...options }); + } + Constructor(parameters, returns, options = {}) { + const clonedReturns = TypeClone.Clone(returns, {}); + if (TypeGuard.TTuple(parameters)) { + const clonedParameters = parameters.items === undefined ? [] : parameters.items.map((parameter) => TypeClone.Clone(parameter, {})); + return this.Create({ ...options, [exports.Kind]: 'Constructor', type: 'object', instanceOf: 'Constructor', parameters: clonedParameters, returns: clonedReturns }); + } + else if (globalThis.Array.isArray(parameters)) { + const clonedParameters = parameters.map((parameter) => TypeClone.Clone(parameter, {})); + return this.Create({ ...options, [exports.Kind]: 'Constructor', type: 'object', instanceOf: 'Constructor', parameters: clonedParameters, returns: clonedReturns }); + } + else { + throw new Error('ExtendedTypeBuilder.Constructor: Invalid parameters'); + } + } + /** `[Extended]` Creates a Date type */ + Date(options = {}) { + return this.Create({ ...options, [exports.Kind]: 'Date', type: 'object', instanceOf: 'Date' }); + } + Function(parameters, returns, options = {}) { + const clonedReturns = TypeClone.Clone(returns, {}); + if (TypeGuard.TTuple(parameters)) { + const clonedParameters = parameters.items === undefined ? [] : parameters.items.map((parameter) => TypeClone.Clone(parameter, {})); + return this.Create({ ...options, [exports.Kind]: 'Function', type: 'object', instanceOf: 'Function', parameters: clonedParameters, returns: clonedReturns }); + } + else if (globalThis.Array.isArray(parameters)) { + const clonedParameters = parameters.map((parameter) => TypeClone.Clone(parameter, {})); + return this.Create({ ...options, [exports.Kind]: 'Function', type: 'object', instanceOf: 'Function', parameters: clonedParameters, returns: clonedReturns }); + } + else { + throw new Error('ExtendedTypeBuilder.Function: Invalid parameters'); + } + } + /** `[Extended]` Extracts the InstanceType from the given Constructor */ + InstanceType(schema, options = {}) { + return TypeClone.Clone(schema.returns, options); + } + /** `[Extended]` Extracts the Parameters from the given Function type */ + Parameters(schema, options = {}) { + return this.Tuple(schema.parameters, { ...options }); + } + /** `[Extended]` Creates a Promise type */ + Promise(item, options = {}) { + return this.Create({ ...options, [exports.Kind]: 'Promise', type: 'object', instanceOf: 'Promise', item: TypeClone.Clone(item, {}) }); + } + /** `[Extended]` Creates a regular expression type */ + RegEx(regex, options = {}) { + return this.Create({ ...options, [exports.Kind]: 'String', type: 'string', pattern: regex.source }); + } + /** `[Extended]` Extracts the ReturnType from the given Function */ + ReturnType(schema, options = {}) { + return TypeClone.Clone(schema.returns, options); + } + /** `[Extended]` Creates a Symbol type */ + Symbol(options) { + return this.Create({ ...options, [exports.Kind]: 'Symbol', type: 'null', typeOf: 'Symbol' }); + } + /** `[Extended]` Creates a Undefined type */ + Undefined(options = {}) { + return this.Create({ ...options, [exports.Kind]: 'Undefined', type: 'null', typeOf: 'Undefined' }); + } + /** `[Extended]` Creates a Uint8Array type */ + Uint8Array(options = {}) { + return this.Create({ ...options, [exports.Kind]: 'Uint8Array', type: 'object', instanceOf: 'Uint8Array' }); + } + /** `[Extended]` Creates a Void type */ + Void(options = {}) { + return this.Create({ ...options, [exports.Kind]: 'Void', type: 'null', typeOf: 'Void' }); + } +} +exports.ExtendedTypeBuilder = ExtendedTypeBuilder; +/** JSON Schema TypeBuilder with Static Resolution for TypeScript */ +exports.StandardType = new StandardTypeBuilder(); +/** JSON Schema TypeBuilder with Static Resolution for TypeScript */ +exports.Type = new ExtendedTypeBuilder(); diff --git a/node_modules/@sinclair/typebox/value/cast.d.ts b/node_modules/@sinclair/typebox/value/cast.d.ts new file mode 100644 index 00000000..992d9e3f --- /dev/null +++ b/node_modules/@sinclair/typebox/value/cast.d.ts @@ -0,0 +1,30 @@ +import * as Types from '../typebox'; +export declare class ValueCastReferenceTypeError extends Error { + readonly schema: Types.TRef | Types.TThis; + constructor(schema: Types.TRef | Types.TThis); +} +export declare class ValueCastArrayUniqueItemsTypeError extends Error { + readonly schema: Types.TSchema; + readonly value: unknown; + constructor(schema: Types.TSchema, value: unknown); +} +export declare class ValueCastNeverTypeError extends Error { + readonly schema: Types.TSchema; + constructor(schema: Types.TSchema); +} +export declare class ValueCastRecursiveTypeError extends Error { + readonly schema: Types.TSchema; + constructor(schema: Types.TSchema); +} +export declare class ValueCastUnknownTypeError extends Error { + readonly schema: Types.TSchema; + constructor(schema: Types.TSchema); +} +export declare class ValueCastDereferenceError extends Error { + readonly schema: Types.TRef | Types.TThis; + constructor(schema: Types.TRef | Types.TThis); +} +export declare namespace ValueCast { + function Visit(schema: Types.TSchema, references: Types.TSchema[], value: any): any; + function Cast(schema: T, references: Types.TSchema[], value: any): Types.Static; +} diff --git a/node_modules/@sinclair/typebox/value/cast.js b/node_modules/@sinclair/typebox/value/cast.js new file mode 100644 index 00000000..42fe2e14 --- /dev/null +++ b/node_modules/@sinclair/typebox/value/cast.js @@ -0,0 +1,372 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/value + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValueCast = exports.ValueCastDereferenceError = exports.ValueCastUnknownTypeError = exports.ValueCastRecursiveTypeError = exports.ValueCastNeverTypeError = exports.ValueCastArrayUniqueItemsTypeError = exports.ValueCastReferenceTypeError = void 0; +const Types = require("../typebox"); +const create_1 = require("./create"); +const check_1 = require("./check"); +const clone_1 = require("./clone"); +// ---------------------------------------------------------------------------------------------- +// Errors +// ---------------------------------------------------------------------------------------------- +class ValueCastReferenceTypeError extends Error { + constructor(schema) { + super(`ValueCast: Cannot locate referenced schema with $id '${schema.$ref}'`); + this.schema = schema; + } +} +exports.ValueCastReferenceTypeError = ValueCastReferenceTypeError; +class ValueCastArrayUniqueItemsTypeError extends Error { + constructor(schema, value) { + super('ValueCast: Array cast produced invalid data due to uniqueItems constraint'); + this.schema = schema; + this.value = value; + } +} +exports.ValueCastArrayUniqueItemsTypeError = ValueCastArrayUniqueItemsTypeError; +class ValueCastNeverTypeError extends Error { + constructor(schema) { + super('ValueCast: Never types cannot be cast'); + this.schema = schema; + } +} +exports.ValueCastNeverTypeError = ValueCastNeverTypeError; +class ValueCastRecursiveTypeError extends Error { + constructor(schema) { + super('ValueCast.Recursive: Cannot cast recursive schemas'); + this.schema = schema; + } +} +exports.ValueCastRecursiveTypeError = ValueCastRecursiveTypeError; +class ValueCastUnknownTypeError extends Error { + constructor(schema) { + super('ValueCast: Unknown type'); + this.schema = schema; + } +} +exports.ValueCastUnknownTypeError = ValueCastUnknownTypeError; +class ValueCastDereferenceError extends Error { + constructor(schema) { + super(`ValueCast: Unable to dereference schema with $id '${schema.$ref}'`); + this.schema = schema; + } +} +exports.ValueCastDereferenceError = ValueCastDereferenceError; +// ---------------------------------------------------------------------------------------------- +// The following will score a schema against a value. For objects, the score is the tally of +// points awarded for each property of the value. Property points are (1.0 / propertyCount) +// to prevent large property counts biasing results. Properties that match literal values are +// maximally awarded as literals are typically used as union discriminator fields. +// ---------------------------------------------------------------------------------------------- +var UnionCastCreate; +(function (UnionCastCreate) { + function Score(schema, references, value) { + if (schema[Types.Kind] === 'Object' && typeof value === 'object' && value !== null) { + const object = schema; + const keys = Object.keys(value); + const entries = globalThis.Object.entries(object.properties); + const [point, max] = [1 / entries.length, entries.length]; + return entries.reduce((acc, [key, schema]) => { + const literal = schema[Types.Kind] === 'Literal' && schema.const === value[key] ? max : 0; + const checks = check_1.ValueCheck.Check(schema, references, value[key]) ? point : 0; + const exists = keys.includes(key) ? point : 0; + return acc + (literal + checks + exists); + }, 0); + } + else { + return check_1.ValueCheck.Check(schema, references, value) ? 1 : 0; + } + } + function Select(union, references, value) { + let [select, best] = [union.anyOf[0], 0]; + for (const schema of union.anyOf) { + const score = Score(schema, references, value); + if (score > best) { + select = schema; + best = score; + } + } + return select; + } + function Create(union, references, value) { + if (union.default !== undefined) { + return union.default; + } + else { + const schema = Select(union, references, value); + return ValueCast.Cast(schema, references, value); + } + } + UnionCastCreate.Create = Create; +})(UnionCastCreate || (UnionCastCreate = {})); +var ValueCast; +(function (ValueCast) { + // ---------------------------------------------------------------------------------------------- + // Guards + // ---------------------------------------------------------------------------------------------- + function IsObject(value) { + return typeof value === 'object' && value !== null && !globalThis.Array.isArray(value); + } + function IsArray(value) { + return typeof value === 'object' && globalThis.Array.isArray(value); + } + function IsNumber(value) { + return typeof value === 'number' && !isNaN(value); + } + function IsString(value) { + return typeof value === 'string'; + } + // ---------------------------------------------------------------------------------------------- + // Cast + // ---------------------------------------------------------------------------------------------- + function Any(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references); + } + function Array(schema, references, value) { + if (check_1.ValueCheck.Check(schema, references, value)) + return clone_1.ValueClone.Clone(value); + const created = IsArray(value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references); + const minimum = IsNumber(schema.minItems) && created.length < schema.minItems ? [...created, ...globalThis.Array.from({ length: schema.minItems - created.length }, () => null)] : created; + const maximum = IsNumber(schema.maxItems) && minimum.length > schema.maxItems ? minimum.slice(0, schema.maxItems) : minimum; + const casted = maximum.map((value) => Visit(schema.items, references, value)); + if (schema.uniqueItems !== true) + return casted; + const unique = [...new Set(casted)]; + if (!check_1.ValueCheck.Check(schema, references, unique)) + throw new ValueCastArrayUniqueItemsTypeError(schema, unique); + return unique; + } + function BigInt(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references); + } + function Boolean(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references); + } + function Constructor(schema, references, value) { + if (check_1.ValueCheck.Check(schema, references, value)) + return create_1.ValueCreate.Create(schema, references); + const required = new Set(schema.returns.required || []); + const result = function () { }; + for (const [key, property] of globalThis.Object.entries(schema.returns.properties)) { + if (!required.has(key) && value.prototype[key] === undefined) + continue; + result.prototype[key] = Visit(property, references, value.prototype[key]); + } + return result; + } + function Date(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references); + } + function Function(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references); + } + function Integer(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references); + } + function Intersect(schema, references, value) { + const created = create_1.ValueCreate.Create(schema, references); + const mapped = IsObject(created) && IsObject(value) ? { ...created, ...value } : value; + return check_1.ValueCheck.Check(schema, references, mapped) ? mapped : create_1.ValueCreate.Create(schema, references); + } + function Literal(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references); + } + function Never(schema, references, value) { + throw new ValueCastNeverTypeError(schema); + } + function Not(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema.allOf[1], references); + } + function Null(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references); + } + function Number(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references); + } + function Object(schema, references, value) { + if (check_1.ValueCheck.Check(schema, references, value)) + return value; + if (value === null || typeof value !== 'object') + return create_1.ValueCreate.Create(schema, references); + const required = new Set(schema.required || []); + const result = {}; + for (const [key, property] of globalThis.Object.entries(schema.properties)) { + if (!required.has(key) && value[key] === undefined) + continue; + result[key] = Visit(property, references, value[key]); + } + // additional schema properties + if (typeof schema.additionalProperties === 'object') { + const propertyNames = globalThis.Object.getOwnPropertyNames(schema.properties); + for (const propertyName of globalThis.Object.getOwnPropertyNames(value)) { + if (propertyNames.includes(propertyName)) + continue; + result[propertyName] = Visit(schema.additionalProperties, references, value[propertyName]); + } + } + return result; + } + function Promise(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references); + } + function Record(schema, references, value) { + if (check_1.ValueCheck.Check(schema, references, value)) + return clone_1.ValueClone.Clone(value); + if (value === null || typeof value !== 'object' || globalThis.Array.isArray(value) || value instanceof globalThis.Date) + return create_1.ValueCreate.Create(schema, references); + const subschemaPropertyName = globalThis.Object.getOwnPropertyNames(schema.patternProperties)[0]; + const subschema = schema.patternProperties[subschemaPropertyName]; + const result = {}; + for (const [propKey, propValue] of globalThis.Object.entries(value)) { + result[propKey] = Visit(subschema, references, propValue); + } + return result; + } + function Ref(schema, references, value) { + const index = references.findIndex((foreign) => foreign.$id === schema.$ref); + if (index === -1) + throw new ValueCastDereferenceError(schema); + const target = references[index]; + return Visit(target, references, value); + } + function String(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? value : create_1.ValueCreate.Create(schema, references); + } + function Symbol(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references); + } + function TemplateLiteral(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references); + } + function This(schema, references, value) { + const index = references.findIndex((foreign) => foreign.$id === schema.$ref); + if (index === -1) + throw new ValueCastDereferenceError(schema); + const target = references[index]; + return Visit(target, references, value); + } + function Tuple(schema, references, value) { + if (check_1.ValueCheck.Check(schema, references, value)) + return clone_1.ValueClone.Clone(value); + if (!globalThis.Array.isArray(value)) + return create_1.ValueCreate.Create(schema, references); + if (schema.items === undefined) + return []; + return schema.items.map((schema, index) => Visit(schema, references, value[index])); + } + function Undefined(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references); + } + function Union(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : UnionCastCreate.Create(schema, references, value); + } + function Uint8Array(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references); + } + function Unknown(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references); + } + function Void(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references); + } + function UserDefined(schema, references, value) { + return check_1.ValueCheck.Check(schema, references, value) ? clone_1.ValueClone.Clone(value) : create_1.ValueCreate.Create(schema, references); + } + function Visit(schema, references, value) { + const references_ = IsString(schema.$id) ? [...references, schema] : references; + const schema_ = schema; + switch (schema[Types.Kind]) { + case 'Any': + return Any(schema_, references_, value); + case 'Array': + return Array(schema_, references_, value); + case 'BigInt': + return BigInt(schema_, references_, value); + case 'Boolean': + return Boolean(schema_, references_, value); + case 'Constructor': + return Constructor(schema_, references_, value); + case 'Date': + return Date(schema_, references_, value); + case 'Function': + return Function(schema_, references_, value); + case 'Integer': + return Integer(schema_, references_, value); + case 'Intersect': + return Intersect(schema_, references_, value); + case 'Literal': + return Literal(schema_, references_, value); + case 'Never': + return Never(schema_, references_, value); + case 'Not': + return Not(schema_, references_, value); + case 'Null': + return Null(schema_, references_, value); + case 'Number': + return Number(schema_, references_, value); + case 'Object': + return Object(schema_, references_, value); + case 'Promise': + return Promise(schema_, references_, value); + case 'Record': + return Record(schema_, references_, value); + case 'Ref': + return Ref(schema_, references_, value); + case 'String': + return String(schema_, references_, value); + case 'Symbol': + return Symbol(schema_, references_, value); + case 'TemplateLiteral': + return TemplateLiteral(schema_, references_, value); + case 'This': + return This(schema_, references_, value); + case 'Tuple': + return Tuple(schema_, references_, value); + case 'Undefined': + return Undefined(schema_, references_, value); + case 'Union': + return Union(schema_, references_, value); + case 'Uint8Array': + return Uint8Array(schema_, references_, value); + case 'Unknown': + return Unknown(schema_, references_, value); + case 'Void': + return Void(schema_, references_, value); + default: + if (!Types.TypeRegistry.Has(schema_[Types.Kind])) + throw new ValueCastUnknownTypeError(schema_); + return UserDefined(schema_, references_, value); + } + } + ValueCast.Visit = Visit; + function Cast(schema, references, value) { + return Visit(schema, references, clone_1.ValueClone.Clone(value)); + } + ValueCast.Cast = Cast; +})(ValueCast = exports.ValueCast || (exports.ValueCast = {})); diff --git a/node_modules/@sinclair/typebox/value/check.d.ts b/node_modules/@sinclair/typebox/value/check.d.ts new file mode 100644 index 00000000..ee18d9b0 --- /dev/null +++ b/node_modules/@sinclair/typebox/value/check.d.ts @@ -0,0 +1,12 @@ +import * as Types from '../typebox'; +export declare class ValueCheckUnknownTypeError extends Error { + readonly schema: Types.TSchema; + constructor(schema: Types.TSchema); +} +export declare class ValueCheckDereferenceError extends Error { + readonly schema: Types.TRef | Types.TThis; + constructor(schema: Types.TRef | Types.TThis); +} +export declare namespace ValueCheck { + function Check(schema: T, references: Types.TSchema[], value: any): boolean; +} diff --git a/node_modules/@sinclair/typebox/value/check.js b/node_modules/@sinclair/typebox/value/check.js new file mode 100644 index 00000000..833aa648 --- /dev/null +++ b/node_modules/@sinclair/typebox/value/check.js @@ -0,0 +1,484 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/value + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValueCheck = exports.ValueCheckDereferenceError = exports.ValueCheckUnknownTypeError = void 0; +const Types = require("../typebox"); +const index_1 = require("../system/index"); +const hash_1 = require("./hash"); +// ------------------------------------------------------------------------- +// Errors +// ------------------------------------------------------------------------- +class ValueCheckUnknownTypeError extends Error { + constructor(schema) { + super(`ValueCheck: ${schema[Types.Kind] ? `Unknown type '${schema[Types.Kind]}'` : 'Unknown type'}`); + this.schema = schema; + } +} +exports.ValueCheckUnknownTypeError = ValueCheckUnknownTypeError; +class ValueCheckDereferenceError extends Error { + constructor(schema) { + super(`ValueCheck: Unable to dereference schema with $id '${schema.$ref}'`); + this.schema = schema; + } +} +exports.ValueCheckDereferenceError = ValueCheckDereferenceError; +var ValueCheck; +(function (ValueCheck) { + // ---------------------------------------------------------------------- + // Guards + // ---------------------------------------------------------------------- + function IsBigInt(value) { + return typeof value === 'bigint'; + } + function IsInteger(value) { + return globalThis.Number.isInteger(value); + } + function IsString(value) { + return typeof value === 'string'; + } + function IsDefined(value) { + return value !== undefined; + } + // ---------------------------------------------------------------------- + // Policies + // ---------------------------------------------------------------------- + function IsExactOptionalProperty(value, key) { + return index_1.TypeSystem.ExactOptionalPropertyTypes ? key in value : value[key] !== undefined; + } + function IsObject(value) { + const result = typeof value === 'object' && value !== null; + return index_1.TypeSystem.AllowArrayObjects ? result : result && !globalThis.Array.isArray(value); + } + function IsRecordObject(value) { + return IsObject(value) && !(value instanceof globalThis.Date) && !(value instanceof globalThis.Uint8Array); + } + function IsNumber(value) { + const result = typeof value === 'number'; + return index_1.TypeSystem.AllowNaN ? result : result && globalThis.Number.isFinite(value); + } + function IsVoid(value) { + const result = value === undefined; + return index_1.TypeSystem.AllowVoidNull ? result || value === null : result; + } + // ---------------------------------------------------------------------- + // Types + // ---------------------------------------------------------------------- + function Any(schema, references, value) { + return true; + } + function Array(schema, references, value) { + if (!globalThis.Array.isArray(value)) { + return false; + } + if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) { + return false; + } + if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) { + return false; + } + // prettier-ignore + if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) { + const hashed = hash_1.ValueHash.Create(element); + if (set.has(hashed)) { + return false; + } + else { + set.add(hashed); + } + } return true; })())) { + return false; + } + return value.every((value) => Visit(schema.items, references, value)); + } + function BigInt(schema, references, value) { + if (!IsBigInt(value)) { + return false; + } + if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === globalThis.BigInt(0))) { + return false; + } + if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { + return false; + } + if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { + return false; + } + if (IsDefined(schema.minimum) && !(value >= schema.minimum)) { + return false; + } + if (IsDefined(schema.maximum) && !(value <= schema.maximum)) { + return false; + } + return true; + } + function Boolean(schema, references, value) { + return typeof value === 'boolean'; + } + function Constructor(schema, references, value) { + return Visit(schema.returns, references, value.prototype); + } + function Date(schema, references, value) { + if (!(value instanceof globalThis.Date)) { + return false; + } + if (!IsNumber(value.getTime())) { + return false; + } + if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) { + return false; + } + if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) { + return false; + } + if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) { + return false; + } + if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) { + return false; + } + return true; + } + function Function(schema, references, value) { + return typeof value === 'function'; + } + function Integer(schema, references, value) { + if (!IsInteger(value)) { + return false; + } + if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) { + return false; + } + if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { + return false; + } + if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { + return false; + } + if (IsDefined(schema.minimum) && !(value >= schema.minimum)) { + return false; + } + if (IsDefined(schema.maximum) && !(value <= schema.maximum)) { + return false; + } + return true; + } + function Intersect(schema, references, value) { + if (!schema.allOf.every((schema) => Visit(schema, references, value))) { + return false; + } + else if (schema.unevaluatedProperties === false) { + const schemaKeys = Types.KeyResolver.Resolve(schema); + const valueKeys = globalThis.Object.getOwnPropertyNames(value); + return valueKeys.every((key) => schemaKeys.includes(key)); + } + else if (Types.TypeGuard.TSchema(schema.unevaluatedProperties)) { + const schemaKeys = Types.KeyResolver.Resolve(schema); + const valueKeys = globalThis.Object.getOwnPropertyNames(value); + return valueKeys.every((key) => schemaKeys.includes(key) || Visit(schema.unevaluatedProperties, references, value[key])); + } + else { + return true; + } + } + function Literal(schema, references, value) { + return value === schema.const; + } + function Never(schema, references, value) { + return false; + } + function Not(schema, references, value) { + return !Visit(schema.allOf[0].not, references, value) && Visit(schema.allOf[1], references, value); + } + function Null(schema, references, value) { + return value === null; + } + function Number(schema, references, value) { + if (!IsNumber(value)) { + return false; + } + if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) { + return false; + } + if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { + return false; + } + if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { + return false; + } + if (IsDefined(schema.minimum) && !(value >= schema.minimum)) { + return false; + } + if (IsDefined(schema.maximum) && !(value <= schema.maximum)) { + return false; + } + return true; + } + function Object(schema, references, value) { + if (!IsObject(value)) { + return false; + } + if (IsDefined(schema.minProperties) && !(globalThis.Object.getOwnPropertyNames(value).length >= schema.minProperties)) { + return false; + } + if (IsDefined(schema.maxProperties) && !(globalThis.Object.getOwnPropertyNames(value).length <= schema.maxProperties)) { + return false; + } + const knownKeys = globalThis.Object.getOwnPropertyNames(schema.properties); + for (const knownKey of knownKeys) { + const property = schema.properties[knownKey]; + if (schema.required && schema.required.includes(knownKey)) { + if (!Visit(property, references, value[knownKey])) { + return false; + } + if (Types.ExtendsUndefined.Check(property)) { + return knownKey in value; + } + } + else { + if (IsExactOptionalProperty(value, knownKey) && !Visit(property, references, value[knownKey])) { + return false; + } + } + } + if (schema.additionalProperties === false) { + const valueKeys = globalThis.Object.getOwnPropertyNames(value); + // optimization: value is valid if schemaKey length matches the valueKey length + if (schema.required && schema.required.length === knownKeys.length && valueKeys.length === knownKeys.length) { + return true; + } + else { + return valueKeys.every((valueKey) => knownKeys.includes(valueKey)); + } + } + else if (typeof schema.additionalProperties === 'object') { + const valueKeys = globalThis.Object.getOwnPropertyNames(value); + return valueKeys.every((key) => knownKeys.includes(key) || Visit(schema.additionalProperties, references, value[key])); + } + else { + return true; + } + } + function Promise(schema, references, value) { + return typeof value === 'object' && typeof value.then === 'function'; + } + function Record(schema, references, value) { + if (!IsRecordObject(value)) { + return false; + } + if (IsDefined(schema.minProperties) && !(globalThis.Object.getOwnPropertyNames(value).length >= schema.minProperties)) { + return false; + } + if (IsDefined(schema.maxProperties) && !(globalThis.Object.getOwnPropertyNames(value).length <= schema.maxProperties)) { + return false; + } + const [keyPattern, valueSchema] = globalThis.Object.entries(schema.patternProperties)[0]; + const regex = new RegExp(keyPattern); + if (!globalThis.Object.getOwnPropertyNames(value).every((key) => regex.test(key))) { + return false; + } + for (const propValue of globalThis.Object.values(value)) { + if (!Visit(valueSchema, references, propValue)) + return false; + } + return true; + } + function Ref(schema, references, value) { + const index = references.findIndex((foreign) => foreign.$id === schema.$ref); + if (index === -1) + throw new ValueCheckDereferenceError(schema); + const target = references[index]; + return Visit(target, references, value); + } + function String(schema, references, value) { + if (!IsString(value)) { + return false; + } + if (IsDefined(schema.minLength)) { + if (!(value.length >= schema.minLength)) + return false; + } + if (IsDefined(schema.maxLength)) { + if (!(value.length <= schema.maxLength)) + return false; + } + if (IsDefined(schema.pattern)) { + const regex = new RegExp(schema.pattern); + if (!regex.test(value)) + return false; + } + if (IsDefined(schema.format)) { + if (!Types.FormatRegistry.Has(schema.format)) + return false; + const func = Types.FormatRegistry.Get(schema.format); + return func(value); + } + return true; + } + function Symbol(schema, references, value) { + if (!(typeof value === 'symbol')) { + return false; + } + return true; + } + function TemplateLiteral(schema, references, value) { + if (!IsString(value)) { + return false; + } + return new RegExp(schema.pattern).test(value); + } + function This(schema, references, value) { + const index = references.findIndex((foreign) => foreign.$id === schema.$ref); + if (index === -1) + throw new ValueCheckDereferenceError(schema); + const target = references[index]; + return Visit(target, references, value); + } + function Tuple(schema, references, value) { + if (!globalThis.Array.isArray(value)) { + return false; + } + if (schema.items === undefined && !(value.length === 0)) { + return false; + } + if (!(value.length === schema.maxItems)) { + return false; + } + if (!schema.items) { + return true; + } + for (let i = 0; i < schema.items.length; i++) { + if (!Visit(schema.items[i], references, value[i])) + return false; + } + return true; + } + function Undefined(schema, references, value) { + return value === undefined; + } + function Union(schema, references, value) { + return schema.anyOf.some((inner) => Visit(inner, references, value)); + } + function Uint8Array(schema, references, value) { + if (!(value instanceof globalThis.Uint8Array)) { + return false; + } + if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) { + return false; + } + if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) { + return false; + } + return true; + } + function Unknown(schema, references, value) { + return true; + } + function Void(schema, references, value) { + return IsVoid(value); + } + function UserDefined(schema, references, value) { + if (!Types.TypeRegistry.Has(schema[Types.Kind])) + return false; + const func = Types.TypeRegistry.Get(schema[Types.Kind]); + return func(schema, value); + } + function Visit(schema, references, value) { + const references_ = IsDefined(schema.$id) ? [...references, schema] : references; + const schema_ = schema; + switch (schema_[Types.Kind]) { + case 'Any': + return Any(schema_, references_, value); + case 'Array': + return Array(schema_, references_, value); + case 'BigInt': + return BigInt(schema_, references_, value); + case 'Boolean': + return Boolean(schema_, references_, value); + case 'Constructor': + return Constructor(schema_, references_, value); + case 'Date': + return Date(schema_, references_, value); + case 'Function': + return Function(schema_, references_, value); + case 'Integer': + return Integer(schema_, references_, value); + case 'Intersect': + return Intersect(schema_, references_, value); + case 'Literal': + return Literal(schema_, references_, value); + case 'Never': + return Never(schema_, references_, value); + case 'Not': + return Not(schema_, references_, value); + case 'Null': + return Null(schema_, references_, value); + case 'Number': + return Number(schema_, references_, value); + case 'Object': + return Object(schema_, references_, value); + case 'Promise': + return Promise(schema_, references_, value); + case 'Record': + return Record(schema_, references_, value); + case 'Ref': + return Ref(schema_, references_, value); + case 'String': + return String(schema_, references_, value); + case 'Symbol': + return Symbol(schema_, references_, value); + case 'TemplateLiteral': + return TemplateLiteral(schema_, references_, value); + case 'This': + return This(schema_, references_, value); + case 'Tuple': + return Tuple(schema_, references_, value); + case 'Undefined': + return Undefined(schema_, references_, value); + case 'Union': + return Union(schema_, references_, value); + case 'Uint8Array': + return Uint8Array(schema_, references_, value); + case 'Unknown': + return Unknown(schema_, references_, value); + case 'Void': + return Void(schema_, references_, value); + default: + if (!Types.TypeRegistry.Has(schema_[Types.Kind])) + throw new ValueCheckUnknownTypeError(schema_); + return UserDefined(schema_, references_, value); + } + } + // ------------------------------------------------------------------------- + // Check + // ------------------------------------------------------------------------- + function Check(schema, references, value) { + return Visit(schema, references, value); + } + ValueCheck.Check = Check; +})(ValueCheck = exports.ValueCheck || (exports.ValueCheck = {})); diff --git a/node_modules/@sinclair/typebox/value/clone.d.ts b/node_modules/@sinclair/typebox/value/clone.d.ts new file mode 100644 index 00000000..5ca0adf1 --- /dev/null +++ b/node_modules/@sinclair/typebox/value/clone.d.ts @@ -0,0 +1,3 @@ +export declare namespace ValueClone { + function Clone(value: T): T; +} diff --git a/node_modules/@sinclair/typebox/value/clone.js b/node_modules/@sinclair/typebox/value/clone.js new file mode 100644 index 00000000..75e2685c --- /dev/null +++ b/node_modules/@sinclair/typebox/value/clone.js @@ -0,0 +1,71 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/value + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValueClone = void 0; +const is_1 = require("./is"); +var ValueClone; +(function (ValueClone) { + function Array(value) { + return value.map((element) => Clone(element)); + } + function Date(value) { + return new globalThis.Date(value.toISOString()); + } + function Object(value) { + const keys = [...globalThis.Object.keys(value), ...globalThis.Object.getOwnPropertySymbols(value)]; + return keys.reduce((acc, key) => ({ ...acc, [key]: Clone(value[key]) }), {}); + } + function TypedArray(value) { + return value.slice(); + } + function Value(value) { + return value; + } + function Clone(value) { + if (is_1.Is.Date(value)) { + return Date(value); + } + else if (is_1.Is.Object(value)) { + return Object(value); + } + else if (is_1.Is.Array(value)) { + return Array(value); + } + else if (is_1.Is.TypedArray(value)) { + return TypedArray(value); + } + else if (is_1.Is.Value(value)) { + return Value(value); + } + else { + throw new Error('ValueClone: Unable to clone value'); + } + } + ValueClone.Clone = Clone; +})(ValueClone = exports.ValueClone || (exports.ValueClone = {})); diff --git a/node_modules/@sinclair/typebox/value/convert.d.ts b/node_modules/@sinclair/typebox/value/convert.d.ts new file mode 100644 index 00000000..99c5d5d3 --- /dev/null +++ b/node_modules/@sinclair/typebox/value/convert.d.ts @@ -0,0 +1,13 @@ +import * as Types from '../typebox'; +export declare class ValueConvertUnknownTypeError extends Error { + readonly schema: Types.TSchema; + constructor(schema: Types.TSchema); +} +export declare class ValueConvertDereferenceError extends Error { + readonly schema: Types.TRef | Types.TThis; + constructor(schema: Types.TRef | Types.TThis); +} +export declare namespace ValueConvert { + function Visit(schema: Types.TSchema, references: Types.TSchema[], value: any): unknown; + function Convert(schema: T, references: Types.TSchema[], value: any): unknown; +} diff --git a/node_modules/@sinclair/typebox/value/convert.js b/node_modules/@sinclair/typebox/value/convert.js new file mode 100644 index 00000000..70df03bb --- /dev/null +++ b/node_modules/@sinclair/typebox/value/convert.js @@ -0,0 +1,372 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/value + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValueConvert = exports.ValueConvertDereferenceError = exports.ValueConvertUnknownTypeError = void 0; +const Types = require("../typebox"); +const clone_1 = require("./clone"); +const check_1 = require("./check"); +// ---------------------------------------------------------------------------------------------- +// Errors +// ---------------------------------------------------------------------------------------------- +class ValueConvertUnknownTypeError extends Error { + constructor(schema) { + super('ValueConvert: Unknown type'); + this.schema = schema; + } +} +exports.ValueConvertUnknownTypeError = ValueConvertUnknownTypeError; +class ValueConvertDereferenceError extends Error { + constructor(schema) { + super(`ValueConvert: Unable to dereference schema with $id '${schema.$ref}'`); + this.schema = schema; + } +} +exports.ValueConvertDereferenceError = ValueConvertDereferenceError; +var ValueConvert; +(function (ValueConvert) { + // ---------------------------------------------------------------------------------------------- + // Guards + // ---------------------------------------------------------------------------------------------- + function IsObject(value) { + return typeof value === 'object' && value !== null && !globalThis.Array.isArray(value); + } + function IsArray(value) { + return typeof value === 'object' && globalThis.Array.isArray(value); + } + function IsDate(value) { + return typeof value === 'object' && value instanceof globalThis.Date; + } + function IsSymbol(value) { + return typeof value === 'symbol'; + } + function IsString(value) { + return typeof value === 'string'; + } + function IsBoolean(value) { + return typeof value === 'boolean'; + } + function IsBigInt(value) { + return typeof value === 'bigint'; + } + function IsNumber(value) { + return typeof value === 'number' && !isNaN(value); + } + function IsStringNumeric(value) { + return IsString(value) && !isNaN(value) && !isNaN(parseFloat(value)); + } + function IsValueToString(value) { + return IsBigInt(value) || IsBoolean(value) || IsNumber(value); + } + function IsValueTrue(value) { + return value === true || (IsNumber(value) && value === 1) || (IsBigInt(value) && value === globalThis.BigInt('1')) || (IsString(value) && (value.toLowerCase() === 'true' || value === '1')); + } + function IsValueFalse(value) { + return value === false || (IsNumber(value) && value === 0) || (IsBigInt(value) && value === globalThis.BigInt('0')) || (IsString(value) && (value.toLowerCase() === 'false' || value === '0')); + } + function IsTimeStringWithTimeZone(value) { + return IsString(value) && /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(value); + } + function IsTimeStringWithoutTimeZone(value) { + return IsString(value) && /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(value); + } + function IsDateTimeStringWithTimeZone(value) { + return IsString(value) && /^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(value); + } + function IsDateTimeStringWithoutTimeZone(value) { + return IsString(value) && /^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(value); + } + function IsDateString(value) { + return IsString(value) && /^\d\d\d\d-[0-1]\d-[0-3]\d$/i.test(value); + } + // ---------------------------------------------------------------------------------------------- + // Convert + // ---------------------------------------------------------------------------------------------- + function TryConvertLiteralString(value, target) { + const conversion = TryConvertString(value); + return conversion === target ? conversion : value; + } + function TryConvertLiteralNumber(value, target) { + const conversion = TryConvertNumber(value); + return conversion === target ? conversion : value; + } + function TryConvertLiteralBoolean(value, target) { + const conversion = TryConvertBoolean(value); + return conversion === target ? conversion : value; + } + function TryConvertLiteral(schema, value) { + if (typeof schema.const === 'string') { + return TryConvertLiteralString(value, schema.const); + } + else if (typeof schema.const === 'number') { + return TryConvertLiteralNumber(value, schema.const); + } + else if (typeof schema.const === 'boolean') { + return TryConvertLiteralBoolean(value, schema.const); + } + else { + return clone_1.ValueClone.Clone(value); + } + } + function TryConvertBoolean(value) { + return IsValueTrue(value) ? true : IsValueFalse(value) ? false : value; + } + function TryConvertBigInt(value) { + return IsStringNumeric(value) ? globalThis.BigInt(parseInt(value)) : IsNumber(value) ? globalThis.BigInt(value | 0) : IsValueFalse(value) ? 0 : IsValueTrue(value) ? 1 : value; + } + function TryConvertString(value) { + return IsValueToString(value) ? value.toString() : IsSymbol(value) && value.description !== undefined ? value.description.toString() : value; + } + function TryConvertNumber(value) { + return IsStringNumeric(value) ? parseFloat(value) : IsValueTrue(value) ? 1 : IsValueFalse(value) ? 0 : value; + } + function TryConvertInteger(value) { + return IsStringNumeric(value) ? parseInt(value) : IsNumber(value) ? value | 0 : IsValueTrue(value) ? 1 : IsValueFalse(value) ? 0 : value; + } + function TryConvertNull(value) { + return IsString(value) && value.toLowerCase() === 'null' ? null : value; + } + function TryConvertUndefined(value) { + return IsString(value) && value === 'undefined' ? undefined : value; + } + function TryConvertDate(value) { + // note: this function may return an invalid dates for the regex tests + // above. Invalid dates will however be checked during the casting + // function and will return a epoch date if invalid. Consider better + // string parsing for the iso dates in future revisions. + return IsDate(value) + ? value + : IsNumber(value) + ? new globalThis.Date(value) + : IsValueTrue(value) + ? new globalThis.Date(1) + : IsValueFalse(value) + ? new globalThis.Date(0) + : IsStringNumeric(value) + ? new globalThis.Date(parseInt(value)) + : IsTimeStringWithoutTimeZone(value) + ? new globalThis.Date(`1970-01-01T${value}.000Z`) + : IsTimeStringWithTimeZone(value) + ? new globalThis.Date(`1970-01-01T${value}`) + : IsDateTimeStringWithoutTimeZone(value) + ? new globalThis.Date(`${value}.000Z`) + : IsDateTimeStringWithTimeZone(value) + ? new globalThis.Date(value) + : IsDateString(value) + ? new globalThis.Date(`${value}T00:00:00.000Z`) + : value; + } + // ---------------------------------------------------------------------------------------------- + // Cast + // ---------------------------------------------------------------------------------------------- + function Any(schema, references, value) { + return value; + } + function Array(schema, references, value) { + if (IsArray(value)) { + return value.map((value) => Visit(schema.items, references, value)); + } + return value; + } + function BigInt(schema, references, value) { + return TryConvertBigInt(value); + } + function Boolean(schema, references, value) { + return TryConvertBoolean(value); + } + function Constructor(schema, references, value) { + return clone_1.ValueClone.Clone(value); + } + function Date(schema, references, value) { + return TryConvertDate(value); + } + function Function(schema, references, value) { + return value; + } + function Integer(schema, references, value) { + return TryConvertInteger(value); + } + function Intersect(schema, references, value) { + return value; + } + function Literal(schema, references, value) { + return TryConvertLiteral(schema, value); + } + function Never(schema, references, value) { + return value; + } + function Null(schema, references, value) { + return TryConvertNull(value); + } + function Number(schema, references, value) { + return TryConvertNumber(value); + } + function Object(schema, references, value) { + if (IsObject(value)) + return globalThis.Object.keys(schema.properties).reduce((acc, key) => { + return value[key] !== undefined ? { ...acc, [key]: Visit(schema.properties[key], references, value[key]) } : { ...acc }; + }, value); + return value; + } + function Promise(schema, references, value) { + return value; + } + function Record(schema, references, value) { + const propertyKey = globalThis.Object.getOwnPropertyNames(schema.patternProperties)[0]; + const property = schema.patternProperties[propertyKey]; + const result = {}; + for (const [propKey, propValue] of globalThis.Object.entries(value)) { + result[propKey] = Visit(property, references, propValue); + } + return result; + } + function Ref(schema, references, value) { + const index = references.findIndex((foreign) => foreign.$id === schema.$ref); + if (index === -1) + throw new ValueConvertDereferenceError(schema); + const target = references[index]; + return Visit(target, references, value); + } + function String(schema, references, value) { + return TryConvertString(value); + } + function Symbol(schema, references, value) { + return value; + } + function TemplateLiteral(schema, references, value) { + return value; + } + function This(schema, references, value) { + const index = references.findIndex((foreign) => foreign.$id === schema.$ref); + if (index === -1) + throw new ValueConvertDereferenceError(schema); + const target = references[index]; + return Visit(target, references, value); + } + function Tuple(schema, references, value) { + if (IsArray(value) && schema.items !== undefined) { + return value.map((value, index) => { + return index < schema.items.length ? Visit(schema.items[index], references, value) : value; + }); + } + return value; + } + function Undefined(schema, references, value) { + return TryConvertUndefined(value); + } + function Union(schema, references, value) { + for (const subschema of schema.anyOf) { + const converted = Visit(subschema, references, value); + if (check_1.ValueCheck.Check(subschema, references, converted)) { + return converted; + } + } + return value; + } + function Uint8Array(schema, references, value) { + return value; + } + function Unknown(schema, references, value) { + return value; + } + function Void(schema, references, value) { + return value; + } + function UserDefined(schema, references, value) { + return value; + } + function Visit(schema, references, value) { + const references_ = IsString(schema.$id) ? [...references, schema] : references; + const schema_ = schema; + switch (schema[Types.Kind]) { + case 'Any': + return Any(schema_, references_, value); + case 'Array': + return Array(schema_, references_, value); + case 'BigInt': + return BigInt(schema_, references_, value); + case 'Boolean': + return Boolean(schema_, references_, value); + case 'Constructor': + return Constructor(schema_, references_, value); + case 'Date': + return Date(schema_, references_, value); + case 'Function': + return Function(schema_, references_, value); + case 'Integer': + return Integer(schema_, references_, value); + case 'Intersect': + return Intersect(schema_, references_, value); + case 'Literal': + return Literal(schema_, references_, value); + case 'Never': + return Never(schema_, references_, value); + case 'Null': + return Null(schema_, references_, value); + case 'Number': + return Number(schema_, references_, value); + case 'Object': + return Object(schema_, references_, value); + case 'Promise': + return Promise(schema_, references_, value); + case 'Record': + return Record(schema_, references_, value); + case 'Ref': + return Ref(schema_, references_, value); + case 'String': + return String(schema_, references_, value); + case 'Symbol': + return Symbol(schema_, references_, value); + case 'TemplateLiteral': + return TemplateLiteral(schema_, references_, value); + case 'This': + return This(schema_, references_, value); + case 'Tuple': + return Tuple(schema_, references_, value); + case 'Undefined': + return Undefined(schema_, references_, value); + case 'Union': + return Union(schema_, references_, value); + case 'Uint8Array': + return Uint8Array(schema_, references_, value); + case 'Unknown': + return Unknown(schema_, references_, value); + case 'Void': + return Void(schema_, references_, value); + default: + if (!Types.TypeRegistry.Has(schema_[Types.Kind])) + throw new ValueConvertUnknownTypeError(schema_); + return UserDefined(schema_, references_, value); + } + } + ValueConvert.Visit = Visit; + function Convert(schema, references, value) { + return Visit(schema, references, clone_1.ValueClone.Clone(value)); + } + ValueConvert.Convert = Convert; +})(ValueConvert = exports.ValueConvert || (exports.ValueConvert = {})); diff --git a/node_modules/@sinclair/typebox/value/create.d.ts b/node_modules/@sinclair/typebox/value/create.d.ts new file mode 100644 index 00000000..86e1e5e0 --- /dev/null +++ b/node_modules/@sinclair/typebox/value/create.d.ts @@ -0,0 +1,26 @@ +import * as Types from '../typebox'; +export declare class ValueCreateUnknownTypeError extends Error { + readonly schema: Types.TSchema; + constructor(schema: Types.TSchema); +} +export declare class ValueCreateNeverTypeError extends Error { + readonly schema: Types.TSchema; + constructor(schema: Types.TSchema); +} +export declare class ValueCreateIntersectTypeError extends Error { + readonly schema: Types.TSchema; + constructor(schema: Types.TSchema); +} +export declare class ValueCreateTempateLiteralTypeError extends Error { + readonly schema: Types.TSchema; + constructor(schema: Types.TSchema); +} +export declare class ValueCreateDereferenceError extends Error { + readonly schema: Types.TRef | Types.TThis; + constructor(schema: Types.TRef | Types.TThis); +} +export declare namespace ValueCreate { + /** Creates a value from the given schema. If the schema specifies a default value, then that value is returned. */ + function Visit(schema: Types.TSchema, references: Types.TSchema[]): unknown; + function Create(schema: T, references: Types.TSchema[]): Types.Static; +} diff --git a/node_modules/@sinclair/typebox/value/create.js b/node_modules/@sinclair/typebox/value/create.js new file mode 100644 index 00000000..42374a8b --- /dev/null +++ b/node_modules/@sinclair/typebox/value/create.js @@ -0,0 +1,480 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/value + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValueCreate = exports.ValueCreateDereferenceError = exports.ValueCreateTempateLiteralTypeError = exports.ValueCreateIntersectTypeError = exports.ValueCreateNeverTypeError = exports.ValueCreateUnknownTypeError = void 0; +const Types = require("../typebox"); +const check_1 = require("./check"); +// -------------------------------------------------------------------------- +// Errors +// -------------------------------------------------------------------------- +class ValueCreateUnknownTypeError extends Error { + constructor(schema) { + super('ValueCreate: Unknown type'); + this.schema = schema; + } +} +exports.ValueCreateUnknownTypeError = ValueCreateUnknownTypeError; +class ValueCreateNeverTypeError extends Error { + constructor(schema) { + super('ValueCreate: Never types cannot be created'); + this.schema = schema; + } +} +exports.ValueCreateNeverTypeError = ValueCreateNeverTypeError; +class ValueCreateIntersectTypeError extends Error { + constructor(schema) { + super('ValueCreate: Intersect produced invalid value. Consider using a default value.'); + this.schema = schema; + } +} +exports.ValueCreateIntersectTypeError = ValueCreateIntersectTypeError; +class ValueCreateTempateLiteralTypeError extends Error { + constructor(schema) { + super('ValueCreate: Can only create template literal values from patterns that produce finite sequences. Consider using a default value.'); + this.schema = schema; + } +} +exports.ValueCreateTempateLiteralTypeError = ValueCreateTempateLiteralTypeError; +class ValueCreateDereferenceError extends Error { + constructor(schema) { + super(`ValueCreate: Unable to dereference schema with $id '${schema.$ref}'`); + this.schema = schema; + } +} +exports.ValueCreateDereferenceError = ValueCreateDereferenceError; +// -------------------------------------------------------------------------- +// ValueCreate +// -------------------------------------------------------------------------- +var ValueCreate; +(function (ValueCreate) { + // -------------------------------------------------------- + // Guards + // -------------------------------------------------------- + function IsString(value) { + return typeof value === 'string'; + } + // -------------------------------------------------------- + // Types + // -------------------------------------------------------- + function Any(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + return {}; + } + } + function Array(schema, references) { + if (schema.uniqueItems === true && schema.default === undefined) { + throw new Error('ValueCreate.Array: Arrays with uniqueItems require a default value'); + } + else if ('default' in schema) { + return schema.default; + } + else if (schema.minItems !== undefined) { + return globalThis.Array.from({ length: schema.minItems }).map((item) => { + return ValueCreate.Create(schema.items, references); + }); + } + else { + return []; + } + } + function BigInt(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + return globalThis.BigInt(0); + } + } + function Boolean(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + return false; + } + } + function Constructor(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + const value = ValueCreate.Create(schema.returns, references); + if (typeof value === 'object' && !globalThis.Array.isArray(value)) { + return class { + constructor() { + for (const [key, val] of globalThis.Object.entries(value)) { + const self = this; + self[key] = val; + } + } + }; + } + else { + return class { + }; + } + } + } + function Date(schema, references) { + if ('default' in schema) { + return schema.default; + } + else if (schema.minimumTimestamp !== undefined) { + return new globalThis.Date(schema.minimumTimestamp); + } + else { + return new globalThis.Date(0); + } + } + function Function(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + return () => ValueCreate.Create(schema.returns, references); + } + } + function Integer(schema, references) { + if ('default' in schema) { + return schema.default; + } + else if (schema.minimum !== undefined) { + return schema.minimum; + } + else { + return 0; + } + } + function Intersect(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + // Note: The best we can do here is attempt to instance each sub type and apply through object assign. For non-object + // sub types, we just escape the assignment and just return the value. In the latter case, this is typically going to + // be a consequence of an illogical intersection. + const value = schema.allOf.reduce((acc, schema) => { + const next = Visit(schema, references); + return typeof next === 'object' ? { ...acc, ...next } : next; + }, {}); + if (!check_1.ValueCheck.Check(schema, references, value)) + throw new ValueCreateIntersectTypeError(schema); + return value; + } + } + function Literal(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + return schema.const; + } + } + function Never(schema, references) { + throw new ValueCreateNeverTypeError(schema); + } + function Not(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + return Visit(schema.allOf[1], references); + } + } + function Null(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + return null; + } + } + function Number(schema, references) { + if ('default' in schema) { + return schema.default; + } + else if (schema.minimum !== undefined) { + return schema.minimum; + } + else { + return 0; + } + } + function Object(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + const required = new Set(schema.required); + return (schema.default || + globalThis.Object.entries(schema.properties).reduce((acc, [key, schema]) => { + return required.has(key) ? { ...acc, [key]: ValueCreate.Create(schema, references) } : { ...acc }; + }, {})); + } + } + function Promise(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + return globalThis.Promise.resolve(ValueCreate.Create(schema.item, references)); + } + } + function Record(schema, references) { + const [keyPattern, valueSchema] = globalThis.Object.entries(schema.patternProperties)[0]; + if ('default' in schema) { + return schema.default; + } + else if (!(keyPattern === Types.PatternStringExact || keyPattern === Types.PatternNumberExact)) { + const propertyKeys = keyPattern.slice(1, keyPattern.length - 1).split('|'); + return propertyKeys.reduce((acc, key) => { + return { ...acc, [key]: Create(valueSchema, references) }; + }, {}); + } + else { + return {}; + } + } + function Ref(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + const index = references.findIndex((foreign) => foreign.$id === schema.$id); + if (index === -1) + throw new ValueCreateDereferenceError(schema); + const target = references[index]; + return Visit(target, references); + } + } + function String(schema, references) { + if (schema.pattern !== undefined) { + if (!('default' in schema)) { + throw new Error('ValueCreate.String: String types with patterns must specify a default value'); + } + else { + return schema.default; + } + } + else if (schema.format !== undefined) { + if (!('default' in schema)) { + throw new Error('ValueCreate.String: String types with formats must specify a default value'); + } + else { + return schema.default; + } + } + else { + if ('default' in schema) { + return schema.default; + } + else if (schema.minLength !== undefined) { + return globalThis.Array.from({ length: schema.minLength }) + .map(() => '.') + .join(''); + } + else { + return ''; + } + } + } + function Symbol(schema, references) { + if ('default' in schema) { + return schema.default; + } + else if ('value' in schema) { + return globalThis.Symbol.for(schema.value); + } + else { + return globalThis.Symbol(); + } + } + function TemplateLiteral(schema, references) { + if ('default' in schema) { + return schema.default; + } + const expression = Types.TemplateLiteralParser.ParseExact(schema.pattern); + if (!Types.TemplateLiteralFinite.Check(expression)) + throw new ValueCreateTempateLiteralTypeError(schema); + const sequence = Types.TemplateLiteralGenerator.Generate(expression); + return sequence.next().value; + } + function This(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + const index = references.findIndex((foreign) => foreign.$id === schema.$id); + if (index === -1) + throw new ValueCreateDereferenceError(schema); + const target = references[index]; + return Visit(target, references); + } + } + function Tuple(schema, references) { + if ('default' in schema) { + return schema.default; + } + if (schema.items === undefined) { + return []; + } + else { + return globalThis.Array.from({ length: schema.minItems }).map((_, index) => ValueCreate.Create(schema.items[index], references)); + } + } + function Undefined(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + return undefined; + } + } + function Union(schema, references) { + if ('default' in schema) { + return schema.default; + } + else if (schema.anyOf.length === 0) { + throw new Error('ValueCreate.Union: Cannot create Union with zero variants'); + } + else { + return ValueCreate.Create(schema.anyOf[0], references); + } + } + function Uint8Array(schema, references) { + if ('default' in schema) { + return schema.default; + } + else if (schema.minByteLength !== undefined) { + return new globalThis.Uint8Array(schema.minByteLength); + } + else { + return new globalThis.Uint8Array(0); + } + } + function Unknown(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + return {}; + } + } + function Void(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + return void 0; + } + } + function UserDefined(schema, references) { + if ('default' in schema) { + return schema.default; + } + else { + throw new Error('ValueCreate.UserDefined: User defined types must specify a default value'); + } + } + /** Creates a value from the given schema. If the schema specifies a default value, then that value is returned. */ + function Visit(schema, references) { + const references_ = IsString(schema.$id) ? [...references, schema] : references; + const schema_ = schema; + switch (schema_[Types.Kind]) { + case 'Any': + return Any(schema_, references_); + case 'Array': + return Array(schema_, references_); + case 'BigInt': + return BigInt(schema_, references_); + case 'Boolean': + return Boolean(schema_, references_); + case 'Constructor': + return Constructor(schema_, references_); + case 'Date': + return Date(schema_, references_); + case 'Function': + return Function(schema_, references_); + case 'Integer': + return Integer(schema_, references_); + case 'Intersect': + return Intersect(schema_, references_); + case 'Literal': + return Literal(schema_, references_); + case 'Never': + return Never(schema_, references_); + case 'Not': + return Not(schema_, references_); + case 'Null': + return Null(schema_, references_); + case 'Number': + return Number(schema_, references_); + case 'Object': + return Object(schema_, references_); + case 'Promise': + return Promise(schema_, references_); + case 'Record': + return Record(schema_, references_); + case 'Ref': + return Ref(schema_, references_); + case 'String': + return String(schema_, references_); + case 'Symbol': + return Symbol(schema_, references_); + case 'TemplateLiteral': + return TemplateLiteral(schema_, references_); + case 'This': + return This(schema_, references_); + case 'Tuple': + return Tuple(schema_, references_); + case 'Undefined': + return Undefined(schema_, references_); + case 'Union': + return Union(schema_, references_); + case 'Uint8Array': + return Uint8Array(schema_, references_); + case 'Unknown': + return Unknown(schema_, references_); + case 'Void': + return Void(schema_, references_); + default: + if (!Types.TypeRegistry.Has(schema_[Types.Kind])) + throw new ValueCreateUnknownTypeError(schema_); + return UserDefined(schema_, references_); + } + } + ValueCreate.Visit = Visit; + function Create(schema, references) { + return Visit(schema, references); + } + ValueCreate.Create = Create; +})(ValueCreate = exports.ValueCreate || (exports.ValueCreate = {})); diff --git a/node_modules/@sinclair/typebox/value/delta.d.ts b/node_modules/@sinclair/typebox/value/delta.d.ts new file mode 100644 index 00000000..3320fac7 --- /dev/null +++ b/node_modules/@sinclair/typebox/value/delta.d.ts @@ -0,0 +1,43 @@ +import { Static } from '../typebox'; +export type Insert = Static; +export declare const Insert: import("../typebox").TObject<{ + type: import("../typebox").TLiteral<"insert">; + path: import("../typebox").TString; + value: import("../typebox").TUnknown; +}>; +export type Update = Static; +export declare const Update: import("../typebox").TObject<{ + type: import("../typebox").TLiteral<"update">; + path: import("../typebox").TString; + value: import("../typebox").TUnknown; +}>; +export type Delete = Static; +export declare const Delete: import("../typebox").TObject<{ + type: import("../typebox").TLiteral<"delete">; + path: import("../typebox").TString; +}>; +export type Edit = Static; +export declare const Edit: import("../typebox").TUnion<[import("../typebox").TObject<{ + type: import("../typebox").TLiteral<"insert">; + path: import("../typebox").TString; + value: import("../typebox").TUnknown; +}>, import("../typebox").TObject<{ + type: import("../typebox").TLiteral<"update">; + path: import("../typebox").TString; + value: import("../typebox").TUnknown; +}>, import("../typebox").TObject<{ + type: import("../typebox").TLiteral<"delete">; + path: import("../typebox").TString; +}>]>; +export declare class ValueDeltaObjectWithSymbolKeyError extends Error { + readonly key: unknown; + constructor(key: unknown); +} +export declare class ValueDeltaUnableToDiffUnknownValue extends Error { + readonly value: unknown; + constructor(value: unknown); +} +export declare namespace ValueDelta { + function Diff(current: unknown, next: unknown): Edit[]; + function Patch(current: unknown, edits: Edit[]): T; +} diff --git a/node_modules/@sinclair/typebox/value/delta.js b/node_modules/@sinclair/typebox/value/delta.js new file mode 100644 index 00000000..89c06a0d --- /dev/null +++ b/node_modules/@sinclair/typebox/value/delta.js @@ -0,0 +1,204 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/value + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValueDelta = exports.ValueDeltaUnableToDiffUnknownValue = exports.ValueDeltaObjectWithSymbolKeyError = exports.Edit = exports.Delete = exports.Update = exports.Insert = void 0; +const typebox_1 = require("../typebox"); +const is_1 = require("./is"); +const clone_1 = require("./clone"); +const pointer_1 = require("./pointer"); +exports.Insert = typebox_1.Type.Object({ + type: typebox_1.Type.Literal('insert'), + path: typebox_1.Type.String(), + value: typebox_1.Type.Unknown(), +}); +exports.Update = typebox_1.Type.Object({ + type: typebox_1.Type.Literal('update'), + path: typebox_1.Type.String(), + value: typebox_1.Type.Unknown(), +}); +exports.Delete = typebox_1.Type.Object({ + type: typebox_1.Type.Literal('delete'), + path: typebox_1.Type.String(), +}); +exports.Edit = typebox_1.Type.Union([exports.Insert, exports.Update, exports.Delete]); +// --------------------------------------------------------------------- +// Errors +// --------------------------------------------------------------------- +class ValueDeltaObjectWithSymbolKeyError extends Error { + constructor(key) { + super('ValueDelta: Cannot diff objects with symbol keys'); + this.key = key; + } +} +exports.ValueDeltaObjectWithSymbolKeyError = ValueDeltaObjectWithSymbolKeyError; +class ValueDeltaUnableToDiffUnknownValue extends Error { + constructor(value) { + super('ValueDelta: Unable to create diff edits for unknown value'); + this.value = value; + } +} +exports.ValueDeltaUnableToDiffUnknownValue = ValueDeltaUnableToDiffUnknownValue; +// --------------------------------------------------------------------- +// ValueDelta +// --------------------------------------------------------------------- +var ValueDelta; +(function (ValueDelta) { + // --------------------------------------------------------------------- + // Edits + // --------------------------------------------------------------------- + function Update(path, value) { + return { type: 'update', path, value }; + } + function Insert(path, value) { + return { type: 'insert', path, value }; + } + function Delete(path) { + return { type: 'delete', path }; + } + // --------------------------------------------------------------------- + // Diff + // --------------------------------------------------------------------- + function* Object(path, current, next) { + if (!is_1.Is.Object(next)) + return yield Update(path, next); + const currentKeys = [...globalThis.Object.keys(current), ...globalThis.Object.getOwnPropertySymbols(current)]; + const nextKeys = [...globalThis.Object.keys(next), ...globalThis.Object.getOwnPropertySymbols(next)]; + for (const key of currentKeys) { + if (typeof key === 'symbol') + throw new ValueDeltaObjectWithSymbolKeyError(key); + if (next[key] === undefined && nextKeys.includes(key)) + yield Update(`${path}/${String(key)}`, undefined); + } + for (const key of nextKeys) { + if (current[key] === undefined || next[key] === undefined) + continue; + if (typeof key === 'symbol') + throw new ValueDeltaObjectWithSymbolKeyError(key); + yield* Visit(`${path}/${String(key)}`, current[key], next[key]); + } + for (const key of nextKeys) { + if (typeof key === 'symbol') + throw new ValueDeltaObjectWithSymbolKeyError(key); + if (current[key] === undefined) + yield Insert(`${path}/${String(key)}`, next[key]); + } + for (const key of currentKeys.reverse()) { + if (typeof key === 'symbol') + throw new ValueDeltaObjectWithSymbolKeyError(key); + if (next[key] === undefined && !nextKeys.includes(key)) + yield Delete(`${path}/${String(key)}`); + } + } + function* Array(path, current, next) { + if (!is_1.Is.Array(next)) + return yield Update(path, next); + for (let i = 0; i < Math.min(current.length, next.length); i++) { + yield* Visit(`${path}/${i}`, current[i], next[i]); + } + for (let i = 0; i < next.length; i++) { + if (i < current.length) + continue; + yield Insert(`${path}/${i}`, next[i]); + } + for (let i = current.length - 1; i >= 0; i--) { + if (i < next.length) + continue; + yield Delete(`${path}/${i}`); + } + } + function* TypedArray(path, current, next) { + if (!is_1.Is.TypedArray(next) || current.length !== next.length || globalThis.Object.getPrototypeOf(current).constructor.name !== globalThis.Object.getPrototypeOf(next).constructor.name) + return yield Update(path, next); + for (let i = 0; i < Math.min(current.length, next.length); i++) { + yield* Visit(`${path}/${i}`, current[i], next[i]); + } + } + function* Value(path, current, next) { + if (current === next) + return; + yield Update(path, next); + } + function* Visit(path, current, next) { + if (is_1.Is.Object(current)) { + return yield* Object(path, current, next); + } + else if (is_1.Is.Array(current)) { + return yield* Array(path, current, next); + } + else if (is_1.Is.TypedArray(current)) { + return yield* TypedArray(path, current, next); + } + else if (is_1.Is.Value(current)) { + return yield* Value(path, current, next); + } + else { + throw new ValueDeltaUnableToDiffUnknownValue(current); + } + } + function Diff(current, next) { + return [...Visit('', current, next)]; + } + ValueDelta.Diff = Diff; + // --------------------------------------------------------------------- + // Patch + // --------------------------------------------------------------------- + function IsRootUpdate(edits) { + return edits.length > 0 && edits[0].path === '' && edits[0].type === 'update'; + } + function IsIdentity(edits) { + return edits.length === 0; + } + function Patch(current, edits) { + if (IsRootUpdate(edits)) { + return clone_1.ValueClone.Clone(edits[0].value); + } + if (IsIdentity(edits)) { + return clone_1.ValueClone.Clone(current); + } + const clone = clone_1.ValueClone.Clone(current); + for (const edit of edits) { + switch (edit.type) { + case 'insert': { + pointer_1.ValuePointer.Set(clone, edit.path, edit.value); + break; + } + case 'update': { + pointer_1.ValuePointer.Set(clone, edit.path, edit.value); + break; + } + case 'delete': { + pointer_1.ValuePointer.Delete(clone, edit.path); + break; + } + } + } + return clone; + } + ValueDelta.Patch = Patch; +})(ValueDelta = exports.ValueDelta || (exports.ValueDelta = {})); diff --git a/node_modules/@sinclair/typebox/value/equal.d.ts b/node_modules/@sinclair/typebox/value/equal.d.ts new file mode 100644 index 00000000..785c2b8d --- /dev/null +++ b/node_modules/@sinclair/typebox/value/equal.d.ts @@ -0,0 +1,3 @@ +export declare namespace ValueEqual { + function Equal(left: T, right: unknown): right is T; +} diff --git a/node_modules/@sinclair/typebox/value/equal.js b/node_modules/@sinclair/typebox/value/equal.js new file mode 100644 index 00000000..ed9773b5 --- /dev/null +++ b/node_modules/@sinclair/typebox/value/equal.js @@ -0,0 +1,80 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/value + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValueEqual = void 0; +const is_1 = require("./is"); +var ValueEqual; +(function (ValueEqual) { + function Object(left, right) { + if (!is_1.Is.Object(right)) + return false; + const leftKeys = [...globalThis.Object.keys(left), ...globalThis.Object.getOwnPropertySymbols(left)]; + const rightKeys = [...globalThis.Object.keys(right), ...globalThis.Object.getOwnPropertySymbols(right)]; + if (leftKeys.length !== rightKeys.length) + return false; + return leftKeys.every((key) => Equal(left[key], right[key])); + } + function Date(left, right) { + return is_1.Is.Date(right) && left.getTime() === right.getTime(); + } + function Array(left, right) { + if (!is_1.Is.Array(right) || left.length !== right.length) + return false; + return left.every((value, index) => Equal(value, right[index])); + } + function TypedArray(left, right) { + if (!is_1.Is.TypedArray(right) || left.length !== right.length || globalThis.Object.getPrototypeOf(left).constructor.name !== globalThis.Object.getPrototypeOf(right).constructor.name) + return false; + return left.every((value, index) => Equal(value, right[index])); + } + function Value(left, right) { + return left === right; + } + function Equal(left, right) { + if (is_1.Is.Object(left)) { + return Object(left, right); + } + else if (is_1.Is.Date(left)) { + return Date(left, right); + } + else if (is_1.Is.TypedArray(left)) { + return TypedArray(left, right); + } + else if (is_1.Is.Array(left)) { + return Array(left, right); + } + else if (is_1.Is.Value(left)) { + return Value(left, right); + } + else { + throw new Error('ValueEquals: Unable to compare value'); + } + } + ValueEqual.Equal = Equal; +})(ValueEqual = exports.ValueEqual || (exports.ValueEqual = {})); diff --git a/node_modules/@sinclair/typebox/value/hash.d.ts b/node_modules/@sinclair/typebox/value/hash.d.ts new file mode 100644 index 00000000..4c9116b5 --- /dev/null +++ b/node_modules/@sinclair/typebox/value/hash.d.ts @@ -0,0 +1,8 @@ +export declare class ValueHashError extends Error { + readonly value: unknown; + constructor(value: unknown); +} +export declare namespace ValueHash { + /** Creates a FNV1A-64 non cryptographic hash of the given value */ + function Create(value: unknown): bigint; +} diff --git a/node_modules/@sinclair/typebox/value/hash.js b/node_modules/@sinclair/typebox/value/hash.js new file mode 100644 index 00000000..95944208 --- /dev/null +++ b/node_modules/@sinclair/typebox/value/hash.js @@ -0,0 +1,208 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/hash + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValueHash = exports.ValueHashError = void 0; +class ValueHashError extends Error { + constructor(value) { + super(`Hash: Unable to hash value`); + this.value = value; + } +} +exports.ValueHashError = ValueHashError; +var ValueHash; +(function (ValueHash) { + let ByteMarker; + (function (ByteMarker) { + ByteMarker[ByteMarker["Undefined"] = 0] = "Undefined"; + ByteMarker[ByteMarker["Null"] = 1] = "Null"; + ByteMarker[ByteMarker["Boolean"] = 2] = "Boolean"; + ByteMarker[ByteMarker["Number"] = 3] = "Number"; + ByteMarker[ByteMarker["String"] = 4] = "String"; + ByteMarker[ByteMarker["Object"] = 5] = "Object"; + ByteMarker[ByteMarker["Array"] = 6] = "Array"; + ByteMarker[ByteMarker["Date"] = 7] = "Date"; + ByteMarker[ByteMarker["Uint8Array"] = 8] = "Uint8Array"; + ByteMarker[ByteMarker["Symbol"] = 9] = "Symbol"; + ByteMarker[ByteMarker["BigInt"] = 10] = "BigInt"; + })(ByteMarker || (ByteMarker = {})); + // ---------------------------------------------------- + // State + // ---------------------------------------------------- + let Hash = globalThis.BigInt('14695981039346656037'); + const [Prime, Size] = [globalThis.BigInt('1099511628211'), globalThis.BigInt('2') ** globalThis.BigInt('64')]; + const Bytes = globalThis.Array.from({ length: 256 }).map((_, i) => globalThis.BigInt(i)); + const F64 = new globalThis.Float64Array(1); + const F64In = new globalThis.DataView(F64.buffer); + const F64Out = new globalThis.Uint8Array(F64.buffer); + // ---------------------------------------------------- + // Guards + // ---------------------------------------------------- + function IsDate(value) { + return value instanceof globalThis.Date; + } + function IsUint8Array(value) { + return value instanceof globalThis.Uint8Array; + } + function IsArray(value) { + return globalThis.Array.isArray(value); + } + function IsBoolean(value) { + return typeof value === 'boolean'; + } + function IsNull(value) { + return value === null; + } + function IsNumber(value) { + return typeof value === 'number'; + } + function IsSymbol(value) { + return typeof value === 'symbol'; + } + function IsBigInt(value) { + return typeof value === 'bigint'; + } + function IsObject(value) { + return typeof value === 'object' && value !== null && !IsArray(value) && !IsDate(value) && !IsUint8Array(value); + } + function IsString(value) { + return typeof value === 'string'; + } + function IsUndefined(value) { + return value === undefined; + } + // ---------------------------------------------------- + // Encoding + // ---------------------------------------------------- + function Array(value) { + FNV1A64(ByteMarker.Array); + for (const item of value) { + Visit(item); + } + } + function Boolean(value) { + FNV1A64(ByteMarker.Boolean); + FNV1A64(value ? 1 : 0); + } + function BigInt(value) { + FNV1A64(ByteMarker.BigInt); + F64In.setBigInt64(0, value); + for (const byte of F64Out) { + FNV1A64(byte); + } + } + function Date(value) { + FNV1A64(ByteMarker.Date); + Visit(value.getTime()); + } + function Null(value) { + FNV1A64(ByteMarker.Null); + } + function Number(value) { + FNV1A64(ByteMarker.Number); + F64In.setFloat64(0, value); + for (const byte of F64Out) { + FNV1A64(byte); + } + } + function Object(value) { + FNV1A64(ByteMarker.Object); + for (const key of globalThis.Object.keys(value).sort()) { + Visit(key); + Visit(value[key]); + } + } + function String(value) { + FNV1A64(ByteMarker.String); + for (let i = 0; i < value.length; i++) { + FNV1A64(value.charCodeAt(i)); + } + } + function Symbol(value) { + FNV1A64(ByteMarker.Symbol); + Visit(value.description); + } + function Uint8Array(value) { + FNV1A64(ByteMarker.Uint8Array); + for (let i = 0; i < value.length; i++) { + FNV1A64(value[i]); + } + } + function Undefined(value) { + return FNV1A64(ByteMarker.Undefined); + } + function Visit(value) { + if (IsArray(value)) { + Array(value); + } + else if (IsBoolean(value)) { + Boolean(value); + } + else if (IsBigInt(value)) { + BigInt(value); + } + else if (IsDate(value)) { + Date(value); + } + else if (IsNull(value)) { + Null(value); + } + else if (IsNumber(value)) { + Number(value); + } + else if (IsObject(value)) { + Object(value); + } + else if (IsString(value)) { + String(value); + } + else if (IsSymbol(value)) { + Symbol(value); + } + else if (IsUint8Array(value)) { + Uint8Array(value); + } + else if (IsUndefined(value)) { + Undefined(value); + } + else { + throw new ValueHashError(value); + } + } + function FNV1A64(byte) { + Hash = Hash ^ Bytes[byte]; + Hash = (Hash * Prime) % Size; + } + /** Creates a FNV1A-64 non cryptographic hash of the given value */ + function Create(value) { + Hash = globalThis.BigInt('14695981039346656037'); + Visit(value); + return Hash; + } + ValueHash.Create = Create; +})(ValueHash = exports.ValueHash || (exports.ValueHash = {})); diff --git a/node_modules/@sinclair/typebox/value/index.d.ts b/node_modules/@sinclair/typebox/value/index.d.ts new file mode 100644 index 00000000..4ad0b778 --- /dev/null +++ b/node_modules/@sinclair/typebox/value/index.d.ts @@ -0,0 +1,6 @@ +export { ValueError, ValueErrorIterator, ValueErrorType } from '../errors/index'; +export { ValueHash } from './hash'; +export { Edit, Insert, Update, Delete } from './delta'; +export { Mutable } from './mutate'; +export * from './pointer'; +export * from './value'; diff --git a/node_modules/@sinclair/typebox/value/index.js b/node_modules/@sinclair/typebox/value/index.js new file mode 100644 index 00000000..1f21de4d --- /dev/null +++ b/node_modules/@sinclair/typebox/value/index.js @@ -0,0 +1,56 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/value + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Delete = exports.Update = exports.Insert = exports.Edit = exports.ValueHash = exports.ValueErrorType = exports.ValueErrorIterator = void 0; +var index_1 = require("../errors/index"); +Object.defineProperty(exports, "ValueErrorIterator", { enumerable: true, get: function () { return index_1.ValueErrorIterator; } }); +Object.defineProperty(exports, "ValueErrorType", { enumerable: true, get: function () { return index_1.ValueErrorType; } }); +var hash_1 = require("./hash"); +Object.defineProperty(exports, "ValueHash", { enumerable: true, get: function () { return hash_1.ValueHash; } }); +var delta_1 = require("./delta"); +Object.defineProperty(exports, "Edit", { enumerable: true, get: function () { return delta_1.Edit; } }); +Object.defineProperty(exports, "Insert", { enumerable: true, get: function () { return delta_1.Insert; } }); +Object.defineProperty(exports, "Update", { enumerable: true, get: function () { return delta_1.Update; } }); +Object.defineProperty(exports, "Delete", { enumerable: true, get: function () { return delta_1.Delete; } }); +__exportStar(require("./pointer"), exports); +__exportStar(require("./value"), exports); diff --git a/node_modules/@sinclair/typebox/value/is.d.ts b/node_modules/@sinclair/typebox/value/is.d.ts new file mode 100644 index 00000000..b78ba9c2 --- /dev/null +++ b/node_modules/@sinclair/typebox/value/is.d.ts @@ -0,0 +1,11 @@ +export type ValueType = null | undefined | Function | symbol | bigint | number | boolean | string; +export type ObjectType = Record; +export type TypedArrayType = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array; +export type ArrayType = unknown[]; +export declare namespace Is { + function Object(value: unknown): value is ObjectType; + function Date(value: unknown): value is Date; + function Array(value: unknown): value is ArrayType; + function Value(value: unknown): value is ValueType; + function TypedArray(value: unknown): value is TypedArrayType; +} diff --git a/node_modules/@sinclair/typebox/value/is.js b/node_modules/@sinclair/typebox/value/is.js new file mode 100644 index 00000000..fbe1ed43 --- /dev/null +++ b/node_modules/@sinclair/typebox/value/is.js @@ -0,0 +1,53 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/value + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Is = void 0; +var Is; +(function (Is) { + function Object(value) { + return value !== null && typeof value === 'object' && !globalThis.Array.isArray(value) && !ArrayBuffer.isView(value) && !(value instanceof globalThis.Date); + } + Is.Object = Object; + function Date(value) { + return value instanceof globalThis.Date; + } + Is.Date = Date; + function Array(value) { + return globalThis.Array.isArray(value) && !ArrayBuffer.isView(value); + } + Is.Array = Array; + function Value(value) { + return value === null || value === undefined || typeof value === 'function' || typeof value === 'symbol' || typeof value === 'bigint' || typeof value === 'number' || typeof value === 'boolean' || typeof value === 'string'; + } + Is.Value = Value; + function TypedArray(value) { + return ArrayBuffer.isView(value); + } + Is.TypedArray = TypedArray; +})(Is = exports.Is || (exports.Is = {})); diff --git a/node_modules/@sinclair/typebox/value/mutate.d.ts b/node_modules/@sinclair/typebox/value/mutate.d.ts new file mode 100644 index 00000000..e45c07e2 --- /dev/null +++ b/node_modules/@sinclair/typebox/value/mutate.d.ts @@ -0,0 +1,13 @@ +export declare class ValueMutateTypeMismatchError extends Error { + constructor(); +} +export declare class ValueMutateInvalidRootMutationError extends Error { + constructor(); +} +export type Mutable = { + [key: string]: unknown; +} | unknown[]; +export declare namespace ValueMutate { + /** Performs a deep mutable value assignment while retaining internal references. */ + function Mutate(current: Mutable, next: Mutable): void; +} diff --git a/node_modules/@sinclair/typebox/value/mutate.js b/node_modules/@sinclair/typebox/value/mutate.js new file mode 100644 index 00000000..4151596b --- /dev/null +++ b/node_modules/@sinclair/typebox/value/mutate.js @@ -0,0 +1,121 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/value + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValueMutate = exports.ValueMutateInvalidRootMutationError = exports.ValueMutateTypeMismatchError = void 0; +const is_1 = require("./is"); +const pointer_1 = require("./pointer"); +const clone_1 = require("./clone"); +class ValueMutateTypeMismatchError extends Error { + constructor() { + super('ValueMutate: Cannot assign due type mismatch of assignable values'); + } +} +exports.ValueMutateTypeMismatchError = ValueMutateTypeMismatchError; +class ValueMutateInvalidRootMutationError extends Error { + constructor() { + super('ValueMutate: Only object and array types can be mutated at the root level'); + } +} +exports.ValueMutateInvalidRootMutationError = ValueMutateInvalidRootMutationError; +var ValueMutate; +(function (ValueMutate) { + function Object(root, path, current, next) { + if (!is_1.Is.Object(current)) { + pointer_1.ValuePointer.Set(root, path, clone_1.ValueClone.Clone(next)); + } + else { + const currentKeys = globalThis.Object.keys(current); + const nextKeys = globalThis.Object.keys(next); + for (const currentKey of currentKeys) { + if (!nextKeys.includes(currentKey)) { + delete current[currentKey]; + } + } + for (const nextKey of nextKeys) { + if (!currentKeys.includes(nextKey)) { + current[nextKey] = null; + } + } + for (const nextKey of nextKeys) { + Visit(root, `${path}/${nextKey}`, current[nextKey], next[nextKey]); + } + } + } + function Array(root, path, current, next) { + if (!is_1.Is.Array(current)) { + pointer_1.ValuePointer.Set(root, path, clone_1.ValueClone.Clone(next)); + } + else { + for (let index = 0; index < next.length; index++) { + Visit(root, `${path}/${index}`, current[index], next[index]); + } + current.splice(next.length); + } + } + function TypedArray(root, path, current, next) { + if (is_1.Is.TypedArray(current) && current.length === next.length) { + for (let i = 0; i < current.length; i++) { + current[i] = next[i]; + } + } + else { + pointer_1.ValuePointer.Set(root, path, clone_1.ValueClone.Clone(next)); + } + } + function Value(root, path, current, next) { + if (current === next) + return; + pointer_1.ValuePointer.Set(root, path, next); + } + function Visit(root, path, current, next) { + if (is_1.Is.Array(next)) { + return Array(root, path, current, next); + } + else if (is_1.Is.TypedArray(next)) { + return TypedArray(root, path, current, next); + } + else if (is_1.Is.Object(next)) { + return Object(root, path, current, next); + } + else if (is_1.Is.Value(next)) { + return Value(root, path, current, next); + } + } + /** Performs a deep mutable value assignment while retaining internal references. */ + function Mutate(current, next) { + if (is_1.Is.TypedArray(current) || is_1.Is.Value(current) || is_1.Is.TypedArray(next) || is_1.Is.Value(next)) { + throw new ValueMutateInvalidRootMutationError(); + } + if ((is_1.Is.Object(current) && is_1.Is.Array(next)) || (is_1.Is.Array(current) && is_1.Is.Object(next))) { + throw new ValueMutateTypeMismatchError(); + } + Visit(current, '', current, next); + } + ValueMutate.Mutate = Mutate; +})(ValueMutate = exports.ValueMutate || (exports.ValueMutate = {})); diff --git a/node_modules/@sinclair/typebox/value/pointer.d.ts b/node_modules/@sinclair/typebox/value/pointer.d.ts new file mode 100644 index 00000000..abae1e1c --- /dev/null +++ b/node_modules/@sinclair/typebox/value/pointer.d.ts @@ -0,0 +1,24 @@ +export declare class ValuePointerRootSetError extends Error { + readonly value: unknown; + readonly path: string; + readonly update: unknown; + constructor(value: unknown, path: string, update: unknown); +} +export declare class ValuePointerRootDeleteError extends Error { + readonly value: unknown; + readonly path: string; + constructor(value: unknown, path: string); +} +/** Provides functionality to update values through RFC6901 string pointers */ +export declare namespace ValuePointer { + /** Formats the given pointer into navigable key components */ + function Format(pointer: string): IterableIterator; + /** Sets the value at the given pointer. If the value at the pointer does not exist it is created */ + function Set(value: any, pointer: string, update: unknown): void; + /** Deletes a value at the given pointer */ + function Delete(value: any, pointer: string): void; + /** Returns true if a value exists at the given pointer */ + function Has(value: any, pointer: string): boolean; + /** Gets the value at the given pointer */ + function Get(value: any, pointer: string): any; +} diff --git a/node_modules/@sinclair/typebox/value/pointer.js b/node_modules/@sinclair/typebox/value/pointer.js new file mode 100644 index 00000000..981be635 --- /dev/null +++ b/node_modules/@sinclair/typebox/value/pointer.js @@ -0,0 +1,142 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/value + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValuePointer = exports.ValuePointerRootDeleteError = exports.ValuePointerRootSetError = void 0; +class ValuePointerRootSetError extends Error { + constructor(value, path, update) { + super('ValuePointer: Cannot set root value'); + this.value = value; + this.path = path; + this.update = update; + } +} +exports.ValuePointerRootSetError = ValuePointerRootSetError; +class ValuePointerRootDeleteError extends Error { + constructor(value, path) { + super('ValuePointer: Cannot delete root value'); + this.value = value; + this.path = path; + } +} +exports.ValuePointerRootDeleteError = ValuePointerRootDeleteError; +/** Provides functionality to update values through RFC6901 string pointers */ +var ValuePointer; +(function (ValuePointer) { + function Escape(component) { + return component.indexOf('~') === -1 ? component : component.replace(/~1/g, '/').replace(/~0/g, '~'); + } + /** Formats the given pointer into navigable key components */ + function* Format(pointer) { + if (pointer === '') + return; + let [start, end] = [0, 0]; + for (let i = 0; i < pointer.length; i++) { + const char = pointer.charAt(i); + if (char === '/') { + if (i === 0) { + start = i + 1; + } + else { + end = i; + yield Escape(pointer.slice(start, end)); + start = i + 1; + } + } + else { + end = i; + } + } + yield Escape(pointer.slice(start)); + } + ValuePointer.Format = Format; + /** Sets the value at the given pointer. If the value at the pointer does not exist it is created */ + function Set(value, pointer, update) { + if (pointer === '') + throw new ValuePointerRootSetError(value, pointer, update); + let [owner, next, key] = [null, value, '']; + for (const component of Format(pointer)) { + if (next[component] === undefined) + next[component] = {}; + owner = next; + next = next[component]; + key = component; + } + owner[key] = update; + } + ValuePointer.Set = Set; + /** Deletes a value at the given pointer */ + function Delete(value, pointer) { + if (pointer === '') + throw new ValuePointerRootDeleteError(value, pointer); + let [owner, next, key] = [null, value, '']; + for (const component of Format(pointer)) { + if (next[component] === undefined || next[component] === null) + return; + owner = next; + next = next[component]; + key = component; + } + if (globalThis.Array.isArray(owner)) { + const index = parseInt(key); + owner.splice(index, 1); + } + else { + delete owner[key]; + } + } + ValuePointer.Delete = Delete; + /** Returns true if a value exists at the given pointer */ + function Has(value, pointer) { + if (pointer === '') + return true; + let [owner, next, key] = [null, value, '']; + for (const component of Format(pointer)) { + if (next[component] === undefined) + return false; + owner = next; + next = next[component]; + key = component; + } + return globalThis.Object.getOwnPropertyNames(owner).includes(key); + } + ValuePointer.Has = Has; + /** Gets the value at the given pointer */ + function Get(value, pointer) { + if (pointer === '') + return value; + let current = value; + for (const component of Format(pointer)) { + if (current[component] === undefined) + return undefined; + current = current[component]; + } + return current; + } + ValuePointer.Get = Get; +})(ValuePointer = exports.ValuePointer || (exports.ValuePointer = {})); diff --git a/node_modules/@sinclair/typebox/value/value.d.ts b/node_modules/@sinclair/typebox/value/value.d.ts new file mode 100644 index 00000000..bf8d32f5 --- /dev/null +++ b/node_modules/@sinclair/typebox/value/value.d.ts @@ -0,0 +1,39 @@ +import * as Types from '../typebox'; +import { ValueErrorIterator } from '../errors/index'; +import { Mutable } from './mutate'; +import { Edit } from './delta'; +/** Provides functions to perform structural updates to JavaScript values */ +export declare namespace Value { + /** Casts a value into a given type. The return value will retain as much information of the original value as possible. Cast will convert string, number, boolean and date values if a reasonable conversion is possible. */ + function Cast(schema: T, references: [...R], value: unknown): Types.Static; + /** Casts a value into a given type. The return value will retain as much information of the original value as possible. Cast will convert string, number, boolean and date values if a reasonable conversion is possible. */ + function Cast(schema: T, value: unknown): Types.Static; + /** Creates a value from the given type */ + function Create(schema: T, references: [...R]): Types.Static; + /** Creates a value from the given type */ + function Create(schema: T): Types.Static; + /** Returns true if the value matches the given type. */ + function Check(schema: T, references: [...R], value: unknown): value is Types.Static; + /** Returns true if the value matches the given type. */ + function Check(schema: T, value: unknown): value is Types.Static; + /** Converts any type mismatched values to their target type if a conversion is possible. */ + function Convert(schema: T, references: [...R], value: unknown): unknown; + /** Converts any type mismatched values to their target type if a conversion is possible. */ + function Convert(schema: T, value: unknown): unknown; + /** Returns a structural clone of the given value */ + function Clone(value: T): T; + /** Returns an iterator for each error in this value. */ + function Errors(schema: T, references: [...R], value: unknown): ValueErrorIterator; + /** Returns an iterator for each error in this value. */ + function Errors(schema: T, value: unknown): ValueErrorIterator; + /** Returns true if left and right values are structurally equal */ + function Equal(left: T, right: unknown): right is T; + /** Returns edits to transform the current value into the next value */ + function Diff(current: unknown, next: unknown): Edit[]; + /** Returns a FNV1A-64 non cryptographic hash of the given value */ + function Hash(value: unknown): bigint; + /** Returns a new value with edits applied to the given value */ + function Patch(current: unknown, edits: Edit[]): T; + /** Performs a deep mutable value assignment while retaining internal references. */ + function Mutate(current: Mutable, next: Mutable): void; +} diff --git a/node_modules/@sinclair/typebox/value/value.js b/node_modules/@sinclair/typebox/value/value.js new file mode 100644 index 00000000..e1ab919f --- /dev/null +++ b/node_modules/@sinclair/typebox/value/value.js @@ -0,0 +1,99 @@ +"use strict"; +/*-------------------------------------------------------------------------- + +@sinclair/typebox/value + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) + +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. + +---------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Value = void 0; +const index_1 = require("../errors/index"); +const mutate_1 = require("./mutate"); +const hash_1 = require("./hash"); +const equal_1 = require("./equal"); +const cast_1 = require("./cast"); +const clone_1 = require("./clone"); +const convert_1 = require("./convert"); +const create_1 = require("./create"); +const check_1 = require("./check"); +const delta_1 = require("./delta"); +/** Provides functions to perform structural updates to JavaScript values */ +var Value; +(function (Value) { + function Cast(...args) { + const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]]; + return cast_1.ValueCast.Cast(schema, references, value); + } + Value.Cast = Cast; + function Create(...args) { + const [schema, references] = args.length === 2 ? [args[0], args[1]] : [args[0], []]; + return create_1.ValueCreate.Create(schema, references); + } + Value.Create = Create; + function Check(...args) { + const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]]; + return check_1.ValueCheck.Check(schema, references, value); + } + Value.Check = Check; + function Convert(...args) { + const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]]; + return convert_1.ValueConvert.Convert(schema, references, value); + } + Value.Convert = Convert; + /** Returns a structural clone of the given value */ + function Clone(value) { + return clone_1.ValueClone.Clone(value); + } + Value.Clone = Clone; + function Errors(...args) { + const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]]; + return index_1.ValueErrors.Errors(schema, references, value); + } + Value.Errors = Errors; + /** Returns true if left and right values are structurally equal */ + function Equal(left, right) { + return equal_1.ValueEqual.Equal(left, right); + } + Value.Equal = Equal; + /** Returns edits to transform the current value into the next value */ + function Diff(current, next) { + return delta_1.ValueDelta.Diff(current, next); + } + Value.Diff = Diff; + /** Returns a FNV1A-64 non cryptographic hash of the given value */ + function Hash(value) { + return hash_1.ValueHash.Create(value); + } + Value.Hash = Hash; + /** Returns a new value with edits applied to the given value */ + function Patch(current, edits) { + return delta_1.ValueDelta.Patch(current, edits); + } + Value.Patch = Patch; + /** Performs a deep mutable value assignment while retaining internal references. */ + function Mutate(current, next) { + mutate_1.ValueMutate.Mutate(current, next); + } + Value.Mutate = Mutate; +})(Value = exports.Value || (exports.Value = {})); diff --git a/node_modules/@sindresorhus/is/license b/node_modules/@sindresorhus/is/license new file mode 100644 index 00000000..fa7ceba3 --- /dev/null +++ b/node_modules/@sindresorhus/is/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +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. diff --git a/node_modules/@sindresorhus/is/package.json b/node_modules/@sindresorhus/is/package.json new file mode 100644 index 00000000..004956b0 --- /dev/null +++ b/node_modules/@sindresorhus/is/package.json @@ -0,0 +1,96 @@ +{ + "name": "@sindresorhus/is", + "version": "3.1.2", + "description": "Type check values", + "license": "MIT", + "repository": "sindresorhus/is", + "funding": "https://github.com/sindresorhus/is?sponsor=1", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "https://sindresorhus.com" + }, + "main": "dist/index.js", + "engines": { + "node": ">=10" + }, + "scripts": { + "build": "del dist && tsc", + "test": "xo && ava", + "prepublishOnly": "npm run build" + }, + "files": [ + "dist" + ], + "keywords": [ + "type", + "types", + "is", + "check", + "checking", + "validate", + "validation", + "utility", + "util", + "typeof", + "instanceof", + "object", + "assert", + "assertion", + "test", + "kind", + "primitive", + "verify", + "compare", + "typescript", + "typeguards", + "types" + ], + "devDependencies": { + "@sindresorhus/tsconfig": "^0.7.0", + "@types/jsdom": "^16.1.0", + "@types/node": "^14.0.13", + "@types/zen-observable": "^0.8.0", + "@typescript-eslint/eslint-plugin": "^2.20.0", + "@typescript-eslint/parser": "^2.20.0", + "ava": "^3.3.0", + "del-cli": "^2.0.0", + "eslint-config-xo-typescript": "^0.26.0", + "jsdom": "^16.0.1", + "rxjs": "^6.4.0", + "tempy": "^0.4.0", + "ts-node": "^8.3.0", + "typescript": "~3.8.2", + "xo": "^0.26.1", + "zen-observable": "^0.8.8" + }, + "types": "dist/index.d.ts", + "sideEffects": false, + "ava": { + "extensions": [ + "ts" + ], + "require": [ + "ts-node/register" + ] + }, + "xo": { + "extends": "xo-typescript", + "extensions": [ + "ts" + ], + "parserOptions": { + "project": "./tsconfig.xo.json" + }, + "globals": [ + "BigInt", + "BigInt64Array", + "BigUint64Array" + ], + "rules": { + "@typescript-eslint/promise-function-async": "off", + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/explicit-function-return-type": "off" + } + } +} diff --git a/node_modules/@sindresorhus/is/readme.md b/node_modules/@sindresorhus/is/readme.md new file mode 100644 index 00000000..daddc0ad --- /dev/null +++ b/node_modules/@sindresorhus/is/readme.md @@ -0,0 +1,602 @@ +# is [![Build Status](https://travis-ci.org/sindresorhus/is.svg?branch=master)](https://travis-ci.org/sindresorhus/is) + +> Type check values + +For example, `is.string('🦄') //=> true` + + + +## Highlights + +- Written in TypeScript +- [Extensive use of type guards](#type-guards) +- [Supports type assertions](#type-assertions) +- [Aware of generic type parameters](#generic-type-parameters) (use with caution) +- Actively maintained +- ![Millions of downloads per week](https://img.shields.io/npm/dw/@sindresorhus/is) + +## Install + +``` +$ npm install @sindresorhus/is +``` + +## Usage + +```js +const is = require('@sindresorhus/is'); + +is('🦄'); +//=> 'string' + +is(new Map()); +//=> 'Map' + +is.number(6); +//=> true +``` + +[Assertions](#type-assertions) perform the same type checks, but throw an error if the type does not match. + +```js +const {assert} = require('@sindresorhus/is'); + +assert.string(2); +//=> Error: Expected value which is `string`, received value of type `number`. +``` + +And with TypeScript: + +```ts +import {assert} from '@sindresorhus/is'; + +assert.string(foo); +// `foo` is now typed as a `string`. +``` + +## API + +### is(value) + +Returns the type of `value`. + +Primitives are lowercase and object types are camelcase. + +Example: + +- `'undefined'` +- `'null'` +- `'string'` +- `'symbol'` +- `'Array'` +- `'Function'` +- `'Object'` + +Note: It will throw an error if you try to feed it object-wrapped primitives, as that's a bad practice. For example `new String('foo')`. + +### is.{method} + +All the below methods accept a value and returns a boolean for whether the value is of the desired type. + +#### Primitives + +##### .undefined(value) +##### .null(value) +##### .string(value) +##### .number(value) + +Note: `is.number(NaN)` returns `false`. This intentionally deviates from `typeof` behavior to increase user-friendliness of `is` type checks. + +##### .boolean(value) +##### .symbol(value) +##### .bigint(value) + +#### Built-in types + +##### .array(value, assertion?) + +Returns true if `value` is an array and all of its items match the assertion (if provided). + +```js +is.array(value); // Validate `value` is an array. +is.array(value, is.number); // Validate `value` is an array and all of its items are numbers. +``` + +##### .function(value) +##### .buffer(value) +##### .object(value) + +Keep in mind that [functions are objects too](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions). + +##### .numericString(value) + +Returns `true` for a string that represents a number satisfying `is.number`, for example, `'42'` and `'-8.3'`. + +Note: `'NaN'` returns `false`, but `'Infinity'` and `'-Infinity'` return `true`. + +##### .regExp(value) +##### .date(value) +##### .error(value) +##### .nativePromise(value) +##### .promise(value) + +Returns `true` for any object with a `.then()` and `.catch()` method. Prefer this one over `.nativePromise()` as you usually want to allow userland promise implementations too. + +##### .generator(value) + +Returns `true` for any object that implements its own `.next()` and `.throw()` methods and has a function definition for `Symbol.iterator`. + +##### .generatorFunction(value) + +##### .asyncFunction(value) + +Returns `true` for any `async` function that can be called with the `await` operator. + +```js +is.asyncFunction(async () => {}); +//=> true + +is.asyncFunction(() => {}); +//=> false +``` + +##### .asyncGenerator(value) + +```js +is.asyncGenerator( + (async function * () { + yield 4; + })() +); +//=> true + +is.asyncGenerator( + (function * () { + yield 4; + })() +); +//=> false +``` + +##### .asyncGeneratorFunction(value) + +```js +is.asyncGeneratorFunction(async function * () { + yield 4; +}); +//=> true + +is.asyncGeneratorFunction(function * () { + yield 4; +}); +//=> false +``` + +##### .boundFunction(value) + +Returns `true` for any `bound` function. + +```js +is.boundFunction(() => {}); +//=> true + +is.boundFunction(function () {}.bind(null)); +//=> true + +is.boundFunction(function () {}); +//=> false +``` + +##### .map(value) +##### .set(value) +##### .weakMap(value) +##### .weakSet(value) + +#### Typed arrays + +##### .int8Array(value) +##### .uint8Array(value) +##### .uint8ClampedArray(value) +##### .int16Array(value) +##### .uint16Array(value) +##### .int32Array(value) +##### .uint32Array(value) +##### .float32Array(value) +##### .float64Array(value) +##### .bigInt64Array(value) +##### .bigUint64Array(value) + +#### Structured data + +##### .arrayBuffer(value) +##### .sharedArrayBuffer(value) +##### .dataView(value) + +#### Emptiness + +##### .emptyString(value) + +Returns `true` if the value is a `string` and the `.length` is 0. + +##### .nonEmptyString(value) + +Returns `true` if the value is a `string` and the `.length` is more than 0. + +##### .emptyStringOrWhitespace(value) + +Returns `true` if `is.emptyString(value)` or if it's a `string` that is all whitespace. + +##### .emptyArray(value) + +Returns `true` if the value is an `Array` and the `.length` is 0. + +##### .nonEmptyArray(value) + +Returns `true` if the value is an `Array` and the `.length` is more than 0. + +##### .emptyObject(value) + +Returns `true` if the value is an `Object` and `Object.keys(value).length` is 0. + +Please note that `Object.keys` returns only own enumerable properties. Hence something like this can happen: + +```js +const object1 = {}; + +Object.defineProperty(object1, 'property1', { + value: 42, + writable: true, + enumerable: false, + configurable: true +}); + +is.emptyObject(object1); +//=> true +``` + +##### .nonEmptyObject(value) + +Returns `true` if the value is an `Object` and `Object.keys(value).length` is more than 0. + +##### .emptySet(value) + +Returns `true` if the value is a `Set` and the `.size` is 0. + +##### .nonEmptySet(Value) + +Returns `true` if the value is a `Set` and the `.size` is more than 0. + +##### .emptyMap(value) + +Returns `true` if the value is a `Map` and the `.size` is 0. + +##### .nonEmptyMap(value) + +Returns `true` if the value is a `Map` and the `.size` is more than 0. + +#### Miscellaneous + +##### .directInstanceOf(value, class) + +Returns `true` if `value` is a direct instance of `class`. + +```js +is.directInstanceOf(new Error(), Error); +//=> true + +class UnicornError extends Error {} + +is.directInstanceOf(new UnicornError(), Error); +//=> false +``` + +##### .urlInstance(value) + +Returns `true` if `value` is an instance of the [`URL` class](https://developer.mozilla.org/en-US/docs/Web/API/URL). + +```js +const url = new URL('https://example.com'); + +is.urlInstance(url); +//=> true +``` + +##### .urlString(value) + +Returns `true` if `value` is a URL string. + +Note: this only does basic checking using the [`URL` class](https://developer.mozilla.org/en-US/docs/Web/API/URL) constructor. + +```js +const url = 'https://example.com'; + +is.urlString(url); +//=> true + +is.urlString(new URL(url)); +//=> false +``` + +##### .truthy(value) + +Returns `true` for all values that evaluate to true in a boolean context: + +```js +is.truthy('🦄'); +//=> true + +is.truthy(undefined); +//=> false +``` + +##### .falsy(value) + +Returns `true` if `value` is one of: `false`, `0`, `''`, `null`, `undefined`, `NaN`. + +##### .nan(value) +##### .nullOrUndefined(value) +##### .primitive(value) + +JavaScript primitives are as follows: `null`, `undefined`, `string`, `number`, `boolean`, `symbol`. + +##### .integer(value) + +##### .safeInteger(value) + +Returns `true` if `value` is a [safe integer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger). + +##### .plainObject(value) + +An object is plain if it's created by either `{}`, `new Object()`, or `Object.create(null)`. + +##### .iterable(value) +##### .asyncIterable(value) +##### .class(value) + +Returns `true` for instances created by a class. + +##### .typedArray(value) + +##### .arrayLike(value) + +A `value` is array-like if it is not a function and has a `value.length` that is a safe integer greater than or equal to 0. + +```js +is.arrayLike(document.forms); +//=> true + +function foo() { + is.arrayLike(arguments); + //=> true +} +foo(); +``` + +##### .inRange(value, range) + +Check if `value` (number) is in the given `range`. The range is an array of two values, lower bound and upper bound, in no specific order. + +```js +is.inRange(3, [0, 5]); +is.inRange(3, [5, 0]); +is.inRange(0, [-2, 2]); +``` + +##### .inRange(value, upperBound) + +Check if `value` (number) is in the range of `0` to `upperBound`. + +```js +is.inRange(3, 10); +``` + +##### .domElement(value) + +Returns `true` if `value` is a DOM Element. + +##### .nodeStream(value) + +Returns `true` if `value` is a Node.js [stream](https://nodejs.org/api/stream.html). + +```js +const fs = require('fs'); + +is.nodeStream(fs.createReadStream('unicorn.png')); +//=> true +``` + +##### .observable(value) + +Returns `true` if `value` is an `Observable`. + +```js +const {Observable} = require('rxjs'); + +is.observable(new Observable()); +//=> true +``` + +##### .infinite(value) + +Check if `value` is `Infinity` or `-Infinity`. + +##### .evenInteger(value) + +Returns `true` if `value` is an even integer. + +##### .oddInteger(value) + +Returns `true` if `value` is an odd integer. + +##### .any(predicate | predicate[], ...values) + +Using a single `predicate` argument, returns `true` if **any** of the input `values` returns true in the `predicate`: + +```js +is.any(is.string, {}, true, '🦄'); +//=> true + +is.any(is.boolean, 'unicorns', [], new Map()); +//=> false +``` + +Using an array of `predicate[]`, returns `true` if **any** of the input `values` returns true for **any** of the `predicates` provided in an array: + +```js +is.any([is.string, is.number], {}, true, '🦄'); +//=> true + +is.any([is.boolean, is.number], 'unicorns', [], new Map()); +//=> false +``` + +##### .all(predicate, ...values) + +Returns `true` if **all** of the input `values` returns true in the `predicate`: + +```js +is.all(is.object, {}, new Map(), new Set()); +//=> true + +is.all(is.string, '🦄', [], 'unicorns'); +//=> false +``` + +## Type guards + +When using `is` together with TypeScript, [type guards](http://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards-and-differentiating-types) are being used extensively to infer the correct type inside if-else statements. + +```ts +import is from '@sindresorhus/is'; + +const padLeft = (value: string, padding: string | number) => { + if (is.number(padding)) { + // `padding` is typed as `number` + return Array(padding + 1).join(' ') + value; + } + + if (is.string(padding)) { + // `padding` is typed as `string` + return padding + value; + } + + throw new TypeError(`Expected 'padding' to be of type 'string' or 'number', got '${is(padding)}'.`); +} + +padLeft('🦄', 3); +//=> ' 🦄' + +padLeft('🦄', '🌈'); +//=> '🌈🦄' +``` + +## Type assertions + +The type guards are also available as [type assertions](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions), which throw an error for unexpected types. It is a convenient one-line version of the often repetitive "if-not-expected-type-throw" pattern. + +```ts +import {assert} from '@sindresorhus/is'; + +const handleMovieRatingApiResponse = (response: unknown) => { + assert.plainObject(response); + // `response` is now typed as a plain `object` with `unknown` properties. + + assert.number(response.rating); + // `response.rating` is now typed as a `number`. + + assert.string(response.title); + // `response.title` is now typed as a `string`. + + return `${response.title} (${response.rating * 10})`; +}; + +handleMovieRatingApiResponse({rating: 0.87, title: 'The Matrix'}); +//=> 'The Matrix (8.7)' + +// This throws an error. +handleMovieRatingApiResponse({rating: '🦄'}); +``` + +## Generic type parameters + +The type guards and type assertions are aware of [generic type parameters](https://www.typescriptlang.org/docs/handbook/generics.html), such as `Promise` and `Map`. The default is `unknown` for most cases, since `is` cannot check them at runtime. If the generic type is known at compile-time, either implicitly (inferred) or explicitly (provided), `is` propagates the type so it can be used later. + +Use generic type parameters with caution. They are only checked by the TypeScript compiler, and not checked by `is` at runtime. This can lead to unexpected behavior, where the generic type is _assumed_ at compile-time, but actually is something completely different at runtime. It is best to use `unknown` (default) and type-check the value of the generic type parameter at runtime with `is` or `assert`. + +```ts +import {assert} from '@sindresorhus/is'; + +async function badNumberAssumption(input: unknown) { + // Bad assumption about the generic type parameter fools the compile-time type system. + assert.promise(input); + // `input` is a `Promise` but only assumed to be `Promise`. + + const resolved = await input; + // `resolved` is typed as `number` but was not actually checked at runtime. + + // Multiplication will return NaN if the input promise did not actually contain a number. + return 2 * resolved; +} + +async function goodNumberAssertion(input: unknown) { + assert.promise(input); + // `input` is typed as `Promise` + + const resolved = await input; + // `resolved` is typed as `unknown` + + assert.number(resolved); + // `resolved` is typed as `number` + + // Uses runtime checks so only numbers will reach the multiplication. + return 2 * resolved; +} + +badNumberAssumption(Promise.resolve('An unexpected string')); +//=> NaN + +// This correctly throws an error because of the unexpected string value. +goodNumberAssertion(Promise.resolve('An unexpected string')); +``` + +## FAQ + +### Why yet another type checking module? + +There are hundreds of type checking modules on npm, unfortunately, I couldn't find any that fit my needs: + +- Includes both type methods and ability to get the type +- Types of primitives returned as lowercase and object types as camelcase +- Covers all built-ins +- Unsurprising behavior +- Well-maintained +- Comprehensive test suite + +For the ones I found, pick 3 of these. + +The most common mistakes I noticed in these modules was using `instanceof` for type checking, forgetting that functions are objects, and omitting `symbol` as a primitive. + +## For enterprise + +Available as part of the Tidelift Subscription. + +The maintainers of @sindresorhus/is and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-sindresorhus-is?utm_source=npm-sindresorhus-is&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) + +## Related + +- [ow](https://github.com/sindresorhus/ow) - Function argument validation for humans +- [is-stream](https://github.com/sindresorhus/is-stream) - Check if something is a Node.js stream +- [is-observable](https://github.com/sindresorhus/is-observable) - Check if a value is an Observable +- [file-type](https://github.com/sindresorhus/file-type) - Detect the file type of a Buffer/Uint8Array +- [is-ip](https://github.com/sindresorhus/is-ip) - Check if a string is an IP address +- [is-array-sorted](https://github.com/sindresorhus/is-array-sorted) - Check if an Array is sorted +- [is-error-constructor](https://github.com/sindresorhus/is-error-constructor) - Check if a value is an error constructor +- [is-empty-iterable](https://github.com/sindresorhus/is-empty-iterable) - Check if an Iterable is empty +- [is-blob](https://github.com/sindresorhus/is-blob) - Check if a value is a Blob - File-like object of immutable, raw data +- [has-emoji](https://github.com/sindresorhus/has-emoji) - Check whether a string has any emoji + +## Maintainers + +- [Sindre Sorhus](https://github.com/sindresorhus) +- [Giora Guttsait](https://github.com/gioragutt) +- [Brandon Smith](https://github.com/brandon93s) diff --git a/node_modules/@slorber/remark-comment/LICENSE b/node_modules/@slorber/remark-comment/LICENSE new file mode 100644 index 00000000..8a87003d --- /dev/null +++ b/node_modules/@slorber/remark-comment/LICENSE @@ -0,0 +1,9 @@ +MIT License + +Copyright 2021, Lee Byron + +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. diff --git a/node_modules/@slorber/remark-comment/README.md b/node_modules/@slorber/remark-comment/README.md new file mode 100644 index 00000000..068dd3e0 --- /dev/null +++ b/node_modules/@slorber/remark-comment/README.md @@ -0,0 +1,92 @@ +# remark-comment + +Parse HTML style comments as a different node type so it can be ignored during +serialization. + +## Install and usage + +```sh +npm install remark-comment +``` + +```js +import { unified } from 'unified' +import remarkParse from 'remark-parse' +import remarkComment from 'remark-comment' + +unified().use(remarkParse).use(remarkComment) +``` + +For more help with unified, please see the docs for [unified] and [remark]. + +This package also exports its [micromark] and [mdast] plugins: + +```js +import { + comment, + commentHtml, + commentFromMarkdown, + commentToMarkdown, +} from 'remark-comment' +``` + +**Options:** + +The `remarkComment` and `commentFromMarkdown` functions take the options: + +- `ast`: If true, a `{ type: "comment" }` node will be included in the + resulting AST. This is useful if you want to do post-processing and stringify + back to markdown. Default: `false`. + +[unified]: https://unifiedjs.com/learn/guide/using-unified/ +[remark]: https://unifiedjs.com/explore/package/remark-parse/ +[micromark]: https://github.com/micromark/micromark +[mdast]: https://github.com/syntax-tree/mdast#extensions + +## Example + +```markdown +# This file + + + +And a paragraph +``` + +Renders to: + +```html +

This file

+

And a paragraph

+``` + +## Motivation + +This package was created after realizing that MDX lacked support for HTML style +comments. When trying to migrate an existing collection of markdown files to +MDX, hitting syntax errors for HTML comments was a non-starter. Rather than go +modify all those files to use a (more awkward) JSX expression comment, I created +this plugin to add back this support. + +However, I found this useful when used outside of MDX. Common markdown +interprets an HTML comment as an HTML block, and during serialization will pass +it directly through to the final HTML document. I typically do not want my +markdown comments appearing in my final HTML documents, and this plugin achieves +this effect. + +## Caveats + +This plugin must be added after MDX, otherwise you will see this error: + +``` +Unexpected character `!` (U+0021) before name, expected a character that can start a name, such as a letter, `$`, or `_` (note: to create a comment in MDX, use `{/* text */}`) +``` + +In a unified pipeline: + +```js +unified().use(remarkMDX).use(remarkComment) +``` + +Unlike HTML, comments cannot be used within a JSX body. JSX is still JSX. +HTML comments must appear outside of JSX, use JSX style comments (`{/* comment */}`) inside of JSX. diff --git a/node_modules/@slorber/remark-comment/index.d.ts b/node_modules/@slorber/remark-comment/index.d.ts new file mode 100644 index 00000000..9b29a10b --- /dev/null +++ b/node_modules/@slorber/remark-comment/index.d.ts @@ -0,0 +1,19 @@ +export default function remarkComment( + options?: void | Options | undefined +): + | void + | import('unified').Transformer + +export const comment: Extension +export const commentHtml: HtmlExtension +export const commentFromMarkdown: FromMarkdownExtension +export function commentToMarkdown( + options?: Options | undefined +): ToMarkdownExtension + +export type Options = { emit?: boolean } +export type Root = import('mdast').Root +export type Extension = import('micromark-util-types').Extension +export type HtmlExtension = import('micromark-util-types').HtmlExtension +export type FromMarkdownExtension = import('mdast-util-from-markdown').Extension +export type ToMarkdownExtension = import('mdast-util-to-markdown').Options diff --git a/node_modules/@slorber/remark-comment/index.js b/node_modules/@slorber/remark-comment/index.js new file mode 100644 index 00000000..c70bd75f --- /dev/null +++ b/node_modules/@slorber/remark-comment/index.js @@ -0,0 +1,195 @@ +import { factorySpace } from 'micromark-factory-space' +import { markdownLineEnding } from 'micromark-util-character' +import { codes } from 'micromark-util-symbol/codes.js' +import { types } from 'micromark-util-symbol/types.js' + +export default function remarkComment(options) { + const data = this.data() + const add = (field, value) => + (data[field] ? data[field] : (data[field] = [])).push(value) + add('micromarkExtensions', comment) + add('htmlExtensions', commentHtml) + add('fromMarkdownExtensions', commentFromMarkdown(options)) + add('toMarkdownExtensions', commentToMarkdown) +} + +export const comment = { + flow: { [60]: { tokenize, concrete: true } }, + text: { [60]: { tokenize } }, +} + +export const commentHtml = { + enter: { + comment() { + this.buffer() + }, + }, + exit: { + comment() { + this.resume() + this.setData('slurpOneLineEnding', true) + }, + }, +} + +export function commentFromMarkdown(options) { + return { + canContainEols: ['comment'], + enter: { + comment(token) { + this.buffer() + }, + }, + exit: { + comment(token) { + const text = this.resume() + if (options?.ast) { + this.enter( + { + type: 'comment', + value: '', + commentValue: text.slice(0, -2), + }, + token + ) + this.exit(token) + } + }, + }, + } +} + +export const commentToMarkdown = { + handlers: { + comment(node) { + return `` + }, + }, +} + +function tokenize(effects, ok, nok) { + const self = this + return start + + function start(code) { + effects.enter('comment') + effects.consume(code) + return open + } + + function open(code) { + if (code === codes.exclamationMark) { + effects.consume(code) + return declarationOpen + } + + return nok(code) + } + + function declarationOpen(code) { + if (code === codes.dash) { + effects.consume(code) + return commentOpen + } + + return nok(code) + } + + function commentOpen(code) { + if (code === codes.dash) { + effects.consume(code) + return commentStart + } + + return nok(code) + } + + function commentStart(code) { + if (code === codes.greaterThan) { + return nok(code) + } + + if (markdownLineEnding(code)) { + return atLineEnding(code); + } + + effects.enter(types.data) + + if (code === codes.dash) { + effects.consume(code) + return commentStartDash + } + + return comment(code) + } + + function commentStartDash(code) { + if (code === codes.greaterThan) { + return nok(code) + } + + return comment(code) + } + + function comment(code) { + if (code === codes.eof) { + return nok(code) + } + + if (code === codes.dash) { + effects.consume(code) + return commentClose + } + + if (markdownLineEnding(code)) { + effects.exit(types.data) + return atLineEnding(code) + } + + effects.consume(code) + return comment + } + + function atLineEnding(code) { + effects.enter(types.lineEnding) + effects.consume(code) + effects.exit(types.lineEnding) + return factorySpace(effects, afterPrefix, types.linePrefix) + } + + function afterPrefix(code) { + if (markdownLineEnding(code)) { + return atLineEnding(code) + } + + effects.enter(types.data) + return comment(code) + } + + function commentClose(code) { + if (code === codes.dash) { + effects.consume(code) + return end + } + + return comment(code) + } + + function end(code) { + if (code === codes.greaterThan) { + effects.exit(types.data) + effects.enter('commentEnd') // See https://github.com/leebyron/remark-comment/pull/3#discussion_r1239494357 + effects.consume(code) + effects.exit('commentEnd') + effects.exit('comment') + return ok(code) + } + + if (code === codes.dash) { + effects.consume(code) + return end + } + + return comment(code) + } +} diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/dev/index.d.ts b/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/dev/index.d.ts new file mode 100644 index 00000000..2f6e2c7f --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/dev/index.d.ts @@ -0,0 +1,43 @@ +/** + * Parse spaces and tabs. + * + * There is no `nok` parameter: + * + * * spaces in markdown are often optional, in which case this factory can be + * used and `ok` will be switched to whether spaces were found or not + * * one line ending or space can be detected with `markdownSpace(code)` right + * before using `factorySpace` + * + * ###### Examples + * + * Where `␉` represents a tab (plus how much it expands) and `␠` represents a + * single space. + * + * ```markdown + * ␉ + * ␠␠␠␠ + * ␉␠ + * ``` + * + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @param {TokenType} type + * Type (`' \t'`). + * @param {number | undefined} [max=Infinity] + * Max (exclusive). + * @returns + * Start state. + */ +export function factorySpace( + effects: Effects, + ok: State, + type: TokenType, + max?: number | undefined +): ( + code: import('micromark-util-types').Code +) => void | import('micromark-util-types').State +export type Effects = import('micromark-util-types').Effects +export type State = import('micromark-util-types').State +export type TokenType = import('micromark-util-types').TokenType diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/dev/index.js b/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/dev/index.js new file mode 100644 index 00000000..1b4682fb --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/dev/index.js @@ -0,0 +1,69 @@ +/** + * @typedef {import('micromark-util-types').Effects} Effects + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenType} TokenType + */ + +import {markdownSpace} from 'micromark-util-character' + +// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`. + +/** + * Parse spaces and tabs. + * + * There is no `nok` parameter: + * + * * spaces in markdown are often optional, in which case this factory can be + * used and `ok` will be switched to whether spaces were found or not + * * one line ending or space can be detected with `markdownSpace(code)` right + * before using `factorySpace` + * + * ###### Examples + * + * Where `␉` represents a tab (plus how much it expands) and `␠` represents a + * single space. + * + * ```markdown + * ␉ + * ␠␠␠␠ + * ␉␠ + * ``` + * + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @param {TokenType} type + * Type (`' \t'`). + * @param {number | undefined} [max=Infinity] + * Max (exclusive). + * @returns + * Start state. + */ +export function factorySpace(effects, ok, type, max) { + const limit = max ? max - 1 : Number.POSITIVE_INFINITY + let size = 0 + + return start + + /** @type {State} */ + function start(code) { + if (markdownSpace(code)) { + effects.enter(type) + return prefix(code) + } + + return ok(code) + } + + /** @type {State} */ + function prefix(code) { + if (markdownSpace(code) && size++ < limit) { + effects.consume(code) + return prefix + } + + effects.exit(type) + return ok(code) + } +} diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/index.d.ts b/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/index.d.ts new file mode 100644 index 00000000..2f6e2c7f --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/index.d.ts @@ -0,0 +1,43 @@ +/** + * Parse spaces and tabs. + * + * There is no `nok` parameter: + * + * * spaces in markdown are often optional, in which case this factory can be + * used and `ok` will be switched to whether spaces were found or not + * * one line ending or space can be detected with `markdownSpace(code)` right + * before using `factorySpace` + * + * ###### Examples + * + * Where `␉` represents a tab (plus how much it expands) and `␠` represents a + * single space. + * + * ```markdown + * ␉ + * ␠␠␠␠ + * ␉␠ + * ``` + * + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @param {TokenType} type + * Type (`' \t'`). + * @param {number | undefined} [max=Infinity] + * Max (exclusive). + * @returns + * Start state. + */ +export function factorySpace( + effects: Effects, + ok: State, + type: TokenType, + max?: number | undefined +): ( + code: import('micromark-util-types').Code +) => void | import('micromark-util-types').State +export type Effects = import('micromark-util-types').Effects +export type State = import('micromark-util-types').State +export type TokenType = import('micromark-util-types').TokenType diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/index.js b/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/index.js new file mode 100644 index 00000000..21a26063 --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/index.js @@ -0,0 +1,66 @@ +/** + * @typedef {import('micromark-util-types').Effects} Effects + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenType} TokenType + */ + +import {markdownSpace} from 'micromark-util-character' + +// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`. + +/** + * Parse spaces and tabs. + * + * There is no `nok` parameter: + * + * * spaces in markdown are often optional, in which case this factory can be + * used and `ok` will be switched to whether spaces were found or not + * * one line ending or space can be detected with `markdownSpace(code)` right + * before using `factorySpace` + * + * ###### Examples + * + * Where `␉` represents a tab (plus how much it expands) and `␠` represents a + * single space. + * + * ```markdown + * ␉ + * ␠␠␠␠ + * ␉␠ + * ``` + * + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @param {TokenType} type + * Type (`' \t'`). + * @param {number | undefined} [max=Infinity] + * Max (exclusive). + * @returns + * Start state. + */ +export function factorySpace(effects, ok, type, max) { + const limit = max ? max - 1 : Number.POSITIVE_INFINITY + let size = 0 + return start + + /** @type {State} */ + function start(code) { + if (markdownSpace(code)) { + effects.enter(type) + return prefix(code) + } + return ok(code) + } + + /** @type {State} */ + function prefix(code) { + if (markdownSpace(code) && size++ < limit) { + effects.consume(code) + return prefix + } + effects.exit(type) + return ok(code) + } +} diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/package.json b/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/package.json new file mode 100644 index 00000000..d590c4a8 --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/package.json @@ -0,0 +1,55 @@ +{ + "name": "micromark-factory-space", + "version": "1.1.0", + "description": "micromark factory to parse markdown space (found in lots of places)", + "license": "MIT", + "keywords": [ + "micromark", + "factory", + "space" + ], + "repository": "https://github.com/micromark/micromark/tree/main/packages/micromark-factory-space", + "bugs": "https://github.com/micromark/micromark/issues", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "author": "Titus Wormer (https://wooorm.com)", + "contributors": [ + "Titus Wormer (https://wooorm.com)" + ], + "sideEffects": false, + "type": "module", + "main": "index.js", + "types": "dev/index.d.ts", + "files": [ + "dev/", + "index.d.ts", + "index.js" + ], + "exports": { + "types": "./dev/index.d.ts", + "development": "./dev/index.js", + "default": "./index.js" + }, + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + }, + "scripts": { + "build": "micromark-build" + }, + "xo": false, + "typeCoverage": { + "atLeast": 100, + "detail": true, + "strict": true, + "ignoreCatch": true + } +} diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/readme.md b/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/readme.md new file mode 100644 index 00000000..07997a17 --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-factory-space/readme.md @@ -0,0 +1,223 @@ +# micromark-factory-space + +[![Build][build-badge]][build] +[![Coverage][coverage-badge]][coverage] +[![Downloads][downloads-badge]][downloads] +[![Size][bundle-size-badge]][bundle-size] +[![Sponsors][sponsors-badge]][opencollective] +[![Backers][backers-badge]][opencollective] +[![Chat][chat-badge]][chat] + +[micromark][] factory to parse [markdown space][markdown-space] (found in lots +of places). + +## Contents + +* [What is this?](#what-is-this) +* [When should I use this?](#when-should-i-use-this) +* [Install](#install) +* [Use](#use) +* [API](#api) + * [`factorySpace(…)`](#factoryspace) +* [Types](#types) +* [Compatibility](#compatibility) +* [Security](#security) +* [Contribute](#contribute) +* [License](#license) + +## What is this? + +This package exposes states to parse spaces and/or tabs. + +## When should I use this? + +This package is useful when you are making your own micromark extensions. + +## Install + +This package is [ESM only][esm]. +In Node.js (version 16+), install with [npm][]: + +```sh +npm install micromark-factory-space +``` + +In Deno with [`esm.sh`][esmsh]: + +```js +import {factorySpace} from 'https://esm.sh/micromark-factory-space@1' +``` + +In browsers with [`esm.sh`][esmsh]: + +```html + +``` + +## Use + +```js +import {factorySpace} from 'micromark-factory-space' +import {codes} from 'micromark-util-symbol/codes' +import {types} from 'micromark-util-symbol/types' + +// A micromark tokenizer that uses the factory: +/** + * @this {TokenizeContext} + * @type {Tokenizer} + */ +function tokenizeCodeFenced(effects, ok, nok) { + return start + + // … + + /** @type {State} */ + function info(code) { + if (code === codes.eof || markdownLineEndingOrSpace(code)) { + effects.exit(types.chunkString) + effects.exit(types.codeFencedFenceInfo) + return factorySpace(effects, infoAfter, types.whitespace)(code) + } + + if (code === codes.graveAccent && code === marker) return nok(code) + effects.consume(code) + return info + } + + // … +} +``` + +## API + +This module exports the identifier [`factorySpace`][api-factory-space]. +There is no default export. + +### `factorySpace(…)` + +Parse spaces and tabs. + +There is no `nok` parameter: + +* spaces in markdown are often optional, in which case this factory can be + used and `ok` will be switched to whether spaces were found or not +* one line ending or space can be detected with `markdownSpace(code)` right + before using `factorySpace` + +###### Examples + +Where `␉` represents a tab (plus how much it expands) and `␠` represents a +single space. + +```markdown +␉ +␠␠␠␠ +␉␠ +``` + +###### Parameters + +* `effects` (`Effects`) + — context +* `ok` (`State`) + — state switched to when successful +* `type` (`string`) + — type (`' \t'`) +* `max` (`number`, default: `Infinity`) + — max (exclusive) + +###### Returns + +Start state (`State`). + +## Types + +This package is fully typed with [TypeScript][]. +It exports no additional types. + +## Compatibility + +Projects maintained by the unified collective are compatible with all maintained +versions of Node.js. +As of now, that is Node.js 16+. +Our projects sometimes work with older versions, but this is not guaranteed. + +This package works with `micromark` version 3+. + +## Security + +This package is safe. +See [`security.md`][securitymd] in [`micromark/.github`][health] for how to +submit a security report. + +## Contribute + +See [`contributing.md`][contributing] in [`micromark/.github`][health] for ways +to get started. +See [`support.md`][support] for ways to get help. + +This project has a [code of conduct][coc]. +By interacting with this repository, organisation, or community you agree to +abide by its terms. + +## License + +[MIT][license] © [Titus Wormer][author] + + + +[build-badge]: https://github.com/micromark/micromark/workflows/main/badge.svg + +[build]: https://github.com/micromark/micromark/actions + +[coverage-badge]: https://img.shields.io/codecov/c/github/micromark/micromark.svg + +[coverage]: https://codecov.io/github/micromark/micromark + +[downloads-badge]: https://img.shields.io/npm/dm/micromark-factory-space.svg + +[downloads]: https://www.npmjs.com/package/micromark-factory-space + +[bundle-size-badge]: https://img.shields.io/badge/dynamic/json?label=minzipped%20size&query=$.size.compressedSize&url=https://deno.bundlejs.com/?q=micromark-factory-space + +[bundle-size]: https://bundlejs.com/?q=micromark-factory-space + +[sponsors-badge]: https://opencollective.com/unified/sponsors/badge.svg + +[backers-badge]: https://opencollective.com/unified/backers/badge.svg + +[opencollective]: https://opencollective.com/unified + +[npm]: https://docs.npmjs.com/cli/install + +[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c + +[esmsh]: https://esm.sh + +[chat-badge]: https://img.shields.io/badge/chat-discussions-success.svg + +[chat]: https://github.com/micromark/micromark/discussions + +[license]: https://github.com/micromark/micromark/blob/main/license + +[author]: https://wooorm.com + +[health]: https://github.com/micromark/.github + +[securitymd]: https://github.com/micromark/.github/blob/main/security.md + +[contributing]: https://github.com/micromark/.github/blob/main/contributing.md + +[support]: https://github.com/micromark/.github/blob/main/support.md + +[coc]: https://github.com/micromark/.github/blob/main/code-of-conduct.md + +[markdown-space]: https://github.com/micromark/micromark/tree/main/packages/micromark-util-character#markdownspacecode + +[typescript]: https://www.typescriptlang.org + +[micromark]: https://github.com/micromark/micromark + +[api-factory-space]: #factoryspace diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/dev/index.d.ts b/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/dev/index.d.ts new file mode 100644 index 00000000..ba5b5793 --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/dev/index.d.ts @@ -0,0 +1,63 @@ +/** + * Check whether a character code is an ASCII control character. + * + * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL) + * to U+001F (US), or U+007F (DEL). + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +export function asciiControl(code: Code): boolean +/** + * Check whether a character code is a markdown line ending. + * + * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN + * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR). + * + * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE + * RETURN (CR) are replaced by these virtual characters depending on whether + * they occurred together. + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +export function markdownLineEnding(code: Code): boolean +/** + * Check whether a character code is a markdown line ending (see + * `markdownLineEnding`) or markdown space (see `markdownSpace`). + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +export function markdownLineEndingOrSpace(code: Code): boolean +/** + * Check whether a character code is a markdown space. + * + * A **markdown space** is the concrete character U+0020 SPACE (SP) and the + * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT). + * + * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is + * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL + * SPACE (VS) characters, depending on the column at which the tab occurred. + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +export function markdownSpace(code: Code): boolean +export function asciiAlpha(code: Code): boolean +export function asciiAlphanumeric(code: Code): boolean +export function asciiAtext(code: Code): boolean +export function asciiDigit(code: Code): boolean +export function asciiHexDigit(code: Code): boolean +export function asciiPunctuation(code: Code): boolean +export function unicodePunctuation(code: Code): boolean +export function unicodeWhitespace(code: Code): boolean +export type Code = import('micromark-util-types').Code diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/dev/index.js b/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/dev/index.js new file mode 100644 index 00000000..f7ea74fc --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/dev/index.js @@ -0,0 +1,251 @@ +/** + * @typedef {import('micromark-util-types').Code} Code + */ + +import {codes} from 'micromark-util-symbol/codes.js' +import {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js' + +/** + * Check whether the character code represents an ASCII alpha (`a` through `z`, + * case insensitive). + * + * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha. + * + * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`) + * to U+005A (`Z`). + * + * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`) + * to U+007A (`z`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +export const asciiAlpha = regexCheck(/[A-Za-z]/) + +/** + * Check whether the character code represents an ASCII alphanumeric (`a` + * through `z`, case insensitive, or `0` through `9`). + * + * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha + * (see `asciiAlpha`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +export const asciiAlphanumeric = regexCheck(/[\dA-Za-z]/) + +/** + * Check whether the character code represents an ASCII atext. + * + * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in + * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`), + * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F + * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E + * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE + * (`{`) to U+007E TILDE (`~`). + * + * See: + * **\[RFC5322]**: + * [Internet Message Format](https://tools.ietf.org/html/rfc5322). + * P. Resnick. + * IETF. + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +export const asciiAtext = regexCheck(/[#-'*+\--9=?A-Z^-~]/) + +/** + * Check whether a character code is an ASCII control character. + * + * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL) + * to U+001F (US), or U+007F (DEL). + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +export function asciiControl(code) { + return ( + // Special whitespace codes (which have negative values), C0 and Control + // character DEL + code !== null && (code < codes.space || code === codes.del) + ) +} + +/** + * Check whether the character code represents an ASCII digit (`0` through `9`). + * + * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to + * U+0039 (`9`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +export const asciiDigit = regexCheck(/\d/) + +/** + * Check whether the character code represents an ASCII hex digit (`a` through + * `f`, case insensitive, or `0` through `9`). + * + * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex + * digit, or an ASCII lower hex digit. + * + * An **ASCII upper hex digit** is a character in the inclusive range U+0041 + * (`A`) to U+0046 (`F`). + * + * An **ASCII lower hex digit** is a character in the inclusive range U+0061 + * (`a`) to U+0066 (`f`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +export const asciiHexDigit = regexCheck(/[\dA-Fa-f]/) + +/** + * Check whether the character code represents ASCII punctuation. + * + * An **ASCII punctuation** is a character in the inclusive ranges U+0021 + * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT + * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT + * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +export const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/) + +/** + * Check whether a character code is a markdown line ending. + * + * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN + * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR). + * + * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE + * RETURN (CR) are replaced by these virtual characters depending on whether + * they occurred together. + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +export function markdownLineEnding(code) { + return code !== null && code < codes.horizontalTab +} + +/** + * Check whether a character code is a markdown line ending (see + * `markdownLineEnding`) or markdown space (see `markdownSpace`). + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +export function markdownLineEndingOrSpace(code) { + return code !== null && (code < codes.nul || code === codes.space) +} + +/** + * Check whether a character code is a markdown space. + * + * A **markdown space** is the concrete character U+0020 SPACE (SP) and the + * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT). + * + * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is + * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL + * SPACE (VS) characters, depending on the column at which the tab occurred. + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +export function markdownSpace(code) { + return ( + code === codes.horizontalTab || + code === codes.virtualSpace || + code === codes.space + ) +} + +// Size note: removing ASCII from the regex and using `asciiPunctuation` here +// In fact adds to the bundle size. +/** + * Check whether the character code represents Unicode punctuation. + * + * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation, + * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf` + * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po` + * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII + * punctuation (see `asciiPunctuation`). + * + * See: + * **\[UNICODE]**: + * [The Unicode Standard](https://www.unicode.org/versions/). + * Unicode Consortium. + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +export const unicodePunctuation = regexCheck(unicodePunctuationRegex) + +/** + * Check whether the character code represents Unicode whitespace. + * + * Note that this does handle micromark specific markdown whitespace characters. + * See `markdownLineEndingOrSpace` to check that. + * + * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator, + * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF), + * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\[UNICODE]**). + * + * See: + * **\[UNICODE]**: + * [The Unicode Standard](https://www.unicode.org/versions/). + * Unicode Consortium. + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +export const unicodeWhitespace = regexCheck(/\s/) + +/** + * Create a code check from a regex. + * + * @param {RegExp} regex + * @returns {(code: Code) => boolean} + */ +function regexCheck(regex) { + return check + + /** + * Check whether a code matches the bound regex. + * + * @param {Code} code + * Character code. + * @returns {boolean} + * Whether the character code matches the bound regex. + */ + function check(code) { + return code !== null && regex.test(String.fromCharCode(code)) + } +} diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/index.d.ts b/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/index.d.ts new file mode 100644 index 00000000..ba5b5793 --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/index.d.ts @@ -0,0 +1,63 @@ +/** + * Check whether a character code is an ASCII control character. + * + * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL) + * to U+001F (US), or U+007F (DEL). + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +export function asciiControl(code: Code): boolean +/** + * Check whether a character code is a markdown line ending. + * + * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN + * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR). + * + * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE + * RETURN (CR) are replaced by these virtual characters depending on whether + * they occurred together. + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +export function markdownLineEnding(code: Code): boolean +/** + * Check whether a character code is a markdown line ending (see + * `markdownLineEnding`) or markdown space (see `markdownSpace`). + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +export function markdownLineEndingOrSpace(code: Code): boolean +/** + * Check whether a character code is a markdown space. + * + * A **markdown space** is the concrete character U+0020 SPACE (SP) and the + * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT). + * + * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is + * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL + * SPACE (VS) characters, depending on the column at which the tab occurred. + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +export function markdownSpace(code: Code): boolean +export function asciiAlpha(code: Code): boolean +export function asciiAlphanumeric(code: Code): boolean +export function asciiAtext(code: Code): boolean +export function asciiDigit(code: Code): boolean +export function asciiHexDigit(code: Code): boolean +export function asciiPunctuation(code: Code): boolean +export function unicodePunctuation(code: Code): boolean +export function unicodeWhitespace(code: Code): boolean +export type Code = import('micromark-util-types').Code diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/index.js b/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/index.js new file mode 100644 index 00000000..a0ce731d --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/index.js @@ -0,0 +1,246 @@ +/** + * @typedef {import('micromark-util-types').Code} Code + */ + +import {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js' + +/** + * Check whether the character code represents an ASCII alpha (`a` through `z`, + * case insensitive). + * + * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha. + * + * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`) + * to U+005A (`Z`). + * + * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`) + * to U+007A (`z`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +export const asciiAlpha = regexCheck(/[A-Za-z]/) + +/** + * Check whether the character code represents an ASCII alphanumeric (`a` + * through `z`, case insensitive, or `0` through `9`). + * + * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha + * (see `asciiAlpha`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +export const asciiAlphanumeric = regexCheck(/[\dA-Za-z]/) + +/** + * Check whether the character code represents an ASCII atext. + * + * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in + * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`), + * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F + * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E + * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE + * (`{`) to U+007E TILDE (`~`). + * + * See: + * **\[RFC5322]**: + * [Internet Message Format](https://tools.ietf.org/html/rfc5322). + * P. Resnick. + * IETF. + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +export const asciiAtext = regexCheck(/[#-'*+\--9=?A-Z^-~]/) + +/** + * Check whether a character code is an ASCII control character. + * + * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL) + * to U+001F (US), or U+007F (DEL). + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +export function asciiControl(code) { + return ( + // Special whitespace codes (which have negative values), C0 and Control + // character DEL + code !== null && (code < 32 || code === 127) + ) +} + +/** + * Check whether the character code represents an ASCII digit (`0` through `9`). + * + * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to + * U+0039 (`9`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +export const asciiDigit = regexCheck(/\d/) + +/** + * Check whether the character code represents an ASCII hex digit (`a` through + * `f`, case insensitive, or `0` through `9`). + * + * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex + * digit, or an ASCII lower hex digit. + * + * An **ASCII upper hex digit** is a character in the inclusive range U+0041 + * (`A`) to U+0046 (`F`). + * + * An **ASCII lower hex digit** is a character in the inclusive range U+0061 + * (`a`) to U+0066 (`f`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +export const asciiHexDigit = regexCheck(/[\dA-Fa-f]/) + +/** + * Check whether the character code represents ASCII punctuation. + * + * An **ASCII punctuation** is a character in the inclusive ranges U+0021 + * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT + * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT + * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`). + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +export const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/) + +/** + * Check whether a character code is a markdown line ending. + * + * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN + * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR). + * + * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE + * RETURN (CR) are replaced by these virtual characters depending on whether + * they occurred together. + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +export function markdownLineEnding(code) { + return code !== null && code < -2 +} + +/** + * Check whether a character code is a markdown line ending (see + * `markdownLineEnding`) or markdown space (see `markdownSpace`). + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +export function markdownLineEndingOrSpace(code) { + return code !== null && (code < 0 || code === 32) +} + +/** + * Check whether a character code is a markdown space. + * + * A **markdown space** is the concrete character U+0020 SPACE (SP) and the + * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT). + * + * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is + * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL + * SPACE (VS) characters, depending on the column at which the tab occurred. + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +export function markdownSpace(code) { + return code === -2 || code === -1 || code === 32 +} + +// Size note: removing ASCII from the regex and using `asciiPunctuation` here +// In fact adds to the bundle size. +/** + * Check whether the character code represents Unicode punctuation. + * + * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation, + * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf` + * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po` + * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII + * punctuation (see `asciiPunctuation`). + * + * See: + * **\[UNICODE]**: + * [The Unicode Standard](https://www.unicode.org/versions/). + * Unicode Consortium. + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +export const unicodePunctuation = regexCheck(unicodePunctuationRegex) + +/** + * Check whether the character code represents Unicode whitespace. + * + * Note that this does handle micromark specific markdown whitespace characters. + * See `markdownLineEndingOrSpace` to check that. + * + * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator, + * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF), + * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\[UNICODE]**). + * + * See: + * **\[UNICODE]**: + * [The Unicode Standard](https://www.unicode.org/versions/). + * Unicode Consortium. + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +export const unicodeWhitespace = regexCheck(/\s/) + +/** + * Create a code check from a regex. + * + * @param {RegExp} regex + * @returns {(code: Code) => boolean} + */ +function regexCheck(regex) { + return check + + /** + * Check whether a code matches the bound regex. + * + * @param {Code} code + * Character code. + * @returns {boolean} + * Whether the character code matches the bound regex. + */ + function check(code) { + return code !== null && regex.test(String.fromCharCode(code)) + } +} diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/package.json b/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/package.json new file mode 100644 index 00000000..5924bfbc --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/package.json @@ -0,0 +1,57 @@ +{ + "name": "micromark-util-character", + "version": "1.2.0", + "description": "micromark utility to handle character codes", + "license": "MIT", + "keywords": [ + "micromark", + "util", + "utility", + "character" + ], + "repository": "https://github.com/micromark/micromark/tree/main/packages/micromark-util-character", + "bugs": "https://github.com/micromark/micromark/issues", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "author": "Titus Wormer (https://wooorm.com)", + "contributors": [ + "Titus Wormer (https://wooorm.com)" + ], + "sideEffects": false, + "type": "module", + "main": "index.js", + "types": "dev/index.d.ts", + "files": [ + "dev/", + "lib/", + "index.d.ts", + "index.js" + ], + "exports": { + "types": "./dev/index.d.ts", + "development": "./dev/index.js", + "default": "./index.js" + }, + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + }, + "scripts": { + "build": "micromark-build" + }, + "xo": false, + "typeCoverage": { + "atLeast": 100, + "detail": true, + "strict": true, + "ignoreCatch": true + } +} diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/readme.md b/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/readme.md new file mode 100644 index 00000000..c6563afd --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-character/readme.md @@ -0,0 +1,444 @@ +# micromark-util-character + +[![Build][build-badge]][build] +[![Coverage][coverage-badge]][coverage] +[![Downloads][downloads-badge]][downloads] +[![Size][bundle-size-badge]][bundle-size] +[![Sponsors][sponsors-badge]][opencollective] +[![Backers][backers-badge]][opencollective] +[![Chat][chat-badge]][chat] + +[micromark][] utility to handle [character codes][code]. + +## Contents + +* [What is this?](#what-is-this) +* [When should I use this?](#when-should-i-use-this) +* [Install](#install) +* [Use](#use) +* [API](#api) + * [`asciiAlpha(code)`](#asciialphacode) + * [`asciiAlphanumeric(code)`](#asciialphanumericcode) + * [`asciiAtext(code)`](#asciiatextcode) + * [`asciiControl(code)`](#asciicontrolcode) + * [`asciiDigit(code)`](#asciidigitcode) + * [`asciiHexDigit(code)`](#asciihexdigitcode) + * [`asciiPunctuation(code)`](#asciipunctuationcode) + * [`markdownLineEnding(code)`](#markdownlineendingcode) + * [`markdownLineEndingOrSpace(code)`](#markdownlineendingorspacecode) + * [`markdownSpace(code)`](#markdownspacecode) + * [`unicodePunctuation(code)`](#unicodepunctuationcode) + * [`unicodeWhitespace(code)`](#unicodewhitespacecode) +* [Types](#types) +* [Compatibility](#compatibility) +* [Security](#security) +* [Contribute](#contribute) +* [License](#license) + +## What is this? + +This package exposes algorithms to check whether characters match groups. + +## When should I use this? + +This package might be useful when you are making your own micromark extensions. + +## Install + +This package is [ESM only][esm]. +In Node.js (version 16+), install with [npm][]: + +```sh +npm install micromark-util-character +``` + +In Deno with [`esm.sh`][esmsh]: + +```js +import * as character from 'https://esm.sh/micromark-util-character@1' +``` + +In browsers with [`esm.sh`][esmsh]: + +```html + +``` + +## Use + +```js +import {asciiAlpha} from 'micromark-util-character' + +console.log(asciiAlpha(64)) // false +console.log(asciiAlpha(65)) // true +``` + +## API + +This module exports the identifiers +[`asciiAlpha`][api-ascii-alpha], +[`asciiAlphanumeric`][api-ascii-alphanumeric], +[`asciiAtext`][api-ascii-atext], +[`asciiControl`][api-ascii-control], +[`asciiDigit`][api-ascii-digit], +[`asciiHexDigit`][api-ascii-hex-digit], +[`asciiPunctuation`][api-ascii-punctuation], +[`markdownLineEnding`][api-markdown-line-ending], +[`markdownLineEndingOrSpace`][api-markdown-line-ending-or-space], +[`markdownSpace`][api-markdown-space], +[`unicodePunctuation`][api-unicode-punctuation], +[`unicodeWhitespace`][api-unicode-whitespace]. +There is no default export. + +### `asciiAlpha(code)` + +Check whether the [character code][code] represents an ASCII alpha (`a` through +`z`, case insensitive). + +An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha. + +An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`) +to U+005A (`Z`). + +An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`) +to U+007A (`z`). + +###### Parameters + +* `code` (`Code`) + — code + +###### Returns + +Whether it matches (`boolean`). + +### `asciiAlphanumeric(code)` + +Check whether the [character code][code] represents an ASCII alphanumeric (`a` +through `z`, case insensitive, or `0` through `9`). + +An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha +(see `asciiAlpha`). + +###### Parameters + +* `code` (`Code`) + — code + +###### Returns + +Whether it matches (`boolean`). + +### `asciiAtext(code)` + +Check whether the [character code][code] represents an ASCII atext. + +atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in +the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`), +U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F +SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E +CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE +(`{`) to U+007E TILDE (`~`) (**\[RFC5322]**). + +See **\[RFC5322]**:\ +[Internet Message Format](https://tools.ietf.org/html/rfc5322).\ +P. Resnick.\ +IETF. + +###### Parameters + +* `code` (`Code`) + — code + +###### Returns + +Whether it matches (`boolean`). + +### `asciiControl(code)` + +Check whether a [character code][code] is an ASCII control character. + +An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL) +to U+001F (US), or U+007F (DEL). + +###### Parameters + +* `code` (`Code`) + — code + +###### Returns + +Whether it matches (`boolean`). + +### `asciiDigit(code)` + +Check whether the [character code][code] represents an ASCII digit (`0` through +`9`). + +An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to +U+0039 (`9`). + +###### Parameters + +* `code` (`Code`) + — code + +###### Returns + +Whether it matches (`boolean`). + +### `asciiHexDigit(code)` + +Check whether the [character code][code] represents an ASCII hex digit (`a` +through `f`, case insensitive, or `0` through `9`). + +An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex +digit, or an ASCII lower hex digit. + +An **ASCII upper hex digit** is a character in the inclusive range U+0041 +(`A`) to U+0046 (`F`). + +An **ASCII lower hex digit** is a character in the inclusive range U+0061 +(`a`) to U+0066 (`f`). + +###### Parameters + +* `code` (`Code`) + — code + +###### Returns + +Whether it matches (`boolean`). + +### `asciiPunctuation(code)` + +Check whether the [character code][code] represents ASCII punctuation. + +An **ASCII punctuation** is a character in the inclusive ranges U+0021 +EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT +SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT +(`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`). + +###### Parameters + +* `code` (`Code`) + — code + +###### Returns + +Whether it matches (`boolean`). + +### `markdownLineEnding(code)` + +Check whether a [character code][code] is a markdown line ending. + +A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN +LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR). + +In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE +RETURN (CR) are replaced by these virtual characters depending on whether +they occurred together. + +###### Parameters + +* `code` (`Code`) + — code + +###### Returns + +Whether it matches (`boolean`). + +### `markdownLineEndingOrSpace(code)` + +Check whether a [character code][code] is a markdown line ending (see +`markdownLineEnding`) or markdown space (see `markdownSpace`). + +###### Parameters + +* `code` (`Code`) + — code + +###### Returns + +Whether it matches (`boolean`). + +### `markdownSpace(code)` + +Check whether a [character code][code] is a markdown space. + +A **markdown space** is the concrete character U+0020 SPACE (SP) and the +virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT). + +In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is +replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL +SPACE (VS) characters, depending on the column at which the tab occurred. + +###### Parameters + +* `code` (`Code`) + — code + +###### Returns + +Whether it matches (`boolean`). + +### `unicodePunctuation(code)` + +Check whether the [character code][code] represents Unicode punctuation. + +A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation, +Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf` +(Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po` +(Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII +punctuation (see `asciiPunctuation`) (**\[UNICODE]**). + +See **\[UNICODE]**:\ +[The Unicode Standard](https://www.unicode.org/versions/).\ +Unicode Consortium. + +###### Parameters + +* `code` (`Code`) + — code + +###### Returns + +Whether it matches (`boolean`). + +### `unicodeWhitespace(code)` + +Check whether the [character code][code] represents Unicode whitespace. + +Note that this does handle micromark specific markdown whitespace characters. +See `markdownLineEndingOrSpace` to check that. + +A **Unicode whitespace** is a character in the Unicode `Zs` (Separator, +Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF), +U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\[UNICODE]**). + +See **\[UNICODE]**:\ +[The Unicode Standard](https://www.unicode.org/versions/).\ +Unicode Consortium. + +###### Parameters + +* `code` (`Code`) + — code + +###### Returns + +Whether it matches (`boolean`). + +## Types + +This package is fully typed with [TypeScript][]. +It exports no additional types. + +## Compatibility + +Projects maintained by the unified collective are compatible with all maintained +versions of Node.js. +As of now, that is Node.js 16+. +Our projects sometimes work with older versions, but this is not guaranteed. + +This package works with `micromark` version 3+. + +## Security + +This package is safe. +See [`security.md`][securitymd] in [`micromark/.github`][health] for how to +submit a security report. + +## Contribute + +See [`contributing.md`][contributing] in [`micromark/.github`][health] for ways +to get started. +See [`support.md`][support] for ways to get help. + +This project has a [code of conduct][coc]. +By interacting with this repository, organisation, or community you agree to +abide by its terms. + +## License + +[MIT][license] © [Titus Wormer][author] + + + +[build-badge]: https://github.com/micromark/micromark/workflows/main/badge.svg + +[build]: https://github.com/micromark/micromark/actions + +[coverage-badge]: https://img.shields.io/codecov/c/github/micromark/micromark.svg + +[coverage]: https://codecov.io/github/micromark/micromark + +[downloads-badge]: https://img.shields.io/npm/dm/micromark-util-character.svg + +[downloads]: https://www.npmjs.com/package/micromark-util-character + +[bundle-size-badge]: https://img.shields.io/badge/dynamic/json?label=minzipped%20size&query=$.size.compressedSize&url=https://deno.bundlejs.com/?q=micromark-util-character + +[bundle-size]: https://bundlejs.com/?q=micromark-util-character + +[sponsors-badge]: https://opencollective.com/unified/sponsors/badge.svg + +[backers-badge]: https://opencollective.com/unified/backers/badge.svg + +[opencollective]: https://opencollective.com/unified + +[npm]: https://docs.npmjs.com/cli/install + +[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c + +[esmsh]: https://esm.sh + +[chat-badge]: https://img.shields.io/badge/chat-discussions-success.svg + +[chat]: https://github.com/micromark/micromark/discussions + +[license]: https://github.com/micromark/micromark/blob/main/license + +[author]: https://wooorm.com + +[health]: https://github.com/micromark/.github + +[securitymd]: https://github.com/micromark/.github/blob/main/security.md + +[contributing]: https://github.com/micromark/.github/blob/main/contributing.md + +[support]: https://github.com/micromark/.github/blob/main/support.md + +[coc]: https://github.com/micromark/.github/blob/main/code-of-conduct.md + +[typescript]: https://www.typescriptlang.org + +[micromark]: https://github.com/micromark/micromark + +[code]: https://github.com/micromark/micromark#preprocess + +[api-ascii-alpha]: #asciialphacode + +[api-ascii-alphanumeric]: #asciialphanumericcode + +[api-ascii-atext]: #asciiatextcode + +[api-ascii-control]: #asciicontrolcode + +[api-ascii-digit]: #asciidigitcode + +[api-ascii-hex-digit]: #asciihexdigitcode + +[api-ascii-punctuation]: #asciipunctuationcode + +[api-markdown-line-ending]: #markdownlineendingcode + +[api-markdown-line-ending-or-space]: #markdownlineendingorspacecode + +[api-markdown-space]: #markdownspacecode + +[api-unicode-punctuation]: #unicodepunctuationcode + +[api-unicode-whitespace]: #unicodewhitespacecode diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/codes.d.ts b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/codes.d.ts new file mode 100644 index 00000000..35ec45c7 --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/codes.d.ts @@ -0,0 +1,138 @@ +export namespace codes { + const carriageReturn: -5 + const lineFeed: -4 + const carriageReturnLineFeed: -3 + const horizontalTab: -2 + const virtualSpace: -1 + const eof: null + const nul: 0 + const soh: 1 + const stx: 2 + const etx: 3 + const eot: 4 + const enq: 5 + const ack: 6 + const bel: 7 + const bs: 8 + const ht: 9 + const lf: 10 + const vt: 11 + const ff: 12 + const cr: 13 + const so: 14 + const si: 15 + const dle: 16 + const dc1: 17 + const dc2: 18 + const dc3: 19 + const dc4: 20 + const nak: 21 + const syn: 22 + const etb: 23 + const can: 24 + const em: 25 + const sub: 26 + const esc: 27 + const fs: 28 + const gs: 29 + const rs: 30 + const us: 31 + const space: 32 + const exclamationMark: 33 + const quotationMark: 34 + const numberSign: 35 + const dollarSign: 36 + const percentSign: 37 + const ampersand: 38 + const apostrophe: 39 + const leftParenthesis: 40 + const rightParenthesis: 41 + const asterisk: 42 + const plusSign: 43 + const comma: 44 + const dash: 45 + const dot: 46 + const slash: 47 + const digit0: 48 + const digit1: 49 + const digit2: 50 + const digit3: 51 + const digit4: 52 + const digit5: 53 + const digit6: 54 + const digit7: 55 + const digit8: 56 + const digit9: 57 + const colon: 58 + const semicolon: 59 + const lessThan: 60 + const equalsTo: 61 + const greaterThan: 62 + const questionMark: 63 + const atSign: 64 + const uppercaseA: 65 + const uppercaseB: 66 + const uppercaseC: 67 + const uppercaseD: 68 + const uppercaseE: 69 + const uppercaseF: 70 + const uppercaseG: 71 + const uppercaseH: 72 + const uppercaseI: 73 + const uppercaseJ: 74 + const uppercaseK: 75 + const uppercaseL: 76 + const uppercaseM: 77 + const uppercaseN: 78 + const uppercaseO: 79 + const uppercaseP: 80 + const uppercaseQ: 81 + const uppercaseR: 82 + const uppercaseS: 83 + const uppercaseT: 84 + const uppercaseU: 85 + const uppercaseV: 86 + const uppercaseW: 87 + const uppercaseX: 88 + const uppercaseY: 89 + const uppercaseZ: 90 + const leftSquareBracket: 91 + const backslash: 92 + const rightSquareBracket: 93 + const caret: 94 + const underscore: 95 + const graveAccent: 96 + const lowercaseA: 97 + const lowercaseB: 98 + const lowercaseC: 99 + const lowercaseD: 100 + const lowercaseE: 101 + const lowercaseF: 102 + const lowercaseG: 103 + const lowercaseH: 104 + const lowercaseI: 105 + const lowercaseJ: 106 + const lowercaseK: 107 + const lowercaseL: 108 + const lowercaseM: 109 + const lowercaseN: 110 + const lowercaseO: 111 + const lowercaseP: 112 + const lowercaseQ: 113 + const lowercaseR: 114 + const lowercaseS: 115 + const lowercaseT: 116 + const lowercaseU: 117 + const lowercaseV: 118 + const lowercaseW: 119 + const lowercaseX: 120 + const lowercaseY: 121 + const lowercaseZ: 122 + const leftCurlyBrace: 123 + const verticalBar: 124 + const rightCurlyBrace: 125 + const tilde: 126 + const del: 127 + const byteOrderMarker: 65279 + const replacementCharacter: 65533 +} diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/codes.js b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/codes.js new file mode 100644 index 00000000..b2b73cd0 --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/codes.js @@ -0,0 +1,158 @@ +/** + * Character codes. + * + * This module is compiled away! + * + * micromark works based on character codes. + * This module contains constants for the ASCII block and the replacement + * character. + * A couple of them are handled in a special way, such as the line endings + * (CR, LF, and CR+LF, commonly known as end-of-line: EOLs), the tab (horizontal + * tab) and its expansion based on what column it’s at (virtual space), + * and the end-of-file (eof) character. + * As values are preprocessed before handling them, the actual characters LF, + * CR, HT, and NUL (which is present as the replacement character), are + * guaranteed to not exist. + * + * Unicode basic latin block. + */ +export const codes = /** @type {const} */ ({ + carriageReturn: -5, + lineFeed: -4, + carriageReturnLineFeed: -3, + horizontalTab: -2, + virtualSpace: -1, + eof: null, + nul: 0, + soh: 1, + stx: 2, + etx: 3, + eot: 4, + enq: 5, + ack: 6, + bel: 7, + bs: 8, + ht: 9, // `\t` + lf: 10, // `\n` + vt: 11, // `\v` + ff: 12, // `\f` + cr: 13, // `\r` + so: 14, + si: 15, + dle: 16, + dc1: 17, + dc2: 18, + dc3: 19, + dc4: 20, + nak: 21, + syn: 22, + etb: 23, + can: 24, + em: 25, + sub: 26, + esc: 27, + fs: 28, + gs: 29, + rs: 30, + us: 31, + space: 32, + exclamationMark: 33, // `!` + quotationMark: 34, // `"` + numberSign: 35, // `#` + dollarSign: 36, // `$` + percentSign: 37, // `%` + ampersand: 38, // `&` + apostrophe: 39, // `'` + leftParenthesis: 40, // `(` + rightParenthesis: 41, // `)` + asterisk: 42, // `*` + plusSign: 43, // `+` + comma: 44, // `,` + dash: 45, // `-` + dot: 46, // `.` + slash: 47, // `/` + digit0: 48, // `0` + digit1: 49, // `1` + digit2: 50, // `2` + digit3: 51, // `3` + digit4: 52, // `4` + digit5: 53, // `5` + digit6: 54, // `6` + digit7: 55, // `7` + digit8: 56, // `8` + digit9: 57, // `9` + colon: 58, // `:` + semicolon: 59, // `;` + lessThan: 60, // `<` + equalsTo: 61, // `=` + greaterThan: 62, // `>` + questionMark: 63, // `?` + atSign: 64, // `@` + uppercaseA: 65, // `A` + uppercaseB: 66, // `B` + uppercaseC: 67, // `C` + uppercaseD: 68, // `D` + uppercaseE: 69, // `E` + uppercaseF: 70, // `F` + uppercaseG: 71, // `G` + uppercaseH: 72, // `H` + uppercaseI: 73, // `I` + uppercaseJ: 74, // `J` + uppercaseK: 75, // `K` + uppercaseL: 76, // `L` + uppercaseM: 77, // `M` + uppercaseN: 78, // `N` + uppercaseO: 79, // `O` + uppercaseP: 80, // `P` + uppercaseQ: 81, // `Q` + uppercaseR: 82, // `R` + uppercaseS: 83, // `S` + uppercaseT: 84, // `T` + uppercaseU: 85, // `U` + uppercaseV: 86, // `V` + uppercaseW: 87, // `W` + uppercaseX: 88, // `X` + uppercaseY: 89, // `Y` + uppercaseZ: 90, // `Z` + leftSquareBracket: 91, // `[` + backslash: 92, // `\` + rightSquareBracket: 93, // `]` + caret: 94, // `^` + underscore: 95, // `_` + graveAccent: 96, // `` ` `` + lowercaseA: 97, // `a` + lowercaseB: 98, // `b` + lowercaseC: 99, // `c` + lowercaseD: 100, // `d` + lowercaseE: 101, // `e` + lowercaseF: 102, // `f` + lowercaseG: 103, // `g` + lowercaseH: 104, // `h` + lowercaseI: 105, // `i` + lowercaseJ: 106, // `j` + lowercaseK: 107, // `k` + lowercaseL: 108, // `l` + lowercaseM: 109, // `m` + lowercaseN: 110, // `n` + lowercaseO: 111, // `o` + lowercaseP: 112, // `p` + lowercaseQ: 113, // `q` + lowercaseR: 114, // `r` + lowercaseS: 115, // `s` + lowercaseT: 116, // `t` + lowercaseU: 117, // `u` + lowercaseV: 118, // `v` + lowercaseW: 119, // `w` + lowercaseX: 120, // `x` + lowercaseY: 121, // `y` + lowercaseZ: 122, // `z` + leftCurlyBrace: 123, // `{` + verticalBar: 124, // `|` + rightCurlyBrace: 125, // `}` + tilde: 126, // `~` + del: 127, + // Unicode Specials block. + byteOrderMarker: 65279, + // Unicode Specials block. + replacementCharacter: 65533 // `�` +}) diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/constants.d.ts b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/constants.d.ts new file mode 100644 index 00000000..4da46ef1 --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/constants.d.ts @@ -0,0 +1,36 @@ +export namespace constants { + const attentionSideBefore: 1 + const attentionSideAfter: 2 + const atxHeadingOpeningFenceSizeMax: 6 + const autolinkDomainSizeMax: 63 + const autolinkSchemeSizeMax: 32 + const cdataOpeningString: 'CDATA[' + const characterGroupWhitespace: 1 + const characterGroupPunctuation: 2 + const characterReferenceDecimalSizeMax: 7 + const characterReferenceHexadecimalSizeMax: 6 + const characterReferenceNamedSizeMax: 31 + const codeFencedSequenceSizeMin: 3 + const contentTypeDocument: 'document' + const contentTypeFlow: 'flow' + const contentTypeContent: 'content' + const contentTypeString: 'string' + const contentTypeText: 'text' + const hardBreakPrefixSizeMin: 2 + const htmlRaw: 1 + const htmlComment: 2 + const htmlInstruction: 3 + const htmlDeclaration: 4 + const htmlCdata: 5 + const htmlBasic: 6 + const htmlComplete: 7 + const htmlRawSizeMax: 8 + const linkResourceDestinationBalanceMax: 32 + const linkReferenceSizeMax: 999 + const listItemValueSizeMax: 10 + const numericBaseDecimal: 10 + const numericBaseHexadecimal: 16 + const tabSize: 4 + const thematicBreakMarkerCountMin: 3 + const v8MaxSafeChunkSize: 10000 +} diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/constants.js b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/constants.js new file mode 100644 index 00000000..6bea14eb --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/constants.js @@ -0,0 +1,44 @@ +/** + * This module is compiled away! + * + * Parsing markdown comes with a couple of constants, such as minimum or maximum + * sizes of certain sequences. + * Additionally, there are a couple symbols used inside micromark. + * These are all defined here, but compiled away by scripts. + */ +export const constants = /** @type {const} */ ({ + attentionSideBefore: 1, // Symbol to mark an attention sequence as before content: `*a` + attentionSideAfter: 2, // Symbol to mark an attention sequence as after content: `a*` + atxHeadingOpeningFenceSizeMax: 6, // 6 number signs is fine, 7 isn’t. + autolinkDomainSizeMax: 63, // 63 characters is fine, 64 is too many. + autolinkSchemeSizeMax: 32, // 32 characters is fine, 33 is too many. + cdataOpeningString: 'CDATA[', // And preceded by `` + htmlComment: 2, // Symbol for `` + htmlInstruction: 3, // Symbol for `` + htmlDeclaration: 4, // Symbol for `` + htmlCdata: 5, // Symbol for `` + htmlBasic: 6, // Symbol for `` + htmlRawSizeMax: 8, // Length of `textarea`. + linkResourceDestinationBalanceMax: 32, // See: , + linkReferenceSizeMax: 999, // See: + listItemValueSizeMax: 10, // See: + numericBaseDecimal: 10, + numericBaseHexadecimal: 0x10, + tabSize: 4, // Tabs have a hard-coded size of 4, per CommonMark. + thematicBreakMarkerCountMin: 3, // At least 3 asterisks, dashes, or underscores are needed. + v8MaxSafeChunkSize: 10000 // V8 (and potentially others) have problems injecting giant arrays into other arrays, hence we operate in chunks. +}) diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/package.json b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/package.json new file mode 100644 index 00000000..7d54d6a1 --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/package.json @@ -0,0 +1,59 @@ +{ + "name": "micromark-util-symbol", + "version": "1.1.0", + "description": "micromark utility with symbols", + "license": "MIT", + "keywords": [ + "micromark", + "util", + "utility", + "symbol" + ], + "repository": "https://github.com/micromark/micromark/tree/main/packages/micromark-util-symbol", + "bugs": "https://github.com/micromark/micromark/issues", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "author": "Titus Wormer (https://wooorm.com)", + "contributors": [ + "Titus Wormer (https://wooorm.com)" + ], + "sideEffects": false, + "type": "module", + "files": [ + "codes.d.ts", + "codes.js", + "constants.d.ts", + "constants.js", + "types.d.ts", + "types.js", + "values.d.ts", + "values.js" + ], + "To do": "next major: remove `.js` suffixes", + "exports": { + "./codes": "./codes.js", + "./codes.js": "./codes.js", + "./constants": "./constants.js", + "./constants.js": "./constants.js", + "./types": "./types.js", + "./types.js": "./types.js", + "./values": "./values.js", + "./values.js": "./values.js" + }, + "scripts": {}, + "xo": false, + "typeCoverage": { + "atLeast": 100, + "detail": true, + "strict": true, + "ignoreCatch": true + } +} diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/readme.md b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/readme.md new file mode 100644 index 00000000..c59fc7b7 --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/readme.md @@ -0,0 +1,172 @@ +# micromark-util-symbol + +[![Build][build-badge]][build] +[![Coverage][coverage-badge]][coverage] +[![Downloads][downloads-badge]][downloads] +[![Size][bundle-size-badge]][bundle-size] +[![Sponsors][sponsors-badge]][opencollective] +[![Backers][backers-badge]][opencollective] +[![Chat][chat-badge]][chat] + +[micromark][] utility with symbols. + +## Contents + +* [What is this?](#what-is-this) +* [When should I use this?](#when-should-i-use-this) +* [Install](#install) +* [Use](#use) +* [API](#api) +* [Types](#types) +* [Compatibility](#compatibility) +* [Security](#security) +* [Contribute](#contribute) +* [License](#license) + +## What is this? + +This package exposes constants used throughout the micromark ecosystem. + +## When should I use this? + +This package is useful when you are making your own micromark extensions. +It’s useful to reference these constants by name instead of value while +developing. +[`micromark-build`][micromark-build] compiles them away for production code. + +## Install + +This package is [ESM only][esm]. +In Node.js (version 16+), install with [npm][]: + +```sh +npm install micromark-util-symbol +``` + +In Deno with [`esm.sh`][esmsh]: + +```js +import {codes} from 'https://esm.sh/micromark-util-symbol/codes@1' +``` + +In browsers with [`esm.sh`][esmsh]: + +```html + +``` + +## Use + +```js +import {codes} from 'micromark-util-symbol/codes' +import {constants} from 'micromark-util-symbol/constants' +import {types} from 'micromark-util-symbol/types' +import {values} from 'micromark-util-symbol/values' + +console.log(codes.atSign) // 64 +console.log(constants.characterReferenceNamedSizeMax) // 31 +console.log(types.definitionDestinationRaw) // 'definitionDestinationRaw' +console.log(values.atSign) // '@' +``` + +## API + +This package has four entries in its export map: `micromark-util-symbol/codes`, +`micromark-util-symbol/constants`, `micromark-util-symbol/types`, +`micromark-util-symbol/values`. + +Each module exports an identifier with the same name (for example, +`micromark-util-symbol/codes` has `codes`), which is an object mapping strings +to other values. + +See the code for the exposed data. + +## Types + +This package is fully typed with [TypeScript][]. +It exports no additional types. + +## Compatibility + +Projects maintained by the unified collective are compatible with all maintained +versions of Node.js. +As of now, that is Node.js 16+. +Our projects sometimes work with older versions, but this is not guaranteed. + +This package works with `micromark` version 3+. + +## Security + +This package is safe. +See [`security.md`][securitymd] in [`micromark/.github`][health] for how to +submit a security report. + +## Contribute + +See [`contributing.md`][contributing] in [`micromark/.github`][health] for ways +to get started. +See [`support.md`][support] for ways to get help. + +This project has a [code of conduct][coc]. +By interacting with this repository, organisation, or community you agree to +abide by its terms. + +## License + +[MIT][license] © [Titus Wormer][author] + + + +[build-badge]: https://github.com/micromark/micromark/workflows/main/badge.svg + +[build]: https://github.com/micromark/micromark/actions + +[coverage-badge]: https://img.shields.io/codecov/c/github/micromark/micromark.svg + +[coverage]: https://codecov.io/github/micromark/micromark + +[downloads-badge]: https://img.shields.io/npm/dm/micromark-util-symbol.svg + +[downloads]: https://www.npmjs.com/package/micromark-util-symbol + +[bundle-size-badge]: https://img.shields.io/badge/dynamic/json?label=minzipped%20size&query=$.size.compressedSize&url=https://deno.bundlejs.com/?q=micromark-util-symbol + +[bundle-size]: https://bundlejs.com/?q=micromark-util-symbol + +[sponsors-badge]: https://opencollective.com/unified/sponsors/badge.svg + +[backers-badge]: https://opencollective.com/unified/backers/badge.svg + +[opencollective]: https://opencollective.com/unified + +[npm]: https://docs.npmjs.com/cli/install + +[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c + +[esmsh]: https://esm.sh + +[chat-badge]: https://img.shields.io/badge/chat-discussions-success.svg + +[chat]: https://github.com/micromark/micromark/discussions + +[license]: https://github.com/micromark/micromark/blob/main/license + +[author]: https://wooorm.com + +[health]: https://github.com/micromark/.github + +[securitymd]: https://github.com/micromark/.github/blob/main/security.md + +[contributing]: https://github.com/micromark/.github/blob/main/contributing.md + +[support]: https://github.com/micromark/.github/blob/main/support.md + +[coc]: https://github.com/micromark/.github/blob/main/code-of-conduct.md + +[typescript]: https://www.typescriptlang.org + +[micromark]: https://github.com/micromark/micromark + +[micromark-build]: https://github.com/micromark/micromark/tree/main/packages/micromark-build diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/types.d.ts b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/types.d.ts new file mode 100644 index 00000000..3813901f --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/types.d.ts @@ -0,0 +1,105 @@ +export namespace types { + const data: 'data' + const whitespace: 'whitespace' + const lineEnding: 'lineEnding' + const lineEndingBlank: 'lineEndingBlank' + const linePrefix: 'linePrefix' + const lineSuffix: 'lineSuffix' + const atxHeading: 'atxHeading' + const atxHeadingSequence: 'atxHeadingSequence' + const atxHeadingText: 'atxHeadingText' + const autolink: 'autolink' + const autolinkEmail: 'autolinkEmail' + const autolinkMarker: 'autolinkMarker' + const autolinkProtocol: 'autolinkProtocol' + const characterEscape: 'characterEscape' + const characterEscapeValue: 'characterEscapeValue' + const characterReference: 'characterReference' + const characterReferenceMarker: 'characterReferenceMarker' + const characterReferenceMarkerNumeric: 'characterReferenceMarkerNumeric' + const characterReferenceMarkerHexadecimal: 'characterReferenceMarkerHexadecimal' + const characterReferenceValue: 'characterReferenceValue' + const codeFenced: 'codeFenced' + const codeFencedFence: 'codeFencedFence' + const codeFencedFenceSequence: 'codeFencedFenceSequence' + const codeFencedFenceInfo: 'codeFencedFenceInfo' + const codeFencedFenceMeta: 'codeFencedFenceMeta' + const codeFlowValue: 'codeFlowValue' + const codeIndented: 'codeIndented' + const codeText: 'codeText' + const codeTextData: 'codeTextData' + const codeTextPadding: 'codeTextPadding' + const codeTextSequence: 'codeTextSequence' + const content: 'content' + const definition: 'definition' + const definitionDestination: 'definitionDestination' + const definitionDestinationLiteral: 'definitionDestinationLiteral' + const definitionDestinationLiteralMarker: 'definitionDestinationLiteralMarker' + const definitionDestinationRaw: 'definitionDestinationRaw' + const definitionDestinationString: 'definitionDestinationString' + const definitionLabel: 'definitionLabel' + const definitionLabelMarker: 'definitionLabelMarker' + const definitionLabelString: 'definitionLabelString' + const definitionMarker: 'definitionMarker' + const definitionTitle: 'definitionTitle' + const definitionTitleMarker: 'definitionTitleMarker' + const definitionTitleString: 'definitionTitleString' + const emphasis: 'emphasis' + const emphasisSequence: 'emphasisSequence' + const emphasisText: 'emphasisText' + const escapeMarker: 'escapeMarker' + const hardBreakEscape: 'hardBreakEscape' + const hardBreakTrailing: 'hardBreakTrailing' + const htmlFlow: 'htmlFlow' + const htmlFlowData: 'htmlFlowData' + const htmlText: 'htmlText' + const htmlTextData: 'htmlTextData' + const image: 'image' + const label: 'label' + const labelText: 'labelText' + const labelLink: 'labelLink' + const labelImage: 'labelImage' + const labelMarker: 'labelMarker' + const labelImageMarker: 'labelImageMarker' + const labelEnd: 'labelEnd' + const link: 'link' + const paragraph: 'paragraph' + const reference: 'reference' + const referenceMarker: 'referenceMarker' + const referenceString: 'referenceString' + const resource: 'resource' + const resourceDestination: 'resourceDestination' + const resourceDestinationLiteral: 'resourceDestinationLiteral' + const resourceDestinationLiteralMarker: 'resourceDestinationLiteralMarker' + const resourceDestinationRaw: 'resourceDestinationRaw' + const resourceDestinationString: 'resourceDestinationString' + const resourceMarker: 'resourceMarker' + const resourceTitle: 'resourceTitle' + const resourceTitleMarker: 'resourceTitleMarker' + const resourceTitleString: 'resourceTitleString' + const setextHeading: 'setextHeading' + const setextHeadingText: 'setextHeadingText' + const setextHeadingLine: 'setextHeadingLine' + const setextHeadingLineSequence: 'setextHeadingLineSequence' + const strong: 'strong' + const strongSequence: 'strongSequence' + const strongText: 'strongText' + const thematicBreak: 'thematicBreak' + const thematicBreakSequence: 'thematicBreakSequence' + const blockQuote: 'blockQuote' + const blockQuotePrefix: 'blockQuotePrefix' + const blockQuoteMarker: 'blockQuoteMarker' + const blockQuotePrefixWhitespace: 'blockQuotePrefixWhitespace' + const listOrdered: 'listOrdered' + const listUnordered: 'listUnordered' + const listItemIndent: 'listItemIndent' + const listItemMarker: 'listItemMarker' + const listItemPrefix: 'listItemPrefix' + const listItemPrefixWhitespace: 'listItemPrefixWhitespace' + const listItemValue: 'listItemValue' + const chunkDocument: 'chunkDocument' + const chunkContent: 'chunkContent' + const chunkFlow: 'chunkFlow' + const chunkText: 'chunkText' + const chunkString: 'chunkString' +} diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/types.js b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/types.js new file mode 100644 index 00000000..e4d8359f --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/types.js @@ -0,0 +1,453 @@ +/** + * This module is compiled away! + * + * Here is the list of all types of tokens exposed by micromark, with a short + * explanation of what they include and where they are found. + * In picking names, generally, the rule is to be as explicit as possible + * instead of reusing names. + * For example, there is a `definitionDestination` and a `resourceDestination`, + * instead of one shared name. + */ + +// Note: when changing the next record, you must also change `TokenTypeMap` +// in `micromark-util-types/index.d.ts`. +export const types = /** @type {const} */ ({ + // Generic type for data, such as in a title, a destination, etc. + data: 'data', + + // Generic type for syntactic whitespace (tabs, virtual spaces, spaces). + // Such as, between a fenced code fence and an info string. + whitespace: 'whitespace', + + // Generic type for line endings (line feed, carriage return, carriage return + + // line feed). + lineEnding: 'lineEnding', + + // A line ending, but ending a blank line. + lineEndingBlank: 'lineEndingBlank', + + // Generic type for whitespace (tabs, virtual spaces, spaces) at the start of a + // line. + linePrefix: 'linePrefix', + + // Generic type for whitespace (tabs, virtual spaces, spaces) at the end of a + // line. + lineSuffix: 'lineSuffix', + + // Whole ATX heading: + // + // ```markdown + // # + // ## Alpha + // ### Bravo ### + // ``` + // + // Includes `atxHeadingSequence`, `whitespace`, `atxHeadingText`. + atxHeading: 'atxHeading', + + // Sequence of number signs in an ATX heading (`###`). + atxHeadingSequence: 'atxHeadingSequence', + + // Content in an ATX heading (`alpha`). + // Includes text. + atxHeadingText: 'atxHeadingText', + + // Whole autolink (`` or ``) + // Includes `autolinkMarker` and `autolinkProtocol` or `autolinkEmail`. + autolink: 'autolink', + + // Email autolink w/o markers (`admin@example.com`) + autolinkEmail: 'autolinkEmail', + + // Marker around an `autolinkProtocol` or `autolinkEmail` (`<` or `>`). + autolinkMarker: 'autolinkMarker', + + // Protocol autolink w/o markers (`https://example.com`) + autolinkProtocol: 'autolinkProtocol', + + // A whole character escape (`\-`). + // Includes `escapeMarker` and `characterEscapeValue`. + characterEscape: 'characterEscape', + + // The escaped character (`-`). + characterEscapeValue: 'characterEscapeValue', + + // A whole character reference (`&`, `≠`, or `𝌆`). + // Includes `characterReferenceMarker`, an optional + // `characterReferenceMarkerNumeric`, in which case an optional + // `characterReferenceMarkerHexadecimal`, and a `characterReferenceValue`. + characterReference: 'characterReference', + + // The start or end marker (`&` or `;`). + characterReferenceMarker: 'characterReferenceMarker', + + // Mark reference as numeric (`#`). + characterReferenceMarkerNumeric: 'characterReferenceMarkerNumeric', + + // Mark reference as numeric (`x` or `X`). + characterReferenceMarkerHexadecimal: 'characterReferenceMarkerHexadecimal', + + // Value of character reference w/o markers (`amp`, `8800`, or `1D306`). + characterReferenceValue: 'characterReferenceValue', + + // Whole fenced code: + // + // ````markdown + // ```js + // alert(1) + // ``` + // ```` + codeFenced: 'codeFenced', + + // A fenced code fence, including whitespace, sequence, info, and meta + // (` ```js `). + codeFencedFence: 'codeFencedFence', + + // Sequence of grave accent or tilde characters (` ``` `) in a fence. + codeFencedFenceSequence: 'codeFencedFenceSequence', + + // Info word (`js`) in a fence. + // Includes string. + codeFencedFenceInfo: 'codeFencedFenceInfo', + + // Meta words (`highlight="1"`) in a fence. + // Includes string. + codeFencedFenceMeta: 'codeFencedFenceMeta', + + // A line of code. + codeFlowValue: 'codeFlowValue', + + // Whole indented code: + // + // ```markdown + // alert(1) + // ``` + // + // Includes `lineEnding`, `linePrefix`, and `codeFlowValue`. + codeIndented: 'codeIndented', + + // A text code (``` `alpha` ```). + // Includes `codeTextSequence`, `codeTextData`, `lineEnding`, and can include + // `codeTextPadding`. + codeText: 'codeText', + + codeTextData: 'codeTextData', + + // A space or line ending right after or before a tick. + codeTextPadding: 'codeTextPadding', + + // A text code fence (` `` `). + codeTextSequence: 'codeTextSequence', + + // Whole content: + // + // ```markdown + // [a]: b + // c + // = + // d + // ``` + // + // Includes `paragraph` and `definition`. + content: 'content', + // Whole definition: + // + // ```markdown + // [micromark]: https://github.com/micromark/micromark + // ``` + // + // Includes `definitionLabel`, `definitionMarker`, `whitespace`, + // `definitionDestination`, and optionally `lineEnding` and `definitionTitle`. + definition: 'definition', + + // Destination of a definition (`https://github.com/micromark/micromark` or + // ``). + // Includes `definitionDestinationLiteral` or `definitionDestinationRaw`. + definitionDestination: 'definitionDestination', + + // Enclosed destination of a definition + // (``). + // Includes `definitionDestinationLiteralMarker` and optionally + // `definitionDestinationString`. + definitionDestinationLiteral: 'definitionDestinationLiteral', + + // Markers of an enclosed definition destination (`<` or `>`). + definitionDestinationLiteralMarker: 'definitionDestinationLiteralMarker', + + // Unenclosed destination of a definition + // (`https://github.com/micromark/micromark`). + // Includes `definitionDestinationString`. + definitionDestinationRaw: 'definitionDestinationRaw', + + // Text in an destination (`https://github.com/micromark/micromark`). + // Includes string. + definitionDestinationString: 'definitionDestinationString', + + // Label of a definition (`[micromark]`). + // Includes `definitionLabelMarker` and `definitionLabelString`. + definitionLabel: 'definitionLabel', + + // Markers of a definition label (`[` or `]`). + definitionLabelMarker: 'definitionLabelMarker', + + // Value of a definition label (`micromark`). + // Includes string. + definitionLabelString: 'definitionLabelString', + + // Marker between a label and a destination (`:`). + definitionMarker: 'definitionMarker', + + // Title of a definition (`"x"`, `'y'`, or `(z)`). + // Includes `definitionTitleMarker` and optionally `definitionTitleString`. + definitionTitle: 'definitionTitle', + + // Marker around a title of a definition (`"`, `'`, `(`, or `)`). + definitionTitleMarker: 'definitionTitleMarker', + + // Data without markers in a title (`z`). + // Includes string. + definitionTitleString: 'definitionTitleString', + + // Emphasis (`*alpha*`). + // Includes `emphasisSequence` and `emphasisText`. + emphasis: 'emphasis', + + // Sequence of emphasis markers (`*` or `_`). + emphasisSequence: 'emphasisSequence', + + // Emphasis text (`alpha`). + // Includes text. + emphasisText: 'emphasisText', + + // The character escape marker (`\`). + escapeMarker: 'escapeMarker', + + // A hard break created with a backslash (`\\n`). + // Note: does not include the line ending. + hardBreakEscape: 'hardBreakEscape', + + // A hard break created with trailing spaces (` \n`). + // Does not include the line ending. + hardBreakTrailing: 'hardBreakTrailing', + + // Flow HTML: + // + // ```markdown + //
b`). + // Includes `lineEnding`, `htmlTextData`. + htmlText: 'htmlText', + + htmlTextData: 'htmlTextData', + + // Whole image (`![alpha](bravo)`, `![alpha][bravo]`, `![alpha][]`, or + // `![alpha]`). + // Includes `label` and an optional `resource` or `reference`. + image: 'image', + + // Whole link label (`[*alpha*]`). + // Includes `labelLink` or `labelImage`, `labelText`, and `labelEnd`. + label: 'label', + + // Text in an label (`*alpha*`). + // Includes text. + labelText: 'labelText', + + // Start a link label (`[`). + // Includes a `labelMarker`. + labelLink: 'labelLink', + + // Start an image label (`![`). + // Includes `labelImageMarker` and `labelMarker`. + labelImage: 'labelImage', + + // Marker of a label (`[` or `]`). + labelMarker: 'labelMarker', + + // Marker to start an image (`!`). + labelImageMarker: 'labelImageMarker', + + // End a label (`]`). + // Includes `labelMarker`. + labelEnd: 'labelEnd', + + // Whole link (`[alpha](bravo)`, `[alpha][bravo]`, `[alpha][]`, or `[alpha]`). + // Includes `label` and an optional `resource` or `reference`. + link: 'link', + + // Whole paragraph: + // + // ```markdown + // alpha + // bravo. + // ``` + // + // Includes text. + paragraph: 'paragraph', + + // A reference (`[alpha]` or `[]`). + // Includes `referenceMarker` and an optional `referenceString`. + reference: 'reference', + + // A reference marker (`[` or `]`). + referenceMarker: 'referenceMarker', + + // Reference text (`alpha`). + // Includes string. + referenceString: 'referenceString', + + // A resource (`(https://example.com "alpha")`). + // Includes `resourceMarker`, an optional `resourceDestination` with an optional + // `whitespace` and `resourceTitle`. + resource: 'resource', + + // A resource destination (`https://example.com`). + // Includes `resourceDestinationLiteral` or `resourceDestinationRaw`. + resourceDestination: 'resourceDestination', + + // A literal resource destination (``). + // Includes `resourceDestinationLiteralMarker` and optionally + // `resourceDestinationString`. + resourceDestinationLiteral: 'resourceDestinationLiteral', + + // A resource destination marker (`<` or `>`). + resourceDestinationLiteralMarker: 'resourceDestinationLiteralMarker', + + // A raw resource destination (`https://example.com`). + // Includes `resourceDestinationString`. + resourceDestinationRaw: 'resourceDestinationRaw', + + // Resource destination text (`https://example.com`). + // Includes string. + resourceDestinationString: 'resourceDestinationString', + + // A resource marker (`(` or `)`). + resourceMarker: 'resourceMarker', + + // A resource title (`"alpha"`, `'alpha'`, or `(alpha)`). + // Includes `resourceTitleMarker` and optionally `resourceTitleString`. + resourceTitle: 'resourceTitle', + + // A resource title marker (`"`, `'`, `(`, or `)`). + resourceTitleMarker: 'resourceTitleMarker', + + // Resource destination title (`alpha`). + // Includes string. + resourceTitleString: 'resourceTitleString', + + // Whole setext heading: + // + // ```markdown + // alpha + // bravo + // ===== + // ``` + // + // Includes `setextHeadingText`, `lineEnding`, `linePrefix`, and + // `setextHeadingLine`. + setextHeading: 'setextHeading', + + // Content in a setext heading (`alpha\nbravo`). + // Includes text. + setextHeadingText: 'setextHeadingText', + + // Underline in a setext heading, including whitespace suffix (`==`). + // Includes `setextHeadingLineSequence`. + setextHeadingLine: 'setextHeadingLine', + + // Sequence of equals or dash characters in underline in a setext heading (`-`). + setextHeadingLineSequence: 'setextHeadingLineSequence', + + // Strong (`**alpha**`). + // Includes `strongSequence` and `strongText`. + strong: 'strong', + + // Sequence of strong markers (`**` or `__`). + strongSequence: 'strongSequence', + + // Strong text (`alpha`). + // Includes text. + strongText: 'strongText', + + // Whole thematic break: + // + // ```markdown + // * * * + // ``` + // + // Includes `thematicBreakSequence` and `whitespace`. + thematicBreak: 'thematicBreak', + + // A sequence of one or more thematic break markers (`***`). + thematicBreakSequence: 'thematicBreakSequence', + + // Whole block quote: + // + // ```markdown + // > a + // > + // > b + // ``` + // + // Includes `blockQuotePrefix` and flow. + blockQuote: 'blockQuote', + // The `>` or `> ` of a block quote. + blockQuotePrefix: 'blockQuotePrefix', + // The `>` of a block quote prefix. + blockQuoteMarker: 'blockQuoteMarker', + // The optional ` ` of a block quote prefix. + blockQuotePrefixWhitespace: 'blockQuotePrefixWhitespace', + + // Whole unordered list: + // + // ```markdown + // - a + // b + // ``` + // + // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further + // lines. + listOrdered: 'listOrdered', + + // Whole ordered list: + // + // ```markdown + // 1. a + // b + // ``` + // + // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further + // lines. + listUnordered: 'listUnordered', + + // The indent of further list item lines. + listItemIndent: 'listItemIndent', + + // A marker, as in, `*`, `+`, `-`, `.`, or `)`. + listItemMarker: 'listItemMarker', + + // The thing that starts a list item, such as `1. `. + // Includes `listItemValue` if ordered, `listItemMarker`, and + // `listItemPrefixWhitespace` (unless followed by a line ending). + listItemPrefix: 'listItemPrefix', + + // The whitespace after a marker. + listItemPrefixWhitespace: 'listItemPrefixWhitespace', + + // The numerical value of an ordered item. + listItemValue: 'listItemValue', + + // Internal types used for subtokenizers, compiled away + chunkDocument: 'chunkDocument', + chunkContent: 'chunkContent', + chunkFlow: 'chunkFlow', + chunkText: 'chunkText', + chunkString: 'chunkString' +}) diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/values.d.ts b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/values.d.ts new file mode 100644 index 00000000..e04ea01b --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/values.d.ts @@ -0,0 +1,101 @@ +export namespace values { + const ht: '\t' + const lf: '\n' + const cr: '\r' + const space: ' ' + const exclamationMark: '!' + const quotationMark: '"' + const numberSign: '#' + const dollarSign: '$' + const percentSign: '%' + const ampersand: '&' + const apostrophe: "'" + const leftParenthesis: '(' + const rightParenthesis: ')' + const asterisk: '*' + const plusSign: '+' + const comma: ',' + const dash: '-' + const dot: '.' + const slash: '/' + const digit0: '0' + const digit1: '1' + const digit2: '2' + const digit3: '3' + const digit4: '4' + const digit5: '5' + const digit6: '6' + const digit7: '7' + const digit8: '8' + const digit9: '9' + const colon: ':' + const semicolon: ';' + const lessThan: '<' + const equalsTo: '=' + const greaterThan: '>' + const questionMark: '?' + const atSign: '@' + const uppercaseA: 'A' + const uppercaseB: 'B' + const uppercaseC: 'C' + const uppercaseD: 'D' + const uppercaseE: 'E' + const uppercaseF: 'F' + const uppercaseG: 'G' + const uppercaseH: 'H' + const uppercaseI: 'I' + const uppercaseJ: 'J' + const uppercaseK: 'K' + const uppercaseL: 'L' + const uppercaseM: 'M' + const uppercaseN: 'N' + const uppercaseO: 'O' + const uppercaseP: 'P' + const uppercaseQ: 'Q' + const uppercaseR: 'R' + const uppercaseS: 'S' + const uppercaseT: 'T' + const uppercaseU: 'U' + const uppercaseV: 'V' + const uppercaseW: 'W' + const uppercaseX: 'X' + const uppercaseY: 'Y' + const uppercaseZ: 'Z' + const leftSquareBracket: '[' + const backslash: '\\' + const rightSquareBracket: ']' + const caret: '^' + const underscore: '_' + const graveAccent: '`' + const lowercaseA: 'a' + const lowercaseB: 'b' + const lowercaseC: 'c' + const lowercaseD: 'd' + const lowercaseE: 'e' + const lowercaseF: 'f' + const lowercaseG: 'g' + const lowercaseH: 'h' + const lowercaseI: 'i' + const lowercaseJ: 'j' + const lowercaseK: 'k' + const lowercaseL: 'l' + const lowercaseM: 'm' + const lowercaseN: 'n' + const lowercaseO: 'o' + const lowercaseP: 'p' + const lowercaseQ: 'q' + const lowercaseR: 'r' + const lowercaseS: 's' + const lowercaseT: 't' + const lowercaseU: 'u' + const lowercaseV: 'v' + const lowercaseW: 'w' + const lowercaseX: 'x' + const lowercaseY: 'y' + const lowercaseZ: 'z' + const leftCurlyBrace: '{' + const verticalBar: '|' + const rightCurlyBrace: '}' + const tilde: '~' + const replacementCharacter: '�' +} diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/values.js b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/values.js new file mode 100644 index 00000000..d40b5a78 --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-symbol/values.js @@ -0,0 +1,109 @@ +/** + * This module is compiled away! + * + * While micromark works based on character codes, this module includes the + * string versions of ’em. + * The C0 block, except for LF, CR, HT, and w/ the replacement character added, + * are available here. + */ +export const values = /** @type {const} */ ({ + ht: '\t', + lf: '\n', + cr: '\r', + space: ' ', + exclamationMark: '!', + quotationMark: '"', + numberSign: '#', + dollarSign: '$', + percentSign: '%', + ampersand: '&', + apostrophe: "'", + leftParenthesis: '(', + rightParenthesis: ')', + asterisk: '*', + plusSign: '+', + comma: ',', + dash: '-', + dot: '.', + slash: '/', + digit0: '0', + digit1: '1', + digit2: '2', + digit3: '3', + digit4: '4', + digit5: '5', + digit6: '6', + digit7: '7', + digit8: '8', + digit9: '9', + colon: ':', + semicolon: ';', + lessThan: '<', + equalsTo: '=', + greaterThan: '>', + questionMark: '?', + atSign: '@', + uppercaseA: 'A', + uppercaseB: 'B', + uppercaseC: 'C', + uppercaseD: 'D', + uppercaseE: 'E', + uppercaseF: 'F', + uppercaseG: 'G', + uppercaseH: 'H', + uppercaseI: 'I', + uppercaseJ: 'J', + uppercaseK: 'K', + uppercaseL: 'L', + uppercaseM: 'M', + uppercaseN: 'N', + uppercaseO: 'O', + uppercaseP: 'P', + uppercaseQ: 'Q', + uppercaseR: 'R', + uppercaseS: 'S', + uppercaseT: 'T', + uppercaseU: 'U', + uppercaseV: 'V', + uppercaseW: 'W', + uppercaseX: 'X', + uppercaseY: 'Y', + uppercaseZ: 'Z', + leftSquareBracket: '[', + backslash: '\\', + rightSquareBracket: ']', + caret: '^', + underscore: '_', + graveAccent: '`', + lowercaseA: 'a', + lowercaseB: 'b', + lowercaseC: 'c', + lowercaseD: 'd', + lowercaseE: 'e', + lowercaseF: 'f', + lowercaseG: 'g', + lowercaseH: 'h', + lowercaseI: 'i', + lowercaseJ: 'j', + lowercaseK: 'k', + lowercaseL: 'l', + lowercaseM: 'm', + lowercaseN: 'n', + lowercaseO: 'o', + lowercaseP: 'p', + lowercaseQ: 'q', + lowercaseR: 'r', + lowercaseS: 's', + lowercaseT: 't', + lowercaseU: 'u', + lowercaseV: 'v', + lowercaseW: 'w', + lowercaseX: 'x', + lowercaseY: 'y', + lowercaseZ: 'z', + leftCurlyBrace: '{', + verticalBar: '|', + rightCurlyBrace: '}', + tilde: '~', + replacementCharacter: '�' +}) diff --git a/node_modules/@slorber/remark-comment/node_modules/micromark-util-types/index.d.ts b/node_modules/@slorber/remark-comment/node_modules/micromark-util-types/index.d.ts new file mode 100644 index 00000000..eb9fc284 --- /dev/null +++ b/node_modules/@slorber/remark-comment/node_modules/micromark-util-types/index.d.ts @@ -0,0 +1,1302 @@ +// Note: this file is authored manually, not generated from `index.js`. + +/** + * A character code. + * + * This is often the same as what `String#charCodeAt()` yields but micromark + * adds meaning to certain other values. + * + * `null` represents the end of the input stream (called eof). + * Negative integers are used instead of certain sequences of characters (such + * as line endings and tabs). + */ +export type Code = number | null + +/** + * A chunk is either a character code or a slice of a buffer in the form of a + * string. + * + * Chunks are used because strings are more efficient storage that character + * codes, but limited in what they can represent. + */ +export type Chunk = Code | string + +/** + * Enumeration of the content types. + * + * Technically `document` is also a content type, which includes containers + * (lists, block quotes) and flow. + * As `ContentType` is used on tokens to define the type of subcontent but + * `document` is the highest level of content, so it’s not listed here. + * + * Containers in markdown come from the margin and include more constructs + * on the lines that define them. + * Take for example a block quote with a paragraph inside it (such as + * `> asd`). + * + * `flow` represents the sections, such as headings, code, and content, which + * is also parsed per line + * An example is HTML, which has a certain starting condition (such as + * ` +<% }); %> +``` + +index.js +```js +if (typeof global.document !== 'undefined') { + const rootEl = global.document.getElementById('outlay'); + React.render( + , + rootEl, + ); +} + +export default (data) => { + const assets = Object.keys(data.webpackStats.compilation.assets); + const css = assets.filter(value => value.match(/\.css$/)); + const js = assets.filter(value => value.match(/\.js$/)); + return template({ css, js, ...data}); +} +``` + +## Specifying entry + +This plugin defaults to the first chunk found. While this should work in most cases, you can specify the entry name if needed: + +```js +module.exports = { + ..., + plugins: [ + new StaticSiteGeneratorPlugin({ + entry: 'main' + }) + ] +} +``` + +## Compression support + +Generated files can be compressed with [compression-webpack-plugin](https://github.com/webpack/compression-webpack-plugin), but first ensure that this plugin appears before compression-webpack-plugin in your plugins array: + +```js +const StaticSiteGeneratorPlugin = require('@slorber/static-site-generator-webpack-plugin'); +const CompressionPlugin = require('compression-webpack-plugin'); + +module.exports = { + ... + + plugins: [ + new StaticSiteGeneratorPlugin(...), + new CompressionPlugin(...) + ] +}; +``` + +## Related projects + +- [react-router-to-array](https://github.com/alansouzati/react-router-to-array) - useful for avoiding hardcoded lists of routes to render +- [gatsby](https://github.com/gatsbyjs/gatsby) - opinionated static site generator built on top of this plugin + +## License + +[MIT License](http://markdalgleish.mit-license.org) diff --git a/node_modules/@slorber/static-site-generator-webpack-plugin/index.js b/node_modules/@slorber/static-site-generator-webpack-plugin/index.js new file mode 100644 index 00000000..da847bce --- /dev/null +++ b/node_modules/@slorber/static-site-generator-webpack-plugin/index.js @@ -0,0 +1,183 @@ +const RawSource = require('webpack-sources/lib/RawSource'); +const evaluate = require('eval'); +const path = require('path'); +const pMap = require("p-map"); + +const pluginName = 'static-site-generator-webpack-plugin' + +// Not easy to define a reasonable option default +// Will still be better than Infinity +// See also https://github.com/sindresorhus/p-map/issues/24 +const DefaultConcurrency = 32; + +class StaticSiteGeneratorWebpackPlugin { + constructor(options) { + options = options || {}; + this.concurrency = options.concurrency || DefaultConcurrency; + this.entry = options.entry; + this.paths = Array.isArray(options.paths) ? options.paths : [options.paths || '/']; + this.locals = options.locals; + this.globals = options.globals; + this.preferFoldersOutput = options.preferFoldersOutput; + } + + findAsset(entry, compilation, webpackStatsJson) { + if (!entry) { + const chunkNames = Object.keys(webpackStatsJson.assetsByChunkName); + entry = chunkNames[0]; + } + + const asset = compilation.assets[entry]; + if (asset) return asset; + + let chunkValue = webpackStatsJson.assetsByChunkName[entry]; + if (!chunkValue) return null; + // Webpack outputs an array for each chunk when using sourcemaps + if (chunkValue instanceof Array) { + // Is the main bundle always the first element? + chunkValue = chunkValue.find((filename) => /\.js$/.test(filename)); + } + return compilation.assets[chunkValue]; + } + + // Shamelessly stolen from html-webpack-plugin - Thanks @ampedandwired :) + getAssetsFromCompilation(compilation, webpackStatsJson) { + const assets = {}; + for (const chunk in webpackStatsJson.assetsByChunkName) { + let chunkValue = webpackStatsJson.assetsByChunkName[chunk]; + + // Webpack outputs an array for each chunk when using sourcemaps + if (chunkValue instanceof Array) { + // Is the main bundle always the first JS element? + chunkValue = chunkValue.find((filename) => /\.js$/.test(filename)); + } + + if (compilation.options.output.publicPath) { + chunkValue = compilation.options.output.publicPath + chunkValue; + } + assets[chunk] = chunkValue; + } + + return assets; + } + + async injectApp(compilation) { + const webpackStats = compilation.getStats(); + const webpackStatsJson = webpackStats.toJson({ all: false, assets: true }, true); + + const asset = this.findAsset(this.entry, compilation, webpackStatsJson) + + if (asset == null) { + throw new Error(`Source file not found: "${this.entry}"`); + } + + const assets = this.getAssetsFromCompilation(compilation, webpackStatsJson); + + const source = asset.source(); + let render = evaluate( + source, + /* filename: */ this.entry, + /* scope: */ this.globals, + /* includeGlobals: */ true + ); + + if (render.hasOwnProperty('default')) { + render = render['default']; + } + + if (typeof render !== 'function') { + throw new Error(`Export from "${this.entry}" must be a function that returns an HTML string. Is output.libraryTarget in the configuration set to "umd"?`); + } + + return pMap( + this.paths, + (outputPath) => this.renderPath(outputPath, render, assets, webpackStats, compilation), + {concurrency: this.concurrency} + ); + } + + pathToAssetName(outputPath) { + const outputFileName = outputPath.replace(/^(\/|\\)/, ''); // Remove leading slashes for webpack-dev-server + + // Paths ending with .html are left untouched + if (/\.(html?)$/i.test(outputFileName)) { + return outputFileName; + } + + // Legacy retro-compatible behavior + if (typeof this.preferFoldersOutput === 'undefined') { + return path.join(outputFileName, 'index.html'); + } + + // New behavior: we can say if we prefer file/folder output + // Useful resource: https://github.com/slorber/trailing-slash-guide + if (outputPath === '' || outputPath.endsWith('/') || this.preferFoldersOutput) { + return path.join(outputFileName, 'index.html'); + } else { + return `${outputFileName}.html`; + } + } + + renderPath(outputPath, render, assets, webpackStats, compilation) { + const locals = { + path: outputPath, + assets, + webpackStats, + ...this.locals, + }; + + const renderPromise = render.length < 2 + ? Promise.resolve(render(locals)) + : new Promise((resolve, reject) => { + render(locals, (err, succ) => { + if (err) { + return reject(err) + } + return resolve(succ) + }) + }); + + + return renderPromise + .then((output) => { + const outputByPath = typeof output === 'object' ? output : { [outputPath]: output } ; + + const assetGenerationPromises = Object.keys(outputByPath).map((key) => { + const rawSource = outputByPath[key]; + const assetName = this.pathToAssetName(key); + // console.log("pathToAssetName: " + key + " => " + assetName); + + if (compilation.assets[assetName]) { + return; + } + + compilation.assets[assetName] = new RawSource(rawSource); + }); + + return Promise.all(assetGenerationPromises); + }) + .catch((err) => { + compilation.errors.push(err.stack); + }); + } + + apply(compiler) { + compiler.hooks.thisCompilation.tap(pluginName, (compilation) => { + compilation.hooks.optimizeAssets.tapAsync( + pluginName, + (_, done) => { + this.injectApp(compilation) + .then(() => { + done() + }, (err) => { + compilation.errors.push(err.stack); + done(); + }) + } + ); + }); + } +} + +module.exports = StaticSiteGeneratorWebpackPlugin; +module.exports.default = StaticSiteGeneratorWebpackPlugin; diff --git a/node_modules/@slorber/static-site-generator-webpack-plugin/jest.config.js b/node_modules/@slorber/static-site-generator-webpack-plugin/jest.config.js new file mode 100644 index 00000000..3913fd8a --- /dev/null +++ b/node_modules/@slorber/static-site-generator-webpack-plugin/jest.config.js @@ -0,0 +1,3 @@ +module.exports = { + coveragePathIgnorePatterns: ["/node_modules/", "/test/"] +} diff --git a/node_modules/@slorber/static-site-generator-webpack-plugin/package.json b/node_modules/@slorber/static-site-generator-webpack-plugin/package.json new file mode 100644 index 00000000..fda93e0f --- /dev/null +++ b/node_modules/@slorber/static-site-generator-webpack-plugin/package.json @@ -0,0 +1,46 @@ +{ + "name": "@slorber/static-site-generator-webpack-plugin", + "version": "4.0.7", + "publishConfig": { + "access": "public" + }, + "description": "Minimal, unopinionated static site generator powered by webpack", + "main": "index.js", + "scripts": { + "test": "jest test", + "coverage": "jest --coverage", + "coveralls": "jest --coverage --coverageReporters=text-lcov | coveralls" + }, + "repository": { + "type": "git", + "url": "https://github.com/slorber/static-site-generator-webpack-plugin" + }, + "author": "Mark Dalgleish", + "license": "MIT", + "bugs": { + "url": "https://github.com/slorber/static-site-generator-webpack-plugin/issues" + }, + "homepage": "https://github.com/slorber/static-site-generator-webpack-plugin", + "dependencies": { + "eval": "^0.1.8", + "p-map": "^4.0.0", + "webpack-sources": "^3.2.2" + }, + "engines": { + "node": ">=14" + }, + "devDependencies": { + "@babel/core": "^7.6.4", + "@babel/preset-env": "^7.6.3", + "async": "^2.0.1", + "babel-loader": "^8.0.0", + "compression-webpack-plugin": "^9.0.1", + "ejs": "^2.3.4", + "glob": "^7.0.3", + "jest": "^24.9.0", + "node-dir": "^0.1.17", + "rimraf": "^2.4.4", + "webpack": "^5.64.2", + "webpack-stats-plugin": "^1.0.3" + } +} diff --git a/node_modules/@svgr/babel-plugin-add-jsx-attribute/CHANGELOG.md b/node_modules/@svgr/babel-plugin-add-jsx-attribute/CHANGELOG.md new file mode 100644 index 00000000..0603e4d9 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-add-jsx-attribute/CHANGELOG.md @@ -0,0 +1,50 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [6.5.1](https://github.com/gregberge/svgr/compare/v6.5.0...v6.5.1) (2022-10-27) + +**Note:** Version bump only for package @svgr/babel-plugin-add-jsx-attribute + +# [6.5.0](https://github.com/gregberge/svgr/compare/v6.4.0...v6.5.0) (2022-10-14) + +**Note:** Version bump only for package @svgr/babel-plugin-add-jsx-attribute + +## [6.3.1](https://github.com/gregberge/svgr/compare/v6.3.0...v6.3.1) (2022-07-22) + +### Bug Fixes + +- fix exports compat with ESM ([#749](https://github.com/gregberge/svgr/issues/749)) ([f3e304c](https://github.com/gregberge/svgr/commit/f3e304c166282f042ecd4d6c396a0798a7f0b490)) + +# [6.3.0](https://github.com/gregberge/svgr/compare/v6.2.1...v6.3.0) (2022-07-18) + +### Bug Fixes + +- **package.json:** fix exports ([#745](https://github.com/gregberge/svgr/issues/745)) ([2a368d1](https://github.com/gregberge/svgr/commit/2a368d1305949ec6426c7c7312c04224071ec2bd)) + +# [5.4.0](https://github.com/gregberge/svgr/tree/master/packages/babel-plugin-add-jsx-attribute/compare/v5.3.1...v5.4.0) (2020-04-27) + +**Note:** Version bump only for package @svgr/babel-plugin-add-jsx-attribute + +## [5.0.1](https://github.com/gregberge/svgr/tree/master/packages/babel-plugin-add-jsx-attribute/compare/v5.0.0...v5.0.1) (2019-12-29) + +### Bug Fixes + +- fix engines in package.json ([a45d6fc](https://github.com/gregberge/svgr/tree/master/packages/babel-plugin-add-jsx-attribute/commit/a45d6fc8b43402bec60ed4e9273f90fdc65a23a7)) + +# [4.2.0](https://github.com/gregberge/svgr/tree/master/packages/babel-plugin-add-jsx-attribute/compare/v4.1.0...v4.2.0) (2019-04-11) + +**Note:** Version bump only for package @svgr/babel-plugin-add-jsx-attribute + +# [4.0.0](https://github.com/gregberge/svgr/compare/v3.1.0...v4.0.0) (2018-11-04) + +### Features + +- **v4:** new architecture ([ac8b8ca](https://github.com/gregberge/svgr/commit/ac8b8ca)) + +### BREAKING CHANGES + +- **v4:** - `template` option must now returns a Babel AST + +* `@svgr/core` does not include svgo & prettier by default diff --git a/node_modules/@svgr/babel-plugin-add-jsx-attribute/LICENSE b/node_modules/@svgr/babel-plugin-add-jsx-attribute/LICENSE new file mode 100644 index 00000000..eab30266 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-add-jsx-attribute/LICENSE @@ -0,0 +1,7 @@ +Copyright 2017 Smooth Code + +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. diff --git a/node_modules/@svgr/babel-plugin-add-jsx-attribute/README.md b/node_modules/@svgr/babel-plugin-add-jsx-attribute/README.md new file mode 100644 index 00000000..0e0c5ec4 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-add-jsx-attribute/README.md @@ -0,0 +1,37 @@ +# @svgr/babel-plugin-add-jsx-attribute + +## Install + +``` +npm install --save-dev @svgr/babel-plugin-add-jsx-attribute +``` + +## Usage + +**.babelrc** + +```json +{ + "plugins": [ + [ + "@svgr/babel-plugin-add-jsx-attribute", + { + "elements": ["svg"], + "attributes": [ + { + "name": "width", + "value": "200", + "spread": false, + "literal": false, + "position": "end" + } + ] + } + ] + ] +} +``` + +## License + +MIT diff --git a/node_modules/@svgr/babel-plugin-add-jsx-attribute/package.json b/node_modules/@svgr/babel-plugin-add-jsx-attribute/package.json new file mode 100644 index 00000000..ab5d713f --- /dev/null +++ b/node_modules/@svgr/babel-plugin-add-jsx-attribute/package.json @@ -0,0 +1,40 @@ +{ + "name": "@svgr/babel-plugin-add-jsx-attribute", + "description": "Add JSX attribute", + "version": "6.5.1", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "repository": "https://github.com/gregberge/svgr/tree/main/packages/babel-plugin-add-jsx-attribute", + "author": "Greg Bergé ", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "babel-plugin" + ], + "engines": { + "node": ">=10" + }, + "homepage": "https://react-svgr.com", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "scripts": { + "reset": "rm -rf dist", + "build": "rollup -c ../../build/rollup.config.js", + "prepublishOnly": "npm run reset && npm run build" + }, + "gitHead": "d5efedd372999692f84d30072e502b5a6b8fe734" +} diff --git a/node_modules/@svgr/babel-plugin-add-jsx-attribute/tsconfig.json b/node_modules/@svgr/babel-plugin-add-jsx-attribute/tsconfig.json new file mode 100644 index 00000000..9285eb38 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-add-jsx-attribute/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig", + "include": ["src"] +} diff --git a/node_modules/@svgr/babel-plugin-remove-jsx-attribute/LICENSE b/node_modules/@svgr/babel-plugin-remove-jsx-attribute/LICENSE new file mode 100644 index 00000000..eab30266 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-remove-jsx-attribute/LICENSE @@ -0,0 +1,7 @@ +Copyright 2017 Smooth Code + +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. diff --git a/node_modules/@svgr/babel-plugin-remove-jsx-attribute/README.md b/node_modules/@svgr/babel-plugin-remove-jsx-attribute/README.md new file mode 100644 index 00000000..41ac679d --- /dev/null +++ b/node_modules/@svgr/babel-plugin-remove-jsx-attribute/README.md @@ -0,0 +1,29 @@ +# @svgr/babel-plugin-remove-jsx-attribute + +## Install + +``` +npm install --save-dev @svgr/babel-plugin-remove-jsx-attribute +``` + +## Usage + +**.babelrc** + +```json +{ + "plugins": [ + [ + "@svgr/babel-plugin-remove-jsx-attribute", + { + "elements": ["svg"], + "attributes": ["width", "height"] + } + ] + ] +} +``` + +## License + +MIT diff --git a/node_modules/@svgr/babel-plugin-remove-jsx-attribute/package.json b/node_modules/@svgr/babel-plugin-remove-jsx-attribute/package.json new file mode 100644 index 00000000..6300fb2f --- /dev/null +++ b/node_modules/@svgr/babel-plugin-remove-jsx-attribute/package.json @@ -0,0 +1,40 @@ +{ + "name": "@svgr/babel-plugin-remove-jsx-attribute", + "description": "Remove JSX attribute", + "version": "8.0.0", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "repository": "https://github.com/gregberge/svgr/tree/main/packages/babel-plugin-remove-jsx-attribute", + "author": "Greg Bergé ", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "babel-plugin" + ], + "engines": { + "node": ">=14" + }, + "homepage": "https://react-svgr.com", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "scripts": { + "reset": "rm -rf dist", + "build": "rollup -c ../../build/rollup.config.mjs", + "prepublishOnly": "pnpm run reset && pnpm run build" + }, + "gitHead": "52a1079681477587ef0d842c0e78531adf2d2520" +} diff --git a/node_modules/@svgr/babel-plugin-remove-jsx-empty-expression/LICENSE b/node_modules/@svgr/babel-plugin-remove-jsx-empty-expression/LICENSE new file mode 100644 index 00000000..eab30266 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-remove-jsx-empty-expression/LICENSE @@ -0,0 +1,7 @@ +Copyright 2017 Smooth Code + +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. diff --git a/node_modules/@svgr/babel-plugin-remove-jsx-empty-expression/README.md b/node_modules/@svgr/babel-plugin-remove-jsx-empty-expression/README.md new file mode 100644 index 00000000..9b5377de --- /dev/null +++ b/node_modules/@svgr/babel-plugin-remove-jsx-empty-expression/README.md @@ -0,0 +1,21 @@ +# @svgr/babel-plugin-remove-jsx-empty-expression + +## Install + +``` +npm install --save-dev @svgr/babel-plugin-remove-jsx-empty-expression +``` + +## Usage + +**.babelrc** + +```json +{ + "plugins": ["@svgr/babel-plugin-remove-jsx-empty-expression"] +} +``` + +## License + +MIT diff --git a/node_modules/@svgr/babel-plugin-remove-jsx-empty-expression/package.json b/node_modules/@svgr/babel-plugin-remove-jsx-empty-expression/package.json new file mode 100644 index 00000000..76268885 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-remove-jsx-empty-expression/package.json @@ -0,0 +1,40 @@ +{ + "name": "@svgr/babel-plugin-remove-jsx-empty-expression", + "description": "Remove JSX empty expression", + "version": "8.0.0", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "repository": "https://github.com/gregberge/svgr/tree/main/packages/babel-plugin-remove-jsx-empty-expression", + "author": "Greg Bergé ", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "babel-plugin" + ], + "engines": { + "node": ">=14" + }, + "homepage": "https://react-svgr.com", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "scripts": { + "reset": "rm -rf dist", + "build": "rollup -c ../../build/rollup.config.mjs", + "prepublishOnly": "pnpm run reset && pnpm run build" + }, + "gitHead": "52a1079681477587ef0d842c0e78531adf2d2520" +} diff --git a/node_modules/@svgr/babel-plugin-replace-jsx-attribute-value/LICENSE b/node_modules/@svgr/babel-plugin-replace-jsx-attribute-value/LICENSE new file mode 100644 index 00000000..eab30266 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-replace-jsx-attribute-value/LICENSE @@ -0,0 +1,7 @@ +Copyright 2017 Smooth Code + +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. diff --git a/node_modules/@svgr/babel-plugin-replace-jsx-attribute-value/README.md b/node_modules/@svgr/babel-plugin-replace-jsx-attribute-value/README.md new file mode 100644 index 00000000..3ba0a3dd --- /dev/null +++ b/node_modules/@svgr/babel-plugin-replace-jsx-attribute-value/README.md @@ -0,0 +1,31 @@ +# @svgr/babel-plugin-replace-jsx-attribute-value + +## Install + +``` +npm install --save-dev @svgr/babel-plugin-replace-jsx-attribute-value +``` + +## Usage + +**.babelrc** + +```json +{ + "plugins": [ + [ + "@svgr/babel-plugin-replace-jsx-attribute-value", + { + "values": [ + { "value": "#000", "newValue": "#fff" }, + { "value": "blue", "newValue": "props.color", "literal": true } + ] + } + ] + ] +} +``` + +## License + +MIT diff --git a/node_modules/@svgr/babel-plugin-replace-jsx-attribute-value/package.json b/node_modules/@svgr/babel-plugin-replace-jsx-attribute-value/package.json new file mode 100644 index 00000000..7502f2b3 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-replace-jsx-attribute-value/package.json @@ -0,0 +1,40 @@ +{ + "name": "@svgr/babel-plugin-replace-jsx-attribute-value", + "description": "Replace JSX attribute value", + "version": "6.5.1", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "repository": "https://github.com/gregberge/svgr/tree/main/packages/babel-plugin-replace-jsx-attribute-value", + "author": "Greg Bergé ", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "babel-plugin" + ], + "engines": { + "node": ">=10" + }, + "homepage": "https://react-svgr.com", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "scripts": { + "reset": "rm -rf dist", + "build": "rollup -c ../../build/rollup.config.js", + "prepublishOnly": "npm run reset && npm run build" + }, + "gitHead": "d5efedd372999692f84d30072e502b5a6b8fe734" +} diff --git a/node_modules/@svgr/babel-plugin-svg-dynamic-title/LICENSE b/node_modules/@svgr/babel-plugin-svg-dynamic-title/LICENSE new file mode 100644 index 00000000..eab30266 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-svg-dynamic-title/LICENSE @@ -0,0 +1,7 @@ +Copyright 2017 Smooth Code + +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. diff --git a/node_modules/@svgr/babel-plugin-svg-dynamic-title/README.md b/node_modules/@svgr/babel-plugin-svg-dynamic-title/README.md new file mode 100644 index 00000000..904db858 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-svg-dynamic-title/README.md @@ -0,0 +1,25 @@ +# @svgr/babel-plugin-svg-dynamic-title + +## Install + +``` +npm install --save-dev @svgr/babel-plugin-svg-dynamic-title +``` + +## Usage + +**.babelrc** + +```json +{ + "plugins": ["@svgr/babel-plugin-svg-dynamic-title"] +} +``` + +## Note + +This plugin handles both the titleProp and descProp options. By default, it will handle titleProp only. + +## License + +MIT diff --git a/node_modules/@svgr/babel-plugin-svg-dynamic-title/package.json b/node_modules/@svgr/babel-plugin-svg-dynamic-title/package.json new file mode 100644 index 00000000..214af86b --- /dev/null +++ b/node_modules/@svgr/babel-plugin-svg-dynamic-title/package.json @@ -0,0 +1,40 @@ +{ + "name": "@svgr/babel-plugin-svg-dynamic-title", + "description": "Transform SVG by adding a dynamic title element", + "version": "6.5.1", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "repository": "https://github.com/gregberge/svgr/tree/main/packages/babel-plugin-svg-dynamic-title", + "author": "Greg Bergé ", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "babel-plugin" + ], + "engines": { + "node": ">=10" + }, + "homepage": "https://react-svgr.com", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "scripts": { + "reset": "rm -rf dist", + "build": "rollup -c ../../build/rollup.config.js", + "prepublishOnly": "npm run reset && npm run build" + }, + "gitHead": "d5efedd372999692f84d30072e502b5a6b8fe734" +} diff --git a/node_modules/@svgr/babel-plugin-svg-em-dimensions/LICENSE b/node_modules/@svgr/babel-plugin-svg-em-dimensions/LICENSE new file mode 100644 index 00000000..eab30266 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-svg-em-dimensions/LICENSE @@ -0,0 +1,7 @@ +Copyright 2017 Smooth Code + +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. diff --git a/node_modules/@svgr/babel-plugin-svg-em-dimensions/README.md b/node_modules/@svgr/babel-plugin-svg-em-dimensions/README.md new file mode 100644 index 00000000..b7759641 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-svg-em-dimensions/README.md @@ -0,0 +1,23 @@ +# @svgr/babel-plugin-svg-em-dimensions + +## Install + +``` +npm install --save-dev @svgr/babel-plugin-svg-em-dimensions +``` + +## Usage + +**.babelrc** + +```json +{ + "plugins": [ + ["@svgr/babel-plugin-svg-em-dimensions", { "width": 24, "height": 24 }] + ] +} +``` + +## License + +MIT diff --git a/node_modules/@svgr/babel-plugin-svg-em-dimensions/package.json b/node_modules/@svgr/babel-plugin-svg-em-dimensions/package.json new file mode 100644 index 00000000..0a249ee0 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-svg-em-dimensions/package.json @@ -0,0 +1,40 @@ +{ + "name": "@svgr/babel-plugin-svg-em-dimensions", + "description": "Transform SVG to use em-based dimensions", + "version": "6.5.1", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "repository": "https://github.com/gregberge/svgr/tree/main/packages/babel-plugin-svg-em-dimensions", + "author": "Greg Bergé ", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "babel-plugin" + ], + "engines": { + "node": ">=10" + }, + "homepage": "https://react-svgr.com", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "scripts": { + "reset": "rm -rf dist", + "build": "rollup -c ../../build/rollup.config.js", + "prepublishOnly": "npm run reset && npm run build" + }, + "gitHead": "d5efedd372999692f84d30072e502b5a6b8fe734" +} diff --git a/node_modules/@svgr/babel-plugin-transform-react-native-svg/LICENSE b/node_modules/@svgr/babel-plugin-transform-react-native-svg/LICENSE new file mode 100644 index 00000000..eab30266 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-transform-react-native-svg/LICENSE @@ -0,0 +1,7 @@ +Copyright 2017 Smooth Code + +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. diff --git a/node_modules/@svgr/babel-plugin-transform-react-native-svg/README.md b/node_modules/@svgr/babel-plugin-transform-react-native-svg/README.md new file mode 100644 index 00000000..37345519 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-transform-react-native-svg/README.md @@ -0,0 +1,21 @@ +# @svgr/babel-plugin-transform-react-native-svg + +## Install + +``` +npm install --save-dev @svgr/babel-plugin-transform-react-native-svg +``` + +## Usage + +**.babelrc** + +```json +{ + "plugins": ["@svgr/babel-plugin-transform-react-native-svg"] +} +``` + +## License + +MIT diff --git a/node_modules/@svgr/babel-plugin-transform-react-native-svg/package.json b/node_modules/@svgr/babel-plugin-transform-react-native-svg/package.json new file mode 100644 index 00000000..8f8c4347 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-transform-react-native-svg/package.json @@ -0,0 +1,40 @@ +{ + "name": "@svgr/babel-plugin-transform-react-native-svg", + "description": "Transform DOM elements into react-native-svg components", + "version": "6.5.1", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "repository": "https://github.com/gregberge/svgr/tree/main/packages/babel-plugin-transform-react-native-svg", + "author": "Greg Bergé ", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "babel-plugin" + ], + "engines": { + "node": ">=10" + }, + "homepage": "https://react-svgr.com", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "scripts": { + "reset": "rm -rf dist", + "build": "rollup -c ../../build/rollup.config.js", + "prepublishOnly": "npm run reset && npm run build" + }, + "gitHead": "d5efedd372999692f84d30072e502b5a6b8fe734" +} diff --git a/node_modules/@svgr/babel-plugin-transform-svg-component/LICENSE b/node_modules/@svgr/babel-plugin-transform-svg-component/LICENSE new file mode 100644 index 00000000..eab30266 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-transform-svg-component/LICENSE @@ -0,0 +1,7 @@ +Copyright 2017 Smooth Code + +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. diff --git a/node_modules/@svgr/babel-plugin-transform-svg-component/README.md b/node_modules/@svgr/babel-plugin-transform-svg-component/README.md new file mode 100644 index 00000000..1479cf1f --- /dev/null +++ b/node_modules/@svgr/babel-plugin-transform-svg-component/README.md @@ -0,0 +1,23 @@ +# @svgr/babel-plugin-transform-svg-component + +## Install + +``` +npm install --save-dev @svgr/babel-plugin-transform-svg-component +``` + +## Usage + +**.babelrc** + +```json +{ + "plugins": [ + ["@svgr/babel-plugin-transform-svg-component", { "titleProp": true }] + ] +} +``` + +## License + +MIT diff --git a/node_modules/@svgr/babel-plugin-transform-svg-component/package.json b/node_modules/@svgr/babel-plugin-transform-svg-component/package.json new file mode 100644 index 00000000..4bc680b8 --- /dev/null +++ b/node_modules/@svgr/babel-plugin-transform-svg-component/package.json @@ -0,0 +1,40 @@ +{ + "name": "@svgr/babel-plugin-transform-svg-component", + "description": "Transform SVG into component", + "version": "6.5.1", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "repository": "https://github.com/gregberge/svgr/tree/main/packages/babel-plugin-transform-svg-component", + "author": "Greg Bergé ", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "babel-plugin" + ], + "engines": { + "node": ">=12" + }, + "homepage": "https://react-svgr.com", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "scripts": { + "reset": "rm -rf dist", + "build": "rollup -c ../../build/rollup.config.js", + "prepublishOnly": "npm run reset && npm run build" + }, + "gitHead": "d5efedd372999692f84d30072e502b5a6b8fe734" +} diff --git a/node_modules/@svgr/babel-preset/LICENSE b/node_modules/@svgr/babel-preset/LICENSE new file mode 100644 index 00000000..eab30266 --- /dev/null +++ b/node_modules/@svgr/babel-preset/LICENSE @@ -0,0 +1,7 @@ +Copyright 2017 Smooth Code + +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. diff --git a/node_modules/@svgr/babel-preset/README.md b/node_modules/@svgr/babel-preset/README.md new file mode 100644 index 00000000..87f9e093 --- /dev/null +++ b/node_modules/@svgr/babel-preset/README.md @@ -0,0 +1,21 @@ +# @svgr/babel-preset + +## Install + +``` +npm install --save-dev @svgr/babel-preset +``` + +## Usage + +**.babelrc** + +```json +{ + "presets": [["@svgr/babel-preset", { "svgProps": { "width": 200 } }]] +} +``` + +## License + +MIT diff --git a/node_modules/@svgr/babel-preset/package.json b/node_modules/@svgr/babel-preset/package.json new file mode 100644 index 00000000..f36a5bf1 --- /dev/null +++ b/node_modules/@svgr/babel-preset/package.json @@ -0,0 +1,51 @@ +{ + "name": "@svgr/babel-preset", + "description": "SVGR preset that apply transformations from config", + "version": "6.5.1", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "repository": "https://github.com/gregberge/svgr/tree/main/packages/babel-preset", + "author": "Greg Bergé ", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "babel-plugin", + "babel-preset" + ], + "engines": { + "node": ">=10" + }, + "homepage": "https://react-svgr.com", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", + "@svgr/babel-plugin-remove-jsx-attribute": "*", + "@svgr/babel-plugin-remove-jsx-empty-expression": "*", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", + "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", + "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", + "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", + "@svgr/babel-plugin-transform-svg-component": "^6.5.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "scripts": { + "reset": "rm -rf dist", + "build": "rollup -c ../../build/rollup.config.js", + "prepublishOnly": "npm run reset && npm run build" + }, + "gitHead": "d5efedd372999692f84d30072e502b5a6b8fe734" +} diff --git a/node_modules/@svgr/core/LICENSE b/node_modules/@svgr/core/LICENSE new file mode 100644 index 00000000..eab30266 --- /dev/null +++ b/node_modules/@svgr/core/LICENSE @@ -0,0 +1,7 @@ +Copyright 2017 Smooth Code + +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. diff --git a/node_modules/@svgr/core/README.md b/node_modules/@svgr/core/README.md new file mode 100644 index 00000000..69fa864a --- /dev/null +++ b/node_modules/@svgr/core/README.md @@ -0,0 +1,60 @@ +# @svgr/core + +[![Build Status][build-badge]][build] +[![version][version-badge]][package] +[![MIT License][license-badge]][license] + +Node API of SVGR. + +``` +npm install @svgr/core +``` + +## Usage + +```js +import { transform } from '@svgr/core' + +const svgCode = ` + + + +` + +transform(svgCode, { icon: true }, { componentName: 'MyComponent' }).then( + (jsCode) => { + console.log(jsCode) + }, +) +``` + +Use `svgr.sync(code, config, state)` if you would like to use sync version. + +### Plugins + +By default `@svgr/core` doesn't include `svgo` and `prettier` plugins, if you want them, you have to install them and include them in config. + +```js +svgr(svgCode, { + plugins: ['@svgr/plugin-svgo', '@svgr/plugin-jsx', '@svgr/plugin-prettier'], +}).then((jsCode) => { + console.log(jsCode) +}) +``` + +## License + +MIT + +[build-badge]: https://img.shields.io/travis/smooth-code/svgr.svg?style=flat-square +[build]: https://travis-ci.org/smooth-code/svgr +[version-badge]: https://img.shields.io/npm/v/@svgr/core.svg?style=flat-square +[package]: https://www.npmjs.com/package/@svgr/core +[license-badge]: https://img.shields.io/npm/l/@svgr/core.svg?style=flat-square +[license]: https://github.com/smooth-code/svgr/blob/master/LICENSE + +``` + +``` diff --git a/node_modules/@svgr/core/package.json b/node_modules/@svgr/core/package.json new file mode 100644 index 00000000..85090110 --- /dev/null +++ b/node_modules/@svgr/core/package.json @@ -0,0 +1,51 @@ +{ + "name": "@svgr/core", + "description": "Transform SVG into React Components.", + "version": "6.5.1", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "repository": "https://github.com/gregberge/svgr/tree/main/packages/core", + "author": "Greg Bergé ", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "svgr", + "svg", + "react", + "core", + "api" + ], + "engines": { + "node": ">=10" + }, + "homepage": "https://react-svgr.com", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "license": "MIT", + "scripts": { + "reset": "rm -rf dist", + "build": "rollup -c ../../build/rollup.config.js", + "prepublishOnly": "npm run reset && npm run build" + }, + "dependencies": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.1" + }, + "devDependencies": { + "@types/svgo": "^2.6.4" + }, + "gitHead": "d5efedd372999692f84d30072e502b5a6b8fe734" +} diff --git a/node_modules/@svgr/hast-util-to-babel-ast/LICENSE b/node_modules/@svgr/hast-util-to-babel-ast/LICENSE new file mode 100644 index 00000000..eab30266 --- /dev/null +++ b/node_modules/@svgr/hast-util-to-babel-ast/LICENSE @@ -0,0 +1,7 @@ +Copyright 2017 Smooth Code + +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. diff --git a/node_modules/@svgr/hast-util-to-babel-ast/README.md b/node_modules/@svgr/hast-util-to-babel-ast/README.md new file mode 100644 index 00000000..87edbe24 --- /dev/null +++ b/node_modules/@svgr/hast-util-to-babel-ast/README.md @@ -0,0 +1,28 @@ +# @svgr/hast-util-to-babel-ast + +[![Build Status](https://img.shields.io/travis/smooth-code/svgr.svg)](https://travis-ci.org/smooth-code/svgr) +[![Version](https://img.shields.io/npm/v/@svgr/hast-util-to-babel-ast.svg)](https://www.npmjs.com/package/@svgr/hast-util-to-babel-ast) +[![MIT License](https://img.shields.io/npm/l/@svgr/hast-util-to-babel-ast.svg)](https://github.com/smooth-code/svgr/blob/master/LICENSE) + +Transforms HAST into Babel AST. + +## Install + +``` +npm install --save-dev @svgr/hast-util-to-babel-ast +``` + +## Usage + +```js +import { parse } from 'svg-parser' +import hastToBabelAst from '@svgr/hast-util-to-babel-ast' + +const hastTree = parse(``) + +const babelTree = hastToBabelAst(hastTree) +``` + +## License + +MIT diff --git a/node_modules/@svgr/hast-util-to-babel-ast/package.json b/node_modules/@svgr/hast-util-to-babel-ast/package.json new file mode 100644 index 00000000..3e01ebbc --- /dev/null +++ b/node_modules/@svgr/hast-util-to-babel-ast/package.json @@ -0,0 +1,49 @@ +{ + "name": "@svgr/hast-util-to-babel-ast", + "description": "Transform HAST to Babel AST (JSX)", + "version": "6.5.1", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "repository": "https://github.com/gregberge/svgr/tree/main/packages/hast-util-to-babel-ast", + "author": "Greg Bergé ", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "html", + "hast", + "babel", + "hast-util", + "unist-util", + "unist" + ], + "engines": { + "node": ">=10" + }, + "homepage": "https://react-svgr.com", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.0", + "entities": "^4.4.0" + }, + "scripts": { + "reset": "rm -rf dist", + "build": "rollup -c ../../build/rollup.config.js", + "prepublishOnly": "npm run reset && npm run build" + }, + "devDependencies": { + "@types/svg-parser": "^2.0.3" + }, + "gitHead": "d5efedd372999692f84d30072e502b5a6b8fe734" +} diff --git a/node_modules/@svgr/plugin-jsx/LICENSE b/node_modules/@svgr/plugin-jsx/LICENSE new file mode 100644 index 00000000..eab30266 --- /dev/null +++ b/node_modules/@svgr/plugin-jsx/LICENSE @@ -0,0 +1,7 @@ +Copyright 2017 Smooth Code + +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. diff --git a/node_modules/@svgr/plugin-jsx/README.md b/node_modules/@svgr/plugin-jsx/README.md new file mode 100644 index 00000000..40df5e14 --- /dev/null +++ b/node_modules/@svgr/plugin-jsx/README.md @@ -0,0 +1,73 @@ +# @svgr/plugin-jsx + +[![Build Status](https://img.shields.io/travis/smooth-code/svgr.svg)](https://travis-ci.org/smooth-code/svgr) +[![Version](https://img.shields.io/npm/v/@svgr/plugin-jsx.svg)](https://www.npmjs.com/package/@svgr/plugin-jsx) +[![MIT License](https://img.shields.io/npm/l/@svgr/plugin-jsx.svg)](https://github.com/smooth-code/svgr/blob/master/LICENSE) + +Transforms SVG into JSX. + +## Install + +``` +npm install --save-dev @svgr/plugin-jsx +``` + +## Usage + +**.svgrrc** + +```json +{ + "plugins": ["@svgr/plugin-jsx"] +} +``` + +## How does it work? + +`@svgr/plugin-jsx` consists in three phases: + +- Parsing the SVG code using [svg-parser](https://github.com/Rich-Harris/svg-parser) +- Converting the [HAST](https://github.com/syntax-tree/hast) into a [Babel AST](https://github.com/babel/babel/blob/master/packages/babel-parser/ast/spec.md) +- Applying [`@svgr/babel-preset`](../babel-preset/README.md) transformations + +## Applying custom transformations + +You can extend the Babel config applied in this plugin using `jsx.babelConfig` config path: + +```js +// .svgrrc.js + +module.exports = { + jsx: { + babelConfig: { + plugins: [ + // For an example, this plugin will remove "id" attribute from "svg" tag + [ + '@svgr/babel-plugin-remove-jsx-attribute', + { + elements: ['svg'], + attributes: ['id'], + }, + ], + ], + }, + }, +} +``` + +Several Babel plugins are available: + +- [`@svgr/babel-plugin-add-jsx-attribute`](../babel-plugin-add-jsx-attribute/README.md) +- [`@svgr/babel-plugin-remove-jsx-attribute`](../babel-plugin-remove-jsx-attribute/README.md) +- [`@svgr/babel-plugin-remove-jsx-empty-expression`](../babel-plugin-remove-jsx-empty-expression/README.md) +- [`@svgr/babel-plugin-replace-jsx-attribute-value`](../babel-plugin-replace-jsx-attribute-value/README.md) +- [`@svgr/babel-plugin-svg-dynamic-title`](../babel-plugin-svg-dynamic-title/README.md) +- [`@svgr/babel-plugin-svg-em-dimensions`](../babel-plugin-svg-em-dimensions/README.md) +- [`@svgr/babel-plugin-transform-react-native-svg`](../babel-plugin-transform-react-native-svg/README.md) +- [`@svgr/babel-plugin-transform-svg-component`](../babel-plugin-transform-svg-component/README.md) + +If you want to create your own, reading [Babel Handbook](https://github.com/jamiebuilds/babel-handbook/blob/master/translations/en/plugin-handbook.md) is a good start! + +## License + +MIT diff --git a/node_modules/@svgr/plugin-jsx/package.json b/node_modules/@svgr/plugin-jsx/package.json new file mode 100644 index 00000000..3c80cfe0 --- /dev/null +++ b/node_modules/@svgr/plugin-jsx/package.json @@ -0,0 +1,46 @@ +{ + "name": "@svgr/plugin-jsx", + "description": "Transform SVG into JSX", + "version": "6.5.1", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "repository": "https://github.com/gregberge/svgr/tree/main/packages/plugin-jsx", + "author": "Greg Bergé ", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "svgr-plugin" + ], + "engines": { + "node": ">=10" + }, + "homepage": "https://react-svgr.com", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "license": "MIT", + "scripts": { + "reset": "rm -rf dist", + "build": "rollup -c ../../build/rollup.config.js", + "prepublishOnly": "npm run reset && npm run build" + }, + "peerDependencies": { + "@svgr/core": "^6.0.0" + }, + "dependencies": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/hast-util-to-babel-ast": "^6.5.1", + "svg-parser": "^2.0.4" + }, + "gitHead": "d5efedd372999692f84d30072e502b5a6b8fe734" +} diff --git a/node_modules/@svgr/plugin-svgo/LICENSE b/node_modules/@svgr/plugin-svgo/LICENSE new file mode 100644 index 00000000..eab30266 --- /dev/null +++ b/node_modules/@svgr/plugin-svgo/LICENSE @@ -0,0 +1,7 @@ +Copyright 2017 Smooth Code + +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. diff --git a/node_modules/@svgr/plugin-svgo/README.md b/node_modules/@svgr/plugin-svgo/README.md new file mode 100644 index 00000000..424ce72c --- /dev/null +++ b/node_modules/@svgr/plugin-svgo/README.md @@ -0,0 +1,27 @@ +# @svgr/plugin-svgo + +[![Build Status](https://img.shields.io/travis/smooth-code/svgr.svg)](https://travis-ci.org/smooth-code/svgr) +[![Version](https://img.shields.io/npm/v/@svgr/plugin-svgo.svg)](https://www.npmjs.com/package/@svgr/plugin-svgo) +[![MIT License](https://img.shields.io/npm/l/@svgr/plugin-svgo.svg)](https://github.com/smooth-code/svgr/blob/master/LICENSE) + +Optimize SVG using SVGO. + +## Install + +``` +npm install --save-dev @svgr/plugin-svgo +``` + +## Usage + +**.svgrrc** + +```json +{ + "plugins": ["@svgr/plugin-svgo"] +} +``` + +## License + +MIT diff --git a/node_modules/@svgr/plugin-svgo/node_modules/.bin/svgo b/node_modules/@svgr/plugin-svgo/node_modules/.bin/svgo new file mode 120000 index 00000000..555c9902 --- /dev/null +++ b/node_modules/@svgr/plugin-svgo/node_modules/.bin/svgo @@ -0,0 +1 @@ +../../../../svgo/bin/svgo \ No newline at end of file diff --git a/node_modules/@svgr/plugin-svgo/package.json b/node_modules/@svgr/plugin-svgo/package.json new file mode 100644 index 00000000..34383414 --- /dev/null +++ b/node_modules/@svgr/plugin-svgo/package.json @@ -0,0 +1,45 @@ +{ + "name": "@svgr/plugin-svgo", + "description": "Optimize SVG", + "version": "6.5.1", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "repository": "https://github.com/gregberge/svgr/tree/main/packages/plugin-svgo", + "author": "Greg Bergé ", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "svgr-plugin" + ], + "engines": { + "node": ">=10" + }, + "homepage": "https://react-svgr.com", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "license": "MIT", + "scripts": { + "reset": "rm -rf dist", + "build": "rollup -c ../../build/rollup.config.js", + "prepublishOnly": "npm run reset && npm run build" + }, + "peerDependencies": { + "@svgr/core": "*" + }, + "dependencies": { + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "svgo": "^2.8.0" + }, + "gitHead": "d5efedd372999692f84d30072e502b5a6b8fe734" +} diff --git a/node_modules/@svgr/webpack/LICENSE b/node_modules/@svgr/webpack/LICENSE new file mode 100644 index 00000000..eab30266 --- /dev/null +++ b/node_modules/@svgr/webpack/LICENSE @@ -0,0 +1,7 @@ +Copyright 2017 Smooth Code + +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. diff --git a/node_modules/@svgr/webpack/README.md b/node_modules/@svgr/webpack/README.md new file mode 100644 index 00000000..99b264ac --- /dev/null +++ b/node_modules/@svgr/webpack/README.md @@ -0,0 +1,129 @@ +# @svgr/webpack + +[![Build Status](https://img.shields.io/travis/gregberge/svgr.svg)](https://travis-ci.org/gregberge/svgr) +[![Version](https://img.shields.io/npm/v/@svgr/webpack.svg)](https://www.npmjs.com/package/@svgr/webpack) +[![MIT License](https://img.shields.io/npm/l/@svgr/webpack.svg)](https://github.com/gregberge/svgr/blob/master/LICENSE) + +Webpack loader for SVGR. + +``` +npm install @svgr/webpack --save-dev +``` + +## Usage + +In your `webpack.config.js`: + +```js +{ + test: /\.svg$/, + use: ['@svgr/webpack'], +} +``` + +In your code: + +```js +import Star from './star.svg' + +const App = () => ( +
+ +
+) +``` + +### Passing options + +```js +{ + test: /\.svg$/, + use: [ + { + loader: '@svgr/webpack', + options: { + native: true, + }, + }, + ], +} +``` + +### Using with `url-loader` or `file-loader` + +It is possible to use it with [`url-loader`](https://github.com/webpack-contrib/url-loader) or [`file-loader`](https://github.com/webpack-contrib/file-loader). + +In your `webpack.config.js`: + +```js +{ + test: /\.svg$/, + use: ['@svgr/webpack', 'url-loader'], +} +``` + +In your code: + +```js +import starUrl, { ReactComponent as Star } from './star.svg' + +const App = () => ( +
+ star + +
+) +``` + +The named export defaults to `ReactComponent`, but can be customized with the `namedExport` option. + +Please note that by default, `@svgr/webpack` will try to export the React Component via default export if there is no other loader handling svg files with default export. When there is already any other loader using default export for svg files, `@svgr/webpack` will always export the React component via named export. + +If you prefer named export in any case, you may set the `exportType` option to `named`. + +### Use your own Babel configuration + +By default, `@svgr/webpack` includes a `babel-loader` with [an optimized configuration](https://github.com/gregberge/svgr/blob/main/packages/webpack/src/index.ts). In some case you may want to apply a custom one (if you are using Preact for an example). You can turn off Babel transformation by specifying `babel: false` in options. + +```js +// Example using preact +{ + test: /\.svg$/, + use: [ + { + loader: 'babel-loader', + options: { + presets: ['preact', 'env'], + }, + }, + { + loader: '@svgr/webpack', + options: { babel: false }, + } + ], +} +``` + +### Handle SVG in CSS, Sass or Less + +It is possible to detect the module that requires your SVG using [`Rule.issuer`](https://webpack.js.org/configuration/module/#ruleissuer) in Webpack 5. Using it you can specify two different configurations for JavaScript and the rest of your files. + +```js +;[ + { + test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, + issuer: /\.[jt]sx?$/, + use: ['babel-loader', '@svgr/webpack', 'url-loader'], + }, + { + test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, + loader: 'url-loader', + }, +] +``` + +_[Rule.issuer](https://v4.webpack.js.org/configuration/module/#ruleissuer) in Webpack 4 has additional conditions which are not available in Webpack 5._ + +## License + +MIT diff --git a/node_modules/@svgr/webpack/package.json b/node_modules/@svgr/webpack/package.json new file mode 100644 index 00000000..8d6a3419 --- /dev/null +++ b/node_modules/@svgr/webpack/package.json @@ -0,0 +1,57 @@ +{ + "name": "@svgr/webpack", + "description": "SVGR webpack loader.", + "version": "6.5.1", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "repository": "https://github.com/gregberge/svgr/tree/main/packages/webpack", + "author": "Greg Bergé ", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "svgr", + "svg", + "react", + "webpack", + "webpack-loader" + ], + "engines": { + "node": ">=10" + }, + "homepage": "https://react-svgr.com", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "license": "MIT", + "scripts": { + "reset": "rm -rf dist", + "build": "rollup -c ../../build/rollup.config.js", + "prepublishOnly": "npm run reset && npm run build" + }, + "dependencies": { + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-constant-elements": "^7.18.12", + "@babel/preset-env": "^7.19.4", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@svgr/core": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "@svgr/plugin-svgo": "^6.5.1" + }, + "devDependencies": { + "babel-loader": "^9.0.0", + "memory-fs": "^0.5.0", + "url-loader": "^4.1.1", + "webpack": "^5.74.0" + }, + "gitHead": "d5efedd372999692f84d30072e502b5a6b8fe734" +} diff --git a/node_modules/@szmarczak/http-timer/LICENSE b/node_modules/@szmarczak/http-timer/LICENSE new file mode 100644 index 00000000..15ad2e8d --- /dev/null +++ b/node_modules/@szmarczak/http-timer/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Szymon Marczak + +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. diff --git a/node_modules/@szmarczak/http-timer/README.md b/node_modules/@szmarczak/http-timer/README.md new file mode 100644 index 00000000..f637767d --- /dev/null +++ b/node_modules/@szmarczak/http-timer/README.md @@ -0,0 +1,93 @@ +# http-timer +> Timings for HTTP requests + +[![Build Status](https://travis-ci.org/szmarczak/http-timer.svg?branch=master)](https://travis-ci.org/szmarczak/http-timer) +[![Coverage Status](https://coveralls.io/repos/github/szmarczak/http-timer/badge.svg?branch=master)](https://coveralls.io/github/szmarczak/http-timer?branch=master) +[![install size](https://packagephobia.now.sh/badge?p=@szmarczak/http-timer)](https://packagephobia.now.sh/result?p=@szmarczak/http-timer) + +Inspired by the [`request` package](https://github.com/request/request). + +## Installation + +NPM: + +> `npm install @szmarczak/http-timer` + +Yarn: + +> `yarn add @szmarczak/http-timer` + +## Usage +**Note:** +> - The measured events resemble Node.js events, not the kernel ones. +> - Sending a chunk greater than [`highWaterMark`](https://nodejs.org/api/stream.html#stream_new_stream_writable_options) will result in invalid `upload` and `response` timings. You can avoid this by splitting the payload into smaller chunks. + +```js +import https from 'https'; +import timer from '@szmarczak/http-timer'; + +const request = https.get('https://httpbin.org/anything'); +timer(request); + +request.once('response', response => { + response.resume(); + response.once('end', () => { + console.log(response.timings); // You can use `request.timings` as well + }); +}); + +// { +// start: 1572712180361, +// socket: 1572712180362, +// lookup: 1572712180415, +// connect: 1572712180571, +// upload: 1572712180884, +// response: 1572712181037, +// end: 1572712181039, +// error: undefined, +// abort: undefined, +// phases: { +// wait: 1, +// dns: 53, +// tcp: 156, +// request: 313, +// firstByte: 153, +// download: 2, +// total: 678 +// } +// } +``` + +## API + +### timer(request) + +Returns: `Object` + +**Note**: The time is a `number` representing the milliseconds elapsed since the UNIX epoch. + +- `start` - Time when the request started. +- `socket` - Time when a socket was assigned to the request. +- `lookup` - Time when the DNS lookup finished. +- `connect` - Time when the socket successfully connected. +- `secureConnect` - Time when the socket securely connected. +- `upload` - Time when the request finished uploading. +- `response` - Time when the request fired `response` event. +- `end` - Time when the response fired `end` event. +- `error` - Time when the request fired `error` event. +- `abort` - Time when the request fired `abort` event. +- `phases` + - `wait` - `timings.socket - timings.start` + - `dns` - `timings.lookup - timings.socket` + - `tcp` - `timings.connect - timings.lookup` + - `tls` - `timings.secureConnect - timings.connect` + - `request` - `timings.upload - (timings.secureConnect || timings.connect)` + - `firstByte` - `timings.response - timings.upload` + - `download` - `timings.end - timings.response` + - `total` - `(timings.end || timings.error || timings.abort) - timings.start` + +If something has not been measured yet, it will be `undefined`. + +## License + +MIT diff --git a/node_modules/@szmarczak/http-timer/package.json b/node_modules/@szmarczak/http-timer/package.json new file mode 100644 index 00000000..d9567b5e --- /dev/null +++ b/node_modules/@szmarczak/http-timer/package.json @@ -0,0 +1,89 @@ +{ + "name": "@szmarczak/http-timer", + "version": "5.0.1", + "description": "Timings for HTTP requests", + "type": "module", + "exports": "./dist/source/index.js", + "engines": { + "node": ">=14.16" + }, + "scripts": { + "test": "xo && ava", + "build": "del-cli dist && tsc", + "prepare": "npm run build", + "coveralls": "exit 0 && nyc report --reporter=text-lcov | coveralls" + }, + "files": [ + "dist/source" + ], + "keywords": [ + "http", + "https", + "http2", + "timer", + "timings", + "performance", + "measure" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/szmarczak/http-timer.git" + }, + "author": "Szymon Marczak", + "license": "MIT", + "bugs": { + "url": "https://github.com/szmarczak/http-timer/issues" + }, + "homepage": "https://github.com/szmarczak/http-timer#readme", + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "devDependencies": { + "@ava/typescript": "^2.0.0", + "@sindresorhus/tsconfig": "^1.0.2", + "@types/node": "^16.7.0", + "ava": "^3.15.0", + "coveralls": "^3.1.1", + "del-cli": "^4.0.1", + "http2-wrapper": "^2.1.4", + "nyc": "^15.1.0", + "p-event": "^4.2.0", + "ts-node": "^10.2.1", + "typescript": "^4.3.5", + "xo": "^0.44.0" + }, + "types": "dist/source", + "nyc": { + "extension": [ + ".ts" + ], + "exclude": [ + "**/tests/**" + ] + }, + "xo": { + "rules": { + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-unsafe-assignment": "off", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/no-unsafe-call": "off", + "unicorn/prefer-node-protocol": "off" + } + }, + "ava": { + "files": [ + "tests/*" + ], + "timeout": "1m", + "nonSemVerExperiments": { + "nextGenConfig": true, + "configurableModuleFormat": true + }, + "extensions": { + "ts": "module" + }, + "nodeArguments": [ + "--loader=ts-node/esm" + ] + } +} diff --git a/node_modules/@trysound/sax/LICENSE b/node_modules/@trysound/sax/LICENSE new file mode 100644 index 00000000..19129e31 --- /dev/null +++ b/node_modules/@trysound/sax/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/@trysound/sax/README.md b/node_modules/@trysound/sax/README.md new file mode 100644 index 00000000..c43d2ac2 --- /dev/null +++ b/node_modules/@trysound/sax/README.md @@ -0,0 +1,202 @@ +# svg/sax + +A maintained fork of [sax-js](https://github.com/isaacs/sax-js) sax-style parser for XML and HTML. + +Designed with [node](http://nodejs.org/) in mind, but should work fine in +the browser or other CommonJS implementations. + +## What This Is + +* A very simple tool to parse through an XML string. +* A stepping stone to a streaming HTML parser. +* A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML + docs. + +## What This Is (probably) Not + +* An HTML Parser - That's a fine goal, but this isn't it. It's just + XML. +* A DOM Builder - You can use it to build an object model out of XML, + but it doesn't do that out of the box. +* XSLT - No DOM = no querying. +* 100% Compliant with (some other SAX implementation) - Most SAX + implementations are in Java and do a lot more than this does. +* An XML Validator - It does a little validation when in strict mode, but + not much. +* A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic + masochism. +* A DTD-aware Thing - Fetching DTDs is a much bigger job. + +## Regarding `Hello, world!').close(); +``` + + +## Arguments + +Pass the following arguments to the parser function. All are optional. + +`strict` - Boolean. Whether or not to be a jerk. Default: `false`. + +`opt` - Object bag of settings regarding string formatting. All default to `false`. + +Settings supported: + +* `trim` - Boolean. Whether or not to trim text and comment nodes. +* `normalize` - Boolean. If true, then turn any whitespace into a single + space. +* `lowercase` - Boolean. If true, then lowercase tag names and attribute names + in loose mode, rather than uppercasing them. +* `xmlns` - Boolean. If true, then namespaces are supported. +* `position` - Boolean. If false, then don't track line/col/position. +* `strictEntities` - Boolean. If true, only parse [predefined XML + entities](http://www.w3.org/TR/REC-xml/#sec-predefined-ent) + (`&`, `'`, `>`, `<`, and `"`) + +## Methods + +`write` - Write bytes onto the stream. You don't have to do this all at +once. You can keep writing as much as you want. + +`close` - Close the stream. Once closed, no more data may be written until +it is done processing the buffer, which is signaled by the `end` event. + +`resume` - To gracefully handle errors, assign a listener to the `error` +event. Then, when the error is taken care of, you can call `resume` to +continue parsing. Otherwise, the parser will not continue while in an error +state. + +## Members + +At all times, the parser object will have the following members: + +`line`, `column`, `position` - Indications of the position in the XML +document where the parser currently is looking. + +`startTagPosition` - Indicates the position where the current tag starts. + +`closed` - Boolean indicating whether or not the parser can be written to. +If it's `true`, then wait for the `ready` event to write again. + +`strict` - Boolean indicating whether or not the parser is a jerk. + +`opt` - Any options passed into the constructor. + +`tag` - The current tag being dealt with. + +And a bunch of other stuff that you probably shouldn't touch. + +## Events + +All events emit with a single argument. To listen to an event, assign a +function to `on`. Functions get executed in the this-context of +the parser object. The list of supported events are also in the exported +`EVENTS` array. + +`error` - Indication that something bad happened. The error will be hanging +out on `parser.error`, and must be deleted before parsing can continue. By +listening to this event, you can keep an eye on that kind of stuff. Note: +this happens *much* more in strict mode. Argument: instance of `Error`. + +`text` - Text node. Argument: string of text. + +`doctype` - The ``. Argument: +object with `name` and `body` members. Attributes are not parsed, as +processing instructions have implementation dependent semantics. + +`sgmldeclaration` - Random SGML declarations. Stuff like `` +would trigger this kind of event. This is a weird thing to support, so it +might go away at some point. SAX isn't intended to be used to parse SGML, +after all. + +`opentagstart` - Emitted immediately when the tag name is available, +but before any attributes are encountered. Argument: object with a +`name` field and an empty `attributes` set. Note that this is the +same object that will later be emitted in the `opentag` event. + +`opentag` - An opening tag. Argument: object with `name` and `attributes`. +In non-strict mode, tag names are uppercased, unless the `lowercase` +option is set. If the `xmlns` option is set, then it will contain +namespace binding information on the `ns` member, and will have a +`local`, `prefix`, and `uri` member. + +`closetag` - A closing tag. In loose mode, tags are auto-closed if their +parent closes. In strict mode, well-formedness is enforced. Note that +self-closing tags will have `closeTag` emitted immediately after `openTag`. +Argument: tag name. + +`attribute` - An attribute node. Argument: object with `name` and `value`. +In non-strict mode, attribute names are uppercased, unless the `lowercase` +option is set. If the `xmlns` option is set, it will also contains namespace +information. + +`comment` - A comment node. Argument: the string of the comment. + +`opencdata` - The opening tag of a ``) of a `` tags trigger a `"script"` +event, and their contents are not checked for special xml characters. +If you pass `noscript: true`, then this behavior is suppressed. + +## Reporting Problems + +It's best to write a failing test if you find an issue. I will always +accept pull requests with failing tests if they demonstrate intended +behavior, but it is very hard to figure out what issue you're describing +without a test. Writing a test is also the best way for you yourself +to figure out if you really understand the issue you think you have with +sax-js. diff --git a/node_modules/@trysound/sax/package.json b/node_modules/@trysound/sax/package.json new file mode 100644 index 00000000..b139c5f2 --- /dev/null +++ b/node_modules/@trysound/sax/package.json @@ -0,0 +1,30 @@ +{ + "version": "0.2.0", + "name": "@trysound/sax", + "description": "An evented streaming XML parser in JavaScript", + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "repository": "git://github.com/svg/sax.git", + "license": "ISC", + "contributors": [ + { + "name": "Bogdan Chadkin", + "email": "trysound@yandex.ru", + "url": "http://github.com/TrySound" + } + ], + "main": "lib/sax.js", + "files": [ + "lib" + ], + "engines": { + "node": ">=10.13.0" + }, + "scripts": { + "test": "tap test/*.js --cov -j4", + "lint": "standard -F test/*.js lib/*.js" + }, + "devDependencies": { + "standard": "^8.6.0", + "tap": "^10.5.1" + } +} diff --git a/node_modules/@types/acorn/LICENSE b/node_modules/@types/acorn/LICENSE new file mode 100755 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/acorn/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/acorn/README.md b/node_modules/@types/acorn/README.md new file mode 100755 index 00000000..48809297 --- /dev/null +++ b/node_modules/@types/acorn/README.md @@ -0,0 +1,16 @@ +# Installation +> `npm install --save @types/acorn` + +# Summary +This package contains type definitions for Acorn (https://github.com/acornjs/acorn). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/acorn. + +### Additional Details + * Last updated: Tue, 06 Jul 2021 18:05:30 GMT + * Dependencies: [@types/estree](https://npmjs.com/package/@types/estree) + * Global values: `acorn` + +# Credits +These definitions were written by [RReverser](https://github.com/RReverser), and [e-cloud](https://github.com/e-cloud). diff --git a/node_modules/@types/acorn/index.d.ts b/node_modules/@types/acorn/index.d.ts new file mode 100755 index 00000000..c2df41b1 --- /dev/null +++ b/node_modules/@types/acorn/index.d.ts @@ -0,0 +1,254 @@ +// Type definitions for Acorn 4.0 +// Project: https://github.com/acornjs/acorn +// Definitions by: RReverser , e-cloud +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +export as namespace acorn; +export = acorn; +import * as ESTree from 'estree'; + +declare namespace acorn { + interface PlainObject { + [name: string]: any; + } + + interface PluginsObject { + [name: string]: (p: Parser, config: any) => void; + } + + interface Options { + ecmaVersion?: 3 | 5 | 6 | 7 | 8 | 2015 | 2016 | 2017 | undefined; + sourceType?: 'script' | 'module' | undefined; + onInsertedSemicolon?: ((lastTokEnd: number, lastTokEndLoc?: ESTree.Position) => void) | undefined; + onTrailingComma?: ((lastTokEnd: number, lastTokEndLoc?: ESTree.Position) => void) | undefined; + allowReserved?: boolean | undefined; + allowReturnOutsideFunction?: boolean | undefined; + allowImportExportEverywhere?: boolean | undefined; + allowHashBang?: boolean | undefined; + locations?: boolean | undefined; + onToken?: ((token: Token) => any) | Token[] | undefined; + onComment?: (( + isBlock: boolean, text: string, start: number, end: number, startLoc?: ESTree.Position, + endLoc?: ESTree.Position + ) => void) | Comment[] | undefined; + ranges?: boolean | undefined; + program?: ESTree.Program | undefined; + sourceFile?: string | undefined; + directSourceFile?: string | undefined; + preserveParens?: boolean | undefined; + plugins?: PlainObject | undefined; + } + + class Parser { + constructor(options: Options, input: string, startPos?: number); + + parse(): ESTree.Program; + } + + const plugins: PluginsObject; + + const defaultOptions: Options; + + class Position implements ESTree.Position { + line: number; + column: number; + + constructor(line: number, col: number); + + offset(n: number): Position; + } + + class SourceLocation implements ESTree.SourceLocation { + start: Position; + end: Position; + source?: string | null | undefined; + + constructor(p: Parser, start: Position, end: Position); + } + + function getLineInfo(input: string, offset: number): ESTree.Position; + + class Node { + type: string; + start: number; + end: number; + loc?: ESTree.SourceLocation | undefined; + sourceFile?: string | undefined; + range?: [number, number] | undefined; + + constructor(parser: Parser, pos: number, loc: number); + } + + interface TokeTypeConfig { + keyword: string; + beforeExpr?: boolean | undefined; + startsExpr?: boolean | undefined; + isLoop?: boolean | undefined; + isAssign?: boolean | undefined; + prefix?: boolean | undefined; + postfix?: boolean | undefined; + binop?: number | undefined; + } + + class TokenType { + label: string; + keyword: string; + beforeExpr: boolean; + startsExpr: boolean; + isLoop: boolean; + isAssign: boolean; + prefix: boolean; + postfix: boolean; + binop: number; + updateContext: (prevType: TokenType) => void; + + constructor(label: string, conf?: TokeTypeConfig); + } + + const tokTypes: { + num: TokenType; + regexp: TokenType; + string: TokenType; + name: TokenType; + eof: TokenType; + bracketL: TokenType; + bracketR: TokenType; + braceL: TokenType; + braceR: TokenType; + parenL: TokenType; + parenR: TokenType; + comma: TokenType; + semi: TokenType; + colon: TokenType; + dot: TokenType; + question: TokenType; + arrow: TokenType; + template: TokenType; + ellipsis: TokenType; + backQuote: TokenType; + dollarBraceL: TokenType; + eq: TokenType; + assign: TokenType; + incDec: TokenType; + prefix: TokenType; + logicalOR: TokenType; + logicalAND: TokenType; + bitwiseOR: TokenType; + bitwiseXOR: TokenType; + bitwiseAND: TokenType; + equality: TokenType; + relational: TokenType; + bitShift: TokenType; + plusMin: TokenType; + modulo: TokenType; + star: TokenType; + slash: TokenType; + starstar: TokenType; + _break: TokenType; + _case: TokenType; + _catch: TokenType; + _continue: TokenType; + _debugger: TokenType; + _default: TokenType; + _do: TokenType; + _else: TokenType; + _finally: TokenType; + _for: TokenType; + _function: TokenType; + _if: TokenType; + _return: TokenType; + _switch: TokenType; + _throw: TokenType; + _try: TokenType; + _var: TokenType; + _const: TokenType; + _while: TokenType; + _with: TokenType; + _new: TokenType; + _this: TokenType; + _super: TokenType; + _class: TokenType; + _extends: TokenType; + _export: TokenType; + _import: TokenType; + _null: TokenType; + _true: TokenType; + _false: TokenType; + _in: TokenType; + _instanceof: TokenType; + _typeof: TokenType; + _void: TokenType; + _delete: TokenType; + }; + + class TokContext { + constructor(token: string, isExpr: boolean, preserveSpace: boolean, override: (p: Parser) => void); + } + + const tokContexts: { + b_stat: TokContext; + b_expr: TokContext; + b_tmpl: TokContext; + p_stat: TokContext; + p_expr: TokContext; + q_tmpl: TokContext; + f_expr: TokContext; + }; + + function isIdentifierStart(code: number, astral?: boolean): boolean; + + function isIdentifierChar(code: number, astral?: boolean): boolean; + + interface AbstractToken { + start: number; + end: number; + loc?: SourceLocation | undefined; + range?: [number, number] | undefined; + } + + interface Comment extends AbstractToken { + type: string; + value: string; + } + + class Token { + constructor(p: Parser); + } + + interface Token extends AbstractToken { + type: TokenType; + value: any; + } + + function isNewLine(code: number): boolean; + + const lineBreak: RegExp; + + const lineBreakG: RegExp; + + const version: string; + + // TODO: rename type. + type IParse = (input: string, options?: Options) => ESTree.Program; + + const parse: IParse; + + function parseExpressionAt(input: string, pos?: number, options?: Options): ESTree.Expression; + + interface ITokenizer { + getToken(): Token; + [Symbol.iterator](): Iterator; + } + + function tokenizer(input: string, options: Options): ITokenizer; + + let parse_dammit: IParse | undefined; + let LooseParser: ILooseParserClass | undefined; + let pluginsLoose: PluginsObject | undefined; + + type ILooseParserClass = new (input: string, options?: Options) => ILooseParser; + + interface ILooseParser {} + + function addLooseExports(parse: IParse, parser: ILooseParserClass, plugins: PluginsObject): void; +} diff --git a/node_modules/@types/acorn/package.json b/node_modules/@types/acorn/package.json new file mode 100755 index 00000000..08b48c92 --- /dev/null +++ b/node_modules/@types/acorn/package.json @@ -0,0 +1,32 @@ +{ + "name": "@types/acorn", + "version": "4.0.6", + "description": "TypeScript definitions for Acorn", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/acorn", + "license": "MIT", + "contributors": [ + { + "name": "RReverser", + "url": "https://github.com/RReverser", + "githubUsername": "RReverser" + }, + { + "name": "e-cloud", + "url": "https://github.com/e-cloud", + "githubUsername": "e-cloud" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/acorn" + }, + "scripts": {}, + "dependencies": { + "@types/estree": "*" + }, + "typesPublisherContentHash": "ddcea022bf260ed636fb469eb0880923eb24b6cd7e9ca6cb841e720675c50977", + "typeScriptVersion": "3.6" +} \ No newline at end of file diff --git a/node_modules/@types/body-parser/LICENSE b/node_modules/@types/body-parser/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/body-parser/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/body-parser/README.md b/node_modules/@types/body-parser/README.md new file mode 100644 index 00000000..0d280422 --- /dev/null +++ b/node_modules/@types/body-parser/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/body-parser` + +# Summary +This package contains type definitions for body-parser (https://github.com/expressjs/body-parser). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/body-parser. + +### Additional Details + * Last updated: Mon, 06 Nov 2023 22:41:05 GMT + * Dependencies: [@types/connect](https://npmjs.com/package/@types/connect), [@types/node](https://npmjs.com/package/@types/node) + +# Credits +These definitions were written by [Santi Albo](https://github.com/santialbo), [Vilic Vane](https://github.com/vilic), [Jonathan Häberle](https://github.com/dreampulse), [Gevik Babakhani](https://github.com/blendsdk), [Tomasz Łaziuk](https://github.com/tlaziuk), [Jason Walton](https://github.com/jwalton), and [Piotr Błażejewicz](https://github.com/peterblazejewicz). diff --git a/node_modules/@types/body-parser/index.d.ts b/node_modules/@types/body-parser/index.d.ts new file mode 100644 index 00000000..96feda82 --- /dev/null +++ b/node_modules/@types/body-parser/index.d.ts @@ -0,0 +1,95 @@ +/// + +import { NextHandleFunction } from "connect"; +import * as http from "http"; + +// for docs go to https://github.com/expressjs/body-parser/tree/1.19.0#body-parser + +declare namespace bodyParser { + interface BodyParser { + /** + * @deprecated use individual json/urlencoded middlewares + */ + (options?: OptionsJson & OptionsText & OptionsUrlencoded): NextHandleFunction; + /** + * Returns middleware that only parses json and only looks at requests + * where the Content-Type header matches the type option. + */ + json(options?: OptionsJson): NextHandleFunction; + /** + * Returns middleware that parses all bodies as a Buffer and only looks at requests + * where the Content-Type header matches the type option. + */ + raw(options?: Options): NextHandleFunction; + + /** + * Returns middleware that parses all bodies as a string and only looks at requests + * where the Content-Type header matches the type option. + */ + text(options?: OptionsText): NextHandleFunction; + /** + * Returns middleware that only parses urlencoded bodies and only looks at requests + * where the Content-Type header matches the type option + */ + urlencoded(options?: OptionsUrlencoded): NextHandleFunction; + } + + interface Options { + /** When set to true, then deflated (compressed) bodies will be inflated; when false, deflated bodies are rejected. Defaults to true. */ + inflate?: boolean | undefined; + /** + * Controls the maximum request body size. If this is a number, + * then the value specifies the number of bytes; if it is a string, + * the value is passed to the bytes library for parsing. Defaults to '100kb'. + */ + limit?: number | string | undefined; + /** + * The type option is used to determine what media type the middleware will parse + */ + type?: string | string[] | ((req: http.IncomingMessage) => any) | undefined; + /** + * The verify option, if supplied, is called as verify(req, res, buf, encoding), + * where buf is a Buffer of the raw request body and encoding is the encoding of the request. + */ + verify?(req: http.IncomingMessage, res: http.ServerResponse, buf: Buffer, encoding: string): void; + } + + interface OptionsJson extends Options { + /** + * The reviver option is passed directly to JSON.parse as the second argument. + */ + reviver?(key: string, value: any): any; + /** + * When set to `true`, will only accept arrays and objects; + * when `false` will accept anything JSON.parse accepts. Defaults to `true`. + */ + strict?: boolean | undefined; + } + + interface OptionsText extends Options { + /** + * Specify the default character set for the text content if the charset + * is not specified in the Content-Type header of the request. + * Defaults to `utf-8`. + */ + defaultCharset?: string | undefined; + } + + interface OptionsUrlencoded extends Options { + /** + * The extended option allows to choose between parsing the URL-encoded data + * with the querystring library (when `false`) or the qs library (when `true`). + */ + extended?: boolean | undefined; + /** + * The parameterLimit option controls the maximum number of parameters + * that are allowed in the URL-encoded data. If a request contains more parameters than this value, + * a 413 will be returned to the client. Defaults to 1000. + */ + parameterLimit?: number | undefined; + } +} + +declare const bodyParser: bodyParser.BodyParser; + +export = bodyParser; diff --git a/node_modules/@types/body-parser/package.json b/node_modules/@types/body-parser/package.json new file mode 100644 index 00000000..71f1218d --- /dev/null +++ b/node_modules/@types/body-parser/package.json @@ -0,0 +1,58 @@ +{ + "name": "@types/body-parser", + "version": "1.19.5", + "description": "TypeScript definitions for body-parser", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/body-parser", + "license": "MIT", + "contributors": [ + { + "name": "Santi Albo", + "githubUsername": "santialbo", + "url": "https://github.com/santialbo" + }, + { + "name": "Vilic Vane", + "githubUsername": "vilic", + "url": "https://github.com/vilic" + }, + { + "name": "Jonathan Häberle", + "githubUsername": "dreampulse", + "url": "https://github.com/dreampulse" + }, + { + "name": "Gevik Babakhani", + "githubUsername": "blendsdk", + "url": "https://github.com/blendsdk" + }, + { + "name": "Tomasz Łaziuk", + "githubUsername": "tlaziuk", + "url": "https://github.com/tlaziuk" + }, + { + "name": "Jason Walton", + "githubUsername": "jwalton", + "url": "https://github.com/jwalton" + }, + { + "name": "Piotr Błażejewicz", + "githubUsername": "peterblazejewicz", + "url": "https://github.com/peterblazejewicz" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/body-parser" + }, + "scripts": {}, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + }, + "typesPublisherContentHash": "7be737b78c8aabd5436be840558b283182b44c3cf9da24fb1f2ff8f414db5802", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/bonjour/LICENSE b/node_modules/@types/bonjour/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/bonjour/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/bonjour/README.md b/node_modules/@types/bonjour/README.md new file mode 100644 index 00000000..3bfd1e48 --- /dev/null +++ b/node_modules/@types/bonjour/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/bonjour` + +# Summary +This package contains type definitions for bonjour (https://github.com/watson/bonjour). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/bonjour. + +### Additional Details + * Last updated: Mon, 06 Nov 2023 22:41:05 GMT + * Dependencies: [@types/node](https://npmjs.com/package/@types/node) + +# Credits +These definitions were written by [Quentin Lampin](https://github.com/quentin-ol). diff --git a/node_modules/@types/bonjour/index.d.ts b/node_modules/@types/bonjour/index.d.ts new file mode 100644 index 00000000..9b862a54 --- /dev/null +++ b/node_modules/@types/bonjour/index.d.ts @@ -0,0 +1,90 @@ +/// + +import { RemoteInfo } from "dgram"; + +declare function bonjour(opts?: bonjour.BonjourOptions): bonjour.Bonjour; +export = bonjour; +declare namespace bonjour { + /** + * Start a browser + * + * The browser listens for services by querying for PTR records of a given + * type, protocol and domain, e.g. _http._tcp.local. + * + * If no type is given, a wild card search is performed. + * + * An internal list of online services is kept which starts out empty. When + * ever a new service is discovered, it's added to the list and an "up" event + * is emitted with that service. When it's discovered that the service is no + * longer available, it is removed from the list and a "down" event is emitted + * with that service. + */ + interface Browser extends NodeJS.EventEmitter { + services: RemoteService[]; + start(): void; + update(): void; + stop(): void; + on(event: "up" | "down", listener: (service: RemoteService) => void): this; + once(event: "up" | "down", listener: (service: RemoteService) => void): this; + removeListener(event: "up" | "down", listener: (service: RemoteService) => void): this; + removeAllListeners(event?: "up" | "down"): this; + } + interface BrowserOptions { + type?: string | undefined; + subtypes?: string[] | undefined; + protocol?: string | undefined; + txt?: { [key: string]: string } | undefined; + } + + interface ServiceOptions { + name: string; + host?: string | undefined; + port: number; + type: string; + subtypes?: string[] | undefined; + protocol?: "udp" | "tcp" | undefined; + txt?: { [key: string]: string } | undefined; + probe?: boolean | undefined; + } + + interface BaseService { + name: string; + fqdn: string; + host: string; + port: number; + type: string; + protocol: string; + subtypes: string[]; + txt: { [key: string]: string }; + } + interface RemoteService extends BaseService { + referer: RemoteInfo; + rawTxt: Buffer; + addresses: string[]; + } + interface Service extends BaseService, NodeJS.EventEmitter { + published: boolean; + addresses: string[]; + + stop(cb?: () => void): void; + start(): void; + } + interface BonjourOptions { + type?: "udp4" | "udp6" | undefined; + multicast?: boolean | undefined; + interface?: string | undefined; + port?: number | undefined; + ip?: string | undefined; + ttl?: number | undefined; + loopback?: boolean | undefined; + reuseAddr?: boolean | undefined; + } + interface Bonjour { + (opts?: BonjourOptions): Bonjour; + publish(options: ServiceOptions): Service; + unpublishAll(cb?: () => void): void; + find(options: BrowserOptions, onUp?: (service: RemoteService) => void): Browser; + findOne(options: BrowserOptions, cb?: (service: RemoteService) => void): Browser; + destroy(): void; + } +} diff --git a/node_modules/@types/bonjour/package.json b/node_modules/@types/bonjour/package.json new file mode 100644 index 00000000..b68a94f9 --- /dev/null +++ b/node_modules/@types/bonjour/package.json @@ -0,0 +1,27 @@ +{ + "name": "@types/bonjour", + "version": "3.5.13", + "description": "TypeScript definitions for bonjour", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/bonjour", + "license": "MIT", + "contributors": [ + { + "name": "Quentin Lampin", + "githubUsername": "quentin-ol", + "url": "https://github.com/quentin-ol" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/bonjour" + }, + "scripts": {}, + "dependencies": { + "@types/node": "*" + }, + "typesPublisherContentHash": "af953fb9d89b2e08b510c2d99252988a590b758e2e636fafadf9496dee4f2b68", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/connect-history-api-fallback/LICENSE b/node_modules/@types/connect-history-api-fallback/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/connect-history-api-fallback/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/connect-history-api-fallback/README.md b/node_modules/@types/connect-history-api-fallback/README.md new file mode 100644 index 00000000..dfb7f3a3 --- /dev/null +++ b/node_modules/@types/connect-history-api-fallback/README.md @@ -0,0 +1,51 @@ +# Installation +> `npm install --save @types/connect-history-api-fallback` + +# Summary +This package contains type definitions for connect-history-api-fallback (https://github.com/bripkens/connect-history-api-fallback#readme). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/connect-history-api-fallback. +## [index.d.ts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/connect-history-api-fallback/index.d.ts) +````ts +/// + +import { Url } from "url"; + +import * as core from "express-serve-static-core"; + +export = historyApiFallback; + +declare function historyApiFallback(options?: historyApiFallback.Options): core.RequestHandler; + +declare namespace historyApiFallback { + interface Options { + readonly disableDotRule?: true | undefined; + readonly htmlAcceptHeaders?: ReadonlyArray | undefined; + readonly index?: string | undefined; + readonly logger?: typeof console.log | undefined; + readonly rewrites?: ReadonlyArray | undefined; + readonly verbose?: boolean | undefined; + } + + interface Context { + readonly match: RegExpMatchArray; + readonly parsedUrl: Url; + readonly request: core.Request; + } + type RewriteTo = (context: Context) => string; + + interface Rewrite { + readonly from: RegExp; + readonly to: string | RegExp | RewriteTo; + } +} + +```` + +### Additional Details + * Last updated: Mon, 06 Nov 2023 22:41:05 GMT + * Dependencies: [@types/express-serve-static-core](https://npmjs.com/package/@types/express-serve-static-core), [@types/node](https://npmjs.com/package/@types/node) + +# Credits +These definitions were written by [Douglas Duteil](https://github.com/douglasduteil). diff --git a/node_modules/@types/connect-history-api-fallback/index.d.ts b/node_modules/@types/connect-history-api-fallback/index.d.ts new file mode 100644 index 00000000..b18f15e3 --- /dev/null +++ b/node_modules/@types/connect-history-api-fallback/index.d.ts @@ -0,0 +1,32 @@ +/// + +import { Url } from "url"; + +import * as core from "express-serve-static-core"; + +export = historyApiFallback; + +declare function historyApiFallback(options?: historyApiFallback.Options): core.RequestHandler; + +declare namespace historyApiFallback { + interface Options { + readonly disableDotRule?: true | undefined; + readonly htmlAcceptHeaders?: ReadonlyArray | undefined; + readonly index?: string | undefined; + readonly logger?: typeof console.log | undefined; + readonly rewrites?: ReadonlyArray | undefined; + readonly verbose?: boolean | undefined; + } + + interface Context { + readonly match: RegExpMatchArray; + readonly parsedUrl: Url; + readonly request: core.Request; + } + type RewriteTo = (context: Context) => string; + + interface Rewrite { + readonly from: RegExp; + readonly to: string | RegExp | RewriteTo; + } +} diff --git a/node_modules/@types/connect-history-api-fallback/package.json b/node_modules/@types/connect-history-api-fallback/package.json new file mode 100644 index 00000000..b621740c --- /dev/null +++ b/node_modules/@types/connect-history-api-fallback/package.json @@ -0,0 +1,28 @@ +{ + "name": "@types/connect-history-api-fallback", + "version": "1.5.3", + "description": "TypeScript definitions for connect-history-api-fallback", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/connect-history-api-fallback", + "license": "MIT", + "contributors": [ + { + "name": "Douglas Duteil", + "githubUsername": "douglasduteil", + "url": "https://github.com/douglasduteil" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/connect-history-api-fallback" + }, + "scripts": {}, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + }, + "typesPublisherContentHash": "1cc4b4025cb56c6286a1cc9bca5800addceb257e13fe2a01cdf6bbe1cb41515f", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/connect/LICENSE b/node_modules/@types/connect/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/connect/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/connect/README.md b/node_modules/@types/connect/README.md new file mode 100644 index 00000000..1746fab0 --- /dev/null +++ b/node_modules/@types/connect/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/connect` + +# Summary +This package contains type definitions for connect (https://github.com/senchalabs/connect). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/connect. + +### Additional Details + * Last updated: Mon, 06 Nov 2023 22:41:05 GMT + * Dependencies: [@types/node](https://npmjs.com/package/@types/node) + +# Credits +These definitions were written by [Maxime LUCE](https://github.com/SomaticIT), and [Evan Hahn](https://github.com/EvanHahn). diff --git a/node_modules/@types/connect/index.d.ts b/node_modules/@types/connect/index.d.ts new file mode 100644 index 00000000..8355d781 --- /dev/null +++ b/node_modules/@types/connect/index.d.ts @@ -0,0 +1,91 @@ +/// + +import * as http from "http"; + +/** + * Create a new connect server. + */ +declare function createServer(): createServer.Server; + +declare namespace createServer { + export type ServerHandle = HandleFunction | http.Server; + + export class IncomingMessage extends http.IncomingMessage { + originalUrl?: http.IncomingMessage["url"] | undefined; + } + + type NextFunction = (err?: any) => void; + + export type SimpleHandleFunction = (req: IncomingMessage, res: http.ServerResponse) => void; + export type NextHandleFunction = (req: IncomingMessage, res: http.ServerResponse, next: NextFunction) => void; + export type ErrorHandleFunction = ( + err: any, + req: IncomingMessage, + res: http.ServerResponse, + next: NextFunction, + ) => void; + export type HandleFunction = SimpleHandleFunction | NextHandleFunction | ErrorHandleFunction; + + export interface ServerStackItem { + route: string; + handle: ServerHandle; + } + + export interface Server extends NodeJS.EventEmitter { + (req: http.IncomingMessage, res: http.ServerResponse, next?: Function): void; + + route: string; + stack: ServerStackItem[]; + + /** + * Utilize the given middleware `handle` to the given `route`, + * defaulting to _/_. This "route" is the mount-point for the + * middleware, when given a value other than _/_ the middleware + * is only effective when that segment is present in the request's + * pathname. + * + * For example if we were to mount a function at _/admin_, it would + * be invoked on _/admin_, and _/admin/settings_, however it would + * not be invoked for _/_, or _/posts_. + */ + use(fn: NextHandleFunction): Server; + use(fn: HandleFunction): Server; + use(route: string, fn: NextHandleFunction): Server; + use(route: string, fn: HandleFunction): Server; + + /** + * Handle server requests, punting them down + * the middleware stack. + */ + handle(req: http.IncomingMessage, res: http.ServerResponse, next: Function): void; + + /** + * Listen for connections. + * + * This method takes the same arguments + * as node's `http.Server#listen()`. + * + * HTTP and HTTPS: + * + * If you run your application both as HTTP + * and HTTPS you may wrap them individually, + * since your Connect "server" is really just + * a JavaScript `Function`. + * + * var connect = require('connect') + * , http = require('http') + * , https = require('https'); + * + * var app = connect(); + * + * http.createServer(app).listen(80); + * https.createServer(options, app).listen(443); + */ + listen(port: number, hostname?: string, backlog?: number, callback?: Function): http.Server; + listen(port: number, hostname?: string, callback?: Function): http.Server; + listen(path: string, callback?: Function): http.Server; + listen(handle: any, listeningListener?: Function): http.Server; + } +} + +export = createServer; diff --git a/node_modules/@types/connect/package.json b/node_modules/@types/connect/package.json new file mode 100644 index 00000000..207078e5 --- /dev/null +++ b/node_modules/@types/connect/package.json @@ -0,0 +1,32 @@ +{ + "name": "@types/connect", + "version": "3.4.38", + "description": "TypeScript definitions for connect", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/connect", + "license": "MIT", + "contributors": [ + { + "name": "Maxime LUCE", + "githubUsername": "SomaticIT", + "url": "https://github.com/SomaticIT" + }, + { + "name": "Evan Hahn", + "githubUsername": "EvanHahn", + "url": "https://github.com/EvanHahn" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/connect" + }, + "scripts": {}, + "dependencies": { + "@types/node": "*" + }, + "typesPublisherContentHash": "8990242237504bdec53088b79e314b94bec69286df9de56db31f22de403b4092", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/debug/LICENSE b/node_modules/@types/debug/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/debug/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/debug/README.md b/node_modules/@types/debug/README.md new file mode 100644 index 00000000..e9563de5 --- /dev/null +++ b/node_modules/@types/debug/README.md @@ -0,0 +1,69 @@ +# Installation +> `npm install --save @types/debug` + +# Summary +This package contains type definitions for debug (https://github.com/debug-js/debug). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/debug. +## [index.d.ts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/debug/index.d.ts) +````ts +declare var debug: debug.Debug & { debug: debug.Debug; default: debug.Debug }; + +export = debug; +export as namespace debug; + +declare namespace debug { + interface Debug { + (namespace: string): Debugger; + coerce: (val: any) => any; + disable: () => string; + enable: (namespaces: string) => void; + enabled: (namespaces: string) => boolean; + formatArgs: (this: Debugger, args: any[]) => void; + log: (...args: any[]) => any; + selectColor: (namespace: string) => string | number; + humanize: typeof import("ms"); + + names: RegExp[]; + skips: RegExp[]; + + formatters: Formatters; + + inspectOpts?: { + hideDate?: boolean | number | null; + colors?: boolean | number | null; + depth?: boolean | number | null; + showHidden?: boolean | number | null; + }; + } + + type IDebug = Debug; + + interface Formatters { + [formatter: string]: (v: any) => string; + } + + type IDebugger = Debugger; + + interface Debugger { + (formatter: any, ...args: any[]): void; + + color: string; + diff: number; + enabled: boolean; + log: (...args: any[]) => any; + namespace: string; + destroy: () => boolean; + extend: (namespace: string, delimiter?: string) => Debugger; + } +} + +```` + +### Additional Details + * Last updated: Thu, 09 Nov 2023 03:06:57 GMT + * Dependencies: [@types/ms](https://npmjs.com/package/@types/ms) + +# Credits +These definitions were written by [Seon-Wook Park](https://github.com/swook), [Gal Talmor](https://github.com/galtalmor), [John McLaughlin](https://github.com/zamb3zi), [Brasten Sager](https://github.com/brasten), [Nicolas Penin](https://github.com/npenin), [Kristian Brünn](https://github.com/kristianmitk), and [Caleb Gregory](https://github.com/calebgregory). diff --git a/node_modules/@types/debug/index.d.ts b/node_modules/@types/debug/index.d.ts new file mode 100644 index 00000000..3778eb8d --- /dev/null +++ b/node_modules/@types/debug/index.d.ts @@ -0,0 +1,50 @@ +declare var debug: debug.Debug & { debug: debug.Debug; default: debug.Debug }; + +export = debug; +export as namespace debug; + +declare namespace debug { + interface Debug { + (namespace: string): Debugger; + coerce: (val: any) => any; + disable: () => string; + enable: (namespaces: string) => void; + enabled: (namespaces: string) => boolean; + formatArgs: (this: Debugger, args: any[]) => void; + log: (...args: any[]) => any; + selectColor: (namespace: string) => string | number; + humanize: typeof import("ms"); + + names: RegExp[]; + skips: RegExp[]; + + formatters: Formatters; + + inspectOpts?: { + hideDate?: boolean | number | null; + colors?: boolean | number | null; + depth?: boolean | number | null; + showHidden?: boolean | number | null; + }; + } + + type IDebug = Debug; + + interface Formatters { + [formatter: string]: (v: any) => string; + } + + type IDebugger = Debugger; + + interface Debugger { + (formatter: any, ...args: any[]): void; + + color: string; + diff: number; + enabled: boolean; + log: (...args: any[]) => any; + namespace: string; + destroy: () => boolean; + extend: (namespace: string, delimiter?: string) => Debugger; + } +} diff --git a/node_modules/@types/debug/package.json b/node_modules/@types/debug/package.json new file mode 100644 index 00000000..9127e48f --- /dev/null +++ b/node_modules/@types/debug/package.json @@ -0,0 +1,57 @@ +{ + "name": "@types/debug", + "version": "4.1.12", + "description": "TypeScript definitions for debug", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/debug", + "license": "MIT", + "contributors": [ + { + "name": "Seon-Wook Park", + "githubUsername": "swook", + "url": "https://github.com/swook" + }, + { + "name": "Gal Talmor", + "githubUsername": "galtalmor", + "url": "https://github.com/galtalmor" + }, + { + "name": "John McLaughlin", + "githubUsername": "zamb3zi", + "url": "https://github.com/zamb3zi" + }, + { + "name": "Brasten Sager", + "githubUsername": "brasten", + "url": "https://github.com/brasten" + }, + { + "name": "Nicolas Penin", + "githubUsername": "npenin", + "url": "https://github.com/npenin" + }, + { + "name": "Kristian Brünn", + "githubUsername": "kristianmitk", + "url": "https://github.com/kristianmitk" + }, + { + "name": "Caleb Gregory", + "githubUsername": "calebgregory", + "url": "https://github.com/calebgregory" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/debug" + }, + "scripts": {}, + "dependencies": { + "@types/ms": "*" + }, + "typesPublisherContentHash": "1053110a8e5e302f35fb57f45389304fa5a4f53bb8982b76b8065bcfd7083731", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/eslint-scope/LICENSE b/node_modules/@types/eslint-scope/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/eslint-scope/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/eslint-scope/README.md b/node_modules/@types/eslint-scope/README.md new file mode 100644 index 00000000..cae6d8b2 --- /dev/null +++ b/node_modules/@types/eslint-scope/README.md @@ -0,0 +1,90 @@ +# Installation +> `npm install --save @types/eslint-scope` + +# Summary +This package contains type definitions for eslint-scope (https://github.com/eslint/eslint-scope). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/eslint-scope. +## [index.d.ts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/eslint-scope/index.d.ts) +````ts +import * as eslint from "eslint"; +import * as estree from "estree"; + +export const version: string; + +export class ScopeManager implements eslint.Scope.ScopeManager { + scopes: Scope[]; + globalScope: Scope; + acquire(node: {}, inner?: boolean): Scope | null; + getDeclaredVariables(node: {}): Variable[]; +} + +export class Scope implements eslint.Scope.Scope { + type: + | "block" + | "catch" + | "class" + | "for" + | "function" + | "function-expression-name" + | "global" + | "module" + | "switch" + | "with" + | "TDZ"; + isStrict: boolean; + upper: Scope | null; + childScopes: Scope[]; + variableScope: Scope; + block: estree.Node; + variables: Variable[]; + set: Map; + references: Reference[]; + through: Reference[]; + functionExpressionScope: boolean; +} + +export class Variable implements eslint.Scope.Variable { + name: string; + scope: Scope; + identifiers: estree.Identifier[]; + references: Reference[]; + defs: eslint.Scope.Definition[]; +} + +export class Reference implements eslint.Scope.Reference { + identifier: estree.Identifier; + from: Scope; + resolved: Variable | null; + writeExpr: estree.Node | null; + init: boolean; + + isWrite(): boolean; + isRead(): boolean; + isWriteOnly(): boolean; + isReadOnly(): boolean; + isReadWrite(): boolean; +} + +export interface AnalysisOptions { + optimistic?: boolean; + directive?: boolean; + ignoreEval?: boolean; + nodejsScope?: boolean; + impliedStrict?: boolean; + fallback?: string | ((node: {}) => string[]); + sourceType?: "script" | "module"; + ecmaVersion?: number; +} + +export function analyze(ast: {}, options?: AnalysisOptions): ScopeManager; + +```` + +### Additional Details + * Last updated: Mon, 06 Nov 2023 22:41:05 GMT + * Dependencies: [@types/eslint](https://npmjs.com/package/@types/eslint), [@types/estree](https://npmjs.com/package/@types/estree) + +# Credits +These definitions were written by [Toru Nagashima](https://github.com/mysticatea). diff --git a/node_modules/@types/eslint-scope/index.d.ts b/node_modules/@types/eslint-scope/index.d.ts new file mode 100644 index 00000000..96e3fb37 --- /dev/null +++ b/node_modules/@types/eslint-scope/index.d.ts @@ -0,0 +1,71 @@ +import * as eslint from "eslint"; +import * as estree from "estree"; + +export const version: string; + +export class ScopeManager implements eslint.Scope.ScopeManager { + scopes: Scope[]; + globalScope: Scope; + acquire(node: {}, inner?: boolean): Scope | null; + getDeclaredVariables(node: {}): Variable[]; +} + +export class Scope implements eslint.Scope.Scope { + type: + | "block" + | "catch" + | "class" + | "for" + | "function" + | "function-expression-name" + | "global" + | "module" + | "switch" + | "with" + | "TDZ"; + isStrict: boolean; + upper: Scope | null; + childScopes: Scope[]; + variableScope: Scope; + block: estree.Node; + variables: Variable[]; + set: Map; + references: Reference[]; + through: Reference[]; + functionExpressionScope: boolean; +} + +export class Variable implements eslint.Scope.Variable { + name: string; + scope: Scope; + identifiers: estree.Identifier[]; + references: Reference[]; + defs: eslint.Scope.Definition[]; +} + +export class Reference implements eslint.Scope.Reference { + identifier: estree.Identifier; + from: Scope; + resolved: Variable | null; + writeExpr: estree.Node | null; + init: boolean; + + isWrite(): boolean; + isRead(): boolean; + isWriteOnly(): boolean; + isReadOnly(): boolean; + isReadWrite(): boolean; +} + +export interface AnalysisOptions { + optimistic?: boolean; + directive?: boolean; + ignoreEval?: boolean; + nodejsScope?: boolean; + impliedStrict?: boolean; + fallback?: string | ((node: {}) => string[]); + sourceType?: "script" | "module"; + ecmaVersion?: number; +} + +export function analyze(ast: {}, options?: AnalysisOptions): ScopeManager; diff --git a/node_modules/@types/eslint-scope/package.json b/node_modules/@types/eslint-scope/package.json new file mode 100644 index 00000000..4dabc9ba --- /dev/null +++ b/node_modules/@types/eslint-scope/package.json @@ -0,0 +1,28 @@ +{ + "name": "@types/eslint-scope", + "version": "3.7.7", + "description": "TypeScript definitions for eslint-scope", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/eslint-scope", + "license": "MIT", + "contributors": [ + { + "name": "Toru Nagashima", + "githubUsername": "mysticatea", + "url": "https://github.com/mysticatea" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/eslint-scope" + }, + "scripts": {}, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + }, + "typesPublisherContentHash": "49eee35b78c19e2c83bc96ce190c7a88329006f876dd7f1fb378c1e8034fc8f2", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/eslint/LICENSE b/node_modules/@types/eslint/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/eslint/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/eslint/README.md b/node_modules/@types/eslint/README.md new file mode 100644 index 00000000..c2f40608 --- /dev/null +++ b/node_modules/@types/eslint/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/eslint` + +# Summary +This package contains type definitions for eslint (https://eslint.org). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/eslint. + +### Additional Details + * Last updated: Mon, 06 Nov 2023 22:41:05 GMT + * Dependencies: [@types/estree](https://npmjs.com/package/@types/estree), [@types/json-schema](https://npmjs.com/package/@types/json-schema) + +# Credits +These definitions were written by [Pierre-Marie Dartus](https://github.com/pmdartus), [Jed Fox](https://github.com/j-f1), [Saad Quadri](https://github.com/saadq), [Jason Kwok](https://github.com/JasonHK), [Brad Zacher](https://github.com/bradzacher), and [JounQin](https://github.com/JounQin). diff --git a/node_modules/@types/eslint/helpers.d.ts b/node_modules/@types/eslint/helpers.d.ts new file mode 100644 index 00000000..0cf2141d --- /dev/null +++ b/node_modules/@types/eslint/helpers.d.ts @@ -0,0 +1,3 @@ +type Prepend = ((_: Addend, ..._1: Tuple) => any) extends (..._: infer Result) => any + ? Result + : never; diff --git a/node_modules/@types/eslint/index.d.ts b/node_modules/@types/eslint/index.d.ts new file mode 100644 index 00000000..538c0dc1 --- /dev/null +++ b/node_modules/@types/eslint/index.d.ts @@ -0,0 +1,1305 @@ +/// + +import * as ESTree from "estree"; +import { JSONSchema4 } from "json-schema"; + +export namespace AST { + type TokenType = + | "Boolean" + | "Null" + | "Identifier" + | "Keyword" + | "Punctuator" + | "JSXIdentifier" + | "JSXText" + | "Numeric" + | "String" + | "RegularExpression"; + + interface Token { + type: TokenType; + value: string; + range: Range; + loc: SourceLocation; + } + + interface SourceLocation { + start: ESTree.Position; + end: ESTree.Position; + } + + type Range = [number, number]; + + interface Program extends ESTree.Program { + comments: ESTree.Comment[]; + tokens: Token[]; + loc: SourceLocation; + range: Range; + } +} + +export namespace Scope { + interface ScopeManager { + scopes: Scope[]; + globalScope: Scope | null; + + acquire(node: ESTree.Node, inner?: boolean): Scope | null; + + getDeclaredVariables(node: ESTree.Node): Variable[]; + } + + interface Scope { + type: + | "block" + | "catch" + | "class" + | "for" + | "function" + | "function-expression-name" + | "global" + | "module" + | "switch" + | "with" + | "TDZ"; + isStrict: boolean; + upper: Scope | null; + childScopes: Scope[]; + variableScope: Scope; + block: ESTree.Node; + variables: Variable[]; + set: Map; + references: Reference[]; + through: Reference[]; + functionExpressionScope: boolean; + } + + interface Variable { + name: string; + scope: Scope; + identifiers: ESTree.Identifier[]; + references: Reference[]; + defs: Definition[]; + } + + interface Reference { + identifier: ESTree.Identifier; + from: Scope; + resolved: Variable | null; + writeExpr: ESTree.Node | null; + init: boolean; + + isWrite(): boolean; + + isRead(): boolean; + + isWriteOnly(): boolean; + + isReadOnly(): boolean; + + isReadWrite(): boolean; + } + + type DefinitionType = + | { type: "CatchClause"; node: ESTree.CatchClause; parent: null } + | { type: "ClassName"; node: ESTree.ClassDeclaration | ESTree.ClassExpression; parent: null } + | { type: "FunctionName"; node: ESTree.FunctionDeclaration | ESTree.FunctionExpression; parent: null } + | { type: "ImplicitGlobalVariable"; node: ESTree.Program; parent: null } + | { + type: "ImportBinding"; + node: ESTree.ImportSpecifier | ESTree.ImportDefaultSpecifier | ESTree.ImportNamespaceSpecifier; + parent: ESTree.ImportDeclaration; + } + | { + type: "Parameter"; + node: ESTree.FunctionDeclaration | ESTree.FunctionExpression | ESTree.ArrowFunctionExpression; + parent: null; + } + | { type: "TDZ"; node: any; parent: null } + | { type: "Variable"; node: ESTree.VariableDeclarator; parent: ESTree.VariableDeclaration }; + + type Definition = DefinitionType & { name: ESTree.Identifier }; +} + +// #region SourceCode + +export class SourceCode { + text: string; + ast: AST.Program; + lines: string[]; + hasBOM: boolean; + parserServices: SourceCode.ParserServices; + scopeManager: Scope.ScopeManager; + visitorKeys: SourceCode.VisitorKeys; + + constructor(text: string, ast: AST.Program); + constructor(config: SourceCode.Config); + + static splitLines(text: string): string[]; + + getText(node?: ESTree.Node, beforeCount?: number, afterCount?: number): string; + + getLines(): string[]; + + getAllComments(): ESTree.Comment[]; + + getAncestors(node: ESTree.Node): ESTree.Node[]; + + getComments(node: ESTree.Node): { leading: ESTree.Comment[]; trailing: ESTree.Comment[] }; + + getDeclaredVariables(node: ESTree.Node): Scope.Variable[]; + + getJSDocComment(node: ESTree.Node): ESTree.Comment | null; + + getNodeByRangeIndex(index: number): ESTree.Node | null; + + isSpaceBetweenTokens(first: AST.Token, second: AST.Token): boolean; + + getLocFromIndex(index: number): ESTree.Position; + + getIndexFromLoc(location: ESTree.Position): number; + + // Inherited methods from TokenStore + // --------------------------------- + + getTokenByRangeStart(offset: number, options?: { includeComments: false }): AST.Token | null; + getTokenByRangeStart(offset: number, options: { includeComments: boolean }): AST.Token | ESTree.Comment | null; + + getFirstToken: SourceCode.UnaryNodeCursorWithSkipOptions; + + getFirstTokens: SourceCode.UnaryNodeCursorWithCountOptions; + + getLastToken: SourceCode.UnaryNodeCursorWithSkipOptions; + + getLastTokens: SourceCode.UnaryNodeCursorWithCountOptions; + + getTokenBefore: SourceCode.UnaryCursorWithSkipOptions; + + getTokensBefore: SourceCode.UnaryCursorWithCountOptions; + + getTokenAfter: SourceCode.UnaryCursorWithSkipOptions; + + getTokensAfter: SourceCode.UnaryCursorWithCountOptions; + + getFirstTokenBetween: SourceCode.BinaryCursorWithSkipOptions; + + getFirstTokensBetween: SourceCode.BinaryCursorWithCountOptions; + + getLastTokenBetween: SourceCode.BinaryCursorWithSkipOptions; + + getLastTokensBetween: SourceCode.BinaryCursorWithCountOptions; + + getTokensBetween: SourceCode.BinaryCursorWithCountOptions; + + getTokens: + & ((node: ESTree.Node, beforeCount?: number, afterCount?: number) => AST.Token[]) + & SourceCode.UnaryNodeCursorWithCountOptions; + + commentsExistBetween( + left: ESTree.Node | AST.Token | ESTree.Comment, + right: ESTree.Node | AST.Token | ESTree.Comment, + ): boolean; + + getCommentsBefore(nodeOrToken: ESTree.Node | AST.Token): ESTree.Comment[]; + + getCommentsAfter(nodeOrToken: ESTree.Node | AST.Token): ESTree.Comment[]; + + getCommentsInside(node: ESTree.Node): ESTree.Comment[]; + + getScope(node: ESTree.Node): Scope.Scope; + + isSpaceBetween( + first: ESTree.Node | AST.Token, + second: ESTree.Node | AST.Token, + ): boolean; + + markVariableAsUsed(name: string, refNode?: ESTree.Node): boolean; +} + +export namespace SourceCode { + interface Config { + text: string; + ast: AST.Program; + parserServices?: ParserServices | undefined; + scopeManager?: Scope.ScopeManager | undefined; + visitorKeys?: VisitorKeys | undefined; + } + + type ParserServices = any; + + interface VisitorKeys { + [nodeType: string]: string[]; + } + + interface UnaryNodeCursorWithSkipOptions { + ( + node: ESTree.Node, + options: + | ((token: AST.Token) => token is T) + | { + filter: (token: AST.Token) => token is T; + includeComments?: false | undefined; + skip?: number | undefined; + }, + ): T | null; + ( + node: ESTree.Node, + options: { + filter: (tokenOrComment: AST.Token | ESTree.Comment) => tokenOrComment is T; + includeComments: boolean; + skip?: number | undefined; + }, + ): T | null; + ( + node: ESTree.Node, + options?: + | { + filter?: ((token: AST.Token) => boolean) | undefined; + includeComments?: false | undefined; + skip?: number | undefined; + } + | ((token: AST.Token) => boolean) + | number, + ): AST.Token | null; + ( + node: ESTree.Node, + options: { + filter?: ((token: AST.Token | ESTree.Comment) => boolean) | undefined; + includeComments: boolean; + skip?: number | undefined; + }, + ): AST.Token | ESTree.Comment | null; + } + + interface UnaryNodeCursorWithCountOptions { + ( + node: ESTree.Node, + options: + | ((token: AST.Token) => token is T) + | { + filter: (token: AST.Token) => token is T; + includeComments?: false | undefined; + count?: number | undefined; + }, + ): T[]; + ( + node: ESTree.Node, + options: { + filter: (tokenOrComment: AST.Token | ESTree.Comment) => tokenOrComment is T; + includeComments: boolean; + count?: number | undefined; + }, + ): T[]; + ( + node: ESTree.Node, + options?: + | { + filter?: ((token: AST.Token) => boolean) | undefined; + includeComments?: false | undefined; + count?: number | undefined; + } + | ((token: AST.Token) => boolean) + | number, + ): AST.Token[]; + ( + node: ESTree.Node, + options: { + filter?: ((token: AST.Token | ESTree.Comment) => boolean) | undefined; + includeComments: boolean; + count?: number | undefined; + }, + ): Array; + } + + interface UnaryCursorWithSkipOptions { + ( + node: ESTree.Node | AST.Token | ESTree.Comment, + options: + | ((token: AST.Token) => token is T) + | { + filter: (token: AST.Token) => token is T; + includeComments?: false | undefined; + skip?: number | undefined; + }, + ): T | null; + ( + node: ESTree.Node | AST.Token | ESTree.Comment, + options: { + filter: (tokenOrComment: AST.Token | ESTree.Comment) => tokenOrComment is T; + includeComments: boolean; + skip?: number | undefined; + }, + ): T | null; + ( + node: ESTree.Node | AST.Token | ESTree.Comment, + options?: + | { + filter?: ((token: AST.Token) => boolean) | undefined; + includeComments?: false | undefined; + skip?: number | undefined; + } + | ((token: AST.Token) => boolean) + | number, + ): AST.Token | null; + ( + node: ESTree.Node | AST.Token | ESTree.Comment, + options: { + filter?: ((token: AST.Token | ESTree.Comment) => boolean) | undefined; + includeComments: boolean; + skip?: number | undefined; + }, + ): AST.Token | ESTree.Comment | null; + } + + interface UnaryCursorWithCountOptions { + ( + node: ESTree.Node | AST.Token | ESTree.Comment, + options: + | ((token: AST.Token) => token is T) + | { + filter: (token: AST.Token) => token is T; + includeComments?: false | undefined; + count?: number | undefined; + }, + ): T[]; + ( + node: ESTree.Node | AST.Token | ESTree.Comment, + options: { + filter: (tokenOrComment: AST.Token | ESTree.Comment) => tokenOrComment is T; + includeComments: boolean; + count?: number | undefined; + }, + ): T[]; + ( + node: ESTree.Node | AST.Token | ESTree.Comment, + options?: + | { + filter?: ((token: AST.Token) => boolean) | undefined; + includeComments?: false | undefined; + count?: number | undefined; + } + | ((token: AST.Token) => boolean) + | number, + ): AST.Token[]; + ( + node: ESTree.Node | AST.Token | ESTree.Comment, + options: { + filter?: ((token: AST.Token | ESTree.Comment) => boolean) | undefined; + includeComments: boolean; + count?: number | undefined; + }, + ): Array; + } + + interface BinaryCursorWithSkipOptions { + ( + left: ESTree.Node | AST.Token | ESTree.Comment, + right: ESTree.Node | AST.Token | ESTree.Comment, + options: + | ((token: AST.Token) => token is T) + | { + filter: (token: AST.Token) => token is T; + includeComments?: false | undefined; + skip?: number | undefined; + }, + ): T | null; + ( + left: ESTree.Node | AST.Token | ESTree.Comment, + right: ESTree.Node | AST.Token | ESTree.Comment, + options: { + filter: (tokenOrComment: AST.Token | ESTree.Comment) => tokenOrComment is T; + includeComments: boolean; + skip?: number | undefined; + }, + ): T | null; + ( + left: ESTree.Node | AST.Token | ESTree.Comment, + right: ESTree.Node | AST.Token | ESTree.Comment, + options?: + | { + filter?: ((token: AST.Token) => boolean) | undefined; + includeComments?: false | undefined; + skip?: number | undefined; + } + | ((token: AST.Token) => boolean) + | number, + ): AST.Token | null; + ( + left: ESTree.Node | AST.Token | ESTree.Comment, + right: ESTree.Node | AST.Token | ESTree.Comment, + options: { + filter?: ((token: AST.Token | ESTree.Comment) => boolean) | undefined; + includeComments: boolean; + skip?: number | undefined; + }, + ): AST.Token | ESTree.Comment | null; + } + + interface BinaryCursorWithCountOptions { + ( + left: ESTree.Node | AST.Token | ESTree.Comment, + right: ESTree.Node | AST.Token | ESTree.Comment, + options: + | ((token: AST.Token) => token is T) + | { + filter: (token: AST.Token) => token is T; + includeComments?: false | undefined; + count?: number | undefined; + }, + ): T[]; + ( + left: ESTree.Node | AST.Token | ESTree.Comment, + right: ESTree.Node | AST.Token | ESTree.Comment, + options: { + filter: (tokenOrComment: AST.Token | ESTree.Comment) => tokenOrComment is T; + includeComments: boolean; + count?: number | undefined; + }, + ): T[]; + ( + left: ESTree.Node | AST.Token | ESTree.Comment, + right: ESTree.Node | AST.Token | ESTree.Comment, + options?: + | { + filter?: ((token: AST.Token) => boolean) | undefined; + includeComments?: false | undefined; + count?: number | undefined; + } + | ((token: AST.Token) => boolean) + | number, + ): AST.Token[]; + ( + left: ESTree.Node | AST.Token | ESTree.Comment, + right: ESTree.Node | AST.Token | ESTree.Comment, + options: { + filter?: ((token: AST.Token | ESTree.Comment) => boolean) | undefined; + includeComments: boolean; + count?: number | undefined; + }, + ): Array; + } +} + +// #endregion + +export namespace Rule { + /** + * TODO: Old style rules are planned to be removed in v9, remove this type then (https://github.com/eslint/rfcs/blob/main/designs/2021-schema-object-rules/README.md) + * @deprecated Use `RuleModule` instead. + */ + type OldStyleRule = RuleModule["create"]; + + interface RuleModule { + create(context: RuleContext): RuleListener; + meta?: RuleMetaData | undefined; + schema?: RuleMetaData["schema"]; + } + + type NodeTypes = ESTree.Node["type"]; + interface NodeListener { + ArrayExpression?: ((node: ESTree.ArrayExpression & NodeParentExtension) => void) | undefined; + "ArrayExpression:exit"?: ((node: ESTree.ArrayExpression & NodeParentExtension) => void) | undefined; + ArrayPattern?: ((node: ESTree.ArrayPattern & NodeParentExtension) => void) | undefined; + "ArrayPattern:exit"?: ((node: ESTree.ArrayPattern & NodeParentExtension) => void) | undefined; + ArrowFunctionExpression?: ((node: ESTree.ArrowFunctionExpression & NodeParentExtension) => void) | undefined; + "ArrowFunctionExpression:exit"?: + | ((node: ESTree.ArrowFunctionExpression & NodeParentExtension) => void) + | undefined; + AssignmentExpression?: ((node: ESTree.AssignmentExpression & NodeParentExtension) => void) | undefined; + "AssignmentExpression:exit"?: ((node: ESTree.AssignmentExpression & NodeParentExtension) => void) | undefined; + AssignmentPattern?: ((node: ESTree.AssignmentPattern & NodeParentExtension) => void) | undefined; + "AssignmentPattern:exit"?: ((node: ESTree.AssignmentPattern & NodeParentExtension) => void) | undefined; + AwaitExpression?: ((node: ESTree.AwaitExpression & NodeParentExtension) => void) | undefined; + "AwaitExpression:exit"?: ((node: ESTree.AwaitExpression & NodeParentExtension) => void) | undefined; + BinaryExpression?: ((node: ESTree.BinaryExpression & NodeParentExtension) => void) | undefined; + "BinaryExpression:exit"?: ((node: ESTree.BinaryExpression & NodeParentExtension) => void) | undefined; + BlockStatement?: ((node: ESTree.BlockStatement & NodeParentExtension) => void) | undefined; + "BlockStatement:exit"?: ((node: ESTree.BlockStatement & NodeParentExtension) => void) | undefined; + BreakStatement?: ((node: ESTree.BreakStatement & NodeParentExtension) => void) | undefined; + "BreakStatement:exit"?: ((node: ESTree.BreakStatement & NodeParentExtension) => void) | undefined; + CallExpression?: ((node: ESTree.CallExpression & NodeParentExtension) => void) | undefined; + "CallExpression:exit"?: ((node: ESTree.CallExpression & NodeParentExtension) => void) | undefined; + CatchClause?: ((node: ESTree.CatchClause & NodeParentExtension) => void) | undefined; + "CatchClause:exit"?: ((node: ESTree.CatchClause & NodeParentExtension) => void) | undefined; + ChainExpression?: ((node: ESTree.ChainExpression & NodeParentExtension) => void) | undefined; + "ChainExpression:exit"?: ((node: ESTree.ChainExpression & NodeParentExtension) => void) | undefined; + ClassBody?: ((node: ESTree.ClassBody & NodeParentExtension) => void) | undefined; + "ClassBody:exit"?: ((node: ESTree.ClassBody & NodeParentExtension) => void) | undefined; + ClassDeclaration?: ((node: ESTree.ClassDeclaration & NodeParentExtension) => void) | undefined; + "ClassDeclaration:exit"?: ((node: ESTree.ClassDeclaration & NodeParentExtension) => void) | undefined; + ClassExpression?: ((node: ESTree.ClassExpression & NodeParentExtension) => void) | undefined; + "ClassExpression:exit"?: ((node: ESTree.ClassExpression & NodeParentExtension) => void) | undefined; + ConditionalExpression?: ((node: ESTree.ConditionalExpression & NodeParentExtension) => void) | undefined; + "ConditionalExpression:exit"?: ((node: ESTree.ConditionalExpression & NodeParentExtension) => void) | undefined; + ContinueStatement?: ((node: ESTree.ContinueStatement & NodeParentExtension) => void) | undefined; + "ContinueStatement:exit"?: ((node: ESTree.ContinueStatement & NodeParentExtension) => void) | undefined; + DebuggerStatement?: ((node: ESTree.DebuggerStatement & NodeParentExtension) => void) | undefined; + "DebuggerStatement:exit"?: ((node: ESTree.DebuggerStatement & NodeParentExtension) => void) | undefined; + DoWhileStatement?: ((node: ESTree.DoWhileStatement & NodeParentExtension) => void) | undefined; + "DoWhileStatement:exit"?: ((node: ESTree.DoWhileStatement & NodeParentExtension) => void) | undefined; + EmptyStatement?: ((node: ESTree.EmptyStatement & NodeParentExtension) => void) | undefined; + "EmptyStatement:exit"?: ((node: ESTree.EmptyStatement & NodeParentExtension) => void) | undefined; + ExportAllDeclaration?: ((node: ESTree.ExportAllDeclaration & NodeParentExtension) => void) | undefined; + "ExportAllDeclaration:exit"?: ((node: ESTree.ExportAllDeclaration & NodeParentExtension) => void) | undefined; + ExportDefaultDeclaration?: ((node: ESTree.ExportDefaultDeclaration & NodeParentExtension) => void) | undefined; + "ExportDefaultDeclaration:exit"?: + | ((node: ESTree.ExportDefaultDeclaration & NodeParentExtension) => void) + | undefined; + ExportNamedDeclaration?: ((node: ESTree.ExportNamedDeclaration & NodeParentExtension) => void) | undefined; + "ExportNamedDeclaration:exit"?: + | ((node: ESTree.ExportNamedDeclaration & NodeParentExtension) => void) + | undefined; + ExportSpecifier?: ((node: ESTree.ExportSpecifier & NodeParentExtension) => void) | undefined; + "ExportSpecifier:exit"?: ((node: ESTree.ExportSpecifier & NodeParentExtension) => void) | undefined; + ExpressionStatement?: ((node: ESTree.ExpressionStatement & NodeParentExtension) => void) | undefined; + "ExpressionStatement:exit"?: ((node: ESTree.ExpressionStatement & NodeParentExtension) => void) | undefined; + ForInStatement?: ((node: ESTree.ForInStatement & NodeParentExtension) => void) | undefined; + "ForInStatement:exit"?: ((node: ESTree.ForInStatement & NodeParentExtension) => void) | undefined; + ForOfStatement?: ((node: ESTree.ForOfStatement & NodeParentExtension) => void) | undefined; + "ForOfStatement:exit"?: ((node: ESTree.ForOfStatement & NodeParentExtension) => void) | undefined; + ForStatement?: ((node: ESTree.ForStatement & NodeParentExtension) => void) | undefined; + "ForStatement:exit"?: ((node: ESTree.ForStatement & NodeParentExtension) => void) | undefined; + FunctionDeclaration?: ((node: ESTree.FunctionDeclaration & NodeParentExtension) => void) | undefined; + "FunctionDeclaration:exit"?: ((node: ESTree.FunctionDeclaration & NodeParentExtension) => void) | undefined; + FunctionExpression?: ((node: ESTree.FunctionExpression & NodeParentExtension) => void) | undefined; + "FunctionExpression:exit"?: ((node: ESTree.FunctionExpression & NodeParentExtension) => void) | undefined; + Identifier?: ((node: ESTree.Identifier & NodeParentExtension) => void) | undefined; + "Identifier:exit"?: ((node: ESTree.Identifier & NodeParentExtension) => void) | undefined; + IfStatement?: ((node: ESTree.IfStatement & NodeParentExtension) => void) | undefined; + "IfStatement:exit"?: ((node: ESTree.IfStatement & NodeParentExtension) => void) | undefined; + ImportDeclaration?: ((node: ESTree.ImportDeclaration & NodeParentExtension) => void) | undefined; + "ImportDeclaration:exit"?: ((node: ESTree.ImportDeclaration & NodeParentExtension) => void) | undefined; + ImportDefaultSpecifier?: ((node: ESTree.ImportDefaultSpecifier & NodeParentExtension) => void) | undefined; + "ImportDefaultSpecifier:exit"?: + | ((node: ESTree.ImportDefaultSpecifier & NodeParentExtension) => void) + | undefined; + ImportExpression?: ((node: ESTree.ImportExpression & NodeParentExtension) => void) | undefined; + "ImportExpression:exit"?: ((node: ESTree.ImportExpression & NodeParentExtension) => void) | undefined; + ImportNamespaceSpecifier?: ((node: ESTree.ImportNamespaceSpecifier & NodeParentExtension) => void) | undefined; + "ImportNamespaceSpecifier:exit"?: + | ((node: ESTree.ImportNamespaceSpecifier & NodeParentExtension) => void) + | undefined; + ImportSpecifier?: ((node: ESTree.ImportSpecifier & NodeParentExtension) => void) | undefined; + "ImportSpecifier:exit"?: ((node: ESTree.ImportSpecifier & NodeParentExtension) => void) | undefined; + LabeledStatement?: ((node: ESTree.LabeledStatement & NodeParentExtension) => void) | undefined; + "LabeledStatement:exit"?: ((node: ESTree.LabeledStatement & NodeParentExtension) => void) | undefined; + Literal?: ((node: ESTree.Literal & NodeParentExtension) => void) | undefined; + "Literal:exit"?: ((node: ESTree.Literal & NodeParentExtension) => void) | undefined; + LogicalExpression?: ((node: ESTree.LogicalExpression & NodeParentExtension) => void) | undefined; + "LogicalExpression:exit"?: ((node: ESTree.LogicalExpression & NodeParentExtension) => void) | undefined; + MemberExpression?: ((node: ESTree.MemberExpression & NodeParentExtension) => void) | undefined; + "MemberExpression:exit"?: ((node: ESTree.MemberExpression & NodeParentExtension) => void) | undefined; + MetaProperty?: ((node: ESTree.MetaProperty & NodeParentExtension) => void) | undefined; + "MetaProperty:exit"?: ((node: ESTree.MetaProperty & NodeParentExtension) => void) | undefined; + MethodDefinition?: ((node: ESTree.MethodDefinition & NodeParentExtension) => void) | undefined; + "MethodDefinition:exit"?: ((node: ESTree.MethodDefinition & NodeParentExtension) => void) | undefined; + NewExpression?: ((node: ESTree.NewExpression & NodeParentExtension) => void) | undefined; + "NewExpression:exit"?: ((node: ESTree.NewExpression & NodeParentExtension) => void) | undefined; + ObjectExpression?: ((node: ESTree.ObjectExpression & NodeParentExtension) => void) | undefined; + "ObjectExpression:exit"?: ((node: ESTree.ObjectExpression & NodeParentExtension) => void) | undefined; + ObjectPattern?: ((node: ESTree.ObjectPattern & NodeParentExtension) => void) | undefined; + "ObjectPattern:exit"?: ((node: ESTree.ObjectPattern & NodeParentExtension) => void) | undefined; + PrivateIdentifier?: ((node: ESTree.PrivateIdentifier & NodeParentExtension) => void) | undefined; + "PrivateIdentifier:exit"?: ((node: ESTree.PrivateIdentifier & NodeParentExtension) => void) | undefined; + Program?: ((node: ESTree.Program) => void) | undefined; + "Program:exit"?: ((node: ESTree.Program) => void) | undefined; + Property?: ((node: ESTree.Property & NodeParentExtension) => void) | undefined; + "Property:exit"?: ((node: ESTree.Property & NodeParentExtension) => void) | undefined; + PropertyDefinition?: ((node: ESTree.PropertyDefinition & NodeParentExtension) => void) | undefined; + "PropertyDefinition:exit"?: ((node: ESTree.PropertyDefinition & NodeParentExtension) => void) | undefined; + RestElement?: ((node: ESTree.RestElement & NodeParentExtension) => void) | undefined; + "RestElement:exit"?: ((node: ESTree.RestElement & NodeParentExtension) => void) | undefined; + ReturnStatement?: ((node: ESTree.ReturnStatement & NodeParentExtension) => void) | undefined; + "ReturnStatement:exit"?: ((node: ESTree.ReturnStatement & NodeParentExtension) => void) | undefined; + SequenceExpression?: ((node: ESTree.SequenceExpression & NodeParentExtension) => void) | undefined; + "SequenceExpression:exit"?: ((node: ESTree.SequenceExpression & NodeParentExtension) => void) | undefined; + SpreadElement?: ((node: ESTree.SpreadElement & NodeParentExtension) => void) | undefined; + "SpreadElement:exit"?: ((node: ESTree.SpreadElement & NodeParentExtension) => void) | undefined; + StaticBlock?: ((node: ESTree.StaticBlock & NodeParentExtension) => void) | undefined; + "StaticBlock:exit"?: ((node: ESTree.StaticBlock & NodeParentExtension) => void) | undefined; + Super?: ((node: ESTree.Super & NodeParentExtension) => void) | undefined; + "Super:exit"?: ((node: ESTree.Super & NodeParentExtension) => void) | undefined; + SwitchCase?: ((node: ESTree.SwitchCase & NodeParentExtension) => void) | undefined; + "SwitchCase:exit"?: ((node: ESTree.SwitchCase & NodeParentExtension) => void) | undefined; + SwitchStatement?: ((node: ESTree.SwitchStatement & NodeParentExtension) => void) | undefined; + "SwitchStatement:exit"?: ((node: ESTree.SwitchStatement & NodeParentExtension) => void) | undefined; + TaggedTemplateExpression?: ((node: ESTree.TaggedTemplateExpression & NodeParentExtension) => void) | undefined; + "TaggedTemplateExpression:exit"?: + | ((node: ESTree.TaggedTemplateExpression & NodeParentExtension) => void) + | undefined; + TemplateElement?: ((node: ESTree.TemplateElement & NodeParentExtension) => void) | undefined; + "TemplateElement:exit"?: ((node: ESTree.TemplateElement & NodeParentExtension) => void) | undefined; + TemplateLiteral?: ((node: ESTree.TemplateLiteral & NodeParentExtension) => void) | undefined; + "TemplateLiteral:exit"?: ((node: ESTree.TemplateLiteral & NodeParentExtension) => void) | undefined; + ThisExpression?: ((node: ESTree.ThisExpression & NodeParentExtension) => void) | undefined; + "ThisExpression:exit"?: ((node: ESTree.ThisExpression & NodeParentExtension) => void) | undefined; + ThrowStatement?: ((node: ESTree.ThrowStatement & NodeParentExtension) => void) | undefined; + "ThrowStatement:exit"?: ((node: ESTree.ThrowStatement & NodeParentExtension) => void) | undefined; + TryStatement?: ((node: ESTree.TryStatement & NodeParentExtension) => void) | undefined; + "TryStatement:exit"?: ((node: ESTree.TryStatement & NodeParentExtension) => void) | undefined; + UnaryExpression?: ((node: ESTree.UnaryExpression & NodeParentExtension) => void) | undefined; + "UnaryExpression:exit"?: ((node: ESTree.UnaryExpression & NodeParentExtension) => void) | undefined; + UpdateExpression?: ((node: ESTree.UpdateExpression & NodeParentExtension) => void) | undefined; + "UpdateExpression:exit"?: ((node: ESTree.UpdateExpression & NodeParentExtension) => void) | undefined; + VariableDeclaration?: ((node: ESTree.VariableDeclaration & NodeParentExtension) => void) | undefined; + "VariableDeclaration:exit"?: ((node: ESTree.VariableDeclaration & NodeParentExtension) => void) | undefined; + VariableDeclarator?: ((node: ESTree.VariableDeclarator & NodeParentExtension) => void) | undefined; + "VariableDeclarator:exit"?: ((node: ESTree.VariableDeclarator & NodeParentExtension) => void) | undefined; + WhileStatement?: ((node: ESTree.WhileStatement & NodeParentExtension) => void) | undefined; + "WhileStatement:exit"?: ((node: ESTree.WhileStatement & NodeParentExtension) => void) | undefined; + WithStatement?: ((node: ESTree.WithStatement & NodeParentExtension) => void) | undefined; + "WithStatement:exit"?: ((node: ESTree.WithStatement & NodeParentExtension) => void) | undefined; + YieldExpression?: ((node: ESTree.YieldExpression & NodeParentExtension) => void) | undefined; + "YieldExpression:exit"?: ((node: ESTree.YieldExpression & NodeParentExtension) => void) | undefined; + } + + interface NodeParentExtension { + parent: Node; + } + type Node = ESTree.Node & NodeParentExtension; + + interface RuleListener extends NodeListener { + onCodePathStart?(codePath: CodePath, node: Node): void; + + onCodePathEnd?(codePath: CodePath, node: Node): void; + + onCodePathSegmentStart?(segment: CodePathSegment, node: Node): void; + + onCodePathSegmentEnd?(segment: CodePathSegment, node: Node): void; + + onCodePathSegmentLoop?(fromSegment: CodePathSegment, toSegment: CodePathSegment, node: Node): void; + + [key: string]: + | ((codePath: CodePath, node: Node) => void) + | ((segment: CodePathSegment, node: Node) => void) + | ((fromSegment: CodePathSegment, toSegment: CodePathSegment, node: Node) => void) + | ((node: Node) => void) + | NodeListener[keyof NodeListener] + | undefined; + } + + interface CodePath { + id: string; + initialSegment: CodePathSegment; + finalSegments: CodePathSegment[]; + returnedSegments: CodePathSegment[]; + thrownSegments: CodePathSegment[]; + currentSegments: CodePathSegment[]; + upper: CodePath | null; + childCodePaths: CodePath[]; + } + + interface CodePathSegment { + id: string; + nextSegments: CodePathSegment[]; + prevSegments: CodePathSegment[]; + reachable: boolean; + } + + interface RuleMetaData { + docs?: { + /** Provides a short description of the rule. */ + description?: string | undefined; + /** + * TODO: remove this field in next major release of @types/eslint. + * @deprecated no longer used + */ + category?: string | undefined; + /** Whether the rule is enabled in the plugin's `recommended` configuration. */ + recommended?: boolean | undefined; + /** Specifies the URL at which the full documentation can be accessed (enabling code editors to provide a helpful link on highlighted rule violations). */ + url?: string | undefined; + /** + * TODO: remove this field in next major release of @types/eslint. + * @deprecated use `meta.hasSuggestions` instead + */ + suggestion?: boolean | undefined; + } | undefined; + /** Violation and suggestion messages. */ + messages?: { [messageId: string]: string } | undefined; + /** + * Specifies if the `--fix` option on the command line automatically fixes problems reported by the rule. + * Mandatory for fixable rules. + */ + fixable?: "code" | "whitespace" | undefined; + /** + * Specifies the [options](https://eslint.org/docs/latest/developer-guide/working-with-rules#options-schemas) + * so ESLint can prevent invalid [rule configurations](https://eslint.org/docs/latest/user-guide/configuring/rules#configuring-rules). + * TODO: schema is potentially planned to be no longer be optional in v9 (https://github.com/eslint/rfcs/blob/main/designs/2021-schema-object-rules/README.md) + */ + schema?: JSONSchema4 | JSONSchema4[] | undefined; + + /** Indicates whether the rule has been deprecated. Omit if not deprecated. */ + deprecated?: boolean | undefined; + /** The name of the rule(s) this rule was replaced by, if it was deprecated. */ + replacedBy?: readonly string[]; + + /** + * Indicates the type of rule: + * - `"problem"` means the rule is identifying code that either will cause an error or may cause a confusing behavior. Developers should consider this a high priority to resolve. + * - `"suggestion"` means the rule is identifying something that could be done in a better way but no errors will occur if the code isn’t changed. + * - `"layout"` means the rule cares primarily about whitespace, semicolons, commas, and parentheses, + * all the parts of the program that determine how the code looks rather than how it executes. + * These rules work on parts of the code that aren’t specified in the AST. + */ + type?: "problem" | "suggestion" | "layout" | undefined; + /** + * Specifies whether the rule can return suggestions (defaults to `false` if omitted). + * Mandatory for rules that provide suggestions. + */ + hasSuggestions?: boolean | undefined; + } + + interface RuleContext { + id: string; + options: any[]; + settings: { [name: string]: any }; + parserPath: string; + parserOptions: Linter.ParserOptions; + parserServices: SourceCode.ParserServices; + cwd: string; + filename: string; + physicalFilename: string; + sourceCode: SourceCode; + + getAncestors(): ESTree.Node[]; + + getDeclaredVariables(node: ESTree.Node): Scope.Variable[]; + + /** @deprecated Use property `filename` directly instead */ + getFilename(): string; + + /** @deprecated Use property `physicalFilename` directly instead */ + getPhysicalFilename(): string; + + /** @deprecated Use property `cwd` directly instead */ + getCwd(): string; + + getScope(): Scope.Scope; + + /** @deprecated Use property `sourceCode` directly instead */ + getSourceCode(): SourceCode; + + markVariableAsUsed(name: string): boolean; + + report(descriptor: ReportDescriptor): void; + } + + type ReportFixer = (fixer: RuleFixer) => null | Fix | IterableIterator | Fix[]; + + interface ReportDescriptorOptionsBase { + data?: { [key: string]: string }; + + fix?: null | ReportFixer; + } + + interface SuggestionReportOptions { + data?: { [key: string]: string }; + + fix: ReportFixer; + } + + type SuggestionDescriptorMessage = { desc: string } | { messageId: string }; + type SuggestionReportDescriptor = SuggestionDescriptorMessage & SuggestionReportOptions; + + interface ReportDescriptorOptions extends ReportDescriptorOptionsBase { + suggest?: SuggestionReportDescriptor[] | null | undefined; + } + + type ReportDescriptor = ReportDescriptorMessage & ReportDescriptorLocation & ReportDescriptorOptions; + type ReportDescriptorMessage = { message: string } | { messageId: string }; + type ReportDescriptorLocation = + | { node: ESTree.Node } + | { loc: AST.SourceLocation | { line: number; column: number } }; + + interface RuleFixer { + insertTextAfter(nodeOrToken: ESTree.Node | AST.Token, text: string): Fix; + + insertTextAfterRange(range: AST.Range, text: string): Fix; + + insertTextBefore(nodeOrToken: ESTree.Node | AST.Token, text: string): Fix; + + insertTextBeforeRange(range: AST.Range, text: string): Fix; + + remove(nodeOrToken: ESTree.Node | AST.Token): Fix; + + removeRange(range: AST.Range): Fix; + + replaceText(nodeOrToken: ESTree.Node | AST.Token, text: string): Fix; + + replaceTextRange(range: AST.Range, text: string): Fix; + } + + interface Fix { + range: AST.Range; + text: string; + } +} + +// #region Linter + +export class Linter { + static version: string; + + version: string; + + constructor(options?: { cwd?: string | undefined; configType?: "flat" }); + + verify( + code: SourceCode | string, + config: Linter.Config | Linter.FlatConfig[], + filename?: string, + ): Linter.LintMessage[]; + verify( + code: SourceCode | string, + config: Linter.Config | Linter.FlatConfig[], + options: Linter.LintOptions, + ): Linter.LintMessage[]; + + verifyAndFix(code: string, config: Linter.Config | Linter.FlatConfig[], filename?: string): Linter.FixReport; + verifyAndFix( + code: string, + config: Linter.Config | Linter.FlatConfig[], + options: Linter.FixOptions, + ): Linter.FixReport; + + getSourceCode(): SourceCode; + + defineRule(name: string, rule: Rule.RuleModule): void; + + defineRules(rules: { [name: string]: Rule.RuleModule }): void; + + getRules(): Map; + + defineParser(name: string, parser: Linter.ParserModule): void; +} + +export namespace Linter { + type Severity = 0 | 1 | 2; + type StringSeverity = "off" | "warn" | "error"; + + type RuleLevel = Severity | StringSeverity; + type RuleLevelAndOptions = Prepend, RuleLevel>; + + type RuleEntry = RuleLevel | RuleLevelAndOptions; + + interface RulesRecord { + [rule: string]: RuleEntry; + } + + interface HasRules { + rules?: Partial | undefined; + } + + interface BaseConfig + extends HasRules + { + $schema?: string | undefined; + env?: { [name: string]: boolean } | undefined; + extends?: string | string[] | undefined; + globals?: { [name: string]: boolean | "off" | "readonly" | "readable" | "writable" | "writeable" } | undefined; + noInlineConfig?: boolean | undefined; + overrides?: Array> | undefined; + parser?: string | undefined; + parserOptions?: ParserOptions | undefined; + plugins?: string[] | undefined; + processor?: string | undefined; + reportUnusedDisableDirectives?: boolean | undefined; + settings?: { [name: string]: any } | undefined; + } + + interface ConfigOverride extends BaseConfig { + excludedFiles?: string | string[] | undefined; + files: string | string[]; + } + + // https://github.com/eslint/eslint/blob/v6.8.0/conf/config-schema.js + interface Config + extends BaseConfig + { + ignorePatterns?: string | string[] | undefined; + root?: boolean | undefined; + } + + interface ParserOptions { + ecmaVersion?: + | 3 + | 5 + | 6 + | 7 + | 8 + | 9 + | 10 + | 11 + | 12 + | 13 + | 14 + | 15 + | 2015 + | 2016 + | 2017 + | 2018 + | 2019 + | 2020 + | 2021 + | 2022 + | 2023 + | 2024 + | "latest" + | undefined; + sourceType?: "script" | "module" | undefined; + ecmaFeatures?: { + globalReturn?: boolean | undefined; + impliedStrict?: boolean | undefined; + jsx?: boolean | undefined; + experimentalObjectRestSpread?: boolean | undefined; + [key: string]: any; + } | undefined; + [key: string]: any; + } + + interface LintOptions { + filename?: string | undefined; + preprocess?: ((code: string) => string[]) | undefined; + postprocess?: ((problemLists: LintMessage[][]) => LintMessage[]) | undefined; + filterCodeBlock?: boolean | undefined; + disableFixes?: boolean | undefined; + allowInlineConfig?: boolean | undefined; + reportUnusedDisableDirectives?: boolean | undefined; + } + + interface LintSuggestion { + desc: string; + fix: Rule.Fix; + messageId?: string | undefined; + } + + interface LintMessage { + column: number; + line: number; + endColumn?: number | undefined; + endLine?: number | undefined; + ruleId: string | null; + message: string; + messageId?: string | undefined; + nodeType?: string | undefined; + fatal?: true | undefined; + severity: Severity; + fix?: Rule.Fix | undefined; + /** @deprecated Use `linter.getSourceCode()` */ + source?: string | null | undefined; + suggestions?: LintSuggestion[] | undefined; + } + + interface LintSuppression { + kind: string; + justification: string; + } + + interface SuppressedLintMessage extends LintMessage { + suppressions: LintSuppression[]; + } + + interface FixOptions extends LintOptions { + fix?: boolean | undefined; + } + + interface FixReport { + fixed: boolean; + output: string; + messages: LintMessage[]; + } + + type ParserModule = + & ESLint.ObjectMetaProperties + & ( + | { parse(text: string, options?: any): AST.Program } + | { parseForESLint(text: string, options?: any): ESLintParseResult } + ); + + interface ESLintParseResult { + ast: AST.Program; + parserServices?: SourceCode.ParserServices | undefined; + scopeManager?: Scope.ScopeManager | undefined; + visitorKeys?: SourceCode.VisitorKeys | undefined; + } + + interface ProcessorFile { + text: string; + filename: string; + } + + // https://eslint.org/docs/developer-guide/working-with-plugins#processors-in-plugins + interface Processor extends ESLint.ObjectMetaProperties { + supportsAutofix?: boolean | undefined; + preprocess?(text: string, filename: string): T[]; + postprocess?(messages: LintMessage[][], filename: string): LintMessage[]; + } + + type FlatConfigFileSpec = string | ((filePath: string) => boolean); + + interface FlatConfig { + /** + * An array of glob patterns indicating the files that the configuration + * object should apply to. If not specified, the configuration object applies + * to all files + */ + files?: Array; + /** + * An array of glob patterns indicating the files that the configuration + * object should not apply to. If not specified, the configuration object + * applies to all files matched by files + */ + ignores?: FlatConfigFileSpec[]; + /** + * An object containing settings related to how JavaScript is configured for + * linting. + */ + languageOptions?: { + /** + * The version of ECMAScript to support. May be any year (i.e., 2022) or + * version (i.e., 5). Set to "latest" for the most recent supported version. + * @default "latest" + */ + ecmaVersion?: ParserOptions["ecmaVersion"]; + /** + * The type of JavaScript source code. Possible values are "script" for + * traditional script files, "module" for ECMAScript modules (ESM), and + * "commonjs" for CommonJS files. (default: "module" for .js and .mjs + * files; "commonjs" for .cjs files) + */ + sourceType?: "script" | "module" | "commonjs"; + /** + * An object specifying additional objects that should be added to the + * global scope during linting. + */ + globals?: ESLint.Environment["globals"]; + /** + * An object containing a parse() or parseForESLint() method. + * If not configured, the default ESLint parser (Espree) will be used. + */ + parser?: ParserModule; + /** + * An object specifying additional options that are passed directly to the + * parser() method on the parser. The available options are parser-dependent + */ + parserOptions?: ESLint.Environment["parserOptions"]; + }; + /** + * An object containing settings related to the linting process + */ + linterOptions?: { + /** + * A Boolean value indicating if inline configuration is allowed. + */ + noInlineConfig?: boolean; + /** + * A Boolean value indicating if unused disable directives should be + * tracked and reported. + */ + reportUnusedDisableDirectives?: boolean; + }; + /** + * Either an object containing preprocess() and postprocess() methods or a + * string indicating the name of a processor inside of a plugin + * (i.e., "pluginName/processorName"). + */ + processor?: string | Processor; + /** + * An object containing a name-value mapping of plugin names to plugin objects. + * When files is specified, these plugins are only available to the matching files. + */ + plugins?: Record; + /** + * An object containing the configured rules. When files or ignores are specified, + * these rule configurations are only available to the matching files. + */ + rules?: RulesRecord; + /** + * An object containing name-value pairs of information that should be + * available to all rules. + */ + settings?: Record; + } +} + +// #endregion + +// #region ESLint + +export class ESLint { + static version: string; + + static outputFixes(results: ESLint.LintResult[]): Promise; + + static getErrorResults(results: ESLint.LintResult[]): ESLint.LintResult[]; + + constructor(options?: ESLint.Options); + + lintFiles(patterns: string | string[]): Promise; + + lintText( + code: string, + options?: { filePath?: string | undefined; warnIgnored?: boolean | undefined }, + ): Promise; + + getRulesMetaForResults(results: ESLint.LintResult[]): ESLint.LintResultData["rulesMeta"]; + + calculateConfigForFile(filePath: string): Promise; + + isPathIgnored(filePath: string): Promise; + + loadFormatter(nameOrPath?: string): Promise; +} + +export namespace ESLint { + type ConfigData = Omit, "$schema">; + + interface Environment { + globals?: { [name: string]: boolean } | undefined; + parserOptions?: Linter.ParserOptions | undefined; + } + + interface ObjectMetaProperties { + /** @deprecated Use `meta.name` instead. */ + name?: string | undefined; + + /** @deprecated Use `meta.version` instead. */ + version?: string | undefined; + + meta?: { + name?: string | undefined; + version?: string | undefined; + }; + } + + interface Plugin extends ObjectMetaProperties { + configs?: Record | undefined; + environments?: Record | undefined; + processors?: Record | undefined; + rules?: Record | undefined; + } + + interface Options { + // File enumeration + cwd?: string | undefined; + errorOnUnmatchedPattern?: boolean | undefined; + extensions?: string[] | undefined; + globInputPaths?: boolean | undefined; + ignore?: boolean | undefined; + ignorePath?: string | undefined; + + // Linting + allowInlineConfig?: boolean | undefined; + baseConfig?: Linter.Config | undefined; + overrideConfig?: Linter.Config | undefined; + overrideConfigFile?: string | undefined; + plugins?: Record | undefined; + reportUnusedDisableDirectives?: Linter.StringSeverity | undefined; + resolvePluginsRelativeTo?: string | undefined; + rulePaths?: string[] | undefined; + useEslintrc?: boolean | undefined; + + // Autofix + fix?: boolean | ((message: Linter.LintMessage) => boolean) | undefined; + fixTypes?: Array | undefined; + + // Cache-related + cache?: boolean | undefined; + cacheLocation?: string | undefined; + cacheStrategy?: "content" | "metadata" | undefined; + } + + interface LintResult { + filePath: string; + messages: Linter.LintMessage[]; + suppressedMessages: Linter.SuppressedLintMessage[]; + errorCount: number; + fatalErrorCount: number; + warningCount: number; + fixableErrorCount: number; + fixableWarningCount: number; + output?: string | undefined; + source?: string | undefined; + usedDeprecatedRules: DeprecatedRuleUse[]; + } + + interface LintResultData { + cwd: string; + rulesMeta: { + [ruleId: string]: Rule.RuleMetaData; + }; + } + + interface DeprecatedRuleUse { + ruleId: string; + replacedBy: string[]; + } + + interface Formatter { + format(results: LintResult[], data?: LintResultData): string | Promise; + } + + // Docs reference the type by this name + type EditInfo = Rule.Fix; +} + +// #endregion + +// #region RuleTester + +export class RuleTester { + constructor(config?: any); + + run( + name: string, + rule: Rule.RuleModule, + tests: { + valid?: Array | undefined; + invalid?: RuleTester.InvalidTestCase[] | undefined; + }, + ): void; + + static only( + item: string | RuleTester.ValidTestCase | RuleTester.InvalidTestCase, + ): RuleTester.ValidTestCase | RuleTester.InvalidTestCase; +} + +export namespace RuleTester { + interface ValidTestCase { + name?: string; + code: string; + options?: any; + filename?: string | undefined; + only?: boolean; + parserOptions?: Linter.ParserOptions | undefined; + settings?: { [name: string]: any } | undefined; + parser?: string | undefined; + globals?: { [name: string]: boolean } | undefined; + } + + interface SuggestionOutput { + messageId?: string | undefined; + desc?: string | undefined; + data?: Record | undefined; + output: string; + } + + interface InvalidTestCase extends ValidTestCase { + errors: number | Array; + output?: string | null | undefined; + } + + interface TestCaseError { + message?: string | RegExp | undefined; + messageId?: string | undefined; + type?: string | undefined; + data?: any; + line?: number | undefined; + column?: number | undefined; + endLine?: number | undefined; + endColumn?: number | undefined; + suggestions?: SuggestionOutput[] | undefined; + } +} + +// #endregion diff --git a/node_modules/@types/eslint/package.json b/node_modules/@types/eslint/package.json new file mode 100644 index 00000000..6b814219 --- /dev/null +++ b/node_modules/@types/eslint/package.json @@ -0,0 +1,65 @@ +{ + "name": "@types/eslint", + "version": "8.44.7", + "description": "TypeScript definitions for eslint", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/eslint", + "license": "MIT", + "contributors": [ + { + "name": "Pierre-Marie Dartus", + "githubUsername": "pmdartus", + "url": "https://github.com/pmdartus" + }, + { + "name": "Jed Fox", + "githubUsername": "j-f1", + "url": "https://github.com/j-f1" + }, + { + "name": "Saad Quadri", + "githubUsername": "saadq", + "url": "https://github.com/saadq" + }, + { + "name": "Jason Kwok", + "githubUsername": "JasonHK", + "url": "https://github.com/JasonHK" + }, + { + "name": "Brad Zacher", + "githubUsername": "bradzacher", + "url": "https://github.com/bradzacher" + }, + { + "name": "JounQin", + "githubUsername": "JounQin", + "url": "https://github.com/JounQin" + } + ], + "main": "", + "types": "index.d.ts", + "exports": { + ".": { + "types": "./index.d.ts" + }, + "./use-at-your-own-risk": { + "types": "./use-at-your-own-risk.d.ts" + }, + "./rules": { + "types": "./rules/index.d.ts" + }, + "./package.json": "./package.json" + }, + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/eslint" + }, + "scripts": {}, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + }, + "typesPublisherContentHash": "facea692714088a94ef6a014a4a7fc3cb11893272d6f0cdea27862748165784a", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/eslint/rules/best-practices.d.ts b/node_modules/@types/eslint/rules/best-practices.d.ts new file mode 100644 index 00000000..9ddd9045 --- /dev/null +++ b/node_modules/@types/eslint/rules/best-practices.d.ts @@ -0,0 +1,931 @@ +import { Linter } from "../index"; + +export interface BestPractices extends Linter.RulesRecord { + /** + * Rule to enforce getter and setter pairs in objects. + * + * @since 0.22.0 + * @see https://eslint.org/docs/rules/accessor-pairs + */ + "accessor-pairs": Linter.RuleEntry< + [ + Partial<{ + /** + * @default true + */ + setWithoutGet: boolean; + /** + * @default false + */ + getWithoutSet: boolean; + }>, + ] + >; + + /** + * Rule to enforce `return` statements in callbacks of array methods. + * + * @since 2.0.0-alpha-1 + * @see https://eslint.org/docs/rules/array-callback-return + */ + "array-callback-return": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + allowImplicit: boolean; + }>, + ] + >; + + /** + * Rule to enforce the use of variables within the scope they are defined. + * + * @since 0.1.0 + * @see https://eslint.org/docs/rules/block-scoped-var + */ + "block-scoped-var": Linter.RuleEntry<[]>; + + /** + * Rule to enforce that class methods utilize `this`. + * + * @since 3.4.0 + * @see https://eslint.org/docs/rules/class-methods-use-this + */ + "class-methods-use-this": Linter.RuleEntry< + [ + Partial<{ + exceptMethods: string[]; + }>, + ] + >; + + /** + * Rule to enforce a maximum cyclomatic complexity allowed in a program. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/complexity + */ + complexity: Linter.RuleEntry< + [ + | Partial<{ + /** + * @default 20 + */ + max: number; + /** + * @deprecated + * @default 20 + */ + maximum: number; + }> + | number, + ] + >; + + /** + * Rule to require `return` statements to either always or never specify values. + * + * @since 0.4.0 + * @see https://eslint.org/docs/rules/consistent-return + */ + "consistent-return": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + treatUndefinedAsUnspecified: boolean; + }>, + ] + >; + + /** + * Rule to enforce consistent brace style for all control statements. + * + * @since 0.0.2 + * @see https://eslint.org/docs/rules/curly + */ + curly: Linter.RuleEntry<["all" | "multi" | "multi-line" | "multi-or-nest" | "consistent"]>; + + /** + * Rule to require `default` cases in `switch` statements. + * + * @since 0.6.0 + * @see https://eslint.org/docs/rules/default-case + */ + "default-case": Linter.RuleEntry< + [ + Partial<{ + /** + * @default '^no default$' + */ + commentPattern: string; + }>, + ] + >; + + /** + * Rule to enforce consistent newlines before and after dots. + * + * @since 0.21.0 + * @see https://eslint.org/docs/rules/dot-location + */ + "dot-location": Linter.RuleEntry<["object" | "property"]>; + + /** + * Rule to enforce dot notation whenever possible. + * + * @since 0.0.7 + * @see https://eslint.org/docs/rules/dot-notation + */ + "dot-notation": Linter.RuleEntry< + [ + Partial<{ + /** + * @default true + */ + allowKeywords: boolean; + allowPattern: string; + }>, + ] + >; + + /** + * Rule to require the use of `===` and `!==`. + * + * @since 0.0.2 + * @see https://eslint.org/docs/rules/eqeqeq + */ + eqeqeq: + | Linter.RuleEntry< + [ + "always", + Partial<{ + /** + * @default 'always' + */ + null: "always" | "never" | "ignore"; + }>, + ] + > + | Linter.RuleEntry<["smart" | "allow-null"]>; + + /** + * Rule to require `for-in` loops to include an `if` statement. + * + * @since 0.0.6 + * @see https://eslint.org/docs/rules/guard-for-in + */ + "guard-for-in": Linter.RuleEntry<[]>; + + /** + * Rule to enforce a maximum number of classes per file. + * + * @since 5.0.0-alpha.3 + * @see https://eslint.org/docs/rules/max-classes-per-file + */ + "max-classes-per-file": Linter.RuleEntry<[number]>; + + /** + * Rule to disallow the use of `alert`, `confirm`, and `prompt`. + * + * @since 0.0.5 + * @see https://eslint.org/docs/rules/no-alert + */ + "no-alert": Linter.RuleEntry<[]>; + + /** + * Rule to disallow the use of `arguments.caller` or `arguments.callee`. + * + * @since 0.0.6 + * @see https://eslint.org/docs/rules/no-caller + */ + "no-caller": Linter.RuleEntry<[]>; + + /** + * Rule to disallow lexical declarations in case clauses. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 1.9.0 + * @see https://eslint.org/docs/rules/no-case-declarations + */ + "no-case-declarations": Linter.RuleEntry<[]>; + + /** + * Rule to disallow division operators explicitly at the beginning of regular expressions. + * + * @since 0.1.0 + * @see https://eslint.org/docs/rules/no-div-regex + */ + "no-div-regex": Linter.RuleEntry<[]>; + + /** + * Rule to disallow `else` blocks after `return` statements in `if` statements. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-else-return + */ + "no-else-return": Linter.RuleEntry< + [ + Partial<{ + /** + * @default true + */ + allowElseIf: boolean; + }>, + ] + >; + + /** + * Rule to disallow empty functions. + * + * @since 2.0.0 + * @see https://eslint.org/docs/rules/no-empty-function + */ + "no-empty-function": Linter.RuleEntry< + [ + Partial<{ + /** + * @default [] + */ + allow: Array< + | "functions" + | "arrowFunctions" + | "generatorFunctions" + | "methods" + | "generatorMethods" + | "getters" + | "setters" + | "constructors" + >; + }>, + ] + >; + + /** + * Rule to disallow empty destructuring patterns. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 1.7.0 + * @see https://eslint.org/docs/rules/no-empty-pattern + */ + "no-empty-pattern": Linter.RuleEntry<[]>; + + /** + * Rule to disallow `null` comparisons without type-checking operators. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-eq-null + */ + "no-eq-null": Linter.RuleEntry<[]>; + + /** + * Rule to disallow the use of `eval()`. + * + * @since 0.0.2 + * @see https://eslint.org/docs/rules/no-eval + */ + "no-eval": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + allowIndirect: boolean; + }>, + ] + >; + + /** + * Rule to disallow extending native types. + * + * @since 0.1.4 + * @see https://eslint.org/docs/rules/no-extend-native + */ + "no-extend-native": Linter.RuleEntry< + [ + Partial<{ + exceptions: string[]; + }>, + ] + >; + + /** + * Rule to disallow unnecessary calls to `.bind()`. + * + * @since 0.8.0 + * @see https://eslint.org/docs/rules/no-extra-bind + */ + "no-extra-bind": Linter.RuleEntry<[]>; + + /** + * Rule to disallow unnecessary labels. + * + * @since 2.0.0-rc.0 + * @see https://eslint.org/docs/rules/no-extra-label + */ + "no-extra-label": Linter.RuleEntry<[]>; + + /** + * Rule to disallow fallthrough of `case` statements. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.7 + * @see https://eslint.org/docs/rules/no-fallthrough + */ + "no-fallthrough": Linter.RuleEntry< + [ + Partial<{ + /** + * @default 'falls?\s?through' + */ + commentPattern: string; + }>, + ] + >; + + /** + * Rule to disallow leading or trailing decimal points in numeric literals. + * + * @since 0.0.6 + * @see https://eslint.org/docs/rules/no-floating-decimal + */ + "no-floating-decimal": Linter.RuleEntry<[]>; + + /** + * Rule to disallow assignments to native objects or read-only global variables. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 3.3.0 + * @see https://eslint.org/docs/rules/no-global-assign + */ + "no-global-assign": Linter.RuleEntry< + [ + Partial<{ + exceptions: string[]; + }>, + ] + >; + + /** + * Rule to disallow shorthand type conversions. + * + * @since 1.0.0-rc-2 + * @see https://eslint.org/docs/rules/no-implicit-coercion + */ + "no-implicit-coercion": Linter.RuleEntry< + [ + Partial<{ + /** + * @default true + */ + boolean: boolean; + /** + * @default true + */ + number: boolean; + /** + * @default true + */ + string: boolean; + /** + * @default [] + */ + allow: Array<"~" | "!!" | "+" | "*">; + }>, + ] + >; + + /** + * Rule to disallow variable and `function` declarations in the global scope. + * + * @since 2.0.0-alpha-1 + * @see https://eslint.org/docs/rules/no-implicit-globals + */ + "no-implicit-globals": Linter.RuleEntry<[]>; + + /** + * Rule to disallow the use of `eval()`-like methods. + * + * @since 0.0.7 + * @see https://eslint.org/docs/rules/no-implied-eval + */ + "no-implied-eval": Linter.RuleEntry<[]>; + + /** + * Rule to disallow `this` keywords outside of classes or class-like objects. + * + * @since 1.0.0-rc-2 + * @see https://eslint.org/docs/rules/no-invalid-this + */ + "no-invalid-this": Linter.RuleEntry<[]>; + + /** + * Rule to disallow the use of the `__iterator__` property. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-iterator + */ + "no-iterator": Linter.RuleEntry<[]>; + + /** + * Rule to disallow labeled statements. + * + * @since 0.4.0 + * @see https://eslint.org/docs/rules/no-labels + */ + "no-labels": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + allowLoop: boolean; + /** + * @default false + */ + allowSwitch: boolean; + }>, + ] + >; + + /** + * Rule to disallow unnecessary nested blocks. + * + * @since 0.4.0 + * @see https://eslint.org/docs/rules/no-lone-blocks + */ + "no-lone-blocks": Linter.RuleEntry<[]>; + + /** + * Rule to disallow function declarations that contain unsafe references inside loop statements. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-loop-func + */ + "no-loop-func": Linter.RuleEntry<[]>; + + /** + * Rule to disallow magic numbers. + * + * @since 1.7.0 + * @see https://eslint.org/docs/rules/no-magic-numbers + */ + "no-magic-numbers": Linter.RuleEntry< + [ + Partial<{ + /** + * @default [] + */ + ignore: number[]; + /** + * @default false + */ + ignoreArrayIndexes: boolean; + /** + * @default false + */ + enforceConst: boolean; + /** + * @default false + */ + detectObjects: boolean; + }>, + ] + >; + + /** + * Rule to disallow multiple spaces. + * + * @since 0.9.0 + * @see https://eslint.org/docs/rules/no-multi-spaces + */ + "no-multi-spaces": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + ignoreEOLComments: boolean; + /** + * @default { Property: true } + */ + exceptions: Record; + }>, + ] + >; + + /** + * Rule to disallow multiline strings. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-multi-str + */ + "no-multi-str": Linter.RuleEntry<[]>; + + /** + * Rule to disallow `new` operators outside of assignments or comparisons. + * + * @since 0.0.7 + * @see https://eslint.org/docs/rules/no-new + */ + "no-new": Linter.RuleEntry<[]>; + + /** + * Rule to disallow `new` operators with the `Function` object. + * + * @since 0.0.7 + * @see https://eslint.org/docs/rules/no-new-func + */ + "no-new-func": Linter.RuleEntry<[]>; + + /** + * Rule to disallow `new` operators with the `String`, `Number`, and `Boolean` objects. + * + * @since 0.0.6 + * @see https://eslint.org/docs/rules/no-new-wrappers + */ + "no-new-wrappers": Linter.RuleEntry<[]>; + + /** + * Rule to disallow octal literals. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.6 + * @see https://eslint.org/docs/rules/no-octal + */ + "no-octal": Linter.RuleEntry<[]>; + + /** + * Rule to disallow octal escape sequences in string literals. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-octal-escape + */ + "no-octal-escape": Linter.RuleEntry<[]>; + + /** + * Rule to disallow reassigning `function` parameters. + * + * @since 0.18.0 + * @see https://eslint.org/docs/rules/no-param-reassign + */ + "no-param-reassign": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + props: boolean; + /** + * @default [] + */ + ignorePropertyModificationsFor: string[]; + }>, + ] + >; + + /** + * Rule to disallow the use of the `__proto__` property. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-proto + */ + "no-proto": Linter.RuleEntry<[]>; + + /** + * Rule to disallow variable redeclaration. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-redeclare + */ + "no-redeclare": Linter.RuleEntry< + [ + Partial<{ + /** + * @default true + */ + builtinGlobals: boolean; + }>, + ] + >; + + /** + * Rule to disallow certain properties on certain objects. + * + * @since 3.5.0 + * @see https://eslint.org/docs/rules/no-restricted-properties + */ + "no-restricted-properties": Linter.RuleEntry< + [ + ...Array< + | { + object: string; + property?: string | undefined; + message?: string | undefined; + } + | { + property: string; + message?: string | undefined; + } + >, + ] + >; + + /** + * Rule to disallow assignment operators in `return` statements. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-return-assign + */ + "no-return-assign": Linter.RuleEntry<["except-parens" | "always"]>; + + /** + * Rule to disallow unnecessary `return await`. + * + * @since 3.10.0 + * @see https://eslint.org/docs/rules/no-return-await + */ + "no-return-await": Linter.RuleEntry<[]>; + + /** + * Rule to disallow `javascript:` urls. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-script-url + */ + "no-script-url": Linter.RuleEntry<[]>; + + /** + * Rule to disallow assignments where both sides are exactly the same. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 2.0.0-rc.0 + * @see https://eslint.org/docs/rules/no-self-assign + */ + "no-self-assign": Linter.RuleEntry<[]>; + + /** + * Rule to disallow comparisons where both sides are exactly the same. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-self-compare + */ + "no-self-compare": Linter.RuleEntry<[]>; + + /** + * Rule to disallow comma operators. + * + * @since 0.5.1 + * @see https://eslint.org/docs/rules/no-sequences + */ + "no-sequences": Linter.RuleEntry<[]>; + + /** + * Rule to disallow throwing literals as exceptions. + * + * @since 0.15.0 + * @see https://eslint.org/docs/rules/no-throw-literal + */ + "no-throw-literal": Linter.RuleEntry<[]>; + + /** + * Rule to disallow unmodified loop conditions. + * + * @since 2.0.0-alpha-2 + * @see https://eslint.org/docs/rules/no-unmodified-loop-condition + */ + "no-unmodified-loop-condition": Linter.RuleEntry<[]>; + + /** + * Rule to disallow unused expressions. + * + * @since 0.1.0 + * @see https://eslint.org/docs/rules/no-unused-expressions + */ + "no-unused-expressions": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + allowShortCircuit: boolean; + /** + * @default false + */ + allowTernary: boolean; + /** + * @default false + */ + allowTaggedTemplates: boolean; + }>, + ] + >; + + /** + * Rule to disallow unused labels. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 2.0.0-rc.0 + * @see https://eslint.org/docs/rules/no-unused-labels + */ + "no-unused-labels": Linter.RuleEntry<[]>; + + /** + * Rule to disallow unnecessary calls to `.call()` and `.apply()`. + * + * @since 1.0.0-rc-1 + * @see https://eslint.org/docs/rules/no-useless-call + */ + "no-useless-call": Linter.RuleEntry<[]>; + + /** + * Rule to disallow unnecessary `catch` clauses. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 5.11.0 + * @see https://eslint.org/docs/rules/no-useless-catch + */ + "no-useless-catch": Linter.RuleEntry<[]>; + + /** + * Rule to disallow unnecessary concatenation of literals or template literals. + * + * @since 1.3.0 + * @see https://eslint.org/docs/rules/no-useless-concat + */ + "no-useless-concat": Linter.RuleEntry<[]>; + + /** + * Rule to disallow unnecessary escape characters. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 2.5.0 + * @see https://eslint.org/docs/rules/no-useless-escape + */ + "no-useless-escape": Linter.RuleEntry<[]>; + + /** + * Rule to disallow redundant return statements. + * + * @since 3.9.0 + * @see https://eslint.org/docs/rules/no-useless-return + */ + "no-useless-return": Linter.RuleEntry<[]>; + + /** + * Rule to disallow `void` operators. + * + * @since 0.8.0 + * @see https://eslint.org/docs/rules/no-void + */ + "no-void": Linter.RuleEntry<[]>; + + /** + * Rule to disallow specified warning terms in comments. + * + * @since 0.4.4 + * @see https://eslint.org/docs/rules/no-warning-comments + */ + "no-warning-comments": Linter.RuleEntry< + [ + { + /** + * @default ["todo", "fixme", "xxx"] + */ + terms: string[]; + /** + * @default 'start' + */ + location: "start" | "anywhere"; + }, + ] + >; + + /** + * Rule to disallow `with` statements. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.2 + * @see https://eslint.org/docs/rules/no-with + */ + "no-with": Linter.RuleEntry<[]>; + + /** + * Rule to enforce using named capture group in regular expression. + * + * @since 5.15.0 + * @see https://eslint.org/docs/rules/prefer-named-capture-group + */ + "prefer-named-capture-group": Linter.RuleEntry<[]>; + + /** + * Rule to require using Error objects as Promise rejection reasons. + * + * @since 3.14.0 + * @see https://eslint.org/docs/rules/prefer-promise-reject-errors + */ + "prefer-promise-reject-errors": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + allowEmptyReject: boolean; + }>, + ] + >; + + /** + * Rule to enforce the consistent use of the radix argument when using `parseInt()`. + * + * @since 0.0.7 + * @see https://eslint.org/docs/rules/radix + */ + radix: Linter.RuleEntry<["always" | "as-needed"]>; + + /** + * Rule to disallow async functions which have no `await` expression. + * + * @since 3.11.0 + * @see https://eslint.org/docs/rules/require-await + */ + "require-await": Linter.RuleEntry<[]>; + + /** + * Rule to enforce the use of `u` flag on RegExp. + * + * @since 5.3.0 + * @see https://eslint.org/docs/rules/require-unicode-regexp + */ + "require-unicode-regexp": Linter.RuleEntry<[]>; + + /** + * Rule to require `var` declarations be placed at the top of their containing scope. + * + * @since 0.8.0 + * @see https://eslint.org/docs/rules/vars-on-top + */ + "vars-on-top": Linter.RuleEntry<[]>; + + /** + * Rule to require parentheses around immediate `function` invocations. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/wrap-iife + */ + "wrap-iife": Linter.RuleEntry< + [ + "outside" | "inside" | "any", + Partial<{ + /** + * @default false + */ + functionPrototypeMethods: boolean; + }>, + ] + >; + + /** + * Rule to require or disallow “Yoda” conditions. + * + * @since 0.7.1 + * @see https://eslint.org/docs/rules/yoda + */ + yoda: + | Linter.RuleEntry< + [ + "never", + Partial<{ + exceptRange: boolean; + onlyEquality: boolean; + }>, + ] + > + | Linter.RuleEntry<["always"]>; +} diff --git a/node_modules/@types/eslint/rules/deprecated.d.ts b/node_modules/@types/eslint/rules/deprecated.d.ts new file mode 100644 index 00000000..0024d892 --- /dev/null +++ b/node_modules/@types/eslint/rules/deprecated.d.ts @@ -0,0 +1,267 @@ +import { Linter } from "../index"; + +export interface Deprecated extends Linter.RulesRecord { + /** + * Rule to enforce consistent indentation. + * + * @since 4.0.0-alpha.0 + * @deprecated since 4.0.0, use [`indent`](https://eslint.org/docs/rules/indent) instead. + * @see https://eslint.org/docs/rules/indent-legacy + */ + "indent-legacy": Linter.RuleEntry< + [ + number | "tab", + Partial<{ + /** + * @default 0 + */ + SwitchCase: number; + /** + * @default 1 + */ + VariableDeclarator: + | Partial<{ + /** + * @default 1 + */ + var: number | "first"; + /** + * @default 1 + */ + let: number | "first"; + /** + * @default 1 + */ + const: number | "first"; + }> + | number + | "first"; + /** + * @default 1 + */ + outerIIFEBody: number; + /** + * @default 1 + */ + MemberExpression: number | "off"; + /** + * @default { parameters: 1, body: 1 } + */ + FunctionDeclaration: Partial<{ + /** + * @default 1 + */ + parameters: number | "first" | "off"; + /** + * @default 1 + */ + body: number; + }>; + /** + * @default { parameters: 1, body: 1 } + */ + FunctionExpression: Partial<{ + /** + * @default 1 + */ + parameters: number | "first" | "off"; + /** + * @default 1 + */ + body: number; + }>; + /** + * @default { arguments: 1 } + */ + CallExpression: Partial<{ + /** + * @default 1 + */ + arguments: number | "first" | "off"; + }>; + /** + * @default 1 + */ + ArrayExpression: number | "first" | "off"; + /** + * @default 1 + */ + ObjectExpression: number | "first" | "off"; + /** + * @default 1 + */ + ImportDeclaration: number | "first" | "off"; + /** + * @default false + */ + flatTernaryExpressions: boolean; + ignoredNodes: string[]; + /** + * @default false + */ + ignoreComments: boolean; + }>, + ] + >; + + /** + * Rule to require or disallow newlines around directives. + * + * @since 3.5.0 + * @deprecated since 4.0.0, use [`padding-line-between-statements`](https://eslint.org/docs/rules/padding-line-between-statements) instead. + * @see https://eslint.org/docs/rules/lines-around-directive + */ + "lines-around-directive": Linter.RuleEntry<["always" | "never"]>; + + /** + * Rule to require or disallow an empty line after variable declarations. + * + * @since 0.18.0 + * @deprecated since 4.0.0, use [`padding-line-between-statements`](https://eslint.org/docs/rules/padding-line-between-statements) instead. + * @see https://eslint.org/docs/rules/newline-after-var + */ + "newline-after-var": Linter.RuleEntry<["always" | "never"]>; + + /** + * Rule to require an empty line before `return` statements. + * + * @since 2.3.0 + * @deprecated since 4.0.0, use [`padding-line-between-statements`](https://eslint.org/docs/rules/padding-line-between-statements) instead. + * @see https://eslint.org/docs/rules/newline-before-return + */ + "newline-before-return": Linter.RuleEntry<[]>; + + /** + * Rule to disallow shadowing of variables inside of `catch`. + * + * @since 0.0.9 + * @deprecated since 5.1.0, use [`no-shadow`](https://eslint.org/docs/rules/no-shadow) instead. + * @see https://eslint.org/docs/rules/no-catch-shadow + */ + "no-catch-shadow": Linter.RuleEntry<[]>; + + /** + * Rule to disallow reassignment of native objects. + * + * @since 0.0.9 + * @deprecated since 3.3.0, use [`no-global-assign`](https://eslint.org/docs/rules/no-global-assign) instead. + * @see https://eslint.org/docs/rules/no-native-reassign + */ + "no-native-reassign": Linter.RuleEntry< + [ + Partial<{ + exceptions: string[]; + }>, + ] + >; + + /** + * Rule to disallow negating the left operand in `in` expressions. + * + * @since 0.1.2 + * @deprecated since 3.3.0, use [`no-unsafe-negation`](https://eslint.org/docs/rules/no-unsafe-negation) instead. + * @see https://eslint.org/docs/rules/no-negated-in-lhs + */ + "no-negated-in-lhs": Linter.RuleEntry<[]>; + + /** + * Rule to disallow spacing between function identifiers and their applications. + * + * @since 0.1.2 + * @deprecated since 3.3.0, use [`func-call-spacing`](https://eslint.org/docs/rules/func-call-spacing) instead. + * @see https://eslint.org/docs/rules/no-spaced-func + */ + "no-spaced-func": Linter.RuleEntry<[]>; + + /** + * Rule to suggest using `Reflect` methods where applicable. + * + * @since 1.0.0-rc-2 + * @deprecated since 3.9.0 + * @see https://eslint.org/docs/rules/prefer-reflect + */ + "prefer-reflect": Linter.RuleEntry< + [ + Partial<{ + exceptions: string[]; + }>, + ] + >; + + /** + * Rule to require JSDoc comments. + * + * @since 1.4.0 + * @deprecated since 5.10.0 + * @see https://eslint.org/docs/rules/require-jsdoc + */ + "require-jsdoc": Linter.RuleEntry< + [ + Partial<{ + require: Partial<{ + /** + * @default true + */ + FunctionDeclaration: boolean; + /** + * @default false + */ + MethodDefinition: boolean; + /** + * @default false + */ + ClassDeclaration: boolean; + /** + * @default false + */ + ArrowFunctionExpression: boolean; + /** + * @default false + */ + FunctionExpression: boolean; + }>; + }>, + ] + >; + + /** + * Rule to enforce valid JSDoc comments. + * + * @since 0.4.0 + * @deprecated since 5.10.0 + * @see https://eslint.org/docs/rules/valid-jsdoc + */ + "valid-jsdoc": Linter.RuleEntry< + [ + Partial<{ + prefer: Record; + preferType: Record; + /** + * @default true + */ + requireReturn: boolean; + /** + * @default true + */ + requireReturnType: boolean; + /** + * @remarks + * Also accept for regular expression pattern + */ + matchDescription: string; + /** + * @default true + */ + requireParamDescription: boolean; + /** + * @default true + */ + requireReturnDescription: boolean; + /** + * @default true + */ + requireParamType: boolean; + }>, + ] + >; +} diff --git a/node_modules/@types/eslint/rules/ecmascript-6.d.ts b/node_modules/@types/eslint/rules/ecmascript-6.d.ts new file mode 100644 index 00000000..761e8297 --- /dev/null +++ b/node_modules/@types/eslint/rules/ecmascript-6.d.ts @@ -0,0 +1,502 @@ +import { Linter } from "../index"; + +export interface ECMAScript6 extends Linter.RulesRecord { + /** + * Rule to require braces around arrow function bodies. + * + * @since 1.8.0 + * @see https://eslint.org/docs/rules/arrow-body-style + */ + "arrow-body-style": + | Linter.RuleEntry< + [ + "as-needed", + Partial<{ + /** + * @default false + */ + requireReturnForObjectLiteral: boolean; + }>, + ] + > + | Linter.RuleEntry<["always" | "never"]>; + + /** + * Rule to require parentheses around arrow function arguments. + * + * @since 1.0.0-rc-1 + * @see https://eslint.org/docs/rules/arrow-parens + */ + "arrow-parens": + | Linter.RuleEntry<["always"]> + | Linter.RuleEntry< + [ + "as-needed", + Partial<{ + /** + * @default false + */ + requireForBlockBody: boolean; + }>, + ] + >; + + /** + * Rule to enforce consistent spacing before and after the arrow in arrow functions. + * + * @since 1.0.0-rc-1 + * @see https://eslint.org/docs/rules/arrow-spacing + */ + "arrow-spacing": Linter.RuleEntry<[]>; + + /** + * Rule to require `super()` calls in constructors. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.24.0 + * @see https://eslint.org/docs/rules/constructor-super + */ + "constructor-super": Linter.RuleEntry<[]>; + + /** + * Rule to enforce consistent spacing around `*` operators in generator functions. + * + * @since 0.17.0 + * @see https://eslint.org/docs/rules/generator-star-spacing + */ + "generator-star-spacing": Linter.RuleEntry< + [ + | Partial<{ + before: boolean; + after: boolean; + named: + | Partial<{ + before: boolean; + after: boolean; + }> + | "before" + | "after" + | "both" + | "neither"; + anonymous: + | Partial<{ + before: boolean; + after: boolean; + }> + | "before" + | "after" + | "both" + | "neither"; + method: + | Partial<{ + before: boolean; + after: boolean; + }> + | "before" + | "after" + | "both" + | "neither"; + }> + | "before" + | "after" + | "both" + | "neither", + ] + >; + + /** + * Rule to disallow reassigning class members. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 1.0.0-rc-1 + * @see https://eslint.org/docs/rules/no-class-assign + */ + "no-class-assign": Linter.RuleEntry<[]>; + + /** + * Rule to disallow arrow functions where they could be confused with comparisons. + * + * @since 2.0.0-alpha-2 + * @see https://eslint.org/docs/rules/no-confusing-arrow + */ + "no-confusing-arrow": Linter.RuleEntry< + [ + Partial<{ + /** + * @default true + */ + allowParens: boolean; + }>, + ] + >; + + /** + * Rule to disallow reassigning `const` variables. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 1.0.0-rc-1 + * @see https://eslint.org/docs/rules/no-const-assign + */ + "no-const-assign": Linter.RuleEntry<[]>; + + /** + * Rule to disallow duplicate class members. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 1.2.0 + * @see https://eslint.org/docs/rules/no-dupe-class-members + */ + "no-dupe-class-members": Linter.RuleEntry<[]>; + + /** + * Rule to disallow duplicate module imports. + * + * @since 2.5.0 + * @see https://eslint.org/docs/rules/no-duplicate-import + */ + "no-duplicate-import": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + includeExports: boolean; + }>, + ] + >; + + /** + * Rule to disallow `new` operators with the `Symbol` object. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 2.0.0-beta.1 + * @see https://eslint.org/docs/rules/no-new-symbol + */ + "no-new-symbol": Linter.RuleEntry<[]>; + + /** + * Rule to disallow specified modules when loaded by `import`. + * + * @since 2.0.0-alpha-1 + * @see https://eslint.org/docs/rules/no-restricted-imports + */ + "no-restricted-imports": Linter.RuleEntry< + [ + ...Array< + | string + | { + name: string; + importNames?: string[] | undefined; + message?: string | undefined; + } + | Partial<{ + paths: Array< + | string + | { + name: string; + importNames?: string[] | undefined; + message?: string | undefined; + } + >; + patterns: string[]; + }> + >, + ] + >; + + /** + * Rule to disallow `this`/`super` before calling `super()` in constructors. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.24.0 + * @see https://eslint.org/docs/rules/no-this-before-super + */ + "no-this-before-super": Linter.RuleEntry<[]>; + + /** + * Rule to disallow unnecessary computed property keys in object literals. + * + * @since 2.9.0 + * @see https://eslint.org/docs/rules/no-useless-computed-key + */ + "no-useless-computed-key": Linter.RuleEntry<[]>; + + /** + * Rule to disallow unnecessary constructors. + * + * @since 2.0.0-beta.1 + * @see https://eslint.org/docs/rules/no-useless-constructor + */ + "no-useless-constructor": Linter.RuleEntry<[]>; + + /** + * Rule to disallow renaming import, export, and destructured assignments to the same name. + * + * @since 2.11.0 + * @see https://eslint.org/docs/rules/no-useless-rename + */ + "no-useless-rename": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + ignoreImport: boolean; + /** + * @default false + */ + ignoreExport: boolean; + /** + * @default false + */ + ignoreDestructuring: boolean; + }>, + ] + >; + + /** + * Rule to require `let` or `const` instead of `var`. + * + * @since 0.12.0 + * @see https://eslint.org/docs/rules/no-var + */ + "no-var": Linter.RuleEntry<[]>; + + /** + * Rule to require or disallow method and property shorthand syntax for object literals. + * + * @since 0.20.0 + * @see https://eslint.org/docs/rules/object-shorthand + */ + "object-shorthand": + | Linter.RuleEntry< + [ + "always" | "methods", + Partial<{ + /** + * @default false + */ + avoidQuotes: boolean; + /** + * @default false + */ + ignoreConstructors: boolean; + /** + * @default false + */ + avoidExplicitReturnArrows: boolean; + }>, + ] + > + | Linter.RuleEntry< + [ + "properties", + Partial<{ + /** + * @default false + */ + avoidQuotes: boolean; + }>, + ] + > + | Linter.RuleEntry<["never" | "consistent" | "consistent-as-needed"]>; + + /** + * Rule to require using arrow functions for callbacks. + * + * @since 1.2.0 + * @see https://eslint.org/docs/rules/prefer-arrow-callback + */ + "prefer-arrow-callback": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + allowNamedFunctions: boolean; + /** + * @default true + */ + allowUnboundThis: boolean; + }>, + ] + >; + + /** + * Rule to require `const` declarations for variables that are never reassigned after declared. + * + * @since 0.23.0 + * @see https://eslint.org/docs/rules/prefer-const + */ + "prefer-const": Linter.RuleEntry< + [ + Partial<{ + /** + * @default 'any' + */ + destructuring: "any" | "all"; + /** + * @default false + */ + ignoreReadBeforeAssign: boolean; + }>, + ] + >; + + /** + * Rule to require destructuring from arrays and/or objects. + * + * @since 3.13.0 + * @see https://eslint.org/docs/rules/prefer-destructuring + */ + "prefer-destructuring": Linter.RuleEntry< + [ + Partial< + | { + VariableDeclarator: Partial<{ + array: boolean; + object: boolean; + }>; + AssignmentExpression: Partial<{ + array: boolean; + object: boolean; + }>; + } + | { + array: boolean; + object: boolean; + } + >, + Partial<{ + enforceForRenamedProperties: boolean; + }>, + ] + >; + + /** + * Rule to disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals. + * + * @since 3.5.0 + * @see https://eslint.org/docs/rules/prefer-numeric-literals + */ + "prefer-numeric-literals": Linter.RuleEntry<[]>; + + /** + * Rule to require rest parameters instead of `arguments`. + * + * @since 2.0.0-alpha-1 + * @see https://eslint.org/docs/rules/prefer-rest-params + */ + "prefer-rest-params": Linter.RuleEntry<[]>; + + /** + * Rule to require spread operators instead of `.apply()`. + * + * @since 1.0.0-rc-1 + * @see https://eslint.org/docs/rules/prefer-spread + */ + "prefer-spread": Linter.RuleEntry<[]>; + + /** + * Rule to require template literals instead of string concatenation. + * + * @since 1.2.0 + * @see https://eslint.org/docs/rules/prefer-template + */ + "prefer-template": Linter.RuleEntry<[]>; + + /** + * Rule to require generator functions to contain `yield`. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 1.0.0-rc-1 + * @see https://eslint.org/docs/rules/require-yield + */ + "require-yield": Linter.RuleEntry<[]>; + + /** + * Rule to enforce spacing between rest and spread operators and their expressions. + * + * @since 2.12.0 + * @see https://eslint.org/docs/rules/rest-spread-spacing + */ + "rest-spread-spacing": Linter.RuleEntry<["never" | "always"]>; + + /** + * Rule to enforce sorted import declarations within modules. + * + * @since 2.0.0-beta.1 + * @see https://eslint.org/docs/rules/sort-imports + */ + "sort-imports": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + ignoreCase: boolean; + /** + * @default false + */ + ignoreDeclarationSort: boolean; + /** + * @default false + */ + ignoreMemberSort: boolean; + /** + * @default ['none', 'all', 'multiple', 'single'] + */ + memberSyntaxSortOrder: Array<"none" | "all" | "multiple" | "single">; + }>, + ] + >; + + /** + * Rule to require symbol descriptions. + * + * @since 3.4.0 + * @see https://eslint.org/docs/rules/symbol-description + */ + "symbol-description": Linter.RuleEntry<[]>; + + /** + * Rule to require or disallow spacing around embedded expressions of template strings. + * + * @since 2.0.0-rc.0 + * @see https://eslint.org/docs/rules/template-curly-spacing + */ + "template-curly-spacing": Linter.RuleEntry<["never" | "always"]>; + + /** + * Rule to require or disallow spacing around the `*` in `yield*` expressions. + * + * @since 2.0.0-alpha-1 + * @see https://eslint.org/docs/rules/yield-star-spacing + */ + "yield-star-spacing": Linter.RuleEntry< + [ + | Partial<{ + before: boolean; + after: boolean; + }> + | "before" + | "after" + | "both" + | "neither", + ] + >; +} diff --git a/node_modules/@types/eslint/rules/index.d.ts b/node_modules/@types/eslint/rules/index.d.ts new file mode 100644 index 00000000..7470777c --- /dev/null +++ b/node_modules/@types/eslint/rules/index.d.ts @@ -0,0 +1,23 @@ +import { Linter } from "../index"; + +import { BestPractices } from "./best-practices"; +import { Deprecated } from "./deprecated"; +import { ECMAScript6 } from "./ecmascript-6"; +import { NodeJSAndCommonJS } from "./node-commonjs"; +import { PossibleErrors } from "./possible-errors"; +import { StrictMode } from "./strict-mode"; +import { StylisticIssues } from "./stylistic-issues"; +import { Variables } from "./variables"; + +export interface ESLintRules + extends + Linter.RulesRecord, + PossibleErrors, + BestPractices, + StrictMode, + Variables, + NodeJSAndCommonJS, + StylisticIssues, + ECMAScript6, + Deprecated +{} diff --git a/node_modules/@types/eslint/rules/node-commonjs.d.ts b/node_modules/@types/eslint/rules/node-commonjs.d.ts new file mode 100644 index 00000000..56a96e3e --- /dev/null +++ b/node_modules/@types/eslint/rules/node-commonjs.d.ts @@ -0,0 +1,133 @@ +import { Linter } from "../index"; + +export interface NodeJSAndCommonJS extends Linter.RulesRecord { + /** + * Rule to require `return` statements after callbacks. + * + * @since 1.0.0-rc-1 + * @see https://eslint.org/docs/rules/callback-return + */ + "callback-return": Linter.RuleEntry<[string[]]>; + + /** + * Rule to require `require()` calls to be placed at top-level module scope. + * + * @since 1.4.0 + * @see https://eslint.org/docs/rules/global-require + */ + "global-require": Linter.RuleEntry<[]>; + + /** + * Rule to require error handling in callbacks. + * + * @since 0.4.5 + * @see https://eslint.org/docs/rules/handle-callback-err + */ + "handle-callback-err": Linter.RuleEntry<[string]>; + + /** + * Rule to disallow use of the `Buffer()` constructor. + * + * @since 4.0.0-alpha.0 + * @see https://eslint.org/docs/rules/no-buffer-constructor + */ + "no-buffer-constructor": Linter.RuleEntry<[]>; + + /** + * Rule to disallow `require` calls to be mixed with regular variable declarations. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-mixed-requires + */ + "no-mixed-requires": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + grouping: boolean; + /** + * @default false + */ + allowCall: boolean; + }>, + ] + >; + + /** + * Rule to disallow `new` operators with calls to `require`. + * + * @since 0.6.0 + * @see https://eslint.org/docs/rules/no-new-require + */ + "no-new-require": Linter.RuleEntry<[]>; + + /** + * Rule to disallow string concatenation when using `__dirname` and `__filename`. + * + * @since 0.4.0 + * @see https://eslint.org/docs/rules/no-path-concat + */ + "no-path-concat": Linter.RuleEntry<[]>; + + /** + * Rule to disallow the use of `process.env`. + * + * @since 0.9.0 + * @see https://eslint.org/docs/rules/no-process-env + */ + "no-process-env": Linter.RuleEntry<[]>; + + /** + * Rule to disallow the use of `process.exit()`. + * + * @since 0.4.0 + * @see https://eslint.org/docs/rules/no-process-exit + */ + "no-process-exit": Linter.RuleEntry<[]>; + + /** + * Rule to disallow specified modules when loaded by `require`. + * + * @since 0.6.0 + * @see https://eslint.org/docs/rules/no-restricted-modules + */ + "no-restricted-modules": Linter.RuleEntry< + [ + ...Array< + | string + | { + name: string; + message?: string | undefined; + } + | Partial<{ + paths: Array< + | string + | { + name: string; + message?: string | undefined; + } + >; + patterns: string[]; + }> + >, + ] + >; + + /** + * Rule to disallow synchronous methods. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-sync + */ + "no-sync": Linter.RuleEntry< + [ + { + /** + * @default false + */ + allowAtRootLevel: boolean; + }, + ] + >; +} diff --git a/node_modules/@types/eslint/rules/possible-errors.d.ts b/node_modules/@types/eslint/rules/possible-errors.d.ts new file mode 100644 index 00000000..8716ba48 --- /dev/null +++ b/node_modules/@types/eslint/rules/possible-errors.d.ts @@ -0,0 +1,484 @@ +import { Linter } from "../index"; + +export interface PossibleErrors extends Linter.RulesRecord { + /** + * Rule to enforce `for` loop update clause moving the counter in the right direction. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 4.0.0-beta.0 + * @see https://eslint.org/docs/rules/for-direction + */ + "for-direction": Linter.RuleEntry<[]>; + + /** + * Rule to enforce `return` statements in getters. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 4.2.0 + * @see https://eslint.org/docs/rules/getter-return + */ + "getter-return": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + allowImplicit: boolean; + }>, + ] + >; + + /** + * Rule to disallow using an async function as a `Promise` executor. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 5.3.0 + * @see https://eslint.org/docs/rules/no-async-promise-executor + */ + "no-async-promise-executor": Linter.RuleEntry<[]>; + + /** + * Rule to disallow `await` inside of loops. + * + * @since 3.12.0 + * @see https://eslint.org/docs/rules/no-await-in-loop + */ + "no-await-in-loop": Linter.RuleEntry<[]>; + + /** + * Rule to disallow comparing against `-0`. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 3.17.0 + * @see https://eslint.org/docs/rules/no-compare-neg-zero + */ + "no-compare-neg-zero": Linter.RuleEntry<[]>; + + /** + * Rule to disallow assignment operators in conditional statements. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-cond-assign + */ + "no-cond-assign": Linter.RuleEntry<["except-parens" | "always"]>; + + /** + * Rule to disallow the use of `console`. + * + * @since 0.0.2 + * @see https://eslint.org/docs/rules/no-console + */ + "no-console": Linter.RuleEntry< + [ + Partial<{ + allow: Array; + }>, + ] + >; + + /** + * Rule to disallow constant expressions in conditions. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.4.1 + * @see https://eslint.org/docs/rules/no-constant-condition + */ + "no-constant-condition": Linter.RuleEntry< + [ + { + /** + * @default true + */ + checkLoops: boolean; + }, + ] + >; + + /** + * Rule to disallow control characters in regular expressions. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.1.0 + * @see https://eslint.org/docs/rules/no-control-regex + */ + "no-control-regex": Linter.RuleEntry<[]>; + + /** + * Rule to disallow the use of `debugger`. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.2 + * @see https://eslint.org/docs/rules/no-debugger + */ + "no-debugger": Linter.RuleEntry<[]>; + + /** + * Rule to disallow duplicate arguments in `function` definitions. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.16.0 + * @see https://eslint.org/docs/rules/no-dupe-args + */ + "no-dupe-args": Linter.RuleEntry<[]>; + + /** + * Rule to disallow duplicate keys in object literals. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-dupe-keys + */ + "no-dupe-keys": Linter.RuleEntry<[]>; + + /** + * Rule to disallow a duplicate case label. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.17.0 + * @see https://eslint.org/docs/rules/no-duplicate-case + */ + "no-duplicate-case": Linter.RuleEntry<[]>; + + /** + * Rule to disallow empty block statements. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.2 + * @see https://eslint.org/docs/rules/no-empty + */ + "no-empty": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + allowEmptyCatch: boolean; + }>, + ] + >; + + /** + * Rule to disallow empty character classes in regular expressions. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.22.0 + * @see https://eslint.org/docs/rules/no-empty-character-class + */ + "no-empty-character-class": Linter.RuleEntry<[]>; + + /** + * Rule to disallow reassigning exceptions in `catch` clauses. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-ex-assign + */ + "no-ex-assign": Linter.RuleEntry<[]>; + + /** + * Rule to disallow unnecessary boolean casts. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.4.0 + * @see https://eslint.org/docs/rules/no-extra-boolean-cast + */ + "no-extra-boolean-cast": Linter.RuleEntry<[]>; + + /** + * Rule to disallow unnecessary parentheses. + * + * @since 0.1.4 + * @see https://eslint.org/docs/rules/no-extra-parens + */ + "no-extra-parens": + | Linter.RuleEntry< + [ + "all", + Partial<{ + /** + * @default true, + */ + conditionalAssign: boolean; + /** + * @default true + */ + returnAssign: boolean; + /** + * @default true + */ + nestedBinaryExpressions: boolean; + /** + * @default 'none' + */ + ignoreJSX: "none" | "all" | "multi-line" | "single-line"; + /** + * @default true + */ + enforceForArrowConditionals: boolean; + }>, + ] + > + | Linter.RuleEntry<["functions"]>; + + /** + * Rule to disallow unnecessary semicolons. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-extra-semi + */ + "no-extra-semi": Linter.RuleEntry<[]>; + + /** + * Rule to disallow reassigning `function` declarations. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-func-assign + */ + "no-func-assign": Linter.RuleEntry<[]>; + + /** + * Rule to disallow variable or `function` declarations in nested blocks. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.6.0 + * @see https://eslint.org/docs/rules/no-inner-declarations + */ + "no-inner-declarations": Linter.RuleEntry<["functions" | "both"]>; + + /** + * Rule to disallow invalid regular expression strings in `RegExp` constructors. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.1.4 + * @see https://eslint.org/docs/rules/no-invalid-regexp + */ + "no-invalid-regexp": Linter.RuleEntry< + [ + Partial<{ + allowConstructorFlags: string[]; + }>, + ] + >; + + /** + * Rule to disallow irregular whitespace. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.9.0 + * @see https://eslint.org/docs/rules/no-irregular-whitespace + */ + "no-irregular-whitespace": Linter.RuleEntry< + [ + Partial<{ + /** + * @default true + */ + skipStrings: boolean; + /** + * @default false + */ + skipComments: boolean; + /** + * @default false + */ + skipRegExps: boolean; + /** + * @default false + */ + skipTemplates: boolean; + }>, + ] + >; + + /** + * Rule to disallow characters which are made with multiple code points in character class syntax. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 5.3.0 + * @see https://eslint.org/docs/rules/no-misleading-character-class + */ + "no-misleading-character-class": Linter.RuleEntry<[]>; + + /** + * Rule to disallow calling global object properties as functions. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-obj-calls + */ + "no-obj-calls": Linter.RuleEntry<[]>; + + /** + * Rule to disallow use of `Object.prototypes` builtins directly. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 2.11.0 + * @see https://eslint.org/docs/rules/no-prototype-builtins + */ + "no-prototype-builtins": Linter.RuleEntry<[]>; + + /** + * Rule to disallow multiple spaces in regular expressions. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.4.0 + * @see https://eslint.org/docs/rules/no-regex-spaces + */ + "no-regex-spaces": Linter.RuleEntry<[]>; + + /** + * Rule to disallow sparse arrays. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.4.0 + * @see https://eslint.org/docs/rules/no-sparse-arrays + */ + "no-sparse-arrays": Linter.RuleEntry<[]>; + + /** + * Rule to disallow template literal placeholder syntax in regular strings. + * + * @since 3.3.0 + * @see https://eslint.org/docs/rules/no-template-curly-in-string + */ + "no-template-curly-in-string": Linter.RuleEntry<[]>; + + /** + * Rule to disallow confusing multiline expressions. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.24.0 + * @see https://eslint.org/docs/rules/no-unexpected-multiline + */ + "no-unexpected-multiline": Linter.RuleEntry<[]>; + + /** + * Rule to disallow unreachable code after `return`, `throw`, `continue`, and `break` statements. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.6 + * @see https://eslint.org/docs/rules/no-unreachable + */ + "no-unreachable": Linter.RuleEntry<[]>; + + /** + * Rule to disallow control flow statements in `finally` blocks. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 2.9.0 + * @see https://eslint.org/docs/rules/no-unsafe-finally + */ + "no-unsafe-finally": Linter.RuleEntry<[]>; + + /** + * Rule to disallow negating the left operand of relational operators. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 3.3.0 + * @see https://eslint.org/docs/rules/no-unsafe-negation + */ + "no-unsafe-negation": Linter.RuleEntry<[]>; + + /** + * Rule to disallow assignments that can lead to race conditions due to usage of `await` or `yield`. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 5.3.0 + * @see https://eslint.org/docs/rules/require-atomic-updates + */ + "require-atomic-updates": Linter.RuleEntry<[]>; + + /** + * Rule to require calls to `isNaN()` when checking for `NaN`. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.6 + * @see https://eslint.org/docs/rules/use-isnan + */ + "use-isnan": Linter.RuleEntry<[]>; + + /** + * Rule to enforce comparing `typeof` expressions against valid strings. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.5.0 + * @see https://eslint.org/docs/rules/valid-typeof + */ + "valid-typeof": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + requireStringLiterals: boolean; + }>, + ] + >; +} diff --git a/node_modules/@types/eslint/rules/strict-mode.d.ts b/node_modules/@types/eslint/rules/strict-mode.d.ts new file mode 100644 index 00000000..d63929b1 --- /dev/null +++ b/node_modules/@types/eslint/rules/strict-mode.d.ts @@ -0,0 +1,11 @@ +import { Linter } from "../index"; + +export interface StrictMode extends Linter.RulesRecord { + /** + * Rule to require or disallow strict mode directives. + * + * @since 0.1.0 + * @see https://eslint.org/docs/rules/strict + */ + strict: Linter.RuleEntry<["safe" | "global" | "function" | "never"]>; +} diff --git a/node_modules/@types/eslint/rules/stylistic-issues.d.ts b/node_modules/@types/eslint/rules/stylistic-issues.d.ts new file mode 100644 index 00000000..ec2f2028 --- /dev/null +++ b/node_modules/@types/eslint/rules/stylistic-issues.d.ts @@ -0,0 +1,1905 @@ +import { Linter } from "../index"; + +export interface StylisticIssues extends Linter.RulesRecord { + /** + * Rule to enforce linebreaks after opening and before closing array brackets. + * + * @since 4.0.0-alpha.1 + * @see https://eslint.org/docs/rules/array-bracket-newline + */ + "array-bracket-newline": Linter.RuleEntry< + [ + | "always" + | "never" + | "consistent" + | Partial<{ + /** + * @default true + */ + multiline: boolean; + /** + * @default null + */ + minItems: number | null; + }>, + ] + >; + + /** + * Rule to enforce consistent spacing inside array brackets. + * + * @since 0.24.0 + * @see https://eslint.org/docs/rules/array-bracket-spacing + */ + "array-bracket-spacing": + | Linter.RuleEntry< + [ + "never", + Partial<{ + /** + * @default false + */ + singleValue: boolean; + /** + * @default false + */ + objectsInArrays: boolean; + /** + * @default false + */ + arraysInArrays: boolean; + }>, + ] + > + | Linter.RuleEntry< + [ + "always", + Partial<{ + /** + * @default true + */ + singleValue: boolean; + /** + * @default true + */ + objectsInArrays: boolean; + /** + * @default true + */ + arraysInArrays: boolean; + }>, + ] + >; + + /** + * Rule to enforce line breaks after each array element. + * + * @since 4.0.0-rc.0 + * @see https://eslint.org/docs/rules/array-element-newline + */ + "array-element-newline": Linter.RuleEntry< + [ + | "always" + | "never" + | "consistent" + | Partial<{ + /** + * @default true + */ + multiline: boolean; + /** + * @default null + */ + minItems: number | null; + }>, + ] + >; + + /** + * Rule to disallow or enforce spaces inside of blocks after opening block and before closing block. + * + * @since 1.2.0 + * @see https://eslint.org/docs/rules/block-spacing + */ + "block-spacing": Linter.RuleEntry<["always" | "never"]>; + + /** + * Rule to enforce consistent brace style for blocks. + * + * @since 0.0.7 + * @see https://eslint.org/docs/rules/brace-style + */ + "brace-style": Linter.RuleEntry< + [ + "1tbs" | "stroustrup" | "allman", + Partial<{ + /** + * @default false + */ + allowSingleLine: boolean; + }>, + ] + >; + + /** + * Rule to enforce camelcase naming convention. + * + * @since 0.0.2 + * @see https://eslint.org/docs/rules/camelcase + */ + camelcase: Linter.RuleEntry< + [ + Partial<{ + /** + * @default 'always' + */ + properties: "always" | "never"; + /** + * @default false + */ + ignoreDestructuring: boolean; + /** + * @remarks + * Also accept for regular expression patterns + */ + allow: string[]; + }>, + ] + >; + + /** + * Rule to enforce or disallow capitalization of the first letter of a comment. + * + * @since 3.11.0 + * @see https://eslint.org/docs/rules/capitalized-comments + */ + "capitalized-comments": Linter.RuleEntry< + [ + "always" | "never", + Partial<{ + ignorePattern: string; + /** + * @default false + */ + ignoreInlineComments: boolean; + /** + * @default false + */ + ignoreConsecutiveComments: boolean; + }>, + ] + >; + + /** + * Rule to require or disallow trailing commas. + * + * @since 0.16.0 + * @see https://eslint.org/docs/rules/comma-dangle + */ + "comma-dangle": Linter.RuleEntry< + [ + | "never" + | "always" + | "always-multiline" + | "only-multiline" + | Partial<{ + /** + * @default 'never' + */ + arrays: "never" | "always" | "always-multiline" | "only-multiline"; + /** + * @default 'never' + */ + objects: "never" | "always" | "always-multiline" | "only-multiline"; + /** + * @default 'never' + */ + imports: "never" | "always" | "always-multiline" | "only-multiline"; + /** + * @default 'never' + */ + exports: "never" | "always" | "always-multiline" | "only-multiline"; + /** + * @default 'never' + */ + functions: "never" | "always" | "always-multiline" | "only-multiline"; + }>, + ] + >; + + /** + * Rule to enforce consistent spacing before and after commas. + * + * @since 0.9.0 + * @see https://eslint.org/docs/rules/comma-spacing + */ + "comma-spacing": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + before: boolean; + /** + * @default true + */ + after: boolean; + }>, + ] + >; + + /** + * Rule to enforce consistent comma style. + * + * @since 0.9.0 + * @see https://eslint.org/docs/rules/comma-style + */ + "comma-style": Linter.RuleEntry< + [ + "last" | "first", + Partial<{ + exceptions: Record; + }>, + ] + >; + + /** + * Rule to enforce consistent spacing inside computed property brackets. + * + * @since 0.23.0 + * @see https://eslint.org/docs/rules/computed-property-spacing + */ + "computed-property-spacing": Linter.RuleEntry<["never" | "always"]>; + + /** + * Rule to enforce consistent naming when capturing the current execution context. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/consistent-this + */ + "consistent-this": Linter.RuleEntry<[...string[]]>; + + /** + * Rule to require or disallow newline at the end of files. + * + * @since 0.7.1 + * @see https://eslint.org/docs/rules/eol-last + */ + "eol-last": Linter.RuleEntry< + [ + "always" | "never", // | 'unix' | 'windows' + ] + >; + + /** + * Rule to require or disallow spacing between function identifiers and their invocations. + * + * @since 3.3.0 + * @see https://eslint.org/docs/rules/func-call-spacing + */ + "func-call-spacing": Linter.RuleEntry<["never" | "always"]>; + + /** + * Rule to require function names to match the name of the variable or property to which they are assigned. + * + * @since 3.8.0 + * @see https://eslint.org/docs/rules/func-name-matching + */ + "func-name-matching": + | Linter.RuleEntry< + [ + "always" | "never", + Partial<{ + /** + * @default false + */ + considerPropertyDescriptor: boolean; + /** + * @default false + */ + includeCommonJSModuleExports: boolean; + }>, + ] + > + | Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + considerPropertyDescriptor: boolean; + /** + * @default false + */ + includeCommonJSModuleExports: boolean; + }>, + ] + >; + + /** + * Rule to require or disallow named `function` expressions. + * + * @since 0.4.0 + * @see https://eslint.org/docs/rules/func-names + */ + "func-names": Linter.RuleEntry< + [ + "always" | "as-needed" | "never", + Partial<{ + generators: "always" | "as-needed" | "never"; + }>, + ] + >; + + /** + * Rule to enforce the consistent use of either `function` declarations or expressions. + * + * @since 0.2.0 + * @see https://eslint.org/docs/rules/func-style + */ + "func-style": Linter.RuleEntry< + [ + "expression" | "declaration", + Partial<{ + /** + * @default false + */ + allowArrowFunctions: boolean; + }>, + ] + >; + + /** + * Rule to enforce consistent line breaks inside function parentheses. + * + * @since 4.6.0 + * @see https://eslint.org/docs/rules/function-paren-newline + */ + "function-paren-newline": Linter.RuleEntry< + [ + | "always" + | "never" + | "multiline" + | "multiline-arguments" + | "consistent" + | Partial<{ + minItems: number; + }>, + ] + >; + + /** + * Rule to disallow specified identifiers. + * + * @since 2.0.0-beta.2 + * @see https://eslint.org/docs/rules/id-blacklist + */ + "id-blacklist": Linter.RuleEntry<[...string[]]>; + + /** + * Rule to enforce minimum and maximum identifier lengths. + * + * @since 1.0.0 + * @see https://eslint.org/docs/rules/id-length + */ + "id-length": Linter.RuleEntry< + [ + Partial<{ + /** + * @default 2 + */ + min: number; + /** + * @default Infinity + */ + max: number; + /** + * @default 'always' + */ + properties: "always" | "never"; + exceptions: string[]; + }>, + ] + >; + + /** + * Rule to require identifiers to match a specified regular expression. + * + * @since 1.0.0 + * @see https://eslint.org/docs/rules/id-match + */ + "id-match": Linter.RuleEntry< + [ + string, + Partial<{ + /** + * @default false + */ + properties: boolean; + /** + * @default false + */ + onlyDeclarations: boolean; + /** + * @default false + */ + ignoreDestructuring: boolean; + }>, + ] + >; + + /** + * Rule to enforce the location of arrow function bodies. + * + * @since 4.12.0 + * @see https://eslint.org/docs/rules/implicit-arrow-linebreak + */ + "implicit-arrow-linebreak": Linter.RuleEntry<["beside" | "below"]>; + + /** + * Rule to enforce consistent indentation. + * + * @since 0.14.0 + * @see https://eslint.org/docs/rules/indent + */ + indent: Linter.RuleEntry< + [ + number | "tab", + Partial<{ + /** + * @default 0 + */ + SwitchCase: number; + /** + * @default 1 + */ + VariableDeclarator: + | Partial<{ + /** + * @default 1 + */ + var: number | "first"; + /** + * @default 1 + */ + let: number | "first"; + /** + * @default 1 + */ + const: number | "first"; + }> + | number + | "first"; + /** + * @default 1 + */ + outerIIFEBody: number; + /** + * @default 1 + */ + MemberExpression: number | "off"; + /** + * @default { parameters: 1, body: 1 } + */ + FunctionDeclaration: Partial<{ + /** + * @default 1 + */ + parameters: number | "first" | "off"; + /** + * @default 1 + */ + body: number; + }>; + /** + * @default { parameters: 1, body: 1 } + */ + FunctionExpression: Partial<{ + /** + * @default 1 + */ + parameters: number | "first" | "off"; + /** + * @default 1 + */ + body: number; + }>; + /** + * @default { arguments: 1 } + */ + CallExpression: Partial<{ + /** + * @default 1 + */ + arguments: number | "first" | "off"; + }>; + /** + * @default 1 + */ + ArrayExpression: number | "first" | "off"; + /** + * @default 1 + */ + ObjectExpression: number | "first" | "off"; + /** + * @default 1 + */ + ImportDeclaration: number | "first" | "off"; + /** + * @default false + */ + flatTernaryExpressions: boolean; + ignoredNodes: string[]; + /** + * @default false + */ + ignoreComments: boolean; + }>, + ] + >; + + /** + * Rule to enforce the consistent use of either double or single quotes in JSX attributes. + * + * @since 1.4.0 + * @see https://eslint.org/docs/rules/jsx-quotes + */ + "jsx-quotes": Linter.RuleEntry<["prefer-double" | "prefer-single"]>; + + /** + * Rule to enforce consistent spacing between keys and values in object literal properties. + * + * @since 0.9.0 + * @see https://eslint.org/docs/rules/key-spacing + */ + "key-spacing": Linter.RuleEntry< + [ + | Partial< + | { + /** + * @default false + */ + beforeColon: boolean; + /** + * @default true + */ + afterColon: boolean; + /** + * @default 'strict' + */ + mode: "strict" | "minimum"; + align: + | Partial<{ + /** + * @default false + */ + beforeColon: boolean; + /** + * @default true + */ + afterColon: boolean; + /** + * @default 'colon' + */ + on: "value" | "colon"; + /** + * @default 'strict' + */ + mode: "strict" | "minimum"; + }> + | "value" + | "colon"; + } + | { + singleLine?: + | Partial<{ + /** + * @default false + */ + beforeColon: boolean; + /** + * @default true + */ + afterColon: boolean; + /** + * @default 'strict' + */ + mode: "strict" | "minimum"; + }> + | undefined; + multiLine?: + | Partial<{ + /** + * @default false + */ + beforeColon: boolean; + /** + * @default true + */ + afterColon: boolean; + /** + * @default 'strict' + */ + mode: "strict" | "minimum"; + align: + | Partial<{ + /** + * @default false + */ + beforeColon: boolean; + /** + * @default true + */ + afterColon: boolean; + /** + * @default 'colon' + */ + on: "value" | "colon"; + /** + * @default 'strict' + */ + mode: "strict" | "minimum"; + }> + | "value" + | "colon"; + }> + | undefined; + } + > + | { + align: Partial<{ + /** + * @default false + */ + beforeColon: boolean; + /** + * @default true + */ + afterColon: boolean; + /** + * @default 'colon' + */ + on: "value" | "colon"; + /** + * @default 'strict' + */ + mode: "strict" | "minimum"; + }>; + singleLine?: + | Partial<{ + /** + * @default false + */ + beforeColon: boolean; + /** + * @default true + */ + afterColon: boolean; + /** + * @default 'strict' + */ + mode: "strict" | "minimum"; + }> + | undefined; + multiLine?: + | Partial<{ + /** + * @default false + */ + beforeColon: boolean; + /** + * @default true + */ + afterColon: boolean; + /** + * @default 'strict' + */ + mode: "strict" | "minimum"; + }> + | undefined; + }, + ] + >; + + /** + * Rule to enforce consistent spacing before and after keywords. + * + * @since 2.0.0-beta.1 + * @see https://eslint.org/docs/rules/keyword-spacing + */ + "keyword-spacing": Linter.RuleEntry< + [ + Partial<{ + /** + * @default true + */ + before: boolean; + /** + * @default true + */ + after: boolean; + overrides: Record< + string, + Partial<{ + before: boolean; + after: boolean; + }> + >; + }>, + ] + >; + + /** + * Rule to enforce position of line comments. + * + * @since 3.5.0 + * @see https://eslint.org/docs/rules/line-comment-position + */ + "line-comment-position": Linter.RuleEntry< + [ + Partial<{ + /** + * @default 'above' + */ + position: "above" | "beside"; + ignorePattern: string; + /** + * @default true + */ + applyDefaultIgnorePatterns: boolean; + }>, + ] + >; + + /** + * Rule to enforce consistent linebreak style. + * + * @since 0.21.0 + * @see https://eslint.org/docs/rules/linebreak-style + */ + "linebreak-style": Linter.RuleEntry<["unix" | "windows"]>; + + /** + * Rule to require empty lines around comments. + * + * @since 0.22.0 + * @see https://eslint.org/docs/rules/lines-around-comment + */ + "lines-around-comment": Linter.RuleEntry< + [ + Partial<{ + /** + * @default true + */ + beforeBlockComment: boolean; + /** + * @default false + */ + afterBlockComment: boolean; + /** + * @default false + */ + beforeLineComment: boolean; + /** + * @default false + */ + afterLineComment: boolean; + /** + * @default false + */ + allowBlockStart: boolean; + /** + * @default false + */ + allowBlockEnd: boolean; + /** + * @default false + */ + allowObjectStart: boolean; + /** + * @default false + */ + allowObjectEnd: boolean; + /** + * @default false + */ + allowArrayStart: boolean; + /** + * @default false + */ + allowArrayEnd: boolean; + /** + * @default false + */ + allowClassStart: boolean; + /** + * @default false + */ + allowClassEnd: boolean; + ignorePattern: string; + /** + * @default true + */ + applyDefaultIgnorePatterns: boolean; + }>, + ] + >; + + /** + * Rule to require or disallow an empty line between class members. + * + * @since 4.9.0 + * @see https://eslint.org/docs/rules/lines-between-class-members + */ + "lines-between-class-members": Linter.RuleEntry< + [ + "always" | "never", + Partial<{ + /** + * @default false + */ + exceptAfterSingleLine: boolean; + }>, + ] + >; + + /** + * Rule to enforce a maximum depth that blocks can be nested. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/max-depth + */ + "max-depth": Linter.RuleEntry< + [ + Partial<{ + /** + * @default 4 + */ + max: number; + }>, + ] + >; + + /** + * Rule to enforce a maximum line length. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/max-len + */ + "max-len": Linter.RuleEntry< + [ + Partial<{ + /** + * @default 80 + */ + code: number; + /** + * @default 4 + */ + tabWidth: number; + comments: number; + ignorePattern: string; + /** + * @default false + */ + ignoreComments: boolean; + /** + * @default false + */ + ignoreTrailingComments: boolean; + /** + * @default false + */ + ignoreUrls: boolean; + /** + * @default false + */ + ignoreStrings: boolean; + /** + * @default false + */ + ignoreTemplateLiterals: boolean; + /** + * @default false + */ + ignoreRegExpLiterals: boolean; + }>, + ] + >; + + /** + * Rule to enforce a maximum number of lines per file. + * + * @since 2.12.0 + * @see https://eslint.org/docs/rules/max-lines + */ + "max-lines": Linter.RuleEntry< + [ + | Partial<{ + /** + * @default 300 + */ + max: number; + /** + * @default false + */ + skipBlankLines: boolean; + /** + * @default false + */ + skipComments: boolean; + }> + | number, + ] + >; + + /** + * Rule to enforce a maximum number of line of code in a function. + * + * @since 5.0.0 + * @see https://eslint.org/docs/rules/max-lines-per-function + */ + "max-lines-per-function": Linter.RuleEntry< + [ + Partial<{ + /** + * @default 50 + */ + max: number; + /** + * @default false + */ + skipBlankLines: boolean; + /** + * @default false + */ + skipComments: boolean; + /** + * @default false + */ + IIFEs: boolean; + }>, + ] + >; + + /** + * Rule to enforce a maximum depth that callbacks can be nested. + * + * @since 0.2.0 + * @see https://eslint.org/docs/rules/max-nested-callbacks + */ + "max-nested-callbacks": Linter.RuleEntry< + [ + | Partial<{ + /** + * @default 10 + */ + max: number; + }> + | number, + ] + >; + + /** + * Rule to enforce a maximum number of parameters in function definitions. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/max-params + */ + "max-params": Linter.RuleEntry< + [ + | Partial<{ + /** + * @default 3 + */ + max: number; + }> + | number, + ] + >; + + /** + * Rule to enforce a maximum number of statements allowed in function blocks. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/max-statements + */ + "max-statements": Linter.RuleEntry< + [ + | Partial<{ + /** + * @default 10 + */ + max: number; + /** + * @default false + */ + ignoreTopLevelFunctions: boolean; + }> + | number, + ] + >; + + /** + * Rule to enforce a maximum number of statements allowed per line. + * + * @since 2.5.0 + * @see https://eslint.org/docs/rules/max-statements-per-line + */ + "max-statements-per-line": Linter.RuleEntry< + [ + | Partial<{ + /** + * @default 1 + */ + max: number; + }> + | number, + ] + >; + + /** + * Rule to enforce a particular style for multiline comments. + * + * @since 4.10.0 + * @see https://eslint.org/docs/rules/multiline-comment-style + */ + "multiline-comment-style": Linter.RuleEntry<["starred-block" | "bare-block" | "separate-lines"]>; + + /** + * Rule to enforce newlines between operands of ternary expressions. + * + * @since 3.1.0 + * @see https://eslint.org/docs/rules/multiline-ternary + */ + "multiline-ternary": Linter.RuleEntry<["always" | "always-multiline" | "never"]>; + + /** + * Rule to require constructor names to begin with a capital letter. + * + * @since 0.0.3-0 + * @see https://eslint.org/docs/rules/new-cap + */ + "new-cap": Linter.RuleEntry< + [ + Partial<{ + /** + * @default true + */ + newIsCap: boolean; + /** + * @default true + */ + capIsNew: boolean; + newIsCapExceptions: string[]; + newIsCapExceptionPattern: string; + capIsNewExceptions: string[]; + capIsNewExceptionPattern: string; + /** + * @default true + */ + properties: boolean; + }>, + ] + >; + + /** + * Rule to enforce or disallow parentheses when invoking a constructor with no arguments. + * + * @since 0.0.6 + * @see https://eslint.org/docs/rules/new-parens + */ + "new-parens": Linter.RuleEntry<["always" | "never"]>; + + /** + * Rule to require a newline after each call in a method chain. + * + * @since 2.0.0-rc.0 + * @see https://eslint.org/docs/rules/newline-per-chained-call + */ + "newline-per-chained-call": Linter.RuleEntry< + [ + { + /** + * @default 2 + */ + ignoreChainWithDepth: number; + }, + ] + >; + + /** + * Rule to disallow `Array` constructors. + * + * @since 0.4.0 + * @see https://eslint.org/docs/rules/no-array-constructor + */ + "no-array-constructor": Linter.RuleEntry<[]>; + + /** + * Rule to disallow bitwise operators. + * + * @since 0.0.2 + * @see https://eslint.org/docs/rules/no-bitwise + */ + "no-bitwise": Linter.RuleEntry< + [ + Partial<{ + allow: string[]; + /** + * @default false + */ + int32Hint: boolean; + }>, + ] + >; + + /** + * Rule to disallow `continue` statements. + * + * @since 0.19.0 + * @see https://eslint.org/docs/rules/no-continue + */ + "no-continue": Linter.RuleEntry<[]>; + + /** + * Rule to disallow inline comments after code. + * + * @since 0.10.0 + * @see https://eslint.org/docs/rules/no-inline-comments + */ + "no-inline-comments": Linter.RuleEntry<[]>; + + /** + * Rule to disallow `if` statements as the only statement in `else` blocks. + * + * @since 0.6.0 + * @see https://eslint.org/docs/rules/no-lonely-if + */ + "no-lonely-if": Linter.RuleEntry<[]>; + + /** + * Rule to disallow mixed binary operators. + * + * @since 2.12.0 + * @see https://eslint.org/docs/rules/no-mixed-operators + */ + "no-mixed-operators": Linter.RuleEntry< + [ + Partial<{ + /** + * @default + * [ + * ["+", "-", "*", "/", "%", "**"], + * ["&", "|", "^", "~", "<<", ">>", ">>>"], + * ["==", "!=", "===", "!==", ">", ">=", "<", "<="], + * ["&&", "||"], + * ["in", "instanceof"] + * ] + */ + groups: string[][]; + /** + * @default true + */ + allowSamePrecedence: boolean; + }>, + ] + >; + + /** + * Rule to disallow mixed spaces and tabs for indentation. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.7.1 + * @see https://eslint.org/docs/rules/no-mixed-spaces-and-tabs + */ + "no-mixed-spaces-and-tabs": Linter.RuleEntry<["smart-tabs"]>; + + /** + * Rule to disallow use of chained assignment expressions. + * + * @since 3.14.0 + * @see https://eslint.org/docs/rules/no-multi-assign + */ + "no-multi-assign": Linter.RuleEntry<[]>; + + /** + * Rule to disallow multiple empty lines. + * + * @since 0.9.0 + * @see https://eslint.org/docs/rules/no-multiple-empty-lines + */ + "no-multiple-empty-lines": Linter.RuleEntry< + [ + | Partial<{ + /** + * @default 2 + */ + max: number; + maxEOF: number; + maxBOF: number; + }> + | number, + ] + >; + + /** + * Rule to disallow negated conditions. + * + * @since 1.6.0 + * @see https://eslint.org/docs/rules/no-negated-condition + */ + "no-negated-condition": Linter.RuleEntry<[]>; + + /** + * Rule to disallow nested ternary expressions. + * + * @since 0.2.0 + * @see https://eslint.org/docs/rules/no-nested-ternary + */ + "no-nested-ternary": Linter.RuleEntry<[]>; + + /** + * Rule to disallow `Object` constructors. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-new-object + */ + "no-new-object": Linter.RuleEntry<[]>; + + /** + * Rule to disallow the unary operators `++` and `--`. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-plusplus + */ + "no-plusplus": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + allowForLoopAfterthoughts: boolean; + }>, + ] + >; + + /** + * Rule to disallow specified syntax. + * + * @since 1.4.0 + * @see https://eslint.org/docs/rules/no-restricted-syntax + */ + "no-restricted-syntax": Linter.RuleEntry< + [ + ...Array< + | string + | { + selector: string; + message?: string | undefined; + } + >, + ] + >; + + /** + * Rule to disallow all tabs. + * + * @since 3.2.0 + * @see https://eslint.org/docs/rules/no-tabs + */ + "no-tabs": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + allowIndentationTabs: boolean; + }>, + ] + >; + + /** + * Rule to disallow ternary operators. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-ternary + */ + "no-ternary": Linter.RuleEntry<[]>; + + /** + * Rule to disallow trailing whitespace at the end of lines. + * + * @since 0.7.1 + * @see https://eslint.org/docs/rules/no-trailing-spaces + */ + "no-trailing-spaces": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + skipBlankLines: boolean; + /** + * @default false + */ + ignoreComments: boolean; + }>, + ] + >; + + /** + * Rule to disallow dangling underscores in identifiers. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-underscore-dangle + */ + "no-underscore-dangle": Linter.RuleEntry< + [ + Partial<{ + allow: string[]; + /** + * @default false + */ + allowAfterThis: boolean; + /** + * @default false + */ + allowAfterSuper: boolean; + /** + * @default false + */ + enforceInMethodNames: boolean; + }>, + ] + >; + + /** + * Rule to disallow ternary operators when simpler alternatives exist. + * + * @since 0.21.0 + * @see https://eslint.org/docs/rules/no-unneeded-ternary + */ + "no-unneeded-ternary": Linter.RuleEntry< + [ + Partial<{ + /** + * @default true + */ + defaultAssignment: boolean; + }>, + ] + >; + + /** + * Rule to disallow whitespace before properties. + * + * @since 2.0.0-beta.1 + * @see https://eslint.org/docs/rules/no-whitespace-before-property + */ + "no-whitespace-before-property": Linter.RuleEntry<[]>; + + /** + * Rule to enforce the location of single-line statements. + * + * @since 3.17.0 + * @see https://eslint.org/docs/rules/nonblock-statement-body-position + */ + "nonblock-statement-body-position": Linter.RuleEntry< + [ + "beside" | "below" | "any", + Partial<{ + overrides: Record; + }>, + ] + >; + + /** + * Rule to enforce consistent line breaks inside braces. + * + * @since 2.12.0 + * @see https://eslint.org/docs/rules/object-curly-newline + */ + "object-curly-newline": Linter.RuleEntry< + [ + | "always" + | "never" + | Partial<{ + /** + * @default false + */ + multiline: boolean; + minProperties: number; + /** + * @default true + */ + consistent: boolean; + }> + | Partial< + Record< + "ObjectExpression" | "ObjectPattern" | "ImportDeclaration" | "ExportDeclaration", + | "always" + | "never" + | Partial<{ + /** + * @default false + */ + multiline: boolean; + minProperties: number; + /** + * @default true + */ + consistent: boolean; + }> + > + >, + ] + >; + + /** + * Rule to enforce consistent spacing inside braces. + * + * @since 0.22.0 + * @see https://eslint.org/docs/rules/object-curly-spacing + */ + "object-curly-spacing": + | Linter.RuleEntry< + [ + "never", + { + /** + * @default false + */ + arraysInObjects: boolean; + /** + * @default false + */ + objectsInObjects: boolean; + }, + ] + > + | Linter.RuleEntry< + [ + "always", + { + /** + * @default true + */ + arraysInObjects: boolean; + /** + * @default true + */ + objectsInObjects: boolean; + }, + ] + >; + + /** + * Rule to enforce placing object properties on separate lines. + * + * @since 2.10.0 + * @see https://eslint.org/docs/rules/object-property-newline + */ + "object-property-newline": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + allowAllPropertiesOnSameLine: boolean; + }>, + ] + >; + + /** + * Rule to enforce variables to be declared either together or separately in functions. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/one-var + */ + "one-var": Linter.RuleEntry< + [ + | "always" + | "never" + | "consecutive" + | Partial< + { + /** + * @default false + */ + separateRequires: boolean; + } & Record<"var" | "let" | "const", "always" | "never" | "consecutive"> + > + | Partial>, + ] + >; + + /** + * Rule to require or disallow newlines around variable declarations. + * + * @since 2.0.0-beta.3 + * @see https://eslint.org/docs/rules/one-var-declaration-per-line + */ + "one-var-declaration-per-line": Linter.RuleEntry<["initializations" | "always"]>; + + /** + * Rule to require or disallow assignment operator shorthand where possible. + * + * @since 0.10.0 + * @see https://eslint.org/docs/rules/operator-assignment + */ + "operator-assignment": Linter.RuleEntry<["always" | "never"]>; + + /** + * Rule to enforce consistent linebreak style for operators. + * + * @since 0.19.0 + * @see https://eslint.org/docs/rules/operator-linebreak + */ + "operator-linebreak": Linter.RuleEntry< + [ + "after" | "before" | "none", + Partial<{ + overrides: Record; + }>, + ] + >; + + /** + * Rule to require or disallow padding within blocks. + * + * @since 0.9.0 + * @see https://eslint.org/docs/rules/padded-blocks + */ + "padded-blocks": Linter.RuleEntry< + [ + "always" | "never" | Partial>, + { + /** + * @default false + */ + allowSingleLineBlocks: boolean; + }, + ] + >; + + /** + * Rule to require or disallow padding lines between statements. + * + * @since 4.0.0-beta.0 + * @see https://eslint.org/docs/rules/padding-line-between-statements + */ + "padding-line-between-statements": Linter.RuleEntry< + [ + ...Array< + { + blankLine: "any" | "never" | "always"; + } & Record<"prev" | "next", string | string[]> + >, + ] + >; + + /** + * Rule to disallow using Object.assign with an object literal as the first argument and prefer the use of object spread instead. + * + * @since 5.0.0-alpha.3 + * @see https://eslint.org/docs/rules/prefer-object-spread + */ + "prefer-object-spread": Linter.RuleEntry<[]>; + + /** + * Rule to require quotes around object literal property names. + * + * @since 0.0.6 + * @see https://eslint.org/docs/rules/quote-props + */ + "quote-props": + | Linter.RuleEntry<["always" | "consistent"]> + | Linter.RuleEntry< + [ + "as-needed", + Partial<{ + /** + * @default false + */ + keywords: boolean; + /** + * @default true + */ + unnecessary: boolean; + /** + * @default false + */ + numbers: boolean; + }>, + ] + > + | Linter.RuleEntry< + [ + "consistent-as-needed", + Partial<{ + /** + * @default false + */ + keywords: boolean; + }>, + ] + >; + + /** + * Rule to enforce the consistent use of either backticks, double, or single quotes. + * + * @since 0.0.7 + * @see https://eslint.org/docs/rules/quotes + */ + quotes: Linter.RuleEntry< + [ + "double" | "single" | "backtick", + Partial<{ + /** + * @default false + */ + avoidEscape: boolean; + /** + * @default false + */ + allowTemplateLiterals: boolean; + }>, + ] + >; + + /** + * Rule to require or disallow semicolons instead of ASI. + * + * @since 0.0.6 + * @see https://eslint.org/docs/rules/semi + */ + semi: + | Linter.RuleEntry< + [ + "always", + Partial<{ + /** + * @default false + */ + omitLastInOneLineBlock: boolean; + }>, + ] + > + | Linter.RuleEntry< + [ + "never", + Partial<{ + /** + * @default 'any' + */ + beforeStatementContinuationChars: "any" | "always" | "never"; + }>, + ] + >; + + /** + * Rule to enforce consistent spacing before and after semicolons. + * + * @since 0.16.0 + * @see https://eslint.org/docs/rules/semi-spacing + */ + "semi-spacing": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + before: boolean; + /** + * @default true + */ + after: boolean; + }>, + ] + >; + + /** + * Rule to enforce location of semicolons. + * + * @since 4.0.0-beta.0 + * @see https://eslint.org/docs/rules/semi-style + */ + "semi-style": Linter.RuleEntry<["last" | "first"]>; + + /** + * Rule to require object keys to be sorted. + * + * @since 3.3.0 + * @see https://eslint.org/docs/rules/sort-keys + */ + "sort-keys": Linter.RuleEntry< + [ + "asc" | "desc", + Partial<{ + /** + * @default true + */ + caseSensitive: boolean; + /** + * @default 2 + */ + minKeys: number; + /** + * @default false + */ + natural: boolean; + /** + * @default false + */ + allowLineSeparatedGroups: boolean; + }>, + ] + >; + + /** + * Rule to require variables within the same declaration block to be sorted. + * + * @since 0.2.0 + * @see https://eslint.org/docs/rules/sort-vars + */ + "sort-vars": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + ignoreCase: boolean; + }>, + ] + >; + + /** + * Rule to enforce consistent spacing before blocks. + * + * @since 0.9.0 + * @see https://eslint.org/docs/rules/space-before-blocks + */ + "space-before-blocks": Linter.RuleEntry< + ["always" | "never" | Partial>] + >; + + /** + * Rule to enforce consistent spacing before `function` definition opening parenthesis. + * + * @since 0.18.0 + * @see https://eslint.org/docs/rules/space-before-function-paren + */ + "space-before-function-paren": Linter.RuleEntry< + ["always" | "never" | Partial>] + >; + + /** + * Rule to enforce consistent spacing inside parentheses. + * + * @since 0.8.0 + * @see https://eslint.org/docs/rules/space-in-parens + */ + "space-in-parens": Linter.RuleEntry< + [ + "never" | "always", + Partial<{ + exceptions: string[]; + }>, + ] + >; + + /** + * Rule to require spacing around infix operators. + * + * @since 0.2.0 + * @see https://eslint.org/docs/rules/space-infix-ops + */ + "space-infix-ops": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + int32Hint: boolean; + }>, + ] + >; + + /** + * Rule to enforce consistent spacing before or after unary operators. + * + * @since 0.10.0 + * @see https://eslint.org/docs/rules/space-unary-ops + */ + "space-unary-ops": Linter.RuleEntry< + [ + Partial<{ + /** + * @default true + */ + words: boolean; + /** + * @default false + */ + nonwords: boolean; + overrides: Record; + }>, + ] + >; + + /** + * Rule to enforce consistent spacing after the `//` or `/*` in a comment. + * + * @since 0.23.0 + * @see https://eslint.org/docs/rules/spaced-comment + */ + "spaced-comment": Linter.RuleEntry< + [ + "always" | "never", + { + exceptions: string[]; + markers: string[]; + line: { + exceptions: string[]; + markers: string[]; + }; + block: { + exceptions: string[]; + markers: string[]; + /** + * @default false + */ + balanced: boolean; + }; + }, + ] + >; + + /** + * Rule to enforce spacing around colons of switch statements. + * + * @since 4.0.0-beta.0 + * @see https://eslint.org/docs/rules/switch-colon-spacing + */ + "switch-colon-spacing": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + before: boolean; + /** + * @default true + */ + after: boolean; + }>, + ] + >; + + /** + * Rule to require or disallow spacing between template tags and their literals. + * + * @since 3.15.0 + * @see https://eslint.org/docs/rules/template-tag-spacing + */ + "template-tag-spacing": Linter.RuleEntry<["never" | "always"]>; + + /** + * Rule to require or disallow Unicode byte order mark (BOM). + * + * @since 2.11.0 + * @see https://eslint.org/docs/rules/unicode-bom + */ + "unicode-bom": Linter.RuleEntry<["never" | "always"]>; + + /** + * Rule to require parenthesis around regex literals. + * + * @since 0.1.0 + * @see https://eslint.org/docs/rules/wrap-regex + */ + "wrap-regex": Linter.RuleEntry<[]>; +} diff --git a/node_modules/@types/eslint/rules/variables.d.ts b/node_modules/@types/eslint/rules/variables.d.ts new file mode 100644 index 00000000..35729354 --- /dev/null +++ b/node_modules/@types/eslint/rules/variables.d.ts @@ -0,0 +1,187 @@ +import { Linter } from "../index"; + +export interface Variables extends Linter.RulesRecord { + /** + * Rule to require or disallow initialization in variable declarations. + * + * @since 1.0.0-rc-1 + * @see https://eslint.org/docs/rules/init-declarations + */ + "init-declarations": + | Linter.RuleEntry<["always"]> + | Linter.RuleEntry< + [ + "never", + Partial<{ + ignoreForLoopInit: boolean; + }>, + ] + >; + + /** + * Rule to disallow deleting variables. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-delete-var + */ + "no-delete-var": Linter.RuleEntry<[]>; + + /** + * Rule to disallow labels that share a name with a variable. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-label-var + */ + "no-label-var": Linter.RuleEntry<[]>; + + /** + * Rule to disallow specified global variables. + * + * @since 2.3.0 + * @see https://eslint.org/docs/rules/no-restricted-globals + */ + "no-restricted-globals": Linter.RuleEntry< + [ + ...Array< + | string + | { + name: string; + message?: string | undefined; + } + >, + ] + >; + + /** + * Rule to disallow variable declarations from shadowing variables declared in the outer scope. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-shadow + */ + "no-shadow": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + builtinGlobals: boolean; + /** + * @default 'functions' + */ + hoist: "functions" | "all" | "never"; + allow: string[]; + }>, + ] + >; + + /** + * Rule to disallow identifiers from shadowing restricted names. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.1.4 + * @see https://eslint.org/docs/rules/no-shadow-restricted-names + */ + "no-shadow-restricted-names": Linter.RuleEntry<[]>; + + /** + * Rule to disallow the use of undeclared variables unless mentioned in `global` comments. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-undef + */ + "no-undef": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + typeof: boolean; + }>, + ] + >; + + /** + * Rule to disallow initializing variables to `undefined`. + * + * @since 0.0.6 + * @see https://eslint.org/docs/rules/no-undef-init + */ + "no-undef-init": Linter.RuleEntry<[]>; + + /** + * Rule to disallow the use of `undefined` as an identifier. + * + * @since 0.7.1 + * @see https://eslint.org/docs/rules/no-undefined + */ + "no-undefined": Linter.RuleEntry<[]>; + + /** + * Rule to disallow unused variables. + * + * @remarks + * Recommended by ESLint, the rule was enabled in `eslint:recommended`. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-unused-vars + */ + "no-unused-vars": Linter.RuleEntry< + [ + Partial<{ + /** + * @default 'all' + */ + vars: "all" | "local"; + varsIgnorePattern: string; + /** + * @default 'after-used' + */ + args: "after-used" | "all" | "none"; + /** + * @default false + */ + ignoreRestSiblings: boolean; + argsIgnorePattern: string; + /** + * @default 'none' + */ + caughtErrors: "none" | "all"; + caughtErrorsIgnorePattern: string; + }>, + ] + >; + + /** + * Rule to disallow the use of variables before they are defined. + * + * @since 0.0.9 + * @see https://eslint.org/docs/rules/no-use-before-define + */ + "no-use-before-define": Linter.RuleEntry< + [ + | Partial<{ + /** + * @default true + */ + functions: boolean; + /** + * @default true + */ + classes: boolean; + /** + * @default true + */ + variables: boolean; + }> + | "nofunc", + ] + >; +} diff --git a/node_modules/@types/eslint/use-at-your-own-risk.d.ts b/node_modules/@types/eslint/use-at-your-own-risk.d.ts new file mode 100644 index 00000000..089a657b --- /dev/null +++ b/node_modules/@types/eslint/use-at-your-own-risk.d.ts @@ -0,0 +1,19 @@ +/** @deprecated */ +export const builtinRules: Map; +/** @deprecated */ +export class FileEnumerator { + constructor( + params?: { + cwd?: string; + configArrayFactory?: any; + extensions?: any; + globInputPaths?: boolean; + errorOnUnmatchedPattern?: boolean; + ignore?: boolean; + }, + ); + isTargetPath(filePath: string, providedConfig?: any): boolean; + iterateFiles( + patternOrPatterns: string | string[], + ): IterableIterator<{ config: any; filePath: string; ignored: boolean }>; +} diff --git a/node_modules/@types/estree-jsx/LICENSE b/node_modules/@types/estree-jsx/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/estree-jsx/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/estree-jsx/README.md b/node_modules/@types/estree-jsx/README.md new file mode 100644 index 00000000..4d0054b7 --- /dev/null +++ b/node_modules/@types/estree-jsx/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/estree-jsx` + +# Summary +This package contains type definitions for estree-jsx (https://github.com/facebook/jsx). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree-jsx. + +### Additional Details + * Last updated: Mon, 06 Nov 2023 22:41:05 GMT + * Dependencies: [@types/estree](https://npmjs.com/package/@types/estree) + +# Credits +These definitions were written by [Tony Ross](https://github.com/antross). diff --git a/node_modules/@types/estree-jsx/index.d.ts b/node_modules/@types/estree-jsx/index.d.ts new file mode 100644 index 00000000..73cb221d --- /dev/null +++ b/node_modules/@types/estree-jsx/index.d.ts @@ -0,0 +1,113 @@ +// Based on https://github.com/facebook/jsx/blob/master/AST.md. +// Extends existing types for ESTree AST from `@types/estree`. + +import { BaseExpression, BaseNode, Expression, Literal } from "estree"; + +export * from "estree"; + +declare module "estree" { + interface ExpressionMap { + JSXElement: JSXElement; + } + + interface NodeMap { + JSXIdentifier: JSXIdentifier; + JSXNamespacedName: JSXNamespacedName; + JSXMemberExpression: JSXMemberExpression; + JSXEmptyExpression: JSXEmptyExpression; + JSXExpressionContainer: JSXExpressionContainer; + JSXSpreadAttribute: JSXSpreadAttribute; + JSXAttribute: JSXAttribute; + JSXOpeningElement: JSXOpeningElement; + JSXOpeningFragment: JSXOpeningFragment; + JSXClosingElement: JSXClosingElement; + JSXClosingFragment: JSXClosingFragment; + JSXElement: JSXElement; + JSXFragment: JSXFragment; + JSXText: JSXText; + } +} + +export interface JSXIdentifier extends BaseNode { + type: "JSXIdentifier"; + name: string; +} + +export interface JSXMemberExpression extends BaseExpression { + type: "JSXMemberExpression"; + object: JSXMemberExpression | JSXIdentifier; + property: JSXIdentifier; +} + +export interface JSXNamespacedName extends BaseExpression { + type: "JSXNamespacedName"; + namespace: JSXIdentifier; + name: JSXIdentifier; +} + +export interface JSXEmptyExpression extends BaseNode { + type: "JSXEmptyExpression"; +} + +export interface JSXExpressionContainer extends BaseNode { + type: "JSXExpressionContainer"; + expression: Expression | JSXEmptyExpression; +} + +export interface JSXSpreadChild extends BaseNode { + type: "JSXSpreadChild"; + expression: Expression; +} + +interface JSXBoundaryElement extends BaseNode { + name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName; +} + +export interface JSXOpeningElement extends JSXBoundaryElement { + type: "JSXOpeningElement"; + attributes: Array; + selfClosing: boolean; +} + +export interface JSXClosingElement extends JSXBoundaryElement { + type: "JSXClosingElement"; +} + +export interface JSXAttribute extends BaseNode { + type: "JSXAttribute"; + name: JSXIdentifier | JSXNamespacedName; + value: Literal | JSXExpressionContainer | JSXElement | JSXFragment | null; +} + +export interface JSXSpreadAttribute extends BaseNode { + type: "JSXSpreadAttribute"; + argument: Expression; +} + +export interface JSXText extends BaseNode { + type: "JSXText"; + value: string; + raw: string; +} + +export interface JSXElement extends BaseExpression { + type: "JSXElement"; + openingElement: JSXOpeningElement; + children: Array; + closingElement: JSXClosingElement | null; +} + +export interface JSXFragment extends BaseExpression { + type: "JSXFragment"; + openingFragment: JSXOpeningFragment; + children: Array; + closingFragment: JSXClosingFragment; +} + +export interface JSXOpeningFragment extends BaseNode { + type: "JSXOpeningFragment"; +} + +export interface JSXClosingFragment extends BaseNode { + type: "JSXClosingFragment"; +} diff --git a/node_modules/@types/estree-jsx/package.json b/node_modules/@types/estree-jsx/package.json new file mode 100644 index 00000000..4f11f695 --- /dev/null +++ b/node_modules/@types/estree-jsx/package.json @@ -0,0 +1,28 @@ +{ + "name": "@types/estree-jsx", + "version": "1.0.3", + "description": "TypeScript definitions for estree-jsx", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree-jsx", + "license": "MIT", + "contributors": [ + { + "name": "Tony Ross", + "githubUsername": "antross", + "url": "https://github.com/antross" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/estree-jsx" + }, + "scripts": {}, + "dependencies": { + "@types/estree": "*" + }, + "typesPublisherContentHash": "584c591505440309e8e57e357b875e74ae4918dc4c6d7b4cbd3b80dacbe589cc", + "typeScriptVersion": "4.5", + "nonNpm": true +} \ No newline at end of file diff --git a/node_modules/@types/estree/LICENSE b/node_modules/@types/estree/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/estree/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/estree/README.md b/node_modules/@types/estree/README.md new file mode 100644 index 00000000..90732ebf --- /dev/null +++ b/node_modules/@types/estree/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/estree` + +# Summary +This package contains type definitions for estree (https://github.com/estree/estree). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree. + +### Additional Details + * Last updated: Mon, 06 Nov 2023 22:41:05 GMT + * Dependencies: none + +# Credits +These definitions were written by [RReverser](https://github.com/RReverser). diff --git a/node_modules/@types/estree/flow.d.ts b/node_modules/@types/estree/flow.d.ts new file mode 100644 index 00000000..9d001a92 --- /dev/null +++ b/node_modules/@types/estree/flow.d.ts @@ -0,0 +1,167 @@ +declare namespace ESTree { + interface FlowTypeAnnotation extends Node {} + + interface FlowBaseTypeAnnotation extends FlowTypeAnnotation {} + + interface FlowLiteralTypeAnnotation extends FlowTypeAnnotation, Literal {} + + interface FlowDeclaration extends Declaration {} + + interface AnyTypeAnnotation extends FlowBaseTypeAnnotation {} + + interface ArrayTypeAnnotation extends FlowTypeAnnotation { + elementType: FlowTypeAnnotation; + } + + interface BooleanLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {} + + interface BooleanTypeAnnotation extends FlowBaseTypeAnnotation {} + + interface ClassImplements extends Node { + id: Identifier; + typeParameters?: TypeParameterInstantiation | null; + } + + interface ClassProperty { + key: Expression; + value?: Expression | null; + typeAnnotation?: TypeAnnotation | null; + computed: boolean; + static: boolean; + } + + interface DeclareClass extends FlowDeclaration { + id: Identifier; + typeParameters?: TypeParameterDeclaration | null; + body: ObjectTypeAnnotation; + extends: InterfaceExtends[]; + } + + interface DeclareFunction extends FlowDeclaration { + id: Identifier; + } + + interface DeclareModule extends FlowDeclaration { + id: Literal | Identifier; + body: BlockStatement; + } + + interface DeclareVariable extends FlowDeclaration { + id: Identifier; + } + + interface FunctionTypeAnnotation extends FlowTypeAnnotation { + params: FunctionTypeParam[]; + returnType: FlowTypeAnnotation; + rest?: FunctionTypeParam | null; + typeParameters?: TypeParameterDeclaration | null; + } + + interface FunctionTypeParam { + name: Identifier; + typeAnnotation: FlowTypeAnnotation; + optional: boolean; + } + + interface GenericTypeAnnotation extends FlowTypeAnnotation { + id: Identifier | QualifiedTypeIdentifier; + typeParameters?: TypeParameterInstantiation | null; + } + + interface InterfaceExtends extends Node { + id: Identifier | QualifiedTypeIdentifier; + typeParameters?: TypeParameterInstantiation | null; + } + + interface InterfaceDeclaration extends FlowDeclaration { + id: Identifier; + typeParameters?: TypeParameterDeclaration | null; + extends: InterfaceExtends[]; + body: ObjectTypeAnnotation; + } + + interface IntersectionTypeAnnotation extends FlowTypeAnnotation { + types: FlowTypeAnnotation[]; + } + + interface MixedTypeAnnotation extends FlowBaseTypeAnnotation {} + + interface NullableTypeAnnotation extends FlowTypeAnnotation { + typeAnnotation: TypeAnnotation; + } + + interface NumberLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {} + + interface NumberTypeAnnotation extends FlowBaseTypeAnnotation {} + + interface StringLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {} + + interface StringTypeAnnotation extends FlowBaseTypeAnnotation {} + + interface TupleTypeAnnotation extends FlowTypeAnnotation { + types: FlowTypeAnnotation[]; + } + + interface TypeofTypeAnnotation extends FlowTypeAnnotation { + argument: FlowTypeAnnotation; + } + + interface TypeAlias extends FlowDeclaration { + id: Identifier; + typeParameters?: TypeParameterDeclaration | null; + right: FlowTypeAnnotation; + } + + interface TypeAnnotation extends Node { + typeAnnotation: FlowTypeAnnotation; + } + + interface TypeCastExpression extends Expression { + expression: Expression; + typeAnnotation: TypeAnnotation; + } + + interface TypeParameterDeclaration extends Node { + params: Identifier[]; + } + + interface TypeParameterInstantiation extends Node { + params: FlowTypeAnnotation[]; + } + + interface ObjectTypeAnnotation extends FlowTypeAnnotation { + properties: ObjectTypeProperty[]; + indexers: ObjectTypeIndexer[]; + callProperties: ObjectTypeCallProperty[]; + } + + interface ObjectTypeCallProperty extends Node { + value: FunctionTypeAnnotation; + static: boolean; + } + + interface ObjectTypeIndexer extends Node { + id: Identifier; + key: FlowTypeAnnotation; + value: FlowTypeAnnotation; + static: boolean; + } + + interface ObjectTypeProperty extends Node { + key: Expression; + value: FlowTypeAnnotation; + optional: boolean; + static: boolean; + } + + interface QualifiedTypeIdentifier extends Node { + qualification: Identifier | QualifiedTypeIdentifier; + id: Identifier; + } + + interface UnionTypeAnnotation extends FlowTypeAnnotation { + types: FlowTypeAnnotation[]; + } + + interface VoidTypeAnnotation extends FlowBaseTypeAnnotation {} +} diff --git a/node_modules/@types/estree/index.d.ts b/node_modules/@types/estree/index.d.ts new file mode 100644 index 00000000..e933e20e --- /dev/null +++ b/node_modules/@types/estree/index.d.ts @@ -0,0 +1,683 @@ +// This definition file follows a somewhat unusual format. ESTree allows +// runtime type checks based on the `type` parameter. In order to explain this +// to typescript we want to use discriminated union types: +// https://github.com/Microsoft/TypeScript/pull/9163 +// +// For ESTree this is a bit tricky because the high level interfaces like +// Node or Function are pulling double duty. We want to pass common fields down +// to the interfaces that extend them (like Identifier or +// ArrowFunctionExpression), but you can't extend a type union or enforce +// common fields on them. So we've split the high level interfaces into two +// types, a base type which passes down inherited fields, and a type union of +// all types which extend the base type. Only the type union is exported, and +// the union is how other types refer to the collection of inheriting types. +// +// This makes the definitions file here somewhat more difficult to maintain, +// but it has the notable advantage of making ESTree much easier to use as +// an end user. + +export interface BaseNodeWithoutComments { + // Every leaf interface that extends BaseNode must specify a type property. + // The type property should be a string literal. For example, Identifier + // has: `type: "Identifier"` + type: string; + loc?: SourceLocation | null | undefined; + range?: [number, number] | undefined; +} + +export interface BaseNode extends BaseNodeWithoutComments { + leadingComments?: Comment[] | undefined; + trailingComments?: Comment[] | undefined; +} + +export interface NodeMap { + AssignmentProperty: AssignmentProperty; + CatchClause: CatchClause; + Class: Class; + ClassBody: ClassBody; + Expression: Expression; + Function: Function; + Identifier: Identifier; + Literal: Literal; + MethodDefinition: MethodDefinition; + ModuleDeclaration: ModuleDeclaration; + ModuleSpecifier: ModuleSpecifier; + Pattern: Pattern; + PrivateIdentifier: PrivateIdentifier; + Program: Program; + Property: Property; + PropertyDefinition: PropertyDefinition; + SpreadElement: SpreadElement; + Statement: Statement; + Super: Super; + SwitchCase: SwitchCase; + TemplateElement: TemplateElement; + VariableDeclarator: VariableDeclarator; +} + +export type Node = NodeMap[keyof NodeMap]; + +export interface Comment extends BaseNodeWithoutComments { + type: "Line" | "Block"; + value: string; +} + +export interface SourceLocation { + source?: string | null | undefined; + start: Position; + end: Position; +} + +export interface Position { + /** >= 1 */ + line: number; + /** >= 0 */ + column: number; +} + +export interface Program extends BaseNode { + type: "Program"; + sourceType: "script" | "module"; + body: Array; + comments?: Comment[] | undefined; +} + +export interface Directive extends BaseNode { + type: "ExpressionStatement"; + expression: Literal; + directive: string; +} + +export interface BaseFunction extends BaseNode { + params: Pattern[]; + generator?: boolean | undefined; + async?: boolean | undefined; + // The body is either BlockStatement or Expression because arrow functions + // can have a body that's either. FunctionDeclarations and + // FunctionExpressions have only BlockStatement bodies. + body: BlockStatement | Expression; +} + +export type Function = FunctionDeclaration | FunctionExpression | ArrowFunctionExpression; + +export type Statement = + | ExpressionStatement + | BlockStatement + | StaticBlock + | EmptyStatement + | DebuggerStatement + | WithStatement + | ReturnStatement + | LabeledStatement + | BreakStatement + | ContinueStatement + | IfStatement + | SwitchStatement + | ThrowStatement + | TryStatement + | WhileStatement + | DoWhileStatement + | ForStatement + | ForInStatement + | ForOfStatement + | Declaration; + +export interface BaseStatement extends BaseNode {} + +export interface EmptyStatement extends BaseStatement { + type: "EmptyStatement"; +} + +export interface BlockStatement extends BaseStatement { + type: "BlockStatement"; + body: Statement[]; + innerComments?: Comment[] | undefined; +} + +export interface StaticBlock extends Omit { + type: "StaticBlock"; +} + +export interface ExpressionStatement extends BaseStatement { + type: "ExpressionStatement"; + expression: Expression; +} + +export interface IfStatement extends BaseStatement { + type: "IfStatement"; + test: Expression; + consequent: Statement; + alternate?: Statement | null | undefined; +} + +export interface LabeledStatement extends BaseStatement { + type: "LabeledStatement"; + label: Identifier; + body: Statement; +} + +export interface BreakStatement extends BaseStatement { + type: "BreakStatement"; + label?: Identifier | null | undefined; +} + +export interface ContinueStatement extends BaseStatement { + type: "ContinueStatement"; + label?: Identifier | null | undefined; +} + +export interface WithStatement extends BaseStatement { + type: "WithStatement"; + object: Expression; + body: Statement; +} + +export interface SwitchStatement extends BaseStatement { + type: "SwitchStatement"; + discriminant: Expression; + cases: SwitchCase[]; +} + +export interface ReturnStatement extends BaseStatement { + type: "ReturnStatement"; + argument?: Expression | null | undefined; +} + +export interface ThrowStatement extends BaseStatement { + type: "ThrowStatement"; + argument: Expression; +} + +export interface TryStatement extends BaseStatement { + type: "TryStatement"; + block: BlockStatement; + handler?: CatchClause | null | undefined; + finalizer?: BlockStatement | null | undefined; +} + +export interface WhileStatement extends BaseStatement { + type: "WhileStatement"; + test: Expression; + body: Statement; +} + +export interface DoWhileStatement extends BaseStatement { + type: "DoWhileStatement"; + body: Statement; + test: Expression; +} + +export interface ForStatement extends BaseStatement { + type: "ForStatement"; + init?: VariableDeclaration | Expression | null | undefined; + test?: Expression | null | undefined; + update?: Expression | null | undefined; + body: Statement; +} + +export interface BaseForXStatement extends BaseStatement { + left: VariableDeclaration | Pattern; + right: Expression; + body: Statement; +} + +export interface ForInStatement extends BaseForXStatement { + type: "ForInStatement"; +} + +export interface DebuggerStatement extends BaseStatement { + type: "DebuggerStatement"; +} + +export type Declaration = FunctionDeclaration | VariableDeclaration | ClassDeclaration; + +export interface BaseDeclaration extends BaseStatement {} + +export interface MaybeNamedFunctionDeclaration extends BaseFunction, BaseDeclaration { + type: "FunctionDeclaration"; + /** It is null when a function declaration is a part of the `export default function` statement */ + id: Identifier | null; + body: BlockStatement; +} + +export interface FunctionDeclaration extends MaybeNamedFunctionDeclaration { + id: Identifier; +} + +export interface VariableDeclaration extends BaseDeclaration { + type: "VariableDeclaration"; + declarations: VariableDeclarator[]; + kind: "var" | "let" | "const"; +} + +export interface VariableDeclarator extends BaseNode { + type: "VariableDeclarator"; + id: Pattern; + init?: Expression | null | undefined; +} + +export interface ExpressionMap { + ArrayExpression: ArrayExpression; + ArrowFunctionExpression: ArrowFunctionExpression; + AssignmentExpression: AssignmentExpression; + AwaitExpression: AwaitExpression; + BinaryExpression: BinaryExpression; + CallExpression: CallExpression; + ChainExpression: ChainExpression; + ClassExpression: ClassExpression; + ConditionalExpression: ConditionalExpression; + FunctionExpression: FunctionExpression; + Identifier: Identifier; + ImportExpression: ImportExpression; + Literal: Literal; + LogicalExpression: LogicalExpression; + MemberExpression: MemberExpression; + MetaProperty: MetaProperty; + NewExpression: NewExpression; + ObjectExpression: ObjectExpression; + SequenceExpression: SequenceExpression; + TaggedTemplateExpression: TaggedTemplateExpression; + TemplateLiteral: TemplateLiteral; + ThisExpression: ThisExpression; + UnaryExpression: UnaryExpression; + UpdateExpression: UpdateExpression; + YieldExpression: YieldExpression; +} + +export type Expression = ExpressionMap[keyof ExpressionMap]; + +export interface BaseExpression extends BaseNode {} + +export type ChainElement = SimpleCallExpression | MemberExpression; + +export interface ChainExpression extends BaseExpression { + type: "ChainExpression"; + expression: ChainElement; +} + +export interface ThisExpression extends BaseExpression { + type: "ThisExpression"; +} + +export interface ArrayExpression extends BaseExpression { + type: "ArrayExpression"; + elements: Array; +} + +export interface ObjectExpression extends BaseExpression { + type: "ObjectExpression"; + properties: Array; +} + +export interface PrivateIdentifier extends BaseNode { + type: "PrivateIdentifier"; + name: string; +} + +export interface Property extends BaseNode { + type: "Property"; + key: Expression | PrivateIdentifier; + value: Expression | Pattern; // Could be an AssignmentProperty + kind: "init" | "get" | "set"; + method: boolean; + shorthand: boolean; + computed: boolean; +} + +export interface PropertyDefinition extends BaseNode { + type: "PropertyDefinition"; + key: Expression | PrivateIdentifier; + value?: Expression | null | undefined; + computed: boolean; + static: boolean; +} + +export interface FunctionExpression extends BaseFunction, BaseExpression { + id?: Identifier | null | undefined; + type: "FunctionExpression"; + body: BlockStatement; +} + +export interface SequenceExpression extends BaseExpression { + type: "SequenceExpression"; + expressions: Expression[]; +} + +export interface UnaryExpression extends BaseExpression { + type: "UnaryExpression"; + operator: UnaryOperator; + prefix: true; + argument: Expression; +} + +export interface BinaryExpression extends BaseExpression { + type: "BinaryExpression"; + operator: BinaryOperator; + left: Expression; + right: Expression; +} + +export interface AssignmentExpression extends BaseExpression { + type: "AssignmentExpression"; + operator: AssignmentOperator; + left: Pattern | MemberExpression; + right: Expression; +} + +export interface UpdateExpression extends BaseExpression { + type: "UpdateExpression"; + operator: UpdateOperator; + argument: Expression; + prefix: boolean; +} + +export interface LogicalExpression extends BaseExpression { + type: "LogicalExpression"; + operator: LogicalOperator; + left: Expression; + right: Expression; +} + +export interface ConditionalExpression extends BaseExpression { + type: "ConditionalExpression"; + test: Expression; + alternate: Expression; + consequent: Expression; +} + +export interface BaseCallExpression extends BaseExpression { + callee: Expression | Super; + arguments: Array; +} +export type CallExpression = SimpleCallExpression | NewExpression; + +export interface SimpleCallExpression extends BaseCallExpression { + type: "CallExpression"; + optional: boolean; +} + +export interface NewExpression extends BaseCallExpression { + type: "NewExpression"; +} + +export interface MemberExpression extends BaseExpression, BasePattern { + type: "MemberExpression"; + object: Expression | Super; + property: Expression | PrivateIdentifier; + computed: boolean; + optional: boolean; +} + +export type Pattern = Identifier | ObjectPattern | ArrayPattern | RestElement | AssignmentPattern | MemberExpression; + +export interface BasePattern extends BaseNode {} + +export interface SwitchCase extends BaseNode { + type: "SwitchCase"; + test?: Expression | null | undefined; + consequent: Statement[]; +} + +export interface CatchClause extends BaseNode { + type: "CatchClause"; + param: Pattern | null; + body: BlockStatement; +} + +export interface Identifier extends BaseNode, BaseExpression, BasePattern { + type: "Identifier"; + name: string; +} + +export type Literal = SimpleLiteral | RegExpLiteral | BigIntLiteral; + +export interface SimpleLiteral extends BaseNode, BaseExpression { + type: "Literal"; + value: string | boolean | number | null; + raw?: string | undefined; +} + +export interface RegExpLiteral extends BaseNode, BaseExpression { + type: "Literal"; + value?: RegExp | null | undefined; + regex: { + pattern: string; + flags: string; + }; + raw?: string | undefined; +} + +export interface BigIntLiteral extends BaseNode, BaseExpression { + type: "Literal"; + value?: bigint | null | undefined; + bigint: string; + raw?: string | undefined; +} + +export type UnaryOperator = "-" | "+" | "!" | "~" | "typeof" | "void" | "delete"; + +export type BinaryOperator = + | "==" + | "!=" + | "===" + | "!==" + | "<" + | "<=" + | ">" + | ">=" + | "<<" + | ">>" + | ">>>" + | "+" + | "-" + | "*" + | "/" + | "%" + | "**" + | "|" + | "^" + | "&" + | "in" + | "instanceof"; + +export type LogicalOperator = "||" | "&&" | "??"; + +export type AssignmentOperator = + | "=" + | "+=" + | "-=" + | "*=" + | "/=" + | "%=" + | "**=" + | "<<=" + | ">>=" + | ">>>=" + | "|=" + | "^=" + | "&=" + | "||=" + | "&&=" + | "??="; + +export type UpdateOperator = "++" | "--"; + +export interface ForOfStatement extends BaseForXStatement { + type: "ForOfStatement"; + await: boolean; +} + +export interface Super extends BaseNode { + type: "Super"; +} + +export interface SpreadElement extends BaseNode { + type: "SpreadElement"; + argument: Expression; +} + +export interface ArrowFunctionExpression extends BaseExpression, BaseFunction { + type: "ArrowFunctionExpression"; + expression: boolean; + body: BlockStatement | Expression; +} + +export interface YieldExpression extends BaseExpression { + type: "YieldExpression"; + argument?: Expression | null | undefined; + delegate: boolean; +} + +export interface TemplateLiteral extends BaseExpression { + type: "TemplateLiteral"; + quasis: TemplateElement[]; + expressions: Expression[]; +} + +export interface TaggedTemplateExpression extends BaseExpression { + type: "TaggedTemplateExpression"; + tag: Expression; + quasi: TemplateLiteral; +} + +export interface TemplateElement extends BaseNode { + type: "TemplateElement"; + tail: boolean; + value: { + /** It is null when the template literal is tagged and the text has an invalid escape (e.g. - tag`\unicode and \u{55}`) */ + cooked?: string | null | undefined; + raw: string; + }; +} + +export interface AssignmentProperty extends Property { + value: Pattern; + kind: "init"; + method: boolean; // false +} + +export interface ObjectPattern extends BasePattern { + type: "ObjectPattern"; + properties: Array; +} + +export interface ArrayPattern extends BasePattern { + type: "ArrayPattern"; + elements: Array; +} + +export interface RestElement extends BasePattern { + type: "RestElement"; + argument: Pattern; +} + +export interface AssignmentPattern extends BasePattern { + type: "AssignmentPattern"; + left: Pattern; + right: Expression; +} + +export type Class = ClassDeclaration | ClassExpression; +export interface BaseClass extends BaseNode { + superClass?: Expression | null | undefined; + body: ClassBody; +} + +export interface ClassBody extends BaseNode { + type: "ClassBody"; + body: Array; +} + +export interface MethodDefinition extends BaseNode { + type: "MethodDefinition"; + key: Expression | PrivateIdentifier; + value: FunctionExpression; + kind: "constructor" | "method" | "get" | "set"; + computed: boolean; + static: boolean; +} + +export interface MaybeNamedClassDeclaration extends BaseClass, BaseDeclaration { + type: "ClassDeclaration"; + /** It is null when a class declaration is a part of the `export default class` statement */ + id: Identifier | null; +} + +export interface ClassDeclaration extends MaybeNamedClassDeclaration { + id: Identifier; +} + +export interface ClassExpression extends BaseClass, BaseExpression { + type: "ClassExpression"; + id?: Identifier | null | undefined; +} + +export interface MetaProperty extends BaseExpression { + type: "MetaProperty"; + meta: Identifier; + property: Identifier; +} + +export type ModuleDeclaration = + | ImportDeclaration + | ExportNamedDeclaration + | ExportDefaultDeclaration + | ExportAllDeclaration; +export interface BaseModuleDeclaration extends BaseNode {} + +export type ModuleSpecifier = ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ExportSpecifier; +export interface BaseModuleSpecifier extends BaseNode { + local: Identifier; +} + +export interface ImportDeclaration extends BaseModuleDeclaration { + type: "ImportDeclaration"; + specifiers: Array; + source: Literal; +} + +export interface ImportSpecifier extends BaseModuleSpecifier { + type: "ImportSpecifier"; + imported: Identifier; +} + +export interface ImportExpression extends BaseExpression { + type: "ImportExpression"; + source: Expression; +} + +export interface ImportDefaultSpecifier extends BaseModuleSpecifier { + type: "ImportDefaultSpecifier"; +} + +export interface ImportNamespaceSpecifier extends BaseModuleSpecifier { + type: "ImportNamespaceSpecifier"; +} + +export interface ExportNamedDeclaration extends BaseModuleDeclaration { + type: "ExportNamedDeclaration"; + declaration?: Declaration | null | undefined; + specifiers: ExportSpecifier[]; + source?: Literal | null | undefined; +} + +export interface ExportSpecifier extends BaseModuleSpecifier { + type: "ExportSpecifier"; + exported: Identifier; +} + +export interface ExportDefaultDeclaration extends BaseModuleDeclaration { + type: "ExportDefaultDeclaration"; + declaration: MaybeNamedFunctionDeclaration | MaybeNamedClassDeclaration | Expression; +} + +export interface ExportAllDeclaration extends BaseModuleDeclaration { + type: "ExportAllDeclaration"; + exported: Identifier | null; + source: Literal; +} + +export interface AwaitExpression extends BaseExpression { + type: "AwaitExpression"; + argument: Expression; +} diff --git a/node_modules/@types/estree/package.json b/node_modules/@types/estree/package.json new file mode 100644 index 00000000..2d5a9983 --- /dev/null +++ b/node_modules/@types/estree/package.json @@ -0,0 +1,26 @@ +{ + "name": "@types/estree", + "version": "1.0.5", + "description": "TypeScript definitions for estree", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree", + "license": "MIT", + "contributors": [ + { + "name": "RReverser", + "githubUsername": "RReverser", + "url": "https://github.com/RReverser" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/estree" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "6f0eeaffe488ce594e73f8df619c677d752a279b51edbc744e4aebb20db4b3a7", + "typeScriptVersion": "4.5", + "nonNpm": true +} \ No newline at end of file diff --git a/node_modules/@types/express-serve-static-core/LICENSE b/node_modules/@types/express-serve-static-core/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/express-serve-static-core/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/express-serve-static-core/README.md b/node_modules/@types/express-serve-static-core/README.md new file mode 100644 index 00000000..8c060cda --- /dev/null +++ b/node_modules/@types/express-serve-static-core/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/express-serve-static-core` + +# Summary +This package contains type definitions for express-serve-static-core (http://expressjs.com). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/express-serve-static-core. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 03:09:37 GMT + * Dependencies: [@types/node](https://npmjs.com/package/@types/node), [@types/qs](https://npmjs.com/package/@types/qs), [@types/range-parser](https://npmjs.com/package/@types/range-parser), [@types/send](https://npmjs.com/package/@types/send) + +# Credits +These definitions were written by [Boris Yankov](https://github.com/borisyankov), [Satana Charuwichitratana](https://github.com/micksatana), [Sami Jaber](https://github.com/samijaber), [Jose Luis Leon](https://github.com/JoseLion), [David Stephens](https://github.com/dwrss), and [Shin Ando](https://github.com/andoshin11). diff --git a/node_modules/@types/express-serve-static-core/index.d.ts b/node_modules/@types/express-serve-static-core/index.d.ts new file mode 100644 index 00000000..6685b8e9 --- /dev/null +++ b/node_modules/@types/express-serve-static-core/index.d.ts @@ -0,0 +1,1261 @@ +// This extracts the core definitions from express to prevent a circular dependency between express and serve-static +/// + +import { SendOptions } from "send"; + +declare global { + namespace Express { + // These open interfaces may be extended in an application-specific manner via declaration merging. + // See for example method-override.d.ts (https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/method-override/index.d.ts) + interface Request {} + interface Response {} + interface Locals {} + interface Application {} + } +} + +import { EventEmitter } from "events"; +import * as http from "http"; +import { ParsedQs } from "qs"; +import { Options as RangeParserOptions, Ranges as RangeParserRanges, Result as RangeParserResult } from "range-parser"; + +export {}; + +export type Query = ParsedQs; + +export interface NextFunction { + (err?: any): void; + /** + * "Break-out" of a router by calling {next('router')}; + * @see {https://expressjs.com/en/guide/using-middleware.html#middleware.router} + */ + (deferToNext: "router"): void; + /** + * "Break-out" of a route by calling {next('route')}; + * @see {https://expressjs.com/en/guide/using-middleware.html#middleware.application} + */ + (deferToNext: "route"): void; +} + +export interface Dictionary { + [key: string]: T; +} + +export interface ParamsDictionary { + [key: string]: string; +} +export type ParamsArray = string[]; +export type Params = ParamsDictionary | ParamsArray; + +export interface Locals extends Express.Locals {} + +export interface RequestHandler< + P = ParamsDictionary, + ResBody = any, + ReqBody = any, + ReqQuery = ParsedQs, + LocalsObj extends Record = Record, +> { + // tslint:disable-next-line callable-types (This is extended from and can't extend from a type alias in ts<2.2) + ( + req: Request, + res: Response, + next: NextFunction, + ): void; +} + +export type ErrorRequestHandler< + P = ParamsDictionary, + ResBody = any, + ReqBody = any, + ReqQuery = ParsedQs, + LocalsObj extends Record = Record, +> = ( + err: any, + req: Request, + res: Response, + next: NextFunction, +) => void; + +export type PathParams = string | RegExp | Array; + +export type RequestHandlerParams< + P = ParamsDictionary, + ResBody = any, + ReqBody = any, + ReqQuery = ParsedQs, + LocalsObj extends Record = Record, +> = + | RequestHandler + | ErrorRequestHandler + | Array | ErrorRequestHandler

>; + +type RemoveTail = S extends `${infer P}${Tail}` ? P : S; +type GetRouteParameter = RemoveTail< + RemoveTail, `-${string}`>, + `.${string}` +>; + +// prettier-ignore +export type RouteParameters = string extends Route ? ParamsDictionary + : Route extends `${string}(${string}` ? ParamsDictionary // TODO: handling for regex parameters + : Route extends `${string}:${infer Rest}` ? + & ( + GetRouteParameter extends never ? ParamsDictionary + : GetRouteParameter extends `${infer ParamName}?` ? { [P in ParamName]?: string } + : { [P in GetRouteParameter]: string } + ) + & (Rest extends `${GetRouteParameter}${infer Next}` ? RouteParameters : unknown) + : {}; + +/* eslint-disable @definitelytyped/no-unnecessary-generics */ +export interface IRouterMatcher< + T, + Method extends "all" | "get" | "post" | "put" | "delete" | "patch" | "options" | "head" = any, +> { + < + Route extends string, + P = RouteParameters, + ResBody = any, + ReqBody = any, + ReqQuery = ParsedQs, + LocalsObj extends Record = Record, + >( + // (it's used as the default type parameter for P) + path: Route, + // (This generic is meant to be passed explicitly.) + ...handlers: Array> + ): T; + < + Path extends string, + P = RouteParameters, + ResBody = any, + ReqBody = any, + ReqQuery = ParsedQs, + LocalsObj extends Record = Record, + >( + // (it's used as the default type parameter for P) + path: Path, + // (This generic is meant to be passed explicitly.) + ...handlers: Array> + ): T; + < + P = ParamsDictionary, + ResBody = any, + ReqBody = any, + ReqQuery = ParsedQs, + LocalsObj extends Record = Record, + >( + path: PathParams, + // (This generic is meant to be passed explicitly.) + ...handlers: Array> + ): T; + < + P = ParamsDictionary, + ResBody = any, + ReqBody = any, + ReqQuery = ParsedQs, + LocalsObj extends Record = Record, + >( + path: PathParams, + // (This generic is meant to be passed explicitly.) + ...handlers: Array> + ): T; + (path: PathParams, subApplication: Application): T; +} + +export interface IRouterHandler { + (...handlers: Array>>): T; + (...handlers: Array>>): T; + < + P = RouteParameters, + ResBody = any, + ReqBody = any, + ReqQuery = ParsedQs, + LocalsObj extends Record = Record, + >( + // (This generic is meant to be passed explicitly.) + // eslint-disable-next-line @definitelytyped/no-unnecessary-generics + ...handlers: Array> + ): T; + < + P = RouteParameters, + ResBody = any, + ReqBody = any, + ReqQuery = ParsedQs, + LocalsObj extends Record = Record, + >( + // (This generic is meant to be passed explicitly.) + // eslint-disable-next-line @definitelytyped/no-unnecessary-generics + ...handlers: Array> + ): T; + < + P = ParamsDictionary, + ResBody = any, + ReqBody = any, + ReqQuery = ParsedQs, + LocalsObj extends Record = Record, + >( + // (This generic is meant to be passed explicitly.) + // eslint-disable-next-line @definitelytyped/no-unnecessary-generics + ...handlers: Array> + ): T; + < + P = ParamsDictionary, + ResBody = any, + ReqBody = any, + ReqQuery = ParsedQs, + LocalsObj extends Record = Record, + >( + // (This generic is meant to be passed explicitly.) + // eslint-disable-next-line @definitelytyped/no-unnecessary-generics + ...handlers: Array> + ): T; +} +/* eslint-enable @definitelytyped/no-unnecessary-generics */ + +export interface IRouter extends RequestHandler { + /** + * Map the given param placeholder `name`(s) to the given callback(s). + * + * Parameter mapping is used to provide pre-conditions to routes + * which use normalized placeholders. For example a _:user_id_ parameter + * could automatically load a user's information from the database without + * any additional code, + * + * The callback uses the samesignature as middleware, the only differencing + * being that the value of the placeholder is passed, in this case the _id_ + * of the user. Once the `next()` function is invoked, just like middleware + * it will continue on to execute the route, or subsequent parameter functions. + * + * app.param('user_id', function(req, res, next, id){ + * User.find(id, function(err, user){ + * if (err) { + * next(err); + * } else if (user) { + * req.user = user; + * next(); + * } else { + * next(new Error('failed to load user')); + * } + * }); + * }); + */ + param(name: string, handler: RequestParamHandler): this; + + /** + * Alternatively, you can pass only a callback, in which case you have the opportunity to alter the app.param() + * + * @deprecated since version 4.11 + */ + param(callback: (name: string, matcher: RegExp) => RequestParamHandler): this; + + /** + * Special-cased "all" method, applying the given route `path`, + * middleware, and callback to _every_ HTTP method. + */ + all: IRouterMatcher; + get: IRouterMatcher; + post: IRouterMatcher; + put: IRouterMatcher; + delete: IRouterMatcher; + patch: IRouterMatcher; + options: IRouterMatcher; + head: IRouterMatcher; + + checkout: IRouterMatcher; + connect: IRouterMatcher; + copy: IRouterMatcher; + lock: IRouterMatcher; + merge: IRouterMatcher; + mkactivity: IRouterMatcher; + mkcol: IRouterMatcher; + move: IRouterMatcher; + "m-search": IRouterMatcher; + notify: IRouterMatcher; + propfind: IRouterMatcher; + proppatch: IRouterMatcher; + purge: IRouterMatcher; + report: IRouterMatcher; + search: IRouterMatcher; + subscribe: IRouterMatcher; + trace: IRouterMatcher; + unlock: IRouterMatcher; + unsubscribe: IRouterMatcher; + link: IRouterMatcher; + unlink: IRouterMatcher; + + use: IRouterHandler & IRouterMatcher; + + route(prefix: T): IRoute; + route(prefix: PathParams): IRoute; + /** + * Stack of configured routes + */ + stack: any[]; +} + +export interface IRoute { + path: string; + stack: any; + all: IRouterHandler; + get: IRouterHandler; + post: IRouterHandler; + put: IRouterHandler; + delete: IRouterHandler; + patch: IRouterHandler; + options: IRouterHandler; + head: IRouterHandler; + + checkout: IRouterHandler; + copy: IRouterHandler; + lock: IRouterHandler; + merge: IRouterHandler; + mkactivity: IRouterHandler; + mkcol: IRouterHandler; + move: IRouterHandler; + "m-search": IRouterHandler; + notify: IRouterHandler; + purge: IRouterHandler; + report: IRouterHandler; + search: IRouterHandler; + subscribe: IRouterHandler; + trace: IRouterHandler; + unlock: IRouterHandler; + unsubscribe: IRouterHandler; +} + +export interface Router extends IRouter {} + +export interface CookieOptions { + maxAge?: number | undefined; + signed?: boolean | undefined; + expires?: Date | undefined; + httpOnly?: boolean | undefined; + path?: string | undefined; + domain?: string | undefined; + secure?: boolean | undefined; + encode?: ((val: string) => string) | undefined; + sameSite?: boolean | "lax" | "strict" | "none" | undefined; +} + +export interface ByteRange { + start: number; + end: number; +} + +export interface RequestRanges extends RangeParserRanges {} + +export type Errback = (err: Error) => void; + +/** + * @param P For most requests, this should be `ParamsDictionary`, but if you're + * using this in a route handler for a route that uses a `RegExp` or a wildcard + * `string` path (e.g. `'/user/*'`), then `req.params` will be an array, in + * which case you should use `ParamsArray` instead. + * + * @see https://expressjs.com/en/api.html#req.params + * + * @example + * app.get('/user/:id', (req, res) => res.send(req.params.id)); // implicitly `ParamsDictionary` + * app.get(/user\/(.*)/, (req, res) => res.send(req.params[0])); + * app.get('/user/*', (req, res) => res.send(req.params[0])); + */ +export interface Request< + P = ParamsDictionary, + ResBody = any, + ReqBody = any, + ReqQuery = ParsedQs, + LocalsObj extends Record = Record, +> extends http.IncomingMessage, Express.Request { + /** + * Return request header. + * + * The `Referrer` header field is special-cased, + * both `Referrer` and `Referer` are interchangeable. + * + * Examples: + * + * req.get('Content-Type'); + * // => "text/plain" + * + * req.get('content-type'); + * // => "text/plain" + * + * req.get('Something'); + * // => undefined + * + * Aliased as `req.header()`. + */ + get(name: "set-cookie"): string[] | undefined; + get(name: string): string | undefined; + + header(name: "set-cookie"): string[] | undefined; + header(name: string): string | undefined; + + /** + * Check if the given `type(s)` is acceptable, returning + * the best match when true, otherwise `undefined`, in which + * case you should respond with 406 "Not Acceptable". + * + * The `type` value may be a single mime type string + * such as "application/json", the extension name + * such as "json", a comma-delimted list such as "json, html, text/plain", + * or an array `["json", "html", "text/plain"]`. When a list + * or array is given the _best_ match, if any is returned. + * + * Examples: + * + * // Accept: text/html + * req.accepts('html'); + * // => "html" + * + * // Accept: text/*, application/json + * req.accepts('html'); + * // => "html" + * req.accepts('text/html'); + * // => "text/html" + * req.accepts('json, text'); + * // => "json" + * req.accepts('application/json'); + * // => "application/json" + * + * // Accept: text/*, application/json + * req.accepts('image/png'); + * req.accepts('png'); + * // => undefined + * + * // Accept: text/*;q=.5, application/json + * req.accepts(['html', 'json']); + * req.accepts('html, json'); + * // => "json" + */ + accepts(): string[]; + accepts(type: string): string | false; + accepts(type: string[]): string | false; + accepts(...type: string[]): string | false; + + /** + * Returns the first accepted charset of the specified character sets, + * based on the request's Accept-Charset HTTP header field. + * If none of the specified charsets is accepted, returns false. + * + * For more information, or if you have issues or concerns, see accepts. + */ + acceptsCharsets(): string[]; + acceptsCharsets(charset: string): string | false; + acceptsCharsets(charset: string[]): string | false; + acceptsCharsets(...charset: string[]): string | false; + + /** + * Returns the first accepted encoding of the specified encodings, + * based on the request's Accept-Encoding HTTP header field. + * If none of the specified encodings is accepted, returns false. + * + * For more information, or if you have issues or concerns, see accepts. + */ + acceptsEncodings(): string[]; + acceptsEncodings(encoding: string): string | false; + acceptsEncodings(encoding: string[]): string | false; + acceptsEncodings(...encoding: string[]): string | false; + + /** + * Returns the first accepted language of the specified languages, + * based on the request's Accept-Language HTTP header field. + * If none of the specified languages is accepted, returns false. + * + * For more information, or if you have issues or concerns, see accepts. + */ + acceptsLanguages(): string[]; + acceptsLanguages(lang: string): string | false; + acceptsLanguages(lang: string[]): string | false; + acceptsLanguages(...lang: string[]): string | false; + + /** + * Parse Range header field, capping to the given `size`. + * + * Unspecified ranges such as "0-" require knowledge of your resource length. In + * the case of a byte range this is of course the total number of bytes. + * If the Range header field is not given `undefined` is returned. + * If the Range header field is given, return value is a result of range-parser. + * See more ./types/range-parser/index.d.ts + * + * NOTE: remember that ranges are inclusive, so for example "Range: users=0-3" + * should respond with 4 users when available, not 3. + */ + range(size: number, options?: RangeParserOptions): RangeParserRanges | RangeParserResult | undefined; + + /** + * Return an array of Accepted media types + * ordered from highest quality to lowest. + */ + accepted: MediaType[]; + + /** + * @deprecated since 4.11 Use either req.params, req.body or req.query, as applicable. + * + * Return the value of param `name` when present or `defaultValue`. + * + * - Checks route placeholders, ex: _/user/:id_ + * - Checks body params, ex: id=12, {"id":12} + * - Checks query string params, ex: ?id=12 + * + * To utilize request bodies, `req.body` + * should be an object. This can be done by using + * the `connect.bodyParser()` middleware. + */ + param(name: string, defaultValue?: any): string; + + /** + * Check if the incoming request contains the "Content-Type" + * header field, and it contains the give mime `type`. + * + * Examples: + * + * // With Content-Type: text/html; charset=utf-8 + * req.is('html'); + * req.is('text/html'); + * req.is('text/*'); + * // => true + * + * // When Content-Type is application/json + * req.is('json'); + * req.is('application/json'); + * req.is('application/*'); + * // => true + * + * req.is('html'); + * // => false + */ + is(type: string | string[]): string | false | null; + + /** + * Return the protocol string "http" or "https" + * when requested with TLS. When the "trust proxy" + * setting is enabled the "X-Forwarded-Proto" header + * field will be trusted. If you're running behind + * a reverse proxy that supplies https for you this + * may be enabled. + */ + protocol: string; + + /** + * Short-hand for: + * + * req.protocol == 'https' + */ + secure: boolean; + + /** + * Return the remote address, or when + * "trust proxy" is `true` return + * the upstream addr. + * + * Value may be undefined if the `req.socket` is destroyed + * (for example, if the client disconnected). + */ + ip: string | undefined; + + /** + * When "trust proxy" is `true`, parse + * the "X-Forwarded-For" ip address list. + * + * For example if the value were "client, proxy1, proxy2" + * you would receive the array `["client", "proxy1", "proxy2"]` + * where "proxy2" is the furthest down-stream. + */ + ips: string[]; + + /** + * Return subdomains as an array. + * + * Subdomains are the dot-separated parts of the host before the main domain of + * the app. By default, the domain of the app is assumed to be the last two + * parts of the host. This can be changed by setting "subdomain offset". + * + * For example, if the domain is "tobi.ferrets.example.com": + * If "subdomain offset" is not set, req.subdomains is `["ferrets", "tobi"]`. + * If "subdomain offset" is 3, req.subdomains is `["tobi"]`. + */ + subdomains: string[]; + + /** + * Short-hand for `url.parse(req.url).pathname`. + */ + path: string; + + /** + * Parse the "Host" header field hostname. + */ + hostname: string; + + /** + * @deprecated Use hostname instead. + */ + host: string; + + /** + * Check if the request is fresh, aka + * Last-Modified and/or the ETag + * still match. + */ + fresh: boolean; + + /** + * Check if the request is stale, aka + * "Last-Modified" and / or the "ETag" for the + * resource has changed. + */ + stale: boolean; + + /** + * Check if the request was an _XMLHttpRequest_. + */ + xhr: boolean; + + // body: { username: string; password: string; remember: boolean; title: string; }; + body: ReqBody; + + // cookies: { string; remember: boolean; }; + cookies: any; + + method: string; + + params: P; + + query: ReqQuery; + + route: any; + + signedCookies: any; + + originalUrl: string; + + url: string; + + baseUrl: string; + + app: Application; + + /** + * After middleware.init executed, Request will contain res and next properties + * See: express/lib/middleware/init.js + */ + res?: Response | undefined; + next?: NextFunction | undefined; +} + +export interface MediaType { + value: string; + quality: number; + type: string; + subtype: string; +} + +export type Send> = (body?: ResBody) => T; + +export interface SendFileOptions extends SendOptions { + /** Object containing HTTP headers to serve with the file. */ + headers?: Record; +} + +export interface DownloadOptions extends SendOptions { + /** Object containing HTTP headers to serve with the file. The header `Content-Disposition` will be overridden by the filename argument. */ + headers?: Record; +} + +export interface Response< + ResBody = any, + LocalsObj extends Record = Record, + StatusCode extends number = number, +> extends http.ServerResponse, Express.Response { + /** + * Set status `code`. + */ + status(code: StatusCode): this; + + /** + * Set the response HTTP status code to `statusCode` and send its string representation as the response body. + * @link http://expressjs.com/4x/api.html#res.sendStatus + * + * Examples: + * + * res.sendStatus(200); // equivalent to res.status(200).send('OK') + * res.sendStatus(403); // equivalent to res.status(403).send('Forbidden') + * res.sendStatus(404); // equivalent to res.status(404).send('Not Found') + * res.sendStatus(500); // equivalent to res.status(500).send('Internal Server Error') + */ + sendStatus(code: StatusCode): this; + + /** + * Set Link header field with the given `links`. + * + * Examples: + * + * res.links({ + * next: 'http://api.example.com/users?page=2', + * last: 'http://api.example.com/users?page=5' + * }); + */ + links(links: any): this; + + /** + * Send a response. + * + * Examples: + * + * res.send(new Buffer('wahoo')); + * res.send({ some: 'json' }); + * res.send('

some html

'); + * res.status(404).send('Sorry, cant find that'); + */ + send: Send; + + /** + * Send JSON response. + * + * Examples: + * + * res.json(null); + * res.json({ user: 'tj' }); + * res.status(500).json('oh noes!'); + * res.status(404).json('I dont have that'); + */ + json: Send; + + /** + * Send JSON response with JSONP callback support. + * + * Examples: + * + * res.jsonp(null); + * res.jsonp({ user: 'tj' }); + * res.status(500).jsonp('oh noes!'); + * res.status(404).jsonp('I dont have that'); + */ + jsonp: Send; + + /** + * Transfer the file at the given `path`. + * + * Automatically sets the _Content-Type_ response header field. + * The callback `fn(err)` is invoked when the transfer is complete + * or when an error occurs. Be sure to check `res.headersSent` + * if you wish to attempt responding, as the header and some data + * may have already been transferred. + * + * Options: + * + * - `maxAge` defaulting to 0 (can be string converted by `ms`) + * - `root` root directory for relative filenames + * - `headers` object of headers to serve with file + * - `dotfiles` serve dotfiles, defaulting to false; can be `"allow"` to send them + * + * Other options are passed along to `send`. + * + * Examples: + * + * The following example illustrates how `res.sendFile()` may + * be used as an alternative for the `static()` middleware for + * dynamic situations. The code backing `res.sendFile()` is actually + * the same code, so HTTP cache support etc is identical. + * + * app.get('/user/:uid/photos/:file', function(req, res){ + * var uid = req.params.uid + * , file = req.params.file; + * + * req.user.mayViewFilesFrom(uid, function(yes){ + * if (yes) { + * res.sendFile('/uploads/' + uid + '/' + file); + * } else { + * res.send(403, 'Sorry! you cant see that.'); + * } + * }); + * }); + * + * @api public + */ + sendFile(path: string, fn?: Errback): void; + sendFile(path: string, options: SendFileOptions, fn?: Errback): void; + + /** + * @deprecated Use sendFile instead. + */ + sendfile(path: string): void; + /** + * @deprecated Use sendFile instead. + */ + sendfile(path: string, options: SendFileOptions): void; + /** + * @deprecated Use sendFile instead. + */ + sendfile(path: string, fn: Errback): void; + /** + * @deprecated Use sendFile instead. + */ + sendfile(path: string, options: SendFileOptions, fn: Errback): void; + + /** + * Transfer the file at the given `path` as an attachment. + * + * Optionally providing an alternate attachment `filename`, + * and optional callback `fn(err)`. The callback is invoked + * when the data transfer is complete, or when an error has + * ocurred. Be sure to check `res.headersSent` if you plan to respond. + * + * The optional options argument passes through to the underlying + * res.sendFile() call, and takes the exact same parameters. + * + * This method uses `res.sendfile()`. + */ + download(path: string, fn?: Errback): void; + download(path: string, filename: string, fn?: Errback): void; + download(path: string, filename: string, options: DownloadOptions, fn?: Errback): void; + + /** + * Set _Content-Type_ response header with `type` through `mime.lookup()` + * when it does not contain "/", or set the Content-Type to `type` otherwise. + * + * Examples: + * + * res.type('.html'); + * res.type('html'); + * res.type('json'); + * res.type('application/json'); + * res.type('png'); + */ + contentType(type: string): this; + + /** + * Set _Content-Type_ response header with `type` through `mime.lookup()` + * when it does not contain "/", or set the Content-Type to `type` otherwise. + * + * Examples: + * + * res.type('.html'); + * res.type('html'); + * res.type('json'); + * res.type('application/json'); + * res.type('png'); + */ + type(type: string): this; + + /** + * Respond to the Acceptable formats using an `obj` + * of mime-type callbacks. + * + * This method uses `req.accepted`, an array of + * acceptable types ordered by their quality values. + * When "Accept" is not present the _first_ callback + * is invoked, otherwise the first match is used. When + * no match is performed the server responds with + * 406 "Not Acceptable". + * + * Content-Type is set for you, however if you choose + * you may alter this within the callback using `res.type()` + * or `res.set('Content-Type', ...)`. + * + * res.format({ + * 'text/plain': function(){ + * res.send('hey'); + * }, + * + * 'text/html': function(){ + * res.send('

hey

'); + * }, + * + * 'appliation/json': function(){ + * res.send({ message: 'hey' }); + * } + * }); + * + * In addition to canonicalized MIME types you may + * also use extnames mapped to these types: + * + * res.format({ + * text: function(){ + * res.send('hey'); + * }, + * + * html: function(){ + * res.send('

hey

'); + * }, + * + * json: function(){ + * res.send({ message: 'hey' }); + * } + * }); + * + * By default Express passes an `Error` + * with a `.status` of 406 to `next(err)` + * if a match is not made. If you provide + * a `.default` callback it will be invoked + * instead. + */ + format(obj: any): this; + + /** + * Set _Content-Disposition_ header to _attachment_ with optional `filename`. + */ + attachment(filename?: string): this; + + /** + * Set header `field` to `val`, or pass + * an object of header fields. + * + * Examples: + * + * res.set('Foo', ['bar', 'baz']); + * res.set('Accept', 'application/json'); + * res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' }); + * + * Aliased as `res.header()`. + */ + set(field: any): this; + set(field: string, value?: string | string[]): this; + + header(field: any): this; + header(field: string, value?: string | string[]): this; + + // Property indicating if HTTP headers has been sent for the response. + headersSent: boolean; + + /** Get value for header `field`. */ + get(field: string): string | undefined; + + /** Clear cookie `name`. */ + clearCookie(name: string, options?: CookieOptions): this; + + /** + * Set cookie `name` to `val`, with the given `options`. + * + * Options: + * + * - `maxAge` max-age in milliseconds, converted to `expires` + * - `signed` sign the cookie + * - `path` defaults to "/" + * + * Examples: + * + * // "Remember Me" for 15 minutes + * res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true }); + * + * // save as above + * res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true }) + */ + cookie(name: string, val: string, options: CookieOptions): this; + cookie(name: string, val: any, options: CookieOptions): this; + cookie(name: string, val: any): this; + + /** + * Set the location header to `url`. + * + * The given `url` can also be the name of a mapped url, for + * example by default express supports "back" which redirects + * to the _Referrer_ or _Referer_ headers or "/". + * + * Examples: + * + * res.location('/foo/bar').; + * res.location('http://example.com'); + * res.location('../login'); // /blog/post/1 -> /blog/login + * + * Mounting: + * + * When an application is mounted and `res.location()` + * is given a path that does _not_ lead with "/" it becomes + * relative to the mount-point. For example if the application + * is mounted at "/blog", the following would become "/blog/login". + * + * res.location('login'); + * + * While the leading slash would result in a location of "/login": + * + * res.location('/login'); + */ + location(url: string): this; + + /** + * Redirect to the given `url` with optional response `status` + * defaulting to 302. + * + * The resulting `url` is determined by `res.location()`, so + * it will play nicely with mounted apps, relative paths, + * `"back"` etc. + * + * Examples: + * + * res.redirect('back'); + * res.redirect('/foo/bar'); + * res.redirect('http://example.com'); + * res.redirect(301, 'http://example.com'); + * res.redirect('http://example.com', 301); + * res.redirect('../login'); // /blog/post/1 -> /blog/login + */ + redirect(url: string): void; + redirect(status: number, url: string): void; + /** @deprecated use res.redirect(status, url) instead */ + redirect(url: string, status: number): void; + + /** + * Render `view` with the given `options` and optional callback `fn`. + * When a callback function is given a response will _not_ be made + * automatically, otherwise a response of _200_ and _text/html_ is given. + * + * Options: + * + * - `cache` boolean hinting to the engine it should cache + * - `filename` filename of the view being rendered + */ + render(view: string, options?: object, callback?: (err: Error, html: string) => void): void; + render(view: string, callback?: (err: Error, html: string) => void): void; + + locals: LocalsObj & Locals; + + charset: string; + + /** + * Adds the field to the Vary response header, if it is not there already. + * Examples: + * + * res.vary('User-Agent').render('docs'); + */ + vary(field: string): this; + + app: Application; + + /** + * Appends the specified value to the HTTP response header field. + * If the header is not already set, it creates the header with the specified value. + * The value parameter can be a string or an array. + * + * Note: calling res.set() after res.append() will reset the previously-set header value. + * + * @since 4.11.0 + */ + append(field: string, value?: string[] | string): this; + + /** + * After middleware.init executed, Response will contain req property + * See: express/lib/middleware/init.js + */ + req: Request; +} + +export interface Handler extends RequestHandler {} + +export type RequestParamHandler = (req: Request, res: Response, next: NextFunction, value: any, name: string) => any; + +export type ApplicationRequestHandler = + & IRouterHandler + & IRouterMatcher + & ((...handlers: RequestHandlerParams[]) => T); + +export interface Application< + LocalsObj extends Record = Record, +> extends EventEmitter, IRouter, Express.Application { + /** + * Express instance itself is a request handler, which could be invoked without + * third argument. + */ + (req: Request | http.IncomingMessage, res: Response | http.ServerResponse): any; + + /** + * Initialize the server. + * + * - setup default configuration + * - setup default middleware + * - setup route reflection methods + */ + init(): void; + + /** + * Initialize application configuration. + */ + defaultConfiguration(): void; + + /** + * Register the given template engine callback `fn` + * as `ext`. + * + * By default will `require()` the engine based on the + * file extension. For example if you try to render + * a "foo.jade" file Express will invoke the following internally: + * + * app.engine('jade', require('jade').__express); + * + * For engines that do not provide `.__express` out of the box, + * or if you wish to "map" a different extension to the template engine + * you may use this method. For example mapping the EJS template engine to + * ".html" files: + * + * app.engine('html', require('ejs').renderFile); + * + * In this case EJS provides a `.renderFile()` method with + * the same signature that Express expects: `(path, options, callback)`, + * though note that it aliases this method as `ejs.__express` internally + * so if you're using ".ejs" extensions you dont need to do anything. + * + * Some template engines do not follow this convention, the + * [Consolidate.js](https://github.com/visionmedia/consolidate.js) + * library was created to map all of node's popular template + * engines to follow this convention, thus allowing them to + * work seamlessly within Express. + */ + engine( + ext: string, + fn: (path: string, options: object, callback: (e: any, rendered?: string) => void) => void, + ): this; + + /** + * Assign `setting` to `val`, or return `setting`'s value. + * + * app.set('foo', 'bar'); + * app.get('foo'); + * // => "bar" + * app.set('foo', ['bar', 'baz']); + * app.get('foo'); + * // => ["bar", "baz"] + * + * Mounted servers inherit their parent server's settings. + */ + set(setting: string, val: any): this; + get: ((name: string) => any) & IRouterMatcher; + + param(name: string | string[], handler: RequestParamHandler): this; + + /** + * Alternatively, you can pass only a callback, in which case you have the opportunity to alter the app.param() + * + * @deprecated since version 4.11 + */ + param(callback: (name: string, matcher: RegExp) => RequestParamHandler): this; + + /** + * Return the app's absolute pathname + * based on the parent(s) that have + * mounted it. + * + * For example if the application was + * mounted as "/admin", which itself + * was mounted as "/blog" then the + * return value would be "/blog/admin". + */ + path(): string; + + /** + * Check if `setting` is enabled (truthy). + * + * app.enabled('foo') + * // => false + * + * app.enable('foo') + * app.enabled('foo') + * // => true + */ + enabled(setting: string): boolean; + + /** + * Check if `setting` is disabled. + * + * app.disabled('foo') + * // => true + * + * app.enable('foo') + * app.disabled('foo') + * // => false + */ + disabled(setting: string): boolean; + + /** Enable `setting`. */ + enable(setting: string): this; + + /** Disable `setting`. */ + disable(setting: string): this; + + /** + * Render the given view `name` name with `options` + * and a callback accepting an error and the + * rendered template string. + * + * Example: + * + * app.render('email', { name: 'Tobi' }, function(err, html){ + * // ... + * }) + */ + render(name: string, options?: object, callback?: (err: Error, html: string) => void): void; + render(name: string, callback: (err: Error, html: string) => void): void; + + /** + * Listen for connections. + * + * A node `http.Server` is returned, with this + * application (which is a `Function`) as its + * callback. If you wish to create both an HTTP + * and HTTPS server you may do so with the "http" + * and "https" modules as shown here: + * + * var http = require('http') + * , https = require('https') + * , express = require('express') + * , app = express(); + * + * http.createServer(app).listen(80); + * https.createServer({ ... }, app).listen(443); + */ + listen(port: number, hostname: string, backlog: number, callback?: () => void): http.Server; + listen(port: number, hostname: string, callback?: () => void): http.Server; + listen(port: number, callback?: () => void): http.Server; + listen(callback?: () => void): http.Server; + listen(path: string, callback?: () => void): http.Server; + listen(handle: any, listeningListener?: () => void): http.Server; + + router: string; + + settings: any; + + resource: any; + + map: any; + + locals: LocalsObj & Locals; + + /** + * The app.routes object houses all of the routes defined mapped by the + * associated HTTP verb. This object may be used for introspection + * capabilities, for example Express uses this internally not only for + * routing but to provide default OPTIONS behaviour unless app.options() + * is used. Your application or framework may also remove routes by + * simply by removing them from this object. + */ + routes: any; + + /** + * Used to get all registered routes in Express Application + */ + _router: any; + + use: ApplicationRequestHandler; + + /** + * The mount event is fired on a sub-app, when it is mounted on a parent app. + * The parent app is passed to the callback function. + * + * NOTE: + * Sub-apps will: + * - Not inherit the value of settings that have a default value. You must set the value in the sub-app. + * - Inherit the value of settings with no default value. + */ + on: (event: string, callback: (parent: Application) => void) => this; + + /** + * The app.mountpath property contains one or more path patterns on which a sub-app was mounted. + */ + mountpath: string | string[]; +} + +export interface Express extends Application { + request: Request; + response: Response; +} diff --git a/node_modules/@types/express-serve-static-core/package.json b/node_modules/@types/express-serve-static-core/package.json new file mode 100644 index 00000000..381ea524 --- /dev/null +++ b/node_modules/@types/express-serve-static-core/package.json @@ -0,0 +1,55 @@ +{ + "name": "@types/express-serve-static-core", + "version": "4.17.41", + "description": "TypeScript definitions for express-serve-static-core", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/express-serve-static-core", + "license": "MIT", + "contributors": [ + { + "name": "Boris Yankov", + "githubUsername": "borisyankov", + "url": "https://github.com/borisyankov" + }, + { + "name": "Satana Charuwichitratana", + "githubUsername": "micksatana", + "url": "https://github.com/micksatana" + }, + { + "name": "Sami Jaber", + "githubUsername": "samijaber", + "url": "https://github.com/samijaber" + }, + { + "name": "Jose Luis Leon", + "githubUsername": "JoseLion", + "url": "https://github.com/JoseLion" + }, + { + "name": "David Stephens", + "githubUsername": "dwrss", + "url": "https://github.com/dwrss" + }, + { + "name": "Shin Ando", + "githubUsername": "andoshin11", + "url": "https://github.com/andoshin11" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/express-serve-static-core" + }, + "scripts": {}, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + }, + "typesPublisherContentHash": "5c546c267bbf60fff3ec26d28c47a1c607526f56c28ea2a149efcb2f1a8e0198", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/express/LICENSE b/node_modules/@types/express/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/express/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/express/README.md b/node_modules/@types/express/README.md new file mode 100644 index 00000000..1e95940a --- /dev/null +++ b/node_modules/@types/express/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/express` + +# Summary +This package contains type definitions for express (http://expressjs.com). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/express. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 03:09:36 GMT + * Dependencies: [@types/body-parser](https://npmjs.com/package/@types/body-parser), [@types/express-serve-static-core](https://npmjs.com/package/@types/express-serve-static-core), [@types/qs](https://npmjs.com/package/@types/qs), [@types/serve-static](https://npmjs.com/package/@types/serve-static) + +# Credits +These definitions were written by [Boris Yankov](https://github.com/borisyankov), [China Medical University Hospital](https://github.com/CMUH), [Puneet Arora](https://github.com/puneetar), and [Dylan Frankland](https://github.com/dfrankland). diff --git a/node_modules/@types/express/index.d.ts b/node_modules/@types/express/index.d.ts new file mode 100644 index 00000000..b92b15c8 --- /dev/null +++ b/node_modules/@types/express/index.d.ts @@ -0,0 +1,128 @@ +/* =================== USAGE =================== + + import express = require("express"); + var app = express(); + + =============================================== */ + +/// +/// + +import * as bodyParser from "body-parser"; +import * as core from "express-serve-static-core"; +import * as qs from "qs"; +import * as serveStatic from "serve-static"; + +/** + * Creates an Express application. The express() function is a top-level function exported by the express module. + */ +declare function e(): core.Express; + +declare namespace e { + /** + * This is a built-in middleware function in Express. It parses incoming requests with JSON payloads and is based on body-parser. + * @since 4.16.0 + */ + var json: typeof bodyParser.json; + + /** + * This is a built-in middleware function in Express. It parses incoming requests with Buffer payloads and is based on body-parser. + * @since 4.17.0 + */ + var raw: typeof bodyParser.raw; + + /** + * This is a built-in middleware function in Express. It parses incoming requests with text payloads and is based on body-parser. + * @since 4.17.0 + */ + var text: typeof bodyParser.text; + + /** + * These are the exposed prototypes. + */ + var application: Application; + var request: Request; + var response: Response; + + /** + * This is a built-in middleware function in Express. It serves static files and is based on serve-static. + */ + var static: serveStatic.RequestHandlerConstructor; + + /** + * This is a built-in middleware function in Express. It parses incoming requests with urlencoded payloads and is based on body-parser. + * @since 4.16.0 + */ + var urlencoded: typeof bodyParser.urlencoded; + + /** + * This is a built-in middleware function in Express. It parses incoming request query parameters. + */ + export function query(options: qs.IParseOptions | typeof qs.parse): Handler; + + export function Router(options?: RouterOptions): core.Router; + + interface RouterOptions { + /** + * Enable case sensitivity. + */ + caseSensitive?: boolean | undefined; + + /** + * Preserve the req.params values from the parent router. + * If the parent and the child have conflicting param names, the child’s value take precedence. + * + * @default false + * @since 4.5.0 + */ + mergeParams?: boolean | undefined; + + /** + * Enable strict routing. + */ + strict?: boolean | undefined; + } + + interface Application extends core.Application {} + interface CookieOptions extends core.CookieOptions {} + interface Errback extends core.Errback {} + interface ErrorRequestHandler< + P = core.ParamsDictionary, + ResBody = any, + ReqBody = any, + ReqQuery = core.Query, + Locals extends Record = Record, + > extends core.ErrorRequestHandler {} + interface Express extends core.Express {} + interface Handler extends core.Handler {} + interface IRoute extends core.IRoute {} + interface IRouter extends core.IRouter {} + interface IRouterHandler extends core.IRouterHandler {} + interface IRouterMatcher extends core.IRouterMatcher {} + interface MediaType extends core.MediaType {} + interface NextFunction extends core.NextFunction {} + interface Locals extends core.Locals {} + interface Request< + P = core.ParamsDictionary, + ResBody = any, + ReqBody = any, + ReqQuery = core.Query, + Locals extends Record = Record, + > extends core.Request {} + interface RequestHandler< + P = core.ParamsDictionary, + ResBody = any, + ReqBody = any, + ReqQuery = core.Query, + Locals extends Record = Record, + > extends core.RequestHandler {} + interface RequestParamHandler extends core.RequestParamHandler {} + interface Response< + ResBody = any, + Locals extends Record = Record, + > extends core.Response {} + interface Router extends core.Router {} + interface Send extends core.Send {} +} + +export = e; diff --git a/node_modules/@types/express/package.json b/node_modules/@types/express/package.json new file mode 100644 index 00000000..0ab36cfb --- /dev/null +++ b/node_modules/@types/express/package.json @@ -0,0 +1,45 @@ +{ + "name": "@types/express", + "version": "4.17.21", + "description": "TypeScript definitions for express", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/express", + "license": "MIT", + "contributors": [ + { + "name": "Boris Yankov", + "githubUsername": "borisyankov", + "url": "https://github.com/borisyankov" + }, + { + "name": "China Medical University Hospital", + "githubUsername": "CMUH", + "url": "https://github.com/CMUH" + }, + { + "name": "Puneet Arora", + "githubUsername": "puneetar", + "url": "https://github.com/puneetar" + }, + { + "name": "Dylan Frankland", + "githubUsername": "dfrankland", + "url": "https://github.com/dfrankland" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/express" + }, + "scripts": {}, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + }, + "typesPublisherContentHash": "fa18ce9be07653182e2674f9a13cf8347ffb270031a7a8d22ba0e785bbc16ce4", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/gtag.js/LICENSE b/node_modules/@types/gtag.js/LICENSE new file mode 100755 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/gtag.js/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/gtag.js/README.md b/node_modules/@types/gtag.js/README.md new file mode 100755 index 00000000..df534d71 --- /dev/null +++ b/node_modules/@types/gtag.js/README.md @@ -0,0 +1,16 @@ +# Installation +> `npm install --save @types/gtag.js` + +# Summary +This package contains type definitions for Google gtag.js API (https://developers.google.com/gtagjs). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/gtag.js. + +### Additional Details + * Last updated: Tue, 04 Oct 2022 21:02:53 GMT + * Dependencies: none + * Global values: `gtag` + +# Credits +These definitions were written by [ Junyoung Choi](https://github.com/rokt33r), and [Lucas Akira Uehara](https://github.com/KsAkira10). diff --git a/node_modules/@types/gtag.js/index.d.ts b/node_modules/@types/gtag.js/index.d.ts new file mode 100755 index 00000000..1b26563a --- /dev/null +++ b/node_modules/@types/gtag.js/index.d.ts @@ -0,0 +1,157 @@ +// Type definitions for non-npm package Google gtag.js API +// Project: https://developers.google.com/gtagjs +// Definitions by: Junyoung Choi +// Lucas Akira Uehara +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare var gtag: Gtag.Gtag; +declare namespace Gtag { + interface Gtag { + (command: 'config', targetId: string, config?: ControlParams | EventParams | ConfigParams | CustomParams): void; + (command: 'set', targetId: string, config: CustomParams | boolean | string): void; + (command: 'set', config: CustomParams): void; + (command: 'js', config: Date): void; + ( + command: 'event', + eventName: EventNames | (string & {}), + eventParams?: ControlParams | EventParams | CustomParams, + ): void; + (command: 'get', targetId: string, fieldName: FieldNames | string, callback?: (field: string | CustomParams | undefined) => any): void; + (command: 'consent', consentArg: ConsentArg | string, consentParams: ConsentParams): void; + } + + interface ConfigParams { + page_title?: string | undefined; + page_location?: string | undefined; + page_path?: string | undefined; + send_page_view?: boolean | undefined; + } + + interface CustomParams { + [key: string]: any; + } + + interface ControlParams { + groups?: string | string[] | undefined; + send_to?: string | string[] | undefined; + event_callback?: (() => void) | undefined; + event_timeout?: number | undefined; + } + + type EventNames = + | 'add_payment_info' + | 'add_shipping_info' + | 'add_to_cart' + | 'add_to_wishlist' + | 'begin_checkout' + | 'checkout_progress' + | 'earn_virtual_currency' + | 'exception' + | 'generate_lead' + | 'join_group' + | 'level_end' + | 'level_start' + | 'level_up' + | 'login' + | 'page_view' + | 'post_score' + | 'purchase' + | 'refund' + | 'remove_from_cart' + | 'screen_view' + | 'search' + | 'select_content' + | 'select_item' + | 'select_promotion' + | 'set_checkout_option' + | 'share' + | 'sign_up' + | 'spend_virtual_currency' + | 'tutorial_begin' + | 'tutorial_complete' + | 'unlock_achievement' + | 'timing_complete' + | 'view_cart' + | 'view_item' + | 'view_item_list' + | 'view_promotion' + | 'view_search_results'; + + interface EventParams { + checkout_option?: string | undefined; + checkout_step?: number | undefined; + content_id?: string | undefined; + content_type?: string | undefined; + coupon?: string | undefined; + currency?: string | undefined; + description?: string | undefined; + fatal?: boolean | undefined; + items?: Item[] | undefined; + method?: string | undefined; + number?: string | undefined; + promotions?: Promotion[] | undefined; + screen_name?: string | undefined; + search_term?: string | undefined; + shipping?: Currency | undefined; + tax?: Currency | undefined; + transaction_id?: string | undefined; + value?: number | undefined; + event_label?: string | undefined; + event_category?: string | undefined; + } + + type Currency = string | number; + + /** + * Interface of an item object used in lists for this event. + * + * Reference: + * @see {@link https://developers.google.com/analytics/devguides/collection/ga4/reference/events#view_item_item view_item_item} + * @see {@link https://developers.google.com/analytics/devguides/collection/ga4/reference/events#view_item_list_item view_item_list_item} + * @see {@link https://developers.google.com/analytics/devguides/collection/ga4/reference/events#select_item_item select_item_item} + * @see {@link https://developers.google.com/analytics/devguides/collection/ga4/reference/events#add_to_cart_item add_to_cart_item} + * @see {@link https://developers.google.com/analytics/devguides/collection/ga4/reference/events#view_cart_item view_cart_item} + */ + interface Item { + item_id?: string | undefined; + item_name?: string | undefined; + affiliation?: string | undefined; + coupon?: string | undefined; + currency?: string | undefined; + creative_name?: string | undefined; + creative_slot?: string | undefined; + discount?: Currency | undefined; + index?: number | undefined; + item_brand?: string | undefined; + item_category?: string | undefined; + item_category2?: string | undefined; + item_category3?: string | undefined; + item_category4?: string | undefined; + item_category5?: string | undefined; + item_list_id?: string | undefined; + item_list_name?: string | undefined; + item_variant?: string | undefined; + location_id?: string | undefined; + price?: Currency | undefined; + promotion_id?: string | undefined; + promotion_name?: string | undefined; + quantity?: number | undefined; + } + + interface Promotion { + creative_name?: string | undefined; + creative_slot?: string | undefined; + promotion_id?: string | undefined; + promotion_name?: string | undefined; + } + + type FieldNames = 'client_id' | 'session_id' | 'gclid'; + + type ConsentArg = 'default' | 'update'; + interface ConsentParams { + ad_storage?: 'granted' | 'denied' | undefined; + analytics_storage?: 'granted' | 'denied' | undefined; + wait_for_update?: number | undefined; + region?: string[] | undefined; + } +} diff --git a/node_modules/@types/gtag.js/package.json b/node_modules/@types/gtag.js/package.json new file mode 100755 index 00000000..b3dc3429 --- /dev/null +++ b/node_modules/@types/gtag.js/package.json @@ -0,0 +1,30 @@ +{ + "name": "@types/gtag.js", + "version": "0.0.12", + "description": "TypeScript definitions for Google gtag.js API", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/gtag.js", + "license": "MIT", + "contributors": [ + { + "name": " Junyoung Choi", + "url": "https://github.com/rokt33r", + "githubUsername": "rokt33r" + }, + { + "name": "Lucas Akira Uehara", + "url": "https://github.com/KsAkira10", + "githubUsername": "KsAkira10" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/gtag.js" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "1919d74395982c9beb3bb1bcbc26d9e298c9ee94bc454000c7a49d8333da0d28", + "typeScriptVersion": "4.1" +} \ No newline at end of file diff --git a/node_modules/@types/hast/LICENSE b/node_modules/@types/hast/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/hast/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/hast/README.md b/node_modules/@types/hast/README.md new file mode 100644 index 00000000..796ac34d --- /dev/null +++ b/node_modules/@types/hast/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/hast` + +# Summary +This package contains type definitions for hast (https://github.com/syntax-tree/hast). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/hast. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 20:08:00 GMT + * Dependencies: [@types/unist](https://npmjs.com/package/@types/unist) + +# Credits +These definitions were written by [lukeggchapman](https://github.com/lukeggchapman), [Junyoung Choi](https://github.com/rokt33r), [Christian Murphy](https://github.com/ChristianMurphy), and [Remco Haszing](https://github.com/remcohaszing). diff --git a/node_modules/@types/hast/index.d.ts b/node_modules/@types/hast/index.d.ts new file mode 100644 index 00000000..122b5b4d --- /dev/null +++ b/node_modules/@types/hast/index.d.ts @@ -0,0 +1,282 @@ +import type { Data as UnistData, Literal as UnistLiteral, Node as UnistNode, Parent as UnistParent } from "unist"; + +// ## Interfaces + +/** + * Info associated with hast nodes by the ecosystem. + * + * This space is guaranteed to never be specified by unist or hast. + * But you can use it in utilities and plugins to store data. + * + * This type can be augmented to register custom data. + * For example: + * + * ```ts + * declare module 'hast' { + * interface Data { + * // `someNode.data.myId` is typed as `number | undefined` + * myId?: number | undefined + * } + * } + * ``` + */ +export interface Data extends UnistData {} + +/** + * Info associated with an element. + */ +export interface Properties { + [PropertyName: string]: boolean | number | string | null | undefined | Array; +} + +// ## Content maps + +/** + * Union of registered hast nodes that can occur in {@link Element}. + * + * To register mote custom hast nodes, add them to {@link ElementContentMap}. + * They will be automatically added here. + */ +export type ElementContent = ElementContentMap[keyof ElementContentMap]; + +/** + * Registry of all hast nodes that can occur as children of {@link Element}. + * + * For a union of all {@link Element} children, see {@link ElementContent}. + */ +export interface ElementContentMap { + comment: Comment; + element: Element; + text: Text; +} + +/** + * Union of registered hast nodes that can occur in {@link Root}. + * + * To register custom hast nodes, add them to {@link RootContentMap}. + * They will be automatically added here. + */ +export type RootContent = RootContentMap[keyof RootContentMap]; + +/** + * Registry of all hast nodes that can occur as children of {@link Root}. + * + * > 👉 **Note**: {@link Root} does not need to be an entire document. + * > it can also be a fragment. + * + * For a union of all {@link Root} children, see {@link RootContent}. + */ +export interface RootContentMap { + comment: Comment; + doctype: Doctype; + element: Element; + text: Text; +} + +// ### Special content types + +/** + * Union of registered hast nodes that can occur in {@link Root}. + * + * @deprecated Use {@link RootContent} instead. + */ +export type Content = RootContent; + +/** + * Union of registered hast literals. + * + * To register custom hast nodes, add them to {@link RootContentMap} and other + * places where relevant. + * They will be automatically added here. + */ +export type Literals = Extract; + +/** + * Union of registered hast nodes. + * + * To register custom hast nodes, add them to {@link RootContentMap} and other + * places where relevant. + * They will be automatically added here. + */ +export type Nodes = Root | RootContent; + +/** + * Union of registered hast parents. + * + * To register custom hast nodes, add them to {@link RootContentMap} and other + * places where relevant. + * They will be automatically added here. + */ +export type Parents = Extract; + +// ## Abstract nodes + +/** + * Abstract hast node. + * + * This interface is supposed to be extended. + * If you can use {@link Literal} or {@link Parent}, you should. + * But for example in HTML, a `Doctype` is neither literal nor parent, but + * still a node. + * + * To register custom hast nodes, add them to {@link RootContentMap} and other + * places where relevant (such as {@link ElementContentMap}). + * + * For a union of all registered hast nodes, see {@link Nodes}. + */ +export interface Node extends UnistNode { + /** + * Info from the ecosystem. + */ + data?: Data | undefined; +} + +/** + * Abstract hast node that contains the smallest possible value. + * + * This interface is supposed to be extended if you make custom hast nodes. + * + * For a union of all registered hast literals, see {@link Literals}. + */ +export interface Literal extends Node { + /** + * Plain-text value. + */ + value: string; +} + +/** + * Abstract hast node that contains other hast nodes (*children*). + * + * This interface is supposed to be extended if you make custom hast nodes. + * + * For a union of all registered hast parents, see {@link Parents}. + */ +export interface Parent extends Node { + /** + * List of children. + */ + children: RootContent[]; +} + +// ## Concrete nodes + +/** + * HTML comment. + */ +export interface Comment extends Literal { + /** + * Node type of HTML comments in hast. + */ + type: "comment"; + /** + * Data associated with the comment. + */ + data?: CommentData | undefined; +} + +/** + * Info associated with hast comments by the ecosystem. + */ +export interface CommentData extends Data {} + +/** + * HTML document type. + */ +export interface Doctype extends UnistNode { + /** + * Node type of HTML document types in hast. + */ + type: "doctype"; + /** + * Data associated with the doctype. + */ + data?: DoctypeData | undefined; +} + +/** + * Info associated with hast doctypes by the ecosystem. + */ +export interface DoctypeData extends Data {} + +/** + * HTML element. + */ +export interface Element extends Parent { + /** + * Node type of elements. + */ + type: "element"; + /** + * Tag name (such as `'body'`) of the element. + */ + tagName: string; + /** + * Info associated with the element. + */ + properties: Properties; + /** + * Children of element. + */ + children: ElementContent[]; + /** + * When the `tagName` field is `'template'`, a `content` field can be + * present. + */ + content?: Root | undefined; + /** + * Data associated with the element. + */ + data?: ElementData | undefined; +} + +/** + * Info associated with hast elements by the ecosystem. + */ +export interface ElementData extends Data {} + +/** + * Document fragment or a whole document. + * + * Should be used as the root of a tree and must not be used as a child. + * + * Can also be used as the value for the content field on a `'template'` element. + */ +export interface Root extends Parent { + /** + * Node type of hast root. + */ + type: "root"; + /** + * Children of root. + */ + children: RootContent[]; + /** + * Data associated with the hast root. + */ + data?: RootData | undefined; +} + +/** + * Info associated with hast root nodes by the ecosystem. + */ +export interface RootData extends Data {} + +/** + * HTML character data (plain text). + */ +export interface Text extends Literal { + /** + * Node type of HTML character data (plain text) in hast. + */ + type: "text"; + /** + * Data associated with the text. + */ + data?: TextData | undefined; +} + +/** + * Info associated with hast texts by the ecosystem. + */ +export interface TextData extends Data {} diff --git a/node_modules/@types/hast/package.json b/node_modules/@types/hast/package.json new file mode 100644 index 00000000..5f67ba5b --- /dev/null +++ b/node_modules/@types/hast/package.json @@ -0,0 +1,43 @@ +{ + "name": "@types/hast", + "version": "3.0.3", + "description": "TypeScript definitions for hast", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/hast", + "license": "MIT", + "contributors": [ + { + "name": "lukeggchapman", + "githubUsername": "lukeggchapman", + "url": "https://github.com/lukeggchapman" + }, + { + "name": "Junyoung Choi", + "githubUsername": "rokt33r", + "url": "https://github.com/rokt33r" + }, + { + "name": "Christian Murphy", + "githubUsername": "ChristianMurphy", + "url": "https://github.com/ChristianMurphy" + }, + { + "name": "Remco Haszing", + "githubUsername": "remcohaszing", + "url": "https://github.com/remcohaszing" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/hast" + }, + "scripts": {}, + "dependencies": { + "@types/unist": "*" + }, + "typesPublisherContentHash": "b18290429216d13b513d48add8a87ad45e00133ae7788a5469f5597b5dc4b2fa", + "typeScriptVersion": "4.5", + "nonNpm": true +} \ No newline at end of file diff --git a/node_modules/@types/history/DOMUtils.d.ts b/node_modules/@types/history/DOMUtils.d.ts new file mode 100755 index 00000000..2b0a597c --- /dev/null +++ b/node_modules/@types/history/DOMUtils.d.ts @@ -0,0 +1,17 @@ +declare global { + // Some users of this package are don't use "dom" libs + interface EventTarget {} + interface EventListener {} + interface EventListenerObject {} +} + +export const isExtraneousPopstateEvent: boolean; +export function addEventListener(node: EventTarget, event: string, listener: EventListener | EventListenerObject): void; +export function removeEventListener( + node: EventTarget, + event: string, + listener: EventListener | EventListenerObject, +): void; +export function getConfirmation(message: string, callback: (result: boolean) => void): void; +export function supportsHistory(): boolean; +export function supportsGoWithoutReloadUsingHash(): boolean; diff --git a/node_modules/@types/history/ExecutionEnvironment.d.ts b/node_modules/@types/history/ExecutionEnvironment.d.ts new file mode 100755 index 00000000..ac158887 --- /dev/null +++ b/node_modules/@types/history/ExecutionEnvironment.d.ts @@ -0,0 +1 @@ +export const canUseDOM: boolean; diff --git a/node_modules/@types/history/LICENSE b/node_modules/@types/history/LICENSE new file mode 100755 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/history/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/history/LocationUtils.d.ts b/node_modules/@types/history/LocationUtils.d.ts new file mode 100755 index 00000000..26e9324b --- /dev/null +++ b/node_modules/@types/history/LocationUtils.d.ts @@ -0,0 +1,9 @@ +import { Path, LocationState, LocationKey, Location, LocationDescriptor } from './index'; + +export function locationsAreEqual(lv: LocationDescriptor, rv: LocationDescriptor): boolean; +export function createLocation( + path: LocationDescriptor, + state?: S, + key?: LocationKey, + currentLocation?: Location, +): Location; diff --git a/node_modules/@types/history/PathUtils.d.ts b/node_modules/@types/history/PathUtils.d.ts new file mode 100755 index 00000000..18952a2b --- /dev/null +++ b/node_modules/@types/history/PathUtils.d.ts @@ -0,0 +1,9 @@ +import { Path, Location, LocationDescriptorObject } from './index'; + +export function addLeadingSlash(path: Path): Path; +export function stripLeadingSlash(path: Path): Path; +export function hasBasename(path: Path): boolean; +export function stripBasename(path: Path, prefix: string): Path; +export function stripTrailingSlash(path: Path): Path; +export function parsePath(path: Path): Location; +export function createPath(location: LocationDescriptorObject): Path; diff --git a/node_modules/@types/history/README.md b/node_modules/@types/history/README.md new file mode 100755 index 00000000..21e04744 --- /dev/null +++ b/node_modules/@types/history/README.md @@ -0,0 +1,16 @@ +# Installation +> `npm install --save @types/history` + +# Summary +This package contains type definitions for history (https://github.com/mjackson/history). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/history. + +### Additional Details + * Last updated: Sun, 16 Jan 2022 17:31:24 GMT + * Dependencies: none + * Global values: `History` + +# Credits +These definitions were written by [Sergey Buturlakin](https://github.com/sergey-buturlakin), [Nathan Brown](https://github.com/ngbrown), [Young Rok Kim](https://github.com/rokoroku), and [Daniel Nixon](https://github.com/danielnixon). diff --git a/node_modules/@types/history/createBrowserHistory.d.ts b/node_modules/@types/history/createBrowserHistory.d.ts new file mode 100755 index 00000000..09910bd8 --- /dev/null +++ b/node_modules/@types/history/createBrowserHistory.d.ts @@ -0,0 +1,11 @@ +import { History, LocationState } from './index'; +import { getConfirmation } from './DOMUtils'; + +export interface BrowserHistoryBuildOptions { + basename?: string | undefined; + forceRefresh?: boolean | undefined; + getUserConfirmation?: typeof getConfirmation | undefined; + keyLength?: number | undefined; +} + +export default function createBrowserHistory(options?: BrowserHistoryBuildOptions): History; diff --git a/node_modules/@types/history/createHashHistory.d.ts b/node_modules/@types/history/createHashHistory.d.ts new file mode 100755 index 00000000..4351a484 --- /dev/null +++ b/node_modules/@types/history/createHashHistory.d.ts @@ -0,0 +1,12 @@ +import { History, LocationState } from './index'; +import { getConfirmation } from './DOMUtils'; + +export type HashType = 'hashbang' | 'noslash' | 'slash'; + +export interface HashHistoryBuildOptions { + basename?: string | undefined; + hashType?: HashType | undefined; + getUserConfirmation?: typeof getConfirmation | undefined; +} + +export default function createHashHistory(options?: HashHistoryBuildOptions): History; diff --git a/node_modules/@types/history/createMemoryHistory.d.ts b/node_modules/@types/history/createMemoryHistory.d.ts new file mode 100755 index 00000000..fea27d94 --- /dev/null +++ b/node_modules/@types/history/createMemoryHistory.d.ts @@ -0,0 +1,19 @@ +import { History, Location, LocationState } from './index'; +import { getConfirmation } from './DOMUtils'; + +export type InitialEntry = string | Partial; + +export interface MemoryHistoryBuildOptions { + getUserConfirmation?: typeof getConfirmation | undefined; + initialEntries?: InitialEntry[] | undefined; + initialIndex?: number | undefined; + keyLength?: number | undefined; +} + +export interface MemoryHistory extends History { + index: number; + entries: Location[]; + canGo(n: number): boolean; +} + +export default function createMemoryHistory(options?: MemoryHistoryBuildOptions): MemoryHistory; diff --git a/node_modules/@types/history/createTransitionManager.d.ts b/node_modules/@types/history/createTransitionManager.d.ts new file mode 100755 index 00000000..135ee54f --- /dev/null +++ b/node_modules/@types/history/createTransitionManager.d.ts @@ -0,0 +1,20 @@ +import { Location, Action, LocationListener, LocationState, UnregisterCallback } from './index'; +import { getConfirmation } from './DOMUtils'; + +export type PromptFunction = (location: Location, action: Action) => any; + +export type Prompt = PromptFunction | boolean; + +export interface TransitionManager { + setPrompt(nextPrompt?: Prompt): UnregisterCallback; + appendListener(listener: LocationListener): UnregisterCallback; + notifyListeners(location: Location, action: Action): void; + confirmTransitionTo( + location: Location, + action: Action, + getUserConfirmation: typeof getConfirmation, + callback: (result: boolean) => void, + ): void; +} + +export default function createTransitionManager(): TransitionManager; diff --git a/node_modules/@types/history/index.d.ts b/node_modules/@types/history/index.d.ts new file mode 100755 index 00000000..c7fb53ec --- /dev/null +++ b/node_modules/@types/history/index.d.ts @@ -0,0 +1,95 @@ +// Type definitions for history 4.7.2 +// Project: https://github.com/mjackson/history +// Definitions by: Sergey Buturlakin , Nathan Brown , Young Rok Kim , Daniel Nixon +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.3 +export as namespace History; + +export type Action = 'PUSH' | 'POP' | 'REPLACE'; +export type UnregisterCallback = () => void; + +export interface History { + length: number; + action: Action; + location: Location; + push(location: Path | LocationDescriptor, state?: HistoryLocationState): void; + replace(location: Path | LocationDescriptor, state?: HistoryLocationState): void; + go(n: number): void; + goBack(): void; + goForward(): void; + block(prompt?: boolean | string | TransitionPromptHook): UnregisterCallback; + listen(listener: LocationListener): UnregisterCallback; + createHref(location: LocationDescriptorObject): Href; +} + +export interface Location { + pathname: Pathname; + search: Search; + state: S; + hash: Hash; + key?: LocationKey | undefined; +} + +export interface LocationDescriptorObject { + pathname?: Pathname | undefined; + search?: Search | undefined; + state?: S | undefined; + hash?: Hash | undefined; + key?: LocationKey | undefined; +} + +export namespace History { + export type LocationDescriptor = Path | LocationDescriptorObject; + export type LocationKey = string; + export type LocationListener = (location: Location, action: Action) => void; + + export type LocationState = unknown; + export type Path = string; + export type Pathname = string; + export type Search = string; + export type TransitionHook = (location: Location, callback: (result: any) => void) => any; + export type TransitionPromptHook = ( + location: Location, + action: Action, + ) => string | false | void; + export type Hash = string; + export type Href = string; +} + +export type LocationDescriptor = History.LocationDescriptor; +export type LocationKey = History.LocationKey; +export type LocationListener = History.LocationListener; +export type LocationState = History.LocationState; +export type Path = History.Path; +export type Pathname = History.Pathname; +export type Search = History.Search; +export type TransitionHook = History.TransitionHook; +export type TransitionPromptHook = History.TransitionPromptHook; +export type Hash = History.Hash; +export type Href = History.Href; + +import { default as createBrowserHistory } from './createBrowserHistory'; +import { default as createHashHistory } from './createHashHistory'; +import { default as createMemoryHistory } from './createMemoryHistory'; +import { createLocation, locationsAreEqual } from './LocationUtils'; +import { parsePath, createPath } from './PathUtils'; + +// Global usage, without modules, needs the small trick, because lib.d.ts +// already has `history` and `History` global definitions: +// var createHistory = ((window as any).History as HistoryModule.Module).createHistory; +export interface Module { + createBrowserHistory: typeof createBrowserHistory; + createHashHistory: typeof createHashHistory; + createMemoryHistory: typeof createMemoryHistory; + createLocation: typeof createLocation; + locationsAreEqual: typeof locationsAreEqual; + parsePath: typeof parsePath; + createPath: typeof createPath; +} + +export * from './createBrowserHistory'; +export * from './createHashHistory'; +export * from './createMemoryHistory'; +export { createLocation, locationsAreEqual } from './LocationUtils'; +export { parsePath, createPath } from './PathUtils'; +export { createBrowserHistory, createHashHistory, createMemoryHistory }; diff --git a/node_modules/@types/history/package.json b/node_modules/@types/history/package.json new file mode 100755 index 00000000..bfa46633 --- /dev/null +++ b/node_modules/@types/history/package.json @@ -0,0 +1,40 @@ +{ + "name": "@types/history", + "version": "4.7.11", + "description": "TypeScript definitions for history", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/history", + "license": "MIT", + "contributors": [ + { + "name": "Sergey Buturlakin", + "url": "https://github.com/sergey-buturlakin", + "githubUsername": "sergey-buturlakin" + }, + { + "name": "Nathan Brown", + "url": "https://github.com/ngbrown", + "githubUsername": "ngbrown" + }, + { + "name": "Young Rok Kim", + "url": "https://github.com/rokoroku", + "githubUsername": "rokoroku" + }, + { + "name": "Daniel Nixon", + "url": "https://github.com/danielnixon", + "githubUsername": "danielnixon" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/history" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "141516ba36ab9f2b221dc957cba4ac21d9a06776c05786e6773c5581f8cf7455", + "typeScriptVersion": "3.8" +} \ No newline at end of file diff --git a/node_modules/@types/html-minifier-terser/LICENSE b/node_modules/@types/html-minifier-terser/LICENSE new file mode 100755 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/html-minifier-terser/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/html-minifier-terser/README.md b/node_modules/@types/html-minifier-terser/README.md new file mode 100755 index 00000000..08b0e997 --- /dev/null +++ b/node_modules/@types/html-minifier-terser/README.md @@ -0,0 +1,16 @@ +# Installation +> `npm install --save @types/html-minifier-terser` + +# Summary +This package contains type definitions for html-minifier-terser (https://github.com/terser/html-minifier-terser#readme). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/html-minifier-terser. + +### Additional Details + * Last updated: Tue, 23 Nov 2021 21:01:04 GMT + * Dependencies: none + * Global values: none + +# Credits +These definitions were written by [Piotr Błażejewicz](https://github.com/peterblazejewicz). diff --git a/node_modules/@types/html-minifier-terser/index.d.ts b/node_modules/@types/html-minifier-terser/index.d.ts new file mode 100755 index 00000000..f17a30e2 --- /dev/null +++ b/node_modules/@types/html-minifier-terser/index.d.ts @@ -0,0 +1,211 @@ +// Type definitions for html-minifier-terser 6.1 +// Project: https://github.com/terser/html-minifier-terser#readme +// Definitions by: Piotr Błażejewicz +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/** + * HTMLMinifier is a highly configurable, well-tested, JavaScript-based HTML minifier. + * @async + */ +export function minify(value: string, options?: Options): Promise; + +/** + * Most of the options are disabled by default + */ +export interface Options { + /** + * Treat attributes in case sensitive manner (useful for custom HTML tags) + * @default false + */ + caseSensitive?: boolean | undefined; + /** + * Omit attribute values from boolean attributes + * @default false + */ + collapseBooleanAttributes?: boolean | undefined; + /** + * Don't leave any spaces between display:inline; + * elements when collapsing. Must be used in conjunction with collapseWhitespace=true + * @default false + */ + collapseInlineTagWhitespace?: boolean | undefined; + /** + * Collapse white space that contributes to text nodes in a document tree + * @default false + */ + collapseWhitespace?: boolean | undefined; + /** + * Always collapse to 1 space (never remove it entirely). Must be used in conjunction with `collapseWhitespace=true` + * @default false + */ + conservativeCollapse?: boolean | undefined; + /** + * Handle parse errors + * @default false + */ + continueOnParseError?: boolean | undefined; + /** + * Arrays of regex'es that allow to support custom attribute assign expressions (e.g. `'
'`) + * @default [] + */ + customAttrAssign?: RegExp[] | undefined; + /** + * Regex that specifies custom attribute to strip newlines from (e.g. `/ng-class/` + */ + customAttrCollapse?: RegExp | undefined; + /** + * Arrays of regex'es that allow to support custom attribute surround expressions (e.g. ``) + * @default [] + */ + customAttrSurround?: RegExp[] | undefined; + /** + * Arrays of regex'es that allow to support custom event attributes for `minifyJS` (e.g. `ng-click`) + * @default [/^on[a-z]{3,}$/] + */ + customEventAttributes?: RegExp[] | undefined; + /** + * Use direct Unicode characters whenever possible + * @default false + */ + decodeEntities?: boolean | undefined; + /** + * Parse input according to HTML5 specifications + * @default true + */ + html5?: boolean | undefined; + /** + * Array of regex'es that allow to ignore certain comments, when matched + * @default [ /^!/, /^\s*#/ ] + */ + ignoreCustomComments?: RegExp[] | undefined; + /** + * Array of regex'es that allow to ignore certain fragments, when matched (e.g. ``, `{{ ... }}`, etc.) + * @default [/<%[\s\S]*?%>/, /<\?[\s\S]\*?\?>/] + */ + ignoreCustomFragments?: RegExp[] | undefined; + /** + * Insert tags generated by HTML parser + * @default true + */ + includeAutoGeneratedTags?: boolean | undefined; + /** + * Keep the trailing slash on singleton elements + * @default false + */ + keepClosingSlash?: boolean | undefined; + /** + * Specify a maximum line length. Compressed output will be split by newlines at valid HTML split-points + */ + maxLineLength?: number | undefined; + /** + * Minify CSS in style elements and style attributes + * @default false + */ + minifyCSS?: boolean | object | ((text: string, type?: string) => string) | undefined; + /** + * Minify JavaScript in script elements and event attributes + * @default false + */ + minifyJS?: boolean | object | ((text: string, inline?: boolean) => string) | undefined; + /** + * Minify URLs in various attributes + * @default false + */ + minifyURLs?: boolean | string | object | ((text: string) => string) | undefined; + /** + * Never add a newline before a tag that closes an element + * @default false + */ + noNewlinesBeforeTagClose?: boolean | undefined; + /** + * Always collapse to 1 line break (never remove it entirely) when whitespace between tags include a line break. + * Must be used in conjunction with `collapseWhitespace=true` + * @default false + */ + preserveLineBreaks?: boolean | undefined; + /** + * Prevents the escaping of the values of attributes + * @default false + */ + preventAttributesEscaping?: boolean | undefined; + /** + * Process contents of conditional comments through minifier + * @default false + */ + processConditionalComments?: boolean | undefined; + /** + * Array of strings corresponding to types of script elements to process through minifier + * (e.g. `text/ng-template`, `text/x-handlebars-template`, etc.) + * @default [] + */ + processScripts?: string[] | undefined; + /** + * Type of quote to use for attribute values (' or ") + */ + quoteCharacter?: string | undefined; + /** + * Remove quotes around attributes when possible + * @default false + */ + removeAttributeQuotes?: boolean | undefined; + /** + * Strip HTML comments + * @default false + */ + removeComments?: boolean | undefined; + /** + * Remove all attributes with whitespace-only values + * @default false + */ + removeEmptyAttributes?: boolean | ((attrName: string, tag: string) => boolean) | undefined; + /** + * Remove all elements with empty contents + * @default false + */ + removeEmptyElements?: boolean | undefined; + /** + * Remove optional tags + * @default false + */ + removeOptionalTags?: boolean | undefined; + /** + * Remove attributes when value matches default + * @default false + */ + removeRedundantAttributes?: boolean | undefined; + /** + * Remove `type="text/javascript"` from `script` tags. Other `type` attribute values are left intact + * @default false + */ + removeScriptTypeAttributes?: boolean | undefined; + /** + * Remove `type="text/css"` from `style` and `link` tags. Other `type` attribute values are left intact + * @default false + */ + removeStyleLinkTypeAttributes?: boolean | undefined; + /** + * Remove space between attributes whenever possible. **Note that this will result in invalid HTML!** + * @default false + */ + removeTagWhitespace?: boolean | undefined; + /** + * Sort attributes by frequency + * @default false + */ + sortAttributes?: boolean | undefined; + /** + * Sort style classes by frequency + * @default false + */ + sortClassName?: boolean | undefined; + /** + * Trim white space around `ignoreCustomFragments` + * @default false + */ + trimCustomFragments?: boolean | undefined; + /** + * Replaces the `doctype` with the short (HTML5) doctype + * @default false + */ + useShortDoctype?: boolean | undefined; +} diff --git a/node_modules/@types/html-minifier-terser/package.json b/node_modules/@types/html-minifier-terser/package.json new file mode 100755 index 00000000..80e8ceb2 --- /dev/null +++ b/node_modules/@types/html-minifier-terser/package.json @@ -0,0 +1,25 @@ +{ + "name": "@types/html-minifier-terser", + "version": "6.1.0", + "description": "TypeScript definitions for html-minifier-terser", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/html-minifier-terser", + "license": "MIT", + "contributors": [ + { + "name": "Piotr Błażejewicz", + "url": "https://github.com/peterblazejewicz", + "githubUsername": "peterblazejewicz" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/html-minifier-terser" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "e851f65ded989d19a70b471ff32b156ed08fec7ed641ce4c5a7fdee809bd53e2", + "typeScriptVersion": "3.8" +} \ No newline at end of file diff --git a/node_modules/@types/http-cache-semantics/LICENSE b/node_modules/@types/http-cache-semantics/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/http-cache-semantics/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/http-cache-semantics/README.md b/node_modules/@types/http-cache-semantics/README.md new file mode 100644 index 00000000..c50100bb --- /dev/null +++ b/node_modules/@types/http-cache-semantics/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/http-cache-semantics` + +# Summary +This package contains type definitions for http-cache-semantics (https://github.com/kornelski/http-cache-semantics#readme). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/http-cache-semantics. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 03:09:37 GMT + * Dependencies: none + +# Credits +These definitions were written by [BendingBender](https://github.com/BendingBender). diff --git a/node_modules/@types/http-cache-semantics/index.d.ts b/node_modules/@types/http-cache-semantics/index.d.ts new file mode 100644 index 00000000..b615076f --- /dev/null +++ b/node_modules/@types/http-cache-semantics/index.d.ts @@ -0,0 +1,165 @@ +export = CachePolicy; + +declare class CachePolicy { + constructor(req: CachePolicy.Request, res: CachePolicy.Response, options?: CachePolicy.Options); + + /** + * Returns `true` if the response can be stored in a cache. + * If it's `false` then you MUST NOT store either the request or the response. + */ + storable(): boolean; + + /** + * This is the most important method. Use this method to check whether the cached response is still fresh + * in the context of the new request. + * + * If it returns `true`, then the given `request` matches the original response this cache policy has been + * created with, and the response can be reused without contacting the server. Note that the old response + * can't be returned without being updated, see `responseHeaders()`. + * + * If it returns `false`, then the response may not be matching at all (e.g. it's for a different URL or method), + * or may require to be refreshed first (see `revalidationHeaders()`). + */ + satisfiesWithoutRevalidation(newRequest: CachePolicy.Request): boolean; + + /** + * Returns updated, filtered set of response headers to return to clients receiving the cached response. + * This function is necessary, because proxies MUST always remove hop-by-hop headers (such as `TE` and `Connection`) + * and update response's `Age` to avoid doubling cache time. + * + * @example + * cachedResponse.headers = cachePolicy.responseHeaders(cachedResponse); + */ + responseHeaders(): CachePolicy.Headers; + + /** + * Returns approximate time in milliseconds until the response becomes stale (i.e. not fresh). + * + * After that time (when `timeToLive() <= 0`) the response might not be usable without revalidation. However, + * there are exceptions, e.g. a client can explicitly allow stale responses, so always check with + * `satisfiesWithoutRevalidation()`. + */ + timeToLive(): number; + + /** + * Chances are you'll want to store the `CachePolicy` object along with the cached response. + * `obj = policy.toObject()` gives a plain JSON-serializable object. + */ + toObject(): CachePolicy.CachePolicyObject; + + /** + * `policy = CachePolicy.fromObject(obj)` creates an instance from object created by `toObject()`. + */ + static fromObject(obj: CachePolicy.CachePolicyObject): CachePolicy; + + /** + * Returns updated, filtered set of request headers to send to the origin server to check if the cached + * response can be reused. These headers allow the origin server to return status 304 indicating the + * response is still fresh. All headers unrelated to caching are passed through as-is. + * + * Use this method when updating cache from the origin server. + * + * @example + * updateRequest.headers = cachePolicy.revalidationHeaders(updateRequest); + */ + revalidationHeaders(newRequest: CachePolicy.Request): CachePolicy.Headers; + + /** + * Use this method to update the cache after receiving a new response from the origin server. + */ + revalidatedPolicy( + revalidationRequest: CachePolicy.Request, + revalidationResponse: CachePolicy.Response, + ): CachePolicy.RevalidationPolicy; +} + +declare namespace CachePolicy { + interface Request { + url?: string | undefined; + method?: string | undefined; + headers: Headers; + } + + interface Response { + status?: number | undefined; + headers: Headers; + } + + interface Options { + /** + * If `true`, then the response is evaluated from a perspective of a shared cache (i.e. `private` is not + * cacheable and `s-maxage` is respected). If `false`, then the response is evaluated from a perspective + * of a single-user cache (i.e. `private` is cacheable and `s-maxage` is ignored). + * `true` is recommended for HTTP clients. + * @default true + */ + shared?: boolean | undefined; + /** + * A fraction of response's age that is used as a fallback cache duration. The default is 0.1 (10%), + * e.g. if a file hasn't been modified for 100 days, it'll be cached for 100*0.1 = 10 days. + * @default 0.1 + */ + cacheHeuristic?: number | undefined; + /** + * A number of milliseconds to assume as the default time to cache responses with `Cache-Control: immutable`. + * Note that [per RFC](https://httpwg.org/specs/rfc8246.html#the-immutable-cache-control-extension) + * these can become stale, so `max-age` still overrides the default. + * @default 24*3600*1000 (24h) + */ + immutableMinTimeToLive?: number | undefined; + /** + * If `true`, common anti-cache directives will be completely ignored if the non-standard `pre-check` + * and `post-check` directives are present. These two useless directives are most commonly found + * in bad StackOverflow answers and PHP's "session limiter" defaults. + * @default false + */ + ignoreCargoCult?: boolean | undefined; + /** + * If `false`, then server's `Date` header won't be used as the base for `max-age`. This is against the RFC, + * but it's useful if you want to cache responses with very short `max-age`, but your local clock + * is not exactly in sync with the server's. + * @default true + */ + trustServerDate?: boolean | undefined; + } + + interface CachePolicyObject { + v: number; + t: number; + sh: boolean; + ch: number; + imm: number; + st: number; + resh: Headers; + rescc: { [key: string]: string }; + m: string; + u?: string | undefined; + h?: string | undefined; + a: boolean; + reqh: Headers | null; + reqcc: { [key: string]: string }; + } + + interface Headers { + [header: string]: string | string[] | undefined; + } + + interface RevalidationPolicy { + /** + * A new `CachePolicy` with HTTP headers updated from `revalidationResponse`. You can always replace + * the old cached `CachePolicy` with the new one. + */ + policy: CachePolicy; + /** + * Boolean indicating whether the response body has changed. + * + * - If `false`, then a valid 304 Not Modified response has been received, and you can reuse the old + * cached response body. + * - If `true`, you should use new response's body (if present), or make another request to the origin + * server without any conditional headers (i.e. don't use `revalidationHeaders()` this time) to get + * the new resource. + */ + modified: boolean; + matches: boolean; + } +} diff --git a/node_modules/@types/http-cache-semantics/package.json b/node_modules/@types/http-cache-semantics/package.json new file mode 100644 index 00000000..2753df58 --- /dev/null +++ b/node_modules/@types/http-cache-semantics/package.json @@ -0,0 +1,25 @@ +{ + "name": "@types/http-cache-semantics", + "version": "4.0.4", + "description": "TypeScript definitions for http-cache-semantics", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/http-cache-semantics", + "license": "MIT", + "contributors": [ + { + "name": "BendingBender", + "githubUsername": "BendingBender", + "url": "https://github.com/BendingBender" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/http-cache-semantics" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "6cf8e230d4a5ae72d31765a8facf404307c59791befc65343d177843c7bbae91", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/http-errors/LICENSE b/node_modules/@types/http-errors/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/http-errors/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/http-errors/README.md b/node_modules/@types/http-errors/README.md new file mode 100644 index 00000000..0de54023 --- /dev/null +++ b/node_modules/@types/http-errors/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/http-errors` + +# Summary +This package contains type definitions for http-errors (https://github.com/jshttp/http-errors). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/http-errors. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 03:09:37 GMT + * Dependencies: none + +# Credits +These definitions were written by [Tanguy Krotoff](https://github.com/tkrotoff), and [BendingBender](https://github.com/BendingBender). diff --git a/node_modules/@types/http-errors/index.d.ts b/node_modules/@types/http-errors/index.d.ts new file mode 100644 index 00000000..e7fb2a8d --- /dev/null +++ b/node_modules/@types/http-errors/index.d.ts @@ -0,0 +1,77 @@ +export = createHttpError; + +declare const createHttpError: createHttpError.CreateHttpError & createHttpError.NamedConstructors & { + isHttpError: createHttpError.IsHttpError; +}; + +declare namespace createHttpError { + interface HttpError extends Error { + status: N; + statusCode: N; + expose: boolean; + headers?: { + [key: string]: string; + } | undefined; + [key: string]: any; + } + + type UnknownError = Error | string | { [key: string]: any }; + + interface HttpErrorConstructor { + (msg?: string): HttpError; + new(msg?: string): HttpError; + } + + interface CreateHttpError { + (arg: N, ...rest: UnknownError[]): HttpError; + (...rest: UnknownError[]): HttpError; + } + + type IsHttpError = (error: unknown) => error is HttpError; + + type NamedConstructors = + & { + HttpError: HttpErrorConstructor; + } + & Record<"BadRequest" | "400", HttpErrorConstructor<400>> + & Record<"Unauthorized" | "401", HttpErrorConstructor<401>> + & Record<"PaymentRequired" | "402", HttpErrorConstructor<402>> + & Record<"Forbidden" | "403", HttpErrorConstructor<403>> + & Record<"NotFound" | "404", HttpErrorConstructor<404>> + & Record<"MethodNotAllowed" | "405", HttpErrorConstructor<405>> + & Record<"NotAcceptable" | "406", HttpErrorConstructor<406>> + & Record<"ProxyAuthenticationRequired" | "407", HttpErrorConstructor<407>> + & Record<"RequestTimeout" | "408", HttpErrorConstructor<408>> + & Record<"Conflict" | "409", HttpErrorConstructor<409>> + & Record<"Gone" | "410", HttpErrorConstructor<410>> + & Record<"LengthRequired" | "411", HttpErrorConstructor<411>> + & Record<"PreconditionFailed" | "412", HttpErrorConstructor<412>> + & Record<"PayloadTooLarge" | "413", HttpErrorConstructor<413>> + & Record<"URITooLong" | "414", HttpErrorConstructor<414>> + & Record<"UnsupportedMediaType" | "415", HttpErrorConstructor<415>> + & Record<"RangeNotSatisfiable" | "416", HttpErrorConstructor<416>> + & Record<"ExpectationFailed" | "417", HttpErrorConstructor<417>> + & Record<"ImATeapot" | "418", HttpErrorConstructor<418>> + & Record<"MisdirectedRequest" | "421", HttpErrorConstructor<421>> + & Record<"UnprocessableEntity" | "422", HttpErrorConstructor<422>> + & Record<"Locked" | "423", HttpErrorConstructor<423>> + & Record<"FailedDependency" | "424", HttpErrorConstructor<424>> + & Record<"TooEarly" | "425", HttpErrorConstructor<425>> + & Record<"UpgradeRequired" | "426", HttpErrorConstructor<426>> + & Record<"PreconditionRequired" | "428", HttpErrorConstructor<428>> + & Record<"TooManyRequests" | "429", HttpErrorConstructor<429>> + & Record<"RequestHeaderFieldsTooLarge" | "431", HttpErrorConstructor<431>> + & Record<"UnavailableForLegalReasons" | "451", HttpErrorConstructor<451>> + & Record<"InternalServerError" | "500", HttpErrorConstructor<500>> + & Record<"NotImplemented" | "501", HttpErrorConstructor<501>> + & Record<"BadGateway" | "502", HttpErrorConstructor<502>> + & Record<"ServiceUnavailable" | "503", HttpErrorConstructor<503>> + & Record<"GatewayTimeout" | "504", HttpErrorConstructor<504>> + & Record<"HTTPVersionNotSupported" | "505", HttpErrorConstructor<505>> + & Record<"VariantAlsoNegotiates" | "506", HttpErrorConstructor<506>> + & Record<"InsufficientStorage" | "507", HttpErrorConstructor<507>> + & Record<"LoopDetected" | "508", HttpErrorConstructor<508>> + & Record<"BandwidthLimitExceeded" | "509", HttpErrorConstructor<509>> + & Record<"NotExtended" | "510", HttpErrorConstructor<510>> + & Record<"NetworkAuthenticationRequire" | "511", HttpErrorConstructor<511>>; +} diff --git a/node_modules/@types/http-errors/package.json b/node_modules/@types/http-errors/package.json new file mode 100644 index 00000000..247f9d40 --- /dev/null +++ b/node_modules/@types/http-errors/package.json @@ -0,0 +1,30 @@ +{ + "name": "@types/http-errors", + "version": "2.0.4", + "description": "TypeScript definitions for http-errors", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/http-errors", + "license": "MIT", + "contributors": [ + { + "name": "Tanguy Krotoff", + "githubUsername": "tkrotoff", + "url": "https://github.com/tkrotoff" + }, + { + "name": "BendingBender", + "githubUsername": "BendingBender", + "url": "https://github.com/BendingBender" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/http-errors" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "06e33723b60f818facd3b7dd2025f043142fb7c56ab4832babafeb9470f2086f", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/http-proxy/LICENSE b/node_modules/@types/http-proxy/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/http-proxy/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/http-proxy/README.md b/node_modules/@types/http-proxy/README.md new file mode 100644 index 00000000..a8dbabf6 --- /dev/null +++ b/node_modules/@types/http-proxy/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/http-proxy` + +# Summary +This package contains type definitions for http-proxy (https://github.com/nodejitsu/node-http-proxy). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/http-proxy. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 03:09:37 GMT + * Dependencies: [@types/node](https://npmjs.com/package/@types/node) + +# Credits +These definitions were written by [Maxime LUCE](https://github.com/SomaticIT), [Florian Oellerich](https://github.com/Raigen), [Daniel Schmidt](https://github.com/DanielMSchmidt), [Jordan Abreu](https://github.com/jabreu610), and [Samuel Bodin](https://github.com/bodinsamuel). diff --git a/node_modules/@types/http-proxy/index.d.ts b/node_modules/@types/http-proxy/index.d.ts new file mode 100644 index 00000000..6f3f2a72 --- /dev/null +++ b/node_modules/@types/http-proxy/index.d.ts @@ -0,0 +1,250 @@ +/// + +import * as events from "events"; +import * as http from "http"; +import * as https from "https"; +import * as net from "net"; +import * as stream from "stream"; +import * as url from "url"; + +interface ProxyTargetDetailed { + host: string; + port: number; + protocol?: string | undefined; + hostname?: string | undefined; + socketPath?: string | undefined; + key?: string | undefined; + passphrase?: string | undefined; + pfx?: Buffer | string | undefined; + cert?: string | undefined; + ca?: string | undefined; + ciphers?: string | undefined; + secureProtocol?: string | undefined; +} + +declare class Server + extends events.EventEmitter +{ + /** + * Creates the proxy server with specified options. + * @param options - Config object passed to the proxy + */ + constructor(options?: Server.ServerOptions); + + /** + * Used for proxying regular HTTP(S) requests + * @param req - Client request. + * @param res - Client response. + * @param options - Additional options. + */ + web( + req: http.IncomingMessage, + res: http.ServerResponse, + options?: Server.ServerOptions, + callback?: Server.ErrorCallback, + ): void; + + /** + * Used for proxying regular HTTP(S) requests + * @param req - Client request. + * @param socket - Client socket. + * @param head - Client head. + * @param options - Additionnal options. + */ + ws( + req: http.IncomingMessage, + socket: any, + head: any, + options?: Server.ServerOptions, + callback?: Server.ErrorCallback, + ): void; + + /** + * A function that wraps the object in a webserver, for your convenience + * @param port - Port to listen on + * @param hostname - The hostname to listen on + */ + listen(port: number, hostname?: string): Server; + + /** + * A function that closes the inner webserver and stops listening on given port + */ + close(callback?: () => void): void; + + /** + * Creates the proxy server with specified options. + * @param options Config object passed to the proxy + * @returns Proxy object with handlers for `ws` and `web` requests + */ + // tslint:disable:no-unnecessary-generics + static createProxyServer( + options?: Server.ServerOptions, + ): Server; + + /** + * Creates the proxy server with specified options. + * @param options Config object passed to the proxy + * @returns Proxy object with handlers for `ws` and `web` requests + */ + // tslint:disable:no-unnecessary-generics + static createServer( + options?: Server.ServerOptions, + ): Server; + + /** + * Creates the proxy server with specified options. + * @param options Config object passed to the proxy + * @returns Proxy object with handlers for `ws` and `web` requests + */ + // tslint:disable:no-unnecessary-generics + static createProxy( + options?: Server.ServerOptions, + ): Server; + + addListener(event: string, listener: () => void): this; + on(event: string, listener: () => void): this; + on(event: "error", listener: Server.ErrorCallback): this; + on(event: "start", listener: Server.StartCallback): this; + on( + event: "proxyReq", + listener: Server.ProxyReqCallback, + ): this; + on(event: "proxyRes", listener: Server.ProxyResCallback): this; + on(event: "proxyReqWs", listener: Server.ProxyReqWsCallback): this; + on(event: "econnreset", listener: Server.EconnresetCallback): this; + on(event: "end", listener: Server.EndCallback): this; + on(event: "open", listener: Server.OpenCallback): this; + on(event: "close", listener: Server.CloseCallback): this; + + once(event: string, listener: () => void): this; + once(event: "error", listener: Server.ErrorCallback): this; + once(event: "start", listener: Server.StartCallback): this; + once( + event: "proxyReq", + listener: Server.ProxyReqCallback, + ): this; + once(event: "proxyRes", listener: Server.ProxyResCallback): this; + once(event: "proxyReqWs", listener: Server.ProxyReqWsCallback): this; + once(event: "econnreset", listener: Server.EconnresetCallback): this; + once(event: "end", listener: Server.EndCallback): this; + once(event: "open", listener: Server.OpenCallback): this; + once(event: "close", listener: Server.CloseCallback): this; + removeListener(event: string, listener: () => void): this; + removeAllListeners(event?: string): this; + getMaxListeners(): number; + setMaxListeners(n: number): this; + listeners(event: string): Array<() => void>; + emit(event: string, ...args: any[]): boolean; + listenerCount(type: string): number; +} + +declare namespace Server { + type ProxyTarget = ProxyTargetUrl | ProxyTargetDetailed; + type ProxyTargetUrl = string | Partial; + + interface ServerOptions { + /** URL string to be parsed with the url module. */ + target?: ProxyTarget | undefined; + /** URL string to be parsed with the url module. */ + forward?: ProxyTargetUrl | undefined; + /** Object to be passed to http(s).request. */ + agent?: any; + /** Object to be passed to https.createServer(). */ + ssl?: any; + /** If you want to proxy websockets. */ + ws?: boolean | undefined; + /** Adds x- forward headers. */ + xfwd?: boolean | undefined; + /** Verify SSL certificate. */ + secure?: boolean | undefined; + /** Explicitly specify if we are proxying to another proxy. */ + toProxy?: boolean | undefined; + /** Specify whether you want to prepend the target's path to the proxy path. */ + prependPath?: boolean | undefined; + /** Specify whether you want to ignore the proxy path of the incoming request. */ + ignorePath?: boolean | undefined; + /** Local interface string to bind for outgoing connections. */ + localAddress?: string | undefined; + /** Changes the origin of the host header to the target URL. */ + changeOrigin?: boolean | undefined; + /** specify whether you want to keep letter case of response header key */ + preserveHeaderKeyCase?: boolean | undefined; + /** Basic authentication i.e. 'user:password' to compute an Authorization header. */ + auth?: string | undefined; + /** Rewrites the location hostname on (301 / 302 / 307 / 308) redirects, Default: null. */ + hostRewrite?: string | undefined; + /** Rewrites the location host/ port on (301 / 302 / 307 / 308) redirects based on requested host/ port.Default: false. */ + autoRewrite?: boolean | undefined; + /** Rewrites the location protocol on (301 / 302 / 307 / 308) redirects to 'http' or 'https'.Default: null. */ + protocolRewrite?: string | undefined; + /** rewrites domain of set-cookie headers. */ + cookieDomainRewrite?: false | string | { [oldDomain: string]: string } | undefined; + /** rewrites path of set-cookie headers. Default: false */ + cookiePathRewrite?: false | string | { [oldPath: string]: string } | undefined; + /** object with extra headers to be added to target requests. */ + headers?: { [header: string]: string } | undefined; + /** Timeout (in milliseconds) when proxy receives no response from target. Default: 120000 (2 minutes) */ + proxyTimeout?: number | undefined; + /** Timeout (in milliseconds) for incoming requests */ + timeout?: number | undefined; + /** Specify whether you want to follow redirects. Default: false */ + followRedirects?: boolean | undefined; + /** If set to true, none of the webOutgoing passes are called and it's your responsibility to appropriately return the response by listening and acting on the proxyRes event */ + selfHandleResponse?: boolean | undefined; + /** Buffer */ + buffer?: stream.Stream | undefined; + } + + type StartCallback = ( + req: TIncomingMessage, + res: TServerResponse, + target: ProxyTargetUrl, + ) => void; + type ProxyReqCallback< + TClientRequest = http.ClientRequest, + TIncomingMessage = http.IncomingMessage, + TServerResponse = http.ServerResponse, + > = (proxyReq: TClientRequest, req: TIncomingMessage, res: TServerResponse, options: ServerOptions) => void; + type ProxyResCallback = ( + proxyRes: TIncomingMessage, + req: TIncomingMessage, + res: TServerResponse, + ) => void; + type ProxyReqWsCallback = ( + proxyReq: TClientRequest, + req: TIncomingMessage, + socket: net.Socket, + options: ServerOptions, + head: any, + ) => void; + type EconnresetCallback< + TError = Error, + TIncomingMessage = http.IncomingMessage, + TServerResponse = http.ServerResponse, + > = ( + err: TError, + req: TIncomingMessage, + res: TServerResponse, + target: ProxyTargetUrl, + ) => void; + type EndCallback = ( + req: TIncomingMessage, + res: TServerResponse, + proxyRes: TIncomingMessage, + ) => void; + type OpenCallback = (proxySocket: net.Socket) => void; + type CloseCallback = ( + proxyRes: TIncomingMessage, + proxySocket: net.Socket, + proxyHead: any, + ) => void; + type ErrorCallback = + ( + err: TError, + req: TIncomingMessage, + res: TServerResponse | net.Socket, + target?: ProxyTargetUrl, + ) => void; +} + +export = Server; diff --git a/node_modules/@types/http-proxy/package.json b/node_modules/@types/http-proxy/package.json new file mode 100644 index 00000000..997dcbb0 --- /dev/null +++ b/node_modules/@types/http-proxy/package.json @@ -0,0 +1,47 @@ +{ + "name": "@types/http-proxy", + "version": "1.17.14", + "description": "TypeScript definitions for http-proxy", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/http-proxy", + "license": "MIT", + "contributors": [ + { + "name": "Maxime LUCE", + "githubUsername": "SomaticIT", + "url": "https://github.com/SomaticIT" + }, + { + "name": "Florian Oellerich", + "githubUsername": "Raigen", + "url": "https://github.com/Raigen" + }, + { + "name": "Daniel Schmidt", + "githubUsername": "DanielMSchmidt", + "url": "https://github.com/DanielMSchmidt" + }, + { + "name": "Jordan Abreu", + "githubUsername": "jabreu610", + "url": "https://github.com/jabreu610" + }, + { + "name": "Samuel Bodin", + "githubUsername": "bodinsamuel", + "url": "https://github.com/bodinsamuel" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/http-proxy" + }, + "scripts": {}, + "dependencies": { + "@types/node": "*" + }, + "typesPublisherContentHash": "3e198b1ca48b5a5de433fc322508d2fec21a03c1b52c9470ee47b725146db123", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/istanbul-lib-coverage/LICENSE b/node_modules/@types/istanbul-lib-coverage/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/istanbul-lib-coverage/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/istanbul-lib-coverage/README.md b/node_modules/@types/istanbul-lib-coverage/README.md new file mode 100644 index 00000000..73a62312 --- /dev/null +++ b/node_modules/@types/istanbul-lib-coverage/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/istanbul-lib-coverage` + +# Summary +This package contains type definitions for istanbul-lib-coverage (https://istanbul.js.org). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/istanbul-lib-coverage. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 03:09:37 GMT + * Dependencies: none + +# Credits +These definitions were written by [Jason Cheatham](https://github.com/jason0x43). diff --git a/node_modules/@types/istanbul-lib-coverage/index.d.ts b/node_modules/@types/istanbul-lib-coverage/index.d.ts new file mode 100644 index 00000000..45e580f3 --- /dev/null +++ b/node_modules/@types/istanbul-lib-coverage/index.d.ts @@ -0,0 +1,111 @@ +export interface CoverageSummaryData { + lines: Totals; + statements: Totals; + branches: Totals; + functions: Totals; +} + +export class CoverageSummary { + constructor(data: CoverageSummary | CoverageSummaryData); + merge(obj: CoverageSummary): CoverageSummary; + toJSON(): CoverageSummaryData; + isEmpty(): boolean; + data: CoverageSummaryData; + lines: Totals; + statements: Totals; + branches: Totals; + functions: Totals; +} + +export interface CoverageMapData { + [key: string]: FileCoverage | FileCoverageData; +} + +export class CoverageMap { + constructor(data: CoverageMapData | CoverageMap); + addFileCoverage(pathOrObject: string | FileCoverage | FileCoverageData): void; + files(): string[]; + fileCoverageFor(filename: string): FileCoverage; + filter(callback: (key: string) => boolean): void; + getCoverageSummary(): CoverageSummary; + merge(data: CoverageMapData | CoverageMap): void; + toJSON(): CoverageMapData; + data: CoverageMapData; +} + +export interface Location { + line: number; + column: number; +} + +export interface Range { + start: Location; + end: Location; +} + +export interface BranchMapping { + loc: Range; + type: string; + locations: Range[]; + line: number; +} + +export interface FunctionMapping { + name: string; + decl: Range; + loc: Range; + line: number; +} + +export interface FileCoverageData { + path: string; + statementMap: { [key: string]: Range }; + fnMap: { [key: string]: FunctionMapping }; + branchMap: { [key: string]: BranchMapping }; + s: { [key: string]: number }; + f: { [key: string]: number }; + b: { [key: string]: number[] }; +} + +export interface Totals { + total: number; + covered: number; + skipped: number; + pct: number; +} + +export interface Coverage { + covered: number; + total: number; + coverage: number; +} + +export class FileCoverage implements FileCoverageData { + constructor(data: string | FileCoverage | FileCoverageData); + merge(other: FileCoverageData): void; + getBranchCoverageByLine(): { [line: number]: Coverage }; + getLineCoverage(): { [line: number]: number }; + getUncoveredLines(): number[]; + resetHits(): void; + computeBranchTotals(): Totals; + computeSimpleTotals(): Totals; + toSummary(): CoverageSummary; + toJSON(): object; + + data: FileCoverageData; + path: string; + statementMap: { [key: string]: Range }; + fnMap: { [key: string]: FunctionMapping }; + branchMap: { [key: string]: BranchMapping }; + s: { [key: string]: number }; + f: { [key: string]: number }; + b: { [key: string]: number[] }; +} + +export const classes: { + FileCoverage: FileCoverage; +}; + +export function createCoverageMap(data?: CoverageMap | CoverageMapData): CoverageMap; +export function createCoverageSummary(obj?: CoverageSummary | CoverageSummaryData): CoverageSummary; +export function createFileCoverage(pathOrObject: string | FileCoverage | FileCoverageData): FileCoverage; diff --git a/node_modules/@types/istanbul-lib-coverage/package.json b/node_modules/@types/istanbul-lib-coverage/package.json new file mode 100644 index 00000000..b30f3d4a --- /dev/null +++ b/node_modules/@types/istanbul-lib-coverage/package.json @@ -0,0 +1,25 @@ +{ + "name": "@types/istanbul-lib-coverage", + "version": "2.0.6", + "description": "TypeScript definitions for istanbul-lib-coverage", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/istanbul-lib-coverage", + "license": "MIT", + "contributors": [ + { + "name": "Jason Cheatham", + "githubUsername": "jason0x43", + "url": "https://github.com/jason0x43" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/istanbul-lib-coverage" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "36c823c8b3f66dab91254b0f7299de71768ad8836bfbfcaa062409dd86fbbd61", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/istanbul-lib-report/LICENSE b/node_modules/@types/istanbul-lib-report/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/istanbul-lib-report/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/istanbul-lib-report/README.md b/node_modules/@types/istanbul-lib-report/README.md new file mode 100644 index 00000000..26baae19 --- /dev/null +++ b/node_modules/@types/istanbul-lib-report/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/istanbul-lib-report` + +# Summary +This package contains type definitions for istanbul-lib-report (https://istanbul.js.org). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/istanbul-lib-report. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 03:09:37 GMT + * Dependencies: [@types/istanbul-lib-coverage](https://npmjs.com/package/@types/istanbul-lib-coverage) + +# Credits +These definitions were written by [Jason Cheatham](https://github.com/jason0x43), and [Zacharias Björngren](https://github.com/zache). diff --git a/node_modules/@types/istanbul-lib-report/index.d.ts b/node_modules/@types/istanbul-lib-report/index.d.ts new file mode 100644 index 00000000..f16697e8 --- /dev/null +++ b/node_modules/@types/istanbul-lib-report/index.d.ts @@ -0,0 +1,184 @@ +import { CoverageMap, CoverageSummary, FileCoverage } from "istanbul-lib-coverage"; + +/** + * returns a reporting context for the supplied options + */ +export function createContext(options?: Partial): Context; +/** + * returns the default watermarks that would be used when not + * overridden + */ +export function getDefaultWatermarks(): Watermarks; +export class ReportBase { + constructor(options?: Partial); + execute(context: Context): void; +} + +export interface ReportBaseOptions { + summarizer: Summarizers; +} + +export type Summarizers = "flat" | "nested" | "pkg" | "defaultSummarizer"; + +export interface ContextOptions { + coverageMap: CoverageMap; + defaultSummarizer: Summarizers; + dir: string; + watermarks: Partial; + sourceFinder(filepath: string): string; +} + +export interface Context { + data: any; + dir: string; + sourceFinder(filepath: string): string; + watermarks: Watermarks; + writer: FileWriter; + /** + * returns the coverage class given a coverage + * types and a percentage value. + */ + classForPercent(type: keyof Watermarks, value: number): string; + /** + * returns the source code for the specified file path or throws if + * the source could not be found. + */ + getSource(filepath: string): string; + getTree(summarizer?: Summarizers): Tree; + /** + * returns a full visitor given a partial one. + */ + getVisitor(visitor: Partial>): Visitor; + /** + * returns a FileWriter implementation for reporting use. Also available + * as the `writer` property on the context. + */ + getWriter(): FileWriter; + /** + * returns an XML writer for the supplied content writer + */ + getXmlWriter(contentWriter: ContentWriter): XmlWriter; +} + +/** + * Base class for writing content + */ +export class ContentWriter { + /** + * returns the colorized version of a string. Typically, + * content writers that write to files will return the + * same string and ones writing to a tty will wrap it in + * appropriate escape sequences. + */ + colorize(str: string, clazz?: string): string; + /** + * writes a string appended with a newline to the destination + */ + println(str: string): void; + /** + * closes this content writer. Should be called after all writes are complete. + */ + close(): void; +} + +/** + * a content writer that writes to a file + */ +export class FileContentWriter extends ContentWriter { + constructor(fileDescriptor: number); + write(str: string): void; +} + +/** + * a content writer that writes to the console + */ +export class ConsoleWriter extends ContentWriter { + write(str: string): void; +} + +/** + * utility for writing files under a specific directory + */ +export class FileWriter { + constructor(baseDir: string); + static startCapture(): void; + static stopCapture(): void; + static getOutput(): string; + static resetOutput(): void; + /** + * returns a FileWriter that is rooted at the supplied subdirectory + */ + writeForDir(subdir: string): FileWriter; + /** + * copies a file from a source directory to a destination name + */ + copyFile(source: string, dest: string, header?: string): void; + /** + * returns a content writer for writing content to the supplied file. + */ + writeFile(file: string | null): ContentWriter; +} + +export interface XmlWriter { + indent(str: string): string; + /** + * writes the opening XML tag with the supplied attributes + */ + openTag(name: string, attrs?: any): void; + /** + * closes an open XML tag. + */ + closeTag(name: string): void; + /** + * writes a tag and its value opening and closing it at the same time + */ + inlineTag(name: string, attrs?: any, content?: string): void; + /** + * closes all open tags and ends the document + */ + closeAll(): void; +} + +export type Watermark = [number, number]; + +export interface Watermarks { + statements: Watermark; + functions: Watermark; + branches: Watermark; + lines: Watermark; +} + +export interface Node { + isRoot(): boolean; + visit(visitor: Visitor, state: any): void; +} + +export interface ReportNode extends Node { + path: string; + parent: ReportNode | null; + fileCoverage: FileCoverage; + children: ReportNode[]; + addChild(child: ReportNode): void; + asRelative(p: string): string; + getQualifiedName(): string; + getRelativeName(): string; + getParent(): Node; + getChildren(): Node[]; + isSummary(): boolean; + getFileCoverage(): FileCoverage; + getCoverageSummary(filesOnly: boolean): CoverageSummary; + visit(visitor: Visitor, state: any): void; +} + +export interface Visitor { + onStart(root: N, state: any): void; + onSummary(root: N, state: any): void; + onDetail(root: N, state: any): void; + onSummaryEnd(root: N, state: any): void; + onEnd(root: N, state: any): void; +} + +export interface Tree { + getRoot(): N; + visit(visitor: Partial>, state: any): void; +} diff --git a/node_modules/@types/istanbul-lib-report/package.json b/node_modules/@types/istanbul-lib-report/package.json new file mode 100644 index 00000000..8983cfa8 --- /dev/null +++ b/node_modules/@types/istanbul-lib-report/package.json @@ -0,0 +1,32 @@ +{ + "name": "@types/istanbul-lib-report", + "version": "3.0.3", + "description": "TypeScript definitions for istanbul-lib-report", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/istanbul-lib-report", + "license": "MIT", + "contributors": [ + { + "name": "Jason Cheatham", + "githubUsername": "jason0x43", + "url": "https://github.com/jason0x43" + }, + { + "name": "Zacharias Björngren", + "githubUsername": "zache", + "url": "https://github.com/zache" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/istanbul-lib-report" + }, + "scripts": {}, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + }, + "typesPublisherContentHash": "7036cfd1108c02c3ceec9ffab2cbc424c76e2cafd694c550037d808bf66e3946", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/istanbul-reports/LICENSE b/node_modules/@types/istanbul-reports/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/istanbul-reports/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/istanbul-reports/README.md b/node_modules/@types/istanbul-reports/README.md new file mode 100644 index 00000000..8a4946c1 --- /dev/null +++ b/node_modules/@types/istanbul-reports/README.md @@ -0,0 +1,86 @@ +# Installation +> `npm install --save @types/istanbul-reports` + +# Summary +This package contains type definitions for istanbul-reports (https://github.com/istanbuljs/istanbuljs). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/istanbul-reports. +## [index.d.ts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/istanbul-reports/index.d.ts) +````ts +import { Node, ReportBase } from "istanbul-lib-report"; + +export function create(name: T, options?: Partial): ReportBase; + +export interface FileOptions { + file: string; +} + +export interface ProjectOptions { + projectRoot: string; +} + +export interface ReportOptions { + clover: CloverOptions; + cobertura: CoberturaOptions; + "html-spa": HtmlSpaOptions; + html: HtmlOptions; + json: JsonOptions; + "json-summary": JsonSummaryOptions; + lcov: LcovOptions; + lcovonly: LcovOnlyOptions; + none: never; + teamcity: TeamcityOptions; + text: TextOptions; + "text-lcov": TextLcovOptions; + "text-summary": TextSummaryOptions; +} + +export type ReportType = keyof ReportOptions; + +export interface CloverOptions extends FileOptions, ProjectOptions {} + +export interface CoberturaOptions extends FileOptions, ProjectOptions {} + +export interface HtmlSpaOptions extends HtmlOptions { + metricsToShow: Array<"lines" | "branches" | "functions" | "statements">; +} +export interface HtmlOptions { + verbose: boolean; + skipEmpty: boolean; + subdir: string; + linkMapper: LinkMapper; +} + +export type JsonOptions = FileOptions; +export type JsonSummaryOptions = FileOptions; + +export interface LcovOptions extends FileOptions, ProjectOptions {} +export interface LcovOnlyOptions extends FileOptions, ProjectOptions {} + +export interface TeamcityOptions extends FileOptions { + blockName: string; +} + +export interface TextOptions extends FileOptions { + maxCols: number; + skipEmpty: boolean; + skipFull: boolean; +} +export type TextLcovOptions = ProjectOptions; +export type TextSummaryOptions = FileOptions; + +export interface LinkMapper { + getPath(node: string | Node): string; + relativePath(source: string | Node, target: string | Node): string; + assetPath(node: Node, name: string): string; +} + +```` + +### Additional Details + * Last updated: Tue, 07 Nov 2023 03:09:37 GMT + * Dependencies: [@types/istanbul-lib-report](https://npmjs.com/package/@types/istanbul-lib-report) + +# Credits +These definitions were written by [Jason Cheatham](https://github.com/jason0x43), and [Elena Shcherbakova](https://github.com/not-a-doctor). diff --git a/node_modules/@types/istanbul-reports/index.d.ts b/node_modules/@types/istanbul-reports/index.d.ts new file mode 100644 index 00000000..4c6e4eea --- /dev/null +++ b/node_modules/@types/istanbul-reports/index.d.ts @@ -0,0 +1,67 @@ +import { Node, ReportBase } from "istanbul-lib-report"; + +export function create(name: T, options?: Partial): ReportBase; + +export interface FileOptions { + file: string; +} + +export interface ProjectOptions { + projectRoot: string; +} + +export interface ReportOptions { + clover: CloverOptions; + cobertura: CoberturaOptions; + "html-spa": HtmlSpaOptions; + html: HtmlOptions; + json: JsonOptions; + "json-summary": JsonSummaryOptions; + lcov: LcovOptions; + lcovonly: LcovOnlyOptions; + none: never; + teamcity: TeamcityOptions; + text: TextOptions; + "text-lcov": TextLcovOptions; + "text-summary": TextSummaryOptions; +} + +export type ReportType = keyof ReportOptions; + +export interface CloverOptions extends FileOptions, ProjectOptions {} + +export interface CoberturaOptions extends FileOptions, ProjectOptions {} + +export interface HtmlSpaOptions extends HtmlOptions { + metricsToShow: Array<"lines" | "branches" | "functions" | "statements">; +} +export interface HtmlOptions { + verbose: boolean; + skipEmpty: boolean; + subdir: string; + linkMapper: LinkMapper; +} + +export type JsonOptions = FileOptions; +export type JsonSummaryOptions = FileOptions; + +export interface LcovOptions extends FileOptions, ProjectOptions {} +export interface LcovOnlyOptions extends FileOptions, ProjectOptions {} + +export interface TeamcityOptions extends FileOptions { + blockName: string; +} + +export interface TextOptions extends FileOptions { + maxCols: number; + skipEmpty: boolean; + skipFull: boolean; +} +export type TextLcovOptions = ProjectOptions; +export type TextSummaryOptions = FileOptions; + +export interface LinkMapper { + getPath(node: string | Node): string; + relativePath(source: string | Node, target: string | Node): string; + assetPath(node: Node, name: string): string; +} diff --git a/node_modules/@types/istanbul-reports/package.json b/node_modules/@types/istanbul-reports/package.json new file mode 100644 index 00000000..ec3c20af --- /dev/null +++ b/node_modules/@types/istanbul-reports/package.json @@ -0,0 +1,32 @@ +{ + "name": "@types/istanbul-reports", + "version": "3.0.4", + "description": "TypeScript definitions for istanbul-reports", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/istanbul-reports", + "license": "MIT", + "contributors": [ + { + "name": "Jason Cheatham", + "githubUsername": "jason0x43", + "url": "https://github.com/jason0x43" + }, + { + "name": "Elena Shcherbakova", + "githubUsername": "not-a-doctor", + "url": "https://github.com/not-a-doctor" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/istanbul-reports" + }, + "scripts": {}, + "dependencies": { + "@types/istanbul-lib-report": "*" + }, + "typesPublisherContentHash": "27b4219ea922d9218dd987cb99b49d7fc77c568322e7102565050323987fa6db", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/json-schema/LICENSE b/node_modules/@types/json-schema/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/json-schema/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/json-schema/README.md b/node_modules/@types/json-schema/README.md new file mode 100644 index 00000000..78c610f0 --- /dev/null +++ b/node_modules/@types/json-schema/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/json-schema` + +# Summary +This package contains type definitions for json-schema (https://github.com/kriszyp/json-schema). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/json-schema. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 03:09:37 GMT + * Dependencies: none + +# Credits +These definitions were written by [Boris Cherny](https://github.com/bcherny), [Lucian Buzzo](https://github.com/lucianbuzzo), [Roland Groza](https://github.com/rolandjitsu), and [Jason Kwok](https://github.com/JasonHK). diff --git a/node_modules/@types/json-schema/index.d.ts b/node_modules/@types/json-schema/index.d.ts new file mode 100644 index 00000000..9381e999 --- /dev/null +++ b/node_modules/@types/json-schema/index.d.ts @@ -0,0 +1,749 @@ +// ================================================================================================== +// JSON Schema Draft 04 +// ================================================================================================== + +/** + * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1 + */ +export type JSONSchema4TypeName = + | "string" // + | "number" + | "integer" + | "boolean" + | "object" + | "array" + | "null" + | "any"; + +/** + * @see https://tools.ietf.org/html/draft-zyp-json-schema-04#section-3.5 + */ +export type JSONSchema4Type = + | string // + | number + | boolean + | JSONSchema4Object + | JSONSchema4Array + | null; + +// Workaround for infinite type recursion +export interface JSONSchema4Object { + [key: string]: JSONSchema4Type; +} + +// Workaround for infinite type recursion +// https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540 +export interface JSONSchema4Array extends Array {} + +/** + * Meta schema + * + * Recommended values: + * - 'http://json-schema.org/schema#' + * - 'http://json-schema.org/hyper-schema#' + * - 'http://json-schema.org/draft-04/schema#' + * - 'http://json-schema.org/draft-04/hyper-schema#' + * - 'http://json-schema.org/draft-03/schema#' + * - 'http://json-schema.org/draft-03/hyper-schema#' + * + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-5 + */ +export type JSONSchema4Version = string; + +/** + * JSON Schema V4 + * @see https://tools.ietf.org/html/draft-zyp-json-schema-04 + */ +export interface JSONSchema4 { + id?: string | undefined; + $ref?: string | undefined; + $schema?: JSONSchema4Version | undefined; + + /** + * This attribute is a string that provides a short description of the + * instance property. + * + * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.21 + */ + title?: string | undefined; + + /** + * This attribute is a string that provides a full description of the of + * purpose the instance property. + * + * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.22 + */ + description?: string | undefined; + + default?: JSONSchema4Type | undefined; + multipleOf?: number | undefined; + maximum?: number | undefined; + exclusiveMaximum?: boolean | undefined; + minimum?: number | undefined; + exclusiveMinimum?: boolean | undefined; + maxLength?: number | undefined; + minLength?: number | undefined; + pattern?: string | undefined; + + /** + * May only be defined when "items" is defined, and is a tuple of JSONSchemas. + * + * This provides a definition for additional items in an array instance + * when tuple definitions of the items is provided. This can be false + * to indicate additional items in the array are not allowed, or it can + * be a schema that defines the schema of the additional items. + * + * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.6 + */ + additionalItems?: boolean | JSONSchema4 | undefined; + + /** + * This attribute defines the allowed items in an instance array, and + * MUST be a schema or an array of schemas. The default value is an + * empty schema which allows any value for items in the instance array. + * + * When this attribute value is a schema and the instance value is an + * array, then all the items in the array MUST be valid according to the + * schema. + * + * When this attribute value is an array of schemas and the instance + * value is an array, each position in the instance array MUST conform + * to the schema in the corresponding position for this array. This + * called tuple typing. When tuple typing is used, additional items are + * allowed, disallowed, or constrained by the "additionalItems" + * (Section 5.6) attribute using the same rules as + * "additionalProperties" (Section 5.4) for objects. + * + * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.5 + */ + items?: JSONSchema4 | JSONSchema4[] | undefined; + + maxItems?: number | undefined; + minItems?: number | undefined; + uniqueItems?: boolean | undefined; + maxProperties?: number | undefined; + minProperties?: number | undefined; + + /** + * This attribute indicates if the instance must have a value, and not + * be undefined. This is false by default, making the instance + * optional. + * + * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.7 + */ + required?: boolean | string[] | undefined; + + /** + * This attribute defines a schema for all properties that are not + * explicitly defined in an object type definition. If specified, the + * value MUST be a schema or a boolean. If false is provided, no + * additional properties are allowed beyond the properties defined in + * the schema. The default value is an empty schema which allows any + * value for additional properties. + * + * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.4 + */ + additionalProperties?: boolean | JSONSchema4 | undefined; + + definitions?: { + [k: string]: JSONSchema4; + } | undefined; + + /** + * This attribute is an object with property definitions that define the + * valid values of instance object property values. When the instance + * value is an object, the property values of the instance object MUST + * conform to the property definitions in this object. In this object, + * each property definition's value MUST be a schema, and the property's + * name MUST be the name of the instance property that it defines. The + * instance property value MUST be valid according to the schema from + * the property definition. Properties are considered unordered, the + * order of the instance properties MAY be in any order. + * + * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.2 + */ + properties?: { + [k: string]: JSONSchema4; + } | undefined; + + /** + * This attribute is an object that defines the schema for a set of + * property names of an object instance. The name of each property of + * this attribute's object is a regular expression pattern in the ECMA + * 262/Perl 5 format, while the value is a schema. If the pattern + * matches the name of a property on the instance object, the value of + * the instance's property MUST be valid against the pattern name's + * schema value. + * + * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.3 + */ + patternProperties?: { + [k: string]: JSONSchema4; + } | undefined; + dependencies?: { + [k: string]: JSONSchema4 | string[]; + } | undefined; + + /** + * This provides an enumeration of all possible values that are valid + * for the instance property. This MUST be an array, and each item in + * the array represents a possible value for the instance value. If + * this attribute is defined, the instance value MUST be one of the + * values in the array in order for the schema to be valid. + * + * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.19 + */ + enum?: JSONSchema4Type[] | undefined; + + /** + * A single type, or a union of simple types + */ + type?: JSONSchema4TypeName | JSONSchema4TypeName[] | undefined; + + allOf?: JSONSchema4[] | undefined; + anyOf?: JSONSchema4[] | undefined; + oneOf?: JSONSchema4[] | undefined; + not?: JSONSchema4 | undefined; + + /** + * The value of this property MUST be another schema which will provide + * a base schema which the current schema will inherit from. The + * inheritance rules are such that any instance that is valid according + * to the current schema MUST be valid according to the referenced + * schema. This MAY also be an array, in which case, the instance MUST + * be valid for all the schemas in the array. A schema that extends + * another schema MAY define additional attributes, constrain existing + * attributes, or add other constraints. + * + * Conceptually, the behavior of extends can be seen as validating an + * instance against all constraints in the extending schema as well as + * the extended schema(s). + * + * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.26 + */ + extends?: string | string[] | undefined; + + /** + * @see https://tools.ietf.org/html/draft-zyp-json-schema-04#section-5.6 + */ + [k: string]: any; + + format?: string | undefined; +} + +// ================================================================================================== +// JSON Schema Draft 06 +// ================================================================================================== + +export type JSONSchema6TypeName = + | "string" // + | "number" + | "integer" + | "boolean" + | "object" + | "array" + | "null" + | "any"; + +export type JSONSchema6Type = + | string // + | number + | boolean + | JSONSchema6Object + | JSONSchema6Array + | null; + +// Workaround for infinite type recursion +export interface JSONSchema6Object { + [key: string]: JSONSchema6Type; +} + +// Workaround for infinite type recursion +// https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540 +export interface JSONSchema6Array extends Array {} + +/** + * Meta schema + * + * Recommended values: + * - 'http://json-schema.org/schema#' + * - 'http://json-schema.org/hyper-schema#' + * - 'http://json-schema.org/draft-06/schema#' + * - 'http://json-schema.org/draft-06/hyper-schema#' + * + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-5 + */ +export type JSONSchema6Version = string; + +/** + * JSON Schema V6 + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01 + */ +export type JSONSchema6Definition = JSONSchema6 | boolean; +export interface JSONSchema6 { + $id?: string | undefined; + $ref?: string | undefined; + $schema?: JSONSchema6Version | undefined; + + /** + * Must be strictly greater than 0. + * A numeric instance is valid only if division by this keyword's value results in an integer. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.1 + */ + multipleOf?: number | undefined; + + /** + * Representing an inclusive upper limit for a numeric instance. + * This keyword validates only if the instance is less than or exactly equal to "maximum". + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.2 + */ + maximum?: number | undefined; + + /** + * Representing an exclusive upper limit for a numeric instance. + * This keyword validates only if the instance is strictly less than (not equal to) to "exclusiveMaximum". + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.3 + */ + exclusiveMaximum?: number | undefined; + + /** + * Representing an inclusive lower limit for a numeric instance. + * This keyword validates only if the instance is greater than or exactly equal to "minimum". + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.4 + */ + minimum?: number | undefined; + + /** + * Representing an exclusive lower limit for a numeric instance. + * This keyword validates only if the instance is strictly greater than (not equal to) to "exclusiveMinimum". + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.5 + */ + exclusiveMinimum?: number | undefined; + + /** + * Must be a non-negative integer. + * A string instance is valid against this keyword if its length is less than, or equal to, the value of this keyword. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.6 + */ + maxLength?: number | undefined; + + /** + * Must be a non-negative integer. + * A string instance is valid against this keyword if its length is greater than, or equal to, the value of this keyword. + * Omitting this keyword has the same behavior as a value of 0. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.7 + */ + minLength?: number | undefined; + + /** + * Should be a valid regular expression, according to the ECMA 262 regular expression dialect. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.8 + */ + pattern?: string | undefined; + + /** + * This keyword determines how child instances validate for arrays, and does not directly validate the immediate instance itself. + * Omitting this keyword has the same behavior as an empty schema. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.9 + */ + items?: JSONSchema6Definition | JSONSchema6Definition[] | undefined; + + /** + * This keyword determines how child instances validate for arrays, and does not directly validate the immediate instance itself. + * If "items" is an array of schemas, validation succeeds if every instance element + * at a position greater than the size of "items" validates against "additionalItems". + * Otherwise, "additionalItems" MUST be ignored, as the "items" schema + * (possibly the default value of an empty schema) is applied to all elements. + * Omitting this keyword has the same behavior as an empty schema. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.10 + */ + additionalItems?: JSONSchema6Definition | undefined; + + /** + * Must be a non-negative integer. + * An array instance is valid against "maxItems" if its size is less than, or equal to, the value of this keyword. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.11 + */ + maxItems?: number | undefined; + + /** + * Must be a non-negative integer. + * An array instance is valid against "maxItems" if its size is greater than, or equal to, the value of this keyword. + * Omitting this keyword has the same behavior as a value of 0. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.12 + */ + minItems?: number | undefined; + + /** + * If this keyword has boolean value false, the instance validates successfully. + * If it has boolean value true, the instance validates successfully if all of its elements are unique. + * Omitting this keyword has the same behavior as a value of false. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.13 + */ + uniqueItems?: boolean | undefined; + + /** + * An array instance is valid against "contains" if at least one of its elements is valid against the given schema. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.14 + */ + contains?: JSONSchema6Definition | undefined; + + /** + * Must be a non-negative integer. + * An object instance is valid against "maxProperties" if its number of properties is less than, or equal to, the value of this keyword. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.15 + */ + maxProperties?: number | undefined; + + /** + * Must be a non-negative integer. + * An object instance is valid against "maxProperties" if its number of properties is greater than, + * or equal to, the value of this keyword. + * Omitting this keyword has the same behavior as a value of 0. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.16 + */ + minProperties?: number | undefined; + + /** + * Elements of this array must be unique. + * An object instance is valid against this keyword if every item in the array is the name of a property in the instance. + * Omitting this keyword has the same behavior as an empty array. + * + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.17 + */ + required?: string[] | undefined; + + /** + * This keyword determines how child instances validate for objects, and does not directly validate the immediate instance itself. + * Validation succeeds if, for each name that appears in both the instance and as a name within this keyword's value, + * the child instance for that name successfully validates against the corresponding schema. + * Omitting this keyword has the same behavior as an empty object. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.18 + */ + properties?: { + [k: string]: JSONSchema6Definition; + } | undefined; + + /** + * This attribute is an object that defines the schema for a set of property names of an object instance. + * The name of each property of this attribute's object is a regular expression pattern in the ECMA 262, while the value is a schema. + * If the pattern matches the name of a property on the instance object, the value of the instance's property + * MUST be valid against the pattern name's schema value. + * Omitting this keyword has the same behavior as an empty object. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.19 + */ + patternProperties?: { + [k: string]: JSONSchema6Definition; + } | undefined; + + /** + * This attribute defines a schema for all properties that are not explicitly defined in an object type definition. + * If specified, the value MUST be a schema or a boolean. + * If false is provided, no additional properties are allowed beyond the properties defined in the schema. + * The default value is an empty schema which allows any value for additional properties. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.20 + */ + additionalProperties?: JSONSchema6Definition | undefined; + + /** + * This keyword specifies rules that are evaluated if the instance is an object and contains a certain property. + * Each property specifies a dependency. + * If the dependency value is an array, each element in the array must be unique. + * Omitting this keyword has the same behavior as an empty object. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.21 + */ + dependencies?: { + [k: string]: JSONSchema6Definition | string[]; + } | undefined; + + /** + * Takes a schema which validates the names of all properties rather than their values. + * Note the property name that the schema is testing will always be a string. + * Omitting this keyword has the same behavior as an empty schema. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.22 + */ + propertyNames?: JSONSchema6Definition | undefined; + + /** + * This provides an enumeration of all possible values that are valid + * for the instance property. This MUST be an array, and each item in + * the array represents a possible value for the instance value. If + * this attribute is defined, the instance value MUST be one of the + * values in the array in order for the schema to be valid. + * + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.23 + */ + enum?: JSONSchema6Type[] | undefined; + + /** + * More readable form of a one-element "enum" + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.24 + */ + const?: JSONSchema6Type | undefined; + + /** + * A single type, or a union of simple types + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.25 + */ + type?: JSONSchema6TypeName | JSONSchema6TypeName[] | undefined; + + /** + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.26 + */ + allOf?: JSONSchema6Definition[] | undefined; + + /** + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.27 + */ + anyOf?: JSONSchema6Definition[] | undefined; + + /** + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.28 + */ + oneOf?: JSONSchema6Definition[] | undefined; + + /** + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.29 + */ + not?: JSONSchema6Definition | undefined; + + /** + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-7.1 + */ + definitions?: { + [k: string]: JSONSchema6Definition; + } | undefined; + + /** + * This attribute is a string that provides a short description of the instance property. + * + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-7.2 + */ + title?: string | undefined; + + /** + * This attribute is a string that provides a full description of the of purpose the instance property. + * + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-7.2 + */ + description?: string | undefined; + + /** + * This keyword can be used to supply a default JSON value associated with a particular schema. + * It is RECOMMENDED that a default value be valid against the associated schema. + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-7.3 + */ + default?: JSONSchema6Type | undefined; + + /** + * Array of examples with no validation effect the value of "default" is usable as an example without repeating it under this keyword + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-7.4 + */ + examples?: JSONSchema6Type[] | undefined; + + /** + * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-8 + */ + format?: string | undefined; +} + +// ================================================================================================== +// JSON Schema Draft 07 +// ================================================================================================== +// https://tools.ietf.org/html/draft-handrews-json-schema-validation-01 +// -------------------------------------------------------------------------------------------------- + +/** + * Primitive type + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.1.1 + */ +export type JSONSchema7TypeName = + | "string" // + | "number" + | "integer" + | "boolean" + | "object" + | "array" + | "null"; + +/** + * Primitive type + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.1.1 + */ +export type JSONSchema7Type = + | string // + | number + | boolean + | JSONSchema7Object + | JSONSchema7Array + | null; + +// Workaround for infinite type recursion +export interface JSONSchema7Object { + [key: string]: JSONSchema7Type; +} + +// Workaround for infinite type recursion +// https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540 +export interface JSONSchema7Array extends Array {} + +/** + * Meta schema + * + * Recommended values: + * - 'http://json-schema.org/schema#' + * - 'http://json-schema.org/hyper-schema#' + * - 'http://json-schema.org/draft-07/schema#' + * - 'http://json-schema.org/draft-07/hyper-schema#' + * + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-5 + */ +export type JSONSchema7Version = string; + +/** + * JSON Schema v7 + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01 + */ +export type JSONSchema7Definition = JSONSchema7 | boolean; +export interface JSONSchema7 { + $id?: string | undefined; + $ref?: string | undefined; + $schema?: JSONSchema7Version | undefined; + $comment?: string | undefined; + + /** + * @see https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-00#section-8.2.4 + * @see https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#appendix-A + */ + $defs?: { + [key: string]: JSONSchema7Definition; + } | undefined; + + /** + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.1 + */ + type?: JSONSchema7TypeName | JSONSchema7TypeName[] | undefined; + enum?: JSONSchema7Type[] | undefined; + const?: JSONSchema7Type | undefined; + + /** + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.2 + */ + multipleOf?: number | undefined; + maximum?: number | undefined; + exclusiveMaximum?: number | undefined; + minimum?: number | undefined; + exclusiveMinimum?: number | undefined; + + /** + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.3 + */ + maxLength?: number | undefined; + minLength?: number | undefined; + pattern?: string | undefined; + + /** + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.4 + */ + items?: JSONSchema7Definition | JSONSchema7Definition[] | undefined; + additionalItems?: JSONSchema7Definition | undefined; + maxItems?: number | undefined; + minItems?: number | undefined; + uniqueItems?: boolean | undefined; + contains?: JSONSchema7Definition | undefined; + + /** + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.5 + */ + maxProperties?: number | undefined; + minProperties?: number | undefined; + required?: string[] | undefined; + properties?: { + [key: string]: JSONSchema7Definition; + } | undefined; + patternProperties?: { + [key: string]: JSONSchema7Definition; + } | undefined; + additionalProperties?: JSONSchema7Definition | undefined; + dependencies?: { + [key: string]: JSONSchema7Definition | string[]; + } | undefined; + propertyNames?: JSONSchema7Definition | undefined; + + /** + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.6 + */ + if?: JSONSchema7Definition | undefined; + then?: JSONSchema7Definition | undefined; + else?: JSONSchema7Definition | undefined; + + /** + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.7 + */ + allOf?: JSONSchema7Definition[] | undefined; + anyOf?: JSONSchema7Definition[] | undefined; + oneOf?: JSONSchema7Definition[] | undefined; + not?: JSONSchema7Definition | undefined; + + /** + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7 + */ + format?: string | undefined; + + /** + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-8 + */ + contentMediaType?: string | undefined; + contentEncoding?: string | undefined; + + /** + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-9 + */ + definitions?: { + [key: string]: JSONSchema7Definition; + } | undefined; + + /** + * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-10 + */ + title?: string | undefined; + description?: string | undefined; + default?: JSONSchema7Type | undefined; + readOnly?: boolean | undefined; + writeOnly?: boolean | undefined; + examples?: JSONSchema7Type | undefined; +} + +export interface ValidationResult { + valid: boolean; + errors: ValidationError[]; +} + +export interface ValidationError { + property: string; + message: string; +} + +/** + * To use the validator call JSONSchema.validate with an instance object and an optional schema object. + * If a schema is provided, it will be used to validate. If the instance object refers to a schema (self-validating), + * that schema will be used to validate and the schema parameter is not necessary (if both exist, + * both validations will occur). + */ +export function validate(instance: {}, schema: JSONSchema4 | JSONSchema6 | JSONSchema7): ValidationResult; + +/** + * The checkPropertyChange method will check to see if an value can legally be in property with the given schema + * This is slightly different than the validate method in that it will fail if the schema is readonly and it will + * not check for self-validation, it is assumed that the passed in value is already internally valid. + */ +export function checkPropertyChange( + value: any, + schema: JSONSchema4 | JSONSchema6 | JSONSchema7, + property: string, +): ValidationResult; + +/** + * This checks to ensure that the result is valid and will throw an appropriate error message if it is not. + */ +export function mustBeValid(result: ValidationResult): void; diff --git a/node_modules/@types/json-schema/package.json b/node_modules/@types/json-schema/package.json new file mode 100644 index 00000000..3c41bd7f --- /dev/null +++ b/node_modules/@types/json-schema/package.json @@ -0,0 +1,40 @@ +{ + "name": "@types/json-schema", + "version": "7.0.15", + "description": "TypeScript definitions for json-schema", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/json-schema", + "license": "MIT", + "contributors": [ + { + "name": "Boris Cherny", + "githubUsername": "bcherny", + "url": "https://github.com/bcherny" + }, + { + "name": "Lucian Buzzo", + "githubUsername": "lucianbuzzo", + "url": "https://github.com/lucianbuzzo" + }, + { + "name": "Roland Groza", + "githubUsername": "rolandjitsu", + "url": "https://github.com/rolandjitsu" + }, + { + "name": "Jason Kwok", + "githubUsername": "JasonHK", + "url": "https://github.com/JasonHK" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/json-schema" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "79984fd70cd25c3f7d72b84368778c763c89728ea0073832d745d4691b705257", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/mdast/LICENSE b/node_modules/@types/mdast/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/mdast/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/mdast/README.md b/node_modules/@types/mdast/README.md new file mode 100644 index 00000000..eab4153b --- /dev/null +++ b/node_modules/@types/mdast/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/mdast` + +# Summary +This package contains type definitions for mdast (https://github.com/syntax-tree/mdast). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/mdast. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 20:08:00 GMT + * Dependencies: [@types/unist](https://npmjs.com/package/@types/unist) + +# Credits +These definitions were written by [Christian Murphy](https://github.com/ChristianMurphy), [Jun Lu](https://github.com/lujun2), [Remco Haszing](https://github.com/remcohaszing), [Titus Wormer](https://github.com/wooorm), and [Remco Haszing](https://github.com/remcohaszing). diff --git a/node_modules/@types/mdast/index.d.ts b/node_modules/@types/mdast/index.d.ts new file mode 100644 index 00000000..cd4f75bf --- /dev/null +++ b/node_modules/@types/mdast/index.d.ts @@ -0,0 +1,1123 @@ +import type { Data as UnistData, Literal as UnistLiteral, Node as UnistNode, Parent as UnistParent } from "unist"; + +// ## Enumeration + +/** + * How phrasing content is aligned + * ({@link https://drafts.csswg.org/css-text/ | [CSSTEXT]}). + * + * * `'left'`: See the + * {@link https://drafts.csswg.org/css-text/#valdef-text-align-left | left} + * value of the `text-align` CSS property + * * `'right'`: See the + * {@link https://drafts.csswg.org/css-text/#valdef-text-align-right | right} + * value of the `text-align` CSS property + * * `'center'`: See the + * {@link https://drafts.csswg.org/css-text/#valdef-text-align-center | center} + * value of the `text-align` CSS property + * * `null`: phrasing content is aligned as defined by the host environment + * + * Used in GFM tables. + */ +export type AlignType = "center" | "left" | "right" | null; + +/** + * Explicitness of a reference. + * + * `'shortcut'`: the reference is implicit, its identifier inferred from its + * content + * `'collapsed'`: the reference is explicit, its identifier inferred from its + * content + * `'full'`: the reference is explicit, its identifier explicitly set + */ +export type ReferenceType = "shortcut" | "collapsed" | "full"; + +// ## Mixin + +/** + * Node with a fallback. + */ +export interface Alternative { + /** + * Equivalent content for environments that cannot represent the node as + * intended. + */ + alt?: string | null | undefined; +} + +/** + * Internal relation from one node to another. + * + * Whether the value of `identifier` is expected to be a unique identifier or + * not depends on the type of node including the Association. + * An example of this is that they should be unique on {@link Definition}, + * whereas multiple {@link LinkReference}s can be non-unique to be associated + * with one definition. + */ +export interface Association { + /** + * Relation of association. + * + * `identifier` is a source value: character escapes and character + * references are not parsed. + * + * It can match another node. + * + * Its value must be normalized. + * To normalize a value, collapse markdown whitespace (`[\t\n\r ]+`) to a space, + * trim the optional initial and/or final space, and perform Unicode-aware + * case-folding. + */ + identifier: string; + + /** + * Relation of association, in parsed form. + * + * `label` is a `string` value: it works just like `title` on {@link Link} + * or a `lang` on {@link Code}: character escapes and character references + * are parsed. + * + * It can match another node. + */ + label?: string | null | undefined; +} + +/** + * Marker that is associated to another node. + */ +export interface Reference extends Association { + /** + * Explicitness of the reference. + */ + referenceType: ReferenceType; +} + +/** + * Reference to resource. + */ +export interface Resource { + /** + * URL to the referenced resource. + */ + url: string; + /** + * Advisory information for the resource, such as would be appropriate for + * a tooltip. + */ + title?: string | null | undefined; +} + +// ## Interfaces + +/** + * Info associated with mdast nodes by the ecosystem. + * + * This space is guaranteed to never be specified by unist or mdast. + * But you can use it in utilities and plugins to store data. + * + * This type can be augmented to register custom data. + * For example: + * + * ```ts + * declare module 'mdast' { + * interface Data { + * // `someNode.data.myId` is typed as `number | undefined` + * myId?: number | undefined + * } + * } + * ``` + */ +export interface Data extends UnistData {} + +// ## Content maps + +/** + * Union of registered mdast nodes that can occur where block content is + * expected. + * + * To register custom mdast nodes, add them to {@link BlockContentMap}. + * They will be automatically added here. + */ +export type BlockContent = BlockContentMap[keyof BlockContentMap]; + +/** + * Registry of all mdast nodes that can occur where {@link BlockContent} is + * expected. + * + * This interface can be augmented to register custom node types: + * + * ```ts + * declare module 'mdast' { + * interface BlockContentMap { + * // Allow using MDX ESM nodes defined by `remark-mdx`. + * mdxjsEsm: MdxjsEsm; + * } + * } + * ``` + * + * For a union of all block content, see {@link RootContent}. + */ +export interface BlockContentMap { + blockquote: Blockquote; + code: Code; + heading: Heading; + html: Html; + list: List; + paragraph: Paragraph; + table: Table; + thematicBreak: ThematicBreak; +} + +/** + * Union of registered mdast nodes that can occur where definition content is + * expected. + * + * To register custom mdast nodes, add them to {@link DefinitionContentMap}. + * They will be automatically added here. + */ +export type DefinitionContent = DefinitionContentMap[keyof DefinitionContentMap]; + +/** + * Registry of all mdast nodes that can occur where {@link DefinitionContent} + * is expected. + * + * This interface can be augmented to register custom node types: + * + * ```ts + * declare module 'mdast' { + * interface DefinitionContentMap { + * custom: Custom; + * } + * } + * ``` + * + * For a union of all definition content, see {@link RootContent}. + */ +export interface DefinitionContentMap { + definition: Definition; + footnoteDefinition: FootnoteDefinition; +} + +/** + * Union of registered mdast nodes that can occur where frontmatter content is + * expected. + * + * To register custom mdast nodes, add them to {@link FrontmatterContentMap}. + * They will be automatically added here. + */ +export type FrontmatterContent = FrontmatterContentMap[keyof FrontmatterContentMap]; + +/** + * Registry of all mdast nodes that can occur where {@link FrontmatterContent} + * is expected. + * + * This interface can be augmented to register custom node types: + * + * ```ts + * declare module 'mdast' { + * interface FrontmatterContentMap { + * // Allow using toml nodes defined by `remark-frontmatter`. + * toml: TOML; + * } + * } + * ``` + * + * For a union of all frontmatter content, see {@link RootContent}. + */ +export interface FrontmatterContentMap { + yaml: Yaml; +} + +/** + * Union of registered mdast nodes that can occur where list content is + * expected. + * + * To register custom mdast nodes, add them to {@link ListContentMap}. + * They will be automatically added here. + */ +export type ListContent = ListContentMap[keyof ListContentMap]; + +/** + * Registry of all mdast nodes that can occur where {@link ListContent} + * is expected. + * + * This interface can be augmented to register custom node types: + * + * ```ts + * declare module 'mdast' { + * interface ListContentMap { + * custom: Custom; + * } + * } + * ``` + * + * For a union of all list content, see {@link RootContent}. + */ +export interface ListContentMap { + listItem: ListItem; +} + +/** + * Union of registered mdast nodes that can occur where phrasing content is + * expected. + * + * To register custom mdast nodes, add them to {@link PhrasingContentMap}. + * They will be automatically added here. + */ +export type PhrasingContent = PhrasingContentMap[keyof PhrasingContentMap]; + +/** + * Registry of all mdast nodes that can occur where {@link PhrasingContent} + * is expected. + * + * This interface can be augmented to register custom node types: + * + * ```ts + * declare module 'mdast' { + * interface PhrasingContentMap { + * // Allow using MDX JSX (text) nodes defined by `remark-mdx`. + * mdxJsxTextElement: MDXJSXTextElement; + * } + * } + * ``` + * + * For a union of all phrasing content, see {@link RootContent}. + */ +export interface PhrasingContentMap { + break: Break; + delete: Delete; + emphasis: Emphasis; + footnoteReference: FootnoteReference; + html: Html; + image: Image; + imageReference: ImageReference; + inlineCode: InlineCode; + link: Link; + linkReference: LinkReference; + strong: Strong; + text: Text; +} + +/** + * Union of registered mdast nodes that can occur in {@link Root}. + * + * To register custom mdast nodes, add them to {@link RootContentMap}. + * They will be automatically added here. + */ +export type RootContent = RootContentMap[keyof RootContentMap]; + +/** + * Registry of all mdast nodes that can occur as children of {@link Root}. + * + * > 👉 **Note**: {@link Root} does not need to be an entire document. + * > it can also be a fragment. + * + * This interface can be augmented to register custom node types: + * + * ```ts + * declare module 'mdast' { + * interface RootContentMap { + * // Allow using toml nodes defined by `remark-frontmatter`. + * toml: TOML; + * } + * } + * ``` + * + * For a union of all {@link Root} children, see {@link RootContent}. + */ +export interface RootContentMap { + blockquote: Blockquote; + break: Break; + code: Code; + definition: Definition; + delete: Delete; + emphasis: Emphasis; + footnoteDefinition: FootnoteDefinition; + footnoteReference: FootnoteReference; + heading: Heading; + html: Html; + image: Image; + imageReference: ImageReference; + inlineCode: InlineCode; + link: Link; + linkReference: LinkReference; + list: List; + listItem: ListItem; + paragraph: Paragraph; + strong: Strong; + table: Table; + tableCell: TableCell; + tableRow: TableRow; + text: Text; + thematicBreak: ThematicBreak; + yaml: Yaml; +} + +/** + * Union of registered mdast nodes that can occur where row content is + * expected. + * + * To register custom mdast nodes, add them to {@link RowContentMap}. + * They will be automatically added here. + */ +export type RowContent = RowContentMap[keyof RowContentMap]; + +/** + * Registry of all mdast nodes that can occur where {@link RowContent} + * is expected. + * + * This interface can be augmented to register custom node types: + * + * ```ts + * declare module 'mdast' { + * interface RowContentMap { + * custom: Custom; + * } + * } + * ``` + * + * For a union of all row content, see {@link RootContent}. + */ +export interface RowContentMap { + tableCell: TableCell; +} + +/** + * Union of registered mdast nodes that can occur where table content is + * expected. + * + * To register custom mdast nodes, add them to {@link TableContentMap}. + * They will be automatically added here. + */ +export type TableContent = TableContentMap[keyof TableContentMap]; + +/** + * Registry of all mdast nodes that can occur where {@link TableContent} + * is expected. + * + * This interface can be augmented to register custom node types: + * + * ```ts + * declare module 'mdast' { + * interface TableContentMap { + * custom: Custom; + * } + * } + * ``` + * + * For a union of all table content, see {@link RootContent}. + */ +export interface TableContentMap { + tableRow: TableRow; +} + +// ### Special content types + +/** + * Union of registered mdast nodes that can occur in {@link Root}. + * + * @deprecated Use {@link RootContent} instead. + */ +export type Content = RootContent; + +/** + * Union of registered mdast literals. + * + * To register custom mdast nodes, add them to {@link RootContentMap} and other + * places where relevant. + * They will be automatically added here. + */ +export type Literals = Extract; + +/** + * Union of registered mdast nodes. + * + * To register custom mdast nodes, add them to {@link RootContentMap} and other + * places where relevant. + * They will be automatically added here. + */ +export type Nodes = Root | RootContent; + +/** + * Union of registered mdast parents. + * + * To register custom mdast nodes, add them to {@link RootContentMap} and other + * places where relevant. + * They will be automatically added here. + */ +export type Parents = Extract; + +/** + * Union of registered mdast nodes that can occur at the top of the document. + * + * To register custom mdast nodes, add them to {@link BlockContent}, + * {@link FrontmatterContent}, or {@link DefinitionContent}. + * They will be automatically added here. + */ +export type TopLevelContent = BlockContent | FrontmatterContent | DefinitionContent; + +// ## Abstract nodes + +/** + * Abstract mdast node that contains the smallest possible value. + * + * This interface is supposed to be extended if you make custom mdast nodes. + * + * For a union of all registered mdast literals, see {@link Literals}. + */ +export interface Literal extends Node { + /** + * Plain-text value. + */ + value: string; +} + +/** + * Abstract mdast node. + * + * This interface is supposed to be extended. + * If you can use {@link Literal} or {@link Parent}, you should. + * But for example in markdown, a thematic break (`***`) is neither literal nor + * parent, but still a node. + * + * To register custom mdast nodes, add them to {@link RootContentMap} and other + * places where relevant (such as {@link ElementContentMap}). + * + * For a union of all registered mdast nodes, see {@link Nodes}. + */ +export interface Node extends UnistNode { + /** + * Info from the ecosystem. + */ + data?: Data | undefined; +} + +/** + * Abstract mdast node that contains other mdast nodes (*children*). + * + * This interface is supposed to be extended if you make custom mdast nodes. + * + * For a union of all registered mdast parents, see {@link Parents}. + */ +export interface Parent extends Node { + /** + * List of children. + */ + children: RootContent[]; +} + +// ## Concrete nodes + +/** + * Markdown block quote. + */ +export interface Blockquote extends Parent { + /** + * Node type of mdast block quote. + */ + type: "blockquote"; + /** + * Children of block quote. + */ + children: Array; + /** + * Data associated with the mdast block quote. + */ + data?: BlockquoteData | undefined; +} + +/** + * Info associated with mdast block quote nodes by the ecosystem. + */ +export interface BlockquoteData extends Data {} + +/** + * Markdown break. + */ +export interface Break extends Node { + /** + * Node type of mdast break. + */ + type: "break"; + /** + * Data associated with the mdast break. + */ + data?: BreakData | undefined; +} + +/** + * Info associated with mdast break nodes by the ecosystem. + */ +export interface BreakData extends Data {} + +/** + * Markdown code (flow) (block). + */ +export interface Code extends Literal { + /** + * Node type of mdast code (flow). + */ + type: "code"; + /** + * Language of computer code being marked up. + */ + lang?: string | null | undefined; + /** + * Custom information relating to the node. + * + * If the lang field is present, a meta field can be present. + */ + meta?: string | null | undefined; + /** + * Data associated with the mdast code (flow). + */ + data?: CodeData | undefined; +} + +/** + * Info associated with mdast code (flow) (block) nodes by the ecosystem. + */ +export interface CodeData extends Data {} + +/** + * Markdown definition. + */ +export interface Definition extends Node, Association, Resource { + /** + * Node type of mdast definition. + */ + type: "definition"; + /** + * Data associated with the mdast definition. + */ + data?: DefinitionData | undefined; +} + +/** + * Info associated with mdast definition nodes by the ecosystem. + */ +export interface DefinitionData extends Data {} + +/** + * Markdown GFM delete (strikethrough). + */ +export interface Delete extends Parent { + /** + * Node type of mdast GFM delete. + */ + type: "delete"; + /** + * Children of GFM delete. + */ + children: PhrasingContent[]; + /** + * Data associated with the mdast GFM delete. + */ + data?: DeleteData | undefined; +} + +/** + * Info associated with mdast GFM delete nodes by the ecosystem. + */ +export interface DeleteData extends Data {} + +/** + * Markdown emphasis. + */ +export interface Emphasis extends Parent { + /** + * Node type of mdast emphasis. + */ + type: "emphasis"; + /** + * Children of emphasis. + */ + children: PhrasingContent[]; + /** + * Data associated with the mdast emphasis. + */ + data?: EmphasisData | undefined; +} + +/** + * Info associated with mdast emphasis nodes by the ecosystem. + */ +export interface EmphasisData extends Data {} + +/** + * Markdown GFM footnote definition. + */ +export interface FootnoteDefinition extends Parent, Association { + /** + * Node type of mdast GFM footnote definition. + */ + type: "footnoteDefinition"; + /** + * Children of GFM footnote definition. + */ + children: Array; + /** + * Data associated with the mdast GFM footnote definition. + */ + data?: FootnoteDefinitionData | undefined; +} + +/** + * Info associated with mdast GFM footnote definition nodes by the ecosystem. + */ +export interface FootnoteDefinitionData extends Data {} + +/** + * Markdown GFM footnote reference. + */ +export interface FootnoteReference extends Association, Node { + /** + * Node type of mdast GFM footnote reference. + */ + type: "footnoteReference"; + /** + * Data associated with the mdast GFM footnote reference. + */ + data?: FootnoteReferenceData | undefined; +} + +/** + * Info associated with mdast GFM footnote reference nodes by the ecosystem. + */ +export interface FootnoteReferenceData extends Data {} + +/** + * Markdown heading. + */ +export interface Heading extends Parent { + /** + * Node type of mdast heading. + */ + type: "heading"; + /** + * Heading rank. + * + * A value of `1` is said to be the highest rank and `6` the lowest. + */ + depth: 1 | 2 | 3 | 4 | 5 | 6; + /** + * Children of heading. + */ + children: PhrasingContent[]; + /** + * Data associated with the mdast heading. + */ + data?: HeadingData | undefined; +} + +/** + * Info associated with mdast heading nodes by the ecosystem. + */ +export interface HeadingData extends Data {} + +/** + * Markdown HTML. + */ +export interface Html extends Literal { + /** + * Node type of mdast HTML. + */ + type: "html"; + /** + * Data associated with the mdast HTML. + */ + data?: HtmlData | undefined; +} + +/** + * Info associated with mdast HTML nodes by the ecosystem. + */ +export interface HtmlData extends Data {} + +/** + * Old name of `Html` node. + * + * @deprecated + * Please use `Html` instead. + */ +export type HTML = Html; + +/** + * Markdown image. + */ +export interface Image extends Alternative, Node, Resource { + /** + * Node type of mdast image. + */ + type: "image"; + /** + * Data associated with the mdast image. + */ + data?: ImageData | undefined; +} + +/** + * Info associated with mdast image nodes by the ecosystem. + */ +export interface ImageData extends Data {} + +/** + * Markdown image reference. + */ +export interface ImageReference extends Alternative, Node, Reference { + /** + * Node type of mdast image reference. + */ + type: "imageReference"; + /** + * Data associated with the mdast image reference. + */ + data?: ImageReferenceData | undefined; +} + +/** + * Info associated with mdast image reference nodes by the ecosystem. + */ +export interface ImageReferenceData extends Data {} + +/** + * Markdown code (text) (inline). + */ +export interface InlineCode extends Literal { + /** + * Node type of mdast code (text). + */ + type: "inlineCode"; + /** + * Data associated with the mdast code (text). + */ + data?: InlineCodeData | undefined; +} + +/** + * Info associated with mdast code (text) (inline) nodes by the ecosystem. + */ +export interface InlineCodeData extends Data {} + +/** + * Markdown link. + */ +export interface Link extends Parent, Resource { + /** + * Node type of mdast link. + */ + type: "link"; + /** + * Children of link. + */ + children: PhrasingContent[]; + /** + * Data associated with the mdast link. + */ + data?: LinkData | undefined; +} + +/** + * Info associated with mdast link nodes by the ecosystem. + */ +export interface LinkData extends Data {} + +/** + * Markdown link reference. + */ +export interface LinkReference extends Parent, Reference { + /** + * Node type of mdast link reference. + */ + type: "linkReference"; + /** + * Children of link reference. + */ + children: PhrasingContent[]; + /** + * Data associated with the mdast link reference. + */ + data?: LinkReferenceData | undefined; +} + +/** + * Info associated with mdast link reference nodes by the ecosystem. + */ +export interface LinkReferenceData extends Data {} + +/** + * Markdown list. + */ +export interface List extends Parent { + /** + * Node type of mdast list. + */ + type: "list"; + /** + * Whether the items have been intentionally ordered (when `true`), or that + * the order of items is not important (when `false` or not present). + */ + ordered?: boolean | null | undefined; + /** + * The starting number of the list, when the `ordered` field is `true`. + */ + start?: number | null | undefined; + /** + * Whether one or more of the children are separated with a blank line from + * its siblings (when `true`), or not (when `false` or not present). + */ + spread?: boolean | null | undefined; + /** + * Children of list. + */ + children: ListContent[]; + /** + * Data associated with the mdast list. + */ + data?: ListData | undefined; +} + +/** + * Info associated with mdast list nodes by the ecosystem. + */ +export interface ListData extends Data {} + +/** + * Markdown list item. + */ +export interface ListItem extends Parent { + /** + * Node type of mdast list item. + */ + type: "listItem"; + /** + * Whether the item is a tasklist item (when `boolean`). + * + * When `true`, the item is complete. + * When `false`, the item is incomplete. + */ + checked?: boolean | null | undefined; + /** + * Whether one or more of the children are separated with a blank line from + * its siblings (when `true`), or not (when `false` or not present). + */ + spread?: boolean | null | undefined; + /** + * Children of list item. + */ + children: Array; + /** + * Data associated with the mdast list item. + */ + data?: ListItemData | undefined; +} + +/** + * Info associated with mdast list item nodes by the ecosystem. + */ +export interface ListItemData extends Data {} + +/** + * Markdown paragraph. + */ +export interface Paragraph extends Parent { + /** + * Node type of mdast paragraph. + */ + type: "paragraph"; + /** + * Children of paragraph. + */ + children: PhrasingContent[]; + /** + * Data associated with the mdast paragraph. + */ + data?: ParagraphData | undefined; +} + +/** + * Info associated with mdast paragraph nodes by the ecosystem. + */ +export interface ParagraphData extends Data {} + +/** + * Document fragment or a whole document. + * + * Should be used as the root of a tree and must not be used as a child. + */ +export interface Root extends Parent { + /** + * Node type of mdast root. + */ + type: "root"; + /** + * Data associated with the mdast root. + */ + data?: RootData | undefined; +} + +/** + * Info associated with mdast root nodes by the ecosystem. + */ +export interface RootData extends Data {} + +/** + * Markdown strong. + */ +export interface Strong extends Parent { + /** + * Node type of mdast strong. + */ + type: "strong"; + /** + * Children of strong. + */ + children: PhrasingContent[]; + /** + * Data associated with the mdast strong. + */ + data?: StrongData | undefined; +} + +/** + * Info associated with mdast strong nodes by the ecosystem. + */ +export interface StrongData extends Data {} + +/** + * Markdown GFM table. + */ +export interface Table extends Parent { + /** + * Node type of mdast GFM table. + */ + type: "table"; + /** + * How cells in columns are aligned. + */ + align?: AlignType[] | null | undefined; + /** + * Children of GFM table. + */ + children: TableContent[]; + /** + * Data associated with the mdast GFM table. + */ + data?: TableData | undefined; +} + +/** + * Info associated with mdast GFM table nodes by the ecosystem. + */ +export interface TableData extends Data {} + +/** + * Markdown GFM table row. + */ +export interface TableRow extends Parent { + /** + * Node type of mdast GFM table row. + */ + type: "tableRow"; + /** + * Children of GFM table row. + */ + children: RowContent[]; + /** + * Data associated with the mdast GFM table row. + */ + data?: TableRowData | undefined; +} + +/** + * Info associated with mdast GFM table row nodes by the ecosystem. + */ +export interface TableRowData extends Data {} + +/** + * Markdown GFM table cell. + */ +export interface TableCell extends Parent { + /** + * Node type of mdast GFM table cell. + */ + type: "tableCell"; + /** + * Children of GFM table cell. + */ + children: PhrasingContent[]; + /** + * Data associated with the mdast GFM table cell. + */ + data?: TableCellData | undefined; +} + +/** + * Info associated with mdast GFM table cell nodes by the ecosystem. + */ +export interface TableCellData extends Data {} + +/** + * Markdown text. + */ +export interface Text extends Literal { + /** + * Node type of mdast text. + */ + type: "text"; + /** + * Data associated with the mdast text. + */ + data?: TextData | undefined; +} + +/** + * Info associated with mdast text nodes by the ecosystem. + */ +export interface TextData extends Data {} + +/** + * Markdown thematic break (horizontal rule). + */ +export interface ThematicBreak extends Node { + /** + * Node type of mdast thematic break. + */ + type: "thematicBreak"; + /** + * Data associated with the mdast thematic break. + */ + data?: ThematicBreakData | undefined; +} + +/** + * Info associated with mdast thematic break nodes by the ecosystem. + */ +export interface ThematicBreakData extends Data {} + +/** + * Markdown YAML. + */ +export interface Yaml extends Literal { + /** + * Node type of mdast YAML. + */ + type: "yaml"; + /** + * Data associated with the mdast YAML. + */ + data?: YamlData | undefined; +} + +/** + * Info associated with mdast YAML nodes by the ecosystem. + */ +export interface YamlData extends Data {} + +/** + * Old name of `Yaml` node. + * + * @deprecated + * Please use `Yaml` instead. + */ +export type YAML = Yaml; diff --git a/node_modules/@types/mdast/package.json b/node_modules/@types/mdast/package.json new file mode 100644 index 00000000..92377061 --- /dev/null +++ b/node_modules/@types/mdast/package.json @@ -0,0 +1,47 @@ +{ + "name": "@types/mdast", + "version": "4.0.3", + "description": "TypeScript definitions for mdast", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/mdast", + "license": "MIT", + "contributors": [ + { + "name": "Christian Murphy", + "githubUsername": "ChristianMurphy", + "url": "https://github.com/ChristianMurphy" + }, + { + "name": "Jun Lu", + "githubUsername": "lujun2", + "url": "https://github.com/lujun2" + }, + { + "name": "Remco Haszing", + "githubUsername": "remcohaszing", + "url": "https://github.com/remcohaszing" + }, + { + "name": "Titus Wormer", + "githubUsername": "wooorm", + "url": "https://github.com/wooorm" + }, + { + "name": "Remco Haszing", + "githubUsername": "remcohaszing", + "url": "https://github.com/remcohaszing" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/mdast" + }, + "scripts": {}, + "dependencies": { + "@types/unist": "*" + }, + "typesPublisherContentHash": "d9ae86143b0d15b17bb0222bc0fdf57694c40c1770cbc625795ae3bc0f8a79bf", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/mdx/LICENSE b/node_modules/@types/mdx/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/mdx/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/mdx/README.md b/node_modules/@types/mdx/README.md new file mode 100644 index 00000000..a5b59d76 --- /dev/null +++ b/node_modules/@types/mdx/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/mdx` + +# Summary +This package contains type definitions for mdx (https://github.com/mdx-js/mdx). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/mdx. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 09:09:39 GMT + * Dependencies: none + +# Credits +These definitions were written by [Christian Murphy](https://github.com/ChristianMurphy), [Remco Haszing](https://github.com/remcohaszing), and [Titus Wormer](https://github.com/wooorm). diff --git a/node_modules/@types/mdx/index.d.ts b/node_modules/@types/mdx/index.d.ts new file mode 100644 index 00000000..8bfb9ae9 --- /dev/null +++ b/node_modules/@types/mdx/index.d.ts @@ -0,0 +1,117 @@ +/** + * An MDX file which exports a JSX component. + * + * The default export of MDX files is a function which takes props and returns a JSX element. + * MDX files can export other identifiers from within the MDX file as well, either authored manually + * or automatically through plugins + * + * It’s currently not possible for the other exports to be typed automatically. + * You can type them yourself with a TypeScript + * [script](https://www.typescriptlang.org/docs/handbook/2/modules.html#non-modules) + * which augments `*.mdx` modules. + * A script file is a file which doesn’t use top-level ESM syntax, but ESM syntax + * is allowed inside the declared module. + * + * This is typically useful for exports created by plugins. For example: + * + * ```ts + * // mdx-custom.d.ts + * declare module '*.mdx' { + * import { Frontmatter } from 'my-frontmatter-types'; + * + * export const frontmatter: Frontmatter; + * export const title: string; + * } + * ``` + * + * The previous example added types to *all* `.mdx` files. + * To define types for a specific MDX file, create a file with the same name but postfixed with + * `.d.ts` next to the MDX file. + * + * For example, given the following MDX file `my-component.mdx`: + * + * ```mdx + * export const message = 'world'; + * + * # Hello {message} + * ``` + * + * Create the following file named `my-component.mdx.d.ts` in the same directory: + * + * ```ts + * export { default } from '*.mdx'; + * + * export const message: string; + * ``` + * + * Note that this overwrites the `declare module '*.mdx' { … }` types from earlier, which is why you + * also need to define the default export. You can also define your own default export type to narrow + * the accepted prop types of this specific file. + * + * It should now be possible to import both the MDX component and the exported constant `message`. + */ +declare module "*.mdx" { + // eslint-disable-next-line @definitelytyped/no-self-import + import { MDXProps } from "mdx/types"; + + /** + * An function component which renders the MDX content using JSX. + * + * @param props This value is be available as the named variable `props` inside the MDX component. + * @returns A JSX element. The meaning of this may depend on the project configuration. I.e. it + * could be a React, Preact, or Vuex element. + */ + export default function MDXContent(props: MDXProps): JSX.Element; +} + +// Support markdown extensions from +// https://github.com/sindresorhus/markdown-extensions/blob/v1.1.1/markdown-extensions.json + +/** + * A markdown file which exports a JSX component. + */ +declare module "*.md" { + export { default } from "*.mdx"; +} + +/** + * A markdown file which exports a JSX component. + */ +declare module "*.markdown" { + export { default } from "*.mdx"; +} + +/** + * A markdown file which exports a JSX component. + */ +declare module "*.mdown" { + export { default } from "*.mdx"; +} + +/** + * A markdown file which exports a JSX component. + */ +declare module "*.mkdn" { + export { default } from "*.mdx"; +} + +/** + * A markdown file which exports a JSX component. + */ +declare module "*.mkd" { + export { default } from "*.mdx"; +} + +/** + * A markdown file which exports a JSX component. + */ +declare module "*.mkdown" { + export { default } from "*.mdx"; +} + +/** + * A markdown file which exports a JSX component. + */ +declare module "*.ron" { + export { default } from "*.mdx"; +} diff --git a/node_modules/@types/mdx/package.json b/node_modules/@types/mdx/package.json new file mode 100644 index 00000000..20fbd67e --- /dev/null +++ b/node_modules/@types/mdx/package.json @@ -0,0 +1,36 @@ +{ + "name": "@types/mdx", + "version": "2.0.10", + "description": "TypeScript definitions for mdx", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/mdx", + "license": "MIT", + "contributors": [ + { + "name": "Christian Murphy", + "githubUsername": "ChristianMurphy", + "url": "https://github.com/ChristianMurphy" + }, + { + "name": "Remco Haszing", + "githubUsername": "remcohaszing", + "url": "https://github.com/remcohaszing" + }, + { + "name": "Titus Wormer", + "githubUsername": "wooorm", + "url": "https://github.com/wooorm" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/mdx" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "b93f5a5f885f23aa2962d8cc668b16efca5ceb2357785e47c104c506eb466d4f", + "typeScriptVersion": "4.5", + "nonNpm": true +} \ No newline at end of file diff --git a/node_modules/@types/mdx/types.d.ts b/node_modules/@types/mdx/types.d.ts new file mode 100644 index 00000000..40c9fc1c --- /dev/null +++ b/node_modules/@types/mdx/types.d.ts @@ -0,0 +1,114 @@ +// Internal helper types + +/** + * This is the global JSX.ElementType if it’s defined, otherwise never. + */ +// @ts-ignore JSX runtimes may optionally define JSX.ElementType. The MDX types need to work regardless whether this is +// defined or not. +type ElementType = any extends JSX.ElementType ? never : JSX.ElementType; + +/** + * This matches any function component types that ar part of `ElementType`. + */ +type FunctionElementType = Extract) => any>; + +/** + * This matches any class component types that ar part of `ElementType`. + */ +type ClassElementType = Extract) => any>; + +/** + * A valid JSX string component. + */ +type StringComponent = Extract; + +/** + * A valid JSX function component. + */ +type FunctionComponent = ElementType extends never + // If JSX.ElementType isn’t defined, the valid return type is JSX.Element + ? (props: Props) => JSX.Element | null + : FunctionElementType extends never + // If JSX.ElementType is defined, but doesn’t allow function components, function components are disallowed. + ? never + // If JSX.ElementType allows function components, its return value determines what is a valid. + : (props: Props) => ReturnType; + +/** + * A valid JSX class component. + */ +type ClassComponent = ElementType extends never + // If JSX.ElementType isn’t defined, the valid return type is a constructor that returns JSX.ElementClass + ? new(props: Props) => JSX.ElementClass + : ClassElementType extends never + // If JSX.ElementType is defined, but doesn’t allow constructors, function components are disallowed. + ? never + // If JSX.ElementType allows class components, its return value determines what is a valid. + : new(props: Props) => InstanceType; + +/** + * Any allowed JSX component. + */ +type Component = FunctionComponent | ClassComponent | StringComponent; + +interface NestedMDXComponents { + [key: string]: NestedMDXComponents | Component; +} + +// Public MDX helper types + +/** + * MDX components may be passed as the `components`. + * + * The key is the name of the element to override. The value is the component to render instead. + */ +export type MDXComponents = + & NestedMDXComponents + & { + [Key in StringComponent]?: Component; + } + & { + /** + * If a wrapper component is defined, the MDX content will be wrapped inside of it. + */ + wrapper?: Component; + }; + +/** + * The props that may be passed to an MDX component. + */ +export interface MDXProps { + /** + * Which props exactly may be passed into the component depends on the contents of the MDX + * file. + */ + [key: string]: unknown; + + /** + * This prop may be used to customize how certain components are rendered. + */ + components?: MDXComponents; +} + +/** + * The type of the default export of an MDX module. + */ +export type MDXContent = (props: MDXProps) => JSX.Element; + +/** + * A generic MDX module type. + */ +export interface MDXModule { + /** + * This could be any value that is exported from the MDX file. + */ + [key: string]: unknown; + + /** + * A functional JSX component which renders the content of the MDX file. + */ + default: MDXContent; +} + +// This marks the file as a module, meaning not all types are implicitly exported. +export {}; diff --git a/node_modules/@types/mime/LICENSE b/node_modules/@types/mime/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/mime/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/mime/Mime.d.ts b/node_modules/@types/mime/Mime.d.ts new file mode 100644 index 00000000..6b4dacb2 --- /dev/null +++ b/node_modules/@types/mime/Mime.d.ts @@ -0,0 +1,11 @@ +import type { TypeMap } from "./index"; + +declare class Mime { + constructor(typeMap: TypeMap, ...mimes: TypeMap[]); + + getType(path: string): string | null; + getExtension(mime: string): string | null; + define(typeMap: TypeMap, force?: boolean): void; +} + +export = Mime; diff --git a/node_modules/@types/mime/README.md b/node_modules/@types/mime/README.md new file mode 100644 index 00000000..3014f29c --- /dev/null +++ b/node_modules/@types/mime/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/mime` + +# Summary +This package contains type definitions for mime (https://github.com/broofa/node-mime). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/mime. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 20:08:00 GMT + * Dependencies: none + +# Credits +These definitions were written by [Jeff Goddard](https://github.com/jedigo), and [Daniel Hritzkiv](https://github.com/dhritzkiv). diff --git a/node_modules/@types/mime/index.d.ts b/node_modules/@types/mime/index.d.ts new file mode 100644 index 00000000..7a043642 --- /dev/null +++ b/node_modules/@types/mime/index.d.ts @@ -0,0 +1,15 @@ +// Originally imported from: https://github.com/soywiz/typescript-node-definitions/mime.d.ts + +import Mime = require("./Mime"); + +export as namespace mime; + +declare namespace mime { + interface TypeMap { + [key: string]: string[]; + } +} + +declare const mime: Mime; + +export = mime; diff --git a/node_modules/@types/mime/lite.d.ts b/node_modules/@types/mime/lite.d.ts new file mode 100644 index 00000000..39bf78d1 --- /dev/null +++ b/node_modules/@types/mime/lite.d.ts @@ -0,0 +1,7 @@ +import Mime = require("./Mime"); + +declare const mimelite: Mime; + +export as namespace mimelite; + +export = mimelite; diff --git a/node_modules/@types/mime/package.json b/node_modules/@types/mime/package.json new file mode 100644 index 00000000..3d2bd81e --- /dev/null +++ b/node_modules/@types/mime/package.json @@ -0,0 +1,30 @@ +{ + "name": "@types/mime", + "version": "3.0.4", + "description": "TypeScript definitions for mime", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/mime", + "license": "MIT", + "contributors": [ + { + "name": "Jeff Goddard", + "githubUsername": "jedigo", + "url": "https://github.com/jedigo" + }, + { + "name": "Daniel Hritzkiv", + "githubUsername": "dhritzkiv", + "url": "https://github.com/dhritzkiv" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/mime" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "983179e5cf99a98e2effcd9a9b5e0a972eeec00711e4ac14a607c518c4b4d547", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/ms/LICENSE b/node_modules/@types/ms/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/ms/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/ms/README.md b/node_modules/@types/ms/README.md new file mode 100644 index 00000000..65129288 --- /dev/null +++ b/node_modules/@types/ms/README.md @@ -0,0 +1,37 @@ +# Installation +> `npm install --save @types/ms` + +# Summary +This package contains type definitions for ms (https://github.com/zeit/ms). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/ms. +## [index.d.ts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/ms/index.d.ts) +````ts +/** + * Short/Long format for `value`. + * + * @param {Number} value + * @param {{long: boolean}} options + * @return {String} + */ +declare function ms(value: number, options?: { long: boolean }): string; + +/** + * Parse the given `value` and return milliseconds. + * + * @param {String} value + * @return {Number} + */ +declare function ms(value: string): number; + +export = ms; + +```` + +### Additional Details + * Last updated: Tue, 07 Nov 2023 09:09:39 GMT + * Dependencies: none + +# Credits +These definitions were written by [Zhiyuan Wang](https://github.com/danny8002). diff --git a/node_modules/@types/ms/index.d.ts b/node_modules/@types/ms/index.d.ts new file mode 100644 index 00000000..457836fa --- /dev/null +++ b/node_modules/@types/ms/index.d.ts @@ -0,0 +1,18 @@ +/** + * Short/Long format for `value`. + * + * @param {Number} value + * @param {{long: boolean}} options + * @return {String} + */ +declare function ms(value: number, options?: { long: boolean }): string; + +/** + * Parse the given `value` and return milliseconds. + * + * @param {String} value + * @return {Number} + */ +declare function ms(value: string): number; + +export = ms; diff --git a/node_modules/@types/ms/package.json b/node_modules/@types/ms/package.json new file mode 100644 index 00000000..bb2a9390 --- /dev/null +++ b/node_modules/@types/ms/package.json @@ -0,0 +1,25 @@ +{ + "name": "@types/ms", + "version": "0.7.34", + "description": "TypeScript definitions for ms", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/ms", + "license": "MIT", + "contributors": [ + { + "name": "Zhiyuan Wang", + "githubUsername": "danny8002", + "url": "https://github.com/danny8002" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/ms" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "4ee80538a62ddf0c1ada0b6ae194e895a89f19de73c78f2afdcba2e91a66480e", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/node-forge/LICENSE b/node_modules/@types/node-forge/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/node-forge/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/node-forge/README.md b/node_modules/@types/node-forge/README.md new file mode 100644 index 00000000..a8c362a7 --- /dev/null +++ b/node_modules/@types/node-forge/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/node-forge` + +# Summary +This package contains type definitions for node-forge (https://github.com/digitalbazaar/forge). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node-forge. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 09:09:39 GMT + * Dependencies: [@types/node](https://npmjs.com/package/@types/node) + +# Credits +These definitions were written by [Seth Westphal ](https://github.com/westy92), [Kay Schecker ](https://github.com/flynetworks), [Aakash Goenka ](https://github.com/a-k-g), [Rafal2228 ](https://github.com/rafal2228), [Beeno Tung ](https://github.com/beenotung), [Joe Flateau ](https://github.com/joeflateau), [timhwang21 ](https://github.com/timhwang21), [Anders Kaseorg ](https://github.com/andersk), [Sascha Zarhuber ](https://github.com/saschazar21), [Rogier Schouten ](https://github.com/rogierschouten), [Ivan Aseev ](https://github.com/aseevia), [Wiktor Kwapisiewicz](https://github.com/wiktor-k), [Ligia Frangello ](https://github.com/frangello), [Dmitry Avezov ](https://github.com/avezov), [Jose Fuentes ](https://github.com/j-fuentes), [Anya Reyes ](https://github.com/darkade), and [BendingBender ](https://github.com/BendingBender). diff --git a/node_modules/@types/node-forge/index.d.ts b/node_modules/@types/node-forge/index.d.ts new file mode 100644 index 00000000..6e842579 --- /dev/null +++ b/node_modules/@types/node-forge/index.d.ts @@ -0,0 +1,1546 @@ +/// + +declare module "node-forge" { + type Byte = number; + type Bytes = string; + type Hex = string; + type Base64 = string; + type Utf8 = string; + type OID = string; + type Encoding = "raw" | "utf8"; + + namespace jsbn { + interface RandomGenerator { + nextBytes(bytes: number[]): void; + } + class BigInteger { + static ZERO: BigInteger; + static ONE: BigInteger; + constructor(a: null); + constructor(a: number, c: RandomGenerator); + constructor(a: number, b: number, c: RandomGenerator); + constructor(a: string, b?: number); + constructor(a: number[], b?: number); + constructor(a: BigInteger); + data: number[]; + t: number; + s: number; + am(i: number, x: number, w: BigInteger, j: number, c: number, n: number): number; + toString(b?: number): string; + bitLength(): number; + negate(): BigInteger; + abs(): BigInteger; + compareTo(a: BigInteger): number; + bitLength(): number; + mod(a: BigInteger): BigInteger; + modPowInt(e: number, m: BigInteger): BigInteger; + clone(): BigInteger; + intValue(): number; + byteValue(): number; + shortValue(): number; + signum(): number; + toByteArray(): number[]; + equals(a: BigInteger): boolean; + min(a: BigInteger): BigInteger; + max(a: BigInteger): BigInteger; + and(a: BigInteger): BigInteger; + or(a: BigInteger): BigInteger; + xor(a: BigInteger): BigInteger; + andNot(a: BigInteger): BigInteger; + not(): BigInteger; + shiftLeft(n: number): BigInteger; + shiftRight(n: number): BigInteger; + getLowestSetBit(): number; + bitCount(): number; + testBit(n: number): boolean; + clearBit(n: number): BigInteger; + flipBit(n: number): BigInteger; + add(a: BigInteger): BigInteger; + subtract(a: BigInteger): BigInteger; + multiply(a: BigInteger): BigInteger; + squareTo(a: BigInteger): BigInteger; + divide(a: BigInteger): BigInteger; + remainder(a: BigInteger): BigInteger; + divideAndRemainder(a: BigInteger): BigInteger[]; // Array of 2 items + pow(e: number): BigInteger; + modPow(e: BigInteger, m: BigInteger): BigInteger; + gcd(a: BigInteger): BigInteger; + modInverse(m: BigInteger): BigInteger; + isProbablePrime(t: number): boolean; + } + } + + namespace rc2 { + type pad_function = (blockSize: number, buffer: util.ByteBuffer, decrypt: boolean) => boolean; + interface cipher { + start(iv: util.ByteBuffer | string | null, output?: util.ByteBuffer): void; + update(input: util.ByteBuffer): void; + finish(pad?: pad_function): boolean; + output: util.ByteBuffer; + } + + function expandKey(key: string | util.ByteBuffer, effKeyBits?: number): util.ByteBuffer; + function startEncrypting( + key: string | util.ByteBuffer, + iv: util.ByteBuffer | Byte[] | Bytes, + output: util.ByteBuffer | null, + ): rc2.cipher; + function createEncryptionCipher(key: string | util.ByteBuffer, bits?: number): rc2.cipher; + function startDecrypting( + key: string | util.ByteBuffer, + iv: util.ByteBuffer | Byte[] | Bytes, + output: util.ByteBuffer | null, + ): rc2.cipher; + function createDecryptionCipher(key: string | util.ByteBuffer, bits?: number): rc2.cipher; + } + + namespace kem { + namespace rsa { + interface kem { + /** + * Generates a secret key and its encapsulation. + * + * @param publicKey the RSA public key to encrypt with. + * @param keyLength the length, in bytes, of the secret key to generate. + */ + encrypt(publicKey: pki.rsa.PublicKey, keyLength: number): EncryptResult; + /** + * Decrypts an encapsulated secret key. + * + * @param privateKey the RSA private key to decrypt with. + * @param encapsulation the ciphertext for generating the secret key, as a binary-encoded + * string of bytes. + * @param keyLength the length, in bytes, of the secret key to generate. + * + * @return the secret key as a binary-encoded string of bytes. + */ + decrypt(privateKey: pki.rsa.PrivateKey, encapsulation: string, keyLength: number): string; + } + + interface random { + getBytesSync(count: number): Bytes; + } + + interface Options { + /** + * A custom crypto-secure pseudo-random number generator to use. + */ + prng?: random | undefined; + } + + /** + * Creates an RSA KEM API object for generating a secret asymmetric key. + * + * The symmetric key may be generated via a call to 'encrypt', which will + * produce a ciphertext to be transmitted to the recipient and a key to be + * kept secret. The ciphertext is a parameter to be passed to 'decrypt' which + * will produce the same secret key for the recipient to use to decrypt a + * message that was encrypted with the secret key. + * + * @param kdf the KDF API to use (eg: `new forge.kem.kdf1()`). + * @param options the options to use. + */ + function create(kdf: KDF, options?: Options): kem; + } + + interface EncryptResult { + /** + * The ciphertext for generating the secret key, as a binary-encoded string of bytes. + */ + encapsulation: string; + /** + * The secret key to use for encrypting a message. + */ + key: string; + } + + interface KDF { + /** + * Generate a key of the specified length. + * + * @param x the binary-encoded byte string to generate a key from. + * @param length the number of bytes to generate (the size of the key). + * + * @return the key as a binary-encoded string. + */ + generate(x: string, length: number): string; + } + + /** + * Creates a key derivation API object that implements KDF1 per ISO 18033-2. + * + * @param md the hash API to use. + * @param digestLength a digest length that must be positive and less than or equal to `md.digestLength`. + * + * @return a KDF1 API object. + */ + class kdf1 implements KDF { + constructor(md: md.MessageDigest, digestLength?: number); + /** + * Generate a key of the specified length. + * + * @param x the binary-encoded byte string to generate a key from. + * @param length the number of bytes to generate (the size of the key). + * + * @return the key as a binary-encoded string. + */ + generate(x: string, length: number): string; + } + + /** + * Creates a key derivation API object that implements KDF2 per ISO 18033-2. + * + * @param md the hash API to use. + * @param digestLength a digest length that must be positive and less than or equal to `md.digestLength`. + * + * @return a KDF2 API object. + */ + class kdf2 implements KDF { + constructor(md: md.MessageDigest, digestLength?: number); + /** + * Generate a key of the specified length. + * + * @param x the binary-encoded byte string to generate a key from. + * @param length the number of bytes to generate (the size of the key). + * + * @return the key as a binary-encoded string. + */ + generate(x: string, length: number): string; + } + } + + namespace pem { + interface EncodeOptions { + maxline?: number | undefined; + } + + interface ObjectPEM { + type: string; + body: Bytes; + procType?: any; + contentDomain?: any; + dekInfo?: any; + headers?: any[] | undefined; + } + + function encode(msg: ObjectPEM, options?: EncodeOptions): string; + function decode(str: string): ObjectPEM[]; + } + + namespace pki { + type PEM = string; + type PublicKey = rsa.PublicKey | ed25519.Key; + type PrivateKey = rsa.PrivateKey | ed25519.Key; + type EncryptionOptions = { + algorithm?: "aes128" | "aes192" | "aes256" | "3des" | undefined; + count?: number | undefined; + saltSize?: number | undefined; + prfAlgorithm?: "sha1" | "sha224" | "sha256" | "sha384" | "sha512" | undefined; + legacy?: boolean | undefined; + }; + + interface ByteBufferFingerprintOptions { + /** + * @description The type of fingerprint. If not specified, defaults to 'RSAPublicKey' + */ + type?: "SubjectPublicKeyInfo" | "RSAPublicKey" | undefined; + /** + * @description the delimiter to use between bytes for `hex` encoded output + */ + delimiter?: string | undefined; + /** + * @description if not specified defaults to `md.md5` + */ + md?: md.MessageDigest | undefined; + } + + interface HexFingerprintOptions extends ByteBufferFingerprintOptions { + /** + * @description if not specified, the function will return `ByteStringBuffer` + */ + encoding: "hex"; + } + + interface BinaryFingerprintOptions extends ByteBufferFingerprintOptions { + /** + * @description if not specified, the function will return `ByteStringBuffer` + */ + encoding: "binary"; + } + + interface KeyPair { + publicKey: PublicKey; + privateKey: PrivateKey; + } + + interface oids { + [key: string]: string; + } + var oids: oids; + + namespace rsa { + type EncryptionScheme = "RSAES-PKCS1-V1_5" | "RSA-OAEP" | "RAW" | "NONE" | null; + type SignatureScheme = "RSASSA-PKCS1-V1_5" | pss.PSS | "NONE" | null; + + interface PublicKey { + n: jsbn.BigInteger; + e: jsbn.BigInteger; + encrypt(data: Bytes, scheme?: EncryptionScheme, schemeOptions?: any): Bytes; + verify(digest: Bytes, signature: Bytes, scheme?: SignatureScheme): boolean; + } + + interface PrivateKey { + n: jsbn.BigInteger; + e: jsbn.BigInteger; + d: jsbn.BigInteger; + p: jsbn.BigInteger; + q: jsbn.BigInteger; + dP: jsbn.BigInteger; + dQ: jsbn.BigInteger; + qInv: jsbn.BigInteger; + decrypt(data: Bytes, scheme?: EncryptionScheme, schemeOptions?: any): Bytes; + sign(md: md.MessageDigest | Bytes, scheme?: SignatureScheme): Bytes; + } + + interface KeyPair { + publicKey: PublicKey; + privateKey: PrivateKey; + } + + interface GenerateKeyPairOptions { + bits?: number | undefined; + e?: number | undefined; + workerScript?: string | undefined; + workers?: number | undefined; + workLoad?: number | undefined; + prng?: any; + algorithm?: string | undefined; + } + + function setPublicKey(n: jsbn.BigInteger, e: jsbn.BigInteger): PublicKey; + + function setPrivateKey( + n: jsbn.BigInteger, + e: jsbn.BigInteger, + d: jsbn.BigInteger, + p: jsbn.BigInteger, + q: jsbn.BigInteger, + dP: jsbn.BigInteger, + dQ: jsbn.BigInteger, + qInv: jsbn.BigInteger, + ): PrivateKey; + + function generateKeyPair( + bits?: number, + e?: number, + callback?: (err: Error, keypair: KeyPair) => void, + ): KeyPair; + function generateKeyPair( + options?: GenerateKeyPairOptions, + callback?: (err: Error, keypair: KeyPair) => void, + ): KeyPair; + } + + namespace ed25519 { + type NativeBuffer = Buffer | Uint8Array; + type Key = NativeBuffer; + + type ToNativeBufferParameters = + | { + md: md.MessageDigest; + } + | { + message: NativeBuffer | util.ByteBuffer; + } + | { + message: string; + encoding: "binary" | "utf8"; + }; + + // `string`s will be converted by toNativeBuffer with `encoding: 'binary'` + type BinaryBuffer = NativeBuffer | util.ByteBuffer | string; + + namespace constants { + const PUBLIC_KEY_BYTE_LENGTH = 32; + const PRIVATE_KEY_BYTE_LENGTH = 64; + const SEED_BYTE_LENGTH = 32; + const SIGN_BYTE_LENGTH = 64; + const HASH_BYTE_LENGTH = 64; + } + + // generateKeyPair does not currently accept `util.ByteBuffer` as the seed. + function generateKeyPair(options?: { seed?: NativeBuffer | string | undefined }): { + publicKey: NativeBuffer; + privateKey: NativeBuffer; + }; + + function privateKeyFromAsn1(obj: asn1.Asn1): { privateKeyBytes: NativeBuffer }; + + function publicKeyFromAsn1(obj: asn1.Asn1): NativeBuffer; + + function publicKeyFromPrivateKey(options: { privateKey: BinaryBuffer }): NativeBuffer; + + function sign( + options: ToNativeBufferParameters & { + privateKey: BinaryBuffer; + }, + ): NativeBuffer; + + function verify( + options: ToNativeBufferParameters & { + signature: BinaryBuffer; + publicKey: BinaryBuffer; + }, + ): boolean; + } + + interface CertificateFieldOptions { + name?: string | undefined; + type?: string | undefined; + shortName?: string | undefined; + } + + interface CertificateField extends CertificateFieldOptions { + valueConstructed?: boolean | undefined; + valueTagClass?: asn1.Class | undefined; + value?: any[] | string | undefined; + extensions?: any[] | undefined; + } + + interface Certificate { + version: number; + serialNumber: string; + signatureOid: string; + signature: any; + siginfo: { + algorithmOid: string; + parameters: any; + }; + validity: { + notBefore: Date; + notAfter: Date; + }; + issuer: { + getField(sn: string | CertificateFieldOptions): any; + addField(attr: CertificateField): void; + attributes: CertificateField[]; + hash: any; + }; + subject: { + getField(sn: string | CertificateFieldOptions): any; + addField(attr: CertificateField): void; + attributes: CertificateField[]; + hash: any; + }; + extensions: any[]; + privateKey: PrivateKey; + publicKey: PublicKey; + md: md.MessageDigest; + signatureParameters: any; + tbsCertificate: asn1.Asn1; + /** + * Sets the subject of this certificate. + * + * @param attrs the array of subject attributes to use. + * @param uniqueId an optional a unique ID to use. + */ + setSubject(attrs: CertificateField[], uniqueId?: string): void; + /** + * Sets the issuer of this certificate. + * + * @param attrs the array of subject attributes to use. + * @param uniqueId an optional a unique ID to use. + */ + setIssuer(attrs: CertificateField[], uniqueId?: string): void; + /** + * Sets the extensions of this certificate. + * + * @param exts the array of extensions to use. + */ + setExtensions(exts: any[]): void; + /** + * Gets an extension by its name or id. + * + * @param options the name to use or an object with: + * name the name to use. + * id the id to use. + * + * @return the extension or null if not found. + */ + getExtension(options: string | { name: string } | { id: number }): {} | undefined; + + /** + * Signs this certificate using the given private key. + * + * @param key the private key to sign with. + * @param md the message digest object to use (defaults to forge.md.sha1). + */ + sign(key: pki.PrivateKey, md?: md.MessageDigest): void; + /** + * Attempts verify the signature on the passed certificate using this + * certificate's public key. + * + * @param child the certificate to verify. + * + * @return true if verified, false if not. + */ + verify(child: Certificate): boolean; + + /** + * Returns true if this certificate's issuer matches the passed + * certificate's subject. Note that no signature check is performed. + * + * @param parent the certificate to check. + * + * @return true if this certificate's issuer matches the passed certificate's + * subject. + */ + isIssuer(parent: Certificate): boolean; + + /** + * Returns true if this certificate's subject matches the issuer of the + * given certificate). Note that not signature check is performed. + * + * @param child the certificate to check. + * + * @return true if this certificate's subject matches the passed + * certificate's issuer. + */ + issued(child: Certificate): boolean; + + /** + * Generates the subjectKeyIdentifier for this certificate as byte buffer. + * + * @return the subjectKeyIdentifier for this certificate as byte buffer. + */ + generateSubjectKeyIdentifier(): util.ByteStringBuffer; + + /** + * Verifies the subjectKeyIdentifier extension value for this certificate + * against its public key. If no extension is found, false will be + * returned. + * + * @return true if verified, false if not. + */ + verifySubjectKeyIdentifier(): boolean; + } + + interface CertificateRequest extends Certificate { + /** + * Gets an issuer or subject attribute from its name, type, or short name. + * + * @param opts a short name string or an object with: + * shortName the short name for the attribute. + * name the name for the attribute. + * type the type for the attribute. + * + * @return the attribute. + */ + getAttribute(opts: string | GetAttributeOpts): Attribute | null; + } + + /** + * Attribute members to search on; any one hit will return the attribute + */ + interface GetAttributeOpts { + /** + * OID + */ + type?: string | undefined; + /** + * Long name + */ + name?: string | undefined; + /** + * Short name + */ + shortName?: string | undefined; + } + + interface Attribute { + /** + * e.g. challengePassword + */ + name: string; + /** + * Short name, if available (e.g. 'CN' for 'commonName') + */ + shortName?: string | undefined; + /** + * OID, e.g. '1.2.840.113549.1.9.7' + */ + type: string; + /** + * Attribute value + */ + value: any; + /** + * Attribute value data type + */ + valueTagClass: number; + /** + * Extensions + */ + extensions?: any[] | undefined; + } + + interface CAStore { + addCertificate(cert: Certificate | string): void; + hasCertificate(cert: Certificate | string): boolean; + removeCertificate(cert: Certificate | string): Certificate | null; + listAllCertificates(): pki.Certificate[]; + getIssuer(subject: Certificate): Certificate | null; + getBySubject(subject: string): Certificate | null; + } + + function certificateFromAsn1(obj: asn1.Asn1, computeHash?: boolean): Certificate; + + function certificationRequestFromAsn1(obj: asn1.Asn1, computeHash?: boolean): Certificate; + + function certificateToAsn1(cert: Certificate): asn1.Asn1; + + function certificationRequestToAsn1(cert: Certificate): asn1.Asn1; + + function decryptRsaPrivateKey(pem: PEM, passphrase?: string): rsa.PrivateKey; + + function createCertificate(): Certificate; + + function certificationRequestToPem(cert: Certificate, maxline?: number): PEM; + + function certificationRequestFromPem(pem: PEM, computeHash?: boolean, strict?: boolean): Certificate; + + function createCertificationRequest(): CertificateRequest; + + function certificateToPem(cert: Certificate, maxline?: number): PEM; + + function certificateFromPem(pem: PEM, computeHash?: boolean, strict?: boolean): Certificate; + + function createCaStore(certs?: ReadonlyArray): CAStore; + + function verifyCertificateChain( + caStore: CAStore, + chain: Certificate[], + options?: + | ((verified: boolean | string, depth: number, certs: Certificate[]) => boolean) + | { + verify?: + | ((verified: boolean | string, depth: number, certs: Certificate[]) => boolean) + | undefined; + validityCheckDate?: Date | null | undefined; + }, + ): boolean; + + function pemToDer(pem: PEM): util.ByteStringBuffer; + + function privateKeyToPem(key: PrivateKey, maxline?: number): PEM; + + function privateKeyInfoToPem(key: asn1.Asn1, maxline?: number): PEM; + + function publicKeyToPem(key: PublicKey, maxline?: number): PEM; + + function publicKeyToRSAPublicKeyPem(key: PublicKey, maxline?: number): PEM; + + function publicKeyFromPem(pem: PEM): rsa.PublicKey; + + function privateKeyFromPem(pem: PEM): rsa.PrivateKey; + + function decryptPrivateKeyInfo(obj: asn1.Asn1, password: string): asn1.Asn1; + + function encryptPrivateKeyInfo(obj: asn1.Asn1, password: string, options?: EncryptionOptions): asn1.Asn1; + + function encryptedPrivateKeyFromPem(pem: PEM): asn1.Asn1; + + function encryptedPrivateKeyToPem(obj: asn1.Asn1): PEM; + + function decryptRsaPrivateKey(pem: PEM, password: string): rsa.PrivateKey; + + function encryptRsaPrivateKey(privateKey: PrivateKey, password: string, options?: EncryptionOptions): PEM; + + function privateKeyFromAsn1(privateKey: asn1.Asn1): rsa.PrivateKey; + + function privateKeyToAsn1(privateKey: PrivateKey): asn1.Asn1; + + function publicKeyFromAsn1(publicKey: asn1.Asn1): rsa.PublicKey; + + function publicKeyToAsn1(publicKey: PublicKey): asn1.Asn1; + + function publicKeyToRSAPublicKey(publicKey: PublicKey): any; + + const setRsaPublicKey: typeof pki.rsa.setPublicKey; + + const setRsaPrivateKey: typeof pki.rsa.setPrivateKey; + + function wrapRsaPrivateKey(privateKey: asn1.Asn1): asn1.Asn1; + + function getPublicKeyFingerprint( + publicKey: PublicKey, + options?: ByteBufferFingerprintOptions, + ): util.ByteStringBuffer; + function getPublicKeyFingerprint(publicKey: PublicKey, options: HexFingerprintOptions): Hex; + function getPublicKeyFingerprint(publicKey: PublicKey, options: BinaryFingerprintOptions): Bytes; + } + + namespace random { + function getBytes(count: number, callback?: (err: Error | null, bytes: Bytes) => any): void; + function getBytesSync(count: number): Bytes; + type CB = (_: any, seed: string) => void; + interface Random { + seedFileSync: (needed: number) => string; + seedFile: (needed: number, cb: CB) => void; + } + function createInstance(): Random; + } + + namespace ssh { + interface FingerprintOptions { + /** + * @description the delimiter to use between bytes for `hex` encoded output + */ + delimiter?: string | undefined; + /** + * @description if not specified, the function will return `ByteStringBuffer` + */ + encoding?: "hex" | "binary" | undefined; + /** + * @description if not specified defaults to `md.md5` + */ + md?: md.MessageDigest | undefined; + } + + /** + * @description Encodes a private RSA key as an OpenSSH file + */ + function privateKeyToOpenSSH(privateKey: pki.PrivateKey, passphrase?: string): string; + + /** + * @description Encodes (and optionally encrypts) a private RSA key as a Putty PPK file + */ + function privateKeyToPutty(privateKey: pki.PrivateKey, passphrase?: string, comment?: string): string; + + /** + * @description Encodes a public RSA key as an OpenSSH file + */ + function publicKeyToOpenSSH(publicKey: pki.PublicKey, comment?: string): string | pki.PEM; + + /** + * @description Gets the SSH fingerprint for the given public key + */ + function getPublicKeyFingerprint( + publicKey: pki.PublicKey, + options?: FingerprintOptions, + ): util.ByteStringBuffer | Hex | string; + } + + namespace asn1 { + enum Class { + UNIVERSAL = 0x00, + APPLICATION = 0x40, + CONTEXT_SPECIFIC = 0x80, + PRIVATE = 0xc0, + } + + enum Type { + NONE = 0, + BOOLEAN = 1, + INTEGER = 2, + BITSTRING = 3, + OCTETSTRING = 4, + NULL = 5, + OID = 6, + ODESC = 7, + EXTERNAL = 8, + REAL = 9, + ENUMERATED = 10, + EMBEDDED = 11, + UTF8 = 12, + ROID = 13, + SEQUENCE = 16, + SET = 17, + PRINTABLESTRING = 19, + IA5STRING = 22, + UTCTIME = 23, + GENERALIZEDTIME = 24, + BMPSTRING = 30, + } + + interface Asn1 { + tagClass: Class; + type: Type; + constructed: boolean; + composed: boolean; + value: Bytes | Asn1[]; + } + + function create(tagClass: Class, type: Type, constructed: boolean, value: Bytes | Asn1[]): Asn1; + function fromDer(bytes: Bytes | util.ByteBuffer, strict?: boolean): Asn1; + function toDer(obj: Asn1): util.ByteBuffer; + + /** + * Converts an OID dot-separated string to a byte buffer. The byte buffer + * contains only the DER-encoded value, not any tag or length bytes. + * + * @param oid the OID dot-separated string. + * + * @return the byte buffer. + */ + function oidToDer(oid: OID): util.ByteBuffer; + + /** + * Converts a DER-encoded byte buffer to an OID dot-separated string. The + * byte buffer should contain only the DER-encoded value, not any tag or + * length bytes. + * + * @param bytes the byte buffer. + * + * @return the OID dot-separated string. + */ + function derToOid(bytes: Bytes | util.ByteBuffer): OID; + + function integerToDer(int: number): util.ByteBuffer; + function derToInteger(bytes: Bytes | util.ByteBuffer): number; + + function dateToUtcTime(date: Date | string): Bytes; + function utcTimeToDate(bytes: Bytes): Date; + + function dateToGeneralizedTime(date: Date | string): Bytes; + function generalizedTimeToDate(bytes: Bytes): Date; + } + + namespace util { + function isArray(x: any): boolean; + function isArrayBuffer(x: any): boolean; + function isArrayBufferView(x: any): boolean; + + interface ArrayBufferView { + buffer: ArrayBuffer; + byteLength: number; + } + + type ByteBuffer = ByteStringBuffer; + class ByteStringBuffer { + constructor(bytes?: Bytes | ArrayBuffer | ArrayBufferView | ByteStringBuffer); + data: string; + read: number; + length(): number; + isEmpty(): boolean; + putByte(byte: Byte): ByteStringBuffer; + fillWithByte(byte: Byte, n: number): ByteStringBuffer; + putBytes(bytes: Bytes): ByteStringBuffer; + putString(str: string): ByteStringBuffer; + putInt16(int: number): ByteStringBuffer; + putInt24(int: number): ByteStringBuffer; + putInt32(int: number): ByteStringBuffer; + putInt16Le(int: number): ByteStringBuffer; + putInt24Le(int: number): ByteStringBuffer; + putInt32Le(int: number): ByteStringBuffer; + putInt(int: number, numOfBits: number): ByteStringBuffer; + putSignedInt(int: number, numOfBits: number): ByteStringBuffer; + putBuffer(buffer: ByteStringBuffer): ByteStringBuffer; + getByte(): number; + getInt16(): number; + getInt24(): number; + getInt32(): number; + getInt16Le(): number; + getInt24Le(): number; + getInt32Le(): number; + getInt(numOfBits: number): number; + getSignedInt(numOfBits: number): number; + getBytes(count?: number): Bytes; + bytes(count?: number): Bytes; + at(index: number): Byte; + setAt(index: number, byte: number): ByteStringBuffer; + last(): Byte; + copy(): ByteStringBuffer; + compact(): ByteStringBuffer; + clear(): ByteStringBuffer; + truncate(): ByteStringBuffer; + toHex(): Hex; + toString(): string; + } + + function fillString(char: string, count: number): string; + function xorBytes(bytes1: string, bytes2: string, count: number): string; + function hexToBytes(hex: Hex): Bytes; + function bytesToHex(bytes: Bytes): Hex; + function int32ToBytes(int: number): Bytes; + function encode64(bytes: Bytes, maxline?: number): Base64; + function decode64(encoded: Base64): Bytes; + function encodeUtf8(str: string): Utf8; + function decodeUtf8(encoded: Utf8): string; + + function createBuffer(): ByteBuffer; + function createBuffer( + input: Bytes | ArrayBuffer | ArrayBufferView | ByteStringBuffer, + encoding?: Encoding, + ): ByteBuffer; + + namespace binary { + namespace raw { + function encode(x: Uint8Array): Bytes; + function decode(str: Bytes, output?: Uint8Array, offset?: number): Uint8Array; + } + namespace hex { + function encode(bytes: Bytes | ArrayBuffer | ArrayBufferView | ByteStringBuffer): Hex; + function decode(hex: Hex, output?: Uint8Array, offset?: number): Uint8Array; + } + namespace base64 { + function encode(input: Uint8Array, maxline?: number): Base64; + function decode(input: Base64, output?: Uint8Array, offset?: number): Uint8Array; + } + } + + namespace text { + namespace utf8 { + function encode(str: string, output?: Uint8Array, offset?: number): Uint8Array; + function decode(bytes: Uint8Array): Utf8; + } + namespace utf16 { + function encode(str: string, output?: Uint8Array, offset?: number): Uint8Array; + function decode(bytes: Uint8Array): string; + } + } + } + + namespace pkcs12 { + interface BagsFilter { + localKeyId?: string | undefined; + localKeyIdHex?: string | undefined; + friendlyName?: string | undefined; + bagType?: string | undefined; + } + + interface Bag { + type: string; + attributes: any; + key?: pki.PrivateKey | undefined; + cert?: pki.Certificate | undefined; + asn1: asn1.Asn1; + } + + interface Pkcs12Pfx { + version: string; + safeContents: { + encrypted: boolean; + safeBags: Bag[]; + }[]; + getBags: (filter: BagsFilter) => { + [key: string]: Bag[] | undefined; + localKeyId?: Bag[] | undefined; + friendlyName?: Bag[] | undefined; + }; + getBagsByFriendlyName: (fiendlyName: string, bagType: string) => Bag[]; + getBagsByLocalKeyId: (localKeyId: string, bagType: string) => Bag[]; + } + + function pkcs12FromAsn1(obj: any, strict?: boolean, password?: string): Pkcs12Pfx; + function pkcs12FromAsn1(obj: any, password?: string): Pkcs12Pfx; + + function toPkcs12Asn1( + key: pki.PrivateKey | null, + cert: pki.Certificate | pki.Certificate[], + password: string | null, + options?: { + algorithm?: "aes128" | "aes192" | "aes256" | "3des" | undefined; + count?: number | undefined; + saltSize?: number | undefined; + useMac?: boolean | undefined; + localKeyId?: Hex | undefined; + friendlyName?: string | undefined; + generateLocalKeyId?: boolean | undefined; + }, + ): asn1.Asn1; + + function generateKey( + password: string | null | undefined, + salt: util.ByteBuffer, + id: Byte, + iter: number, + n: number, + md?: md.MessageDigest, + ): util.ByteBuffer; + } + + namespace pkcs7 { + interface PkcsSignedData { + content?: string | util.ByteBuffer | undefined; + contentInfo?: { value: any[] } | undefined; + + certificates: pki.Certificate[]; + + addCertificate(certificate: pki.Certificate | string): void; + addSigner(options: { + key: pki.rsa.PrivateKey | string; + certificate: pki.Certificate | string; + digestAlgorithm: string; + authenticatedAttributes?: { type: string; value?: string | undefined }[] | undefined; + }): void; + sign(options?: { detached?: boolean | undefined }): void; + toAsn1(): asn1.Asn1; + } + + function createSignedData(): PkcsSignedData; + + interface Recipient { + version: number; + issuer: pki.CertificateField[]; + serialNumber: Hex; + encryptedContent: { + algorithm: OID; + parameter: Bytes; + content: Bytes; + }; + } + + interface PkcsEnvelopedData { + content?: string | util.ByteBuffer | undefined; + recipients: Recipient[]; + + /** + * Add (another) entity to list of recipients. + * + * @param certificate The certificate of the entity to add. + */ + addRecipient(certificate: pki.Certificate): void; + /** + * Encrypt enveloped content. + * + * This function supports two optional arguments, cipher and key, which + * can be used to influence symmetric encryption. Unless cipher is + * provided, the cipher specified in encryptedContent.algorithm is used + * (defaults to AES-256-CBC). If no key is provided, encryptedContent.key + * is (re-)used. If that one's not set, a random key will be generated + * automatically. + * + * @param [key] The key to be used for symmetric encryption. + * @param [cipher] The OID of the symmetric cipher to use. + */ + encrypt(key?: util.ByteBuffer, cipher?: OID): void; + + /** + * Find recipient by X.509 certificate's issuer and serialNumber. + * + * @param cert the certificate with the issuer to look for. + * + * @return the recipient object, or `null` if no match. + */ + findRecipient(cert: pki.Certificate): Recipient | null; + /** + * Decrypt enveloped content + * + * @param recipient The recipient object related to the private key + * @param privKey The (RSA) private key object + */ + decrypt(recipient: Recipient, privKey: pki.rsa.PrivateKey): void; + + toAsn1(): asn1.Asn1; + } + + function createEnvelopedData(): PkcsEnvelopedData; + + /** When a PKCS#7 object has been created by reading from a message, the raw captured object is joined */ + type Captured = T & { + rawCapture: any; + }; + + /** + * Converts a PKCS#7 message to PEM format. + * + * @param msg The PKCS#7 message object + * @param maxline The maximum characters per line, defaults to 64. + * + * @return The PEM-formatted PKCS#7 message. + */ + function messageToPem(msg: PkcsSignedData, maxline?: number): string; + + /** + * Converts a PKCS#7 message from PEM format. + * + * @param pem the PEM-formatted PKCS#7 message. + * + * @return the PKCS#7 message. + */ + function messageFromPem(pem: pki.PEM): Captured; + + /** + * Converts a PKCS#7 message from an ASN.1 object. + * + * @param asn the ASN.1 representation of a ContentInfo. + * + * @return the PKCS#7 message. + */ + function messageFromAsn1(asn: asn1.Asn1): Captured; + } + + namespace pkcs5 { + function pbkdf2(password: string, salt: string, iterations: number, keySize: number): string; + function pbkdf2( + password: string, + salt: string, + iterations: number, + keySize: number, + messageDigest: md.MessageDigest | md.Algorithm, + ): string; + function pbkdf2( + password: string, + salt: string, + iterations: number, + keySize: number, + callback: (err: Error | null, dk: string | null) => any, + ): void; + function pbkdf2( + password: string, + salt: string, + iterations: number, + keySize: number, + messageDigest?: md.MessageDigest | md.Algorithm, + callback?: (err: Error | null, dk: string) => any, + ): void; + } + + const md: { + sha1: { + create(): md.sha1.MessageDigest; + }; + sha256: { + create(): md.sha256.MessageDigest; + }; + sha512: { + create( + /** @default 'SHA-512' */ + algorithm?: TAlg, + ): TAlg extends md.sha512.AlgorithmSelection.Sha384 ? md.sha512.Sha384MessageDigest + : TAlg extends md.sha512.AlgorithmSelection.Sha512224 ? md.sha512.Sha512224MessageDigest + : TAlg extends md.sha512.AlgorithmSelection.Sha512256 ? md.sha512.Sha512256MessageDigest + : TAlg extends md.sha512.AlgorithmSelection.Sha512 ? md.sha512.Sha512MessageDigest + : never; + sha224: { + create(): md.sha512.Sha512224MessageDigest; + }; + sha256: { + create(): md.sha512.Sha512256MessageDigest; + }; + sha384: { + create(): md.sha512.Sha384MessageDigest; + }; + }; + sha384: typeof md.sha512.sha384; + "sha512/224": typeof md.sha512.sha224; + "sha512/256": typeof md.sha512.sha256; + md5: { + create(): md.md5.MessageDigest; + }; + algorithms: { + md5: typeof md.md5; + sha1: typeof md.sha1; + sha256: typeof md.sha256; + sha384: typeof md.sha384; + sha512: typeof md.sha512; + "sha512/224": (typeof md)["sha512/224"]; + "sha512/256": (typeof md)["sha512/256"]; + }; + }; + + const md5: typeof md.md5; + const sha1: typeof md.sha1; + const sha256: typeof md.sha256; + const sha384: typeof md.sha384; + const sha512: typeof md.sha512; + + namespace md { + type Algorithm = md5.Algorithm | sha1.Algorithm | sha256.Algorithm | sha512.Algorithm; + + interface MessageDigest { + readonly algorithm: Algorithm; + readonly blockLength: number; + readonly digestLength: number; + messageLength: number; + fullMessageLength: number[] | null; + readonly messageLengthSize: number; + update(msg: string, encoding?: Encoding): this; + digest(): util.ByteStringBuffer; + } + + namespace md5 { + type Algorithm = "md5"; + + interface MessageDigest extends md.MessageDigest { + readonly algorithm: Algorithm; + readonly blockLength: 64; + readonly digestLength: 16; + readonly messageLengthSize: 8; + } + } + + namespace sha1 { + type Algorithm = "sha1"; + + interface MessageDigest extends md.MessageDigest { + readonly algorithm: Algorithm; + readonly blockLength: 64; + readonly digestLength: 20; + readonly messageLengthSize: 8; + } + } + + namespace sha256 { + type Algorithm = "sha256"; + + interface MessageDigest extends md.MessageDigest { + readonly algorithm: Algorithm; + readonly blockLength: 64; + readonly digestLength: 32; + readonly messageLengthSize: 8; + } + } + + namespace sha512 { + type Algorithm = Algorithm.Sha384 | Algorithm.Sha512 | Algorithm.Sha512224 | Algorithm.Sha512256; + namespace Algorithm { + type Sha384 = "sha384"; + type Sha512 = "sha512"; + type Sha512224 = "sha512/224"; + type Sha512256 = "sha512/256"; + } + + type AlgorithmSelection = + | AlgorithmSelection.Sha384 + | AlgorithmSelection.Sha512 + | AlgorithmSelection.Sha512224 + | AlgorithmSelection.Sha512256; + namespace AlgorithmSelection { + type Sha384 = "SHA-384"; + type Sha512 = "SHA-512"; + type Sha512224 = "SHA-512/224"; + type Sha512256 = "SHA-512/256"; + } + + interface MessageDigest extends md.MessageDigest { + readonly algorithm: Algorithm; + readonly blockLength: 128; + readonly messageLengthSize: 16; + } + + interface Sha512224MessageDigest extends MessageDigest { + readonly algorithm: Algorithm.Sha512224; + readonly digestLength: 28; + } + + interface Sha512256MessageDigest extends MessageDigest { + readonly algorithm: Algorithm.Sha512256; + readonly digestLength: 32; + } + + interface Sha384MessageDigest extends MessageDigest { + readonly algorithm: Algorithm.Sha384; + readonly digestLength: 48; + } + + interface Sha512MessageDigest extends MessageDigest { + readonly algorithm: Algorithm.Sha512; + readonly digestLength: 64; + } + } + } + + namespace hmac { + type Algorithm = md.Algorithm; + + interface HMAC { + digest(): util.ByteBuffer; + getMac(): util.ByteBuffer; + start(md: Algorithm | md.MessageDigest, key: string | util.ByteBuffer | null): void; + update(bytes: string): void; + } + + function create(): HMAC; + } + + namespace cipher { + type Algorithm = + | "AES-ECB" + | "AES-CBC" + | "AES-CFB" + | "AES-OFB" + | "AES-CTR" + | "AES-GCM" + | "3DES-ECB" + | "3DES-CBC" + | "DES-ECB" + | "DES-CBC"; + + function createCipher(algorithm: Algorithm, payload: util.ByteBuffer | Bytes): BlockCipher; + function createDecipher(algorithm: Algorithm, payload: util.ByteBuffer | Bytes): BlockCipher; + + interface StartOptions { + iv?: util.ByteBuffer | Byte[] | Bytes | undefined; + tag?: util.ByteStringBuffer | undefined; + tagLength?: number | undefined; + additionalData?: string | undefined; + } + + interface BlockCipher { + start: (options?: StartOptions) => void; + update: (payload: util.ByteBuffer) => void; + finish: () => boolean; + output: util.ByteStringBuffer; + mode: Mode; + } + + interface Mode { + tag: util.ByteStringBuffer; + } + } + + namespace pss { + type PSS = any; + + function create(any: any): PSS; + } + + namespace mgf { + namespace mgf1 { + function create(any: any): any; + } + } + + namespace tls { + interface ProtocolVersion { + major: Byte; + minor: Byte; + } + + const Versions: ProtocolVersion[]; + const SupportedVersions: ProtocolVersion[]; + const Version: ProtocolVersion; + + const MaxFragment: number; + + enum ConnectionEnd { + server = 0, + client = 1, + } + + enum PRFAlgorithm { + tls_prf_sha256 = 0, + } + + enum BulkCipherAlgorithm { + rc4 = 0, + des3 = 1, + aes = 2, + } + + enum CipherType { + stream = 0, + block = 1, + aead = 2, + } + + enum MACAlgorithm { + hmac_md5 = 0, + hmac_sha1 = 1, + hmac_sha256 = 2, + hmac_sha384 = 3, + hmac_sha512 = 4, + } + + enum CompressionMethod { + none = 0, + deflate = 1, + } + + enum ContentType { + change_cipher_spec = 20, + alert = 21, + handshake = 22, + application_data = 23, + heartbeat = 24, + } + + enum HandshakeType { + hello_request = 0, + client_hello = 1, + server_hello = 2, + certificate = 11, + server_key_exchange = 12, + certificate_request = 13, + server_hello_done = 14, + certificate_verify = 15, + client_key_exchange = 16, + finished = 20, + } + + namespace Alert { + enum Level { + warning = 1, + fatal = 2, + } + + enum Description { + close_notify = 0, + unexpected_message = 10, + bad_record_mac = 20, + decryption_failed = 21, + record_overflow = 22, + decompression_failure = 30, + handshake_failure = 40, + bad_certificate = 42, + unsupported_certificate = 43, + certificate_revoked = 44, + certificate_expired = 45, + certificate_unknown = 46, + illegal_parameter = 47, + unknown_ca = 48, + access_denied = 49, + decode_error = 50, + decrypt_error = 51, + export_restriction = 60, + protocol_version = 70, + insufficient_security = 71, + internal_error = 80, + user_canceled = 90, + no_renegotiation = 100, + } + } + + enum HeartbeatMessageType { + heartbeat_request = 1, + heartbeat_response = 2, + } + + interface CipherSuite { + id: [Byte, Byte]; + name: string; + } + + const CipherSuites: { [name: string]: CipherSuite }; + + interface CertificateRequest { + certificate_types: util.ByteBuffer; + certificate_authorities: util.ByteBuffer; + } + + type ConnectionState = any; + + interface Connection { + version: ProtocolVersion; + entity: ConnectionEnd; + sessionId: Bytes | null; + caStore: pki.CAStore; + sessionCache: SessionCache | null; + cipherSuites: CipherSuite[]; + connected(conn: Connection): void; + virtualHost: string | null; + verifyClient: boolean; + verify(conn: Connection, verified: Verified, depth: number, certs: pki.Certificate[]): Verified; + getCertificate: + | ((conn: Connection, hint: CertificateRequest | string[]) => pki.PEM | ReadonlyArray) + | null; + getPrivateKey: ((conn: Connection, certificate: pki.Certificate) => pki.PEM) | null; + getSignature: + | ((conn: Connection, bytes: Bytes, callback: (conn: Connection, bytes: Bytes) => void) => void) + | null; + input: util.ByteBuffer; + tlsData: util.ByteBuffer; + data: util.ByteBuffer; + tlsDataReady(conn: Connection): void; + dataReady(conn: Connection): void; + heartbeatReceived: ((conn: Connection, payload: util.ByteBuffer) => void) | undefined; + closed(conn: Connection): void; + error(conn: Connection, error: TLSError): void; + deflate: ((inBytes: Bytes) => Bytes) | null; + inflate: ((inBytes: Bytes) => Bytes) | null; + reset(clearFail?: boolean): void; + record: Record | null; + session: Session | null; + peerCertificate: pki.Certificate | null; + state: { pending: ConnectionState | null; current: ConnectionState }; + expect: number; + fragmented: Record | null; + records: Record[]; + open: boolean; + handshakes: number; + handshaking: boolean; + isConnected: boolean; + fail: boolean; + handshake(sessionId?: Bytes | null): void; + process(data: Bytes): number; + prepare(data: Bytes): boolean; + prepareHeartbeatRequest(payload: Bytes | util.ByteBuffer, payloadLength?: number): boolean; + close(clearFail?: boolean): Connection; + } + + interface Record { + type: ContentType; + version: ProtocolVersion; + length: number; + fragment: util.ByteBuffer; + ready?: boolean | undefined; + } + + interface Session { + version: ProtocolVersion | null; + extensions: { [_: string]: object }; + cipherSuite: CipherSuite | null; + compressionMethod: CompressionMethod | null; + serverCertificate: pki.Certificate | null; + clientCertificate: pki.Certificate | null; + md5: md.MessageDigest; + sha1: md.MessageDigest; + } + + interface SessionCache { + cache: { [key: string]: Session }; + capacity: number; + order: [Hex]; + getSession(sessionId: Bytes): Session; + setSession(sessionId: Bytes, session: Session): void; + } + + function createSessionCache(cache?: SessionCache | { [key: string]: Session }, capacity?: number): SessionCache; + + interface Alert { + level: Alert.Level; + description: Alert.Description; + } + + interface TLSError extends Error { + message: string; + send: boolean; + origin: "server" | "client"; + alert: Alert; + } + + type Verified = true | { message?: string | undefined; alert?: Alert.Description | undefined }; + + function createConnection(options: { + server?: boolean | undefined; + sessionId?: Bytes | null | undefined; + caStore?: pki.CAStore | ReadonlyArray | undefined; + sessionCache?: SessionCache | { [key: string]: Session } | undefined; + cipherSuites?: CipherSuite[] | undefined; + connected(conn: Connection): void; + virtualHost?: string | undefined; + verifyClient?: boolean | undefined; + verify?(conn: Connection, verified: Verified, depth: number, certs: pki.Certificate[]): Verified; + getCertificate?(conn: Connection, hint: CertificateRequest | string[]): pki.PEM | ReadonlyArray; + getPrivateKey?(conn: Connection, certificate: pki.Certificate): pki.PEM; + getSignature?(conn: Connection, bytes: Bytes, callback: (conn: Connection, bytes: Bytes) => void): void; + tlsDataReady(conn: Connection): void; + dataReady(conn: Connection): void; + heartbeatReceived?(conn: Connection, payload: util.ByteBuffer): void; + closed(conn: Connection): void; + error(conn: Connection, error: TLSError): void; + deflate?(inBytes: Bytes): Bytes; + inflate?(inBytes: Bytes): Bytes; + }): Connection; + + function prf_tls1(secret: string, label: string, seed: string, length: number): util.ByteBuffer; + + function hmac_sha1( + key: string | ReadonlyArray | util.ByteBuffer, + seqNum: [number, number], + record: Record, + ): Bytes; + } +} diff --git a/node_modules/@types/node-forge/package.json b/node_modules/@types/node-forge/package.json new file mode 100644 index 00000000..d16a2cfb --- /dev/null +++ b/node_modules/@types/node-forge/package.json @@ -0,0 +1,107 @@ +{ + "name": "@types/node-forge", + "version": "1.3.9", + "description": "TypeScript definitions for node-forge", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node-forge", + "license": "MIT", + "contributors": [ + { + "name": "Seth Westphal ", + "githubUsername": "westy92", + "url": "https://github.com/westy92" + }, + { + "name": "Kay Schecker ", + "githubUsername": "flynetworks", + "url": "https://github.com/flynetworks" + }, + { + "name": "Aakash Goenka ", + "githubUsername": "a-k-g", + "url": "https://github.com/a-k-g" + }, + { + "name": "Rafal2228 ", + "githubUsername": "rafal2228", + "url": "https://github.com/rafal2228" + }, + { + "name": "Beeno Tung ", + "githubUsername": "beenotung", + "url": "https://github.com/beenotung" + }, + { + "name": "Joe Flateau ", + "githubUsername": "joeflateau", + "url": "https://github.com/joeflateau" + }, + { + "name": "timhwang21 ", + "githubUsername": "timhwang21", + "url": "https://github.com/timhwang21" + }, + { + "name": "Anders Kaseorg ", + "githubUsername": "andersk", + "url": "https://github.com/andersk" + }, + { + "name": "Sascha Zarhuber ", + "githubUsername": "saschazar21", + "url": "https://github.com/saschazar21" + }, + { + "name": "Rogier Schouten ", + "githubUsername": "rogierschouten", + "url": "https://github.com/rogierschouten" + }, + { + "name": "Ivan Aseev ", + "githubUsername": "aseevia", + "url": "https://github.com/aseevia" + }, + { + "name": "Wiktor Kwapisiewicz", + "githubUsername": "wiktor-k", + "url": "https://github.com/wiktor-k" + }, + { + "name": "Ligia Frangello ", + "githubUsername": "frangello", + "url": "https://github.com/frangello" + }, + { + "name": "Dmitry Avezov ", + "githubUsername": "avezov", + "url": "https://github.com/avezov" + }, + { + "name": "Jose Fuentes ", + "githubUsername": "j-fuentes", + "url": "https://github.com/j-fuentes" + }, + { + "name": "Anya Reyes ", + "githubUsername": "darkade", + "url": "https://github.com/darkade" + }, + { + "name": "BendingBender ", + "githubUsername": "BendingBender", + "url": "https://github.com/BendingBender" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/node-forge" + }, + "scripts": {}, + "dependencies": { + "@types/node": "*" + }, + "typesPublisherContentHash": "28c7b54f84b6c106ed0dac4abc74cee095cf1b9d30ef848bc442d8d640b9726c", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/node/LICENSE b/node_modules/@types/node/LICENSE new file mode 100644 index 00000000..9e841e7a --- /dev/null +++ b/node_modules/@types/node/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + 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 diff --git a/node_modules/@types/node/README.md b/node_modules/@types/node/README.md new file mode 100644 index 00000000..3a45f36e --- /dev/null +++ b/node_modules/@types/node/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/node` + +# Summary +This package contains type definitions for node (https://nodejs.org/). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 20:08:00 GMT + * Dependencies: [undici-types](https://npmjs.com/package/undici-types) + +# Credits +These definitions were written by [Microsoft TypeScript](https://github.com/Microsoft), [Alberto Schiabel](https://github.com/jkomyno), [Alvis HT Tang](https://github.com/alvis), [Andrew Makarov](https://github.com/r3nya), [Benjamin Toueg](https://github.com/btoueg), [Chigozirim C.](https://github.com/smac89), [David Junger](https://github.com/touffy), [Deividas Bakanas](https://github.com/DeividasBakanas), [Eugene Y. Q. Shen](https://github.com/eyqs), [Hannes Magnusson](https://github.com/Hannes-Magnusson-CK), [Huw](https://github.com/hoo29), [Kelvin Jin](https://github.com/kjin), [Klaus Meinhardt](https://github.com/ajafff), [Lishude](https://github.com/islishude), [Mariusz Wiktorczyk](https://github.com/mwiktorczyk), [Mohsen Azimi](https://github.com/mohsen1), [Nicolas Even](https://github.com/n-e), [Nikita Galkin](https://github.com/galkin), [Parambir Singh](https://github.com/parambirs), [Sebastian Silbermann](https://github.com/eps1lon), [Thomas den Hollander](https://github.com/ThomasdenH), [Wilco Bakker](https://github.com/WilcoBakker), [wwwy3y3](https://github.com/wwwy3y3), [Samuel Ainsworth](https://github.com/samuela), [Kyle Uehlein](https://github.com/kuehlein), [Thanik Bhongbhibhat](https://github.com/bhongy), [Marcin Kopacz](https://github.com/chyzwar), [Trivikram Kamat](https://github.com/trivikr), [Junxiao Shi](https://github.com/yoursunny), [Ilia Baryshnikov](https://github.com/qwelias), [ExE Boss](https://github.com/ExE-Boss), [Piotr Błażejewicz](https://github.com/peterblazejewicz), [Anna Henningsen](https://github.com/addaleax), [Victor Perin](https://github.com/victorperin), [Yongsheng Zhang](https://github.com/ZYSzys), [NodeJS Contributors](https://github.com/NodeJS), [Linus Unnebäck](https://github.com/LinusU), [wafuwafu13](https://github.com/wafuwafu13), [Matteo Collina](https://github.com/mcollina), and [Dmitry Semigradsky](https://github.com/Semigradsky). diff --git a/node_modules/@types/node/assert.d.ts b/node_modules/@types/node/assert.d.ts new file mode 100644 index 00000000..e237c56c --- /dev/null +++ b/node_modules/@types/node/assert.d.ts @@ -0,0 +1,996 @@ +/** + * The `node:assert` module provides a set of assertion functions for verifying + * invariants. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/assert.js) + */ +declare module "assert" { + /** + * An alias of {@link ok}. + * @since v0.5.9 + * @param value The input that is checked for being truthy. + */ + function assert(value: unknown, message?: string | Error): asserts value; + namespace assert { + /** + * Indicates the failure of an assertion. All errors thrown by the `node:assert`module will be instances of the `AssertionError` class. + */ + class AssertionError extends Error { + /** + * Set to the `actual` argument for methods such as {@link assert.strictEqual()}. + */ + actual: unknown; + /** + * Set to the `expected` argument for methods such as {@link assert.strictEqual()}. + */ + expected: unknown; + /** + * Set to the passed in operator value. + */ + operator: string; + /** + * Indicates if the message was auto-generated (`true`) or not. + */ + generatedMessage: boolean; + /** + * Value is always `ERR_ASSERTION` to show that the error is an assertion error. + */ + code: "ERR_ASSERTION"; + constructor(options?: { + /** If provided, the error message is set to this value. */ + message?: string | undefined; + /** The `actual` property on the error instance. */ + actual?: unknown | undefined; + /** The `expected` property on the error instance. */ + expected?: unknown | undefined; + /** The `operator` property on the error instance. */ + operator?: string | undefined; + /** If provided, the generated stack trace omits frames before this function. */ + // tslint:disable-next-line:ban-types + stackStartFn?: Function | undefined; + }); + } + /** + * This feature is deprecated and will be removed in a future version. + * Please consider using alternatives such as the `mock` helper function. + * @since v14.2.0, v12.19.0 + * @deprecated Deprecated + */ + class CallTracker { + /** + * The wrapper function is expected to be called exactly `exact` times. If the + * function has not been called exactly `exact` times when `tracker.verify()` is called, then `tracker.verify()` will throw an + * error. + * + * ```js + * import assert from 'node:assert'; + * + * // Creates call tracker. + * const tracker = new assert.CallTracker(); + * + * function func() {} + * + * // Returns a function that wraps func() that must be called exact times + * // before tracker.verify(). + * const callsfunc = tracker.calls(func); + * ``` + * @since v14.2.0, v12.19.0 + * @param [fn='A no-op function'] + * @param [exact=1] + * @return that wraps `fn`. + */ + calls(exact?: number): () => void; + calls any>(fn?: Func, exact?: number): Func; + /** + * Example: + * + * ```js + * import assert from 'node:assert'; + * + * const tracker = new assert.CallTracker(); + * + * function func() {} + * const callsfunc = tracker.calls(func); + * callsfunc(1, 2, 3); + * + * assert.deepStrictEqual(tracker.getCalls(callsfunc), + * [{ thisArg: undefined, arguments: [1, 2, 3] }]); + * ``` + * @since v18.8.0, v16.18.0 + * @param fn + * @return An Array with all the calls to a tracked function. + */ + getCalls(fn: Function): CallTrackerCall[]; + /** + * The arrays contains information about the expected and actual number of calls of + * the functions that have not been called the expected number of times. + * + * ```js + * import assert from 'node:assert'; + * + * // Creates call tracker. + * const tracker = new assert.CallTracker(); + * + * function func() {} + * + * // Returns a function that wraps func() that must be called exact times + * // before tracker.verify(). + * const callsfunc = tracker.calls(func, 2); + * + * // Returns an array containing information on callsfunc() + * console.log(tracker.report()); + * // [ + * // { + * // message: 'Expected the func function to be executed 2 time(s) but was + * // executed 0 time(s).', + * // actual: 0, + * // expected: 2, + * // operator: 'func', + * // stack: stack trace + * // } + * // ] + * ``` + * @since v14.2.0, v12.19.0 + * @return An Array of objects containing information about the wrapper functions returned by `calls`. + */ + report(): CallTrackerReportInformation[]; + /** + * Reset calls of the call tracker. + * If a tracked function is passed as an argument, the calls will be reset for it. + * If no arguments are passed, all tracked functions will be reset. + * + * ```js + * import assert from 'node:assert'; + * + * const tracker = new assert.CallTracker(); + * + * function func() {} + * const callsfunc = tracker.calls(func); + * + * callsfunc(); + * // Tracker was called once + * assert.strictEqual(tracker.getCalls(callsfunc).length, 1); + * + * tracker.reset(callsfunc); + * assert.strictEqual(tracker.getCalls(callsfunc).length, 0); + * ``` + * @since v18.8.0, v16.18.0 + * @param fn a tracked function to reset. + */ + reset(fn?: Function): void; + /** + * Iterates through the list of functions passed to `tracker.calls()` and will throw an error for functions that + * have not been called the expected number of times. + * + * ```js + * import assert from 'node:assert'; + * + * // Creates call tracker. + * const tracker = new assert.CallTracker(); + * + * function func() {} + * + * // Returns a function that wraps func() that must be called exact times + * // before tracker.verify(). + * const callsfunc = tracker.calls(func, 2); + * + * callsfunc(); + * + * // Will throw an error since callsfunc() was only called once. + * tracker.verify(); + * ``` + * @since v14.2.0, v12.19.0 + */ + verify(): void; + } + interface CallTrackerCall { + thisArg: object; + arguments: unknown[]; + } + interface CallTrackerReportInformation { + message: string; + /** The actual number of times the function was called. */ + actual: number; + /** The number of times the function was expected to be called. */ + expected: number; + /** The name of the function that is wrapped. */ + operator: string; + /** A stack trace of the function. */ + stack: object; + } + type AssertPredicate = RegExp | (new() => object) | ((thrown: unknown) => boolean) | object | Error; + /** + * Throws an `AssertionError` with the provided error message or a default + * error message. If the `message` parameter is an instance of an `Error` then + * it will be thrown instead of the `AssertionError`. + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.fail(); + * // AssertionError [ERR_ASSERTION]: Failed + * + * assert.fail('boom'); + * // AssertionError [ERR_ASSERTION]: boom + * + * assert.fail(new TypeError('need array')); + * // TypeError: need array + * ``` + * + * Using `assert.fail()` with more than two arguments is possible but deprecated. + * See below for further details. + * @since v0.1.21 + * @param [message='Failed'] + */ + function fail(message?: string | Error): never; + /** @deprecated since v10.0.0 - use fail([message]) or other assert functions instead. */ + function fail( + actual: unknown, + expected: unknown, + message?: string | Error, + operator?: string, + // tslint:disable-next-line:ban-types + stackStartFn?: Function, + ): never; + /** + * Tests if `value` is truthy. It is equivalent to`assert.equal(!!value, true, message)`. + * + * If `value` is not truthy, an `AssertionError` is thrown with a `message`property set equal to the value of the `message` parameter. If the `message`parameter is `undefined`, a default + * error message is assigned. If the `message`parameter is an instance of an `Error` then it will be thrown instead of the`AssertionError`. + * If no arguments are passed in at all `message` will be set to the string:`` 'No value argument passed to `assert.ok()`' ``. + * + * Be aware that in the `repl` the error message will be different to the one + * thrown in a file! See below for further details. + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.ok(true); + * // OK + * assert.ok(1); + * // OK + * + * assert.ok(); + * // AssertionError: No value argument passed to `assert.ok()` + * + * assert.ok(false, 'it\'s false'); + * // AssertionError: it's false + * + * // In the repl: + * assert.ok(typeof 123 === 'string'); + * // AssertionError: false == true + * + * // In a file (e.g. test.js): + * assert.ok(typeof 123 === 'string'); + * // AssertionError: The expression evaluated to a falsy value: + * // + * // assert.ok(typeof 123 === 'string') + * + * assert.ok(false); + * // AssertionError: The expression evaluated to a falsy value: + * // + * // assert.ok(false) + * + * assert.ok(0); + * // AssertionError: The expression evaluated to a falsy value: + * // + * // assert.ok(0) + * ``` + * + * ```js + * import assert from 'node:assert/strict'; + * + * // Using `assert()` works the same: + * assert(0); + * // AssertionError: The expression evaluated to a falsy value: + * // + * // assert(0) + * ``` + * @since v0.1.21 + */ + function ok(value: unknown, message?: string | Error): asserts value; + /** + * **Strict assertion mode** + * + * An alias of {@link strictEqual}. + * + * **Legacy assertion mode** + * + * > Stability: 3 - Legacy: Use {@link strictEqual} instead. + * + * Tests shallow, coercive equality between the `actual` and `expected` parameters + * using the [`==` operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Equality). `NaN` is specially handled + * and treated as being identical if both sides are `NaN`. + * + * ```js + * import assert from 'node:assert'; + * + * assert.equal(1, 1); + * // OK, 1 == 1 + * assert.equal(1, '1'); + * // OK, 1 == '1' + * assert.equal(NaN, NaN); + * // OK + * + * assert.equal(1, 2); + * // AssertionError: 1 == 2 + * assert.equal({ a: { b: 1 } }, { a: { b: 1 } }); + * // AssertionError: { a: { b: 1 } } == { a: { b: 1 } } + * ``` + * + * If the values are not equal, an `AssertionError` is thrown with a `message`property set equal to the value of the `message` parameter. If the `message`parameter is undefined, a default + * error message is assigned. If the `message`parameter is an instance of an `Error` then it will be thrown instead of the`AssertionError`. + * @since v0.1.21 + */ + function equal(actual: unknown, expected: unknown, message?: string | Error): void; + /** + * **Strict assertion mode** + * + * An alias of {@link notStrictEqual}. + * + * **Legacy assertion mode** + * + * > Stability: 3 - Legacy: Use {@link notStrictEqual} instead. + * + * Tests shallow, coercive inequality with the [`!=` operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Inequality). `NaN` is + * specially handled and treated as being identical if both sides are `NaN`. + * + * ```js + * import assert from 'node:assert'; + * + * assert.notEqual(1, 2); + * // OK + * + * assert.notEqual(1, 1); + * // AssertionError: 1 != 1 + * + * assert.notEqual(1, '1'); + * // AssertionError: 1 != '1' + * ``` + * + * If the values are equal, an `AssertionError` is thrown with a `message`property set equal to the value of the `message` parameter. If the `message`parameter is undefined, a default error + * message is assigned. If the `message`parameter is an instance of an `Error` then it will be thrown instead of the`AssertionError`. + * @since v0.1.21 + */ + function notEqual(actual: unknown, expected: unknown, message?: string | Error): void; + /** + * **Strict assertion mode** + * + * An alias of {@link deepStrictEqual}. + * + * **Legacy assertion mode** + * + * > Stability: 3 - Legacy: Use {@link deepStrictEqual} instead. + * + * Tests for deep equality between the `actual` and `expected` parameters. Consider + * using {@link deepStrictEqual} instead. {@link deepEqual} can have + * surprising results. + * + * _Deep equality_ means that the enumerable "own" properties of child objects + * are also recursively evaluated by the following rules. + * @since v0.1.21 + */ + function deepEqual(actual: unknown, expected: unknown, message?: string | Error): void; + /** + * **Strict assertion mode** + * + * An alias of {@link notDeepStrictEqual}. + * + * **Legacy assertion mode** + * + * > Stability: 3 - Legacy: Use {@link notDeepStrictEqual} instead. + * + * Tests for any deep inequality. Opposite of {@link deepEqual}. + * + * ```js + * import assert from 'node:assert'; + * + * const obj1 = { + * a: { + * b: 1, + * }, + * }; + * const obj2 = { + * a: { + * b: 2, + * }, + * }; + * const obj3 = { + * a: { + * b: 1, + * }, + * }; + * const obj4 = { __proto__: obj1 }; + * + * assert.notDeepEqual(obj1, obj1); + * // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } } + * + * assert.notDeepEqual(obj1, obj2); + * // OK + * + * assert.notDeepEqual(obj1, obj3); + * // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } } + * + * assert.notDeepEqual(obj1, obj4); + * // OK + * ``` + * + * If the values are deeply equal, an `AssertionError` is thrown with a`message` property set equal to the value of the `message` parameter. If the`message` parameter is undefined, a default + * error message is assigned. If the`message` parameter is an instance of an `Error` then it will be thrown + * instead of the `AssertionError`. + * @since v0.1.21 + */ + function notDeepEqual(actual: unknown, expected: unknown, message?: string | Error): void; + /** + * Tests strict equality between the `actual` and `expected` parameters as + * determined by [`Object.is()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is). + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.strictEqual(1, 2); + * // AssertionError [ERR_ASSERTION]: Expected inputs to be strictly equal: + * // + * // 1 !== 2 + * + * assert.strictEqual(1, 1); + * // OK + * + * assert.strictEqual('Hello foobar', 'Hello World!'); + * // AssertionError [ERR_ASSERTION]: Expected inputs to be strictly equal: + * // + actual - expected + * // + * // + 'Hello foobar' + * // - 'Hello World!' + * // ^ + * + * const apples = 1; + * const oranges = 2; + * assert.strictEqual(apples, oranges, `apples ${apples} !== oranges ${oranges}`); + * // AssertionError [ERR_ASSERTION]: apples 1 !== oranges 2 + * + * assert.strictEqual(1, '1', new TypeError('Inputs are not identical')); + * // TypeError: Inputs are not identical + * ``` + * + * If the values are not strictly equal, an `AssertionError` is thrown with a`message` property set equal to the value of the `message` parameter. If the`message` parameter is undefined, a + * default error message is assigned. If the`message` parameter is an instance of an `Error` then it will be thrown + * instead of the `AssertionError`. + * @since v0.1.21 + */ + function strictEqual(actual: unknown, expected: T, message?: string | Error): asserts actual is T; + /** + * Tests strict inequality between the `actual` and `expected` parameters as + * determined by [`Object.is()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is). + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.notStrictEqual(1, 2); + * // OK + * + * assert.notStrictEqual(1, 1); + * // AssertionError [ERR_ASSERTION]: Expected "actual" to be strictly unequal to: + * // + * // 1 + * + * assert.notStrictEqual(1, '1'); + * // OK + * ``` + * + * If the values are strictly equal, an `AssertionError` is thrown with a`message` property set equal to the value of the `message` parameter. If the`message` parameter is undefined, a + * default error message is assigned. If the`message` parameter is an instance of an `Error` then it will be thrown + * instead of the `AssertionError`. + * @since v0.1.21 + */ + function notStrictEqual(actual: unknown, expected: unknown, message?: string | Error): void; + /** + * Tests for deep equality between the `actual` and `expected` parameters. + * "Deep" equality means that the enumerable "own" properties of child objects + * are recursively evaluated also by the following rules. + * @since v1.2.0 + */ + function deepStrictEqual(actual: unknown, expected: T, message?: string | Error): asserts actual is T; + /** + * Tests for deep strict inequality. Opposite of {@link deepStrictEqual}. + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.notDeepStrictEqual({ a: 1 }, { a: '1' }); + * // OK + * ``` + * + * If the values are deeply and strictly equal, an `AssertionError` is thrown + * with a `message` property set equal to the value of the `message` parameter. If + * the `message` parameter is undefined, a default error message is assigned. If + * the `message` parameter is an instance of an `Error` then it will be thrown + * instead of the `AssertionError`. + * @since v1.2.0 + */ + function notDeepStrictEqual(actual: unknown, expected: unknown, message?: string | Error): void; + /** + * Expects the function `fn` to throw an error. + * + * If specified, `error` can be a [`Class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes), + * [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions), a validation function, + * a validation object where each property will be tested for strict deep equality, + * or an instance of error where each property will be tested for strict deep + * equality including the non-enumerable `message` and `name` properties. When + * using an object, it is also possible to use a regular expression, when + * validating against a string property. See below for examples. + * + * If specified, `message` will be appended to the message provided by the`AssertionError` if the `fn` call fails to throw or in case the error validation + * fails. + * + * Custom validation object/error instance: + * + * ```js + * import assert from 'node:assert/strict'; + * + * const err = new TypeError('Wrong value'); + * err.code = 404; + * err.foo = 'bar'; + * err.info = { + * nested: true, + * baz: 'text', + * }; + * err.reg = /abc/i; + * + * assert.throws( + * () => { + * throw err; + * }, + * { + * name: 'TypeError', + * message: 'Wrong value', + * info: { + * nested: true, + * baz: 'text', + * }, + * // Only properties on the validation object will be tested for. + * // Using nested objects requires all properties to be present. Otherwise + * // the validation is going to fail. + * }, + * ); + * + * // Using regular expressions to validate error properties: + * assert.throws( + * () => { + * throw err; + * }, + * { + * // The `name` and `message` properties are strings and using regular + * // expressions on those will match against the string. If they fail, an + * // error is thrown. + * name: /^TypeError$/, + * message: /Wrong/, + * foo: 'bar', + * info: { + * nested: true, + * // It is not possible to use regular expressions for nested properties! + * baz: 'text', + * }, + * // The `reg` property contains a regular expression and only if the + * // validation object contains an identical regular expression, it is going + * // to pass. + * reg: /abc/i, + * }, + * ); + * + * // Fails due to the different `message` and `name` properties: + * assert.throws( + * () => { + * const otherErr = new Error('Not found'); + * // Copy all enumerable properties from `err` to `otherErr`. + * for (const [key, value] of Object.entries(err)) { + * otherErr[key] = value; + * } + * throw otherErr; + * }, + * // The error's `message` and `name` properties will also be checked when using + * // an error as validation object. + * err, + * ); + * ``` + * + * Validate instanceof using constructor: + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.throws( + * () => { + * throw new Error('Wrong value'); + * }, + * Error, + * ); + * ``` + * + * Validate error message using [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions): + * + * Using a regular expression runs `.toString` on the error object, and will + * therefore also include the error name. + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.throws( + * () => { + * throw new Error('Wrong value'); + * }, + * /^Error: Wrong value$/, + * ); + * ``` + * + * Custom error validation: + * + * The function must return `true` to indicate all internal validations passed. + * It will otherwise fail with an `AssertionError`. + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.throws( + * () => { + * throw new Error('Wrong value'); + * }, + * (err) => { + * assert(err instanceof Error); + * assert(/value/.test(err)); + * // Avoid returning anything from validation functions besides `true`. + * // Otherwise, it's not clear what part of the validation failed. Instead, + * // throw an error about the specific validation that failed (as done in this + * // example) and add as much helpful debugging information to that error as + * // possible. + * return true; + * }, + * 'unexpected error', + * ); + * ``` + * + * `error` cannot be a string. If a string is provided as the second + * argument, then `error` is assumed to be omitted and the string will be used for`message` instead. This can lead to easy-to-miss mistakes. Using the same + * message as the thrown error message is going to result in an`ERR_AMBIGUOUS_ARGUMENT` error. Please read the example below carefully if using + * a string as the second argument gets considered: + * + * ```js + * import assert from 'node:assert/strict'; + * + * function throwingFirst() { + * throw new Error('First'); + * } + * + * function throwingSecond() { + * throw new Error('Second'); + * } + * + * function notThrowing() {} + * + * // The second argument is a string and the input function threw an Error. + * // The first case will not throw as it does not match for the error message + * // thrown by the input function! + * assert.throws(throwingFirst, 'Second'); + * // In the next example the message has no benefit over the message from the + * // error and since it is not clear if the user intended to actually match + * // against the error message, Node.js throws an `ERR_AMBIGUOUS_ARGUMENT` error. + * assert.throws(throwingSecond, 'Second'); + * // TypeError [ERR_AMBIGUOUS_ARGUMENT] + * + * // The string is only used (as message) in case the function does not throw: + * assert.throws(notThrowing, 'Second'); + * // AssertionError [ERR_ASSERTION]: Missing expected exception: Second + * + * // If it was intended to match for the error message do this instead: + * // It does not throw because the error messages match. + * assert.throws(throwingSecond, /Second$/); + * + * // If the error message does not match, an AssertionError is thrown. + * assert.throws(throwingFirst, /Second$/); + * // AssertionError [ERR_ASSERTION] + * ``` + * + * Due to the confusing error-prone notation, avoid a string as the second + * argument. + * @since v0.1.21 + */ + function throws(block: () => unknown, message?: string | Error): void; + function throws(block: () => unknown, error: AssertPredicate, message?: string | Error): void; + /** + * Asserts that the function `fn` does not throw an error. + * + * Using `assert.doesNotThrow()` is actually not useful because there + * is no benefit in catching an error and then rethrowing it. Instead, consider + * adding a comment next to the specific code path that should not throw and keep + * error messages as expressive as possible. + * + * When `assert.doesNotThrow()` is called, it will immediately call the `fn`function. + * + * If an error is thrown and it is the same type as that specified by the `error`parameter, then an `AssertionError` is thrown. If the error is of a + * different type, or if the `error` parameter is undefined, the error is + * propagated back to the caller. + * + * If specified, `error` can be a [`Class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes), + * [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions), or a validation + * function. See {@link throws} for more details. + * + * The following, for instance, will throw the `TypeError` because there is no + * matching error type in the assertion: + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.doesNotThrow( + * () => { + * throw new TypeError('Wrong value'); + * }, + * SyntaxError, + * ); + * ``` + * + * However, the following will result in an `AssertionError` with the message + * 'Got unwanted exception...': + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.doesNotThrow( + * () => { + * throw new TypeError('Wrong value'); + * }, + * TypeError, + * ); + * ``` + * + * If an `AssertionError` is thrown and a value is provided for the `message`parameter, the value of `message` will be appended to the `AssertionError` message: + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.doesNotThrow( + * () => { + * throw new TypeError('Wrong value'); + * }, + * /Wrong value/, + * 'Whoops', + * ); + * // Throws: AssertionError: Got unwanted exception: Whoops + * ``` + * @since v0.1.21 + */ + function doesNotThrow(block: () => unknown, message?: string | Error): void; + function doesNotThrow(block: () => unknown, error: AssertPredicate, message?: string | Error): void; + /** + * Throws `value` if `value` is not `undefined` or `null`. This is useful when + * testing the `error` argument in callbacks. The stack trace contains all frames + * from the error passed to `ifError()` including the potential new frames for`ifError()` itself. + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.ifError(null); + * // OK + * assert.ifError(0); + * // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: 0 + * assert.ifError('error'); + * // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: 'error' + * assert.ifError(new Error()); + * // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: Error + * + * // Create some random error frames. + * let err; + * (function errorFrame() { + * err = new Error('test error'); + * })(); + * + * (function ifErrorFrame() { + * assert.ifError(err); + * })(); + * // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: test error + * // at ifErrorFrame + * // at errorFrame + * ``` + * @since v0.1.97 + */ + function ifError(value: unknown): asserts value is null | undefined; + /** + * Awaits the `asyncFn` promise or, if `asyncFn` is a function, immediately + * calls the function and awaits the returned promise to complete. It will then + * check that the promise is rejected. + * + * If `asyncFn` is a function and it throws an error synchronously,`assert.rejects()` will return a rejected `Promise` with that error. If the + * function does not return a promise, `assert.rejects()` will return a rejected`Promise` with an `ERR_INVALID_RETURN_VALUE` error. In both cases the error + * handler is skipped. + * + * Besides the async nature to await the completion behaves identically to {@link throws}. + * + * If specified, `error` can be a [`Class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes), + * [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions), a validation function, + * an object where each property will be tested for, or an instance of error where + * each property will be tested for including the non-enumerable `message` and`name` properties. + * + * If specified, `message` will be the message provided by the `AssertionError` if the `asyncFn` fails to reject. + * + * ```js + * import assert from 'node:assert/strict'; + * + * await assert.rejects( + * async () => { + * throw new TypeError('Wrong value'); + * }, + * { + * name: 'TypeError', + * message: 'Wrong value', + * }, + * ); + * ``` + * + * ```js + * import assert from 'node:assert/strict'; + * + * await assert.rejects( + * async () => { + * throw new TypeError('Wrong value'); + * }, + * (err) => { + * assert.strictEqual(err.name, 'TypeError'); + * assert.strictEqual(err.message, 'Wrong value'); + * return true; + * }, + * ); + * ``` + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.rejects( + * Promise.reject(new Error('Wrong value')), + * Error, + * ).then(() => { + * // ... + * }); + * ``` + * + * `error` cannot be a string. If a string is provided as the second + * argument, then `error` is assumed to be omitted and the string will be used for`message` instead. This can lead to easy-to-miss mistakes. Please read the + * example in {@link throws} carefully if using a string as the second + * argument gets considered. + * @since v10.0.0 + */ + function rejects(block: (() => Promise) | Promise, message?: string | Error): Promise; + function rejects( + block: (() => Promise) | Promise, + error: AssertPredicate, + message?: string | Error, + ): Promise; + /** + * Awaits the `asyncFn` promise or, if `asyncFn` is a function, immediately + * calls the function and awaits the returned promise to complete. It will then + * check that the promise is not rejected. + * + * If `asyncFn` is a function and it throws an error synchronously,`assert.doesNotReject()` will return a rejected `Promise` with that error. If + * the function does not return a promise, `assert.doesNotReject()` will return a + * rejected `Promise` with an `ERR_INVALID_RETURN_VALUE` error. In both cases + * the error handler is skipped. + * + * Using `assert.doesNotReject()` is actually not useful because there is little + * benefit in catching a rejection and then rejecting it again. Instead, consider + * adding a comment next to the specific code path that should not reject and keep + * error messages as expressive as possible. + * + * If specified, `error` can be a [`Class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes), + * [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions), or a validation + * function. See {@link throws} for more details. + * + * Besides the async nature to await the completion behaves identically to {@link doesNotThrow}. + * + * ```js + * import assert from 'node:assert/strict'; + * + * await assert.doesNotReject( + * async () => { + * throw new TypeError('Wrong value'); + * }, + * SyntaxError, + * ); + * ``` + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.doesNotReject(Promise.reject(new TypeError('Wrong value'))) + * .then(() => { + * // ... + * }); + * ``` + * @since v10.0.0 + */ + function doesNotReject( + block: (() => Promise) | Promise, + message?: string | Error, + ): Promise; + function doesNotReject( + block: (() => Promise) | Promise, + error: AssertPredicate, + message?: string | Error, + ): Promise; + /** + * Expects the `string` input to match the regular expression. + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.match('I will fail', /pass/); + * // AssertionError [ERR_ASSERTION]: The input did not match the regular ... + * + * assert.match(123, /pass/); + * // AssertionError [ERR_ASSERTION]: The "string" argument must be of type string. + * + * assert.match('I will pass', /pass/); + * // OK + * ``` + * + * If the values do not match, or if the `string` argument is of another type than`string`, an `AssertionError` is thrown with a `message` property set equal + * to the value of the `message` parameter. If the `message` parameter is + * undefined, a default error message is assigned. If the `message` parameter is an + * instance of an `Error` then it will be thrown instead of the `AssertionError`. + * @since v13.6.0, v12.16.0 + */ + function match(value: string, regExp: RegExp, message?: string | Error): void; + /** + * Expects the `string` input not to match the regular expression. + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.doesNotMatch('I will fail', /fail/); + * // AssertionError [ERR_ASSERTION]: The input was expected to not match the ... + * + * assert.doesNotMatch(123, /pass/); + * // AssertionError [ERR_ASSERTION]: The "string" argument must be of type string. + * + * assert.doesNotMatch('I will pass', /different/); + * // OK + * ``` + * + * If the values do match, or if the `string` argument is of another type than`string`, an `AssertionError` is thrown with a `message` property set equal + * to the value of the `message` parameter. If the `message` parameter is + * undefined, a default error message is assigned. If the `message` parameter is an + * instance of an `Error` then it will be thrown instead of the `AssertionError`. + * @since v13.6.0, v12.16.0 + */ + function doesNotMatch(value: string, regExp: RegExp, message?: string | Error): void; + const strict: + & Omit< + typeof assert, + | "equal" + | "notEqual" + | "deepEqual" + | "notDeepEqual" + | "ok" + | "strictEqual" + | "deepStrictEqual" + | "ifError" + | "strict" + > + & { + (value: unknown, message?: string | Error): asserts value; + equal: typeof strictEqual; + notEqual: typeof notStrictEqual; + deepEqual: typeof deepStrictEqual; + notDeepEqual: typeof notDeepStrictEqual; + // Mapped types and assertion functions are incompatible? + // TS2775: Assertions require every name in the call target + // to be declared with an explicit type annotation. + ok: typeof ok; + strictEqual: typeof strictEqual; + deepStrictEqual: typeof deepStrictEqual; + ifError: typeof ifError; + strict: typeof strict; + }; + } + export = assert; +} +declare module "node:assert" { + import assert = require("assert"); + export = assert; +} diff --git a/node_modules/@types/node/assert/strict.d.ts b/node_modules/@types/node/assert/strict.d.ts new file mode 100644 index 00000000..f333913a --- /dev/null +++ b/node_modules/@types/node/assert/strict.d.ts @@ -0,0 +1,8 @@ +declare module "assert/strict" { + import { strict } from "node:assert"; + export = strict; +} +declare module "node:assert/strict" { + import { strict } from "node:assert"; + export = strict; +} diff --git a/node_modules/@types/node/async_hooks.d.ts b/node_modules/@types/node/async_hooks.d.ts new file mode 100644 index 00000000..0667a615 --- /dev/null +++ b/node_modules/@types/node/async_hooks.d.ts @@ -0,0 +1,539 @@ +/** + * We strongly discourage the use of the `async_hooks` API. + * Other APIs that can cover most of its use cases include: + * + * * `AsyncLocalStorage` tracks async context + * * `process.getActiveResourcesInfo()` tracks active resources + * + * The `node:async_hooks` module provides an API to track asynchronous resources. + * It can be accessed using: + * + * ```js + * import async_hooks from 'node:async_hooks'; + * ``` + * @experimental + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/async_hooks.js) + */ +declare module "async_hooks" { + /** + * ```js + * import { executionAsyncId } from 'node:async_hooks'; + * import fs from 'node:fs'; + * + * console.log(executionAsyncId()); // 1 - bootstrap + * const path = '.'; + * fs.open(path, 'r', (err, fd) => { + * console.log(executionAsyncId()); // 6 - open() + * }); + * ``` + * + * The ID returned from `executionAsyncId()` is related to execution timing, not + * causality (which is covered by `triggerAsyncId()`): + * + * ```js + * const server = net.createServer((conn) => { + * // Returns the ID of the server, not of the new connection, because the + * // callback runs in the execution scope of the server's MakeCallback(). + * async_hooks.executionAsyncId(); + * + * }).listen(port, () => { + * // Returns the ID of a TickObject (process.nextTick()) because all + * // callbacks passed to .listen() are wrapped in a nextTick(). + * async_hooks.executionAsyncId(); + * }); + * ``` + * + * Promise contexts may not get precise `executionAsyncIds` by default. + * See the section on `promise execution tracking`. + * @since v8.1.0 + * @return The `asyncId` of the current execution context. Useful to track when something calls. + */ + function executionAsyncId(): number; + /** + * Resource objects returned by `executionAsyncResource()` are most often internal + * Node.js handle objects with undocumented APIs. Using any functions or properties + * on the object is likely to crash your application and should be avoided. + * + * Using `executionAsyncResource()` in the top-level execution context will + * return an empty object as there is no handle or request object to use, + * but having an object representing the top-level can be helpful. + * + * ```js + * import { open } from 'node:fs'; + * import { executionAsyncId, executionAsyncResource } from 'node:async_hooks'; + * + * console.log(executionAsyncId(), executionAsyncResource()); // 1 {} + * open(new URL(import.meta.url), 'r', (err, fd) => { + * console.log(executionAsyncId(), executionAsyncResource()); // 7 FSReqWrap + * }); + * ``` + * + * This can be used to implement continuation local storage without the + * use of a tracking `Map` to store the metadata: + * + * ```js + * import { createServer } from 'node:http'; + * import { + * executionAsyncId, + * executionAsyncResource, + * createHook, + * } from 'async_hooks'; + * const sym = Symbol('state'); // Private symbol to avoid pollution + * + * createHook({ + * init(asyncId, type, triggerAsyncId, resource) { + * const cr = executionAsyncResource(); + * if (cr) { + * resource[sym] = cr[sym]; + * } + * }, + * }).enable(); + * + * const server = createServer((req, res) => { + * executionAsyncResource()[sym] = { state: req.url }; + * setTimeout(function() { + * res.end(JSON.stringify(executionAsyncResource()[sym])); + * }, 100); + * }).listen(3000); + * ``` + * @since v13.9.0, v12.17.0 + * @return The resource representing the current execution. Useful to store data within the resource. + */ + function executionAsyncResource(): object; + /** + * ```js + * const server = net.createServer((conn) => { + * // The resource that caused (or triggered) this callback to be called + * // was that of the new connection. Thus the return value of triggerAsyncId() + * // is the asyncId of "conn". + * async_hooks.triggerAsyncId(); + * + * }).listen(port, () => { + * // Even though all callbacks passed to .listen() are wrapped in a nextTick() + * // the callback itself exists because the call to the server's .listen() + * // was made. So the return value would be the ID of the server. + * async_hooks.triggerAsyncId(); + * }); + * ``` + * + * Promise contexts may not get valid `triggerAsyncId`s by default. See + * the section on `promise execution tracking`. + * @return The ID of the resource responsible for calling the callback that is currently being executed. + */ + function triggerAsyncId(): number; + interface HookCallbacks { + /** + * Called when a class is constructed that has the possibility to emit an asynchronous event. + * @param asyncId a unique ID for the async resource + * @param type the type of the async resource + * @param triggerAsyncId the unique ID of the async resource in whose execution context this async resource was created + * @param resource reference to the resource representing the async operation, needs to be released during destroy + */ + init?(asyncId: number, type: string, triggerAsyncId: number, resource: object): void; + /** + * When an asynchronous operation is initiated or completes a callback is called to notify the user. + * The before callback is called just before said callback is executed. + * @param asyncId the unique identifier assigned to the resource about to execute the callback. + */ + before?(asyncId: number): void; + /** + * Called immediately after the callback specified in before is completed. + * @param asyncId the unique identifier assigned to the resource which has executed the callback. + */ + after?(asyncId: number): void; + /** + * Called when a promise has resolve() called. This may not be in the same execution id + * as the promise itself. + * @param asyncId the unique id for the promise that was resolve()d. + */ + promiseResolve?(asyncId: number): void; + /** + * Called after the resource corresponding to asyncId is destroyed + * @param asyncId a unique ID for the async resource + */ + destroy?(asyncId: number): void; + } + interface AsyncHook { + /** + * Enable the callbacks for a given AsyncHook instance. If no callbacks are provided enabling is a noop. + */ + enable(): this; + /** + * Disable the callbacks for a given AsyncHook instance from the global pool of AsyncHook callbacks to be executed. Once a hook has been disabled it will not be called again until enabled. + */ + disable(): this; + } + /** + * Registers functions to be called for different lifetime events of each async + * operation. + * + * The callbacks `init()`/`before()`/`after()`/`destroy()` are called for the + * respective asynchronous event during a resource's lifetime. + * + * All callbacks are optional. For example, if only resource cleanup needs to + * be tracked, then only the `destroy` callback needs to be passed. The + * specifics of all functions that can be passed to `callbacks` is in the `Hook Callbacks` section. + * + * ```js + * import { createHook } from 'node:async_hooks'; + * + * const asyncHook = createHook({ + * init(asyncId, type, triggerAsyncId, resource) { }, + * destroy(asyncId) { }, + * }); + * ``` + * + * The callbacks will be inherited via the prototype chain: + * + * ```js + * class MyAsyncCallbacks { + * init(asyncId, type, triggerAsyncId, resource) { } + * destroy(asyncId) {} + * } + * + * class MyAddedCallbacks extends MyAsyncCallbacks { + * before(asyncId) { } + * after(asyncId) { } + * } + * + * const asyncHook = async_hooks.createHook(new MyAddedCallbacks()); + * ``` + * + * Because promises are asynchronous resources whose lifecycle is tracked + * via the async hooks mechanism, the `init()`, `before()`, `after()`, and`destroy()` callbacks _must not_ be async functions that return promises. + * @since v8.1.0 + * @param callbacks The `Hook Callbacks` to register + * @return Instance used for disabling and enabling hooks + */ + function createHook(callbacks: HookCallbacks): AsyncHook; + interface AsyncResourceOptions { + /** + * The ID of the execution context that created this async event. + * @default executionAsyncId() + */ + triggerAsyncId?: number | undefined; + /** + * Disables automatic `emitDestroy` when the object is garbage collected. + * This usually does not need to be set (even if `emitDestroy` is called + * manually), unless the resource's `asyncId` is retrieved and the + * sensitive API's `emitDestroy` is called with it. + * @default false + */ + requireManualDestroy?: boolean | undefined; + } + /** + * The class `AsyncResource` is designed to be extended by the embedder's async + * resources. Using this, users can easily trigger the lifetime events of their + * own resources. + * + * The `init` hook will trigger when an `AsyncResource` is instantiated. + * + * The following is an overview of the `AsyncResource` API. + * + * ```js + * import { AsyncResource, executionAsyncId } from 'node:async_hooks'; + * + * // AsyncResource() is meant to be extended. Instantiating a + * // new AsyncResource() also triggers init. If triggerAsyncId is omitted then + * // async_hook.executionAsyncId() is used. + * const asyncResource = new AsyncResource( + * type, { triggerAsyncId: executionAsyncId(), requireManualDestroy: false }, + * ); + * + * // Run a function in the execution context of the resource. This will + * // * establish the context of the resource + * // * trigger the AsyncHooks before callbacks + * // * call the provided function `fn` with the supplied arguments + * // * trigger the AsyncHooks after callbacks + * // * restore the original execution context + * asyncResource.runInAsyncScope(fn, thisArg, ...args); + * + * // Call AsyncHooks destroy callbacks. + * asyncResource.emitDestroy(); + * + * // Return the unique ID assigned to the AsyncResource instance. + * asyncResource.asyncId(); + * + * // Return the trigger ID for the AsyncResource instance. + * asyncResource.triggerAsyncId(); + * ``` + */ + class AsyncResource { + /** + * AsyncResource() is meant to be extended. Instantiating a + * new AsyncResource() also triggers init. If triggerAsyncId is omitted then + * async_hook.executionAsyncId() is used. + * @param type The type of async event. + * @param triggerAsyncId The ID of the execution context that created + * this async event (default: `executionAsyncId()`), or an + * AsyncResourceOptions object (since v9.3.0) + */ + constructor(type: string, triggerAsyncId?: number | AsyncResourceOptions); + /** + * Binds the given function to the current execution context. + * @since v14.8.0, v12.19.0 + * @param fn The function to bind to the current execution context. + * @param type An optional name to associate with the underlying `AsyncResource`. + */ + static bind any, ThisArg>( + fn: Func, + type?: string, + thisArg?: ThisArg, + ): Func; + /** + * Binds the given function to execute to this `AsyncResource`'s scope. + * @since v14.8.0, v12.19.0 + * @param fn The function to bind to the current `AsyncResource`. + */ + bind any>(fn: Func): Func; + /** + * Call the provided function with the provided arguments in the execution context + * of the async resource. This will establish the context, trigger the AsyncHooks + * before callbacks, call the function, trigger the AsyncHooks after callbacks, and + * then restore the original execution context. + * @since v9.6.0 + * @param fn The function to call in the execution context of this async resource. + * @param thisArg The receiver to be used for the function call. + * @param args Optional arguments to pass to the function. + */ + runInAsyncScope( + fn: (this: This, ...args: any[]) => Result, + thisArg?: This, + ...args: any[] + ): Result; + /** + * Call all `destroy` hooks. This should only ever be called once. An error will + * be thrown if it is called more than once. This **must** be manually called. If + * the resource is left to be collected by the GC then the `destroy` hooks will + * never be called. + * @return A reference to `asyncResource`. + */ + emitDestroy(): this; + /** + * @return The unique `asyncId` assigned to the resource. + */ + asyncId(): number; + /** + * @return The same `triggerAsyncId` that is passed to the `AsyncResource` constructor. + */ + triggerAsyncId(): number; + } + /** + * This class creates stores that stay coherent through asynchronous operations. + * + * While you can create your own implementation on top of the `node:async_hooks`module, `AsyncLocalStorage` should be preferred as it is a performant and memory + * safe implementation that involves significant optimizations that are non-obvious + * to implement. + * + * The following example uses `AsyncLocalStorage` to build a simple logger + * that assigns IDs to incoming HTTP requests and includes them in messages + * logged within each request. + * + * ```js + * import http from 'node:http'; + * import { AsyncLocalStorage } from 'node:async_hooks'; + * + * const asyncLocalStorage = new AsyncLocalStorage(); + * + * function logWithId(msg) { + * const id = asyncLocalStorage.getStore(); + * console.log(`${id !== undefined ? id : '-'}:`, msg); + * } + * + * let idSeq = 0; + * http.createServer((req, res) => { + * asyncLocalStorage.run(idSeq++, () => { + * logWithId('start'); + * // Imagine any chain of async operations here + * setImmediate(() => { + * logWithId('finish'); + * res.end(); + * }); + * }); + * }).listen(8080); + * + * http.get('http://localhost:8080'); + * http.get('http://localhost:8080'); + * // Prints: + * // 0: start + * // 1: start + * // 0: finish + * // 1: finish + * ``` + * + * Each instance of `AsyncLocalStorage` maintains an independent storage context. + * Multiple instances can safely exist simultaneously without risk of interfering + * with each other's data. + * @since v13.10.0, v12.17.0 + */ + class AsyncLocalStorage { + /** + * Binds the given function to the current execution context. + * @since v19.8.0 + * @experimental + * @param fn The function to bind to the current execution context. + * @return A new function that calls `fn` within the captured execution context. + */ + static bind any>(fn: Func): Func; + /** + * Captures the current execution context and returns a function that accepts a + * function as an argument. Whenever the returned function is called, it + * calls the function passed to it within the captured context. + * + * ```js + * const asyncLocalStorage = new AsyncLocalStorage(); + * const runInAsyncScope = asyncLocalStorage.run(123, () => AsyncLocalStorage.snapshot()); + * const result = asyncLocalStorage.run(321, () => runInAsyncScope(() => asyncLocalStorage.getStore())); + * console.log(result); // returns 123 + * ``` + * + * AsyncLocalStorage.snapshot() can replace the use of AsyncResource for simple + * async context tracking purposes, for example: + * + * ```js + * class Foo { + * #runInAsyncScope = AsyncLocalStorage.snapshot(); + * + * get() { return this.#runInAsyncScope(() => asyncLocalStorage.getStore()); } + * } + * + * const foo = asyncLocalStorage.run(123, () => new Foo()); + * console.log(asyncLocalStorage.run(321, () => foo.get())); // returns 123 + * ``` + * @since v19.8.0 + * @experimental + * @return A new function with the signature `(fn: (...args) : R, ...args) : R`. + */ + static snapshot(): (fn: (...args: TArgs) => R, ...args: TArgs) => R; + /** + * Disables the instance of `AsyncLocalStorage`. All subsequent calls + * to `asyncLocalStorage.getStore()` will return `undefined` until`asyncLocalStorage.run()` or `asyncLocalStorage.enterWith()` is called again. + * + * When calling `asyncLocalStorage.disable()`, all current contexts linked to the + * instance will be exited. + * + * Calling `asyncLocalStorage.disable()` is required before the`asyncLocalStorage` can be garbage collected. This does not apply to stores + * provided by the `asyncLocalStorage`, as those objects are garbage collected + * along with the corresponding async resources. + * + * Use this method when the `asyncLocalStorage` is not in use anymore + * in the current process. + * @since v13.10.0, v12.17.0 + * @experimental + */ + disable(): void; + /** + * Returns the current store. + * If called outside of an asynchronous context initialized by + * calling `asyncLocalStorage.run()` or `asyncLocalStorage.enterWith()`, it + * returns `undefined`. + * @since v13.10.0, v12.17.0 + */ + getStore(): T | undefined; + /** + * Runs a function synchronously within a context and returns its + * return value. The store is not accessible outside of the callback function. + * The store is accessible to any asynchronous operations created within the + * callback. + * + * The optional `args` are passed to the callback function. + * + * If the callback function throws an error, the error is thrown by `run()` too. + * The stacktrace is not impacted by this call and the context is exited. + * + * Example: + * + * ```js + * const store = { id: 2 }; + * try { + * asyncLocalStorage.run(store, () => { + * asyncLocalStorage.getStore(); // Returns the store object + * setTimeout(() => { + * asyncLocalStorage.getStore(); // Returns the store object + * }, 200); + * throw new Error(); + * }); + * } catch (e) { + * asyncLocalStorage.getStore(); // Returns undefined + * // The error will be caught here + * } + * ``` + * @since v13.10.0, v12.17.0 + */ + run(store: T, callback: () => R): R; + run(store: T, callback: (...args: TArgs) => R, ...args: TArgs): R; + /** + * Runs a function synchronously outside of a context and returns its + * return value. The store is not accessible within the callback function or + * the asynchronous operations created within the callback. Any `getStore()`call done within the callback function will always return `undefined`. + * + * The optional `args` are passed to the callback function. + * + * If the callback function throws an error, the error is thrown by `exit()` too. + * The stacktrace is not impacted by this call and the context is re-entered. + * + * Example: + * + * ```js + * // Within a call to run + * try { + * asyncLocalStorage.getStore(); // Returns the store object or value + * asyncLocalStorage.exit(() => { + * asyncLocalStorage.getStore(); // Returns undefined + * throw new Error(); + * }); + * } catch (e) { + * asyncLocalStorage.getStore(); // Returns the same object or value + * // The error will be caught here + * } + * ``` + * @since v13.10.0, v12.17.0 + * @experimental + */ + exit(callback: (...args: TArgs) => R, ...args: TArgs): R; + /** + * Transitions into the context for the remainder of the current + * synchronous execution and then persists the store through any following + * asynchronous calls. + * + * Example: + * + * ```js + * const store = { id: 1 }; + * // Replaces previous store with the given store object + * asyncLocalStorage.enterWith(store); + * asyncLocalStorage.getStore(); // Returns the store object + * someAsyncOperation(() => { + * asyncLocalStorage.getStore(); // Returns the same object + * }); + * ``` + * + * This transition will continue for the _entire_ synchronous execution. + * This means that if, for example, the context is entered within an event + * handler subsequent event handlers will also run within that context unless + * specifically bound to another context with an `AsyncResource`. That is why`run()` should be preferred over `enterWith()` unless there are strong reasons + * to use the latter method. + * + * ```js + * const store = { id: 1 }; + * + * emitter.on('my-event', () => { + * asyncLocalStorage.enterWith(store); + * }); + * emitter.on('my-event', () => { + * asyncLocalStorage.getStore(); // Returns the same object + * }); + * + * asyncLocalStorage.getStore(); // Returns undefined + * emitter.emit('my-event'); + * asyncLocalStorage.getStore(); // Returns the same object + * ``` + * @since v13.11.0, v12.17.0 + * @experimental + */ + enterWith(store: T): void; + } +} +declare module "node:async_hooks" { + export * from "async_hooks"; +} diff --git a/node_modules/@types/node/buffer.d.ts b/node_modules/@types/node/buffer.d.ts new file mode 100644 index 00000000..a2dbc718 --- /dev/null +++ b/node_modules/@types/node/buffer.d.ts @@ -0,0 +1,2362 @@ +/** + * `Buffer` objects are used to represent a fixed-length sequence of bytes. Many + * Node.js APIs support `Buffer`s. + * + * The `Buffer` class is a subclass of JavaScript's [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) class and + * extends it with methods that cover additional use cases. Node.js APIs accept + * plain [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) s wherever `Buffer`s are supported as well. + * + * While the `Buffer` class is available within the global scope, it is still + * recommended to explicitly reference it via an import or require statement. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Creates a zero-filled Buffer of length 10. + * const buf1 = Buffer.alloc(10); + * + * // Creates a Buffer of length 10, + * // filled with bytes which all have the value `1`. + * const buf2 = Buffer.alloc(10, 1); + * + * // Creates an uninitialized buffer of length 10. + * // This is faster than calling Buffer.alloc() but the returned + * // Buffer instance might contain old data that needs to be + * // overwritten using fill(), write(), or other functions that fill the Buffer's + * // contents. + * const buf3 = Buffer.allocUnsafe(10); + * + * // Creates a Buffer containing the bytes [1, 2, 3]. + * const buf4 = Buffer.from([1, 2, 3]); + * + * // Creates a Buffer containing the bytes [1, 1, 1, 1] – the entries + * // are all truncated using `(value & 255)` to fit into the range 0–255. + * const buf5 = Buffer.from([257, 257.5, -255, '1']); + * + * // Creates a Buffer containing the UTF-8-encoded bytes for the string 'tést': + * // [0x74, 0xc3, 0xa9, 0x73, 0x74] (in hexadecimal notation) + * // [116, 195, 169, 115, 116] (in decimal notation) + * const buf6 = Buffer.from('tést'); + * + * // Creates a Buffer containing the Latin-1 bytes [0x74, 0xe9, 0x73, 0x74]. + * const buf7 = Buffer.from('tést', 'latin1'); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/buffer.js) + */ +declare module "buffer" { + import { BinaryLike } from "node:crypto"; + import { ReadableStream as WebReadableStream } from "node:stream/web"; + /** + * This function returns `true` if `input` contains only valid UTF-8-encoded data, + * including the case in which `input` is empty. + * + * Throws if the `input` is a detached array buffer. + * @since v19.4.0, v18.14.0 + * @param input The input to validate. + */ + export function isUtf8(input: Buffer | ArrayBuffer | NodeJS.TypedArray): boolean; + /** + * This function returns `true` if `input` contains only valid ASCII-encoded data, + * including the case in which `input` is empty. + * + * Throws if the `input` is a detached array buffer. + * @since v19.6.0, v18.15.0 + * @param input The input to validate. + */ + export function isAscii(input: Buffer | ArrayBuffer | NodeJS.TypedArray): boolean; + export const INSPECT_MAX_BYTES: number; + export const kMaxLength: number; + export const kStringMaxLength: number; + export const constants: { + MAX_LENGTH: number; + MAX_STRING_LENGTH: number; + }; + export type TranscodeEncoding = + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "latin1" + | "binary"; + /** + * Re-encodes the given `Buffer` or `Uint8Array` instance from one character + * encoding to another. Returns a new `Buffer` instance. + * + * Throws if the `fromEnc` or `toEnc` specify invalid character encodings or if + * conversion from `fromEnc` to `toEnc` is not permitted. + * + * Encodings supported by `buffer.transcode()` are: `'ascii'`, `'utf8'`,`'utf16le'`, `'ucs2'`, `'latin1'`, and `'binary'`. + * + * The transcoding process will use substitution characters if a given byte + * sequence cannot be adequately represented in the target encoding. For instance: + * + * ```js + * import { Buffer, transcode } from 'node:buffer'; + * + * const newBuf = transcode(Buffer.from('€'), 'utf8', 'ascii'); + * console.log(newBuf.toString('ascii')); + * // Prints: '?' + * ``` + * + * Because the Euro (`€`) sign is not representable in US-ASCII, it is replaced + * with `?` in the transcoded `Buffer`. + * @since v7.1.0 + * @param source A `Buffer` or `Uint8Array` instance. + * @param fromEnc The current encoding. + * @param toEnc To target encoding. + */ + export function transcode(source: Uint8Array, fromEnc: TranscodeEncoding, toEnc: TranscodeEncoding): Buffer; + export const SlowBuffer: { + /** @deprecated since v6.0.0, use `Buffer.allocUnsafeSlow()` */ + new(size: number): Buffer; + prototype: Buffer; + }; + /** + * Resolves a `'blob:nodedata:...'` an associated `Blob` object registered using + * a prior call to `URL.createObjectURL()`. + * @since v16.7.0 + * @experimental + * @param id A `'blob:nodedata:...` URL string returned by a prior call to `URL.createObjectURL()`. + */ + export function resolveObjectURL(id: string): Blob | undefined; + export { Buffer }; + /** + * @experimental + */ + export interface BlobOptions { + /** + * @default 'utf8' + */ + encoding?: BufferEncoding | undefined; + /** + * The Blob content-type. The intent is for `type` to convey + * the MIME media type of the data, however no validation of the type format + * is performed. + */ + type?: string | undefined; + } + /** + * A [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) encapsulates immutable, raw data that can be safely shared across + * multiple worker threads. + * @since v15.7.0, v14.18.0 + */ + export class Blob { + /** + * The total size of the `Blob` in bytes. + * @since v15.7.0, v14.18.0 + */ + readonly size: number; + /** + * The content-type of the `Blob`. + * @since v15.7.0, v14.18.0 + */ + readonly type: string; + /** + * Creates a new `Blob` object containing a concatenation of the given sources. + * + * {ArrayBuffer}, {TypedArray}, {DataView}, and {Buffer} sources are copied into + * the 'Blob' and can therefore be safely modified after the 'Blob' is created. + * + * String sources are also copied into the `Blob`. + */ + constructor(sources: Array, options?: BlobOptions); + /** + * Returns a promise that fulfills with an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) containing a copy of + * the `Blob` data. + * @since v15.7.0, v14.18.0 + */ + arrayBuffer(): Promise; + /** + * Creates and returns a new `Blob` containing a subset of this `Blob` objects + * data. The original `Blob` is not altered. + * @since v15.7.0, v14.18.0 + * @param start The starting index. + * @param end The ending index. + * @param type The content-type for the new `Blob` + */ + slice(start?: number, end?: number, type?: string): Blob; + /** + * Returns a promise that fulfills with the contents of the `Blob` decoded as a + * UTF-8 string. + * @since v15.7.0, v14.18.0 + */ + text(): Promise; + /** + * Returns a new `ReadableStream` that allows the content of the `Blob` to be read. + * @since v16.7.0 + */ + stream(): WebReadableStream; + } + export interface FileOptions { + /** + * One of either `'transparent'` or `'native'`. When set to `'native'`, line endings in string source parts will be + * converted to the platform native line-ending as specified by `require('node:os').EOL`. + */ + endings?: "native" | "transparent"; + /** The File content-type. */ + type?: string; + /** The last modified date of the file. `Default`: Date.now(). */ + lastModified?: number; + } + /** + * A [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File) provides information about files. + * @since v19.2.0, v18.13.0 + */ + export class File extends Blob { + constructor(sources: Array, fileName: string, options?: FileOptions); + /** + * The name of the `File`. + * @since v19.2.0, v18.13.0 + */ + readonly name: string; + /** + * The last modified date of the `File`. + * @since v19.2.0, v18.13.0 + */ + readonly lastModified: number; + } + export import atob = globalThis.atob; + export import btoa = globalThis.btoa; + import { Blob as NodeBlob } from "buffer"; + // This conditional type will be the existing global Blob in a browser, or + // the copy below in a Node environment. + type __Blob = typeof globalThis extends { onmessage: any; Blob: any } ? {} : NodeBlob; + global { + namespace NodeJS { + export { BufferEncoding }; + } + // Buffer class + type BufferEncoding = + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "base64" + | "base64url" + | "latin1" + | "binary" + | "hex"; + type WithImplicitCoercion = + | T + | { + valueOf(): T; + }; + /** + * Raw data is stored in instances of the Buffer class. + * A Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized. + * Valid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'base64url'|'binary'(deprecated)|'hex' + */ + interface BufferConstructor { + /** + * Allocates a new buffer containing the given {str}. + * + * @param str String to store in buffer. + * @param encoding encoding to use, optional. Default is 'utf8' + * @deprecated since v10.0.0 - Use `Buffer.from(string[, encoding])` instead. + */ + new(str: string, encoding?: BufferEncoding): Buffer; + /** + * Allocates a new buffer of {size} octets. + * + * @param size count of octets to allocate. + * @deprecated since v10.0.0 - Use `Buffer.alloc()` instead (also see `Buffer.allocUnsafe()`). + */ + new(size: number): Buffer; + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + * @deprecated since v10.0.0 - Use `Buffer.from(array)` instead. + */ + new(array: Uint8Array): Buffer; + /** + * Produces a Buffer backed by the same allocated memory as + * the given {ArrayBuffer}/{SharedArrayBuffer}. + * + * @param arrayBuffer The ArrayBuffer with which to share memory. + * @deprecated since v10.0.0 - Use `Buffer.from(arrayBuffer[, byteOffset[, length]])` instead. + */ + new(arrayBuffer: ArrayBuffer | SharedArrayBuffer): Buffer; + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + * @deprecated since v10.0.0 - Use `Buffer.from(array)` instead. + */ + new(array: ReadonlyArray): Buffer; + /** + * Copies the passed {buffer} data onto a new {Buffer} instance. + * + * @param buffer The buffer to copy. + * @deprecated since v10.0.0 - Use `Buffer.from(buffer)` instead. + */ + new(buffer: Buffer): Buffer; + /** + * Allocates a new `Buffer` using an `array` of bytes in the range `0` – `255`. + * Array entries outside that range will be truncated to fit into it. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Creates a new Buffer containing the UTF-8 bytes of the string 'buffer'. + * const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]); + * ``` + * + * If `array` is an `Array`\-like object (that is, one with a `length` property of + * type `number`), it is treated as if it is an array, unless it is a `Buffer` or + * a `Uint8Array`. This means all other `TypedArray` variants get treated as an`Array`. To create a `Buffer` from the bytes backing a `TypedArray`, use `Buffer.copyBytesFrom()`. + * + * A `TypeError` will be thrown if `array` is not an `Array` or another type + * appropriate for `Buffer.from()` variants. + * + * `Buffer.from(array)` and `Buffer.from(string)` may also use the internal`Buffer` pool like `Buffer.allocUnsafe()` does. + * @since v5.10.0 + */ + from( + arrayBuffer: WithImplicitCoercion, + byteOffset?: number, + length?: number, + ): Buffer; + /** + * Creates a new Buffer using the passed {data} + * @param data data to create a new Buffer + */ + from(data: Uint8Array | ReadonlyArray): Buffer; + from(data: WithImplicitCoercion | string>): Buffer; + /** + * Creates a new Buffer containing the given JavaScript string {str}. + * If provided, the {encoding} parameter identifies the character encoding. + * If not provided, {encoding} defaults to 'utf8'. + */ + from( + str: + | WithImplicitCoercion + | { + [Symbol.toPrimitive](hint: "string"): string; + }, + encoding?: BufferEncoding, + ): Buffer; + /** + * Creates a new Buffer using the passed {data} + * @param values to create a new Buffer + */ + of(...items: number[]): Buffer; + /** + * Returns `true` if `obj` is a `Buffer`, `false` otherwise. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * Buffer.isBuffer(Buffer.alloc(10)); // true + * Buffer.isBuffer(Buffer.from('foo')); // true + * Buffer.isBuffer('a string'); // false + * Buffer.isBuffer([]); // false + * Buffer.isBuffer(new Uint8Array(1024)); // false + * ``` + * @since v0.1.101 + */ + isBuffer(obj: any): obj is Buffer; + /** + * Returns `true` if `encoding` is the name of a supported character encoding, + * or `false` otherwise. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * console.log(Buffer.isEncoding('utf8')); + * // Prints: true + * + * console.log(Buffer.isEncoding('hex')); + * // Prints: true + * + * console.log(Buffer.isEncoding('utf/8')); + * // Prints: false + * + * console.log(Buffer.isEncoding('')); + * // Prints: false + * ``` + * @since v0.9.1 + * @param encoding A character encoding name to check. + */ + isEncoding(encoding: string): encoding is BufferEncoding; + /** + * Returns the byte length of a string when encoded using `encoding`. + * This is not the same as [`String.prototype.length`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length), which does not account + * for the encoding that is used to convert the string into bytes. + * + * For `'base64'`, `'base64url'`, and `'hex'`, this function assumes valid input. + * For strings that contain non-base64/hex-encoded data (e.g. whitespace), the + * return value might be greater than the length of a `Buffer` created from the + * string. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const str = '\u00bd + \u00bc = \u00be'; + * + * console.log(`${str}: ${str.length} characters, ` + + * `${Buffer.byteLength(str, 'utf8')} bytes`); + * // Prints: ½ + ¼ = ¾: 9 characters, 12 bytes + * ``` + * + * When `string` is a + * `Buffer`/[`DataView`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView)/[`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/- + * Reference/Global_Objects/TypedArray)/[`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)/[`SharedArrayBuffer`](https://develop- + * er.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer), the byte length as reported by `.byteLength`is returned. + * @since v0.1.90 + * @param string A value to calculate the length of. + * @param [encoding='utf8'] If `string` is a string, this is its encoding. + * @return The number of bytes contained within `string`. + */ + byteLength( + string: string | NodeJS.ArrayBufferView | ArrayBuffer | SharedArrayBuffer, + encoding?: BufferEncoding, + ): number; + /** + * Returns a new `Buffer` which is the result of concatenating all the `Buffer`instances in the `list` together. + * + * If the list has no items, or if the `totalLength` is 0, then a new zero-length`Buffer` is returned. + * + * If `totalLength` is not provided, it is calculated from the `Buffer` instances + * in `list` by adding their lengths. + * + * If `totalLength` is provided, it is coerced to an unsigned integer. If the + * combined length of the `Buffer`s in `list` exceeds `totalLength`, the result is + * truncated to `totalLength`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Create a single `Buffer` from a list of three `Buffer` instances. + * + * const buf1 = Buffer.alloc(10); + * const buf2 = Buffer.alloc(14); + * const buf3 = Buffer.alloc(18); + * const totalLength = buf1.length + buf2.length + buf3.length; + * + * console.log(totalLength); + * // Prints: 42 + * + * const bufA = Buffer.concat([buf1, buf2, buf3], totalLength); + * + * console.log(bufA); + * // Prints: + * console.log(bufA.length); + * // Prints: 42 + * ``` + * + * `Buffer.concat()` may also use the internal `Buffer` pool like `Buffer.allocUnsafe()` does. + * @since v0.7.11 + * @param list List of `Buffer` or {@link Uint8Array} instances to concatenate. + * @param totalLength Total length of the `Buffer` instances in `list` when concatenated. + */ + concat(list: ReadonlyArray, totalLength?: number): Buffer; + /** + * Copies the underlying memory of `view` into a new `Buffer`. + * + * ```js + * const u16 = new Uint16Array([0, 0xffff]); + * const buf = Buffer.copyBytesFrom(u16, 1, 1); + * u16[1] = 0; + * console.log(buf.length); // 2 + * console.log(buf[0]); // 255 + * console.log(buf[1]); // 255 + * ``` + * @since v19.8.0 + * @param view The {TypedArray} to copy. + * @param [offset=': 0'] The starting offset within `view`. + * @param [length=view.length - offset] The number of elements from `view` to copy. + */ + copyBytesFrom(view: NodeJS.TypedArray, offset?: number, length?: number): Buffer; + /** + * Compares `buf1` to `buf2`, typically for the purpose of sorting arrays of`Buffer` instances. This is equivalent to calling `buf1.compare(buf2)`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.from('1234'); + * const buf2 = Buffer.from('0123'); + * const arr = [buf1, buf2]; + * + * console.log(arr.sort(Buffer.compare)); + * // Prints: [ , ] + * // (This result is equal to: [buf2, buf1].) + * ``` + * @since v0.11.13 + * @return Either `-1`, `0`, or `1`, depending on the result of the comparison. See `compare` for details. + */ + compare(buf1: Uint8Array, buf2: Uint8Array): -1 | 0 | 1; + /** + * Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the`Buffer` will be zero-filled. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.alloc(5); + * + * console.log(buf); + * // Prints: + * ``` + * + * If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_OUT_OF_RANGE` is thrown. + * + * If `fill` is specified, the allocated `Buffer` will be initialized by calling `buf.fill(fill)`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.alloc(5, 'a'); + * + * console.log(buf); + * // Prints: + * ``` + * + * If both `fill` and `encoding` are specified, the allocated `Buffer` will be + * initialized by calling `buf.fill(fill, encoding)`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64'); + * + * console.log(buf); + * // Prints: + * ``` + * + * Calling `Buffer.alloc()` can be measurably slower than the alternative `Buffer.allocUnsafe()` but ensures that the newly created `Buffer` instance + * contents will never contain sensitive data from previous allocations, including + * data that might not have been allocated for `Buffer`s. + * + * A `TypeError` will be thrown if `size` is not a number. + * @since v5.10.0 + * @param size The desired length of the new `Buffer`. + * @param [fill=0] A value to pre-fill the new `Buffer` with. + * @param [encoding='utf8'] If `fill` is a string, this is its encoding. + */ + alloc(size: number, fill?: string | Uint8Array | number, encoding?: BufferEncoding): Buffer; + /** + * Allocates a new `Buffer` of `size` bytes. If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_OUT_OF_RANGE` is thrown. + * + * The underlying memory for `Buffer` instances created in this way is _not_ + * _initialized_. The contents of the newly created `Buffer` are unknown and _may contain sensitive data_. Use `Buffer.alloc()` instead to initialize`Buffer` instances with zeroes. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(10); + * + * console.log(buf); + * // Prints (contents may vary): + * + * buf.fill(0); + * + * console.log(buf); + * // Prints: + * ``` + * + * A `TypeError` will be thrown if `size` is not a number. + * + * The `Buffer` module pre-allocates an internal `Buffer` instance of + * size `Buffer.poolSize` that is used as a pool for the fast allocation of new`Buffer` instances created using `Buffer.allocUnsafe()`, `Buffer.from(array)`, + * and `Buffer.concat()` only when `size` is less than or equal to`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). + * + * Use of this pre-allocated internal memory pool is a key difference between + * calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`. + * Specifically, `Buffer.alloc(size, fill)` will _never_ use the internal `Buffer`pool, while `Buffer.allocUnsafe(size).fill(fill)`_will_ use the internal`Buffer` pool if `size` is less + * than or equal to half `Buffer.poolSize`. The + * difference is subtle but can be important when an application requires the + * additional performance that `Buffer.allocUnsafe()` provides. + * @since v5.10.0 + * @param size The desired length of the new `Buffer`. + */ + allocUnsafe(size: number): Buffer; + /** + * Allocates a new `Buffer` of `size` bytes. If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_OUT_OF_RANGE` is thrown. A zero-length `Buffer` is created if + * `size` is 0. + * + * The underlying memory for `Buffer` instances created in this way is _not_ + * _initialized_. The contents of the newly created `Buffer` are unknown and _may contain sensitive data_. Use `buf.fill(0)` to initialize + * such `Buffer` instances with zeroes. + * + * When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances, + * allocations under 4 KiB are sliced from a single pre-allocated `Buffer`. This + * allows applications to avoid the garbage collection overhead of creating many + * individually allocated `Buffer` instances. This approach improves both + * performance and memory usage by eliminating the need to track and clean up as + * many individual `ArrayBuffer` objects. + * + * However, in the case where a developer may need to retain a small chunk of + * memory from a pool for an indeterminate amount of time, it may be appropriate + * to create an un-pooled `Buffer` instance using `Buffer.allocUnsafeSlow()` and + * then copying out the relevant bits. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Need to keep around a few small chunks of memory. + * const store = []; + * + * socket.on('readable', () => { + * let data; + * while (null !== (data = readable.read())) { + * // Allocate for retained data. + * const sb = Buffer.allocUnsafeSlow(10); + * + * // Copy the data into the new allocation. + * data.copy(sb, 0, 0, 10); + * + * store.push(sb); + * } + * }); + * ``` + * + * A `TypeError` will be thrown if `size` is not a number. + * @since v5.12.0 + * @param size The desired length of the new `Buffer`. + */ + allocUnsafeSlow(size: number): Buffer; + /** + * This is the size (in bytes) of pre-allocated internal `Buffer` instances used + * for pooling. This value may be modified. + * @since v0.11.3 + */ + poolSize: number; + } + interface Buffer extends Uint8Array { + /** + * Writes `string` to `buf` at `offset` according to the character encoding in`encoding`. The `length` parameter is the number of bytes to write. If `buf` did + * not contain enough space to fit the entire string, only part of `string` will be + * written. However, partially encoded characters will not be written. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.alloc(256); + * + * const len = buf.write('\u00bd + \u00bc = \u00be', 0); + * + * console.log(`${len} bytes: ${buf.toString('utf8', 0, len)}`); + * // Prints: 12 bytes: ½ + ¼ = ¾ + * + * const buffer = Buffer.alloc(10); + * + * const length = buffer.write('abcd', 8); + * + * console.log(`${length} bytes: ${buffer.toString('utf8', 8, 10)}`); + * // Prints: 2 bytes : ab + * ``` + * @since v0.1.90 + * @param string String to write to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write `string`. + * @param [length=buf.length - offset] Maximum number of bytes to write (written bytes will not exceed `buf.length - offset`). + * @param [encoding='utf8'] The character encoding of `string`. + * @return Number of bytes written. + */ + write(string: string, encoding?: BufferEncoding): number; + write(string: string, offset: number, encoding?: BufferEncoding): number; + write(string: string, offset: number, length: number, encoding?: BufferEncoding): number; + /** + * Decodes `buf` to a string according to the specified character encoding in`encoding`. `start` and `end` may be passed to decode only a subset of `buf`. + * + * If `encoding` is `'utf8'` and a byte sequence in the input is not valid UTF-8, + * then each invalid byte is replaced with the replacement character `U+FFFD`. + * + * The maximum length of a string instance (in UTF-16 code units) is available + * as {@link constants.MAX_STRING_LENGTH}. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.allocUnsafe(26); + * + * for (let i = 0; i < 26; i++) { + * // 97 is the decimal ASCII value for 'a'. + * buf1[i] = i + 97; + * } + * + * console.log(buf1.toString('utf8')); + * // Prints: abcdefghijklmnopqrstuvwxyz + * console.log(buf1.toString('utf8', 0, 5)); + * // Prints: abcde + * + * const buf2 = Buffer.from('tést'); + * + * console.log(buf2.toString('hex')); + * // Prints: 74c3a97374 + * console.log(buf2.toString('utf8', 0, 3)); + * // Prints: té + * console.log(buf2.toString(undefined, 0, 3)); + * // Prints: té + * ``` + * @since v0.1.90 + * @param [encoding='utf8'] The character encoding to use. + * @param [start=0] The byte offset to start decoding at. + * @param [end=buf.length] The byte offset to stop decoding at (not inclusive). + */ + toString(encoding?: BufferEncoding, start?: number, end?: number): string; + /** + * Returns a JSON representation of `buf`. [`JSON.stringify()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) implicitly calls + * this function when stringifying a `Buffer` instance. + * + * `Buffer.from()` accepts objects in the format returned from this method. + * In particular, `Buffer.from(buf.toJSON())` works like `Buffer.from(buf)`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]); + * const json = JSON.stringify(buf); + * + * console.log(json); + * // Prints: {"type":"Buffer","data":[1,2,3,4,5]} + * + * const copy = JSON.parse(json, (key, value) => { + * return value && value.type === 'Buffer' ? + * Buffer.from(value) : + * value; + * }); + * + * console.log(copy); + * // Prints: + * ``` + * @since v0.9.2 + */ + toJSON(): { + type: "Buffer"; + data: number[]; + }; + /** + * Returns `true` if both `buf` and `otherBuffer` have exactly the same bytes,`false` otherwise. Equivalent to `buf.compare(otherBuffer) === 0`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.from('ABC'); + * const buf2 = Buffer.from('414243', 'hex'); + * const buf3 = Buffer.from('ABCD'); + * + * console.log(buf1.equals(buf2)); + * // Prints: true + * console.log(buf1.equals(buf3)); + * // Prints: false + * ``` + * @since v0.11.13 + * @param otherBuffer A `Buffer` or {@link Uint8Array} with which to compare `buf`. + */ + equals(otherBuffer: Uint8Array): boolean; + /** + * Compares `buf` with `target` and returns a number indicating whether `buf`comes before, after, or is the same as `target` in sort order. + * Comparison is based on the actual sequence of bytes in each `Buffer`. + * + * * `0` is returned if `target` is the same as `buf` + * * `1` is returned if `target` should come _before_`buf` when sorted. + * * `-1` is returned if `target` should come _after_`buf` when sorted. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.from('ABC'); + * const buf2 = Buffer.from('BCD'); + * const buf3 = Buffer.from('ABCD'); + * + * console.log(buf1.compare(buf1)); + * // Prints: 0 + * console.log(buf1.compare(buf2)); + * // Prints: -1 + * console.log(buf1.compare(buf3)); + * // Prints: -1 + * console.log(buf2.compare(buf1)); + * // Prints: 1 + * console.log(buf2.compare(buf3)); + * // Prints: 1 + * console.log([buf1, buf2, buf3].sort(Buffer.compare)); + * // Prints: [ , , ] + * // (This result is equal to: [buf1, buf3, buf2].) + * ``` + * + * The optional `targetStart`, `targetEnd`, `sourceStart`, and `sourceEnd`arguments can be used to limit the comparison to specific ranges within `target`and `buf` respectively. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9]); + * const buf2 = Buffer.from([5, 6, 7, 8, 9, 1, 2, 3, 4]); + * + * console.log(buf1.compare(buf2, 5, 9, 0, 4)); + * // Prints: 0 + * console.log(buf1.compare(buf2, 0, 6, 4)); + * // Prints: -1 + * console.log(buf1.compare(buf2, 5, 6, 5)); + * // Prints: 1 + * ``` + * + * `ERR_OUT_OF_RANGE` is thrown if `targetStart < 0`, `sourceStart < 0`,`targetEnd > target.byteLength`, or `sourceEnd > source.byteLength`. + * @since v0.11.13 + * @param target A `Buffer` or {@link Uint8Array} with which to compare `buf`. + * @param [targetStart=0] The offset within `target` at which to begin comparison. + * @param [targetEnd=target.length] The offset within `target` at which to end comparison (not inclusive). + * @param [sourceStart=0] The offset within `buf` at which to begin comparison. + * @param [sourceEnd=buf.length] The offset within `buf` at which to end comparison (not inclusive). + */ + compare( + target: Uint8Array, + targetStart?: number, + targetEnd?: number, + sourceStart?: number, + sourceEnd?: number, + ): -1 | 0 | 1; + /** + * Copies data from a region of `buf` to a region in `target`, even if the `target`memory region overlaps with `buf`. + * + * [`TypedArray.prototype.set()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/set) performs the same operation, and is available + * for all TypedArrays, including Node.js `Buffer`s, although it takes + * different function arguments. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Create two `Buffer` instances. + * const buf1 = Buffer.allocUnsafe(26); + * const buf2 = Buffer.allocUnsafe(26).fill('!'); + * + * for (let i = 0; i < 26; i++) { + * // 97 is the decimal ASCII value for 'a'. + * buf1[i] = i + 97; + * } + * + * // Copy `buf1` bytes 16 through 19 into `buf2` starting at byte 8 of `buf2`. + * buf1.copy(buf2, 8, 16, 20); + * // This is equivalent to: + * // buf2.set(buf1.subarray(16, 20), 8); + * + * console.log(buf2.toString('ascii', 0, 25)); + * // Prints: !!!!!!!!qrst!!!!!!!!!!!!! + * ``` + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Create a `Buffer` and copy data from one region to an overlapping region + * // within the same `Buffer`. + * + * const buf = Buffer.allocUnsafe(26); + * + * for (let i = 0; i < 26; i++) { + * // 97 is the decimal ASCII value for 'a'. + * buf[i] = i + 97; + * } + * + * buf.copy(buf, 0, 4, 10); + * + * console.log(buf.toString()); + * // Prints: efghijghijklmnopqrstuvwxyz + * ``` + * @since v0.1.90 + * @param target A `Buffer` or {@link Uint8Array} to copy into. + * @param [targetStart=0] The offset within `target` at which to begin writing. + * @param [sourceStart=0] The offset within `buf` from which to begin copying. + * @param [sourceEnd=buf.length] The offset within `buf` at which to stop copying (not inclusive). + * @return The number of bytes copied. + */ + copy(target: Uint8Array, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; + /** + * Returns a new `Buffer` that references the same memory as the original, but + * offset and cropped by the `start` and `end` indices. + * + * This method is not compatible with the `Uint8Array.prototype.slice()`, + * which is a superclass of `Buffer`. To copy the slice, use`Uint8Array.prototype.slice()`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from('buffer'); + * + * const copiedBuf = Uint8Array.prototype.slice.call(buf); + * copiedBuf[0]++; + * console.log(copiedBuf.toString()); + * // Prints: cuffer + * + * console.log(buf.toString()); + * // Prints: buffer + * + * // With buf.slice(), the original buffer is modified. + * const notReallyCopiedBuf = buf.slice(); + * notReallyCopiedBuf[0]++; + * console.log(notReallyCopiedBuf.toString()); + * // Prints: cuffer + * console.log(buf.toString()); + * // Also prints: cuffer (!) + * ``` + * @since v0.3.0 + * @deprecated Use `subarray` instead. + * @param [start=0] Where the new `Buffer` will start. + * @param [end=buf.length] Where the new `Buffer` will end (not inclusive). + */ + slice(start?: number, end?: number): Buffer; + /** + * Returns a new `Buffer` that references the same memory as the original, but + * offset and cropped by the `start` and `end` indices. + * + * Specifying `end` greater than `buf.length` will return the same result as + * that of `end` equal to `buf.length`. + * + * This method is inherited from [`TypedArray.prototype.subarray()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/subarray). + * + * Modifying the new `Buffer` slice will modify the memory in the original `Buffer`because the allocated memory of the two objects overlap. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Create a `Buffer` with the ASCII alphabet, take a slice, and modify one byte + * // from the original `Buffer`. + * + * const buf1 = Buffer.allocUnsafe(26); + * + * for (let i = 0; i < 26; i++) { + * // 97 is the decimal ASCII value for 'a'. + * buf1[i] = i + 97; + * } + * + * const buf2 = buf1.subarray(0, 3); + * + * console.log(buf2.toString('ascii', 0, buf2.length)); + * // Prints: abc + * + * buf1[0] = 33; + * + * console.log(buf2.toString('ascii', 0, buf2.length)); + * // Prints: !bc + * ``` + * + * Specifying negative indexes causes the slice to be generated relative to the + * end of `buf` rather than the beginning. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from('buffer'); + * + * console.log(buf.subarray(-6, -1).toString()); + * // Prints: buffe + * // (Equivalent to buf.subarray(0, 5).) + * + * console.log(buf.subarray(-6, -2).toString()); + * // Prints: buff + * // (Equivalent to buf.subarray(0, 4).) + * + * console.log(buf.subarray(-5, -2).toString()); + * // Prints: uff + * // (Equivalent to buf.subarray(1, 4).) + * ``` + * @since v3.0.0 + * @param [start=0] Where the new `Buffer` will start. + * @param [end=buf.length] Where the new `Buffer` will end (not inclusive). + */ + subarray(start?: number, end?: number): Buffer; + /** + * Writes `value` to `buf` at the specified `offset` as big-endian. + * + * `value` is interpreted and written as a two's complement signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(8); + * + * buf.writeBigInt64BE(0x0102030405060708n, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v12.0.0, v10.20.0 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy: `0 <= offset <= buf.length - 8`. + * @return `offset` plus the number of bytes written. + */ + writeBigInt64BE(value: bigint, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as little-endian. + * + * `value` is interpreted and written as a two's complement signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(8); + * + * buf.writeBigInt64LE(0x0102030405060708n, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v12.0.0, v10.20.0 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy: `0 <= offset <= buf.length - 8`. + * @return `offset` plus the number of bytes written. + */ + writeBigInt64LE(value: bigint, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as big-endian. + * + * This function is also available under the `writeBigUint64BE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(8); + * + * buf.writeBigUInt64BE(0xdecafafecacefaden, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v12.0.0, v10.20.0 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy: `0 <= offset <= buf.length - 8`. + * @return `offset` plus the number of bytes written. + */ + writeBigUInt64BE(value: bigint, offset?: number): number; + /** + * @alias Buffer.writeBigUInt64BE + * @since v14.10.0, v12.19.0 + */ + writeBigUint64BE(value: bigint, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as little-endian + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(8); + * + * buf.writeBigUInt64LE(0xdecafafecacefaden, 0); + * + * console.log(buf); + * // Prints: + * ``` + * + * This function is also available under the `writeBigUint64LE` alias. + * @since v12.0.0, v10.20.0 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy: `0 <= offset <= buf.length - 8`. + * @return `offset` plus the number of bytes written. + */ + writeBigUInt64LE(value: bigint, offset?: number): number; + /** + * @alias Buffer.writeBigUInt64LE + * @since v14.10.0, v12.19.0 + */ + writeBigUint64LE(value: bigint, offset?: number): number; + /** + * Writes `byteLength` bytes of `value` to `buf` at the specified `offset`as little-endian. Supports up to 48 bits of accuracy. Behavior is undefined + * when `value` is anything other than an unsigned integer. + * + * This function is also available under the `writeUintLE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(6); + * + * buf.writeUIntLE(0x1234567890ab, 0, 6); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param offset Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - byteLength`. + * @param byteLength Number of bytes to write. Must satisfy `0 < byteLength <= 6`. + * @return `offset` plus the number of bytes written. + */ + writeUIntLE(value: number, offset: number, byteLength: number): number; + /** + * @alias Buffer.writeUIntLE + * @since v14.9.0, v12.19.0 + */ + writeUintLE(value: number, offset: number, byteLength: number): number; + /** + * Writes `byteLength` bytes of `value` to `buf` at the specified `offset`as big-endian. Supports up to 48 bits of accuracy. Behavior is undefined + * when `value` is anything other than an unsigned integer. + * + * This function is also available under the `writeUintBE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(6); + * + * buf.writeUIntBE(0x1234567890ab, 0, 6); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param offset Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - byteLength`. + * @param byteLength Number of bytes to write. Must satisfy `0 < byteLength <= 6`. + * @return `offset` plus the number of bytes written. + */ + writeUIntBE(value: number, offset: number, byteLength: number): number; + /** + * @alias Buffer.writeUIntBE + * @since v14.9.0, v12.19.0 + */ + writeUintBE(value: number, offset: number, byteLength: number): number; + /** + * Writes `byteLength` bytes of `value` to `buf` at the specified `offset`as little-endian. Supports up to 48 bits of accuracy. Behavior is undefined + * when `value` is anything other than a signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(6); + * + * buf.writeIntLE(0x1234567890ab, 0, 6); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.11.15 + * @param value Number to be written to `buf`. + * @param offset Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - byteLength`. + * @param byteLength Number of bytes to write. Must satisfy `0 < byteLength <= 6`. + * @return `offset` plus the number of bytes written. + */ + writeIntLE(value: number, offset: number, byteLength: number): number; + /** + * Writes `byteLength` bytes of `value` to `buf` at the specified `offset`as big-endian. Supports up to 48 bits of accuracy. Behavior is undefined when`value` is anything other than a + * signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(6); + * + * buf.writeIntBE(0x1234567890ab, 0, 6); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.11.15 + * @param value Number to be written to `buf`. + * @param offset Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - byteLength`. + * @param byteLength Number of bytes to write. Must satisfy `0 < byteLength <= 6`. + * @return `offset` plus the number of bytes written. + */ + writeIntBE(value: number, offset: number, byteLength: number): number; + /** + * Reads an unsigned, big-endian 64-bit integer from `buf` at the specified`offset`. + * + * This function is also available under the `readBigUint64BE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff]); + * + * console.log(buf.readBigUInt64BE(0)); + * // Prints: 4294967295n + * ``` + * @since v12.0.0, v10.20.0 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy: `0 <= offset <= buf.length - 8`. + */ + readBigUInt64BE(offset?: number): bigint; + /** + * @alias Buffer.readBigUInt64BE + * @since v14.10.0, v12.19.0 + */ + readBigUint64BE(offset?: number): bigint; + /** + * Reads an unsigned, little-endian 64-bit integer from `buf` at the specified`offset`. + * + * This function is also available under the `readBigUint64LE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff]); + * + * console.log(buf.readBigUInt64LE(0)); + * // Prints: 18446744069414584320n + * ``` + * @since v12.0.0, v10.20.0 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy: `0 <= offset <= buf.length - 8`. + */ + readBigUInt64LE(offset?: number): bigint; + /** + * @alias Buffer.readBigUInt64LE + * @since v14.10.0, v12.19.0 + */ + readBigUint64LE(offset?: number): bigint; + /** + * Reads a signed, big-endian 64-bit integer from `buf` at the specified `offset`. + * + * Integers read from a `Buffer` are interpreted as two's complement signed + * values. + * @since v12.0.0, v10.20.0 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy: `0 <= offset <= buf.length - 8`. + */ + readBigInt64BE(offset?: number): bigint; + /** + * Reads a signed, little-endian 64-bit integer from `buf` at the specified`offset`. + * + * Integers read from a `Buffer` are interpreted as two's complement signed + * values. + * @since v12.0.0, v10.20.0 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy: `0 <= offset <= buf.length - 8`. + */ + readBigInt64LE(offset?: number): bigint; + /** + * Reads `byteLength` number of bytes from `buf` at the specified `offset`and interprets the result as an unsigned, little-endian integer supporting + * up to 48 bits of accuracy. + * + * This function is also available under the `readUintLE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]); + * + * console.log(buf.readUIntLE(0, 6).toString(16)); + * // Prints: ab9078563412 + * ``` + * @since v0.11.15 + * @param offset Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - byteLength`. + * @param byteLength Number of bytes to read. Must satisfy `0 < byteLength <= 6`. + */ + readUIntLE(offset: number, byteLength: number): number; + /** + * @alias Buffer.readUIntLE + * @since v14.9.0, v12.19.0 + */ + readUintLE(offset: number, byteLength: number): number; + /** + * Reads `byteLength` number of bytes from `buf` at the specified `offset`and interprets the result as an unsigned big-endian integer supporting + * up to 48 bits of accuracy. + * + * This function is also available under the `readUintBE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]); + * + * console.log(buf.readUIntBE(0, 6).toString(16)); + * // Prints: 1234567890ab + * console.log(buf.readUIntBE(1, 6).toString(16)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.11.15 + * @param offset Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - byteLength`. + * @param byteLength Number of bytes to read. Must satisfy `0 < byteLength <= 6`. + */ + readUIntBE(offset: number, byteLength: number): number; + /** + * @alias Buffer.readUIntBE + * @since v14.9.0, v12.19.0 + */ + readUintBE(offset: number, byteLength: number): number; + /** + * Reads `byteLength` number of bytes from `buf` at the specified `offset`and interprets the result as a little-endian, two's complement signed value + * supporting up to 48 bits of accuracy. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]); + * + * console.log(buf.readIntLE(0, 6).toString(16)); + * // Prints: -546f87a9cbee + * ``` + * @since v0.11.15 + * @param offset Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - byteLength`. + * @param byteLength Number of bytes to read. Must satisfy `0 < byteLength <= 6`. + */ + readIntLE(offset: number, byteLength: number): number; + /** + * Reads `byteLength` number of bytes from `buf` at the specified `offset`and interprets the result as a big-endian, two's complement signed value + * supporting up to 48 bits of accuracy. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]); + * + * console.log(buf.readIntBE(0, 6).toString(16)); + * // Prints: 1234567890ab + * console.log(buf.readIntBE(1, 6).toString(16)); + * // Throws ERR_OUT_OF_RANGE. + * console.log(buf.readIntBE(1, 0).toString(16)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.11.15 + * @param offset Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - byteLength`. + * @param byteLength Number of bytes to read. Must satisfy `0 < byteLength <= 6`. + */ + readIntBE(offset: number, byteLength: number): number; + /** + * Reads an unsigned 8-bit integer from `buf` at the specified `offset`. + * + * This function is also available under the `readUint8` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([1, -2]); + * + * console.log(buf.readUInt8(0)); + * // Prints: 1 + * console.log(buf.readUInt8(1)); + * // Prints: 254 + * console.log(buf.readUInt8(2)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.5.0 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 1`. + */ + readUInt8(offset?: number): number; + /** + * @alias Buffer.readUInt8 + * @since v14.9.0, v12.19.0 + */ + readUint8(offset?: number): number; + /** + * Reads an unsigned, little-endian 16-bit integer from `buf` at the specified`offset`. + * + * This function is also available under the `readUint16LE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x12, 0x34, 0x56]); + * + * console.log(buf.readUInt16LE(0).toString(16)); + * // Prints: 3412 + * console.log(buf.readUInt16LE(1).toString(16)); + * // Prints: 5634 + * console.log(buf.readUInt16LE(2).toString(16)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.5.5 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 2`. + */ + readUInt16LE(offset?: number): number; + /** + * @alias Buffer.readUInt16LE + * @since v14.9.0, v12.19.0 + */ + readUint16LE(offset?: number): number; + /** + * Reads an unsigned, big-endian 16-bit integer from `buf` at the specified`offset`. + * + * This function is also available under the `readUint16BE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x12, 0x34, 0x56]); + * + * console.log(buf.readUInt16BE(0).toString(16)); + * // Prints: 1234 + * console.log(buf.readUInt16BE(1).toString(16)); + * // Prints: 3456 + * ``` + * @since v0.5.5 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 2`. + */ + readUInt16BE(offset?: number): number; + /** + * @alias Buffer.readUInt16BE + * @since v14.9.0, v12.19.0 + */ + readUint16BE(offset?: number): number; + /** + * Reads an unsigned, little-endian 32-bit integer from `buf` at the specified`offset`. + * + * This function is also available under the `readUint32LE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]); + * + * console.log(buf.readUInt32LE(0).toString(16)); + * // Prints: 78563412 + * console.log(buf.readUInt32LE(1).toString(16)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.5.5 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. + */ + readUInt32LE(offset?: number): number; + /** + * @alias Buffer.readUInt32LE + * @since v14.9.0, v12.19.0 + */ + readUint32LE(offset?: number): number; + /** + * Reads an unsigned, big-endian 32-bit integer from `buf` at the specified`offset`. + * + * This function is also available under the `readUint32BE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]); + * + * console.log(buf.readUInt32BE(0).toString(16)); + * // Prints: 12345678 + * ``` + * @since v0.5.5 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. + */ + readUInt32BE(offset?: number): number; + /** + * @alias Buffer.readUInt32BE + * @since v14.9.0, v12.19.0 + */ + readUint32BE(offset?: number): number; + /** + * Reads a signed 8-bit integer from `buf` at the specified `offset`. + * + * Integers read from a `Buffer` are interpreted as two's complement signed values. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([-1, 5]); + * + * console.log(buf.readInt8(0)); + * // Prints: -1 + * console.log(buf.readInt8(1)); + * // Prints: 5 + * console.log(buf.readInt8(2)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.5.0 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 1`. + */ + readInt8(offset?: number): number; + /** + * Reads a signed, little-endian 16-bit integer from `buf` at the specified`offset`. + * + * Integers read from a `Buffer` are interpreted as two's complement signed values. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0, 5]); + * + * console.log(buf.readInt16LE(0)); + * // Prints: 1280 + * console.log(buf.readInt16LE(1)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.5.5 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 2`. + */ + readInt16LE(offset?: number): number; + /** + * Reads a signed, big-endian 16-bit integer from `buf` at the specified `offset`. + * + * Integers read from a `Buffer` are interpreted as two's complement signed values. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0, 5]); + * + * console.log(buf.readInt16BE(0)); + * // Prints: 5 + * ``` + * @since v0.5.5 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 2`. + */ + readInt16BE(offset?: number): number; + /** + * Reads a signed, little-endian 32-bit integer from `buf` at the specified`offset`. + * + * Integers read from a `Buffer` are interpreted as two's complement signed values. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0, 0, 0, 5]); + * + * console.log(buf.readInt32LE(0)); + * // Prints: 83886080 + * console.log(buf.readInt32LE(1)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.5.5 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. + */ + readInt32LE(offset?: number): number; + /** + * Reads a signed, big-endian 32-bit integer from `buf` at the specified `offset`. + * + * Integers read from a `Buffer` are interpreted as two's complement signed values. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0, 0, 0, 5]); + * + * console.log(buf.readInt32BE(0)); + * // Prints: 5 + * ``` + * @since v0.5.5 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. + */ + readInt32BE(offset?: number): number; + /** + * Reads a 32-bit, little-endian float from `buf` at the specified `offset`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([1, 2, 3, 4]); + * + * console.log(buf.readFloatLE(0)); + * // Prints: 1.539989614439558e-36 + * console.log(buf.readFloatLE(1)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.11.15 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. + */ + readFloatLE(offset?: number): number; + /** + * Reads a 32-bit, big-endian float from `buf` at the specified `offset`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([1, 2, 3, 4]); + * + * console.log(buf.readFloatBE(0)); + * // Prints: 2.387939260590663e-38 + * ``` + * @since v0.11.15 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. + */ + readFloatBE(offset?: number): number; + /** + * Reads a 64-bit, little-endian double from `buf` at the specified `offset`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]); + * + * console.log(buf.readDoubleLE(0)); + * // Prints: 5.447603722011605e-270 + * console.log(buf.readDoubleLE(1)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.11.15 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 8`. + */ + readDoubleLE(offset?: number): number; + /** + * Reads a 64-bit, big-endian double from `buf` at the specified `offset`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]); + * + * console.log(buf.readDoubleBE(0)); + * // Prints: 8.20788039913184e-304 + * ``` + * @since v0.11.15 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 8`. + */ + readDoubleBE(offset?: number): number; + reverse(): this; + /** + * Interprets `buf` as an array of unsigned 16-bit integers and swaps the + * byte order _in-place_. Throws `ERR_INVALID_BUFFER_SIZE` if `buf.length` is not a multiple of 2. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); + * + * console.log(buf1); + * // Prints: + * + * buf1.swap16(); + * + * console.log(buf1); + * // Prints: + * + * const buf2 = Buffer.from([0x1, 0x2, 0x3]); + * + * buf2.swap16(); + * // Throws ERR_INVALID_BUFFER_SIZE. + * ``` + * + * One convenient use of `buf.swap16()` is to perform a fast in-place conversion + * between UTF-16 little-endian and UTF-16 big-endian: + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from('This is little-endian UTF-16', 'utf16le'); + * buf.swap16(); // Convert to big-endian UTF-16 text. + * ``` + * @since v5.10.0 + * @return A reference to `buf`. + */ + swap16(): Buffer; + /** + * Interprets `buf` as an array of unsigned 32-bit integers and swaps the + * byte order _in-place_. Throws `ERR_INVALID_BUFFER_SIZE` if `buf.length` is not a multiple of 4. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); + * + * console.log(buf1); + * // Prints: + * + * buf1.swap32(); + * + * console.log(buf1); + * // Prints: + * + * const buf2 = Buffer.from([0x1, 0x2, 0x3]); + * + * buf2.swap32(); + * // Throws ERR_INVALID_BUFFER_SIZE. + * ``` + * @since v5.10.0 + * @return A reference to `buf`. + */ + swap32(): Buffer; + /** + * Interprets `buf` as an array of 64-bit numbers and swaps byte order _in-place_. + * Throws `ERR_INVALID_BUFFER_SIZE` if `buf.length` is not a multiple of 8. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); + * + * console.log(buf1); + * // Prints: + * + * buf1.swap64(); + * + * console.log(buf1); + * // Prints: + * + * const buf2 = Buffer.from([0x1, 0x2, 0x3]); + * + * buf2.swap64(); + * // Throws ERR_INVALID_BUFFER_SIZE. + * ``` + * @since v6.3.0 + * @return A reference to `buf`. + */ + swap64(): Buffer; + /** + * Writes `value` to `buf` at the specified `offset`. `value` must be a + * valid unsigned 8-bit integer. Behavior is undefined when `value` is anything + * other than an unsigned 8-bit integer. + * + * This function is also available under the `writeUint8` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeUInt8(0x3, 0); + * buf.writeUInt8(0x4, 1); + * buf.writeUInt8(0x23, 2); + * buf.writeUInt8(0x42, 3); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.0 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 1`. + * @return `offset` plus the number of bytes written. + */ + writeUInt8(value: number, offset?: number): number; + /** + * @alias Buffer.writeUInt8 + * @since v14.9.0, v12.19.0 + */ + writeUint8(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as little-endian. The `value`must be a valid unsigned 16-bit integer. Behavior is undefined when `value` is + * anything other than an unsigned 16-bit integer. + * + * This function is also available under the `writeUint16LE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeUInt16LE(0xdead, 0); + * buf.writeUInt16LE(0xbeef, 2); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 2`. + * @return `offset` plus the number of bytes written. + */ + writeUInt16LE(value: number, offset?: number): number; + /** + * @alias Buffer.writeUInt16LE + * @since v14.9.0, v12.19.0 + */ + writeUint16LE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as big-endian. The `value`must be a valid unsigned 16-bit integer. Behavior is undefined when `value`is anything other than an + * unsigned 16-bit integer. + * + * This function is also available under the `writeUint16BE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeUInt16BE(0xdead, 0); + * buf.writeUInt16BE(0xbeef, 2); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 2`. + * @return `offset` plus the number of bytes written. + */ + writeUInt16BE(value: number, offset?: number): number; + /** + * @alias Buffer.writeUInt16BE + * @since v14.9.0, v12.19.0 + */ + writeUint16BE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as little-endian. The `value`must be a valid unsigned 32-bit integer. Behavior is undefined when `value` is + * anything other than an unsigned 32-bit integer. + * + * This function is also available under the `writeUint32LE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeUInt32LE(0xfeedface, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. + * @return `offset` plus the number of bytes written. + */ + writeUInt32LE(value: number, offset?: number): number; + /** + * @alias Buffer.writeUInt32LE + * @since v14.9.0, v12.19.0 + */ + writeUint32LE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as big-endian. The `value`must be a valid unsigned 32-bit integer. Behavior is undefined when `value`is anything other than an + * unsigned 32-bit integer. + * + * This function is also available under the `writeUint32BE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeUInt32BE(0xfeedface, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. + * @return `offset` plus the number of bytes written. + */ + writeUInt32BE(value: number, offset?: number): number; + /** + * @alias Buffer.writeUInt32BE + * @since v14.9.0, v12.19.0 + */ + writeUint32BE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset`. `value` must be a valid + * signed 8-bit integer. Behavior is undefined when `value` is anything other than + * a signed 8-bit integer. + * + * `value` is interpreted and written as a two's complement signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(2); + * + * buf.writeInt8(2, 0); + * buf.writeInt8(-2, 1); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.0 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 1`. + * @return `offset` plus the number of bytes written. + */ + writeInt8(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as little-endian. The `value`must be a valid signed 16-bit integer. Behavior is undefined when `value` is + * anything other than a signed 16-bit integer. + * + * The `value` is interpreted and written as a two's complement signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(2); + * + * buf.writeInt16LE(0x0304, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 2`. + * @return `offset` plus the number of bytes written. + */ + writeInt16LE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as big-endian. The `value`must be a valid signed 16-bit integer. Behavior is undefined when `value` is + * anything other than a signed 16-bit integer. + * + * The `value` is interpreted and written as a two's complement signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(2); + * + * buf.writeInt16BE(0x0102, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 2`. + * @return `offset` plus the number of bytes written. + */ + writeInt16BE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as little-endian. The `value`must be a valid signed 32-bit integer. Behavior is undefined when `value` is + * anything other than a signed 32-bit integer. + * + * The `value` is interpreted and written as a two's complement signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeInt32LE(0x05060708, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. + * @return `offset` plus the number of bytes written. + */ + writeInt32LE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as big-endian. The `value`must be a valid signed 32-bit integer. Behavior is undefined when `value` is + * anything other than a signed 32-bit integer. + * + * The `value` is interpreted and written as a two's complement signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeInt32BE(0x01020304, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. + * @return `offset` plus the number of bytes written. + */ + writeInt32BE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as little-endian. Behavior is + * undefined when `value` is anything other than a JavaScript number. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeFloatLE(0xcafebabe, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.11.15 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. + * @return `offset` plus the number of bytes written. + */ + writeFloatLE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as big-endian. Behavior is + * undefined when `value` is anything other than a JavaScript number. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeFloatBE(0xcafebabe, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.11.15 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. + * @return `offset` plus the number of bytes written. + */ + writeFloatBE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as little-endian. The `value`must be a JavaScript number. Behavior is undefined when `value` is anything + * other than a JavaScript number. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(8); + * + * buf.writeDoubleLE(123.456, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.11.15 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 8`. + * @return `offset` plus the number of bytes written. + */ + writeDoubleLE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as big-endian. The `value`must be a JavaScript number. Behavior is undefined when `value` is anything + * other than a JavaScript number. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(8); + * + * buf.writeDoubleBE(123.456, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.11.15 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 8`. + * @return `offset` plus the number of bytes written. + */ + writeDoubleBE(value: number, offset?: number): number; + /** + * Fills `buf` with the specified `value`. If the `offset` and `end` are not given, + * the entire `buf` will be filled: + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Fill a `Buffer` with the ASCII character 'h'. + * + * const b = Buffer.allocUnsafe(50).fill('h'); + * + * console.log(b.toString()); + * // Prints: hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh + * + * // Fill a buffer with empty string + * const c = Buffer.allocUnsafe(5).fill(''); + * + * console.log(c.fill('')); + * // Prints: + * ``` + * + * `value` is coerced to a `uint32` value if it is not a string, `Buffer`, or + * integer. If the resulting integer is greater than `255` (decimal), `buf` will be + * filled with `value & 255`. + * + * If the final write of a `fill()` operation falls on a multi-byte character, + * then only the bytes of that character that fit into `buf` are written: + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Fill a `Buffer` with character that takes up two bytes in UTF-8. + * + * console.log(Buffer.allocUnsafe(5).fill('\u0222')); + * // Prints: + * ``` + * + * If `value` contains invalid characters, it is truncated; if no valid + * fill data remains, an exception is thrown: + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(5); + * + * console.log(buf.fill('a')); + * // Prints: + * console.log(buf.fill('aazz', 'hex')); + * // Prints: + * console.log(buf.fill('zz', 'hex')); + * // Throws an exception. + * ``` + * @since v0.5.0 + * @param value The value with which to fill `buf`. Empty value (string, Uint8Array, Buffer) is coerced to `0`. + * @param [offset=0] Number of bytes to skip before starting to fill `buf`. + * @param [end=buf.length] Where to stop filling `buf` (not inclusive). + * @param [encoding='utf8'] The encoding for `value` if `value` is a string. + * @return A reference to `buf`. + */ + fill(value: string | Uint8Array | number, offset?: number, end?: number, encoding?: BufferEncoding): this; + /** + * If `value` is: + * + * * a string, `value` is interpreted according to the character encoding in`encoding`. + * * a `Buffer` or [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array), `value` will be used in its entirety. + * To compare a partial `Buffer`, use `buf.subarray`. + * * a number, `value` will be interpreted as an unsigned 8-bit integer + * value between `0` and `255`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from('this is a buffer'); + * + * console.log(buf.indexOf('this')); + * // Prints: 0 + * console.log(buf.indexOf('is')); + * // Prints: 2 + * console.log(buf.indexOf(Buffer.from('a buffer'))); + * // Prints: 8 + * console.log(buf.indexOf(97)); + * // Prints: 8 (97 is the decimal ASCII value for 'a') + * console.log(buf.indexOf(Buffer.from('a buffer example'))); + * // Prints: -1 + * console.log(buf.indexOf(Buffer.from('a buffer example').slice(0, 8))); + * // Prints: 8 + * + * const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le'); + * + * console.log(utf16Buffer.indexOf('\u03a3', 0, 'utf16le')); + * // Prints: 4 + * console.log(utf16Buffer.indexOf('\u03a3', -4, 'utf16le')); + * // Prints: 6 + * ``` + * + * If `value` is not a string, number, or `Buffer`, this method will throw a`TypeError`. If `value` is a number, it will be coerced to a valid byte value, + * an integer between 0 and 255. + * + * If `byteOffset` is not a number, it will be coerced to a number. If the result + * of coercion is `NaN` or `0`, then the entire buffer will be searched. This + * behavior matches [`String.prototype.indexOf()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf). + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const b = Buffer.from('abcdef'); + * + * // Passing a value that's a number, but not a valid byte. + * // Prints: 2, equivalent to searching for 99 or 'c'. + * console.log(b.indexOf(99.9)); + * console.log(b.indexOf(256 + 99)); + * + * // Passing a byteOffset that coerces to NaN or 0. + * // Prints: 1, searching the whole buffer. + * console.log(b.indexOf('b', undefined)); + * console.log(b.indexOf('b', {})); + * console.log(b.indexOf('b', null)); + * console.log(b.indexOf('b', [])); + * ``` + * + * If `value` is an empty string or empty `Buffer` and `byteOffset` is less + * than `buf.length`, `byteOffset` will be returned. If `value` is empty and`byteOffset` is at least `buf.length`, `buf.length` will be returned. + * @since v1.5.0 + * @param value What to search for. + * @param [byteOffset=0] Where to begin searching in `buf`. If negative, then offset is calculated from the end of `buf`. + * @param [encoding='utf8'] If `value` is a string, this is the encoding used to determine the binary representation of the string that will be searched for in `buf`. + * @return The index of the first occurrence of `value` in `buf`, or `-1` if `buf` does not contain `value`. + */ + indexOf(value: string | number | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number; + /** + * Identical to `buf.indexOf()`, except the last occurrence of `value` is found + * rather than the first occurrence. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from('this buffer is a buffer'); + * + * console.log(buf.lastIndexOf('this')); + * // Prints: 0 + * console.log(buf.lastIndexOf('buffer')); + * // Prints: 17 + * console.log(buf.lastIndexOf(Buffer.from('buffer'))); + * // Prints: 17 + * console.log(buf.lastIndexOf(97)); + * // Prints: 15 (97 is the decimal ASCII value for 'a') + * console.log(buf.lastIndexOf(Buffer.from('yolo'))); + * // Prints: -1 + * console.log(buf.lastIndexOf('buffer', 5)); + * // Prints: 5 + * console.log(buf.lastIndexOf('buffer', 4)); + * // Prints: -1 + * + * const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le'); + * + * console.log(utf16Buffer.lastIndexOf('\u03a3', undefined, 'utf16le')); + * // Prints: 6 + * console.log(utf16Buffer.lastIndexOf('\u03a3', -5, 'utf16le')); + * // Prints: 4 + * ``` + * + * If `value` is not a string, number, or `Buffer`, this method will throw a`TypeError`. If `value` is a number, it will be coerced to a valid byte value, + * an integer between 0 and 255. + * + * If `byteOffset` is not a number, it will be coerced to a number. Any arguments + * that coerce to `NaN`, like `{}` or `undefined`, will search the whole buffer. + * This behavior matches [`String.prototype.lastIndexOf()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf). + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const b = Buffer.from('abcdef'); + * + * // Passing a value that's a number, but not a valid byte. + * // Prints: 2, equivalent to searching for 99 or 'c'. + * console.log(b.lastIndexOf(99.9)); + * console.log(b.lastIndexOf(256 + 99)); + * + * // Passing a byteOffset that coerces to NaN. + * // Prints: 1, searching the whole buffer. + * console.log(b.lastIndexOf('b', undefined)); + * console.log(b.lastIndexOf('b', {})); + * + * // Passing a byteOffset that coerces to 0. + * // Prints: -1, equivalent to passing 0. + * console.log(b.lastIndexOf('b', null)); + * console.log(b.lastIndexOf('b', [])); + * ``` + * + * If `value` is an empty string or empty `Buffer`, `byteOffset` will be returned. + * @since v6.0.0 + * @param value What to search for. + * @param [byteOffset=buf.length - 1] Where to begin searching in `buf`. If negative, then offset is calculated from the end of `buf`. + * @param [encoding='utf8'] If `value` is a string, this is the encoding used to determine the binary representation of the string that will be searched for in `buf`. + * @return The index of the last occurrence of `value` in `buf`, or `-1` if `buf` does not contain `value`. + */ + lastIndexOf(value: string | number | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number; + /** + * Creates and returns an [iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) of `[index, byte]` pairs from the contents + * of `buf`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Log the entire contents of a `Buffer`. + * + * const buf = Buffer.from('buffer'); + * + * for (const pair of buf.entries()) { + * console.log(pair); + * } + * // Prints: + * // [0, 98] + * // [1, 117] + * // [2, 102] + * // [3, 102] + * // [4, 101] + * // [5, 114] + * ``` + * @since v1.1.0 + */ + entries(): IterableIterator<[number, number]>; + /** + * Equivalent to `buf.indexOf() !== -1`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from('this is a buffer'); + * + * console.log(buf.includes('this')); + * // Prints: true + * console.log(buf.includes('is')); + * // Prints: true + * console.log(buf.includes(Buffer.from('a buffer'))); + * // Prints: true + * console.log(buf.includes(97)); + * // Prints: true (97 is the decimal ASCII value for 'a') + * console.log(buf.includes(Buffer.from('a buffer example'))); + * // Prints: false + * console.log(buf.includes(Buffer.from('a buffer example').slice(0, 8))); + * // Prints: true + * console.log(buf.includes('this', 4)); + * // Prints: false + * ``` + * @since v5.3.0 + * @param value What to search for. + * @param [byteOffset=0] Where to begin searching in `buf`. If negative, then offset is calculated from the end of `buf`. + * @param [encoding='utf8'] If `value` is a string, this is its encoding. + * @return `true` if `value` was found in `buf`, `false` otherwise. + */ + includes(value: string | number | Buffer, byteOffset?: number, encoding?: BufferEncoding): boolean; + /** + * Creates and returns an [iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) of `buf` keys (indices). + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from('buffer'); + * + * for (const key of buf.keys()) { + * console.log(key); + * } + * // Prints: + * // 0 + * // 1 + * // 2 + * // 3 + * // 4 + * // 5 + * ``` + * @since v1.1.0 + */ + keys(): IterableIterator; + /** + * Creates and returns an [iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) for `buf` values (bytes). This function is + * called automatically when a `Buffer` is used in a `for..of` statement. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from('buffer'); + * + * for (const value of buf.values()) { + * console.log(value); + * } + * // Prints: + * // 98 + * // 117 + * // 102 + * // 102 + * // 101 + * // 114 + * + * for (const value of buf) { + * console.log(value); + * } + * // Prints: + * // 98 + * // 117 + * // 102 + * // 102 + * // 101 + * // 114 + * ``` + * @since v1.1.0 + */ + values(): IterableIterator; + } + var Buffer: BufferConstructor; + /** + * Decodes a string of Base64-encoded data into bytes, and encodes those bytes + * into a string using Latin-1 (ISO-8859-1). + * + * The `data` may be any JavaScript-value that can be coerced into a string. + * + * **This function is only provided for compatibility with legacy web platform APIs** + * **and should never be used in new code, because they use strings to represent** + * **binary data and predate the introduction of typed arrays in JavaScript.** + * **For code running using Node.js APIs, converting between base64-encoded strings** + * **and binary data should be performed using `Buffer.from(str, 'base64')` and`buf.toString('base64')`.** + * @since v15.13.0, v14.17.0 + * @legacy Use `Buffer.from(data, 'base64')` instead. + * @param data The Base64-encoded input string. + */ + function atob(data: string): string; + /** + * Decodes a string into bytes using Latin-1 (ISO-8859), and encodes those bytes + * into a string using Base64. + * + * The `data` may be any JavaScript-value that can be coerced into a string. + * + * **This function is only provided for compatibility with legacy web platform APIs** + * **and should never be used in new code, because they use strings to represent** + * **binary data and predate the introduction of typed arrays in JavaScript.** + * **For code running using Node.js APIs, converting between base64-encoded strings** + * **and binary data should be performed using `Buffer.from(str, 'base64')` and`buf.toString('base64')`.** + * @since v15.13.0, v14.17.0 + * @legacy Use `buf.toString('base64')` instead. + * @param data An ASCII (Latin1) string. + */ + function btoa(data: string): string; + interface Blob extends __Blob {} + /** + * `Blob` class is a global reference for `require('node:buffer').Blob` + * https://nodejs.org/api/buffer.html#class-blob + * @since v18.0.0 + */ + var Blob: typeof globalThis extends { + onmessage: any; + Blob: infer T; + } ? T + : typeof NodeBlob; + } +} +declare module "node:buffer" { + export * from "buffer"; +} diff --git a/node_modules/@types/node/child_process.d.ts b/node_modules/@types/node/child_process.d.ts new file mode 100644 index 00000000..9f1a38a7 --- /dev/null +++ b/node_modules/@types/node/child_process.d.ts @@ -0,0 +1,1540 @@ +/** + * The `node:child_process` module provides the ability to spawn subprocesses in + * a manner that is similar, but not identical, to [`popen(3)`](http://man7.org/linux/man-pages/man3/popen.3.html). This capability + * is primarily provided by the {@link spawn} function: + * + * ```js + * const { spawn } = require('node:child_process'); + * const ls = spawn('ls', ['-lh', '/usr']); + * + * ls.stdout.on('data', (data) => { + * console.log(`stdout: ${data}`); + * }); + * + * ls.stderr.on('data', (data) => { + * console.error(`stderr: ${data}`); + * }); + * + * ls.on('close', (code) => { + * console.log(`child process exited with code ${code}`); + * }); + * ``` + * + * By default, pipes for `stdin`, `stdout`, and `stderr` are established between + * the parent Node.js process and the spawned subprocess. These pipes have + * limited (and platform-specific) capacity. If the subprocess writes to + * stdout in excess of that limit without the output being captured, the + * subprocess blocks waiting for the pipe buffer to accept more data. This is + * identical to the behavior of pipes in the shell. Use the `{ stdio: 'ignore' }`option if the output will not be consumed. + * + * The command lookup is performed using the `options.env.PATH` environment + * variable if `env` is in the `options` object. Otherwise, `process.env.PATH` is + * used. If `options.env` is set without `PATH`, lookup on Unix is performed + * on a default search path search of `/usr/bin:/bin` (see your operating system's + * manual for execvpe/execvp), on Windows the current processes environment + * variable `PATH` is used. + * + * On Windows, environment variables are case-insensitive. Node.js + * lexicographically sorts the `env` keys and uses the first one that + * case-insensitively matches. Only first (in lexicographic order) entry will be + * passed to the subprocess. This might lead to issues on Windows when passing + * objects to the `env` option that have multiple variants of the same key, such as`PATH` and `Path`. + * + * The {@link spawn} method spawns the child process asynchronously, + * without blocking the Node.js event loop. The {@link spawnSync} function provides equivalent functionality in a synchronous manner that blocks + * the event loop until the spawned process either exits or is terminated. + * + * For convenience, the `node:child_process` module provides a handful of + * synchronous and asynchronous alternatives to {@link spawn} and {@link spawnSync}. Each of these alternatives are implemented on + * top of {@link spawn} or {@link spawnSync}. + * + * * {@link exec}: spawns a shell and runs a command within that + * shell, passing the `stdout` and `stderr` to a callback function when + * complete. + * * {@link execFile}: similar to {@link exec} except + * that it spawns the command directly without first spawning a shell by + * default. + * * {@link fork}: spawns a new Node.js process and invokes a + * specified module with an IPC communication channel established that allows + * sending messages between parent and child. + * * {@link execSync}: a synchronous version of {@link exec} that will block the Node.js event loop. + * * {@link execFileSync}: a synchronous version of {@link execFile} that will block the Node.js event loop. + * + * For certain use cases, such as automating shell scripts, the `synchronous counterparts` may be more convenient. In many cases, however, + * the synchronous methods can have significant impact on performance due to + * stalling the event loop while spawned processes complete. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/child_process.js) + */ +declare module "child_process" { + import { ObjectEncodingOptions } from "node:fs"; + import { Abortable, EventEmitter } from "node:events"; + import * as net from "node:net"; + import { Pipe, Readable, Stream, Writable } from "node:stream"; + import { URL } from "node:url"; + type Serializable = string | object | number | boolean | bigint; + type SendHandle = net.Socket | net.Server; + /** + * Instances of the `ChildProcess` represent spawned child processes. + * + * Instances of `ChildProcess` are not intended to be created directly. Rather, + * use the {@link spawn}, {@link exec},{@link execFile}, or {@link fork} methods to create + * instances of `ChildProcess`. + * @since v2.2.0 + */ + class ChildProcess extends EventEmitter { + /** + * A `Writable Stream` that represents the child process's `stdin`. + * + * If a child process waits to read all of its input, the child will not continue + * until this stream has been closed via `end()`. + * + * If the child was spawned with `stdio[0]` set to anything other than `'pipe'`, + * then this will be `null`. + * + * `subprocess.stdin` is an alias for `subprocess.stdio[0]`. Both properties will + * refer to the same value. + * + * The `subprocess.stdin` property can be `null` or `undefined`if the child process could not be successfully spawned. + * @since v0.1.90 + */ + stdin: Writable | null; + /** + * A `Readable Stream` that represents the child process's `stdout`. + * + * If the child was spawned with `stdio[1]` set to anything other than `'pipe'`, + * then this will be `null`. + * + * `subprocess.stdout` is an alias for `subprocess.stdio[1]`. Both properties will + * refer to the same value. + * + * ```js + * const { spawn } = require('node:child_process'); + * + * const subprocess = spawn('ls'); + * + * subprocess.stdout.on('data', (data) => { + * console.log(`Received chunk ${data}`); + * }); + * ``` + * + * The `subprocess.stdout` property can be `null` or `undefined`if the child process could not be successfully spawned. + * @since v0.1.90 + */ + stdout: Readable | null; + /** + * A `Readable Stream` that represents the child process's `stderr`. + * + * If the child was spawned with `stdio[2]` set to anything other than `'pipe'`, + * then this will be `null`. + * + * `subprocess.stderr` is an alias for `subprocess.stdio[2]`. Both properties will + * refer to the same value. + * + * The `subprocess.stderr` property can be `null` or `undefined`if the child process could not be successfully spawned. + * @since v0.1.90 + */ + stderr: Readable | null; + /** + * The `subprocess.channel` property is a reference to the child's IPC channel. If + * no IPC channel exists, this property is `undefined`. + * @since v7.1.0 + */ + readonly channel?: Pipe | null | undefined; + /** + * A sparse array of pipes to the child process, corresponding with positions in + * the `stdio` option passed to {@link spawn} that have been set + * to the value `'pipe'`. `subprocess.stdio[0]`, `subprocess.stdio[1]`, and`subprocess.stdio[2]` are also available as `subprocess.stdin`,`subprocess.stdout`, and `subprocess.stderr`, + * respectively. + * + * In the following example, only the child's fd `1` (stdout) is configured as a + * pipe, so only the parent's `subprocess.stdio[1]` is a stream, all other values + * in the array are `null`. + * + * ```js + * const assert = require('node:assert'); + * const fs = require('node:fs'); + * const child_process = require('node:child_process'); + * + * const subprocess = child_process.spawn('ls', { + * stdio: [ + * 0, // Use parent's stdin for child. + * 'pipe', // Pipe child's stdout to parent. + * fs.openSync('err.out', 'w'), // Direct child's stderr to a file. + * ], + * }); + * + * assert.strictEqual(subprocess.stdio[0], null); + * assert.strictEqual(subprocess.stdio[0], subprocess.stdin); + * + * assert(subprocess.stdout); + * assert.strictEqual(subprocess.stdio[1], subprocess.stdout); + * + * assert.strictEqual(subprocess.stdio[2], null); + * assert.strictEqual(subprocess.stdio[2], subprocess.stderr); + * ``` + * + * The `subprocess.stdio` property can be `undefined` if the child process could + * not be successfully spawned. + * @since v0.7.10 + */ + readonly stdio: [ + Writable | null, + // stdin + Readable | null, + // stdout + Readable | null, + // stderr + Readable | Writable | null | undefined, + // extra + Readable | Writable | null | undefined, // extra + ]; + /** + * The `subprocess.killed` property indicates whether the child process + * successfully received a signal from `subprocess.kill()`. The `killed` property + * does not indicate that the child process has been terminated. + * @since v0.5.10 + */ + readonly killed: boolean; + /** + * Returns the process identifier (PID) of the child process. If the child process + * fails to spawn due to errors, then the value is `undefined` and `error` is + * emitted. + * + * ```js + * const { spawn } = require('node:child_process'); + * const grep = spawn('grep', ['ssh']); + * + * console.log(`Spawned child pid: ${grep.pid}`); + * grep.stdin.end(); + * ``` + * @since v0.1.90 + */ + readonly pid?: number | undefined; + /** + * The `subprocess.connected` property indicates whether it is still possible to + * send and receive messages from a child process. When `subprocess.connected` is`false`, it is no longer possible to send or receive messages. + * @since v0.7.2 + */ + readonly connected: boolean; + /** + * The `subprocess.exitCode` property indicates the exit code of the child process. + * If the child process is still running, the field will be `null`. + */ + readonly exitCode: number | null; + /** + * The `subprocess.signalCode` property indicates the signal received by + * the child process if any, else `null`. + */ + readonly signalCode: NodeJS.Signals | null; + /** + * The `subprocess.spawnargs` property represents the full list of command-line + * arguments the child process was launched with. + */ + readonly spawnargs: string[]; + /** + * The `subprocess.spawnfile` property indicates the executable file name of + * the child process that is launched. + * + * For {@link fork}, its value will be equal to `process.execPath`. + * For {@link spawn}, its value will be the name of + * the executable file. + * For {@link exec}, its value will be the name of the shell + * in which the child process is launched. + */ + readonly spawnfile: string; + /** + * The `subprocess.kill()` method sends a signal to the child process. If no + * argument is given, the process will be sent the `'SIGTERM'` signal. See [`signal(7)`](http://man7.org/linux/man-pages/man7/signal.7.html) for a list of available signals. This function + * returns `true` if [`kill(2)`](http://man7.org/linux/man-pages/man2/kill.2.html) succeeds, and `false` otherwise. + * + * ```js + * const { spawn } = require('node:child_process'); + * const grep = spawn('grep', ['ssh']); + * + * grep.on('close', (code, signal) => { + * console.log( + * `child process terminated due to receipt of signal ${signal}`); + * }); + * + * // Send SIGHUP to process. + * grep.kill('SIGHUP'); + * ``` + * + * The `ChildProcess` object may emit an `'error'` event if the signal + * cannot be delivered. Sending a signal to a child process that has already exited + * is not an error but may have unforeseen consequences. Specifically, if the + * process identifier (PID) has been reassigned to another process, the signal will + * be delivered to that process instead which can have unexpected results. + * + * While the function is called `kill`, the signal delivered to the child process + * may not actually terminate the process. + * + * See [`kill(2)`](http://man7.org/linux/man-pages/man2/kill.2.html) for reference. + * + * On Windows, where POSIX signals do not exist, the `signal` argument will be + * ignored, and the process will be killed forcefully and abruptly (similar to`'SIGKILL'`). + * See `Signal Events` for more details. + * + * On Linux, child processes of child processes will not be terminated + * when attempting to kill their parent. This is likely to happen when running a + * new process in a shell or with the use of the `shell` option of `ChildProcess`: + * + * ```js + * 'use strict'; + * const { spawn } = require('node:child_process'); + * + * const subprocess = spawn( + * 'sh', + * [ + * '-c', + * `node -e "setInterval(() => { + * console.log(process.pid, 'is alive') + * }, 500);"`, + * ], { + * stdio: ['inherit', 'inherit', 'inherit'], + * }, + * ); + * + * setTimeout(() => { + * subprocess.kill(); // Does not terminate the Node.js process in the shell. + * }, 2000); + * ``` + * @since v0.1.90 + */ + kill(signal?: NodeJS.Signals | number): boolean; + /** + * Calls {@link ChildProcess.kill} with `'SIGTERM'`. + * @since v20.5.0 + */ + [Symbol.dispose](): void; + /** + * When an IPC channel has been established between the parent and child ( + * i.e. when using {@link fork}), the `subprocess.send()` method can + * be used to send messages to the child process. When the child process is a + * Node.js instance, these messages can be received via the `'message'` event. + * + * The message goes through serialization and parsing. The resulting + * message might not be the same as what is originally sent. + * + * For example, in the parent script: + * + * ```js + * const cp = require('node:child_process'); + * const n = cp.fork(`${__dirname}/sub.js`); + * + * n.on('message', (m) => { + * console.log('PARENT got message:', m); + * }); + * + * // Causes the child to print: CHILD got message: { hello: 'world' } + * n.send({ hello: 'world' }); + * ``` + * + * And then the child script, `'sub.js'` might look like this: + * + * ```js + * process.on('message', (m) => { + * console.log('CHILD got message:', m); + * }); + * + * // Causes the parent to print: PARENT got message: { foo: 'bar', baz: null } + * process.send({ foo: 'bar', baz: NaN }); + * ``` + * + * Child Node.js processes will have a `process.send()` method of their own + * that allows the child to send messages back to the parent. + * + * There is a special case when sending a `{cmd: 'NODE_foo'}` message. Messages + * containing a `NODE_` prefix in the `cmd` property are reserved for use within + * Node.js core and will not be emitted in the child's `'message'` event. Rather, such messages are emitted using the`'internalMessage'` event and are consumed internally by Node.js. + * Applications should avoid using such messages or listening for`'internalMessage'` events as it is subject to change without notice. + * + * The optional `sendHandle` argument that may be passed to `subprocess.send()` is + * for passing a TCP server or socket object to the child process. The child will + * receive the object as the second argument passed to the callback function + * registered on the `'message'` event. Any data that is received + * and buffered in the socket will not be sent to the child. + * + * The optional `callback` is a function that is invoked after the message is + * sent but before the child may have received it. The function is called with a + * single argument: `null` on success, or an `Error` object on failure. + * + * If no `callback` function is provided and the message cannot be sent, an`'error'` event will be emitted by the `ChildProcess` object. This can + * happen, for instance, when the child process has already exited. + * + * `subprocess.send()` will return `false` if the channel has closed or when the + * backlog of unsent messages exceeds a threshold that makes it unwise to send + * more. Otherwise, the method returns `true`. The `callback` function can be + * used to implement flow control. + * + * #### Example: sending a server object + * + * The `sendHandle` argument can be used, for instance, to pass the handle of + * a TCP server object to the child process as illustrated in the example below: + * + * ```js + * const subprocess = require('node:child_process').fork('subprocess.js'); + * + * // Open up the server object and send the handle. + * const server = require('node:net').createServer(); + * server.on('connection', (socket) => { + * socket.end('handled by parent'); + * }); + * server.listen(1337, () => { + * subprocess.send('server', server); + * }); + * ``` + * + * The child would then receive the server object as: + * + * ```js + * process.on('message', (m, server) => { + * if (m === 'server') { + * server.on('connection', (socket) => { + * socket.end('handled by child'); + * }); + * } + * }); + * ``` + * + * Once the server is now shared between the parent and child, some connections + * can be handled by the parent and some by the child. + * + * While the example above uses a server created using the `node:net` module,`node:dgram` module servers use exactly the same workflow with the exceptions of + * listening on a `'message'` event instead of `'connection'` and using`server.bind()` instead of `server.listen()`. This is, however, only + * supported on Unix platforms. + * + * #### Example: sending a socket object + * + * Similarly, the `sendHandler` argument can be used to pass the handle of a + * socket to the child process. The example below spawns two children that each + * handle connections with "normal" or "special" priority: + * + * ```js + * const { fork } = require('node:child_process'); + * const normal = fork('subprocess.js', ['normal']); + * const special = fork('subprocess.js', ['special']); + * + * // Open up the server and send sockets to child. Use pauseOnConnect to prevent + * // the sockets from being read before they are sent to the child process. + * const server = require('node:net').createServer({ pauseOnConnect: true }); + * server.on('connection', (socket) => { + * + * // If this is special priority... + * if (socket.remoteAddress === '74.125.127.100') { + * special.send('socket', socket); + * return; + * } + * // This is normal priority. + * normal.send('socket', socket); + * }); + * server.listen(1337); + * ``` + * + * The `subprocess.js` would receive the socket handle as the second argument + * passed to the event callback function: + * + * ```js + * process.on('message', (m, socket) => { + * if (m === 'socket') { + * if (socket) { + * // Check that the client socket exists. + * // It is possible for the socket to be closed between the time it is + * // sent and the time it is received in the child process. + * socket.end(`Request handled with ${process.argv[2]} priority`); + * } + * } + * }); + * ``` + * + * Do not use `.maxConnections` on a socket that has been passed to a subprocess. + * The parent cannot track when the socket is destroyed. + * + * Any `'message'` handlers in the subprocess should verify that `socket` exists, + * as the connection may have been closed during the time it takes to send the + * connection to the child. + * @since v0.5.9 + * @param options The `options` argument, if present, is an object used to parameterize the sending of certain types of handles. `options` supports the following properties: + */ + send(message: Serializable, callback?: (error: Error | null) => void): boolean; + send(message: Serializable, sendHandle?: SendHandle, callback?: (error: Error | null) => void): boolean; + send( + message: Serializable, + sendHandle?: SendHandle, + options?: MessageOptions, + callback?: (error: Error | null) => void, + ): boolean; + /** + * Closes the IPC channel between parent and child, allowing the child to exit + * gracefully once there are no other connections keeping it alive. After calling + * this method the `subprocess.connected` and `process.connected` properties in + * both the parent and child (respectively) will be set to `false`, and it will be + * no longer possible to pass messages between the processes. + * + * The `'disconnect'` event will be emitted when there are no messages in the + * process of being received. This will most often be triggered immediately after + * calling `subprocess.disconnect()`. + * + * When the child process is a Node.js instance (e.g. spawned using {@link fork}), the `process.disconnect()` method can be invoked + * within the child process to close the IPC channel as well. + * @since v0.7.2 + */ + disconnect(): void; + /** + * By default, the parent will wait for the detached child to exit. To prevent the + * parent from waiting for a given `subprocess` to exit, use the`subprocess.unref()` method. Doing so will cause the parent's event loop to not + * include the child in its reference count, allowing the parent to exit + * independently of the child, unless there is an established IPC channel between + * the child and the parent. + * + * ```js + * const { spawn } = require('node:child_process'); + * + * const subprocess = spawn(process.argv[0], ['child_program.js'], { + * detached: true, + * stdio: 'ignore', + * }); + * + * subprocess.unref(); + * ``` + * @since v0.7.10 + */ + unref(): void; + /** + * Calling `subprocess.ref()` after making a call to `subprocess.unref()` will + * restore the removed reference count for the child process, forcing the parent + * to wait for the child to exit before exiting itself. + * + * ```js + * const { spawn } = require('node:child_process'); + * + * const subprocess = spawn(process.argv[0], ['child_program.js'], { + * detached: true, + * stdio: 'ignore', + * }); + * + * subprocess.unref(); + * subprocess.ref(); + * ``` + * @since v0.7.10 + */ + ref(): void; + /** + * events.EventEmitter + * 1. close + * 2. disconnect + * 3. error + * 4. exit + * 5. message + * 6. spawn + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; + addListener(event: "disconnect", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; + addListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; + addListener(event: "spawn", listener: () => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close", code: number | null, signal: NodeJS.Signals | null): boolean; + emit(event: "disconnect"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "exit", code: number | null, signal: NodeJS.Signals | null): boolean; + emit(event: "message", message: Serializable, sendHandle: SendHandle): boolean; + emit(event: "spawn", listener: () => void): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; + on(event: "disconnect", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; + on(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; + on(event: "spawn", listener: () => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; + once(event: "disconnect", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; + once(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; + once(event: "spawn", listener: () => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; + prependListener(event: "disconnect", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; + prependListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; + prependListener(event: "spawn", listener: () => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener( + event: "close", + listener: (code: number | null, signal: NodeJS.Signals | null) => void, + ): this; + prependOnceListener(event: "disconnect", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener( + event: "exit", + listener: (code: number | null, signal: NodeJS.Signals | null) => void, + ): this; + prependOnceListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; + prependOnceListener(event: "spawn", listener: () => void): this; + } + // return this object when stdio option is undefined or not specified + interface ChildProcessWithoutNullStreams extends ChildProcess { + stdin: Writable; + stdout: Readable; + stderr: Readable; + readonly stdio: [ + Writable, + Readable, + Readable, + // stderr + Readable | Writable | null | undefined, + // extra, no modification + Readable | Writable | null | undefined, // extra, no modification + ]; + } + // return this object when stdio option is a tuple of 3 + interface ChildProcessByStdio + extends ChildProcess + { + stdin: I; + stdout: O; + stderr: E; + readonly stdio: [ + I, + O, + E, + Readable | Writable | null | undefined, + // extra, no modification + Readable | Writable | null | undefined, // extra, no modification + ]; + } + interface MessageOptions { + keepOpen?: boolean | undefined; + } + type IOType = "overlapped" | "pipe" | "ignore" | "inherit"; + type StdioOptions = IOType | Array; + type SerializationType = "json" | "advanced"; + interface MessagingOptions extends Abortable { + /** + * Specify the kind of serialization used for sending messages between processes. + * @default 'json' + */ + serialization?: SerializationType | undefined; + /** + * The signal value to be used when the spawned process will be killed by the abort signal. + * @default 'SIGTERM' + */ + killSignal?: NodeJS.Signals | number | undefined; + /** + * In milliseconds the maximum amount of time the process is allowed to run. + */ + timeout?: number | undefined; + } + interface ProcessEnvOptions { + uid?: number | undefined; + gid?: number | undefined; + cwd?: string | URL | undefined; + env?: NodeJS.ProcessEnv | undefined; + } + interface CommonOptions extends ProcessEnvOptions { + /** + * @default false + */ + windowsHide?: boolean | undefined; + /** + * @default 0 + */ + timeout?: number | undefined; + } + interface CommonSpawnOptions extends CommonOptions, MessagingOptions, Abortable { + argv0?: string | undefined; + /** + * Can be set to 'pipe', 'inherit', 'overlapped', or 'ignore', or an array of these strings. + * If passed as an array, the first element is used for `stdin`, the second for + * `stdout`, and the third for `stderr`. A fourth element can be used to + * specify the `stdio` behavior beyond the standard streams. See + * {@link ChildProcess.stdio} for more information. + * + * @default 'pipe' + */ + stdio?: StdioOptions | undefined; + shell?: boolean | string | undefined; + windowsVerbatimArguments?: boolean | undefined; + } + interface SpawnOptions extends CommonSpawnOptions { + detached?: boolean | undefined; + } + interface SpawnOptionsWithoutStdio extends SpawnOptions { + stdio?: StdioPipeNamed | StdioPipe[] | undefined; + } + type StdioNull = "inherit" | "ignore" | Stream; + type StdioPipeNamed = "pipe" | "overlapped"; + type StdioPipe = undefined | null | StdioPipeNamed; + interface SpawnOptionsWithStdioTuple< + Stdin extends StdioNull | StdioPipe, + Stdout extends StdioNull | StdioPipe, + Stderr extends StdioNull | StdioPipe, + > extends SpawnOptions { + stdio: [Stdin, Stdout, Stderr]; + } + /** + * The `child_process.spawn()` method spawns a new process using the given`command`, with command-line arguments in `args`. If omitted, `args` defaults + * to an empty array. + * + * **If the `shell` option is enabled, do not pass unsanitized user input to this** + * **function. Any input containing shell metacharacters may be used to trigger** + * **arbitrary command execution.** + * + * A third argument may be used to specify additional options, with these defaults: + * + * ```js + * const defaults = { + * cwd: undefined, + * env: process.env, + * }; + * ``` + * + * Use `cwd` to specify the working directory from which the process is spawned. + * If not given, the default is to inherit the current working directory. If given, + * but the path does not exist, the child process emits an `ENOENT` error + * and exits immediately. `ENOENT` is also emitted when the command + * does not exist. + * + * Use `env` to specify environment variables that will be visible to the new + * process, the default is `process.env`. + * + * `undefined` values in `env` will be ignored. + * + * Example of running `ls -lh /usr`, capturing `stdout`, `stderr`, and the + * exit code: + * + * ```js + * const { spawn } = require('node:child_process'); + * const ls = spawn('ls', ['-lh', '/usr']); + * + * ls.stdout.on('data', (data) => { + * console.log(`stdout: ${data}`); + * }); + * + * ls.stderr.on('data', (data) => { + * console.error(`stderr: ${data}`); + * }); + * + * ls.on('close', (code) => { + * console.log(`child process exited with code ${code}`); + * }); + * ``` + * + * Example: A very elaborate way to run `ps ax | grep ssh` + * + * ```js + * const { spawn } = require('node:child_process'); + * const ps = spawn('ps', ['ax']); + * const grep = spawn('grep', ['ssh']); + * + * ps.stdout.on('data', (data) => { + * grep.stdin.write(data); + * }); + * + * ps.stderr.on('data', (data) => { + * console.error(`ps stderr: ${data}`); + * }); + * + * ps.on('close', (code) => { + * if (code !== 0) { + * console.log(`ps process exited with code ${code}`); + * } + * grep.stdin.end(); + * }); + * + * grep.stdout.on('data', (data) => { + * console.log(data.toString()); + * }); + * + * grep.stderr.on('data', (data) => { + * console.error(`grep stderr: ${data}`); + * }); + * + * grep.on('close', (code) => { + * if (code !== 0) { + * console.log(`grep process exited with code ${code}`); + * } + * }); + * ``` + * + * Example of checking for failed `spawn`: + * + * ```js + * const { spawn } = require('node:child_process'); + * const subprocess = spawn('bad_command'); + * + * subprocess.on('error', (err) => { + * console.error('Failed to start subprocess.'); + * }); + * ``` + * + * Certain platforms (macOS, Linux) will use the value of `argv[0]` for the process + * title while others (Windows, SunOS) will use `command`. + * + * Node.js overwrites `argv[0]` with `process.execPath` on startup, so`process.argv[0]` in a Node.js child process will not match the `argv0`parameter passed to `spawn` from the parent. Retrieve + * it with the`process.argv0` property instead. + * + * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except + * the error passed to the callback will be an `AbortError`: + * + * ```js + * const { spawn } = require('node:child_process'); + * const controller = new AbortController(); + * const { signal } = controller; + * const grep = spawn('grep', ['ssh'], { signal }); + * grep.on('error', (err) => { + * // This will be called with err being an AbortError if the controller aborts + * }); + * controller.abort(); // Stops the child process + * ``` + * @since v0.1.90 + * @param command The command to run. + * @param args List of string arguments. + */ + function spawn(command: string, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams; + function spawn( + command: string, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn(command: string, options: SpawnOptions): ChildProcess; + // overloads of spawn with 'args' + function spawn( + command: string, + args?: ReadonlyArray, + options?: SpawnOptionsWithoutStdio, + ): ChildProcessWithoutNullStreams; + function spawn( + command: string, + args: ReadonlyArray, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + args: ReadonlyArray, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + args: ReadonlyArray, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + args: ReadonlyArray, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + args: ReadonlyArray, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + args: ReadonlyArray, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + args: ReadonlyArray, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + args: ReadonlyArray, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn(command: string, args: ReadonlyArray, options: SpawnOptions): ChildProcess; + interface ExecOptions extends CommonOptions { + shell?: string | undefined; + signal?: AbortSignal | undefined; + maxBuffer?: number | undefined; + killSignal?: NodeJS.Signals | number | undefined; + } + interface ExecOptionsWithStringEncoding extends ExecOptions { + encoding: BufferEncoding; + } + interface ExecOptionsWithBufferEncoding extends ExecOptions { + encoding: BufferEncoding | null; // specify `null`. + } + interface ExecException extends Error { + cmd?: string | undefined; + killed?: boolean | undefined; + code?: number | undefined; + signal?: NodeJS.Signals | undefined; + } + /** + * Spawns a shell then executes the `command` within that shell, buffering any + * generated output. The `command` string passed to the exec function is processed + * directly by the shell and special characters (vary based on [shell](https://en.wikipedia.org/wiki/List_of_command-line_interpreters)) + * need to be dealt with accordingly: + * + * ```js + * const { exec } = require('node:child_process'); + * + * exec('"/path/to/test file/test.sh" arg1 arg2'); + * // Double quotes are used so that the space in the path is not interpreted as + * // a delimiter of multiple arguments. + * + * exec('echo "The \\$HOME variable is $HOME"'); + * // The $HOME variable is escaped in the first instance, but not in the second. + * ``` + * + * **Never pass unsanitized user input to this function. Any input containing shell** + * **metacharacters may be used to trigger arbitrary command execution.** + * + * If a `callback` function is provided, it is called with the arguments`(error, stdout, stderr)`. On success, `error` will be `null`. On error,`error` will be an instance of `Error`. The + * `error.code` property will be + * the exit code of the process. By convention, any exit code other than `0`indicates an error. `error.signal` will be the signal that terminated the + * process. + * + * The `stdout` and `stderr` arguments passed to the callback will contain the + * stdout and stderr output of the child process. By default, Node.js will decode + * the output as UTF-8 and pass strings to the callback. The `encoding` option + * can be used to specify the character encoding used to decode the stdout and + * stderr output. If `encoding` is `'buffer'`, or an unrecognized character + * encoding, `Buffer` objects will be passed to the callback instead. + * + * ```js + * const { exec } = require('node:child_process'); + * exec('cat *.js missing_file | wc -l', (error, stdout, stderr) => { + * if (error) { + * console.error(`exec error: ${error}`); + * return; + * } + * console.log(`stdout: ${stdout}`); + * console.error(`stderr: ${stderr}`); + * }); + * ``` + * + * If `timeout` is greater than `0`, the parent will send the signal + * identified by the `killSignal` property (the default is `'SIGTERM'`) if the + * child runs longer than `timeout` milliseconds. + * + * Unlike the [`exec(3)`](http://man7.org/linux/man-pages/man3/exec.3.html) POSIX system call, `child_process.exec()` does not replace + * the existing process and uses a shell to execute the command. + * + * If this method is invoked as its `util.promisify()` ed version, it returns + * a `Promise` for an `Object` with `stdout` and `stderr` properties. The returned`ChildProcess` instance is attached to the `Promise` as a `child` property. In + * case of an error (including any error resulting in an exit code other than 0), a + * rejected promise is returned, with the same `error` object given in the + * callback, but with two additional properties `stdout` and `stderr`. + * + * ```js + * const util = require('node:util'); + * const exec = util.promisify(require('node:child_process').exec); + * + * async function lsExample() { + * const { stdout, stderr } = await exec('ls'); + * console.log('stdout:', stdout); + * console.error('stderr:', stderr); + * } + * lsExample(); + * ``` + * + * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except + * the error passed to the callback will be an `AbortError`: + * + * ```js + * const { exec } = require('node:child_process'); + * const controller = new AbortController(); + * const { signal } = controller; + * const child = exec('grep ssh', { signal }, (error) => { + * console.error(error); // an AbortError + * }); + * controller.abort(); + * ``` + * @since v0.1.90 + * @param command The command to run, with space-separated arguments. + * @param callback called with the output when process terminates. + */ + function exec( + command: string, + callback?: (error: ExecException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`. + function exec( + command: string, + options: { + encoding: "buffer" | null; + } & ExecOptions, + callback?: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void, + ): ChildProcess; + // `options` with well known `encoding` means stdout/stderr are definitely `string`. + function exec( + command: string, + options: { + encoding: BufferEncoding; + } & ExecOptions, + callback?: (error: ExecException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`. + // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`. + function exec( + command: string, + options: { + encoding: BufferEncoding; + } & ExecOptions, + callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void, + ): ChildProcess; + // `options` without an `encoding` means stdout/stderr are definitely `string`. + function exec( + command: string, + options: ExecOptions, + callback?: (error: ExecException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + // fallback if nothing else matches. Worst case is always `string | Buffer`. + function exec( + command: string, + options: (ObjectEncodingOptions & ExecOptions) | undefined | null, + callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void, + ): ChildProcess; + interface PromiseWithChild extends Promise { + child: ChildProcess; + } + namespace exec { + function __promisify__(command: string): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + command: string, + options: { + encoding: "buffer" | null; + } & ExecOptions, + ): PromiseWithChild<{ + stdout: Buffer; + stderr: Buffer; + }>; + function __promisify__( + command: string, + options: { + encoding: BufferEncoding; + } & ExecOptions, + ): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + command: string, + options: ExecOptions, + ): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + command: string, + options?: (ObjectEncodingOptions & ExecOptions) | null, + ): PromiseWithChild<{ + stdout: string | Buffer; + stderr: string | Buffer; + }>; + } + interface ExecFileOptions extends CommonOptions, Abortable { + maxBuffer?: number | undefined; + killSignal?: NodeJS.Signals | number | undefined; + windowsVerbatimArguments?: boolean | undefined; + shell?: boolean | string | undefined; + signal?: AbortSignal | undefined; + } + interface ExecFileOptionsWithStringEncoding extends ExecFileOptions { + encoding: BufferEncoding; + } + interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions { + encoding: "buffer" | null; + } + interface ExecFileOptionsWithOtherEncoding extends ExecFileOptions { + encoding: BufferEncoding; + } + type ExecFileException = + & Omit + & Omit + & { code?: string | number | undefined | null }; + /** + * The `child_process.execFile()` function is similar to {@link exec} except that it does not spawn a shell by default. Rather, the specified + * executable `file` is spawned directly as a new process making it slightly more + * efficient than {@link exec}. + * + * The same options as {@link exec} are supported. Since a shell is + * not spawned, behaviors such as I/O redirection and file globbing are not + * supported. + * + * ```js + * const { execFile } = require('node:child_process'); + * const child = execFile('node', ['--version'], (error, stdout, stderr) => { + * if (error) { + * throw error; + * } + * console.log(stdout); + * }); + * ``` + * + * The `stdout` and `stderr` arguments passed to the callback will contain the + * stdout and stderr output of the child process. By default, Node.js will decode + * the output as UTF-8 and pass strings to the callback. The `encoding` option + * can be used to specify the character encoding used to decode the stdout and + * stderr output. If `encoding` is `'buffer'`, or an unrecognized character + * encoding, `Buffer` objects will be passed to the callback instead. + * + * If this method is invoked as its `util.promisify()` ed version, it returns + * a `Promise` for an `Object` with `stdout` and `stderr` properties. The returned`ChildProcess` instance is attached to the `Promise` as a `child` property. In + * case of an error (including any error resulting in an exit code other than 0), a + * rejected promise is returned, with the same `error` object given in the + * callback, but with two additional properties `stdout` and `stderr`. + * + * ```js + * const util = require('node:util'); + * const execFile = util.promisify(require('node:child_process').execFile); + * async function getVersion() { + * const { stdout } = await execFile('node', ['--version']); + * console.log(stdout); + * } + * getVersion(); + * ``` + * + * **If the `shell` option is enabled, do not pass unsanitized user input to this** + * **function. Any input containing shell metacharacters may be used to trigger** + * **arbitrary command execution.** + * + * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except + * the error passed to the callback will be an `AbortError`: + * + * ```js + * const { execFile } = require('node:child_process'); + * const controller = new AbortController(); + * const { signal } = controller; + * const child = execFile('node', ['--version'], { signal }, (error) => { + * console.error(error); // an AbortError + * }); + * controller.abort(); + * ``` + * @since v0.1.91 + * @param file The name or path of the executable file to run. + * @param args List of string arguments. + * @param callback Called with the output when process terminates. + */ + function execFile(file: string): ChildProcess; + function execFile( + file: string, + options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, + ): ChildProcess; + function execFile(file: string, args?: ReadonlyArray | null): ChildProcess; + function execFile( + file: string, + args: ReadonlyArray | undefined | null, + options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, + ): ChildProcess; + // no `options` definitely means stdout/stderr are `string`. + function execFile( + file: string, + callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + function execFile( + file: string, + args: ReadonlyArray | undefined | null, + callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`. + function execFile( + file: string, + options: ExecFileOptionsWithBufferEncoding, + callback: (error: ExecFileException | null, stdout: Buffer, stderr: Buffer) => void, + ): ChildProcess; + function execFile( + file: string, + args: ReadonlyArray | undefined | null, + options: ExecFileOptionsWithBufferEncoding, + callback: (error: ExecFileException | null, stdout: Buffer, stderr: Buffer) => void, + ): ChildProcess; + // `options` with well known `encoding` means stdout/stderr are definitely `string`. + function execFile( + file: string, + options: ExecFileOptionsWithStringEncoding, + callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + function execFile( + file: string, + args: ReadonlyArray | undefined | null, + options: ExecFileOptionsWithStringEncoding, + callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`. + // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`. + function execFile( + file: string, + options: ExecFileOptionsWithOtherEncoding, + callback: (error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void, + ): ChildProcess; + function execFile( + file: string, + args: ReadonlyArray | undefined | null, + options: ExecFileOptionsWithOtherEncoding, + callback: (error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void, + ): ChildProcess; + // `options` without an `encoding` means stdout/stderr are definitely `string`. + function execFile( + file: string, + options: ExecFileOptions, + callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + function execFile( + file: string, + args: ReadonlyArray | undefined | null, + options: ExecFileOptions, + callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + // fallback if nothing else matches. Worst case is always `string | Buffer`. + function execFile( + file: string, + options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, + callback: + | ((error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void) + | undefined + | null, + ): ChildProcess; + function execFile( + file: string, + args: ReadonlyArray | undefined | null, + options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, + callback: + | ((error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void) + | undefined + | null, + ): ChildProcess; + namespace execFile { + function __promisify__(file: string): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + file: string, + args: ReadonlyArray | undefined | null, + ): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + file: string, + options: ExecFileOptionsWithBufferEncoding, + ): PromiseWithChild<{ + stdout: Buffer; + stderr: Buffer; + }>; + function __promisify__( + file: string, + args: ReadonlyArray | undefined | null, + options: ExecFileOptionsWithBufferEncoding, + ): PromiseWithChild<{ + stdout: Buffer; + stderr: Buffer; + }>; + function __promisify__( + file: string, + options: ExecFileOptionsWithStringEncoding, + ): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + file: string, + args: ReadonlyArray | undefined | null, + options: ExecFileOptionsWithStringEncoding, + ): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + file: string, + options: ExecFileOptionsWithOtherEncoding, + ): PromiseWithChild<{ + stdout: string | Buffer; + stderr: string | Buffer; + }>; + function __promisify__( + file: string, + args: ReadonlyArray | undefined | null, + options: ExecFileOptionsWithOtherEncoding, + ): PromiseWithChild<{ + stdout: string | Buffer; + stderr: string | Buffer; + }>; + function __promisify__( + file: string, + options: ExecFileOptions, + ): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + file: string, + args: ReadonlyArray | undefined | null, + options: ExecFileOptions, + ): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + file: string, + options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, + ): PromiseWithChild<{ + stdout: string | Buffer; + stderr: string | Buffer; + }>; + function __promisify__( + file: string, + args: ReadonlyArray | undefined | null, + options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, + ): PromiseWithChild<{ + stdout: string | Buffer; + stderr: string | Buffer; + }>; + } + interface ForkOptions extends ProcessEnvOptions, MessagingOptions, Abortable { + execPath?: string | undefined; + execArgv?: string[] | undefined; + silent?: boolean | undefined; + /** + * Can be set to 'pipe', 'inherit', 'overlapped', or 'ignore', or an array of these strings. + * If passed as an array, the first element is used for `stdin`, the second for + * `stdout`, and the third for `stderr`. A fourth element can be used to + * specify the `stdio` behavior beyond the standard streams. See + * {@link ChildProcess.stdio} for more information. + * + * @default 'pipe' + */ + stdio?: StdioOptions | undefined; + detached?: boolean | undefined; + windowsVerbatimArguments?: boolean | undefined; + } + /** + * The `child_process.fork()` method is a special case of {@link spawn} used specifically to spawn new Node.js processes. + * Like {@link spawn}, a `ChildProcess` object is returned. The + * returned `ChildProcess` will have an additional communication channel + * built-in that allows messages to be passed back and forth between the parent and + * child. See `subprocess.send()` for details. + * + * Keep in mind that spawned Node.js child processes are + * independent of the parent with exception of the IPC communication channel + * that is established between the two. Each process has its own memory, with + * their own V8 instances. Because of the additional resource allocations + * required, spawning a large number of child Node.js processes is not + * recommended. + * + * By default, `child_process.fork()` will spawn new Node.js instances using the `process.execPath` of the parent process. The `execPath` property in the`options` object allows for an alternative + * execution path to be used. + * + * Node.js processes launched with a custom `execPath` will communicate with the + * parent process using the file descriptor (fd) identified using the + * environment variable `NODE_CHANNEL_FD` on the child process. + * + * Unlike the [`fork(2)`](http://man7.org/linux/man-pages/man2/fork.2.html) POSIX system call, `child_process.fork()` does not clone the + * current process. + * + * The `shell` option available in {@link spawn} is not supported by`child_process.fork()` and will be ignored if set. + * + * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except + * the error passed to the callback will be an `AbortError`: + * + * ```js + * if (process.argv[2] === 'child') { + * setTimeout(() => { + * console.log(`Hello from ${process.argv[2]}!`); + * }, 1_000); + * } else { + * const { fork } = require('node:child_process'); + * const controller = new AbortController(); + * const { signal } = controller; + * const child = fork(__filename, ['child'], { signal }); + * child.on('error', (err) => { + * // This will be called with err being an AbortError if the controller aborts + * }); + * controller.abort(); // Stops the child process + * } + * ``` + * @since v0.5.0 + * @param modulePath The module to run in the child. + * @param args List of string arguments. + */ + function fork(modulePath: string, options?: ForkOptions): ChildProcess; + function fork(modulePath: string, args?: ReadonlyArray, options?: ForkOptions): ChildProcess; + interface SpawnSyncOptions extends CommonSpawnOptions { + input?: string | NodeJS.ArrayBufferView | undefined; + maxBuffer?: number | undefined; + encoding?: BufferEncoding | "buffer" | null | undefined; + } + interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions { + encoding: BufferEncoding; + } + interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions { + encoding?: "buffer" | null | undefined; + } + interface SpawnSyncReturns { + pid: number; + output: Array; + stdout: T; + stderr: T; + status: number | null; + signal: NodeJS.Signals | null; + error?: Error | undefined; + } + /** + * The `child_process.spawnSync()` method is generally identical to {@link spawn} with the exception that the function will not return + * until the child process has fully closed. When a timeout has been encountered + * and `killSignal` is sent, the method won't return until the process has + * completely exited. If the process intercepts and handles the `SIGTERM` signal + * and doesn't exit, the parent process will wait until the child process has + * exited. + * + * **If the `shell` option is enabled, do not pass unsanitized user input to this** + * **function. Any input containing shell metacharacters may be used to trigger** + * **arbitrary command execution.** + * @since v0.11.12 + * @param command The command to run. + * @param args List of string arguments. + */ + function spawnSync(command: string): SpawnSyncReturns; + function spawnSync(command: string, options: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; + function spawnSync(command: string, options: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; + function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns; + function spawnSync(command: string, args: ReadonlyArray): SpawnSyncReturns; + function spawnSync( + command: string, + args: ReadonlyArray, + options: SpawnSyncOptionsWithStringEncoding, + ): SpawnSyncReturns; + function spawnSync( + command: string, + args: ReadonlyArray, + options: SpawnSyncOptionsWithBufferEncoding, + ): SpawnSyncReturns; + function spawnSync( + command: string, + args?: ReadonlyArray, + options?: SpawnSyncOptions, + ): SpawnSyncReturns; + interface CommonExecOptions extends CommonOptions { + input?: string | NodeJS.ArrayBufferView | undefined; + /** + * Can be set to 'pipe', 'inherit, or 'ignore', or an array of these strings. + * If passed as an array, the first element is used for `stdin`, the second for + * `stdout`, and the third for `stderr`. A fourth element can be used to + * specify the `stdio` behavior beyond the standard streams. See + * {@link ChildProcess.stdio} for more information. + * + * @default 'pipe' + */ + stdio?: StdioOptions | undefined; + killSignal?: NodeJS.Signals | number | undefined; + maxBuffer?: number | undefined; + encoding?: BufferEncoding | "buffer" | null | undefined; + } + interface ExecSyncOptions extends CommonExecOptions { + shell?: string | undefined; + } + interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions { + encoding: BufferEncoding; + } + interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions { + encoding?: "buffer" | null | undefined; + } + /** + * The `child_process.execSync()` method is generally identical to {@link exec} with the exception that the method will not return + * until the child process has fully closed. When a timeout has been encountered + * and `killSignal` is sent, the method won't return until the process has + * completely exited. If the child process intercepts and handles the `SIGTERM`signal and doesn't exit, the parent process will wait until the child process + * has exited. + * + * If the process times out or has a non-zero exit code, this method will throw. + * The `Error` object will contain the entire result from {@link spawnSync}. + * + * **Never pass unsanitized user input to this function. Any input containing shell** + * **metacharacters may be used to trigger arbitrary command execution.** + * @since v0.11.12 + * @param command The command to run. + * @return The stdout from the command. + */ + function execSync(command: string): Buffer; + function execSync(command: string, options: ExecSyncOptionsWithStringEncoding): string; + function execSync(command: string, options: ExecSyncOptionsWithBufferEncoding): Buffer; + function execSync(command: string, options?: ExecSyncOptions): string | Buffer; + interface ExecFileSyncOptions extends CommonExecOptions { + shell?: boolean | string | undefined; + } + interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions { + encoding: BufferEncoding; + } + interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions { + encoding?: "buffer" | null; // specify `null`. + } + /** + * The `child_process.execFileSync()` method is generally identical to {@link execFile} with the exception that the method will not + * return until the child process has fully closed. When a timeout has been + * encountered and `killSignal` is sent, the method won't return until the process + * has completely exited. + * + * If the child process intercepts and handles the `SIGTERM` signal and + * does not exit, the parent process will still wait until the child process has + * exited. + * + * If the process times out or has a non-zero exit code, this method will throw an `Error` that will include the full result of the underlying {@link spawnSync}. + * + * **If the `shell` option is enabled, do not pass unsanitized user input to this** + * **function. Any input containing shell metacharacters may be used to trigger** + * **arbitrary command execution.** + * @since v0.11.12 + * @param file The name or path of the executable file to run. + * @param args List of string arguments. + * @return The stdout from the command. + */ + function execFileSync(file: string): Buffer; + function execFileSync(file: string, options: ExecFileSyncOptionsWithStringEncoding): string; + function execFileSync(file: string, options: ExecFileSyncOptionsWithBufferEncoding): Buffer; + function execFileSync(file: string, options?: ExecFileSyncOptions): string | Buffer; + function execFileSync(file: string, args: ReadonlyArray): Buffer; + function execFileSync( + file: string, + args: ReadonlyArray, + options: ExecFileSyncOptionsWithStringEncoding, + ): string; + function execFileSync( + file: string, + args: ReadonlyArray, + options: ExecFileSyncOptionsWithBufferEncoding, + ): Buffer; + function execFileSync(file: string, args?: ReadonlyArray, options?: ExecFileSyncOptions): string | Buffer; +} +declare module "node:child_process" { + export * from "child_process"; +} diff --git a/node_modules/@types/node/cluster.d.ts b/node_modules/@types/node/cluster.d.ts new file mode 100644 index 00000000..39cd56ad --- /dev/null +++ b/node_modules/@types/node/cluster.d.ts @@ -0,0 +1,432 @@ +/** + * Clusters of Node.js processes can be used to run multiple instances of Node.js + * that can distribute workloads among their application threads. When process + * isolation is not needed, use the `worker_threads` module instead, which + * allows running multiple application threads within a single Node.js instance. + * + * The cluster module allows easy creation of child processes that all share + * server ports. + * + * ```js + * import cluster from 'node:cluster'; + * import http from 'node:http'; + * import { availableParallelism } from 'node:os'; + * import process from 'node:process'; + * + * const numCPUs = availableParallelism(); + * + * if (cluster.isPrimary) { + * console.log(`Primary ${process.pid} is running`); + * + * // Fork workers. + * for (let i = 0; i < numCPUs; i++) { + * cluster.fork(); + * } + * + * cluster.on('exit', (worker, code, signal) => { + * console.log(`worker ${worker.process.pid} died`); + * }); + * } else { + * // Workers can share any TCP connection + * // In this case it is an HTTP server + * http.createServer((req, res) => { + * res.writeHead(200); + * res.end('hello world\n'); + * }).listen(8000); + * + * console.log(`Worker ${process.pid} started`); + * } + * ``` + * + * Running Node.js will now share port 8000 between the workers: + * + * ```console + * $ node server.js + * Primary 3596 is running + * Worker 4324 started + * Worker 4520 started + * Worker 6056 started + * Worker 5644 started + * ``` + * + * On Windows, it is not yet possible to set up a named pipe server in a worker. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/cluster.js) + */ +declare module "cluster" { + import * as child from "node:child_process"; + import EventEmitter = require("node:events"); + import * as net from "node:net"; + type SerializationType = "json" | "advanced"; + export interface ClusterSettings { + execArgv?: string[] | undefined; // default: process.execArgv + exec?: string | undefined; + args?: string[] | undefined; + silent?: boolean | undefined; + stdio?: any[] | undefined; + uid?: number | undefined; + gid?: number | undefined; + inspectPort?: number | (() => number) | undefined; + serialization?: SerializationType | undefined; + cwd?: string | undefined; + windowsHide?: boolean | undefined; + } + export interface Address { + address: string; + port: number; + addressType: number | "udp4" | "udp6"; // 4, 6, -1, "udp4", "udp6" + } + /** + * A `Worker` object contains all public information and method about a worker. + * In the primary it can be obtained using `cluster.workers`. In a worker + * it can be obtained using `cluster.worker`. + * @since v0.7.0 + */ + export class Worker extends EventEmitter { + /** + * Each new worker is given its own unique id, this id is stored in the`id`. + * + * While a worker is alive, this is the key that indexes it in`cluster.workers`. + * @since v0.8.0 + */ + id: number; + /** + * All workers are created using `child_process.fork()`, the returned object + * from this function is stored as `.process`. In a worker, the global `process`is stored. + * + * See: `Child Process module`. + * + * Workers will call `process.exit(0)` if the `'disconnect'` event occurs + * on `process` and `.exitedAfterDisconnect` is not `true`. This protects against + * accidental disconnection. + * @since v0.7.0 + */ + process: child.ChildProcess; + /** + * Send a message to a worker or primary, optionally with a handle. + * + * In the primary, this sends a message to a specific worker. It is identical to `ChildProcess.send()`. + * + * In a worker, this sends a message to the primary. It is identical to`process.send()`. + * + * This example will echo back all messages from the primary: + * + * ```js + * if (cluster.isPrimary) { + * const worker = cluster.fork(); + * worker.send('hi there'); + * + * } else if (cluster.isWorker) { + * process.on('message', (msg) => { + * process.send(msg); + * }); + * } + * ``` + * @since v0.7.0 + * @param options The `options` argument, if present, is an object used to parameterize the sending of certain types of handles. `options` supports the following properties: + */ + send(message: child.Serializable, callback?: (error: Error | null) => void): boolean; + send( + message: child.Serializable, + sendHandle: child.SendHandle, + callback?: (error: Error | null) => void, + ): boolean; + send( + message: child.Serializable, + sendHandle: child.SendHandle, + options?: child.MessageOptions, + callback?: (error: Error | null) => void, + ): boolean; + /** + * This function will kill the worker. In the primary worker, it does this by + * disconnecting the `worker.process`, and once disconnected, killing with`signal`. In the worker, it does it by killing the process with `signal`. + * + * The `kill()` function kills the worker process without waiting for a graceful + * disconnect, it has the same behavior as `worker.process.kill()`. + * + * This method is aliased as `worker.destroy()` for backwards compatibility. + * + * In a worker, `process.kill()` exists, but it is not this function; + * it is `kill()`. + * @since v0.9.12 + * @param [signal='SIGTERM'] Name of the kill signal to send to the worker process. + */ + kill(signal?: string): void; + destroy(signal?: string): void; + /** + * In a worker, this function will close all servers, wait for the `'close'` event + * on those servers, and then disconnect the IPC channel. + * + * In the primary, an internal message is sent to the worker causing it to call`.disconnect()` on itself. + * + * Causes `.exitedAfterDisconnect` to be set. + * + * After a server is closed, it will no longer accept new connections, + * but connections may be accepted by any other listening worker. Existing + * connections will be allowed to close as usual. When no more connections exist, + * see `server.close()`, the IPC channel to the worker will close allowing it + * to die gracefully. + * + * The above applies _only_ to server connections, client connections are not + * automatically closed by workers, and disconnect does not wait for them to close + * before exiting. + * + * In a worker, `process.disconnect` exists, but it is not this function; + * it is `disconnect()`. + * + * Because long living server connections may block workers from disconnecting, it + * may be useful to send a message, so application specific actions may be taken to + * close them. It also may be useful to implement a timeout, killing a worker if + * the `'disconnect'` event has not been emitted after some time. + * + * ```js + * if (cluster.isPrimary) { + * const worker = cluster.fork(); + * let timeout; + * + * worker.on('listening', (address) => { + * worker.send('shutdown'); + * worker.disconnect(); + * timeout = setTimeout(() => { + * worker.kill(); + * }, 2000); + * }); + * + * worker.on('disconnect', () => { + * clearTimeout(timeout); + * }); + * + * } else if (cluster.isWorker) { + * const net = require('node:net'); + * const server = net.createServer((socket) => { + * // Connections never end + * }); + * + * server.listen(8000); + * + * process.on('message', (msg) => { + * if (msg === 'shutdown') { + * // Initiate graceful close of any connections to server + * } + * }); + * } + * ``` + * @since v0.7.7 + * @return A reference to `worker`. + */ + disconnect(): void; + /** + * This function returns `true` if the worker is connected to its primary via its + * IPC channel, `false` otherwise. A worker is connected to its primary after it + * has been created. It is disconnected after the `'disconnect'` event is emitted. + * @since v0.11.14 + */ + isConnected(): boolean; + /** + * This function returns `true` if the worker's process has terminated (either + * because of exiting or being signaled). Otherwise, it returns `false`. + * + * ```js + * import cluster from 'node:cluster'; + * import http from 'node:http'; + * import { availableParallelism } from 'node:os'; + * import process from 'node:process'; + * + * const numCPUs = availableParallelism(); + * + * if (cluster.isPrimary) { + * console.log(`Primary ${process.pid} is running`); + * + * // Fork workers. + * for (let i = 0; i < numCPUs; i++) { + * cluster.fork(); + * } + * + * cluster.on('fork', (worker) => { + * console.log('worker is dead:', worker.isDead()); + * }); + * + * cluster.on('exit', (worker, code, signal) => { + * console.log('worker is dead:', worker.isDead()); + * }); + * } else { + * // Workers can share any TCP connection. In this case, it is an HTTP server. + * http.createServer((req, res) => { + * res.writeHead(200); + * res.end(`Current process\n ${process.pid}`); + * process.kill(process.pid); + * }).listen(8000); + * } + * ``` + * @since v0.11.14 + */ + isDead(): boolean; + /** + * This property is `true` if the worker exited due to `.disconnect()`. + * If the worker exited any other way, it is `false`. If the + * worker has not exited, it is `undefined`. + * + * The boolean `worker.exitedAfterDisconnect` allows distinguishing between + * voluntary and accidental exit, the primary may choose not to respawn a worker + * based on this value. + * + * ```js + * cluster.on('exit', (worker, code, signal) => { + * if (worker.exitedAfterDisconnect === true) { + * console.log('Oh, it was just voluntary – no need to worry'); + * } + * }); + * + * // kill worker + * worker.kill(); + * ``` + * @since v6.0.0 + */ + exitedAfterDisconnect: boolean; + /** + * events.EventEmitter + * 1. disconnect + * 2. error + * 3. exit + * 4. listening + * 5. message + * 6. online + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "disconnect", listener: () => void): this; + addListener(event: "error", listener: (error: Error) => void): this; + addListener(event: "exit", listener: (code: number, signal: string) => void): this; + addListener(event: "listening", listener: (address: Address) => void): this; + addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + addListener(event: "online", listener: () => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "disconnect"): boolean; + emit(event: "error", error: Error): boolean; + emit(event: "exit", code: number, signal: string): boolean; + emit(event: "listening", address: Address): boolean; + emit(event: "message", message: any, handle: net.Socket | net.Server): boolean; + emit(event: "online"): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "disconnect", listener: () => void): this; + on(event: "error", listener: (error: Error) => void): this; + on(event: "exit", listener: (code: number, signal: string) => void): this; + on(event: "listening", listener: (address: Address) => void): this; + on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + on(event: "online", listener: () => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "disconnect", listener: () => void): this; + once(event: "error", listener: (error: Error) => void): this; + once(event: "exit", listener: (code: number, signal: string) => void): this; + once(event: "listening", listener: (address: Address) => void): this; + once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + once(event: "online", listener: () => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "disconnect", listener: () => void): this; + prependListener(event: "error", listener: (error: Error) => void): this; + prependListener(event: "exit", listener: (code: number, signal: string) => void): this; + prependListener(event: "listening", listener: (address: Address) => void): this; + prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + prependListener(event: "online", listener: () => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "disconnect", listener: () => void): this; + prependOnceListener(event: "error", listener: (error: Error) => void): this; + prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; + prependOnceListener(event: "listening", listener: (address: Address) => void): this; + prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + prependOnceListener(event: "online", listener: () => void): this; + } + export interface Cluster extends EventEmitter { + disconnect(callback?: () => void): void; + fork(env?: any): Worker; + /** @deprecated since v16.0.0 - use isPrimary. */ + readonly isMaster: boolean; + readonly isPrimary: boolean; + readonly isWorker: boolean; + schedulingPolicy: number; + readonly settings: ClusterSettings; + /** @deprecated since v16.0.0 - use setupPrimary. */ + setupMaster(settings?: ClusterSettings): void; + /** + * `setupPrimary` is used to change the default 'fork' behavior. Once called, the settings will be present in cluster.settings. + */ + setupPrimary(settings?: ClusterSettings): void; + readonly worker?: Worker | undefined; + readonly workers?: NodeJS.Dict | undefined; + readonly SCHED_NONE: number; + readonly SCHED_RR: number; + /** + * events.EventEmitter + * 1. disconnect + * 2. exit + * 3. fork + * 4. listening + * 5. message + * 6. online + * 7. setup + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "disconnect", listener: (worker: Worker) => void): this; + addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + addListener(event: "fork", listener: (worker: Worker) => void): this; + addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; + addListener( + event: "message", + listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void, + ): this; // the handle is a net.Socket or net.Server object, or undefined. + addListener(event: "online", listener: (worker: Worker) => void): this; + addListener(event: "setup", listener: (settings: ClusterSettings) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "disconnect", worker: Worker): boolean; + emit(event: "exit", worker: Worker, code: number, signal: string): boolean; + emit(event: "fork", worker: Worker): boolean; + emit(event: "listening", worker: Worker, address: Address): boolean; + emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean; + emit(event: "online", worker: Worker): boolean; + emit(event: "setup", settings: ClusterSettings): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "disconnect", listener: (worker: Worker) => void): this; + on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + on(event: "fork", listener: (worker: Worker) => void): this; + on(event: "listening", listener: (worker: Worker, address: Address) => void): this; + on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + on(event: "online", listener: (worker: Worker) => void): this; + on(event: "setup", listener: (settings: ClusterSettings) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "disconnect", listener: (worker: Worker) => void): this; + once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + once(event: "fork", listener: (worker: Worker) => void): this; + once(event: "listening", listener: (worker: Worker, address: Address) => void): this; + once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + once(event: "online", listener: (worker: Worker) => void): this; + once(event: "setup", listener: (settings: ClusterSettings) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "disconnect", listener: (worker: Worker) => void): this; + prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + prependListener(event: "fork", listener: (worker: Worker) => void): this; + prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; + // the handle is a net.Socket or net.Server object, or undefined. + prependListener( + event: "message", + listener: (worker: Worker, message: any, handle?: net.Socket | net.Server) => void, + ): this; + prependListener(event: "online", listener: (worker: Worker) => void): this; + prependListener(event: "setup", listener: (settings: ClusterSettings) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this; + prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + prependOnceListener(event: "fork", listener: (worker: Worker) => void): this; + prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; + // the handle is a net.Socket or net.Server object, or undefined. + prependOnceListener( + event: "message", + listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void, + ): this; + prependOnceListener(event: "online", listener: (worker: Worker) => void): this; + prependOnceListener(event: "setup", listener: (settings: ClusterSettings) => void): this; + } + const cluster: Cluster; + export default cluster; +} +declare module "node:cluster" { + export * from "cluster"; + export { default as default } from "cluster"; +} diff --git a/node_modules/@types/node/console.d.ts b/node_modules/@types/node/console.d.ts new file mode 100644 index 00000000..8ea5e17b --- /dev/null +++ b/node_modules/@types/node/console.d.ts @@ -0,0 +1,415 @@ +/** + * The `node:console` module provides a simple debugging console that is similar to + * the JavaScript console mechanism provided by web browsers. + * + * The module exports two specific components: + * + * * A `Console` class with methods such as `console.log()`, `console.error()`, and`console.warn()` that can be used to write to any Node.js stream. + * * A global `console` instance configured to write to `process.stdout` and `process.stderr`. The global `console` can be used without calling`require('node:console')`. + * + * _**Warning**_: The global console object's methods are neither consistently + * synchronous like the browser APIs they resemble, nor are they consistently + * asynchronous like all other Node.js streams. See the `note on process I/O` for + * more information. + * + * Example using the global `console`: + * + * ```js + * console.log('hello world'); + * // Prints: hello world, to stdout + * console.log('hello %s', 'world'); + * // Prints: hello world, to stdout + * console.error(new Error('Whoops, something bad happened')); + * // Prints error message and stack trace to stderr: + * // Error: Whoops, something bad happened + * // at [eval]:5:15 + * // at Script.runInThisContext (node:vm:132:18) + * // at Object.runInThisContext (node:vm:309:38) + * // at node:internal/process/execution:77:19 + * // at [eval]-wrapper:6:22 + * // at evalScript (node:internal/process/execution:76:60) + * // at node:internal/main/eval_string:23:3 + * + * const name = 'Will Robinson'; + * console.warn(`Danger ${name}! Danger!`); + * // Prints: Danger Will Robinson! Danger!, to stderr + * ``` + * + * Example using the `Console` class: + * + * ```js + * const out = getStreamSomehow(); + * const err = getStreamSomehow(); + * const myConsole = new console.Console(out, err); + * + * myConsole.log('hello world'); + * // Prints: hello world, to out + * myConsole.log('hello %s', 'world'); + * // Prints: hello world, to out + * myConsole.error(new Error('Whoops, something bad happened')); + * // Prints: [Error: Whoops, something bad happened], to err + * + * const name = 'Will Robinson'; + * myConsole.warn(`Danger ${name}! Danger!`); + * // Prints: Danger Will Robinson! Danger!, to err + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/console.js) + */ +declare module "console" { + import console = require("node:console"); + export = console; +} +declare module "node:console" { + import { InspectOptions } from "node:util"; + global { + // This needs to be global to avoid TS2403 in case lib.dom.d.ts is present in the same build + interface Console { + Console: console.ConsoleConstructor; + /** + * `console.assert()` writes a message if `value` is [falsy](https://developer.mozilla.org/en-US/docs/Glossary/Falsy) or omitted. It only + * writes a message and does not otherwise affect execution. The output always + * starts with `"Assertion failed"`. If provided, `message` is formatted using `util.format()`. + * + * If `value` is [truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy), nothing happens. + * + * ```js + * console.assert(true, 'does nothing'); + * + * console.assert(false, 'Whoops %s work', 'didn\'t'); + * // Assertion failed: Whoops didn't work + * + * console.assert(); + * // Assertion failed + * ``` + * @since v0.1.101 + * @param value The value tested for being truthy. + * @param message All arguments besides `value` are used as error message. + */ + assert(value: any, message?: string, ...optionalParams: any[]): void; + /** + * When `stdout` is a TTY, calling `console.clear()` will attempt to clear the + * TTY. When `stdout` is not a TTY, this method does nothing. + * + * The specific operation of `console.clear()` can vary across operating systems + * and terminal types. For most Linux operating systems, `console.clear()`operates similarly to the `clear` shell command. On Windows, `console.clear()`will clear only the output in the + * current terminal viewport for the Node.js + * binary. + * @since v8.3.0 + */ + clear(): void; + /** + * Maintains an internal counter specific to `label` and outputs to `stdout` the + * number of times `console.count()` has been called with the given `label`. + * + * ```js + * > console.count() + * default: 1 + * undefined + * > console.count('default') + * default: 2 + * undefined + * > console.count('abc') + * abc: 1 + * undefined + * > console.count('xyz') + * xyz: 1 + * undefined + * > console.count('abc') + * abc: 2 + * undefined + * > console.count() + * default: 3 + * undefined + * > + * ``` + * @since v8.3.0 + * @param [label='default'] The display label for the counter. + */ + count(label?: string): void; + /** + * Resets the internal counter specific to `label`. + * + * ```js + * > console.count('abc'); + * abc: 1 + * undefined + * > console.countReset('abc'); + * undefined + * > console.count('abc'); + * abc: 1 + * undefined + * > + * ``` + * @since v8.3.0 + * @param [label='default'] The display label for the counter. + */ + countReset(label?: string): void; + /** + * The `console.debug()` function is an alias for {@link log}. + * @since v8.0.0 + */ + debug(message?: any, ...optionalParams: any[]): void; + /** + * Uses `util.inspect()` on `obj` and prints the resulting string to `stdout`. + * This function bypasses any custom `inspect()` function defined on `obj`. + * @since v0.1.101 + */ + dir(obj: any, options?: InspectOptions): void; + /** + * This method calls `console.log()` passing it the arguments received. + * This method does not produce any XML formatting. + * @since v8.0.0 + */ + dirxml(...data: any[]): void; + /** + * Prints to `stderr` with newline. Multiple arguments can be passed, with the + * first used as the primary message and all additional used as substitution + * values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html) (the arguments are all passed to `util.format()`). + * + * ```js + * const code = 5; + * console.error('error #%d', code); + * // Prints: error #5, to stderr + * console.error('error', code); + * // Prints: error 5, to stderr + * ``` + * + * If formatting elements (e.g. `%d`) are not found in the first string then `util.inspect()` is called on each argument and the resulting string + * values are concatenated. See `util.format()` for more information. + * @since v0.1.100 + */ + error(message?: any, ...optionalParams: any[]): void; + /** + * Increases indentation of subsequent lines by spaces for `groupIndentation`length. + * + * If one or more `label`s are provided, those are printed first without the + * additional indentation. + * @since v8.5.0 + */ + group(...label: any[]): void; + /** + * An alias for {@link group}. + * @since v8.5.0 + */ + groupCollapsed(...label: any[]): void; + /** + * Decreases indentation of subsequent lines by spaces for `groupIndentation`length. + * @since v8.5.0 + */ + groupEnd(): void; + /** + * The `console.info()` function is an alias for {@link log}. + * @since v0.1.100 + */ + info(message?: any, ...optionalParams: any[]): void; + /** + * Prints to `stdout` with newline. Multiple arguments can be passed, with the + * first used as the primary message and all additional used as substitution + * values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html) (the arguments are all passed to `util.format()`). + * + * ```js + * const count = 5; + * console.log('count: %d', count); + * // Prints: count: 5, to stdout + * console.log('count:', count); + * // Prints: count: 5, to stdout + * ``` + * + * See `util.format()` for more information. + * @since v0.1.100 + */ + log(message?: any, ...optionalParams: any[]): void; + /** + * Try to construct a table with the columns of the properties of `tabularData`(or use `properties`) and rows of `tabularData` and log it. Falls back to just + * logging the argument if it can't be parsed as tabular. + * + * ```js + * // These can't be parsed as tabular data + * console.table(Symbol()); + * // Symbol() + * + * console.table(undefined); + * // undefined + * + * console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }]); + * // ┌─────────┬─────┬─────┐ + * // │ (index) │ a │ b │ + * // ├─────────┼─────┼─────┤ + * // │ 0 │ 1 │ 'Y' │ + * // │ 1 │ 'Z' │ 2 │ + * // └─────────┴─────┴─────┘ + * + * console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }], ['a']); + * // ┌─────────┬─────┐ + * // │ (index) │ a │ + * // ├─────────┼─────┤ + * // │ 0 │ 1 │ + * // │ 1 │ 'Z' │ + * // └─────────┴─────┘ + * ``` + * @since v10.0.0 + * @param properties Alternate properties for constructing the table. + */ + table(tabularData: any, properties?: ReadonlyArray): void; + /** + * Starts a timer that can be used to compute the duration of an operation. Timers + * are identified by a unique `label`. Use the same `label` when calling {@link timeEnd} to stop the timer and output the elapsed time in + * suitable time units to `stdout`. For example, if the elapsed + * time is 3869ms, `console.timeEnd()` displays "3.869s". + * @since v0.1.104 + * @param [label='default'] + */ + time(label?: string): void; + /** + * Stops a timer that was previously started by calling {@link time} and + * prints the result to `stdout`: + * + * ```js + * console.time('bunch-of-stuff'); + * // Do a bunch of stuff. + * console.timeEnd('bunch-of-stuff'); + * // Prints: bunch-of-stuff: 225.438ms + * ``` + * @since v0.1.104 + * @param [label='default'] + */ + timeEnd(label?: string): void; + /** + * For a timer that was previously started by calling {@link time}, prints + * the elapsed time and other `data` arguments to `stdout`: + * + * ```js + * console.time('process'); + * const value = expensiveProcess1(); // Returns 42 + * console.timeLog('process', value); + * // Prints "process: 365.227ms 42". + * doExpensiveProcess2(value); + * console.timeEnd('process'); + * ``` + * @since v10.7.0 + * @param [label='default'] + */ + timeLog(label?: string, ...data: any[]): void; + /** + * Prints to `stderr` the string `'Trace: '`, followed by the `util.format()` formatted message and stack trace to the current position in the code. + * + * ```js + * console.trace('Show me'); + * // Prints: (stack trace will vary based on where trace is called) + * // Trace: Show me + * // at repl:2:9 + * // at REPLServer.defaultEval (repl.js:248:27) + * // at bound (domain.js:287:14) + * // at REPLServer.runBound [as eval] (domain.js:300:12) + * // at REPLServer. (repl.js:412:12) + * // at emitOne (events.js:82:20) + * // at REPLServer.emit (events.js:169:7) + * // at REPLServer.Interface._onLine (readline.js:210:10) + * // at REPLServer.Interface._line (readline.js:549:8) + * // at REPLServer.Interface._ttyWrite (readline.js:826:14) + * ``` + * @since v0.1.104 + */ + trace(message?: any, ...optionalParams: any[]): void; + /** + * The `console.warn()` function is an alias for {@link error}. + * @since v0.1.100 + */ + warn(message?: any, ...optionalParams: any[]): void; + // --- Inspector mode only --- + /** + * This method does not display anything unless used in the inspector. + * Starts a JavaScript CPU profile with an optional label. + */ + profile(label?: string): void; + /** + * This method does not display anything unless used in the inspector. + * Stops the current JavaScript CPU profiling session if one has been started and prints the report to the Profiles panel of the inspector. + */ + profileEnd(label?: string): void; + /** + * This method does not display anything unless used in the inspector. + * Adds an event with the label `label` to the Timeline panel of the inspector. + */ + timeStamp(label?: string): void; + } + /** + * The `console` module provides a simple debugging console that is similar to the + * JavaScript console mechanism provided by web browsers. + * + * The module exports two specific components: + * + * * A `Console` class with methods such as `console.log()`, `console.error()` and`console.warn()` that can be used to write to any Node.js stream. + * * A global `console` instance configured to write to `process.stdout` and `process.stderr`. The global `console` can be used without calling`require('console')`. + * + * _**Warning**_: The global console object's methods are neither consistently + * synchronous like the browser APIs they resemble, nor are they consistently + * asynchronous like all other Node.js streams. See the `note on process I/O` for + * more information. + * + * Example using the global `console`: + * + * ```js + * console.log('hello world'); + * // Prints: hello world, to stdout + * console.log('hello %s', 'world'); + * // Prints: hello world, to stdout + * console.error(new Error('Whoops, something bad happened')); + * // Prints error message and stack trace to stderr: + * // Error: Whoops, something bad happened + * // at [eval]:5:15 + * // at Script.runInThisContext (node:vm:132:18) + * // at Object.runInThisContext (node:vm:309:38) + * // at node:internal/process/execution:77:19 + * // at [eval]-wrapper:6:22 + * // at evalScript (node:internal/process/execution:76:60) + * // at node:internal/main/eval_string:23:3 + * + * const name = 'Will Robinson'; + * console.warn(`Danger ${name}! Danger!`); + * // Prints: Danger Will Robinson! Danger!, to stderr + * ``` + * + * Example using the `Console` class: + * + * ```js + * const out = getStreamSomehow(); + * const err = getStreamSomehow(); + * const myConsole = new console.Console(out, err); + * + * myConsole.log('hello world'); + * // Prints: hello world, to out + * myConsole.log('hello %s', 'world'); + * // Prints: hello world, to out + * myConsole.error(new Error('Whoops, something bad happened')); + * // Prints: [Error: Whoops, something bad happened], to err + * + * const name = 'Will Robinson'; + * myConsole.warn(`Danger ${name}! Danger!`); + * // Prints: Danger Will Robinson! Danger!, to err + * ``` + * @see [source](https://github.com/nodejs/node/blob/v16.4.2/lib/console.js) + */ + namespace console { + interface ConsoleConstructorOptions { + stdout: NodeJS.WritableStream; + stderr?: NodeJS.WritableStream | undefined; + ignoreErrors?: boolean | undefined; + colorMode?: boolean | "auto" | undefined; + inspectOptions?: InspectOptions | undefined; + /** + * Set group indentation + * @default 2 + */ + groupIndentation?: number | undefined; + } + interface ConsoleConstructor { + prototype: Console; + new(stdout: NodeJS.WritableStream, stderr?: NodeJS.WritableStream, ignoreErrors?: boolean): Console; + new(options: ConsoleConstructorOptions): Console; + } + } + var console: Console; + } + export = globalThis.console; +} diff --git a/node_modules/@types/node/constants.d.ts b/node_modules/@types/node/constants.d.ts new file mode 100644 index 00000000..c3ac2b82 --- /dev/null +++ b/node_modules/@types/node/constants.d.ts @@ -0,0 +1,19 @@ +/** @deprecated since v6.3.0 - use constants property exposed by the relevant module instead. */ +declare module "constants" { + import { constants as osConstants, SignalConstants } from "node:os"; + import { constants as cryptoConstants } from "node:crypto"; + import { constants as fsConstants } from "node:fs"; + + const exp: + & typeof osConstants.errno + & typeof osConstants.priority + & SignalConstants + & typeof cryptoConstants + & typeof fsConstants; + export = exp; +} + +declare module "node:constants" { + import constants = require("constants"); + export = constants; +} diff --git a/node_modules/@types/node/crypto.d.ts b/node_modules/@types/node/crypto.d.ts new file mode 100644 index 00000000..bd04bf7b --- /dev/null +++ b/node_modules/@types/node/crypto.d.ts @@ -0,0 +1,4456 @@ +/** + * The `node:crypto` module provides cryptographic functionality that includes a + * set of wrappers for OpenSSL's hash, HMAC, cipher, decipher, sign, and verify + * functions. + * + * ```js + * const { createHmac } = await import('node:crypto'); + * + * const secret = 'abcdefg'; + * const hash = createHmac('sha256', secret) + * .update('I love cupcakes') + * .digest('hex'); + * console.log(hash); + * // Prints: + * // c0fa1bc00531bd78ef38c628449c5102aeabd49b5dc3a2a516ea6ea959d6658e + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/crypto.js) + */ +declare module "crypto" { + import * as stream from "node:stream"; + import { PeerCertificate } from "node:tls"; + /** + * SPKAC is a Certificate Signing Request mechanism originally implemented by + * Netscape and was specified formally as part of HTML5's `keygen` element. + * + * `` is deprecated since [HTML 5.2](https://www.w3.org/TR/html52/changes.html#features-removed) and new projects + * should not use this element anymore. + * + * The `node:crypto` module provides the `Certificate` class for working with SPKAC + * data. The most common usage is handling output generated by the HTML5`` element. Node.js uses [OpenSSL's SPKAC + * implementation](https://www.openssl.org/docs/man3.0/man1/openssl-spkac.html) internally. + * @since v0.11.8 + */ + class Certificate { + /** + * ```js + * const { Certificate } = await import('node:crypto'); + * const spkac = getSpkacSomehow(); + * const challenge = Certificate.exportChallenge(spkac); + * console.log(challenge.toString('utf8')); + * // Prints: the challenge as a UTF8 string + * ``` + * @since v9.0.0 + * @param encoding The `encoding` of the `spkac` string. + * @return The challenge component of the `spkac` data structure, which includes a public key and a challenge. + */ + static exportChallenge(spkac: BinaryLike): Buffer; + /** + * ```js + * const { Certificate } = await import('node:crypto'); + * const spkac = getSpkacSomehow(); + * const publicKey = Certificate.exportPublicKey(spkac); + * console.log(publicKey); + * // Prints: the public key as + * ``` + * @since v9.0.0 + * @param encoding The `encoding` of the `spkac` string. + * @return The public key component of the `spkac` data structure, which includes a public key and a challenge. + */ + static exportPublicKey(spkac: BinaryLike, encoding?: string): Buffer; + /** + * ```js + * import { Buffer } from 'node:buffer'; + * const { Certificate } = await import('node:crypto'); + * + * const spkac = getSpkacSomehow(); + * console.log(Certificate.verifySpkac(Buffer.from(spkac))); + * // Prints: true or false + * ``` + * @since v9.0.0 + * @param encoding The `encoding` of the `spkac` string. + * @return `true` if the given `spkac` data structure is valid, `false` otherwise. + */ + static verifySpkac(spkac: NodeJS.ArrayBufferView): boolean; + /** + * @deprecated + * @param spkac + * @returns The challenge component of the `spkac` data structure, + * which includes a public key and a challenge. + */ + exportChallenge(spkac: BinaryLike): Buffer; + /** + * @deprecated + * @param spkac + * @param encoding The encoding of the spkac string. + * @returns The public key component of the `spkac` data structure, + * which includes a public key and a challenge. + */ + exportPublicKey(spkac: BinaryLike, encoding?: string): Buffer; + /** + * @deprecated + * @param spkac + * @returns `true` if the given `spkac` data structure is valid, + * `false` otherwise. + */ + verifySpkac(spkac: NodeJS.ArrayBufferView): boolean; + } + namespace constants { + // https://nodejs.org/dist/latest-v20.x/docs/api/crypto.html#crypto-constants + const OPENSSL_VERSION_NUMBER: number; + /** Applies multiple bug workarounds within OpenSSL. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html for detail. */ + const SSL_OP_ALL: number; + /** Allows legacy insecure renegotiation between OpenSSL and unpatched clients or servers. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. */ + const SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number; + /** Attempts to use the server's preferences instead of the client's when selecting a cipher. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. */ + const SSL_OP_CIPHER_SERVER_PREFERENCE: number; + /** Instructs OpenSSL to use Cisco's "speshul" version of DTLS_BAD_VER. */ + const SSL_OP_CISCO_ANYCONNECT: number; + /** Instructs OpenSSL to turn on cookie exchange. */ + const SSL_OP_COOKIE_EXCHANGE: number; + /** Instructs OpenSSL to add server-hello extension from an early version of the cryptopro draft. */ + const SSL_OP_CRYPTOPRO_TLSEXT_BUG: number; + /** Instructs OpenSSL to disable a SSL 3.0/TLS 1.0 vulnerability workaround added in OpenSSL 0.9.6d. */ + const SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number; + /** Allows initial connection to servers that do not support RI. */ + const SSL_OP_LEGACY_SERVER_CONNECT: number; + /** Instructs OpenSSL to disable support for SSL/TLS compression. */ + const SSL_OP_NO_COMPRESSION: number; + const SSL_OP_NO_QUERY_MTU: number; + /** Instructs OpenSSL to always start a new session when performing renegotiation. */ + const SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number; + const SSL_OP_NO_SSLv2: number; + const SSL_OP_NO_SSLv3: number; + const SSL_OP_NO_TICKET: number; + const SSL_OP_NO_TLSv1: number; + const SSL_OP_NO_TLSv1_1: number; + const SSL_OP_NO_TLSv1_2: number; + /** Instructs OpenSSL to disable version rollback attack detection. */ + const SSL_OP_TLS_ROLLBACK_BUG: number; + const ENGINE_METHOD_RSA: number; + const ENGINE_METHOD_DSA: number; + const ENGINE_METHOD_DH: number; + const ENGINE_METHOD_RAND: number; + const ENGINE_METHOD_EC: number; + const ENGINE_METHOD_CIPHERS: number; + const ENGINE_METHOD_DIGESTS: number; + const ENGINE_METHOD_PKEY_METHS: number; + const ENGINE_METHOD_PKEY_ASN1_METHS: number; + const ENGINE_METHOD_ALL: number; + const ENGINE_METHOD_NONE: number; + const DH_CHECK_P_NOT_SAFE_PRIME: number; + const DH_CHECK_P_NOT_PRIME: number; + const DH_UNABLE_TO_CHECK_GENERATOR: number; + const DH_NOT_SUITABLE_GENERATOR: number; + const RSA_PKCS1_PADDING: number; + const RSA_SSLV23_PADDING: number; + const RSA_NO_PADDING: number; + const RSA_PKCS1_OAEP_PADDING: number; + const RSA_X931_PADDING: number; + const RSA_PKCS1_PSS_PADDING: number; + /** Sets the salt length for RSA_PKCS1_PSS_PADDING to the digest size when signing or verifying. */ + const RSA_PSS_SALTLEN_DIGEST: number; + /** Sets the salt length for RSA_PKCS1_PSS_PADDING to the maximum permissible value when signing data. */ + const RSA_PSS_SALTLEN_MAX_SIGN: number; + /** Causes the salt length for RSA_PKCS1_PSS_PADDING to be determined automatically when verifying a signature. */ + const RSA_PSS_SALTLEN_AUTO: number; + const POINT_CONVERSION_COMPRESSED: number; + const POINT_CONVERSION_UNCOMPRESSED: number; + const POINT_CONVERSION_HYBRID: number; + /** Specifies the built-in default cipher list used by Node.js (colon-separated values). */ + const defaultCoreCipherList: string; + /** Specifies the active default cipher list used by the current Node.js process (colon-separated values). */ + const defaultCipherList: string; + } + interface HashOptions extends stream.TransformOptions { + /** + * For XOF hash functions such as `shake256`, the + * outputLength option can be used to specify the desired output length in bytes. + */ + outputLength?: number | undefined; + } + /** @deprecated since v10.0.0 */ + const fips: boolean; + /** + * Creates and returns a `Hash` object that can be used to generate hash digests + * using the given `algorithm`. Optional `options` argument controls stream + * behavior. For XOF hash functions such as `'shake256'`, the `outputLength` option + * can be used to specify the desired output length in bytes. + * + * The `algorithm` is dependent on the available algorithms supported by the + * version of OpenSSL on the platform. Examples are `'sha256'`, `'sha512'`, etc. + * On recent releases of OpenSSL, `openssl list -digest-algorithms` will + * display the available digest algorithms. + * + * Example: generating the sha256 sum of a file + * + * ```js + * import { + * createReadStream, + * } from 'node:fs'; + * import { argv } from 'node:process'; + * const { + * createHash, + * } = await import('node:crypto'); + * + * const filename = argv[2]; + * + * const hash = createHash('sha256'); + * + * const input = createReadStream(filename); + * input.on('readable', () => { + * // Only one element is going to be produced by the + * // hash stream. + * const data = input.read(); + * if (data) + * hash.update(data); + * else { + * console.log(`${hash.digest('hex')} ${filename}`); + * } + * }); + * ``` + * @since v0.1.92 + * @param options `stream.transform` options + */ + function createHash(algorithm: string, options?: HashOptions): Hash; + /** + * Creates and returns an `Hmac` object that uses the given `algorithm` and `key`. + * Optional `options` argument controls stream behavior. + * + * The `algorithm` is dependent on the available algorithms supported by the + * version of OpenSSL on the platform. Examples are `'sha256'`, `'sha512'`, etc. + * On recent releases of OpenSSL, `openssl list -digest-algorithms` will + * display the available digest algorithms. + * + * The `key` is the HMAC key used to generate the cryptographic HMAC hash. If it is + * a `KeyObject`, its type must be `secret`. If it is a string, please consider `caveats when using strings as inputs to cryptographic APIs`. If it was + * obtained from a cryptographically secure source of entropy, such as {@link randomBytes} or {@link generateKey}, its length should not + * exceed the block size of `algorithm` (e.g., 512 bits for SHA-256). + * + * Example: generating the sha256 HMAC of a file + * + * ```js + * import { + * createReadStream, + * } from 'node:fs'; + * import { argv } from 'node:process'; + * const { + * createHmac, + * } = await import('node:crypto'); + * + * const filename = argv[2]; + * + * const hmac = createHmac('sha256', 'a secret'); + * + * const input = createReadStream(filename); + * input.on('readable', () => { + * // Only one element is going to be produced by the + * // hash stream. + * const data = input.read(); + * if (data) + * hmac.update(data); + * else { + * console.log(`${hmac.digest('hex')} ${filename}`); + * } + * }); + * ``` + * @since v0.1.94 + * @param options `stream.transform` options + */ + function createHmac(algorithm: string, key: BinaryLike | KeyObject, options?: stream.TransformOptions): Hmac; + // https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings + type BinaryToTextEncoding = "base64" | "base64url" | "hex" | "binary"; + type CharacterEncoding = "utf8" | "utf-8" | "utf16le" | "utf-16le" | "latin1"; + type LegacyCharacterEncoding = "ascii" | "binary" | "ucs2" | "ucs-2"; + type Encoding = BinaryToTextEncoding | CharacterEncoding | LegacyCharacterEncoding; + type ECDHKeyFormat = "compressed" | "uncompressed" | "hybrid"; + /** + * The `Hash` class is a utility for creating hash digests of data. It can be + * used in one of two ways: + * + * * As a `stream` that is both readable and writable, where data is written + * to produce a computed hash digest on the readable side, or + * * Using the `hash.update()` and `hash.digest()` methods to produce the + * computed hash. + * + * The {@link createHash} method is used to create `Hash` instances. `Hash`objects are not to be created directly using the `new` keyword. + * + * Example: Using `Hash` objects as streams: + * + * ```js + * const { + * createHash, + * } = await import('node:crypto'); + * + * const hash = createHash('sha256'); + * + * hash.on('readable', () => { + * // Only one element is going to be produced by the + * // hash stream. + * const data = hash.read(); + * if (data) { + * console.log(data.toString('hex')); + * // Prints: + * // 6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50 + * } + * }); + * + * hash.write('some data to hash'); + * hash.end(); + * ``` + * + * Example: Using `Hash` and piped streams: + * + * ```js + * import { createReadStream } from 'node:fs'; + * import { stdout } from 'node:process'; + * const { createHash } = await import('node:crypto'); + * + * const hash = createHash('sha256'); + * + * const input = createReadStream('test.js'); + * input.pipe(hash).setEncoding('hex').pipe(stdout); + * ``` + * + * Example: Using the `hash.update()` and `hash.digest()` methods: + * + * ```js + * const { + * createHash, + * } = await import('node:crypto'); + * + * const hash = createHash('sha256'); + * + * hash.update('some data to hash'); + * console.log(hash.digest('hex')); + * // Prints: + * // 6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50 + * ``` + * @since v0.1.92 + */ + class Hash extends stream.Transform { + private constructor(); + /** + * Creates a new `Hash` object that contains a deep copy of the internal state + * of the current `Hash` object. + * + * The optional `options` argument controls stream behavior. For XOF hash + * functions such as `'shake256'`, the `outputLength` option can be used to + * specify the desired output length in bytes. + * + * An error is thrown when an attempt is made to copy the `Hash` object after + * its `hash.digest()` method has been called. + * + * ```js + * // Calculate a rolling hash. + * const { + * createHash, + * } = await import('node:crypto'); + * + * const hash = createHash('sha256'); + * + * hash.update('one'); + * console.log(hash.copy().digest('hex')); + * + * hash.update('two'); + * console.log(hash.copy().digest('hex')); + * + * hash.update('three'); + * console.log(hash.copy().digest('hex')); + * + * // Etc. + * ``` + * @since v13.1.0 + * @param options `stream.transform` options + */ + copy(options?: stream.TransformOptions): Hash; + /** + * Updates the hash content with the given `data`, the encoding of which + * is given in `inputEncoding`. + * If `encoding` is not provided, and the `data` is a string, an + * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored. + * + * This can be called many times with new data as it is streamed. + * @since v0.1.92 + * @param inputEncoding The `encoding` of the `data` string. + */ + update(data: BinaryLike): Hash; + update(data: string, inputEncoding: Encoding): Hash; + /** + * Calculates the digest of all of the data passed to be hashed (using the `hash.update()` method). + * If `encoding` is provided a string will be returned; otherwise + * a `Buffer` is returned. + * + * The `Hash` object can not be used again after `hash.digest()` method has been + * called. Multiple calls will cause an error to be thrown. + * @since v0.1.92 + * @param encoding The `encoding` of the return value. + */ + digest(): Buffer; + digest(encoding: BinaryToTextEncoding): string; + } + /** + * The `Hmac` class is a utility for creating cryptographic HMAC digests. It can + * be used in one of two ways: + * + * * As a `stream` that is both readable and writable, where data is written + * to produce a computed HMAC digest on the readable side, or + * * Using the `hmac.update()` and `hmac.digest()` methods to produce the + * computed HMAC digest. + * + * The {@link createHmac} method is used to create `Hmac` instances. `Hmac`objects are not to be created directly using the `new` keyword. + * + * Example: Using `Hmac` objects as streams: + * + * ```js + * const { + * createHmac, + * } = await import('node:crypto'); + * + * const hmac = createHmac('sha256', 'a secret'); + * + * hmac.on('readable', () => { + * // Only one element is going to be produced by the + * // hash stream. + * const data = hmac.read(); + * if (data) { + * console.log(data.toString('hex')); + * // Prints: + * // 7fd04df92f636fd450bc841c9418e5825c17f33ad9c87c518115a45971f7f77e + * } + * }); + * + * hmac.write('some data to hash'); + * hmac.end(); + * ``` + * + * Example: Using `Hmac` and piped streams: + * + * ```js + * import { createReadStream } from 'node:fs'; + * import { stdout } from 'node:process'; + * const { + * createHmac, + * } = await import('node:crypto'); + * + * const hmac = createHmac('sha256', 'a secret'); + * + * const input = createReadStream('test.js'); + * input.pipe(hmac).pipe(stdout); + * ``` + * + * Example: Using the `hmac.update()` and `hmac.digest()` methods: + * + * ```js + * const { + * createHmac, + * } = await import('node:crypto'); + * + * const hmac = createHmac('sha256', 'a secret'); + * + * hmac.update('some data to hash'); + * console.log(hmac.digest('hex')); + * // Prints: + * // 7fd04df92f636fd450bc841c9418e5825c17f33ad9c87c518115a45971f7f77e + * ``` + * @since v0.1.94 + */ + class Hmac extends stream.Transform { + private constructor(); + /** + * Updates the `Hmac` content with the given `data`, the encoding of which + * is given in `inputEncoding`. + * If `encoding` is not provided, and the `data` is a string, an + * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored. + * + * This can be called many times with new data as it is streamed. + * @since v0.1.94 + * @param inputEncoding The `encoding` of the `data` string. + */ + update(data: BinaryLike): Hmac; + update(data: string, inputEncoding: Encoding): Hmac; + /** + * Calculates the HMAC digest of all of the data passed using `hmac.update()`. + * If `encoding` is + * provided a string is returned; otherwise a `Buffer` is returned; + * + * The `Hmac` object can not be used again after `hmac.digest()` has been + * called. Multiple calls to `hmac.digest()` will result in an error being thrown. + * @since v0.1.94 + * @param encoding The `encoding` of the return value. + */ + digest(): Buffer; + digest(encoding: BinaryToTextEncoding): string; + } + type KeyObjectType = "secret" | "public" | "private"; + interface KeyExportOptions { + type: "pkcs1" | "spki" | "pkcs8" | "sec1"; + format: T; + cipher?: string | undefined; + passphrase?: string | Buffer | undefined; + } + interface JwkKeyExportOptions { + format: "jwk"; + } + interface JsonWebKey { + crv?: string | undefined; + d?: string | undefined; + dp?: string | undefined; + dq?: string | undefined; + e?: string | undefined; + k?: string | undefined; + kty?: string | undefined; + n?: string | undefined; + p?: string | undefined; + q?: string | undefined; + qi?: string | undefined; + x?: string | undefined; + y?: string | undefined; + [key: string]: unknown; + } + interface AsymmetricKeyDetails { + /** + * Key size in bits (RSA, DSA). + */ + modulusLength?: number | undefined; + /** + * Public exponent (RSA). + */ + publicExponent?: bigint | undefined; + /** + * Name of the message digest (RSA-PSS). + */ + hashAlgorithm?: string | undefined; + /** + * Name of the message digest used by MGF1 (RSA-PSS). + */ + mgf1HashAlgorithm?: string | undefined; + /** + * Minimal salt length in bytes (RSA-PSS). + */ + saltLength?: number | undefined; + /** + * Size of q in bits (DSA). + */ + divisorLength?: number | undefined; + /** + * Name of the curve (EC). + */ + namedCurve?: string | undefined; + } + /** + * Node.js uses a `KeyObject` class to represent a symmetric or asymmetric key, + * and each kind of key exposes different functions. The {@link createSecretKey}, {@link createPublicKey} and {@link createPrivateKey} methods are used to create `KeyObject`instances. `KeyObject` + * objects are not to be created directly using the `new`keyword. + * + * Most applications should consider using the new `KeyObject` API instead of + * passing keys as strings or `Buffer`s due to improved security features. + * + * `KeyObject` instances can be passed to other threads via `postMessage()`. + * The receiver obtains a cloned `KeyObject`, and the `KeyObject` does not need to + * be listed in the `transferList` argument. + * @since v11.6.0 + */ + class KeyObject { + private constructor(); + /** + * Example: Converting a `CryptoKey` instance to a `KeyObject`: + * + * ```js + * const { KeyObject } = await import('node:crypto'); + * const { subtle } = globalThis.crypto; + * + * const key = await subtle.generateKey({ + * name: 'HMAC', + * hash: 'SHA-256', + * length: 256, + * }, true, ['sign', 'verify']); + * + * const keyObject = KeyObject.from(key); + * console.log(keyObject.symmetricKeySize); + * // Prints: 32 (symmetric key size in bytes) + * ``` + * @since v15.0.0 + */ + static from(key: webcrypto.CryptoKey): KeyObject; + /** + * For asymmetric keys, this property represents the type of the key. Supported key + * types are: + * + * * `'rsa'` (OID 1.2.840.113549.1.1.1) + * * `'rsa-pss'` (OID 1.2.840.113549.1.1.10) + * * `'dsa'` (OID 1.2.840.10040.4.1) + * * `'ec'` (OID 1.2.840.10045.2.1) + * * `'x25519'` (OID 1.3.101.110) + * * `'x448'` (OID 1.3.101.111) + * * `'ed25519'` (OID 1.3.101.112) + * * `'ed448'` (OID 1.3.101.113) + * * `'dh'` (OID 1.2.840.113549.1.3.1) + * + * This property is `undefined` for unrecognized `KeyObject` types and symmetric + * keys. + * @since v11.6.0 + */ + asymmetricKeyType?: KeyType | undefined; + /** + * For asymmetric keys, this property represents the size of the embedded key in + * bytes. This property is `undefined` for symmetric keys. + */ + asymmetricKeySize?: number | undefined; + /** + * This property exists only on asymmetric keys. Depending on the type of the key, + * this object contains information about the key. None of the information obtained + * through this property can be used to uniquely identify a key or to compromise + * the security of the key. + * + * For RSA-PSS keys, if the key material contains a `RSASSA-PSS-params` sequence, + * the `hashAlgorithm`, `mgf1HashAlgorithm`, and `saltLength` properties will be + * set. + * + * Other key details might be exposed via this API using additional attributes. + * @since v15.7.0 + */ + asymmetricKeyDetails?: AsymmetricKeyDetails | undefined; + /** + * For symmetric keys, the following encoding options can be used: + * + * For public keys, the following encoding options can be used: + * + * For private keys, the following encoding options can be used: + * + * The result type depends on the selected encoding format, when PEM the + * result is a string, when DER it will be a buffer containing the data + * encoded as DER, when [JWK](https://tools.ietf.org/html/rfc7517) it will be an object. + * + * When [JWK](https://tools.ietf.org/html/rfc7517) encoding format was selected, all other encoding options are + * ignored. + * + * PKCS#1, SEC1, and PKCS#8 type keys can be encrypted by using a combination of + * the `cipher` and `format` options. The PKCS#8 `type` can be used with any`format` to encrypt any key algorithm (RSA, EC, or DH) by specifying a`cipher`. PKCS#1 and SEC1 can only be + * encrypted by specifying a `cipher`when the PEM `format` is used. For maximum compatibility, use PKCS#8 for + * encrypted private keys. Since PKCS#8 defines its own + * encryption mechanism, PEM-level encryption is not supported when encrypting + * a PKCS#8 key. See [RFC 5208](https://www.rfc-editor.org/rfc/rfc5208.txt) for PKCS#8 encryption and [RFC 1421](https://www.rfc-editor.org/rfc/rfc1421.txt) for + * PKCS#1 and SEC1 encryption. + * @since v11.6.0 + */ + export(options: KeyExportOptions<"pem">): string | Buffer; + export(options?: KeyExportOptions<"der">): Buffer; + export(options?: JwkKeyExportOptions): JsonWebKey; + /** + * For secret keys, this property represents the size of the key in bytes. This + * property is `undefined` for asymmetric keys. + * @since v11.6.0 + */ + symmetricKeySize?: number | undefined; + /** + * Depending on the type of this `KeyObject`, this property is either`'secret'` for secret (symmetric) keys, `'public'` for public (asymmetric) keys + * or `'private'` for private (asymmetric) keys. + * @since v11.6.0 + */ + type: KeyObjectType; + } + type CipherCCMTypes = "aes-128-ccm" | "aes-192-ccm" | "aes-256-ccm" | "chacha20-poly1305"; + type CipherGCMTypes = "aes-128-gcm" | "aes-192-gcm" | "aes-256-gcm"; + type CipherOCBTypes = "aes-128-ocb" | "aes-192-ocb" | "aes-256-ocb"; + type BinaryLike = string | NodeJS.ArrayBufferView; + type CipherKey = BinaryLike | KeyObject; + interface CipherCCMOptions extends stream.TransformOptions { + authTagLength: number; + } + interface CipherGCMOptions extends stream.TransformOptions { + authTagLength?: number | undefined; + } + interface CipherOCBOptions extends stream.TransformOptions { + authTagLength: number; + } + /** + * Creates and returns a `Cipher` object that uses the given `algorithm` and`password`. + * + * The `options` argument controls stream behavior and is optional except when a + * cipher in CCM or OCB mode (e.g. `'aes-128-ccm'`) is used. In that case, the`authTagLength` option is required and specifies the length of the + * authentication tag in bytes, see `CCM mode`. In GCM mode, the `authTagLength`option is not required but can be used to set the length of the authentication + * tag that will be returned by `getAuthTag()` and defaults to 16 bytes. + * For `chacha20-poly1305`, the `authTagLength` option defaults to 16 bytes. + * + * The `algorithm` is dependent on OpenSSL, examples are `'aes192'`, etc. On + * recent OpenSSL releases, `openssl list -cipher-algorithms` will + * display the available cipher algorithms. + * + * The `password` is used to derive the cipher key and initialization vector (IV). + * The value must be either a `'latin1'` encoded string, a `Buffer`, a`TypedArray`, or a `DataView`. + * + * **This function is semantically insecure for all** + * **supported ciphers and fatally flawed for ciphers in counter mode (such as CTR,** + * **GCM, or CCM).** + * + * The implementation of `crypto.createCipher()` derives keys using the OpenSSL + * function [`EVP_BytesToKey`](https://www.openssl.org/docs/man3.0/man3/EVP_BytesToKey.html) with the digest algorithm set to MD5, one + * iteration, and no salt. The lack of salt allows dictionary attacks as the same + * password always creates the same key. The low iteration count and + * non-cryptographically secure hash algorithm allow passwords to be tested very + * rapidly. + * + * In line with OpenSSL's recommendation to use a more modern algorithm instead of [`EVP_BytesToKey`](https://www.openssl.org/docs/man3.0/man3/EVP_BytesToKey.html) it is recommended that + * developers derive a key and IV on + * their own using {@link scrypt} and to use {@link createCipheriv} to create the `Cipher` object. Users should not use ciphers with counter mode + * (e.g. CTR, GCM, or CCM) in `crypto.createCipher()`. A warning is emitted when + * they are used in order to avoid the risk of IV reuse that causes + * vulnerabilities. For the case when IV is reused in GCM, see [Nonce-Disrespecting Adversaries](https://github.com/nonce-disrespect/nonce-disrespect) for details. + * @since v0.1.94 + * @deprecated Since v10.0.0 - Use {@link createCipheriv} instead. + * @param options `stream.transform` options + */ + function createCipher(algorithm: CipherCCMTypes, password: BinaryLike, options: CipherCCMOptions): CipherCCM; + /** @deprecated since v10.0.0 use `createCipheriv()` */ + function createCipher(algorithm: CipherGCMTypes, password: BinaryLike, options?: CipherGCMOptions): CipherGCM; + /** @deprecated since v10.0.0 use `createCipheriv()` */ + function createCipher(algorithm: string, password: BinaryLike, options?: stream.TransformOptions): Cipher; + /** + * Creates and returns a `Cipher` object, with the given `algorithm`, `key` and + * initialization vector (`iv`). + * + * The `options` argument controls stream behavior and is optional except when a + * cipher in CCM or OCB mode (e.g. `'aes-128-ccm'`) is used. In that case, the`authTagLength` option is required and specifies the length of the + * authentication tag in bytes, see `CCM mode`. In GCM mode, the `authTagLength`option is not required but can be used to set the length of the authentication + * tag that will be returned by `getAuthTag()` and defaults to 16 bytes. + * For `chacha20-poly1305`, the `authTagLength` option defaults to 16 bytes. + * + * The `algorithm` is dependent on OpenSSL, examples are `'aes192'`, etc. On + * recent OpenSSL releases, `openssl list -cipher-algorithms` will + * display the available cipher algorithms. + * + * The `key` is the raw key used by the `algorithm` and `iv` is an [initialization vector](https://en.wikipedia.org/wiki/Initialization_vector). Both arguments must be `'utf8'` encoded + * strings,`Buffers`, `TypedArray`, or `DataView`s. The `key` may optionally be + * a `KeyObject` of type `secret`. If the cipher does not need + * an initialization vector, `iv` may be `null`. + * + * When passing strings for `key` or `iv`, please consider `caveats when using strings as inputs to cryptographic APIs`. + * + * Initialization vectors should be unpredictable and unique; ideally, they will be + * cryptographically random. They do not have to be secret: IVs are typically just + * added to ciphertext messages unencrypted. It may sound contradictory that + * something has to be unpredictable and unique, but does not have to be secret; + * remember that an attacker must not be able to predict ahead of time what a + * given IV will be. + * @since v0.1.94 + * @param options `stream.transform` options + */ + function createCipheriv( + algorithm: CipherCCMTypes, + key: CipherKey, + iv: BinaryLike, + options: CipherCCMOptions, + ): CipherCCM; + function createCipheriv( + algorithm: CipherOCBTypes, + key: CipherKey, + iv: BinaryLike, + options: CipherOCBOptions, + ): CipherOCB; + function createCipheriv( + algorithm: CipherGCMTypes, + key: CipherKey, + iv: BinaryLike, + options?: CipherGCMOptions, + ): CipherGCM; + function createCipheriv( + algorithm: string, + key: CipherKey, + iv: BinaryLike | null, + options?: stream.TransformOptions, + ): Cipher; + /** + * Instances of the `Cipher` class are used to encrypt data. The class can be + * used in one of two ways: + * + * * As a `stream` that is both readable and writable, where plain unencrypted + * data is written to produce encrypted data on the readable side, or + * * Using the `cipher.update()` and `cipher.final()` methods to produce + * the encrypted data. + * + * The {@link createCipher} or {@link createCipheriv} methods are + * used to create `Cipher` instances. `Cipher` objects are not to be created + * directly using the `new` keyword. + * + * Example: Using `Cipher` objects as streams: + * + * ```js + * const { + * scrypt, + * randomFill, + * createCipheriv, + * } = await import('node:crypto'); + * + * const algorithm = 'aes-192-cbc'; + * const password = 'Password used to generate key'; + * + * // First, we'll generate the key. The key length is dependent on the algorithm. + * // In this case for aes192, it is 24 bytes (192 bits). + * scrypt(password, 'salt', 24, (err, key) => { + * if (err) throw err; + * // Then, we'll generate a random initialization vector + * randomFill(new Uint8Array(16), (err, iv) => { + * if (err) throw err; + * + * // Once we have the key and iv, we can create and use the cipher... + * const cipher = createCipheriv(algorithm, key, iv); + * + * let encrypted = ''; + * cipher.setEncoding('hex'); + * + * cipher.on('data', (chunk) => encrypted += chunk); + * cipher.on('end', () => console.log(encrypted)); + * + * cipher.write('some clear text data'); + * cipher.end(); + * }); + * }); + * ``` + * + * Example: Using `Cipher` and piped streams: + * + * ```js + * import { + * createReadStream, + * createWriteStream, + * } from 'node:fs'; + * + * import { + * pipeline, + * } from 'node:stream'; + * + * const { + * scrypt, + * randomFill, + * createCipheriv, + * } = await import('node:crypto'); + * + * const algorithm = 'aes-192-cbc'; + * const password = 'Password used to generate key'; + * + * // First, we'll generate the key. The key length is dependent on the algorithm. + * // In this case for aes192, it is 24 bytes (192 bits). + * scrypt(password, 'salt', 24, (err, key) => { + * if (err) throw err; + * // Then, we'll generate a random initialization vector + * randomFill(new Uint8Array(16), (err, iv) => { + * if (err) throw err; + * + * const cipher = createCipheriv(algorithm, key, iv); + * + * const input = createReadStream('test.js'); + * const output = createWriteStream('test.enc'); + * + * pipeline(input, cipher, output, (err) => { + * if (err) throw err; + * }); + * }); + * }); + * ``` + * + * Example: Using the `cipher.update()` and `cipher.final()` methods: + * + * ```js + * const { + * scrypt, + * randomFill, + * createCipheriv, + * } = await import('node:crypto'); + * + * const algorithm = 'aes-192-cbc'; + * const password = 'Password used to generate key'; + * + * // First, we'll generate the key. The key length is dependent on the algorithm. + * // In this case for aes192, it is 24 bytes (192 bits). + * scrypt(password, 'salt', 24, (err, key) => { + * if (err) throw err; + * // Then, we'll generate a random initialization vector + * randomFill(new Uint8Array(16), (err, iv) => { + * if (err) throw err; + * + * const cipher = createCipheriv(algorithm, key, iv); + * + * let encrypted = cipher.update('some clear text data', 'utf8', 'hex'); + * encrypted += cipher.final('hex'); + * console.log(encrypted); + * }); + * }); + * ``` + * @since v0.1.94 + */ + class Cipher extends stream.Transform { + private constructor(); + /** + * Updates the cipher with `data`. If the `inputEncoding` argument is given, + * the `data`argument is a string using the specified encoding. If the `inputEncoding`argument is not given, `data` must be a `Buffer`, `TypedArray`, or`DataView`. If `data` is a `Buffer`, + * `TypedArray`, or `DataView`, then`inputEncoding` is ignored. + * + * The `outputEncoding` specifies the output format of the enciphered + * data. If the `outputEncoding`is specified, a string using the specified encoding is returned. If no`outputEncoding` is provided, a `Buffer` is returned. + * + * The `cipher.update()` method can be called multiple times with new data until `cipher.final()` is called. Calling `cipher.update()` after `cipher.final()` will result in an error being + * thrown. + * @since v0.1.94 + * @param inputEncoding The `encoding` of the data. + * @param outputEncoding The `encoding` of the return value. + */ + update(data: BinaryLike): Buffer; + update(data: string, inputEncoding: Encoding): Buffer; + update(data: NodeJS.ArrayBufferView, inputEncoding: undefined, outputEncoding: Encoding): string; + update(data: string, inputEncoding: Encoding | undefined, outputEncoding: Encoding): string; + /** + * Once the `cipher.final()` method has been called, the `Cipher` object can no + * longer be used to encrypt data. Attempts to call `cipher.final()` more than + * once will result in an error being thrown. + * @since v0.1.94 + * @param outputEncoding The `encoding` of the return value. + * @return Any remaining enciphered contents. If `outputEncoding` is specified, a string is returned. If an `outputEncoding` is not provided, a {@link Buffer} is returned. + */ + final(): Buffer; + final(outputEncoding: BufferEncoding): string; + /** + * When using block encryption algorithms, the `Cipher` class will automatically + * add padding to the input data to the appropriate block size. To disable the + * default padding call `cipher.setAutoPadding(false)`. + * + * When `autoPadding` is `false`, the length of the entire input data must be a + * multiple of the cipher's block size or `cipher.final()` will throw an error. + * Disabling automatic padding is useful for non-standard padding, for instance + * using `0x0` instead of PKCS padding. + * + * The `cipher.setAutoPadding()` method must be called before `cipher.final()`. + * @since v0.7.1 + * @param [autoPadding=true] + * @return for method chaining. + */ + setAutoPadding(autoPadding?: boolean): this; + } + interface CipherCCM extends Cipher { + setAAD( + buffer: NodeJS.ArrayBufferView, + options: { + plaintextLength: number; + }, + ): this; + getAuthTag(): Buffer; + } + interface CipherGCM extends Cipher { + setAAD( + buffer: NodeJS.ArrayBufferView, + options?: { + plaintextLength: number; + }, + ): this; + getAuthTag(): Buffer; + } + interface CipherOCB extends Cipher { + setAAD( + buffer: NodeJS.ArrayBufferView, + options?: { + plaintextLength: number; + }, + ): this; + getAuthTag(): Buffer; + } + /** + * Creates and returns a `Decipher` object that uses the given `algorithm` and`password` (key). + * + * The `options` argument controls stream behavior and is optional except when a + * cipher in CCM or OCB mode (e.g. `'aes-128-ccm'`) is used. In that case, the`authTagLength` option is required and specifies the length of the + * authentication tag in bytes, see `CCM mode`. + * For `chacha20-poly1305`, the `authTagLength` option defaults to 16 bytes. + * + * **This function is semantically insecure for all** + * **supported ciphers and fatally flawed for ciphers in counter mode (such as CTR,** + * **GCM, or CCM).** + * + * The implementation of `crypto.createDecipher()` derives keys using the OpenSSL + * function [`EVP_BytesToKey`](https://www.openssl.org/docs/man3.0/man3/EVP_BytesToKey.html) with the digest algorithm set to MD5, one + * iteration, and no salt. The lack of salt allows dictionary attacks as the same + * password always creates the same key. The low iteration count and + * non-cryptographically secure hash algorithm allow passwords to be tested very + * rapidly. + * + * In line with OpenSSL's recommendation to use a more modern algorithm instead of [`EVP_BytesToKey`](https://www.openssl.org/docs/man3.0/man3/EVP_BytesToKey.html) it is recommended that + * developers derive a key and IV on + * their own using {@link scrypt} and to use {@link createDecipheriv} to create the `Decipher` object. + * @since v0.1.94 + * @deprecated Since v10.0.0 - Use {@link createDecipheriv} instead. + * @param options `stream.transform` options + */ + function createDecipher(algorithm: CipherCCMTypes, password: BinaryLike, options: CipherCCMOptions): DecipherCCM; + /** @deprecated since v10.0.0 use `createDecipheriv()` */ + function createDecipher(algorithm: CipherGCMTypes, password: BinaryLike, options?: CipherGCMOptions): DecipherGCM; + /** @deprecated since v10.0.0 use `createDecipheriv()` */ + function createDecipher(algorithm: string, password: BinaryLike, options?: stream.TransformOptions): Decipher; + /** + * Creates and returns a `Decipher` object that uses the given `algorithm`, `key`and initialization vector (`iv`). + * + * The `options` argument controls stream behavior and is optional except when a + * cipher in CCM or OCB mode (e.g. `'aes-128-ccm'`) is used. In that case, the`authTagLength` option is required and specifies the length of the + * authentication tag in bytes, see `CCM mode`. In GCM mode, the `authTagLength`option is not required but can be used to restrict accepted authentication tags + * to those with the specified length. + * For `chacha20-poly1305`, the `authTagLength` option defaults to 16 bytes. + * + * The `algorithm` is dependent on OpenSSL, examples are `'aes192'`, etc. On + * recent OpenSSL releases, `openssl list -cipher-algorithms` will + * display the available cipher algorithms. + * + * The `key` is the raw key used by the `algorithm` and `iv` is an [initialization vector](https://en.wikipedia.org/wiki/Initialization_vector). Both arguments must be `'utf8'` encoded + * strings,`Buffers`, `TypedArray`, or `DataView`s. The `key` may optionally be + * a `KeyObject` of type `secret`. If the cipher does not need + * an initialization vector, `iv` may be `null`. + * + * When passing strings for `key` or `iv`, please consider `caveats when using strings as inputs to cryptographic APIs`. + * + * Initialization vectors should be unpredictable and unique; ideally, they will be + * cryptographically random. They do not have to be secret: IVs are typically just + * added to ciphertext messages unencrypted. It may sound contradictory that + * something has to be unpredictable and unique, but does not have to be secret; + * remember that an attacker must not be able to predict ahead of time what a given + * IV will be. + * @since v0.1.94 + * @param options `stream.transform` options + */ + function createDecipheriv( + algorithm: CipherCCMTypes, + key: CipherKey, + iv: BinaryLike, + options: CipherCCMOptions, + ): DecipherCCM; + function createDecipheriv( + algorithm: CipherOCBTypes, + key: CipherKey, + iv: BinaryLike, + options: CipherOCBOptions, + ): DecipherOCB; + function createDecipheriv( + algorithm: CipherGCMTypes, + key: CipherKey, + iv: BinaryLike, + options?: CipherGCMOptions, + ): DecipherGCM; + function createDecipheriv( + algorithm: string, + key: CipherKey, + iv: BinaryLike | null, + options?: stream.TransformOptions, + ): Decipher; + /** + * Instances of the `Decipher` class are used to decrypt data. The class can be + * used in one of two ways: + * + * * As a `stream` that is both readable and writable, where plain encrypted + * data is written to produce unencrypted data on the readable side, or + * * Using the `decipher.update()` and `decipher.final()` methods to + * produce the unencrypted data. + * + * The {@link createDecipher} or {@link createDecipheriv} methods are + * used to create `Decipher` instances. `Decipher` objects are not to be created + * directly using the `new` keyword. + * + * Example: Using `Decipher` objects as streams: + * + * ```js + * import { Buffer } from 'node:buffer'; + * const { + * scryptSync, + * createDecipheriv, + * } = await import('node:crypto'); + * + * const algorithm = 'aes-192-cbc'; + * const password = 'Password used to generate key'; + * // Key length is dependent on the algorithm. In this case for aes192, it is + * // 24 bytes (192 bits). + * // Use the async `crypto.scrypt()` instead. + * const key = scryptSync(password, 'salt', 24); + * // The IV is usually passed along with the ciphertext. + * const iv = Buffer.alloc(16, 0); // Initialization vector. + * + * const decipher = createDecipheriv(algorithm, key, iv); + * + * let decrypted = ''; + * decipher.on('readable', () => { + * let chunk; + * while (null !== (chunk = decipher.read())) { + * decrypted += chunk.toString('utf8'); + * } + * }); + * decipher.on('end', () => { + * console.log(decrypted); + * // Prints: some clear text data + * }); + * + * // Encrypted with same algorithm, key and iv. + * const encrypted = + * 'e5f79c5915c02171eec6b212d5520d44480993d7d622a7c4c2da32f6efda0ffa'; + * decipher.write(encrypted, 'hex'); + * decipher.end(); + * ``` + * + * Example: Using `Decipher` and piped streams: + * + * ```js + * import { + * createReadStream, + * createWriteStream, + * } from 'node:fs'; + * import { Buffer } from 'node:buffer'; + * const { + * scryptSync, + * createDecipheriv, + * } = await import('node:crypto'); + * + * const algorithm = 'aes-192-cbc'; + * const password = 'Password used to generate key'; + * // Use the async `crypto.scrypt()` instead. + * const key = scryptSync(password, 'salt', 24); + * // The IV is usually passed along with the ciphertext. + * const iv = Buffer.alloc(16, 0); // Initialization vector. + * + * const decipher = createDecipheriv(algorithm, key, iv); + * + * const input = createReadStream('test.enc'); + * const output = createWriteStream('test.js'); + * + * input.pipe(decipher).pipe(output); + * ``` + * + * Example: Using the `decipher.update()` and `decipher.final()` methods: + * + * ```js + * import { Buffer } from 'node:buffer'; + * const { + * scryptSync, + * createDecipheriv, + * } = await import('node:crypto'); + * + * const algorithm = 'aes-192-cbc'; + * const password = 'Password used to generate key'; + * // Use the async `crypto.scrypt()` instead. + * const key = scryptSync(password, 'salt', 24); + * // The IV is usually passed along with the ciphertext. + * const iv = Buffer.alloc(16, 0); // Initialization vector. + * + * const decipher = createDecipheriv(algorithm, key, iv); + * + * // Encrypted using same algorithm, key and iv. + * const encrypted = + * 'e5f79c5915c02171eec6b212d5520d44480993d7d622a7c4c2da32f6efda0ffa'; + * let decrypted = decipher.update(encrypted, 'hex', 'utf8'); + * decrypted += decipher.final('utf8'); + * console.log(decrypted); + * // Prints: some clear text data + * ``` + * @since v0.1.94 + */ + class Decipher extends stream.Transform { + private constructor(); + /** + * Updates the decipher with `data`. If the `inputEncoding` argument is given, + * the `data`argument is a string using the specified encoding. If the `inputEncoding`argument is not given, `data` must be a `Buffer`. If `data` is a `Buffer` then `inputEncoding` is + * ignored. + * + * The `outputEncoding` specifies the output format of the enciphered + * data. If the `outputEncoding`is specified, a string using the specified encoding is returned. If no`outputEncoding` is provided, a `Buffer` is returned. + * + * The `decipher.update()` method can be called multiple times with new data until `decipher.final()` is called. Calling `decipher.update()` after `decipher.final()` will result in an error + * being thrown. + * @since v0.1.94 + * @param inputEncoding The `encoding` of the `data` string. + * @param outputEncoding The `encoding` of the return value. + */ + update(data: NodeJS.ArrayBufferView): Buffer; + update(data: string, inputEncoding: Encoding): Buffer; + update(data: NodeJS.ArrayBufferView, inputEncoding: undefined, outputEncoding: Encoding): string; + update(data: string, inputEncoding: Encoding | undefined, outputEncoding: Encoding): string; + /** + * Once the `decipher.final()` method has been called, the `Decipher` object can + * no longer be used to decrypt data. Attempts to call `decipher.final()` more + * than once will result in an error being thrown. + * @since v0.1.94 + * @param outputEncoding The `encoding` of the return value. + * @return Any remaining deciphered contents. If `outputEncoding` is specified, a string is returned. If an `outputEncoding` is not provided, a {@link Buffer} is returned. + */ + final(): Buffer; + final(outputEncoding: BufferEncoding): string; + /** + * When data has been encrypted without standard block padding, calling`decipher.setAutoPadding(false)` will disable automatic padding to prevent `decipher.final()` from checking for and + * removing padding. + * + * Turning auto padding off will only work if the input data's length is a + * multiple of the ciphers block size. + * + * The `decipher.setAutoPadding()` method must be called before `decipher.final()`. + * @since v0.7.1 + * @param [autoPadding=true] + * @return for method chaining. + */ + setAutoPadding(auto_padding?: boolean): this; + } + interface DecipherCCM extends Decipher { + setAuthTag(buffer: NodeJS.ArrayBufferView): this; + setAAD( + buffer: NodeJS.ArrayBufferView, + options: { + plaintextLength: number; + }, + ): this; + } + interface DecipherGCM extends Decipher { + setAuthTag(buffer: NodeJS.ArrayBufferView): this; + setAAD( + buffer: NodeJS.ArrayBufferView, + options?: { + plaintextLength: number; + }, + ): this; + } + interface DecipherOCB extends Decipher { + setAuthTag(buffer: NodeJS.ArrayBufferView): this; + setAAD( + buffer: NodeJS.ArrayBufferView, + options?: { + plaintextLength: number; + }, + ): this; + } + interface PrivateKeyInput { + key: string | Buffer; + format?: KeyFormat | undefined; + type?: "pkcs1" | "pkcs8" | "sec1" | undefined; + passphrase?: string | Buffer | undefined; + encoding?: string | undefined; + } + interface PublicKeyInput { + key: string | Buffer; + format?: KeyFormat | undefined; + type?: "pkcs1" | "spki" | undefined; + encoding?: string | undefined; + } + /** + * Asynchronously generates a new random secret key of the given `length`. The`type` will determine which validations will be performed on the `length`. + * + * ```js + * const { + * generateKey, + * } = await import('node:crypto'); + * + * generateKey('hmac', { length: 512 }, (err, key) => { + * if (err) throw err; + * console.log(key.export().toString('hex')); // 46e..........620 + * }); + * ``` + * + * The size of a generated HMAC key should not exceed the block size of the + * underlying hash function. See {@link createHmac} for more information. + * @since v15.0.0 + * @param type The intended use of the generated secret key. Currently accepted values are `'hmac'` and `'aes'`. + */ + function generateKey( + type: "hmac" | "aes", + options: { + length: number; + }, + callback: (err: Error | null, key: KeyObject) => void, + ): void; + /** + * Synchronously generates a new random secret key of the given `length`. The`type` will determine which validations will be performed on the `length`. + * + * ```js + * const { + * generateKeySync, + * } = await import('node:crypto'); + * + * const key = generateKeySync('hmac', { length: 512 }); + * console.log(key.export().toString('hex')); // e89..........41e + * ``` + * + * The size of a generated HMAC key should not exceed the block size of the + * underlying hash function. See {@link createHmac} for more information. + * @since v15.0.0 + * @param type The intended use of the generated secret key. Currently accepted values are `'hmac'` and `'aes'`. + */ + function generateKeySync( + type: "hmac" | "aes", + options: { + length: number; + }, + ): KeyObject; + interface JsonWebKeyInput { + key: JsonWebKey; + format: "jwk"; + } + /** + * Creates and returns a new key object containing a private key. If `key` is a + * string or `Buffer`, `format` is assumed to be `'pem'`; otherwise, `key`must be an object with the properties described above. + * + * If the private key is encrypted, a `passphrase` must be specified. The length + * of the passphrase is limited to 1024 bytes. + * @since v11.6.0 + */ + function createPrivateKey(key: PrivateKeyInput | string | Buffer | JsonWebKeyInput): KeyObject; + /** + * Creates and returns a new key object containing a public key. If `key` is a + * string or `Buffer`, `format` is assumed to be `'pem'`; if `key` is a `KeyObject`with type `'private'`, the public key is derived from the given private key; + * otherwise, `key` must be an object with the properties described above. + * + * If the format is `'pem'`, the `'key'` may also be an X.509 certificate. + * + * Because public keys can be derived from private keys, a private key may be + * passed instead of a public key. In that case, this function behaves as if {@link createPrivateKey} had been called, except that the type of the + * returned `KeyObject` will be `'public'` and that the private key cannot be + * extracted from the returned `KeyObject`. Similarly, if a `KeyObject` with type`'private'` is given, a new `KeyObject` with type `'public'` will be returned + * and it will be impossible to extract the private key from the returned object. + * @since v11.6.0 + */ + function createPublicKey(key: PublicKeyInput | string | Buffer | KeyObject | JsonWebKeyInput): KeyObject; + /** + * Creates and returns a new key object containing a secret key for symmetric + * encryption or `Hmac`. + * @since v11.6.0 + * @param encoding The string encoding when `key` is a string. + */ + function createSecretKey(key: NodeJS.ArrayBufferView): KeyObject; + function createSecretKey(key: string, encoding: BufferEncoding): KeyObject; + /** + * Creates and returns a `Sign` object that uses the given `algorithm`. Use {@link getHashes} to obtain the names of the available digest algorithms. + * Optional `options` argument controls the `stream.Writable` behavior. + * + * In some cases, a `Sign` instance can be created using the name of a signature + * algorithm, such as `'RSA-SHA256'`, instead of a digest algorithm. This will use + * the corresponding digest algorithm. This does not work for all signature + * algorithms, such as `'ecdsa-with-SHA256'`, so it is best to always use digest + * algorithm names. + * @since v0.1.92 + * @param options `stream.Writable` options + */ + function createSign(algorithm: string, options?: stream.WritableOptions): Sign; + type DSAEncoding = "der" | "ieee-p1363"; + interface SigningOptions { + /** + * @see crypto.constants.RSA_PKCS1_PADDING + */ + padding?: number | undefined; + saltLength?: number | undefined; + dsaEncoding?: DSAEncoding | undefined; + } + interface SignPrivateKeyInput extends PrivateKeyInput, SigningOptions {} + interface SignKeyObjectInput extends SigningOptions { + key: KeyObject; + } + interface VerifyPublicKeyInput extends PublicKeyInput, SigningOptions {} + interface VerifyKeyObjectInput extends SigningOptions { + key: KeyObject; + } + interface VerifyJsonWebKeyInput extends JsonWebKeyInput, SigningOptions {} + type KeyLike = string | Buffer | KeyObject; + /** + * The `Sign` class is a utility for generating signatures. It can be used in one + * of two ways: + * + * * As a writable `stream`, where data to be signed is written and the `sign.sign()` method is used to generate and return the signature, or + * * Using the `sign.update()` and `sign.sign()` methods to produce the + * signature. + * + * The {@link createSign} method is used to create `Sign` instances. The + * argument is the string name of the hash function to use. `Sign` objects are not + * to be created directly using the `new` keyword. + * + * Example: Using `Sign` and `Verify` objects as streams: + * + * ```js + * const { + * generateKeyPairSync, + * createSign, + * createVerify, + * } = await import('node:crypto'); + * + * const { privateKey, publicKey } = generateKeyPairSync('ec', { + * namedCurve: 'sect239k1', + * }); + * + * const sign = createSign('SHA256'); + * sign.write('some data to sign'); + * sign.end(); + * const signature = sign.sign(privateKey, 'hex'); + * + * const verify = createVerify('SHA256'); + * verify.write('some data to sign'); + * verify.end(); + * console.log(verify.verify(publicKey, signature, 'hex')); + * // Prints: true + * ``` + * + * Example: Using the `sign.update()` and `verify.update()` methods: + * + * ```js + * const { + * generateKeyPairSync, + * createSign, + * createVerify, + * } = await import('node:crypto'); + * + * const { privateKey, publicKey } = generateKeyPairSync('rsa', { + * modulusLength: 2048, + * }); + * + * const sign = createSign('SHA256'); + * sign.update('some data to sign'); + * sign.end(); + * const signature = sign.sign(privateKey); + * + * const verify = createVerify('SHA256'); + * verify.update('some data to sign'); + * verify.end(); + * console.log(verify.verify(publicKey, signature)); + * // Prints: true + * ``` + * @since v0.1.92 + */ + class Sign extends stream.Writable { + private constructor(); + /** + * Updates the `Sign` content with the given `data`, the encoding of which + * is given in `inputEncoding`. + * If `encoding` is not provided, and the `data` is a string, an + * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored. + * + * This can be called many times with new data as it is streamed. + * @since v0.1.92 + * @param inputEncoding The `encoding` of the `data` string. + */ + update(data: BinaryLike): this; + update(data: string, inputEncoding: Encoding): this; + /** + * Calculates the signature on all the data passed through using either `sign.update()` or `sign.write()`. + * + * If `privateKey` is not a `KeyObject`, this function behaves as if`privateKey` had been passed to {@link createPrivateKey}. If it is an + * object, the following additional properties can be passed: + * + * If `outputEncoding` is provided a string is returned; otherwise a `Buffer` is returned. + * + * The `Sign` object can not be again used after `sign.sign()` method has been + * called. Multiple calls to `sign.sign()` will result in an error being thrown. + * @since v0.1.92 + */ + sign(privateKey: KeyLike | SignKeyObjectInput | SignPrivateKeyInput): Buffer; + sign( + privateKey: KeyLike | SignKeyObjectInput | SignPrivateKeyInput, + outputFormat: BinaryToTextEncoding, + ): string; + } + /** + * Creates and returns a `Verify` object that uses the given algorithm. + * Use {@link getHashes} to obtain an array of names of the available + * signing algorithms. Optional `options` argument controls the`stream.Writable` behavior. + * + * In some cases, a `Verify` instance can be created using the name of a signature + * algorithm, such as `'RSA-SHA256'`, instead of a digest algorithm. This will use + * the corresponding digest algorithm. This does not work for all signature + * algorithms, such as `'ecdsa-with-SHA256'`, so it is best to always use digest + * algorithm names. + * @since v0.1.92 + * @param options `stream.Writable` options + */ + function createVerify(algorithm: string, options?: stream.WritableOptions): Verify; + /** + * The `Verify` class is a utility for verifying signatures. It can be used in one + * of two ways: + * + * * As a writable `stream` where written data is used to validate against the + * supplied signature, or + * * Using the `verify.update()` and `verify.verify()` methods to verify + * the signature. + * + * The {@link createVerify} method is used to create `Verify` instances.`Verify` objects are not to be created directly using the `new` keyword. + * + * See `Sign` for examples. + * @since v0.1.92 + */ + class Verify extends stream.Writable { + private constructor(); + /** + * Updates the `Verify` content with the given `data`, the encoding of which + * is given in `inputEncoding`. + * If `inputEncoding` is not provided, and the `data` is a string, an + * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored. + * + * This can be called many times with new data as it is streamed. + * @since v0.1.92 + * @param inputEncoding The `encoding` of the `data` string. + */ + update(data: BinaryLike): Verify; + update(data: string, inputEncoding: Encoding): Verify; + /** + * Verifies the provided data using the given `object` and `signature`. + * + * If `object` is not a `KeyObject`, this function behaves as if`object` had been passed to {@link createPublicKey}. If it is an + * object, the following additional properties can be passed: + * + * The `signature` argument is the previously calculated signature for the data, in + * the `signatureEncoding`. + * If a `signatureEncoding` is specified, the `signature` is expected to be a + * string; otherwise `signature` is expected to be a `Buffer`,`TypedArray`, or `DataView`. + * + * The `verify` object can not be used again after `verify.verify()` has been + * called. Multiple calls to `verify.verify()` will result in an error being + * thrown. + * + * Because public keys can be derived from private keys, a private key may + * be passed instead of a public key. + * @since v0.1.92 + */ + verify( + object: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput | VerifyJsonWebKeyInput, + signature: NodeJS.ArrayBufferView, + ): boolean; + verify( + object: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput | VerifyJsonWebKeyInput, + signature: string, + signature_format?: BinaryToTextEncoding, + ): boolean; + } + /** + * Creates a `DiffieHellman` key exchange object using the supplied `prime` and an + * optional specific `generator`. + * + * The `generator` argument can be a number, string, or `Buffer`. If`generator` is not specified, the value `2` is used. + * + * If `primeEncoding` is specified, `prime` is expected to be a string; otherwise + * a `Buffer`, `TypedArray`, or `DataView` is expected. + * + * If `generatorEncoding` is specified, `generator` is expected to be a string; + * otherwise a number, `Buffer`, `TypedArray`, or `DataView` is expected. + * @since v0.11.12 + * @param primeEncoding The `encoding` of the `prime` string. + * @param [generator=2] + * @param generatorEncoding The `encoding` of the `generator` string. + */ + function createDiffieHellman(primeLength: number, generator?: number): DiffieHellman; + function createDiffieHellman( + prime: ArrayBuffer | NodeJS.ArrayBufferView, + generator?: number | ArrayBuffer | NodeJS.ArrayBufferView, + ): DiffieHellman; + function createDiffieHellman( + prime: ArrayBuffer | NodeJS.ArrayBufferView, + generator: string, + generatorEncoding: BinaryToTextEncoding, + ): DiffieHellman; + function createDiffieHellman( + prime: string, + primeEncoding: BinaryToTextEncoding, + generator?: number | ArrayBuffer | NodeJS.ArrayBufferView, + ): DiffieHellman; + function createDiffieHellman( + prime: string, + primeEncoding: BinaryToTextEncoding, + generator: string, + generatorEncoding: BinaryToTextEncoding, + ): DiffieHellman; + /** + * The `DiffieHellman` class is a utility for creating Diffie-Hellman key + * exchanges. + * + * Instances of the `DiffieHellman` class can be created using the {@link createDiffieHellman} function. + * + * ```js + * import assert from 'node:assert'; + * + * const { + * createDiffieHellman, + * } = await import('node:crypto'); + * + * // Generate Alice's keys... + * const alice = createDiffieHellman(2048); + * const aliceKey = alice.generateKeys(); + * + * // Generate Bob's keys... + * const bob = createDiffieHellman(alice.getPrime(), alice.getGenerator()); + * const bobKey = bob.generateKeys(); + * + * // Exchange and generate the secret... + * const aliceSecret = alice.computeSecret(bobKey); + * const bobSecret = bob.computeSecret(aliceKey); + * + * // OK + * assert.strictEqual(aliceSecret.toString('hex'), bobSecret.toString('hex')); + * ``` + * @since v0.5.0 + */ + class DiffieHellman { + private constructor(); + /** + * Generates private and public Diffie-Hellman key values unless they have been + * generated or computed already, and returns + * the public key in the specified `encoding`. This key should be + * transferred to the other party. + * If `encoding` is provided a string is returned; otherwise a `Buffer` is returned. + * + * This function is a thin wrapper around [`DH_generate_key()`](https://www.openssl.org/docs/man3.0/man3/DH_generate_key.html). In particular, + * once a private key has been generated or set, calling this function only updates + * the public key but does not generate a new private key. + * @since v0.5.0 + * @param encoding The `encoding` of the return value. + */ + generateKeys(): Buffer; + generateKeys(encoding: BinaryToTextEncoding): string; + /** + * Computes the shared secret using `otherPublicKey` as the other + * party's public key and returns the computed shared secret. The supplied + * key is interpreted using the specified `inputEncoding`, and secret is + * encoded using specified `outputEncoding`. + * If the `inputEncoding` is not + * provided, `otherPublicKey` is expected to be a `Buffer`,`TypedArray`, or `DataView`. + * + * If `outputEncoding` is given a string is returned; otherwise, a `Buffer` is returned. + * @since v0.5.0 + * @param inputEncoding The `encoding` of an `otherPublicKey` string. + * @param outputEncoding The `encoding` of the return value. + */ + computeSecret(otherPublicKey: NodeJS.ArrayBufferView, inputEncoding?: null, outputEncoding?: null): Buffer; + computeSecret(otherPublicKey: string, inputEncoding: BinaryToTextEncoding, outputEncoding?: null): Buffer; + computeSecret( + otherPublicKey: NodeJS.ArrayBufferView, + inputEncoding: null, + outputEncoding: BinaryToTextEncoding, + ): string; + computeSecret( + otherPublicKey: string, + inputEncoding: BinaryToTextEncoding, + outputEncoding: BinaryToTextEncoding, + ): string; + /** + * Returns the Diffie-Hellman prime in the specified `encoding`. + * If `encoding` is provided a string is + * returned; otherwise a `Buffer` is returned. + * @since v0.5.0 + * @param encoding The `encoding` of the return value. + */ + getPrime(): Buffer; + getPrime(encoding: BinaryToTextEncoding): string; + /** + * Returns the Diffie-Hellman generator in the specified `encoding`. + * If `encoding` is provided a string is + * returned; otherwise a `Buffer` is returned. + * @since v0.5.0 + * @param encoding The `encoding` of the return value. + */ + getGenerator(): Buffer; + getGenerator(encoding: BinaryToTextEncoding): string; + /** + * Returns the Diffie-Hellman public key in the specified `encoding`. + * If `encoding` is provided a + * string is returned; otherwise a `Buffer` is returned. + * @since v0.5.0 + * @param encoding The `encoding` of the return value. + */ + getPublicKey(): Buffer; + getPublicKey(encoding: BinaryToTextEncoding): string; + /** + * Returns the Diffie-Hellman private key in the specified `encoding`. + * If `encoding` is provided a + * string is returned; otherwise a `Buffer` is returned. + * @since v0.5.0 + * @param encoding The `encoding` of the return value. + */ + getPrivateKey(): Buffer; + getPrivateKey(encoding: BinaryToTextEncoding): string; + /** + * Sets the Diffie-Hellman public key. If the `encoding` argument is provided,`publicKey` is expected + * to be a string. If no `encoding` is provided, `publicKey` is expected + * to be a `Buffer`, `TypedArray`, or `DataView`. + * @since v0.5.0 + * @param encoding The `encoding` of the `publicKey` string. + */ + setPublicKey(publicKey: NodeJS.ArrayBufferView): void; + setPublicKey(publicKey: string, encoding: BufferEncoding): void; + /** + * Sets the Diffie-Hellman private key. If the `encoding` argument is provided,`privateKey` is expected + * to be a string. If no `encoding` is provided, `privateKey` is expected + * to be a `Buffer`, `TypedArray`, or `DataView`. + * + * This function does not automatically compute the associated public key. Either `diffieHellman.setPublicKey()` or `diffieHellman.generateKeys()` can be + * used to manually provide the public key or to automatically derive it. + * @since v0.5.0 + * @param encoding The `encoding` of the `privateKey` string. + */ + setPrivateKey(privateKey: NodeJS.ArrayBufferView): void; + setPrivateKey(privateKey: string, encoding: BufferEncoding): void; + /** + * A bit field containing any warnings and/or errors resulting from a check + * performed during initialization of the `DiffieHellman` object. + * + * The following values are valid for this property (as defined in `node:constants` module): + * + * * `DH_CHECK_P_NOT_SAFE_PRIME` + * * `DH_CHECK_P_NOT_PRIME` + * * `DH_UNABLE_TO_CHECK_GENERATOR` + * * `DH_NOT_SUITABLE_GENERATOR` + * @since v0.11.12 + */ + verifyError: number; + } + /** + * The `DiffieHellmanGroup` class takes a well-known modp group as its argument. + * It works the same as `DiffieHellman`, except that it does not allow changing its keys after creation. + * In other words, it does not implement `setPublicKey()` or `setPrivateKey()` methods. + * + * ```js + * const { createDiffieHellmanGroup } = await import('node:crypto'); + * const dh = createDiffieHellmanGroup('modp1'); + * ``` + * The name (e.g. `'modp1'`) is taken from [RFC 2412](https://www.rfc-editor.org/rfc/rfc2412.txt) (modp1 and 2) and [RFC 3526](https://www.rfc-editor.org/rfc/rfc3526.txt): + * ```bash + * $ perl -ne 'print "$1\n" if /"(modp\d+)"/' src/node_crypto_groups.h + * modp1 # 768 bits + * modp2 # 1024 bits + * modp5 # 1536 bits + * modp14 # 2048 bits + * modp15 # etc. + * modp16 + * modp17 + * modp18 + * ``` + * @since v0.7.5 + */ + const DiffieHellmanGroup: DiffieHellmanGroupConstructor; + interface DiffieHellmanGroupConstructor { + new(name: string): DiffieHellmanGroup; + (name: string): DiffieHellmanGroup; + readonly prototype: DiffieHellmanGroup; + } + type DiffieHellmanGroup = Omit; + /** + * Creates a predefined `DiffieHellmanGroup` key exchange object. The + * supported groups are listed in the documentation for `DiffieHellmanGroup`. + * + * The returned object mimics the interface of objects created by {@link createDiffieHellman}, but will not allow changing + * the keys (with `diffieHellman.setPublicKey()`, for example). The + * advantage of using this method is that the parties do not have to + * generate nor exchange a group modulus beforehand, saving both processor + * and communication time. + * + * Example (obtaining a shared secret): + * + * ```js + * const { + * getDiffieHellman, + * } = await import('node:crypto'); + * const alice = getDiffieHellman('modp14'); + * const bob = getDiffieHellman('modp14'); + * + * alice.generateKeys(); + * bob.generateKeys(); + * + * const aliceSecret = alice.computeSecret(bob.getPublicKey(), null, 'hex'); + * const bobSecret = bob.computeSecret(alice.getPublicKey(), null, 'hex'); + * + * // aliceSecret and bobSecret should be the same + * console.log(aliceSecret === bobSecret); + * ``` + * @since v0.7.5 + */ + function getDiffieHellman(groupName: string): DiffieHellmanGroup; + /** + * An alias for {@link getDiffieHellman} + * @since v0.9.3 + */ + function createDiffieHellmanGroup(name: string): DiffieHellmanGroup; + /** + * Provides an asynchronous Password-Based Key Derivation Function 2 (PBKDF2) + * implementation. A selected HMAC digest algorithm specified by `digest` is + * applied to derive a key of the requested byte length (`keylen`) from the`password`, `salt` and `iterations`. + * + * The supplied `callback` function is called with two arguments: `err` and`derivedKey`. If an error occurs while deriving the key, `err` will be set; + * otherwise `err` will be `null`. By default, the successfully generated`derivedKey` will be passed to the callback as a `Buffer`. An error will be + * thrown if any of the input arguments specify invalid values or types. + * + * The `iterations` argument must be a number set as high as possible. The + * higher the number of iterations, the more secure the derived key will be, + * but will take a longer amount of time to complete. + * + * The `salt` should be as unique as possible. It is recommended that a salt is + * random and at least 16 bytes long. See [NIST SP 800-132](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf) for details. + * + * When passing strings for `password` or `salt`, please consider `caveats when using strings as inputs to cryptographic APIs`. + * + * ```js + * const { + * pbkdf2, + * } = await import('node:crypto'); + * + * pbkdf2('secret', 'salt', 100000, 64, 'sha512', (err, derivedKey) => { + * if (err) throw err; + * console.log(derivedKey.toString('hex')); // '3745e48...08d59ae' + * }); + * ``` + * + * An array of supported digest functions can be retrieved using {@link getHashes}. + * + * This API uses libuv's threadpool, which can have surprising and + * negative performance implications for some applications; see the `UV_THREADPOOL_SIZE` documentation for more information. + * @since v0.5.5 + */ + function pbkdf2( + password: BinaryLike, + salt: BinaryLike, + iterations: number, + keylen: number, + digest: string, + callback: (err: Error | null, derivedKey: Buffer) => void, + ): void; + /** + * Provides a synchronous Password-Based Key Derivation Function 2 (PBKDF2) + * implementation. A selected HMAC digest algorithm specified by `digest` is + * applied to derive a key of the requested byte length (`keylen`) from the`password`, `salt` and `iterations`. + * + * If an error occurs an `Error` will be thrown, otherwise the derived key will be + * returned as a `Buffer`. + * + * The `iterations` argument must be a number set as high as possible. The + * higher the number of iterations, the more secure the derived key will be, + * but will take a longer amount of time to complete. + * + * The `salt` should be as unique as possible. It is recommended that a salt is + * random and at least 16 bytes long. See [NIST SP 800-132](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf) for details. + * + * When passing strings for `password` or `salt`, please consider `caveats when using strings as inputs to cryptographic APIs`. + * + * ```js + * const { + * pbkdf2Sync, + * } = await import('node:crypto'); + * + * const key = pbkdf2Sync('secret', 'salt', 100000, 64, 'sha512'); + * console.log(key.toString('hex')); // '3745e48...08d59ae' + * ``` + * + * An array of supported digest functions can be retrieved using {@link getHashes}. + * @since v0.9.3 + */ + function pbkdf2Sync( + password: BinaryLike, + salt: BinaryLike, + iterations: number, + keylen: number, + digest: string, + ): Buffer; + /** + * Generates cryptographically strong pseudorandom data. The `size` argument + * is a number indicating the number of bytes to generate. + * + * If a `callback` function is provided, the bytes are generated asynchronously + * and the `callback` function is invoked with two arguments: `err` and `buf`. + * If an error occurs, `err` will be an `Error` object; otherwise it is `null`. The`buf` argument is a `Buffer` containing the generated bytes. + * + * ```js + * // Asynchronous + * const { + * randomBytes, + * } = await import('node:crypto'); + * + * randomBytes(256, (err, buf) => { + * if (err) throw err; + * console.log(`${buf.length} bytes of random data: ${buf.toString('hex')}`); + * }); + * ``` + * + * If the `callback` function is not provided, the random bytes are generated + * synchronously and returned as a `Buffer`. An error will be thrown if + * there is a problem generating the bytes. + * + * ```js + * // Synchronous + * const { + * randomBytes, + * } = await import('node:crypto'); + * + * const buf = randomBytes(256); + * console.log( + * `${buf.length} bytes of random data: ${buf.toString('hex')}`); + * ``` + * + * The `crypto.randomBytes()` method will not complete until there is + * sufficient entropy available. + * This should normally never take longer than a few milliseconds. The only time + * when generating the random bytes may conceivably block for a longer period of + * time is right after boot, when the whole system is still low on entropy. + * + * This API uses libuv's threadpool, which can have surprising and + * negative performance implications for some applications; see the `UV_THREADPOOL_SIZE` documentation for more information. + * + * The asynchronous version of `crypto.randomBytes()` is carried out in a single + * threadpool request. To minimize threadpool task length variation, partition + * large `randomBytes` requests when doing so as part of fulfilling a client + * request. + * @since v0.5.8 + * @param size The number of bytes to generate. The `size` must not be larger than `2**31 - 1`. + * @return if the `callback` function is not provided. + */ + function randomBytes(size: number): Buffer; + function randomBytes(size: number, callback: (err: Error | null, buf: Buffer) => void): void; + function pseudoRandomBytes(size: number): Buffer; + function pseudoRandomBytes(size: number, callback: (err: Error | null, buf: Buffer) => void): void; + /** + * Return a random integer `n` such that `min <= n < max`. This + * implementation avoids [modulo bias](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#Modulo_bias). + * + * The range (`max - min`) must be less than 248. `min` and `max` must + * be [safe integers](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger). + * + * If the `callback` function is not provided, the random integer is + * generated synchronously. + * + * ```js + * // Asynchronous + * const { + * randomInt, + * } = await import('node:crypto'); + * + * randomInt(3, (err, n) => { + * if (err) throw err; + * console.log(`Random number chosen from (0, 1, 2): ${n}`); + * }); + * ``` + * + * ```js + * // Synchronous + * const { + * randomInt, + * } = await import('node:crypto'); + * + * const n = randomInt(3); + * console.log(`Random number chosen from (0, 1, 2): ${n}`); + * ``` + * + * ```js + * // With `min` argument + * const { + * randomInt, + * } = await import('node:crypto'); + * + * const n = randomInt(1, 7); + * console.log(`The dice rolled: ${n}`); + * ``` + * @since v14.10.0, v12.19.0 + * @param [min=0] Start of random range (inclusive). + * @param max End of random range (exclusive). + * @param callback `function(err, n) {}`. + */ + function randomInt(max: number): number; + function randomInt(min: number, max: number): number; + function randomInt(max: number, callback: (err: Error | null, value: number) => void): void; + function randomInt(min: number, max: number, callback: (err: Error | null, value: number) => void): void; + /** + * Synchronous version of {@link randomFill}. + * + * ```js + * import { Buffer } from 'node:buffer'; + * const { randomFillSync } = await import('node:crypto'); + * + * const buf = Buffer.alloc(10); + * console.log(randomFillSync(buf).toString('hex')); + * + * randomFillSync(buf, 5); + * console.log(buf.toString('hex')); + * + * // The above is equivalent to the following: + * randomFillSync(buf, 5, 5); + * console.log(buf.toString('hex')); + * ``` + * + * Any `ArrayBuffer`, `TypedArray` or `DataView` instance may be passed as`buffer`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * const { randomFillSync } = await import('node:crypto'); + * + * const a = new Uint32Array(10); + * console.log(Buffer.from(randomFillSync(a).buffer, + * a.byteOffset, a.byteLength).toString('hex')); + * + * const b = new DataView(new ArrayBuffer(10)); + * console.log(Buffer.from(randomFillSync(b).buffer, + * b.byteOffset, b.byteLength).toString('hex')); + * + * const c = new ArrayBuffer(10); + * console.log(Buffer.from(randomFillSync(c)).toString('hex')); + * ``` + * @since v7.10.0, v6.13.0 + * @param buffer Must be supplied. The size of the provided `buffer` must not be larger than `2**31 - 1`. + * @param [offset=0] + * @param [size=buffer.length - offset] + * @return The object passed as `buffer` argument. + */ + function randomFillSync(buffer: T, offset?: number, size?: number): T; + /** + * This function is similar to {@link randomBytes} but requires the first + * argument to be a `Buffer` that will be filled. It also + * requires that a callback is passed in. + * + * If the `callback` function is not provided, an error will be thrown. + * + * ```js + * import { Buffer } from 'node:buffer'; + * const { randomFill } = await import('node:crypto'); + * + * const buf = Buffer.alloc(10); + * randomFill(buf, (err, buf) => { + * if (err) throw err; + * console.log(buf.toString('hex')); + * }); + * + * randomFill(buf, 5, (err, buf) => { + * if (err) throw err; + * console.log(buf.toString('hex')); + * }); + * + * // The above is equivalent to the following: + * randomFill(buf, 5, 5, (err, buf) => { + * if (err) throw err; + * console.log(buf.toString('hex')); + * }); + * ``` + * + * Any `ArrayBuffer`, `TypedArray`, or `DataView` instance may be passed as`buffer`. + * + * While this includes instances of `Float32Array` and `Float64Array`, this + * function should not be used to generate random floating-point numbers. The + * result may contain `+Infinity`, `-Infinity`, and `NaN`, and even if the array + * contains finite numbers only, they are not drawn from a uniform random + * distribution and have no meaningful lower or upper bounds. + * + * ```js + * import { Buffer } from 'node:buffer'; + * const { randomFill } = await import('node:crypto'); + * + * const a = new Uint32Array(10); + * randomFill(a, (err, buf) => { + * if (err) throw err; + * console.log(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength) + * .toString('hex')); + * }); + * + * const b = new DataView(new ArrayBuffer(10)); + * randomFill(b, (err, buf) => { + * if (err) throw err; + * console.log(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength) + * .toString('hex')); + * }); + * + * const c = new ArrayBuffer(10); + * randomFill(c, (err, buf) => { + * if (err) throw err; + * console.log(Buffer.from(buf).toString('hex')); + * }); + * ``` + * + * This API uses libuv's threadpool, which can have surprising and + * negative performance implications for some applications; see the `UV_THREADPOOL_SIZE` documentation for more information. + * + * The asynchronous version of `crypto.randomFill()` is carried out in a single + * threadpool request. To minimize threadpool task length variation, partition + * large `randomFill` requests when doing so as part of fulfilling a client + * request. + * @since v7.10.0, v6.13.0 + * @param buffer Must be supplied. The size of the provided `buffer` must not be larger than `2**31 - 1`. + * @param [offset=0] + * @param [size=buffer.length - offset] + * @param callback `function(err, buf) {}`. + */ + function randomFill( + buffer: T, + callback: (err: Error | null, buf: T) => void, + ): void; + function randomFill( + buffer: T, + offset: number, + callback: (err: Error | null, buf: T) => void, + ): void; + function randomFill( + buffer: T, + offset: number, + size: number, + callback: (err: Error | null, buf: T) => void, + ): void; + interface ScryptOptions { + cost?: number | undefined; + blockSize?: number | undefined; + parallelization?: number | undefined; + N?: number | undefined; + r?: number | undefined; + p?: number | undefined; + maxmem?: number | undefined; + } + /** + * Provides an asynchronous [scrypt](https://en.wikipedia.org/wiki/Scrypt) implementation. Scrypt is a password-based + * key derivation function that is designed to be expensive computationally and + * memory-wise in order to make brute-force attacks unrewarding. + * + * The `salt` should be as unique as possible. It is recommended that a salt is + * random and at least 16 bytes long. See [NIST SP 800-132](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf) for details. + * + * When passing strings for `password` or `salt`, please consider `caveats when using strings as inputs to cryptographic APIs`. + * + * The `callback` function is called with two arguments: `err` and `derivedKey`.`err` is an exception object when key derivation fails, otherwise `err` is`null`. `derivedKey` is passed to the + * callback as a `Buffer`. + * + * An exception is thrown when any of the input arguments specify invalid values + * or types. + * + * ```js + * const { + * scrypt, + * } = await import('node:crypto'); + * + * // Using the factory defaults. + * scrypt('password', 'salt', 64, (err, derivedKey) => { + * if (err) throw err; + * console.log(derivedKey.toString('hex')); // '3745e48...08d59ae' + * }); + * // Using a custom N parameter. Must be a power of two. + * scrypt('password', 'salt', 64, { N: 1024 }, (err, derivedKey) => { + * if (err) throw err; + * console.log(derivedKey.toString('hex')); // '3745e48...aa39b34' + * }); + * ``` + * @since v10.5.0 + */ + function scrypt( + password: BinaryLike, + salt: BinaryLike, + keylen: number, + callback: (err: Error | null, derivedKey: Buffer) => void, + ): void; + function scrypt( + password: BinaryLike, + salt: BinaryLike, + keylen: number, + options: ScryptOptions, + callback: (err: Error | null, derivedKey: Buffer) => void, + ): void; + /** + * Provides a synchronous [scrypt](https://en.wikipedia.org/wiki/Scrypt) implementation. Scrypt is a password-based + * key derivation function that is designed to be expensive computationally and + * memory-wise in order to make brute-force attacks unrewarding. + * + * The `salt` should be as unique as possible. It is recommended that a salt is + * random and at least 16 bytes long. See [NIST SP 800-132](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf) for details. + * + * When passing strings for `password` or `salt`, please consider `caveats when using strings as inputs to cryptographic APIs`. + * + * An exception is thrown when key derivation fails, otherwise the derived key is + * returned as a `Buffer`. + * + * An exception is thrown when any of the input arguments specify invalid values + * or types. + * + * ```js + * const { + * scryptSync, + * } = await import('node:crypto'); + * // Using the factory defaults. + * + * const key1 = scryptSync('password', 'salt', 64); + * console.log(key1.toString('hex')); // '3745e48...08d59ae' + * // Using a custom N parameter. Must be a power of two. + * const key2 = scryptSync('password', 'salt', 64, { N: 1024 }); + * console.log(key2.toString('hex')); // '3745e48...aa39b34' + * ``` + * @since v10.5.0 + */ + function scryptSync(password: BinaryLike, salt: BinaryLike, keylen: number, options?: ScryptOptions): Buffer; + interface RsaPublicKey { + key: KeyLike; + padding?: number | undefined; + } + interface RsaPrivateKey { + key: KeyLike; + passphrase?: string | undefined; + /** + * @default 'sha1' + */ + oaepHash?: string | undefined; + oaepLabel?: NodeJS.TypedArray | undefined; + padding?: number | undefined; + } + /** + * Encrypts the content of `buffer` with `key` and returns a new `Buffer` with encrypted content. The returned data can be decrypted using + * the corresponding private key, for example using {@link privateDecrypt}. + * + * If `key` is not a `KeyObject`, this function behaves as if`key` had been passed to {@link createPublicKey}. If it is an + * object, the `padding` property can be passed. Otherwise, this function uses`RSA_PKCS1_OAEP_PADDING`. + * + * Because RSA public keys can be derived from private keys, a private key may + * be passed instead of a public key. + * @since v0.11.14 + */ + function publicEncrypt(key: RsaPublicKey | RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer; + /** + * Decrypts `buffer` with `key`.`buffer` was previously encrypted using + * the corresponding private key, for example using {@link privateEncrypt}. + * + * If `key` is not a `KeyObject`, this function behaves as if`key` had been passed to {@link createPublicKey}. If it is an + * object, the `padding` property can be passed. Otherwise, this function uses`RSA_PKCS1_PADDING`. + * + * Because RSA public keys can be derived from private keys, a private key may + * be passed instead of a public key. + * @since v1.1.0 + */ + function publicDecrypt(key: RsaPublicKey | RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer; + /** + * Decrypts `buffer` with `privateKey`. `buffer` was previously encrypted using + * the corresponding public key, for example using {@link publicEncrypt}. + * + * If `privateKey` is not a `KeyObject`, this function behaves as if`privateKey` had been passed to {@link createPrivateKey}. If it is an + * object, the `padding` property can be passed. Otherwise, this function uses`RSA_PKCS1_OAEP_PADDING`. + * @since v0.11.14 + */ + function privateDecrypt(privateKey: RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer; + /** + * Encrypts `buffer` with `privateKey`. The returned data can be decrypted using + * the corresponding public key, for example using {@link publicDecrypt}. + * + * If `privateKey` is not a `KeyObject`, this function behaves as if`privateKey` had been passed to {@link createPrivateKey}. If it is an + * object, the `padding` property can be passed. Otherwise, this function uses`RSA_PKCS1_PADDING`. + * @since v1.1.0 + */ + function privateEncrypt(privateKey: RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer; + /** + * ```js + * const { + * getCiphers, + * } = await import('node:crypto'); + * + * console.log(getCiphers()); // ['aes-128-cbc', 'aes-128-ccm', ...] + * ``` + * @since v0.9.3 + * @return An array with the names of the supported cipher algorithms. + */ + function getCiphers(): string[]; + /** + * ```js + * const { + * getCurves, + * } = await import('node:crypto'); + * + * console.log(getCurves()); // ['Oakley-EC2N-3', 'Oakley-EC2N-4', ...] + * ``` + * @since v2.3.0 + * @return An array with the names of the supported elliptic curves. + */ + function getCurves(): string[]; + /** + * @since v10.0.0 + * @return `1` if and only if a FIPS compliant crypto provider is currently in use, `0` otherwise. A future semver-major release may change the return type of this API to a {boolean}. + */ + function getFips(): 1 | 0; + /** + * Enables the FIPS compliant crypto provider in a FIPS-enabled Node.js build. + * Throws an error if FIPS mode is not available. + * @since v10.0.0 + * @param bool `true` to enable FIPS mode. + */ + function setFips(bool: boolean): void; + /** + * ```js + * const { + * getHashes, + * } = await import('node:crypto'); + * + * console.log(getHashes()); // ['DSA', 'DSA-SHA', 'DSA-SHA1', ...] + * ``` + * @since v0.9.3 + * @return An array of the names of the supported hash algorithms, such as `'RSA-SHA256'`. Hash algorithms are also called "digest" algorithms. + */ + function getHashes(): string[]; + /** + * The `ECDH` class is a utility for creating Elliptic Curve Diffie-Hellman (ECDH) + * key exchanges. + * + * Instances of the `ECDH` class can be created using the {@link createECDH} function. + * + * ```js + * import assert from 'node:assert'; + * + * const { + * createECDH, + * } = await import('node:crypto'); + * + * // Generate Alice's keys... + * const alice = createECDH('secp521r1'); + * const aliceKey = alice.generateKeys(); + * + * // Generate Bob's keys... + * const bob = createECDH('secp521r1'); + * const bobKey = bob.generateKeys(); + * + * // Exchange and generate the secret... + * const aliceSecret = alice.computeSecret(bobKey); + * const bobSecret = bob.computeSecret(aliceKey); + * + * assert.strictEqual(aliceSecret.toString('hex'), bobSecret.toString('hex')); + * // OK + * ``` + * @since v0.11.14 + */ + class ECDH { + private constructor(); + /** + * Converts the EC Diffie-Hellman public key specified by `key` and `curve` to the + * format specified by `format`. The `format` argument specifies point encoding + * and can be `'compressed'`, `'uncompressed'` or `'hybrid'`. The supplied key is + * interpreted using the specified `inputEncoding`, and the returned key is encoded + * using the specified `outputEncoding`. + * + * Use {@link getCurves} to obtain a list of available curve names. + * On recent OpenSSL releases, `openssl ecparam -list_curves` will also display + * the name and description of each available elliptic curve. + * + * If `format` is not specified the point will be returned in `'uncompressed'`format. + * + * If the `inputEncoding` is not provided, `key` is expected to be a `Buffer`,`TypedArray`, or `DataView`. + * + * Example (uncompressing a key): + * + * ```js + * const { + * createECDH, + * ECDH, + * } = await import('node:crypto'); + * + * const ecdh = createECDH('secp256k1'); + * ecdh.generateKeys(); + * + * const compressedKey = ecdh.getPublicKey('hex', 'compressed'); + * + * const uncompressedKey = ECDH.convertKey(compressedKey, + * 'secp256k1', + * 'hex', + * 'hex', + * 'uncompressed'); + * + * // The converted key and the uncompressed public key should be the same + * console.log(uncompressedKey === ecdh.getPublicKey('hex')); + * ``` + * @since v10.0.0 + * @param inputEncoding The `encoding` of the `key` string. + * @param outputEncoding The `encoding` of the return value. + * @param [format='uncompressed'] + */ + static convertKey( + key: BinaryLike, + curve: string, + inputEncoding?: BinaryToTextEncoding, + outputEncoding?: "latin1" | "hex" | "base64" | "base64url", + format?: "uncompressed" | "compressed" | "hybrid", + ): Buffer | string; + /** + * Generates private and public EC Diffie-Hellman key values, and returns + * the public key in the specified `format` and `encoding`. This key should be + * transferred to the other party. + * + * The `format` argument specifies point encoding and can be `'compressed'` or`'uncompressed'`. If `format` is not specified, the point will be returned in`'uncompressed'` format. + * + * If `encoding` is provided a string is returned; otherwise a `Buffer` is returned. + * @since v0.11.14 + * @param encoding The `encoding` of the return value. + * @param [format='uncompressed'] + */ + generateKeys(): Buffer; + generateKeys(encoding: BinaryToTextEncoding, format?: ECDHKeyFormat): string; + /** + * Computes the shared secret using `otherPublicKey` as the other + * party's public key and returns the computed shared secret. The supplied + * key is interpreted using specified `inputEncoding`, and the returned secret + * is encoded using the specified `outputEncoding`. + * If the `inputEncoding` is not + * provided, `otherPublicKey` is expected to be a `Buffer`, `TypedArray`, or`DataView`. + * + * If `outputEncoding` is given a string will be returned; otherwise a `Buffer` is returned. + * + * `ecdh.computeSecret` will throw an`ERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY` error when `otherPublicKey`lies outside of the elliptic curve. Since `otherPublicKey` is + * usually supplied from a remote user over an insecure network, + * be sure to handle this exception accordingly. + * @since v0.11.14 + * @param inputEncoding The `encoding` of the `otherPublicKey` string. + * @param outputEncoding The `encoding` of the return value. + */ + computeSecret(otherPublicKey: NodeJS.ArrayBufferView): Buffer; + computeSecret(otherPublicKey: string, inputEncoding: BinaryToTextEncoding): Buffer; + computeSecret(otherPublicKey: NodeJS.ArrayBufferView, outputEncoding: BinaryToTextEncoding): string; + computeSecret( + otherPublicKey: string, + inputEncoding: BinaryToTextEncoding, + outputEncoding: BinaryToTextEncoding, + ): string; + /** + * If `encoding` is specified, a string is returned; otherwise a `Buffer` is + * returned. + * @since v0.11.14 + * @param encoding The `encoding` of the return value. + * @return The EC Diffie-Hellman in the specified `encoding`. + */ + getPrivateKey(): Buffer; + getPrivateKey(encoding: BinaryToTextEncoding): string; + /** + * The `format` argument specifies point encoding and can be `'compressed'` or`'uncompressed'`. If `format` is not specified the point will be returned in`'uncompressed'` format. + * + * If `encoding` is specified, a string is returned; otherwise a `Buffer` is + * returned. + * @since v0.11.14 + * @param encoding The `encoding` of the return value. + * @param [format='uncompressed'] + * @return The EC Diffie-Hellman public key in the specified `encoding` and `format`. + */ + getPublicKey(encoding?: null, format?: ECDHKeyFormat): Buffer; + getPublicKey(encoding: BinaryToTextEncoding, format?: ECDHKeyFormat): string; + /** + * Sets the EC Diffie-Hellman private key. + * If `encoding` is provided, `privateKey` is expected + * to be a string; otherwise `privateKey` is expected to be a `Buffer`,`TypedArray`, or `DataView`. + * + * If `privateKey` is not valid for the curve specified when the `ECDH` object was + * created, an error is thrown. Upon setting the private key, the associated + * public point (key) is also generated and set in the `ECDH` object. + * @since v0.11.14 + * @param encoding The `encoding` of the `privateKey` string. + */ + setPrivateKey(privateKey: NodeJS.ArrayBufferView): void; + setPrivateKey(privateKey: string, encoding: BinaryToTextEncoding): void; + } + /** + * Creates an Elliptic Curve Diffie-Hellman (`ECDH`) key exchange object using a + * predefined curve specified by the `curveName` string. Use {@link getCurves} to obtain a list of available curve names. On recent + * OpenSSL releases, `openssl ecparam -list_curves` will also display the name + * and description of each available elliptic curve. + * @since v0.11.14 + */ + function createECDH(curveName: string): ECDH; + /** + * This function compares the underlying bytes that represent the given`ArrayBuffer`, `TypedArray`, or `DataView` instances using a constant-time + * algorithm. + * + * This function does not leak timing information that + * would allow an attacker to guess one of the values. This is suitable for + * comparing HMAC digests or secret values like authentication cookies or [capability urls](https://www.w3.org/TR/capability-urls/). + * + * `a` and `b` must both be `Buffer`s, `TypedArray`s, or `DataView`s, and they + * must have the same byte length. An error is thrown if `a` and `b` have + * different byte lengths. + * + * If at least one of `a` and `b` is a `TypedArray` with more than one byte per + * entry, such as `Uint16Array`, the result will be computed using the platform + * byte order. + * + * **When both of the inputs are `Float32Array`s or`Float64Array`s, this function might return unexpected results due to IEEE 754** + * **encoding of floating-point numbers. In particular, neither `x === y` nor`Object.is(x, y)` implies that the byte representations of two floating-point** + * **numbers `x` and `y` are equal.** + * + * Use of `crypto.timingSafeEqual` does not guarantee that the _surrounding_ code + * is timing-safe. Care should be taken to ensure that the surrounding code does + * not introduce timing vulnerabilities. + * @since v6.6.0 + */ + function timingSafeEqual(a: NodeJS.ArrayBufferView, b: NodeJS.ArrayBufferView): boolean; + type KeyType = "rsa" | "rsa-pss" | "dsa" | "ec" | "ed25519" | "ed448" | "x25519" | "x448"; + type KeyFormat = "pem" | "der" | "jwk"; + interface BasePrivateKeyEncodingOptions { + format: T; + cipher?: string | undefined; + passphrase?: string | undefined; + } + interface KeyPairKeyObjectResult { + publicKey: KeyObject; + privateKey: KeyObject; + } + interface ED25519KeyPairKeyObjectOptions {} + interface ED448KeyPairKeyObjectOptions {} + interface X25519KeyPairKeyObjectOptions {} + interface X448KeyPairKeyObjectOptions {} + interface ECKeyPairKeyObjectOptions { + /** + * Name of the curve to use + */ + namedCurve: string; + } + interface RSAKeyPairKeyObjectOptions { + /** + * Key size in bits + */ + modulusLength: number; + /** + * Public exponent + * @default 0x10001 + */ + publicExponent?: number | undefined; + } + interface RSAPSSKeyPairKeyObjectOptions { + /** + * Key size in bits + */ + modulusLength: number; + /** + * Public exponent + * @default 0x10001 + */ + publicExponent?: number | undefined; + /** + * Name of the message digest + */ + hashAlgorithm?: string; + /** + * Name of the message digest used by MGF1 + */ + mgf1HashAlgorithm?: string; + /** + * Minimal salt length in bytes + */ + saltLength?: string; + } + interface DSAKeyPairKeyObjectOptions { + /** + * Key size in bits + */ + modulusLength: number; + /** + * Size of q in bits + */ + divisorLength: number; + } + interface RSAKeyPairOptions { + /** + * Key size in bits + */ + modulusLength: number; + /** + * Public exponent + * @default 0x10001 + */ + publicExponent?: number | undefined; + publicKeyEncoding: { + type: "pkcs1" | "spki"; + format: PubF; + }; + privateKeyEncoding: BasePrivateKeyEncodingOptions & { + type: "pkcs1" | "pkcs8"; + }; + } + interface RSAPSSKeyPairOptions { + /** + * Key size in bits + */ + modulusLength: number; + /** + * Public exponent + * @default 0x10001 + */ + publicExponent?: number | undefined; + /** + * Name of the message digest + */ + hashAlgorithm?: string; + /** + * Name of the message digest used by MGF1 + */ + mgf1HashAlgorithm?: string; + /** + * Minimal salt length in bytes + */ + saltLength?: string; + publicKeyEncoding: { + type: "spki"; + format: PubF; + }; + privateKeyEncoding: BasePrivateKeyEncodingOptions & { + type: "pkcs8"; + }; + } + interface DSAKeyPairOptions { + /** + * Key size in bits + */ + modulusLength: number; + /** + * Size of q in bits + */ + divisorLength: number; + publicKeyEncoding: { + type: "spki"; + format: PubF; + }; + privateKeyEncoding: BasePrivateKeyEncodingOptions & { + type: "pkcs8"; + }; + } + interface ECKeyPairOptions { + /** + * Name of the curve to use. + */ + namedCurve: string; + publicKeyEncoding: { + type: "pkcs1" | "spki"; + format: PubF; + }; + privateKeyEncoding: BasePrivateKeyEncodingOptions & { + type: "sec1" | "pkcs8"; + }; + } + interface ED25519KeyPairOptions { + publicKeyEncoding: { + type: "spki"; + format: PubF; + }; + privateKeyEncoding: BasePrivateKeyEncodingOptions & { + type: "pkcs8"; + }; + } + interface ED448KeyPairOptions { + publicKeyEncoding: { + type: "spki"; + format: PubF; + }; + privateKeyEncoding: BasePrivateKeyEncodingOptions & { + type: "pkcs8"; + }; + } + interface X25519KeyPairOptions { + publicKeyEncoding: { + type: "spki"; + format: PubF; + }; + privateKeyEncoding: BasePrivateKeyEncodingOptions & { + type: "pkcs8"; + }; + } + interface X448KeyPairOptions { + publicKeyEncoding: { + type: "spki"; + format: PubF; + }; + privateKeyEncoding: BasePrivateKeyEncodingOptions & { + type: "pkcs8"; + }; + } + interface KeyPairSyncResult { + publicKey: T1; + privateKey: T2; + } + /** + * Generates a new asymmetric key pair of the given `type`. RSA, RSA-PSS, DSA, EC, + * Ed25519, Ed448, X25519, X448, and DH are currently supported. + * + * If a `publicKeyEncoding` or `privateKeyEncoding` was specified, this function + * behaves as if `keyObject.export()` had been called on its result. Otherwise, + * the respective part of the key is returned as a `KeyObject`. + * + * When encoding public keys, it is recommended to use `'spki'`. When encoding + * private keys, it is recommended to use `'pkcs8'` with a strong passphrase, + * and to keep the passphrase confidential. + * + * ```js + * const { + * generateKeyPairSync, + * } = await import('node:crypto'); + * + * const { + * publicKey, + * privateKey, + * } = generateKeyPairSync('rsa', { + * modulusLength: 4096, + * publicKeyEncoding: { + * type: 'spki', + * format: 'pem', + * }, + * privateKeyEncoding: { + * type: 'pkcs8', + * format: 'pem', + * cipher: 'aes-256-cbc', + * passphrase: 'top secret', + * }, + * }); + * ``` + * + * The return value `{ publicKey, privateKey }` represents the generated key pair. + * When PEM encoding was selected, the respective key will be a string, otherwise + * it will be a buffer containing the data encoded as DER. + * @since v10.12.0 + * @param type Must be `'rsa'`, `'rsa-pss'`, `'dsa'`, `'ec'`, `'ed25519'`, `'ed448'`, `'x25519'`, `'x448'`, or `'dh'`. + */ + function generateKeyPairSync( + type: "rsa", + options: RSAKeyPairOptions<"pem", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "rsa", + options: RSAKeyPairOptions<"pem", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "rsa", + options: RSAKeyPairOptions<"der", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "rsa", + options: RSAKeyPairOptions<"der", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync(type: "rsa", options: RSAKeyPairKeyObjectOptions): KeyPairKeyObjectResult; + function generateKeyPairSync( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"pem", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"pem", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"der", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"der", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync(type: "rsa-pss", options: RSAPSSKeyPairKeyObjectOptions): KeyPairKeyObjectResult; + function generateKeyPairSync( + type: "dsa", + options: DSAKeyPairOptions<"pem", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "dsa", + options: DSAKeyPairOptions<"pem", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "dsa", + options: DSAKeyPairOptions<"der", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "dsa", + options: DSAKeyPairOptions<"der", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync(type: "dsa", options: DSAKeyPairKeyObjectOptions): KeyPairKeyObjectResult; + function generateKeyPairSync( + type: "ec", + options: ECKeyPairOptions<"pem", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ec", + options: ECKeyPairOptions<"pem", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ec", + options: ECKeyPairOptions<"der", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ec", + options: ECKeyPairOptions<"der", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync(type: "ec", options: ECKeyPairKeyObjectOptions): KeyPairKeyObjectResult; + function generateKeyPairSync( + type: "ed25519", + options: ED25519KeyPairOptions<"pem", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ed25519", + options: ED25519KeyPairOptions<"pem", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ed25519", + options: ED25519KeyPairOptions<"der", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ed25519", + options: ED25519KeyPairOptions<"der", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync(type: "ed25519", options?: ED25519KeyPairKeyObjectOptions): KeyPairKeyObjectResult; + function generateKeyPairSync( + type: "ed448", + options: ED448KeyPairOptions<"pem", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ed448", + options: ED448KeyPairOptions<"pem", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ed448", + options: ED448KeyPairOptions<"der", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ed448", + options: ED448KeyPairOptions<"der", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync(type: "ed448", options?: ED448KeyPairKeyObjectOptions): KeyPairKeyObjectResult; + function generateKeyPairSync( + type: "x25519", + options: X25519KeyPairOptions<"pem", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "x25519", + options: X25519KeyPairOptions<"pem", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "x25519", + options: X25519KeyPairOptions<"der", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "x25519", + options: X25519KeyPairOptions<"der", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync(type: "x25519", options?: X25519KeyPairKeyObjectOptions): KeyPairKeyObjectResult; + function generateKeyPairSync( + type: "x448", + options: X448KeyPairOptions<"pem", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "x448", + options: X448KeyPairOptions<"pem", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "x448", + options: X448KeyPairOptions<"der", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "x448", + options: X448KeyPairOptions<"der", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync(type: "x448", options?: X448KeyPairKeyObjectOptions): KeyPairKeyObjectResult; + /** + * Generates a new asymmetric key pair of the given `type`. RSA, RSA-PSS, DSA, EC, + * Ed25519, Ed448, X25519, X448, and DH are currently supported. + * + * If a `publicKeyEncoding` or `privateKeyEncoding` was specified, this function + * behaves as if `keyObject.export()` had been called on its result. Otherwise, + * the respective part of the key is returned as a `KeyObject`. + * + * It is recommended to encode public keys as `'spki'` and private keys as`'pkcs8'` with encryption for long-term storage: + * + * ```js + * const { + * generateKeyPair, + * } = await import('node:crypto'); + * + * generateKeyPair('rsa', { + * modulusLength: 4096, + * publicKeyEncoding: { + * type: 'spki', + * format: 'pem', + * }, + * privateKeyEncoding: { + * type: 'pkcs8', + * format: 'pem', + * cipher: 'aes-256-cbc', + * passphrase: 'top secret', + * }, + * }, (err, publicKey, privateKey) => { + * // Handle errors and use the generated key pair. + * }); + * ``` + * + * On completion, `callback` will be called with `err` set to `undefined` and`publicKey` / `privateKey` representing the generated key pair. + * + * If this method is invoked as its `util.promisify()` ed version, it returns + * a `Promise` for an `Object` with `publicKey` and `privateKey` properties. + * @since v10.12.0 + * @param type Must be `'rsa'`, `'rsa-pss'`, `'dsa'`, `'ec'`, `'ed25519'`, `'ed448'`, `'x25519'`, `'x448'`, or `'dh'`. + */ + function generateKeyPair( + type: "rsa", + options: RSAKeyPairOptions<"pem", "pem">, + callback: (err: Error | null, publicKey: string, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "rsa", + options: RSAKeyPairOptions<"pem", "der">, + callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "rsa", + options: RSAKeyPairOptions<"der", "pem">, + callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "rsa", + options: RSAKeyPairOptions<"der", "der">, + callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "rsa", + options: RSAKeyPairKeyObjectOptions, + callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, + ): void; + function generateKeyPair( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"pem", "pem">, + callback: (err: Error | null, publicKey: string, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"pem", "der">, + callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"der", "pem">, + callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"der", "der">, + callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "rsa-pss", + options: RSAPSSKeyPairKeyObjectOptions, + callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, + ): void; + function generateKeyPair( + type: "dsa", + options: DSAKeyPairOptions<"pem", "pem">, + callback: (err: Error | null, publicKey: string, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "dsa", + options: DSAKeyPairOptions<"pem", "der">, + callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "dsa", + options: DSAKeyPairOptions<"der", "pem">, + callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "dsa", + options: DSAKeyPairOptions<"der", "der">, + callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "dsa", + options: DSAKeyPairKeyObjectOptions, + callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, + ): void; + function generateKeyPair( + type: "ec", + options: ECKeyPairOptions<"pem", "pem">, + callback: (err: Error | null, publicKey: string, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "ec", + options: ECKeyPairOptions<"pem", "der">, + callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "ec", + options: ECKeyPairOptions<"der", "pem">, + callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "ec", + options: ECKeyPairOptions<"der", "der">, + callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "ec", + options: ECKeyPairKeyObjectOptions, + callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, + ): void; + function generateKeyPair( + type: "ed25519", + options: ED25519KeyPairOptions<"pem", "pem">, + callback: (err: Error | null, publicKey: string, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "ed25519", + options: ED25519KeyPairOptions<"pem", "der">, + callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "ed25519", + options: ED25519KeyPairOptions<"der", "pem">, + callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "ed25519", + options: ED25519KeyPairOptions<"der", "der">, + callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "ed25519", + options: ED25519KeyPairKeyObjectOptions | undefined, + callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, + ): void; + function generateKeyPair( + type: "ed448", + options: ED448KeyPairOptions<"pem", "pem">, + callback: (err: Error | null, publicKey: string, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "ed448", + options: ED448KeyPairOptions<"pem", "der">, + callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "ed448", + options: ED448KeyPairOptions<"der", "pem">, + callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "ed448", + options: ED448KeyPairOptions<"der", "der">, + callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "ed448", + options: ED448KeyPairKeyObjectOptions | undefined, + callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, + ): void; + function generateKeyPair( + type: "x25519", + options: X25519KeyPairOptions<"pem", "pem">, + callback: (err: Error | null, publicKey: string, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "x25519", + options: X25519KeyPairOptions<"pem", "der">, + callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "x25519", + options: X25519KeyPairOptions<"der", "pem">, + callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "x25519", + options: X25519KeyPairOptions<"der", "der">, + callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "x25519", + options: X25519KeyPairKeyObjectOptions | undefined, + callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, + ): void; + function generateKeyPair( + type: "x448", + options: X448KeyPairOptions<"pem", "pem">, + callback: (err: Error | null, publicKey: string, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "x448", + options: X448KeyPairOptions<"pem", "der">, + callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "x448", + options: X448KeyPairOptions<"der", "pem">, + callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "x448", + options: X448KeyPairOptions<"der", "der">, + callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "x448", + options: X448KeyPairKeyObjectOptions | undefined, + callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, + ): void; + namespace generateKeyPair { + function __promisify__( + type: "rsa", + options: RSAKeyPairOptions<"pem", "pem">, + ): Promise<{ + publicKey: string; + privateKey: string; + }>; + function __promisify__( + type: "rsa", + options: RSAKeyPairOptions<"pem", "der">, + ): Promise<{ + publicKey: string; + privateKey: Buffer; + }>; + function __promisify__( + type: "rsa", + options: RSAKeyPairOptions<"der", "pem">, + ): Promise<{ + publicKey: Buffer; + privateKey: string; + }>; + function __promisify__( + type: "rsa", + options: RSAKeyPairOptions<"der", "der">, + ): Promise<{ + publicKey: Buffer; + privateKey: Buffer; + }>; + function __promisify__(type: "rsa", options: RSAKeyPairKeyObjectOptions): Promise; + function __promisify__( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"pem", "pem">, + ): Promise<{ + publicKey: string; + privateKey: string; + }>; + function __promisify__( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"pem", "der">, + ): Promise<{ + publicKey: string; + privateKey: Buffer; + }>; + function __promisify__( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"der", "pem">, + ): Promise<{ + publicKey: Buffer; + privateKey: string; + }>; + function __promisify__( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"der", "der">, + ): Promise<{ + publicKey: Buffer; + privateKey: Buffer; + }>; + function __promisify__( + type: "rsa-pss", + options: RSAPSSKeyPairKeyObjectOptions, + ): Promise; + function __promisify__( + type: "dsa", + options: DSAKeyPairOptions<"pem", "pem">, + ): Promise<{ + publicKey: string; + privateKey: string; + }>; + function __promisify__( + type: "dsa", + options: DSAKeyPairOptions<"pem", "der">, + ): Promise<{ + publicKey: string; + privateKey: Buffer; + }>; + function __promisify__( + type: "dsa", + options: DSAKeyPairOptions<"der", "pem">, + ): Promise<{ + publicKey: Buffer; + privateKey: string; + }>; + function __promisify__( + type: "dsa", + options: DSAKeyPairOptions<"der", "der">, + ): Promise<{ + publicKey: Buffer; + privateKey: Buffer; + }>; + function __promisify__(type: "dsa", options: DSAKeyPairKeyObjectOptions): Promise; + function __promisify__( + type: "ec", + options: ECKeyPairOptions<"pem", "pem">, + ): Promise<{ + publicKey: string; + privateKey: string; + }>; + function __promisify__( + type: "ec", + options: ECKeyPairOptions<"pem", "der">, + ): Promise<{ + publicKey: string; + privateKey: Buffer; + }>; + function __promisify__( + type: "ec", + options: ECKeyPairOptions<"der", "pem">, + ): Promise<{ + publicKey: Buffer; + privateKey: string; + }>; + function __promisify__( + type: "ec", + options: ECKeyPairOptions<"der", "der">, + ): Promise<{ + publicKey: Buffer; + privateKey: Buffer; + }>; + function __promisify__(type: "ec", options: ECKeyPairKeyObjectOptions): Promise; + function __promisify__( + type: "ed25519", + options: ED25519KeyPairOptions<"pem", "pem">, + ): Promise<{ + publicKey: string; + privateKey: string; + }>; + function __promisify__( + type: "ed25519", + options: ED25519KeyPairOptions<"pem", "der">, + ): Promise<{ + publicKey: string; + privateKey: Buffer; + }>; + function __promisify__( + type: "ed25519", + options: ED25519KeyPairOptions<"der", "pem">, + ): Promise<{ + publicKey: Buffer; + privateKey: string; + }>; + function __promisify__( + type: "ed25519", + options: ED25519KeyPairOptions<"der", "der">, + ): Promise<{ + publicKey: Buffer; + privateKey: Buffer; + }>; + function __promisify__( + type: "ed25519", + options?: ED25519KeyPairKeyObjectOptions, + ): Promise; + function __promisify__( + type: "ed448", + options: ED448KeyPairOptions<"pem", "pem">, + ): Promise<{ + publicKey: string; + privateKey: string; + }>; + function __promisify__( + type: "ed448", + options: ED448KeyPairOptions<"pem", "der">, + ): Promise<{ + publicKey: string; + privateKey: Buffer; + }>; + function __promisify__( + type: "ed448", + options: ED448KeyPairOptions<"der", "pem">, + ): Promise<{ + publicKey: Buffer; + privateKey: string; + }>; + function __promisify__( + type: "ed448", + options: ED448KeyPairOptions<"der", "der">, + ): Promise<{ + publicKey: Buffer; + privateKey: Buffer; + }>; + function __promisify__(type: "ed448", options?: ED448KeyPairKeyObjectOptions): Promise; + function __promisify__( + type: "x25519", + options: X25519KeyPairOptions<"pem", "pem">, + ): Promise<{ + publicKey: string; + privateKey: string; + }>; + function __promisify__( + type: "x25519", + options: X25519KeyPairOptions<"pem", "der">, + ): Promise<{ + publicKey: string; + privateKey: Buffer; + }>; + function __promisify__( + type: "x25519", + options: X25519KeyPairOptions<"der", "pem">, + ): Promise<{ + publicKey: Buffer; + privateKey: string; + }>; + function __promisify__( + type: "x25519", + options: X25519KeyPairOptions<"der", "der">, + ): Promise<{ + publicKey: Buffer; + privateKey: Buffer; + }>; + function __promisify__( + type: "x25519", + options?: X25519KeyPairKeyObjectOptions, + ): Promise; + function __promisify__( + type: "x448", + options: X448KeyPairOptions<"pem", "pem">, + ): Promise<{ + publicKey: string; + privateKey: string; + }>; + function __promisify__( + type: "x448", + options: X448KeyPairOptions<"pem", "der">, + ): Promise<{ + publicKey: string; + privateKey: Buffer; + }>; + function __promisify__( + type: "x448", + options: X448KeyPairOptions<"der", "pem">, + ): Promise<{ + publicKey: Buffer; + privateKey: string; + }>; + function __promisify__( + type: "x448", + options: X448KeyPairOptions<"der", "der">, + ): Promise<{ + publicKey: Buffer; + privateKey: Buffer; + }>; + function __promisify__(type: "x448", options?: X448KeyPairKeyObjectOptions): Promise; + } + /** + * Calculates and returns the signature for `data` using the given private key and + * algorithm. If `algorithm` is `null` or `undefined`, then the algorithm is + * dependent upon the key type (especially Ed25519 and Ed448). + * + * If `key` is not a `KeyObject`, this function behaves as if `key` had been + * passed to {@link createPrivateKey}. If it is an object, the following + * additional properties can be passed: + * + * If the `callback` function is provided this function uses libuv's threadpool. + * @since v12.0.0 + */ + function sign( + algorithm: string | null | undefined, + data: NodeJS.ArrayBufferView, + key: KeyLike | SignKeyObjectInput | SignPrivateKeyInput, + ): Buffer; + function sign( + algorithm: string | null | undefined, + data: NodeJS.ArrayBufferView, + key: KeyLike | SignKeyObjectInput | SignPrivateKeyInput, + callback: (error: Error | null, data: Buffer) => void, + ): void; + /** + * Verifies the given signature for `data` using the given key and algorithm. If`algorithm` is `null` or `undefined`, then the algorithm is dependent upon the + * key type (especially Ed25519 and Ed448). + * + * If `key` is not a `KeyObject`, this function behaves as if `key` had been + * passed to {@link createPublicKey}. If it is an object, the following + * additional properties can be passed: + * + * The `signature` argument is the previously calculated signature for the `data`. + * + * Because public keys can be derived from private keys, a private key or a public + * key may be passed for `key`. + * + * If the `callback` function is provided this function uses libuv's threadpool. + * @since v12.0.0 + */ + function verify( + algorithm: string | null | undefined, + data: NodeJS.ArrayBufferView, + key: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput | VerifyJsonWebKeyInput, + signature: NodeJS.ArrayBufferView, + ): boolean; + function verify( + algorithm: string | null | undefined, + data: NodeJS.ArrayBufferView, + key: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput | VerifyJsonWebKeyInput, + signature: NodeJS.ArrayBufferView, + callback: (error: Error | null, result: boolean) => void, + ): void; + /** + * Computes the Diffie-Hellman secret based on a `privateKey` and a `publicKey`. + * Both keys must have the same `asymmetricKeyType`, which must be one of `'dh'`(for Diffie-Hellman), `'ec'` (for ECDH), `'x448'`, or `'x25519'` (for ECDH-ES). + * @since v13.9.0, v12.17.0 + */ + function diffieHellman(options: { privateKey: KeyObject; publicKey: KeyObject }): Buffer; + type CipherMode = "cbc" | "ccm" | "cfb" | "ctr" | "ecb" | "gcm" | "ocb" | "ofb" | "stream" | "wrap" | "xts"; + interface CipherInfoOptions { + /** + * A test key length. + */ + keyLength?: number | undefined; + /** + * A test IV length. + */ + ivLength?: number | undefined; + } + interface CipherInfo { + /** + * The name of the cipher. + */ + name: string; + /** + * The nid of the cipher. + */ + nid: number; + /** + * The block size of the cipher in bytes. + * This property is omitted when mode is 'stream'. + */ + blockSize?: number | undefined; + /** + * The expected or default initialization vector length in bytes. + * This property is omitted if the cipher does not use an initialization vector. + */ + ivLength?: number | undefined; + /** + * The expected or default key length in bytes. + */ + keyLength: number; + /** + * The cipher mode. + */ + mode: CipherMode; + } + /** + * Returns information about a given cipher. + * + * Some ciphers accept variable length keys and initialization vectors. By default, + * the `crypto.getCipherInfo()` method will return the default values for these + * ciphers. To test if a given key length or iv length is acceptable for given + * cipher, use the `keyLength` and `ivLength` options. If the given values are + * unacceptable, `undefined` will be returned. + * @since v15.0.0 + * @param nameOrNid The name or nid of the cipher to query. + */ + function getCipherInfo(nameOrNid: string | number, options?: CipherInfoOptions): CipherInfo | undefined; + /** + * HKDF is a simple key derivation function defined in RFC 5869\. The given `ikm`,`salt` and `info` are used with the `digest` to derive a key of `keylen` bytes. + * + * The supplied `callback` function is called with two arguments: `err` and`derivedKey`. If an errors occurs while deriving the key, `err` will be set; + * otherwise `err` will be `null`. The successfully generated `derivedKey` will + * be passed to the callback as an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). An error will be thrown if any + * of the input arguments specify invalid values or types. + * + * ```js + * import { Buffer } from 'node:buffer'; + * const { + * hkdf, + * } = await import('node:crypto'); + * + * hkdf('sha512', 'key', 'salt', 'info', 64, (err, derivedKey) => { + * if (err) throw err; + * console.log(Buffer.from(derivedKey).toString('hex')); // '24156e2...5391653' + * }); + * ``` + * @since v15.0.0 + * @param digest The digest algorithm to use. + * @param ikm The input keying material. Must be provided but can be zero-length. + * @param salt The salt value. Must be provided but can be zero-length. + * @param info Additional info value. Must be provided but can be zero-length, and cannot be more than 1024 bytes. + * @param keylen The length of the key to generate. Must be greater than 0. The maximum allowable value is `255` times the number of bytes produced by the selected digest function (e.g. `sha512` + * generates 64-byte hashes, making the maximum HKDF output 16320 bytes). + */ + function hkdf( + digest: string, + irm: BinaryLike | KeyObject, + salt: BinaryLike, + info: BinaryLike, + keylen: number, + callback: (err: Error | null, derivedKey: ArrayBuffer) => void, + ): void; + /** + * Provides a synchronous HKDF key derivation function as defined in RFC 5869\. The + * given `ikm`, `salt` and `info` are used with the `digest` to derive a key of`keylen` bytes. + * + * The successfully generated `derivedKey` will be returned as an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). + * + * An error will be thrown if any of the input arguments specify invalid values or + * types, or if the derived key cannot be generated. + * + * ```js + * import { Buffer } from 'node:buffer'; + * const { + * hkdfSync, + * } = await import('node:crypto'); + * + * const derivedKey = hkdfSync('sha512', 'key', 'salt', 'info', 64); + * console.log(Buffer.from(derivedKey).toString('hex')); // '24156e2...5391653' + * ``` + * @since v15.0.0 + * @param digest The digest algorithm to use. + * @param ikm The input keying material. Must be provided but can be zero-length. + * @param salt The salt value. Must be provided but can be zero-length. + * @param info Additional info value. Must be provided but can be zero-length, and cannot be more than 1024 bytes. + * @param keylen The length of the key to generate. Must be greater than 0. The maximum allowable value is `255` times the number of bytes produced by the selected digest function (e.g. `sha512` + * generates 64-byte hashes, making the maximum HKDF output 16320 bytes). + */ + function hkdfSync( + digest: string, + ikm: BinaryLike | KeyObject, + salt: BinaryLike, + info: BinaryLike, + keylen: number, + ): ArrayBuffer; + interface SecureHeapUsage { + /** + * The total allocated secure heap size as specified using the `--secure-heap=n` command-line flag. + */ + total: number; + /** + * The minimum allocation from the secure heap as specified using the `--secure-heap-min` command-line flag. + */ + min: number; + /** + * The total number of bytes currently allocated from the secure heap. + */ + used: number; + /** + * The calculated ratio of `used` to `total` allocated bytes. + */ + utilization: number; + } + /** + * @since v15.6.0 + */ + function secureHeapUsed(): SecureHeapUsage; + interface RandomUUIDOptions { + /** + * By default, to improve performance, + * Node.js will pre-emptively generate and persistently cache enough + * random data to generate up to 128 random UUIDs. To generate a UUID + * without using the cache, set `disableEntropyCache` to `true`. + * + * @default `false` + */ + disableEntropyCache?: boolean | undefined; + } + type UUID = `${string}-${string}-${string}-${string}-${string}`; + /** + * Generates a random [RFC 4122](https://www.rfc-editor.org/rfc/rfc4122.txt) version 4 UUID. The UUID is generated using a + * cryptographic pseudorandom number generator. + * @since v15.6.0, v14.17.0 + */ + function randomUUID(options?: RandomUUIDOptions): UUID; + interface X509CheckOptions { + /** + * @default 'always' + */ + subject?: "always" | "default" | "never"; + /** + * @default true + */ + wildcards?: boolean; + /** + * @default true + */ + partialWildcards?: boolean; + /** + * @default false + */ + multiLabelWildcards?: boolean; + /** + * @default false + */ + singleLabelSubdomains?: boolean; + } + /** + * Encapsulates an X509 certificate and provides read-only access to + * its information. + * + * ```js + * const { X509Certificate } = await import('node:crypto'); + * + * const x509 = new X509Certificate('{... pem encoded cert ...}'); + * + * console.log(x509.subject); + * ``` + * @since v15.6.0 + */ + class X509Certificate { + /** + * Will be \`true\` if this is a Certificate Authority (CA) certificate. + * @since v15.6.0 + */ + readonly ca: boolean; + /** + * The SHA-1 fingerprint of this certificate. + * + * Because SHA-1 is cryptographically broken and because the security of SHA-1 is + * significantly worse than that of algorithms that are commonly used to sign + * certificates, consider using `x509.fingerprint256` instead. + * @since v15.6.0 + */ + readonly fingerprint: string; + /** + * The SHA-256 fingerprint of this certificate. + * @since v15.6.0 + */ + readonly fingerprint256: string; + /** + * The SHA-512 fingerprint of this certificate. + * + * Because computing the SHA-256 fingerprint is usually faster and because it is + * only half the size of the SHA-512 fingerprint, `x509.fingerprint256` may be + * a better choice. While SHA-512 presumably provides a higher level of security in + * general, the security of SHA-256 matches that of most algorithms that are + * commonly used to sign certificates. + * @since v17.2.0, v16.14.0 + */ + readonly fingerprint512: string; + /** + * The complete subject of this certificate. + * @since v15.6.0 + */ + readonly subject: string; + /** + * The subject alternative name specified for this certificate. + * + * This is a comma-separated list of subject alternative names. Each entry begins + * with a string identifying the kind of the subject alternative name followed by + * a colon and the value associated with the entry. + * + * Earlier versions of Node.js incorrectly assumed that it is safe to split this + * property at the two-character sequence `', '` (see [CVE-2021-44532](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44532)). However, + * both malicious and legitimate certificates can contain subject alternative names + * that include this sequence when represented as a string. + * + * After the prefix denoting the type of the entry, the remainder of each entry + * might be enclosed in quotes to indicate that the value is a JSON string literal. + * For backward compatibility, Node.js only uses JSON string literals within this + * property when necessary to avoid ambiguity. Third-party code should be prepared + * to handle both possible entry formats. + * @since v15.6.0 + */ + readonly subjectAltName: string | undefined; + /** + * A textual representation of the certificate's authority information access + * extension. + * + * This is a line feed separated list of access descriptions. Each line begins with + * the access method and the kind of the access location, followed by a colon and + * the value associated with the access location. + * + * After the prefix denoting the access method and the kind of the access location, + * the remainder of each line might be enclosed in quotes to indicate that the + * value is a JSON string literal. For backward compatibility, Node.js only uses + * JSON string literals within this property when necessary to avoid ambiguity. + * Third-party code should be prepared to handle both possible entry formats. + * @since v15.6.0 + */ + readonly infoAccess: string | undefined; + /** + * An array detailing the key usages for this certificate. + * @since v15.6.0 + */ + readonly keyUsage: string[]; + /** + * The issuer identification included in this certificate. + * @since v15.6.0 + */ + readonly issuer: string; + /** + * The issuer certificate or `undefined` if the issuer certificate is not + * available. + * @since v15.9.0 + */ + readonly issuerCertificate?: X509Certificate | undefined; + /** + * The public key `KeyObject` for this certificate. + * @since v15.6.0 + */ + readonly publicKey: KeyObject; + /** + * A `Buffer` containing the DER encoding of this certificate. + * @since v15.6.0 + */ + readonly raw: Buffer; + /** + * The serial number of this certificate. + * + * Serial numbers are assigned by certificate authorities and do not uniquely + * identify certificates. Consider using `x509.fingerprint256` as a unique + * identifier instead. + * @since v15.6.0 + */ + readonly serialNumber: string; + /** + * The date/time from which this certificate is considered valid. + * @since v15.6.0 + */ + readonly validFrom: string; + /** + * The date/time until which this certificate is considered valid. + * @since v15.6.0 + */ + readonly validTo: string; + constructor(buffer: BinaryLike); + /** + * Checks whether the certificate matches the given email address. + * + * If the `'subject'` option is undefined or set to `'default'`, the certificate + * subject is only considered if the subject alternative name extension either does + * not exist or does not contain any email addresses. + * + * If the `'subject'` option is set to `'always'` and if the subject alternative + * name extension either does not exist or does not contain a matching email + * address, the certificate subject is considered. + * + * If the `'subject'` option is set to `'never'`, the certificate subject is never + * considered, even if the certificate contains no subject alternative names. + * @since v15.6.0 + * @return Returns `email` if the certificate matches, `undefined` if it does not. + */ + checkEmail(email: string, options?: Pick): string | undefined; + /** + * Checks whether the certificate matches the given host name. + * + * If the certificate matches the given host name, the matching subject name is + * returned. The returned name might be an exact match (e.g., `foo.example.com`) + * or it might contain wildcards (e.g., `*.example.com`). Because host name + * comparisons are case-insensitive, the returned subject name might also differ + * from the given `name` in capitalization. + * + * If the `'subject'` option is undefined or set to `'default'`, the certificate + * subject is only considered if the subject alternative name extension either does + * not exist or does not contain any DNS names. This behavior is consistent with [RFC 2818](https://www.rfc-editor.org/rfc/rfc2818.txt) ("HTTP Over TLS"). + * + * If the `'subject'` option is set to `'always'` and if the subject alternative + * name extension either does not exist or does not contain a matching DNS name, + * the certificate subject is considered. + * + * If the `'subject'` option is set to `'never'`, the certificate subject is never + * considered, even if the certificate contains no subject alternative names. + * @since v15.6.0 + * @return Returns a subject name that matches `name`, or `undefined` if no subject name matches `name`. + */ + checkHost(name: string, options?: X509CheckOptions): string | undefined; + /** + * Checks whether the certificate matches the given IP address (IPv4 or IPv6). + * + * Only [RFC 5280](https://www.rfc-editor.org/rfc/rfc5280.txt) `iPAddress` subject alternative names are considered, and they + * must match the given `ip` address exactly. Other subject alternative names as + * well as the subject field of the certificate are ignored. + * @since v15.6.0 + * @return Returns `ip` if the certificate matches, `undefined` if it does not. + */ + checkIP(ip: string): string | undefined; + /** + * Checks whether this certificate was issued by the given `otherCert`. + * @since v15.6.0 + */ + checkIssued(otherCert: X509Certificate): boolean; + /** + * Checks whether the public key for this certificate is consistent with + * the given private key. + * @since v15.6.0 + * @param privateKey A private key. + */ + checkPrivateKey(privateKey: KeyObject): boolean; + /** + * There is no standard JSON encoding for X509 certificates. The`toJSON()` method returns a string containing the PEM encoded + * certificate. + * @since v15.6.0 + */ + toJSON(): string; + /** + * Returns information about this certificate using the legacy `certificate object` encoding. + * @since v15.6.0 + */ + toLegacyObject(): PeerCertificate; + /** + * Returns the PEM-encoded certificate. + * @since v15.6.0 + */ + toString(): string; + /** + * Verifies that this certificate was signed by the given public key. + * Does not perform any other validation checks on the certificate. + * @since v15.6.0 + * @param publicKey A public key. + */ + verify(publicKey: KeyObject): boolean; + } + type LargeNumberLike = NodeJS.ArrayBufferView | SharedArrayBuffer | ArrayBuffer | bigint; + interface GeneratePrimeOptions { + add?: LargeNumberLike | undefined; + rem?: LargeNumberLike | undefined; + /** + * @default false + */ + safe?: boolean | undefined; + bigint?: boolean | undefined; + } + interface GeneratePrimeOptionsBigInt extends GeneratePrimeOptions { + bigint: true; + } + interface GeneratePrimeOptionsArrayBuffer extends GeneratePrimeOptions { + bigint?: false | undefined; + } + /** + * Generates a pseudorandom prime of `size` bits. + * + * If `options.safe` is `true`, the prime will be a safe prime -- that is,`(prime - 1) / 2` will also be a prime. + * + * The `options.add` and `options.rem` parameters can be used to enforce additional + * requirements, e.g., for Diffie-Hellman: + * + * * If `options.add` and `options.rem` are both set, the prime will satisfy the + * condition that `prime % add = rem`. + * * If only `options.add` is set and `options.safe` is not `true`, the prime will + * satisfy the condition that `prime % add = 1`. + * * If only `options.add` is set and `options.safe` is set to `true`, the prime + * will instead satisfy the condition that `prime % add = 3`. This is necessary + * because `prime % add = 1` for `options.add > 2` would contradict the condition + * enforced by `options.safe`. + * * `options.rem` is ignored if `options.add` is not given. + * + * Both `options.add` and `options.rem` must be encoded as big-endian sequences + * if given as an `ArrayBuffer`, `SharedArrayBuffer`, `TypedArray`, `Buffer`, or`DataView`. + * + * By default, the prime is encoded as a big-endian sequence of octets + * in an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). If the `bigint` option is `true`, then a + * [bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) is provided. + * @since v15.8.0 + * @param size The size (in bits) of the prime to generate. + */ + function generatePrime(size: number, callback: (err: Error | null, prime: ArrayBuffer) => void): void; + function generatePrime( + size: number, + options: GeneratePrimeOptionsBigInt, + callback: (err: Error | null, prime: bigint) => void, + ): void; + function generatePrime( + size: number, + options: GeneratePrimeOptionsArrayBuffer, + callback: (err: Error | null, prime: ArrayBuffer) => void, + ): void; + function generatePrime( + size: number, + options: GeneratePrimeOptions, + callback: (err: Error | null, prime: ArrayBuffer | bigint) => void, + ): void; + /** + * Generates a pseudorandom prime of `size` bits. + * + * If `options.safe` is `true`, the prime will be a safe prime -- that is,`(prime - 1) / 2` will also be a prime. + * + * The `options.add` and `options.rem` parameters can be used to enforce additional + * requirements, e.g., for Diffie-Hellman: + * + * * If `options.add` and `options.rem` are both set, the prime will satisfy the + * condition that `prime % add = rem`. + * * If only `options.add` is set and `options.safe` is not `true`, the prime will + * satisfy the condition that `prime % add = 1`. + * * If only `options.add` is set and `options.safe` is set to `true`, the prime + * will instead satisfy the condition that `prime % add = 3`. This is necessary + * because `prime % add = 1` for `options.add > 2` would contradict the condition + * enforced by `options.safe`. + * * `options.rem` is ignored if `options.add` is not given. + * + * Both `options.add` and `options.rem` must be encoded as big-endian sequences + * if given as an `ArrayBuffer`, `SharedArrayBuffer`, `TypedArray`, `Buffer`, or`DataView`. + * + * By default, the prime is encoded as a big-endian sequence of octets + * in an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). If the `bigint` option is `true`, then a + * [bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) is provided. + * @since v15.8.0 + * @param size The size (in bits) of the prime to generate. + */ + function generatePrimeSync(size: number): ArrayBuffer; + function generatePrimeSync(size: number, options: GeneratePrimeOptionsBigInt): bigint; + function generatePrimeSync(size: number, options: GeneratePrimeOptionsArrayBuffer): ArrayBuffer; + function generatePrimeSync(size: number, options: GeneratePrimeOptions): ArrayBuffer | bigint; + interface CheckPrimeOptions { + /** + * The number of Miller-Rabin probabilistic primality iterations to perform. + * When the value is 0 (zero), a number of checks is used that yields a false positive rate of at most `2**-64` for random input. + * Care must be used when selecting a number of checks. + * Refer to the OpenSSL documentation for the BN_is_prime_ex function nchecks options for more details. + * + * @default 0 + */ + checks?: number | undefined; + } + /** + * Checks the primality of the `candidate`. + * @since v15.8.0 + * @param candidate A possible prime encoded as a sequence of big endian octets of arbitrary length. + */ + function checkPrime(value: LargeNumberLike, callback: (err: Error | null, result: boolean) => void): void; + function checkPrime( + value: LargeNumberLike, + options: CheckPrimeOptions, + callback: (err: Error | null, result: boolean) => void, + ): void; + /** + * Checks the primality of the `candidate`. + * @since v15.8.0 + * @param candidate A possible prime encoded as a sequence of big endian octets of arbitrary length. + * @return `true` if the candidate is a prime with an error probability less than `0.25 ** options.checks`. + */ + function checkPrimeSync(candidate: LargeNumberLike, options?: CheckPrimeOptions): boolean; + /** + * Load and set the `engine` for some or all OpenSSL functions (selected by flags). + * + * `engine` could be either an id or a path to the engine's shared library. + * + * The optional `flags` argument uses `ENGINE_METHOD_ALL` by default. The `flags`is a bit field taking one of or a mix of the following flags (defined in`crypto.constants`): + * + * * `crypto.constants.ENGINE_METHOD_RSA` + * * `crypto.constants.ENGINE_METHOD_DSA` + * * `crypto.constants.ENGINE_METHOD_DH` + * * `crypto.constants.ENGINE_METHOD_RAND` + * * `crypto.constants.ENGINE_METHOD_EC` + * * `crypto.constants.ENGINE_METHOD_CIPHERS` + * * `crypto.constants.ENGINE_METHOD_DIGESTS` + * * `crypto.constants.ENGINE_METHOD_PKEY_METHS` + * * `crypto.constants.ENGINE_METHOD_PKEY_ASN1_METHS` + * * `crypto.constants.ENGINE_METHOD_ALL` + * * `crypto.constants.ENGINE_METHOD_NONE` + * @since v0.11.11 + * @param flags + */ + function setEngine(engine: string, flags?: number): void; + /** + * A convenient alias for {@link webcrypto.getRandomValues}. This + * implementation is not compliant with the Web Crypto spec, to write + * web-compatible code use {@link webcrypto.getRandomValues} instead. + * @since v17.4.0 + * @return Returns `typedArray`. + */ + function getRandomValues(typedArray: T): T; + /** + * A convenient alias for `crypto.webcrypto.subtle`. + * @since v17.4.0 + */ + const subtle: webcrypto.SubtleCrypto; + /** + * An implementation of the Web Crypto API standard. + * + * See the {@link https://nodejs.org/docs/latest/api/webcrypto.html Web Crypto API documentation} for details. + * @since v15.0.0 + */ + const webcrypto: webcrypto.Crypto; + namespace webcrypto { + type BufferSource = ArrayBufferView | ArrayBuffer; + type KeyFormat = "jwk" | "pkcs8" | "raw" | "spki"; + type KeyType = "private" | "public" | "secret"; + type KeyUsage = + | "decrypt" + | "deriveBits" + | "deriveKey" + | "encrypt" + | "sign" + | "unwrapKey" + | "verify" + | "wrapKey"; + type AlgorithmIdentifier = Algorithm | string; + type HashAlgorithmIdentifier = AlgorithmIdentifier; + type NamedCurve = string; + type BigInteger = Uint8Array; + interface AesCbcParams extends Algorithm { + iv: BufferSource; + } + interface AesCtrParams extends Algorithm { + counter: BufferSource; + length: number; + } + interface AesDerivedKeyParams extends Algorithm { + length: number; + } + interface AesGcmParams extends Algorithm { + additionalData?: BufferSource; + iv: BufferSource; + tagLength?: number; + } + interface AesKeyAlgorithm extends KeyAlgorithm { + length: number; + } + interface AesKeyGenParams extends Algorithm { + length: number; + } + interface Algorithm { + name: string; + } + interface EcKeyAlgorithm extends KeyAlgorithm { + namedCurve: NamedCurve; + } + interface EcKeyGenParams extends Algorithm { + namedCurve: NamedCurve; + } + interface EcKeyImportParams extends Algorithm { + namedCurve: NamedCurve; + } + interface EcdhKeyDeriveParams extends Algorithm { + public: CryptoKey; + } + interface EcdsaParams extends Algorithm { + hash: HashAlgorithmIdentifier; + } + interface Ed448Params extends Algorithm { + context?: BufferSource; + } + interface HkdfParams extends Algorithm { + hash: HashAlgorithmIdentifier; + info: BufferSource; + salt: BufferSource; + } + interface HmacImportParams extends Algorithm { + hash: HashAlgorithmIdentifier; + length?: number; + } + interface HmacKeyAlgorithm extends KeyAlgorithm { + hash: KeyAlgorithm; + length: number; + } + interface HmacKeyGenParams extends Algorithm { + hash: HashAlgorithmIdentifier; + length?: number; + } + interface JsonWebKey { + alg?: string; + crv?: string; + d?: string; + dp?: string; + dq?: string; + e?: string; + ext?: boolean; + k?: string; + key_ops?: string[]; + kty?: string; + n?: string; + oth?: RsaOtherPrimesInfo[]; + p?: string; + q?: string; + qi?: string; + use?: string; + x?: string; + y?: string; + } + interface KeyAlgorithm { + name: string; + } + interface Pbkdf2Params extends Algorithm { + hash: HashAlgorithmIdentifier; + iterations: number; + salt: BufferSource; + } + interface RsaHashedImportParams extends Algorithm { + hash: HashAlgorithmIdentifier; + } + interface RsaHashedKeyAlgorithm extends RsaKeyAlgorithm { + hash: KeyAlgorithm; + } + interface RsaHashedKeyGenParams extends RsaKeyGenParams { + hash: HashAlgorithmIdentifier; + } + interface RsaKeyAlgorithm extends KeyAlgorithm { + modulusLength: number; + publicExponent: BigInteger; + } + interface RsaKeyGenParams extends Algorithm { + modulusLength: number; + publicExponent: BigInteger; + } + interface RsaOaepParams extends Algorithm { + label?: BufferSource; + } + interface RsaOtherPrimesInfo { + d?: string; + r?: string; + t?: string; + } + interface RsaPssParams extends Algorithm { + saltLength: number; + } + /** + * Calling `require('node:crypto').webcrypto` returns an instance of the `Crypto` class. + * `Crypto` is a singleton that provides access to the remainder of the crypto API. + * @since v15.0.0 + */ + interface Crypto { + /** + * Provides access to the `SubtleCrypto` API. + * @since v15.0.0 + */ + readonly subtle: SubtleCrypto; + /** + * Generates cryptographically strong random values. + * The given `typedArray` is filled with random values, and a reference to `typedArray` is returned. + * + * The given `typedArray` must be an integer-based instance of {@link NodeJS.TypedArray}, i.e. `Float32Array` and `Float64Array` are not accepted. + * + * An error will be thrown if the given `typedArray` is larger than 65,536 bytes. + * @since v15.0.0 + */ + getRandomValues>(typedArray: T): T; + /** + * Generates a random {@link https://www.rfc-editor.org/rfc/rfc4122.txt RFC 4122} version 4 UUID. + * The UUID is generated using a cryptographic pseudorandom number generator. + * @since v16.7.0 + */ + randomUUID(): UUID; + CryptoKey: CryptoKeyConstructor; + } + // This constructor throws ILLEGAL_CONSTRUCTOR so it should not be newable. + interface CryptoKeyConstructor { + /** Illegal constructor */ + (_: { readonly _: unique symbol }): never; // Allows instanceof to work but not be callable by the user. + readonly length: 0; + readonly name: "CryptoKey"; + readonly prototype: CryptoKey; + } + /** + * @since v15.0.0 + */ + interface CryptoKey { + /** + * An object detailing the algorithm for which the key can be used along with additional algorithm-specific parameters. + * @since v15.0.0 + */ + readonly algorithm: KeyAlgorithm; + /** + * When `true`, the {@link CryptoKey} can be extracted using either `subtleCrypto.exportKey()` or `subtleCrypto.wrapKey()`. + * @since v15.0.0 + */ + readonly extractable: boolean; + /** + * A string identifying whether the key is a symmetric (`'secret'`) or asymmetric (`'private'` or `'public'`) key. + * @since v15.0.0 + */ + readonly type: KeyType; + /** + * An array of strings identifying the operations for which the key may be used. + * + * The possible usages are: + * - `'encrypt'` - The key may be used to encrypt data. + * - `'decrypt'` - The key may be used to decrypt data. + * - `'sign'` - The key may be used to generate digital signatures. + * - `'verify'` - The key may be used to verify digital signatures. + * - `'deriveKey'` - The key may be used to derive a new key. + * - `'deriveBits'` - The key may be used to derive bits. + * - `'wrapKey'` - The key may be used to wrap another key. + * - `'unwrapKey'` - The key may be used to unwrap another key. + * + * Valid key usages depend on the key algorithm (identified by `cryptokey.algorithm.name`). + * @since v15.0.0 + */ + readonly usages: KeyUsage[]; + } + /** + * The `CryptoKeyPair` is a simple dictionary object with `publicKey` and `privateKey` properties, representing an asymmetric key pair. + * @since v15.0.0 + */ + interface CryptoKeyPair { + /** + * A {@link CryptoKey} whose type will be `'private'`. + * @since v15.0.0 + */ + privateKey: CryptoKey; + /** + * A {@link CryptoKey} whose type will be `'public'`. + * @since v15.0.0 + */ + publicKey: CryptoKey; + } + /** + * @since v15.0.0 + */ + interface SubtleCrypto { + /** + * Using the method and parameters specified in `algorithm` and the keying material provided by `key`, + * `subtle.decrypt()` attempts to decipher the provided `data`. If successful, + * the returned promise will be resolved with an `` containing the plaintext result. + * + * The algorithms currently supported include: + * + * - `'RSA-OAEP'` + * - `'AES-CTR'` + * - `'AES-CBC'` + * - `'AES-GCM'` + * @since v15.0.0 + */ + decrypt( + algorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, + key: CryptoKey, + data: BufferSource, + ): Promise; + /** + * Using the method and parameters specified in `algorithm` and the keying material provided by `baseKey`, + * `subtle.deriveBits()` attempts to generate `length` bits. + * The Node.js implementation requires that when `length` is a number it must be multiple of `8`. + * When `length` is `null` the maximum number of bits for a given algorithm is generated. This is allowed + * for the `'ECDH'`, `'X25519'`, and `'X448'` algorithms. + * If successful, the returned promise will be resolved with an `` containing the generated data. + * + * The algorithms currently supported include: + * + * - `'ECDH'` + * - `'X25519'` + * - `'X448'` + * - `'HKDF'` + * - `'PBKDF2'` + * @since v15.0.0 + */ + deriveBits(algorithm: EcdhKeyDeriveParams, baseKey: CryptoKey, length: number | null): Promise; + deriveBits( + algorithm: AlgorithmIdentifier | HkdfParams | Pbkdf2Params, + baseKey: CryptoKey, + length: number, + ): Promise; + /** + * Using the method and parameters specified in `algorithm`, and the keying material provided by `baseKey`, + * `subtle.deriveKey()` attempts to generate a new ` based on the method and parameters in `derivedKeyAlgorithm`. + * + * Calling `subtle.deriveKey()` is equivalent to calling `subtle.deriveBits()` to generate raw keying material, + * then passing the result into the `subtle.importKey()` method using the `deriveKeyAlgorithm`, `extractable`, and `keyUsages` parameters as input. + * + * The algorithms currently supported include: + * + * - `'ECDH'` + * - `'X25519'` + * - `'X448'` + * - `'HKDF'` + * - `'PBKDF2'` + * @param keyUsages See {@link https://nodejs.org/docs/latest/api/webcrypto.html#cryptokeyusages Key usages}. + * @since v15.0.0 + */ + deriveKey( + algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | HkdfParams | Pbkdf2Params, + baseKey: CryptoKey, + derivedKeyAlgorithm: + | AlgorithmIdentifier + | AesDerivedKeyParams + | HmacImportParams + | HkdfParams + | Pbkdf2Params, + extractable: boolean, + keyUsages: ReadonlyArray, + ): Promise; + /** + * Using the method identified by `algorithm`, `subtle.digest()` attempts to generate a digest of `data`. + * If successful, the returned promise is resolved with an `` containing the computed digest. + * + * If `algorithm` is provided as a ``, it must be one of: + * + * - `'SHA-1'` + * - `'SHA-256'` + * - `'SHA-384'` + * - `'SHA-512'` + * + * If `algorithm` is provided as an ``, it must have a `name` property whose value is one of the above. + * @since v15.0.0 + */ + digest(algorithm: AlgorithmIdentifier, data: BufferSource): Promise; + /** + * Using the method and parameters specified by `algorithm` and the keying material provided by `key`, + * `subtle.encrypt()` attempts to encipher `data`. If successful, + * the returned promise is resolved with an `` containing the encrypted result. + * + * The algorithms currently supported include: + * + * - `'RSA-OAEP'` + * - `'AES-CTR'` + * - `'AES-CBC'` + * - `'AES-GCM'` + * @since v15.0.0 + */ + encrypt( + algorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, + key: CryptoKey, + data: BufferSource, + ): Promise; + /** + * Exports the given key into the specified format, if supported. + * + * If the `` is not extractable, the returned promise will reject. + * + * When `format` is either `'pkcs8'` or `'spki'` and the export is successful, + * the returned promise will be resolved with an `` containing the exported key data. + * + * When `format` is `'jwk'` and the export is successful, the returned promise will be resolved with a + * JavaScript object conforming to the {@link https://tools.ietf.org/html/rfc7517 JSON Web Key} specification. + * @param format Must be one of `'raw'`, `'pkcs8'`, `'spki'`, or `'jwk'`. + * @returns `` containing ``. + * @since v15.0.0 + */ + exportKey(format: "jwk", key: CryptoKey): Promise; + exportKey(format: Exclude, key: CryptoKey): Promise; + /** + * Using the method and parameters provided in `algorithm`, + * `subtle.generateKey()` attempts to generate new keying material. + * Depending the method used, the method may generate either a single `` or a ``. + * + * The `` (public and private key) generating algorithms supported include: + * + * - `'RSASSA-PKCS1-v1_5'` + * - `'RSA-PSS'` + * - `'RSA-OAEP'` + * - `'ECDSA'` + * - `'Ed25519'` + * - `'Ed448'` + * - `'ECDH'` + * - `'X25519'` + * - `'X448'` + * The `` (secret key) generating algorithms supported include: + * + * - `'HMAC'` + * - `'AES-CTR'` + * - `'AES-CBC'` + * - `'AES-GCM'` + * - `'AES-KW'` + * @param keyUsages See {@link https://nodejs.org/docs/latest/api/webcrypto.html#cryptokeyusages Key usages}. + * @since v15.0.0 + */ + generateKey( + algorithm: RsaHashedKeyGenParams | EcKeyGenParams, + extractable: boolean, + keyUsages: ReadonlyArray, + ): Promise; + generateKey( + algorithm: AesKeyGenParams | HmacKeyGenParams | Pbkdf2Params, + extractable: boolean, + keyUsages: ReadonlyArray, + ): Promise; + generateKey( + algorithm: AlgorithmIdentifier, + extractable: boolean, + keyUsages: KeyUsage[], + ): Promise; + /** + * The `subtle.importKey()` method attempts to interpret the provided `keyData` as the given `format` + * to create a `` instance using the provided `algorithm`, `extractable`, and `keyUsages` arguments. + * If the import is successful, the returned promise will be resolved with the created ``. + * + * If importing a `'PBKDF2'` key, `extractable` must be `false`. + * @param format Must be one of `'raw'`, `'pkcs8'`, `'spki'`, or `'jwk'`. + * @param keyUsages See {@link https://nodejs.org/docs/latest/api/webcrypto.html#cryptokeyusages Key usages}. + * @since v15.0.0 + */ + importKey( + format: "jwk", + keyData: JsonWebKey, + algorithm: + | AlgorithmIdentifier + | RsaHashedImportParams + | EcKeyImportParams + | HmacImportParams + | AesKeyAlgorithm, + extractable: boolean, + keyUsages: ReadonlyArray, + ): Promise; + importKey( + format: Exclude, + keyData: BufferSource, + algorithm: + | AlgorithmIdentifier + | RsaHashedImportParams + | EcKeyImportParams + | HmacImportParams + | AesKeyAlgorithm, + extractable: boolean, + keyUsages: KeyUsage[], + ): Promise; + /** + * Using the method and parameters given by `algorithm` and the keying material provided by `key`, + * `subtle.sign()` attempts to generate a cryptographic signature of `data`. If successful, + * the returned promise is resolved with an `` containing the generated signature. + * + * The algorithms currently supported include: + * + * - `'RSASSA-PKCS1-v1_5'` + * - `'RSA-PSS'` + * - `'ECDSA'` + * - `'Ed25519'` + * - `'Ed448'` + * - `'HMAC'` + * @since v15.0.0 + */ + sign( + algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams | Ed448Params, + key: CryptoKey, + data: BufferSource, + ): Promise; + /** + * In cryptography, "wrapping a key" refers to exporting and then encrypting the keying material. + * The `subtle.unwrapKey()` method attempts to decrypt a wrapped key and create a `` instance. + * It is equivalent to calling `subtle.decrypt()` first on the encrypted key data (using the `wrappedKey`, `unwrapAlgo`, and `unwrappingKey` arguments as input) + * then passing the results in to the `subtle.importKey()` method using the `unwrappedKeyAlgo`, `extractable`, and `keyUsages` arguments as inputs. + * If successful, the returned promise is resolved with a `` object. + * + * The wrapping algorithms currently supported include: + * + * - `'RSA-OAEP'` + * - `'AES-CTR'` + * - `'AES-CBC'` + * - `'AES-GCM'` + * - `'AES-KW'` + * + * The unwrapped key algorithms supported include: + * + * - `'RSASSA-PKCS1-v1_5'` + * - `'RSA-PSS'` + * - `'RSA-OAEP'` + * - `'ECDSA'` + * - `'Ed25519'` + * - `'Ed448'` + * - `'ECDH'` + * - `'X25519'` + * - `'X448'` + * - `'HMAC'` + * - `'AES-CTR'` + * - `'AES-CBC'` + * - `'AES-GCM'` + * - `'AES-KW'` + * @param format Must be one of `'raw'`, `'pkcs8'`, `'spki'`, or `'jwk'`. + * @param keyUsages See {@link https://nodejs.org/docs/latest/api/webcrypto.html#cryptokeyusages Key usages}. + * @since v15.0.0 + */ + unwrapKey( + format: KeyFormat, + wrappedKey: BufferSource, + unwrappingKey: CryptoKey, + unwrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, + unwrappedKeyAlgorithm: + | AlgorithmIdentifier + | RsaHashedImportParams + | EcKeyImportParams + | HmacImportParams + | AesKeyAlgorithm, + extractable: boolean, + keyUsages: KeyUsage[], + ): Promise; + /** + * Using the method and parameters given in `algorithm` and the keying material provided by `key`, + * `subtle.verify()` attempts to verify that `signature` is a valid cryptographic signature of `data`. + * The returned promise is resolved with either `true` or `false`. + * + * The algorithms currently supported include: + * + * - `'RSASSA-PKCS1-v1_5'` + * - `'RSA-PSS'` + * - `'ECDSA'` + * - `'Ed25519'` + * - `'Ed448'` + * - `'HMAC'` + * @since v15.0.0 + */ + verify( + algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams | Ed448Params, + key: CryptoKey, + signature: BufferSource, + data: BufferSource, + ): Promise; + /** + * In cryptography, "wrapping a key" refers to exporting and then encrypting the keying material. + * The `subtle.wrapKey()` method exports the keying material into the format identified by `format`, + * then encrypts it using the method and parameters specified by `wrapAlgo` and the keying material provided by `wrappingKey`. + * It is the equivalent to calling `subtle.exportKey()` using `format` and `key` as the arguments, + * then passing the result to the `subtle.encrypt()` method using `wrappingKey` and `wrapAlgo` as inputs. + * If successful, the returned promise will be resolved with an `` containing the encrypted key data. + * + * The wrapping algorithms currently supported include: + * + * - `'RSA-OAEP'` + * - `'AES-CTR'` + * - `'AES-CBC'` + * - `'AES-GCM'` + * - `'AES-KW'` + * @param format Must be one of `'raw'`, `'pkcs8'`, `'spki'`, or `'jwk'`. + * @since v15.0.0 + */ + wrapKey( + format: KeyFormat, + key: CryptoKey, + wrappingKey: CryptoKey, + wrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, + ): Promise; + } + } +} +declare module "node:crypto" { + export * from "crypto"; +} diff --git a/node_modules/@types/node/dgram.d.ts b/node_modules/@types/node/dgram.d.ts new file mode 100644 index 00000000..79cfcd45 --- /dev/null +++ b/node_modules/@types/node/dgram.d.ts @@ -0,0 +1,586 @@ +/** + * The `node:dgram` module provides an implementation of UDP datagram sockets. + * + * ```js + * import dgram from 'node:dgram'; + * + * const server = dgram.createSocket('udp4'); + * + * server.on('error', (err) => { + * console.error(`server error:\n${err.stack}`); + * server.close(); + * }); + * + * server.on('message', (msg, rinfo) => { + * console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`); + * }); + * + * server.on('listening', () => { + * const address = server.address(); + * console.log(`server listening ${address.address}:${address.port}`); + * }); + * + * server.bind(41234); + * // Prints: server listening 0.0.0.0:41234 + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/dgram.js) + */ +declare module "dgram" { + import { AddressInfo } from "node:net"; + import * as dns from "node:dns"; + import { Abortable, EventEmitter } from "node:events"; + interface RemoteInfo { + address: string; + family: "IPv4" | "IPv6"; + port: number; + size: number; + } + interface BindOptions { + port?: number | undefined; + address?: string | undefined; + exclusive?: boolean | undefined; + fd?: number | undefined; + } + type SocketType = "udp4" | "udp6"; + interface SocketOptions extends Abortable { + type: SocketType; + reuseAddr?: boolean | undefined; + /** + * @default false + */ + ipv6Only?: boolean | undefined; + recvBufferSize?: number | undefined; + sendBufferSize?: number | undefined; + lookup?: + | (( + hostname: string, + options: dns.LookupOneOptions, + callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void, + ) => void) + | undefined; + } + /** + * Creates a `dgram.Socket` object. Once the socket is created, calling `socket.bind()` will instruct the socket to begin listening for datagram + * messages. When `address` and `port` are not passed to `socket.bind()` the + * method will bind the socket to the "all interfaces" address on a random port + * (it does the right thing for both `udp4` and `udp6` sockets). The bound address + * and port can be retrieved using `socket.address().address` and `socket.address().port`. + * + * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.close()` on the socket: + * + * ```js + * const controller = new AbortController(); + * const { signal } = controller; + * const server = dgram.createSocket({ type: 'udp4', signal }); + * server.on('message', (msg, rinfo) => { + * console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`); + * }); + * // Later, when you want to close the server. + * controller.abort(); + * ``` + * @since v0.11.13 + * @param options Available options are: + * @param callback Attached as a listener for `'message'` events. Optional. + */ + function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; + function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; + /** + * Encapsulates the datagram functionality. + * + * New instances of `dgram.Socket` are created using {@link createSocket}. + * The `new` keyword is not to be used to create `dgram.Socket` instances. + * @since v0.1.99 + */ + class Socket extends EventEmitter { + /** + * Tells the kernel to join a multicast group at the given `multicastAddress` and`multicastInterface` using the `IP_ADD_MEMBERSHIP` socket option. If the`multicastInterface` argument is not + * specified, the operating system will choose + * one interface and will add membership to it. To add membership to every + * available interface, call `addMembership` multiple times, once per interface. + * + * When called on an unbound socket, this method will implicitly bind to a random + * port, listening on all interfaces. + * + * When sharing a UDP socket across multiple `cluster` workers, the`socket.addMembership()` function must be called only once or an`EADDRINUSE` error will occur: + * + * ```js + * import cluster from 'node:cluster'; + * import dgram from 'node:dgram'; + * + * if (cluster.isPrimary) { + * cluster.fork(); // Works ok. + * cluster.fork(); // Fails with EADDRINUSE. + * } else { + * const s = dgram.createSocket('udp4'); + * s.bind(1234, () => { + * s.addMembership('224.0.0.114'); + * }); + * } + * ``` + * @since v0.6.9 + */ + addMembership(multicastAddress: string, multicastInterface?: string): void; + /** + * Returns an object containing the address information for a socket. + * For UDP sockets, this object will contain `address`, `family`, and `port`properties. + * + * This method throws `EBADF` if called on an unbound socket. + * @since v0.1.99 + */ + address(): AddressInfo; + /** + * For UDP sockets, causes the `dgram.Socket` to listen for datagram + * messages on a named `port` and optional `address`. If `port` is not + * specified or is `0`, the operating system will attempt to bind to a + * random port. If `address` is not specified, the operating system will + * attempt to listen on all addresses. Once binding is complete, a`'listening'` event is emitted and the optional `callback` function is + * called. + * + * Specifying both a `'listening'` event listener and passing a`callback` to the `socket.bind()` method is not harmful but not very + * useful. + * + * A bound datagram socket keeps the Node.js process running to receive + * datagram messages. + * + * If binding fails, an `'error'` event is generated. In rare case (e.g. + * attempting to bind with a closed socket), an `Error` may be thrown. + * + * Example of a UDP server listening on port 41234: + * + * ```js + * import dgram from 'node:dgram'; + * + * const server = dgram.createSocket('udp4'); + * + * server.on('error', (err) => { + * console.error(`server error:\n${err.stack}`); + * server.close(); + * }); + * + * server.on('message', (msg, rinfo) => { + * console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`); + * }); + * + * server.on('listening', () => { + * const address = server.address(); + * console.log(`server listening ${address.address}:${address.port}`); + * }); + * + * server.bind(41234); + * // Prints: server listening 0.0.0.0:41234 + * ``` + * @since v0.1.99 + * @param callback with no parameters. Called when binding is complete. + */ + bind(port?: number, address?: string, callback?: () => void): this; + bind(port?: number, callback?: () => void): this; + bind(callback?: () => void): this; + bind(options: BindOptions, callback?: () => void): this; + /** + * Close the underlying socket and stop listening for data on it. If a callback is + * provided, it is added as a listener for the `'close'` event. + * @since v0.1.99 + * @param callback Called when the socket has been closed. + */ + close(callback?: () => void): this; + /** + * Associates the `dgram.Socket` to a remote address and port. Every + * message sent by this handle is automatically sent to that destination. Also, + * the socket will only receive messages from that remote peer. + * Trying to call `connect()` on an already connected socket will result + * in an `ERR_SOCKET_DGRAM_IS_CONNECTED` exception. If `address` is not + * provided, `'127.0.0.1'` (for `udp4` sockets) or `'::1'` (for `udp6` sockets) + * will be used by default. Once the connection is complete, a `'connect'` event + * is emitted and the optional `callback` function is called. In case of failure, + * the `callback` is called or, failing this, an `'error'` event is emitted. + * @since v12.0.0 + * @param callback Called when the connection is completed or on error. + */ + connect(port: number, address?: string, callback?: () => void): void; + connect(port: number, callback: () => void): void; + /** + * A synchronous function that disassociates a connected `dgram.Socket` from + * its remote address. Trying to call `disconnect()` on an unbound or already + * disconnected socket will result in an `ERR_SOCKET_DGRAM_NOT_CONNECTED` exception. + * @since v12.0.0 + */ + disconnect(): void; + /** + * Instructs the kernel to leave a multicast group at `multicastAddress` using the`IP_DROP_MEMBERSHIP` socket option. This method is automatically called by the + * kernel when the socket is closed or the process terminates, so most apps will + * never have reason to call this. + * + * If `multicastInterface` is not specified, the operating system will attempt to + * drop membership on all valid interfaces. + * @since v0.6.9 + */ + dropMembership(multicastAddress: string, multicastInterface?: string): void; + /** + * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket. + * @since v8.7.0 + * @return the `SO_RCVBUF` socket receive buffer size in bytes. + */ + getRecvBufferSize(): number; + /** + * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket. + * @since v8.7.0 + * @return the `SO_SNDBUF` socket send buffer size in bytes. + */ + getSendBufferSize(): number; + /** + * By default, binding a socket will cause it to block the Node.js process from + * exiting as long as the socket is open. The `socket.unref()` method can be used + * to exclude the socket from the reference counting that keeps the Node.js + * process active. The `socket.ref()` method adds the socket back to the reference + * counting and restores the default behavior. + * + * Calling `socket.ref()` multiples times will have no additional effect. + * + * The `socket.ref()` method returns a reference to the socket so calls can be + * chained. + * @since v0.9.1 + */ + ref(): this; + /** + * Returns an object containing the `address`, `family`, and `port` of the remote + * endpoint. This method throws an `ERR_SOCKET_DGRAM_NOT_CONNECTED` exception + * if the socket is not connected. + * @since v12.0.0 + */ + remoteAddress(): AddressInfo; + /** + * Broadcasts a datagram on the socket. + * For connectionless sockets, the destination `port` and `address` must be + * specified. Connected sockets, on the other hand, will use their associated + * remote endpoint, so the `port` and `address` arguments must not be set. + * + * The `msg` argument contains the message to be sent. + * Depending on its type, different behavior can apply. If `msg` is a `Buffer`, + * any `TypedArray` or a `DataView`, + * the `offset` and `length` specify the offset within the `Buffer` where the + * message begins and the number of bytes in the message, respectively. + * If `msg` is a `String`, then it is automatically converted to a `Buffer`with `'utf8'` encoding. With messages that + * contain multi-byte characters, `offset` and `length` will be calculated with + * respect to `byte length` and not the character position. + * If `msg` is an array, `offset` and `length` must not be specified. + * + * The `address` argument is a string. If the value of `address` is a host name, + * DNS will be used to resolve the address of the host. If `address` is not + * provided or otherwise nullish, `'127.0.0.1'` (for `udp4` sockets) or `'::1'`(for `udp6` sockets) will be used by default. + * + * If the socket has not been previously bound with a call to `bind`, the socket + * is assigned a random port number and is bound to the "all interfaces" address + * (`'0.0.0.0'` for `udp4` sockets, `'::0'` for `udp6` sockets.) + * + * An optional `callback` function may be specified to as a way of reporting + * DNS errors or for determining when it is safe to reuse the `buf` object. + * DNS lookups delay the time to send for at least one tick of the + * Node.js event loop. + * + * The only way to know for sure that the datagram has been sent is by using a`callback`. If an error occurs and a `callback` is given, the error will be + * passed as the first argument to the `callback`. If a `callback` is not given, + * the error is emitted as an `'error'` event on the `socket` object. + * + * Offset and length are optional but both _must_ be set if either are used. + * They are supported only when the first argument is a `Buffer`, a `TypedArray`, + * or a `DataView`. + * + * This method throws `ERR_SOCKET_BAD_PORT` if called on an unbound socket. + * + * Example of sending a UDP packet to a port on `localhost`; + * + * ```js + * import dgram from 'node:dgram'; + * import { Buffer } from 'node:buffer'; + * + * const message = Buffer.from('Some bytes'); + * const client = dgram.createSocket('udp4'); + * client.send(message, 41234, 'localhost', (err) => { + * client.close(); + * }); + * ``` + * + * Example of sending a UDP packet composed of multiple buffers to a port on`127.0.0.1`; + * + * ```js + * import dgram from 'node:dgram'; + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.from('Some '); + * const buf2 = Buffer.from('bytes'); + * const client = dgram.createSocket('udp4'); + * client.send([buf1, buf2], 41234, (err) => { + * client.close(); + * }); + * ``` + * + * Sending multiple buffers might be faster or slower depending on the + * application and operating system. Run benchmarks to + * determine the optimal strategy on a case-by-case basis. Generally speaking, + * however, sending multiple buffers is faster. + * + * Example of sending a UDP packet using a socket connected to a port on`localhost`: + * + * ```js + * import dgram from 'node:dgram'; + * import { Buffer } from 'node:buffer'; + * + * const message = Buffer.from('Some bytes'); + * const client = dgram.createSocket('udp4'); + * client.connect(41234, 'localhost', (err) => { + * client.send(message, (err) => { + * client.close(); + * }); + * }); + * ``` + * @since v0.1.99 + * @param msg Message to be sent. + * @param offset Offset in the buffer where the message starts. + * @param length Number of bytes in the message. + * @param port Destination port. + * @param address Destination host name or IP address. + * @param callback Called when the message has been sent. + */ + send( + msg: string | Uint8Array | ReadonlyArray, + port?: number, + address?: string, + callback?: (error: Error | null, bytes: number) => void, + ): void; + send( + msg: string | Uint8Array | ReadonlyArray, + port?: number, + callback?: (error: Error | null, bytes: number) => void, + ): void; + send( + msg: string | Uint8Array | ReadonlyArray, + callback?: (error: Error | null, bytes: number) => void, + ): void; + send( + msg: string | Uint8Array, + offset: number, + length: number, + port?: number, + address?: string, + callback?: (error: Error | null, bytes: number) => void, + ): void; + send( + msg: string | Uint8Array, + offset: number, + length: number, + port?: number, + callback?: (error: Error | null, bytes: number) => void, + ): void; + send( + msg: string | Uint8Array, + offset: number, + length: number, + callback?: (error: Error | null, bytes: number) => void, + ): void; + /** + * Sets or clears the `SO_BROADCAST` socket option. When set to `true`, UDP + * packets may be sent to a local interface's broadcast address. + * + * This method throws `EBADF` if called on an unbound socket. + * @since v0.6.9 + */ + setBroadcast(flag: boolean): void; + /** + * _All references to scope in this section are referring to [IPv6 Zone Indices](https://en.wikipedia.org/wiki/IPv6_address#Scoped_literal_IPv6_addresses), which are defined by [RFC + * 4007](https://tools.ietf.org/html/rfc4007). In string form, an IP_ + * _with a scope index is written as `'IP%scope'` where scope is an interface name_ + * _or interface number._ + * + * Sets the default outgoing multicast interface of the socket to a chosen + * interface or back to system interface selection. The `multicastInterface` must + * be a valid string representation of an IP from the socket's family. + * + * For IPv4 sockets, this should be the IP configured for the desired physical + * interface. All packets sent to multicast on the socket will be sent on the + * interface determined by the most recent successful use of this call. + * + * For IPv6 sockets, `multicastInterface` should include a scope to indicate the + * interface as in the examples that follow. In IPv6, individual `send` calls can + * also use explicit scope in addresses, so only packets sent to a multicast + * address without specifying an explicit scope are affected by the most recent + * successful use of this call. + * + * This method throws `EBADF` if called on an unbound socket. + * + * #### Example: IPv6 outgoing multicast interface + * + * On most systems, where scope format uses the interface name: + * + * ```js + * const socket = dgram.createSocket('udp6'); + * + * socket.bind(1234, () => { + * socket.setMulticastInterface('::%eth1'); + * }); + * ``` + * + * On Windows, where scope format uses an interface number: + * + * ```js + * const socket = dgram.createSocket('udp6'); + * + * socket.bind(1234, () => { + * socket.setMulticastInterface('::%2'); + * }); + * ``` + * + * #### Example: IPv4 outgoing multicast interface + * + * All systems use an IP of the host on the desired physical interface: + * + * ```js + * const socket = dgram.createSocket('udp4'); + * + * socket.bind(1234, () => { + * socket.setMulticastInterface('10.0.0.2'); + * }); + * ``` + * @since v8.6.0 + */ + setMulticastInterface(multicastInterface: string): void; + /** + * Sets or clears the `IP_MULTICAST_LOOP` socket option. When set to `true`, + * multicast packets will also be received on the local interface. + * + * This method throws `EBADF` if called on an unbound socket. + * @since v0.3.8 + */ + setMulticastLoopback(flag: boolean): boolean; + /** + * Sets the `IP_MULTICAST_TTL` socket option. While TTL generally stands for + * "Time to Live", in this context it specifies the number of IP hops that a + * packet is allowed to travel through, specifically for multicast traffic. Each + * router or gateway that forwards a packet decrements the TTL. If the TTL is + * decremented to 0 by a router, it will not be forwarded. + * + * The `ttl` argument may be between 0 and 255\. The default on most systems is `1`. + * + * This method throws `EBADF` if called on an unbound socket. + * @since v0.3.8 + */ + setMulticastTTL(ttl: number): number; + /** + * Sets the `SO_RCVBUF` socket option. Sets the maximum socket receive buffer + * in bytes. + * + * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket. + * @since v8.7.0 + */ + setRecvBufferSize(size: number): void; + /** + * Sets the `SO_SNDBUF` socket option. Sets the maximum socket send buffer + * in bytes. + * + * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket. + * @since v8.7.0 + */ + setSendBufferSize(size: number): void; + /** + * Sets the `IP_TTL` socket option. While TTL generally stands for "Time to Live", + * in this context it specifies the number of IP hops that a packet is allowed to + * travel through. Each router or gateway that forwards a packet decrements the + * TTL. If the TTL is decremented to 0 by a router, it will not be forwarded. + * Changing TTL values is typically done for network probes or when multicasting. + * + * The `ttl` argument may be between 1 and 255\. The default on most systems + * is 64. + * + * This method throws `EBADF` if called on an unbound socket. + * @since v0.1.101 + */ + setTTL(ttl: number): number; + /** + * By default, binding a socket will cause it to block the Node.js process from + * exiting as long as the socket is open. The `socket.unref()` method can be used + * to exclude the socket from the reference counting that keeps the Node.js + * process active, allowing the process to exit even if the socket is still + * listening. + * + * Calling `socket.unref()` multiple times will have no addition effect. + * + * The `socket.unref()` method returns a reference to the socket so calls can be + * chained. + * @since v0.9.1 + */ + unref(): this; + /** + * Tells the kernel to join a source-specific multicast channel at the given`sourceAddress` and `groupAddress`, using the `multicastInterface` with the`IP_ADD_SOURCE_MEMBERSHIP` socket + * option. If the `multicastInterface` argument + * is not specified, the operating system will choose one interface and will add + * membership to it. To add membership to every available interface, call`socket.addSourceSpecificMembership()` multiple times, once per interface. + * + * When called on an unbound socket, this method will implicitly bind to a random + * port, listening on all interfaces. + * @since v13.1.0, v12.16.0 + */ + addSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void; + /** + * Instructs the kernel to leave a source-specific multicast channel at the given`sourceAddress` and `groupAddress` using the `IP_DROP_SOURCE_MEMBERSHIP`socket option. This method is + * automatically called by the kernel when the + * socket is closed or the process terminates, so most apps will never have + * reason to call this. + * + * If `multicastInterface` is not specified, the operating system will attempt to + * drop membership on all valid interfaces. + * @since v13.1.0, v12.16.0 + */ + dropSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void; + /** + * events.EventEmitter + * 1. close + * 2. connect + * 3. error + * 4. listening + * 5. message + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "connect", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "listening", listener: () => void): this; + addListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "connect"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "listening"): boolean; + emit(event: "message", msg: Buffer, rinfo: RemoteInfo): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "close", listener: () => void): this; + on(event: "connect", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "listening", listener: () => void): this; + on(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "connect", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "listening", listener: () => void): this; + once(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "connect", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "listening", listener: () => void): this; + prependListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "connect", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "listening", listener: () => void): this; + prependOnceListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; + /** + * Calls `socket.close()` and returns a promise that fulfills when the socket has closed. + * @since v20.5.0 + */ + [Symbol.asyncDispose](): Promise; + } +} +declare module "node:dgram" { + export * from "dgram"; +} diff --git a/node_modules/@types/node/diagnostics_channel.d.ts b/node_modules/@types/node/diagnostics_channel.d.ts new file mode 100644 index 00000000..b02f5917 --- /dev/null +++ b/node_modules/@types/node/diagnostics_channel.d.ts @@ -0,0 +1,191 @@ +/** + * The `node:diagnostics_channel` module provides an API to create named channels + * to report arbitrary message data for diagnostics purposes. + * + * It can be accessed using: + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * ``` + * + * It is intended that a module writer wanting to report diagnostics messages + * will create one or many top-level channels to report messages through. + * Channels may also be acquired at runtime but it is not encouraged + * due to the additional overhead of doing so. Channels may be exported for + * convenience, but as long as the name is known it can be acquired anywhere. + * + * If you intend for your module to produce diagnostics data for others to + * consume it is recommended that you include documentation of what named + * channels are used along with the shape of the message data. Channel names + * should generally include the module name to avoid collisions with data from + * other modules. + * @since v15.1.0, v14.17.0 + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/diagnostics_channel.js) + */ +declare module "diagnostics_channel" { + /** + * Check if there are active subscribers to the named channel. This is helpful if + * the message you want to send might be expensive to prepare. + * + * This API is optional but helpful when trying to publish messages from very + * performance-sensitive code. + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * + * if (diagnostics_channel.hasSubscribers('my-channel')) { + * // There are subscribers, prepare and publish message + * } + * ``` + * @since v15.1.0, v14.17.0 + * @param name The channel name + * @return If there are active subscribers + */ + function hasSubscribers(name: string | symbol): boolean; + /** + * This is the primary entry-point for anyone wanting to publish to a named + * channel. It produces a channel object which is optimized to reduce overhead at + * publish time as much as possible. + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * + * const channel = diagnostics_channel.channel('my-channel'); + * ``` + * @since v15.1.0, v14.17.0 + * @param name The channel name + * @return The named channel object + */ + function channel(name: string | symbol): Channel; + type ChannelListener = (message: unknown, name: string | symbol) => void; + /** + * Register a message handler to subscribe to this channel. This message handler + * will be run synchronously whenever a message is published to the channel. Any + * errors thrown in the message handler will trigger an `'uncaughtException'`. + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * + * diagnostics_channel.subscribe('my-channel', (message, name) => { + * // Received data + * }); + * ``` + * @since v18.7.0, v16.17.0 + * @param name The channel name + * @param onMessage The handler to receive channel messages + */ + function subscribe(name: string | symbol, onMessage: ChannelListener): void; + /** + * Remove a message handler previously registered to this channel with {@link subscribe}. + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * + * function onMessage(message, name) { + * // Received data + * } + * + * diagnostics_channel.subscribe('my-channel', onMessage); + * + * diagnostics_channel.unsubscribe('my-channel', onMessage); + * ``` + * @since v18.7.0, v16.17.0 + * @param name The channel name + * @param onMessage The previous subscribed handler to remove + * @return `true` if the handler was found, `false` otherwise. + */ + function unsubscribe(name: string | symbol, onMessage: ChannelListener): boolean; + /** + * The class `Channel` represents an individual named channel within the data + * pipeline. It is used to track subscribers and to publish messages when there + * are subscribers present. It exists as a separate object to avoid channel + * lookups at publish time, enabling very fast publish speeds and allowing + * for heavy use while incurring very minimal cost. Channels are created with {@link channel}, constructing a channel directly + * with `new Channel(name)` is not supported. + * @since v15.1.0, v14.17.0 + */ + class Channel { + readonly name: string | symbol; + /** + * Check if there are active subscribers to this channel. This is helpful if + * the message you want to send might be expensive to prepare. + * + * This API is optional but helpful when trying to publish messages from very + * performance-sensitive code. + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * + * const channel = diagnostics_channel.channel('my-channel'); + * + * if (channel.hasSubscribers) { + * // There are subscribers, prepare and publish message + * } + * ``` + * @since v15.1.0, v14.17.0 + */ + readonly hasSubscribers: boolean; + private constructor(name: string | symbol); + /** + * Publish a message to any subscribers to the channel. This will trigger + * message handlers synchronously so they will execute within the same context. + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * + * const channel = diagnostics_channel.channel('my-channel'); + * + * channel.publish({ + * some: 'message', + * }); + * ``` + * @since v15.1.0, v14.17.0 + * @param message The message to send to the channel subscribers + */ + publish(message: unknown): void; + /** + * Register a message handler to subscribe to this channel. This message handler + * will be run synchronously whenever a message is published to the channel. Any + * errors thrown in the message handler will trigger an `'uncaughtException'`. + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * + * const channel = diagnostics_channel.channel('my-channel'); + * + * channel.subscribe((message, name) => { + * // Received data + * }); + * ``` + * @since v15.1.0, v14.17.0 + * @deprecated Since v18.7.0,v16.17.0 - Use {@link subscribe(name, onMessage)} + * @param onMessage The handler to receive channel messages + */ + subscribe(onMessage: ChannelListener): void; + /** + * Remove a message handler previously registered to this channel with `channel.subscribe(onMessage)`. + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * + * const channel = diagnostics_channel.channel('my-channel'); + * + * function onMessage(message, name) { + * // Received data + * } + * + * channel.subscribe(onMessage); + * + * channel.unsubscribe(onMessage); + * ``` + * @since v15.1.0, v14.17.0 + * @deprecated Since v18.7.0,v16.17.0 - Use {@link unsubscribe(name, onMessage)} + * @param onMessage The previous subscribed handler to remove + * @return `true` if the handler was found, `false` otherwise. + */ + unsubscribe(onMessage: ChannelListener): void; + } +} +declare module "node:diagnostics_channel" { + export * from "diagnostics_channel"; +} diff --git a/node_modules/@types/node/dns.d.ts b/node_modules/@types/node/dns.d.ts new file mode 100644 index 00000000..bef32b17 --- /dev/null +++ b/node_modules/@types/node/dns.d.ts @@ -0,0 +1,809 @@ +/** + * The `node:dns` module enables name resolution. For example, use it to look up IP + * addresses of host names. + * + * Although named for the [Domain Name System (DNS)](https://en.wikipedia.org/wiki/Domain_Name_System), it does not always use the + * DNS protocol for lookups. {@link lookup} uses the operating system + * facilities to perform name resolution. It may not need to perform any network + * communication. To perform name resolution the way other applications on the same + * system do, use {@link lookup}. + * + * ```js + * const dns = require('node:dns'); + * + * dns.lookup('example.org', (err, address, family) => { + * console.log('address: %j family: IPv%s', address, family); + * }); + * // address: "93.184.216.34" family: IPv4 + * ``` + * + * All other functions in the `node:dns` module connect to an actual DNS server to + * perform name resolution. They will always use the network to perform DNS + * queries. These functions do not use the same set of configuration files used by {@link lookup} (e.g. `/etc/hosts`). Use these functions to always perform + * DNS queries, bypassing other name-resolution facilities. + * + * ```js + * const dns = require('node:dns'); + * + * dns.resolve4('archive.org', (err, addresses) => { + * if (err) throw err; + * + * console.log(`addresses: ${JSON.stringify(addresses)}`); + * + * addresses.forEach((a) => { + * dns.reverse(a, (err, hostnames) => { + * if (err) { + * throw err; + * } + * console.log(`reverse for ${a}: ${JSON.stringify(hostnames)}`); + * }); + * }); + * }); + * ``` + * + * See the `Implementation considerations section` for more information. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/dns.js) + */ +declare module "dns" { + import * as dnsPromises from "node:dns/promises"; + // Supported getaddrinfo flags. + export const ADDRCONFIG: number; + export const V4MAPPED: number; + /** + * If `dns.V4MAPPED` is specified, return resolved IPv6 addresses as + * well as IPv4 mapped IPv6 addresses. + */ + export const ALL: number; + export interface LookupOptions { + family?: number | undefined; + hints?: number | undefined; + all?: boolean | undefined; + /** + * @default true + */ + verbatim?: boolean | undefined; + } + export interface LookupOneOptions extends LookupOptions { + all?: false | undefined; + } + export interface LookupAllOptions extends LookupOptions { + all: true; + } + export interface LookupAddress { + address: string; + family: number; + } + /** + * Resolves a host name (e.g. `'nodejs.org'`) into the first found A (IPv4) or + * AAAA (IPv6) record. All `option` properties are optional. If `options` is an + * integer, then it must be `4` or `6` – if `options` is `0` or not provided, then + * IPv4 and IPv6 addresses are both returned if found. + * + * With the `all` option set to `true`, the arguments for `callback` change to`(err, addresses)`, with `addresses` being an array of objects with the + * properties `address` and `family`. + * + * On error, `err` is an `Error` object, where `err.code` is the error code. + * Keep in mind that `err.code` will be set to `'ENOTFOUND'` not only when + * the host name does not exist but also when the lookup fails in other ways + * such as no available file descriptors. + * + * `dns.lookup()` does not necessarily have anything to do with the DNS protocol. + * The implementation uses an operating system facility that can associate names + * with addresses and vice versa. This implementation can have subtle but + * important consequences on the behavior of any Node.js program. Please take some + * time to consult the `Implementation considerations section` before using`dns.lookup()`. + * + * Example usage: + * + * ```js + * const dns = require('node:dns'); + * const options = { + * family: 6, + * hints: dns.ADDRCONFIG | dns.V4MAPPED, + * }; + * dns.lookup('example.com', options, (err, address, family) => + * console.log('address: %j family: IPv%s', address, family)); + * // address: "2606:2800:220:1:248:1893:25c8:1946" family: IPv6 + * + * // When options.all is true, the result will be an Array. + * options.all = true; + * dns.lookup('example.com', options, (err, addresses) => + * console.log('addresses: %j', addresses)); + * // addresses: [{"address":"2606:2800:220:1:248:1893:25c8:1946","family":6}] + * ``` + * + * If this method is invoked as its `util.promisify()` ed version, and `all`is not set to `true`, it returns a `Promise` for an `Object` with `address` and`family` properties. + * @since v0.1.90 + */ + export function lookup( + hostname: string, + family: number, + callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void, + ): void; + export function lookup( + hostname: string, + options: LookupOneOptions, + callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void, + ): void; + export function lookup( + hostname: string, + options: LookupAllOptions, + callback: (err: NodeJS.ErrnoException | null, addresses: LookupAddress[]) => void, + ): void; + export function lookup( + hostname: string, + options: LookupOptions, + callback: (err: NodeJS.ErrnoException | null, address: string | LookupAddress[], family: number) => void, + ): void; + export function lookup( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void, + ): void; + export namespace lookup { + function __promisify__(hostname: string, options: LookupAllOptions): Promise; + function __promisify__(hostname: string, options?: LookupOneOptions | number): Promise; + function __promisify__(hostname: string, options: LookupOptions): Promise; + } + /** + * Resolves the given `address` and `port` into a host name and service using + * the operating system's underlying `getnameinfo` implementation. + * + * If `address` is not a valid IP address, a `TypeError` will be thrown. + * The `port` will be coerced to a number. If it is not a legal port, a `TypeError`will be thrown. + * + * On an error, `err` is an `Error` object, where `err.code` is the error code. + * + * ```js + * const dns = require('node:dns'); + * dns.lookupService('127.0.0.1', 22, (err, hostname, service) => { + * console.log(hostname, service); + * // Prints: localhost ssh + * }); + * ``` + * + * If this method is invoked as its `util.promisify()` ed version, it returns a`Promise` for an `Object` with `hostname` and `service` properties. + * @since v0.11.14 + */ + export function lookupService( + address: string, + port: number, + callback: (err: NodeJS.ErrnoException | null, hostname: string, service: string) => void, + ): void; + export namespace lookupService { + function __promisify__( + address: string, + port: number, + ): Promise<{ + hostname: string; + service: string; + }>; + } + export interface ResolveOptions { + ttl: boolean; + } + export interface ResolveWithTtlOptions extends ResolveOptions { + ttl: true; + } + export interface RecordWithTtl { + address: string; + ttl: number; + } + /** @deprecated Use `AnyARecord` or `AnyAaaaRecord` instead. */ + export type AnyRecordWithTtl = AnyARecord | AnyAaaaRecord; + export interface AnyARecord extends RecordWithTtl { + type: "A"; + } + export interface AnyAaaaRecord extends RecordWithTtl { + type: "AAAA"; + } + export interface CaaRecord { + critical: number; + issue?: string | undefined; + issuewild?: string | undefined; + iodef?: string | undefined; + contactemail?: string | undefined; + contactphone?: string | undefined; + } + export interface MxRecord { + priority: number; + exchange: string; + } + export interface AnyMxRecord extends MxRecord { + type: "MX"; + } + export interface NaptrRecord { + flags: string; + service: string; + regexp: string; + replacement: string; + order: number; + preference: number; + } + export interface AnyNaptrRecord extends NaptrRecord { + type: "NAPTR"; + } + export interface SoaRecord { + nsname: string; + hostmaster: string; + serial: number; + refresh: number; + retry: number; + expire: number; + minttl: number; + } + export interface AnySoaRecord extends SoaRecord { + type: "SOA"; + } + export interface SrvRecord { + priority: number; + weight: number; + port: number; + name: string; + } + export interface AnySrvRecord extends SrvRecord { + type: "SRV"; + } + export interface AnyTxtRecord { + type: "TXT"; + entries: string[]; + } + export interface AnyNsRecord { + type: "NS"; + value: string; + } + export interface AnyPtrRecord { + type: "PTR"; + value: string; + } + export interface AnyCnameRecord { + type: "CNAME"; + value: string; + } + export type AnyRecord = + | AnyARecord + | AnyAaaaRecord + | AnyCnameRecord + | AnyMxRecord + | AnyNaptrRecord + | AnyNsRecord + | AnyPtrRecord + | AnySoaRecord + | AnySrvRecord + | AnyTxtRecord; + /** + * Uses the DNS protocol to resolve a host name (e.g. `'nodejs.org'`) into an array + * of the resource records. The `callback` function has arguments`(err, records)`. When successful, `records` will be an array of resource + * records. The type and structure of individual results varies based on `rrtype`: + * + * + * + * On error, `err` is an `Error` object, where `err.code` is one of the `DNS error codes`. + * @since v0.1.27 + * @param hostname Host name to resolve. + * @param [rrtype='A'] Resource record type. + */ + export function resolve( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "A", + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "AAAA", + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "ANY", + callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "CNAME", + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "MX", + callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "NAPTR", + callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "NS", + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "PTR", + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "SOA", + callback: (err: NodeJS.ErrnoException | null, addresses: SoaRecord) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "SRV", + callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "TXT", + callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: string, + callback: ( + err: NodeJS.ErrnoException | null, + addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][] | AnyRecord[], + ) => void, + ): void; + export namespace resolve { + function __promisify__(hostname: string, rrtype?: "A" | "AAAA" | "CNAME" | "NS" | "PTR"): Promise; + function __promisify__(hostname: string, rrtype: "ANY"): Promise; + function __promisify__(hostname: string, rrtype: "MX"): Promise; + function __promisify__(hostname: string, rrtype: "NAPTR"): Promise; + function __promisify__(hostname: string, rrtype: "SOA"): Promise; + function __promisify__(hostname: string, rrtype: "SRV"): Promise; + function __promisify__(hostname: string, rrtype: "TXT"): Promise; + function __promisify__( + hostname: string, + rrtype: string, + ): Promise; + } + /** + * Uses the DNS protocol to resolve a IPv4 addresses (`A` records) for the`hostname`. The `addresses` argument passed to the `callback` function + * will contain an array of IPv4 addresses (e.g.`['74.125.79.104', '74.125.79.105', '74.125.79.106']`). + * @since v0.1.16 + * @param hostname Host name to resolve. + */ + export function resolve4( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export function resolve4( + hostname: string, + options: ResolveWithTtlOptions, + callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void, + ): void; + export function resolve4( + hostname: string, + options: ResolveOptions, + callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void, + ): void; + export namespace resolve4 { + function __promisify__(hostname: string): Promise; + function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise; + function __promisify__(hostname: string, options?: ResolveOptions): Promise; + } + /** + * Uses the DNS protocol to resolve IPv6 addresses (`AAAA` records) for the`hostname`. The `addresses` argument passed to the `callback` function + * will contain an array of IPv6 addresses. + * @since v0.1.16 + * @param hostname Host name to resolve. + */ + export function resolve6( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export function resolve6( + hostname: string, + options: ResolveWithTtlOptions, + callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void, + ): void; + export function resolve6( + hostname: string, + options: ResolveOptions, + callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void, + ): void; + export namespace resolve6 { + function __promisify__(hostname: string): Promise; + function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise; + function __promisify__(hostname: string, options?: ResolveOptions): Promise; + } + /** + * Uses the DNS protocol to resolve `CNAME` records for the `hostname`. The`addresses` argument passed to the `callback` function + * will contain an array of canonical name records available for the `hostname`(e.g. `['bar.example.com']`). + * @since v0.3.2 + */ + export function resolveCname( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export namespace resolveCname { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve `CAA` records for the `hostname`. The`addresses` argument passed to the `callback` function + * will contain an array of certification authority authorization records + * available for the `hostname` (e.g. `[{critical: 0, iodef: 'mailto:pki@example.com'}, {critical: 128, issue: 'pki.example.com'}]`). + * @since v15.0.0, v14.17.0 + */ + export function resolveCaa( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, records: CaaRecord[]) => void, + ): void; + export namespace resolveCaa { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve mail exchange records (`MX` records) for the`hostname`. The `addresses` argument passed to the `callback` function will + * contain an array of objects containing both a `priority` and `exchange`property (e.g. `[{priority: 10, exchange: 'mx.example.com'}, ...]`). + * @since v0.1.27 + */ + export function resolveMx( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void, + ): void; + export namespace resolveMx { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve regular expression-based records (`NAPTR`records) for the `hostname`. The `addresses` argument passed to the `callback`function will contain an array of + * objects with the following properties: + * + * * `flags` + * * `service` + * * `regexp` + * * `replacement` + * * `order` + * * `preference` + * + * ```js + * { + * flags: 's', + * service: 'SIP+D2U', + * regexp: '', + * replacement: '_sip._udp.example.com', + * order: 30, + * preference: 100 + * } + * ``` + * @since v0.9.12 + */ + export function resolveNaptr( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void, + ): void; + export namespace resolveNaptr { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve name server records (`NS` records) for the`hostname`. The `addresses` argument passed to the `callback` function will + * contain an array of name server records available for `hostname`(e.g. `['ns1.example.com', 'ns2.example.com']`). + * @since v0.1.90 + */ + export function resolveNs( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export namespace resolveNs { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve pointer records (`PTR` records) for the`hostname`. The `addresses` argument passed to the `callback` function will + * be an array of strings containing the reply records. + * @since v6.0.0 + */ + export function resolvePtr( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export namespace resolvePtr { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve a start of authority record (`SOA` record) for + * the `hostname`. The `address` argument passed to the `callback` function will + * be an object with the following properties: + * + * * `nsname` + * * `hostmaster` + * * `serial` + * * `refresh` + * * `retry` + * * `expire` + * * `minttl` + * + * ```js + * { + * nsname: 'ns.example.com', + * hostmaster: 'root.example.com', + * serial: 2013101809, + * refresh: 10000, + * retry: 2400, + * expire: 604800, + * minttl: 3600 + * } + * ``` + * @since v0.11.10 + */ + export function resolveSoa( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, address: SoaRecord) => void, + ): void; + export namespace resolveSoa { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve service records (`SRV` records) for the`hostname`. The `addresses` argument passed to the `callback` function will + * be an array of objects with the following properties: + * + * * `priority` + * * `weight` + * * `port` + * * `name` + * + * ```js + * { + * priority: 10, + * weight: 5, + * port: 21223, + * name: 'service.example.com' + * } + * ``` + * @since v0.1.27 + */ + export function resolveSrv( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void, + ): void; + export namespace resolveSrv { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve text queries (`TXT` records) for the`hostname`. The `records` argument passed to the `callback` function is a + * two-dimensional array of the text records available for `hostname` (e.g.`[ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ]`). Each sub-array contains TXT chunks of + * one record. Depending on the use case, these could be either joined together or + * treated separately. + * @since v0.1.27 + */ + export function resolveTxt( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void, + ): void; + export namespace resolveTxt { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve all records (also known as `ANY` or `*` query). + * The `ret` argument passed to the `callback` function will be an array containing + * various types of records. Each object has a property `type` that indicates the + * type of the current record. And depending on the `type`, additional properties + * will be present on the object: + * + * + * + * Here is an example of the `ret` object passed to the callback: + * + * ```js + * [ { type: 'A', address: '127.0.0.1', ttl: 299 }, + * { type: 'CNAME', value: 'example.com' }, + * { type: 'MX', exchange: 'alt4.aspmx.l.example.com', priority: 50 }, + * { type: 'NS', value: 'ns1.example.com' }, + * { type: 'TXT', entries: [ 'v=spf1 include:_spf.example.com ~all' ] }, + * { type: 'SOA', + * nsname: 'ns1.example.com', + * hostmaster: 'admin.example.com', + * serial: 156696742, + * refresh: 900, + * retry: 900, + * expire: 1800, + * minttl: 60 } ] + * ``` + * + * DNS server operators may choose not to respond to `ANY`queries. It may be better to call individual methods like {@link resolve4},{@link resolveMx}, and so on. For more details, see [RFC + * 8482](https://tools.ietf.org/html/rfc8482). + */ + export function resolveAny( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void, + ): void; + export namespace resolveAny { + function __promisify__(hostname: string): Promise; + } + /** + * Performs a reverse DNS query that resolves an IPv4 or IPv6 address to an + * array of host names. + * + * On error, `err` is an `Error` object, where `err.code` is + * one of the `DNS error codes`. + * @since v0.1.16 + */ + export function reverse( + ip: string, + callback: (err: NodeJS.ErrnoException | null, hostnames: string[]) => void, + ): void; + /** + * Get the default value for `verbatim` in {@link lookup} and `dnsPromises.lookup()`. The value could be: + * + * * `ipv4first`: for `verbatim` defaulting to `false`. + * * `verbatim`: for `verbatim` defaulting to `true`. + * @since v20.1.0 + */ + export function getDefaultResultOrder(): "ipv4first" | "verbatim"; + /** + * Sets the IP address and port of servers to be used when performing DNS + * resolution. The `servers` argument is an array of [RFC 5952](https://tools.ietf.org/html/rfc5952#section-6) formatted + * addresses. If the port is the IANA default DNS port (53) it can be omitted. + * + * ```js + * dns.setServers([ + * '4.4.4.4', + * '[2001:4860:4860::8888]', + * '4.4.4.4:1053', + * '[2001:4860:4860::8888]:1053', + * ]); + * ``` + * + * An error will be thrown if an invalid address is provided. + * + * The `dns.setServers()` method must not be called while a DNS query is in + * progress. + * + * The {@link setServers} method affects only {@link resolve},`dns.resolve*()` and {@link reverse} (and specifically _not_ {@link lookup}). + * + * This method works much like [resolve.conf](https://man7.org/linux/man-pages/man5/resolv.conf.5.html). + * That is, if attempting to resolve with the first server provided results in a`NOTFOUND` error, the `resolve()` method will _not_ attempt to resolve with + * subsequent servers provided. Fallback DNS servers will only be used if the + * earlier ones time out or result in some other error. + * @since v0.11.3 + * @param servers array of `RFC 5952` formatted addresses + */ + export function setServers(servers: ReadonlyArray): void; + /** + * Returns an array of IP address strings, formatted according to [RFC 5952](https://tools.ietf.org/html/rfc5952#section-6), + * that are currently configured for DNS resolution. A string will include a port + * section if a custom port is used. + * + * ```js + * [ + * '4.4.4.4', + * '2001:4860:4860::8888', + * '4.4.4.4:1053', + * '[2001:4860:4860::8888]:1053', + * ] + * ``` + * @since v0.11.3 + */ + export function getServers(): string[]; + /** + * Set the default value of `verbatim` in {@link lookup} and `dnsPromises.lookup()`. The value could be: + * + * * `ipv4first`: sets default `verbatim` `false`. + * * `verbatim`: sets default `verbatim` `true`. + * + * The default is `verbatim` and {@link setDefaultResultOrder} have higher + * priority than `--dns-result-order`. When using `worker threads`,{@link setDefaultResultOrder} from the main thread won't affect the default + * dns orders in workers. + * @since v16.4.0, v14.18.0 + * @param order must be `'ipv4first'` or `'verbatim'`. + */ + export function setDefaultResultOrder(order: "ipv4first" | "verbatim"): void; + // Error codes + export const NODATA: string; + export const FORMERR: string; + export const SERVFAIL: string; + export const NOTFOUND: string; + export const NOTIMP: string; + export const REFUSED: string; + export const BADQUERY: string; + export const BADNAME: string; + export const BADFAMILY: string; + export const BADRESP: string; + export const CONNREFUSED: string; + export const TIMEOUT: string; + export const EOF: string; + export const FILE: string; + export const NOMEM: string; + export const DESTRUCTION: string; + export const BADSTR: string; + export const BADFLAGS: string; + export const NONAME: string; + export const BADHINTS: string; + export const NOTINITIALIZED: string; + export const LOADIPHLPAPI: string; + export const ADDRGETNETWORKPARAMS: string; + export const CANCELLED: string; + export interface ResolverOptions { + timeout?: number | undefined; + /** + * @default 4 + */ + tries?: number; + } + /** + * An independent resolver for DNS requests. + * + * Creating a new resolver uses the default server settings. Setting + * the servers used for a resolver using `resolver.setServers()` does not affect + * other resolvers: + * + * ```js + * const { Resolver } = require('node:dns'); + * const resolver = new Resolver(); + * resolver.setServers(['4.4.4.4']); + * + * // This request will use the server at 4.4.4.4, independent of global settings. + * resolver.resolve4('example.org', (err, addresses) => { + * // ... + * }); + * ``` + * + * The following methods from the `node:dns` module are available: + * + * * `resolver.getServers()` + * * `resolver.resolve()` + * * `resolver.resolve4()` + * * `resolver.resolve6()` + * * `resolver.resolveAny()` + * * `resolver.resolveCaa()` + * * `resolver.resolveCname()` + * * `resolver.resolveMx()` + * * `resolver.resolveNaptr()` + * * `resolver.resolveNs()` + * * `resolver.resolvePtr()` + * * `resolver.resolveSoa()` + * * `resolver.resolveSrv()` + * * `resolver.resolveTxt()` + * * `resolver.reverse()` + * * `resolver.setServers()` + * @since v8.3.0 + */ + export class Resolver { + constructor(options?: ResolverOptions); + /** + * Cancel all outstanding DNS queries made by this resolver. The corresponding + * callbacks will be called with an error with code `ECANCELLED`. + * @since v8.3.0 + */ + cancel(): void; + getServers: typeof getServers; + resolve: typeof resolve; + resolve4: typeof resolve4; + resolve6: typeof resolve6; + resolveAny: typeof resolveAny; + resolveCaa: typeof resolveCaa; + resolveCname: typeof resolveCname; + resolveMx: typeof resolveMx; + resolveNaptr: typeof resolveNaptr; + resolveNs: typeof resolveNs; + resolvePtr: typeof resolvePtr; + resolveSoa: typeof resolveSoa; + resolveSrv: typeof resolveSrv; + resolveTxt: typeof resolveTxt; + reverse: typeof reverse; + /** + * The resolver instance will send its requests from the specified IP address. + * This allows programs to specify outbound interfaces when used on multi-homed + * systems. + * + * If a v4 or v6 address is not specified, it is set to the default and the + * operating system will choose a local address automatically. + * + * The resolver will use the v4 local address when making requests to IPv4 DNS + * servers, and the v6 local address when making requests to IPv6 DNS servers. + * The `rrtype` of resolution requests has no impact on the local address used. + * @since v15.1.0, v14.17.0 + * @param [ipv4='0.0.0.0'] A string representation of an IPv4 address. + * @param [ipv6='::0'] A string representation of an IPv6 address. + */ + setLocalAddress(ipv4?: string, ipv6?: string): void; + setServers: typeof setServers; + } + export { dnsPromises as promises }; +} +declare module "node:dns" { + export * from "dns"; +} diff --git a/node_modules/@types/node/dns/promises.d.ts b/node_modules/@types/node/dns/promises.d.ts new file mode 100644 index 00000000..79d8b075 --- /dev/null +++ b/node_modules/@types/node/dns/promises.d.ts @@ -0,0 +1,417 @@ +/** + * The `dns.promises` API provides an alternative set of asynchronous DNS methods + * that return `Promise` objects rather than using callbacks. The API is accessible + * via `require('node:dns').promises` or `require('node:dns/promises')`. + * @since v10.6.0 + */ +declare module "dns/promises" { + import { + AnyRecord, + CaaRecord, + LookupAddress, + LookupAllOptions, + LookupOneOptions, + LookupOptions, + MxRecord, + NaptrRecord, + RecordWithTtl, + ResolveOptions, + ResolverOptions, + ResolveWithTtlOptions, + SoaRecord, + SrvRecord, + } from "node:dns"; + /** + * Returns an array of IP address strings, formatted according to [RFC 5952](https://tools.ietf.org/html/rfc5952#section-6), + * that are currently configured for DNS resolution. A string will include a port + * section if a custom port is used. + * + * ```js + * [ + * '4.4.4.4', + * '2001:4860:4860::8888', + * '4.4.4.4:1053', + * '[2001:4860:4860::8888]:1053', + * ] + * ``` + * @since v10.6.0 + */ + function getServers(): string[]; + /** + * Resolves a host name (e.g. `'nodejs.org'`) into the first found A (IPv4) or + * AAAA (IPv6) record. All `option` properties are optional. If `options` is an + * integer, then it must be `4` or `6` – if `options` is not provided, then IPv4 + * and IPv6 addresses are both returned if found. + * + * With the `all` option set to `true`, the `Promise` is resolved with `addresses`being an array of objects with the properties `address` and `family`. + * + * On error, the `Promise` is rejected with an `Error` object, where `err.code`is the error code. + * Keep in mind that `err.code` will be set to `'ENOTFOUND'` not only when + * the host name does not exist but also when the lookup fails in other ways + * such as no available file descriptors. + * + * `dnsPromises.lookup()` does not necessarily have anything to do with the DNS + * protocol. The implementation uses an operating system facility that can + * associate names with addresses and vice versa. This implementation can have + * subtle but important consequences on the behavior of any Node.js program. Please + * take some time to consult the `Implementation considerations section` before + * using `dnsPromises.lookup()`. + * + * Example usage: + * + * ```js + * const dns = require('node:dns'); + * const dnsPromises = dns.promises; + * const options = { + * family: 6, + * hints: dns.ADDRCONFIG | dns.V4MAPPED, + * }; + * + * dnsPromises.lookup('example.com', options).then((result) => { + * console.log('address: %j family: IPv%s', result.address, result.family); + * // address: "2606:2800:220:1:248:1893:25c8:1946" family: IPv6 + * }); + * + * // When options.all is true, the result will be an Array. + * options.all = true; + * dnsPromises.lookup('example.com', options).then((result) => { + * console.log('addresses: %j', result); + * // addresses: [{"address":"2606:2800:220:1:248:1893:25c8:1946","family":6}] + * }); + * ``` + * @since v10.6.0 + */ + function lookup(hostname: string, family: number): Promise; + function lookup(hostname: string, options: LookupOneOptions): Promise; + function lookup(hostname: string, options: LookupAllOptions): Promise; + function lookup(hostname: string, options: LookupOptions): Promise; + function lookup(hostname: string): Promise; + /** + * Resolves the given `address` and `port` into a host name and service using + * the operating system's underlying `getnameinfo` implementation. + * + * If `address` is not a valid IP address, a `TypeError` will be thrown. + * The `port` will be coerced to a number. If it is not a legal port, a `TypeError`will be thrown. + * + * On error, the `Promise` is rejected with an `Error` object, where `err.code`is the error code. + * + * ```js + * const dnsPromises = require('node:dns').promises; + * dnsPromises.lookupService('127.0.0.1', 22).then((result) => { + * console.log(result.hostname, result.service); + * // Prints: localhost ssh + * }); + * ``` + * @since v10.6.0 + */ + function lookupService( + address: string, + port: number, + ): Promise<{ + hostname: string; + service: string; + }>; + /** + * Uses the DNS protocol to resolve a host name (e.g. `'nodejs.org'`) into an array + * of the resource records. When successful, the `Promise` is resolved with an + * array of resource records. The type and structure of individual results vary + * based on `rrtype`: + * + * + * + * On error, the `Promise` is rejected with an `Error` object, where `err.code`is one of the `DNS error codes`. + * @since v10.6.0 + * @param hostname Host name to resolve. + * @param [rrtype='A'] Resource record type. + */ + function resolve(hostname: string): Promise; + function resolve(hostname: string, rrtype: "A"): Promise; + function resolve(hostname: string, rrtype: "AAAA"): Promise; + function resolve(hostname: string, rrtype: "ANY"): Promise; + function resolve(hostname: string, rrtype: "CAA"): Promise; + function resolve(hostname: string, rrtype: "CNAME"): Promise; + function resolve(hostname: string, rrtype: "MX"): Promise; + function resolve(hostname: string, rrtype: "NAPTR"): Promise; + function resolve(hostname: string, rrtype: "NS"): Promise; + function resolve(hostname: string, rrtype: "PTR"): Promise; + function resolve(hostname: string, rrtype: "SOA"): Promise; + function resolve(hostname: string, rrtype: "SRV"): Promise; + function resolve(hostname: string, rrtype: "TXT"): Promise; + function resolve( + hostname: string, + rrtype: string, + ): Promise; + /** + * Uses the DNS protocol to resolve IPv4 addresses (`A` records) for the`hostname`. On success, the `Promise` is resolved with an array of IPv4 + * addresses (e.g. `['74.125.79.104', '74.125.79.105', '74.125.79.106']`). + * @since v10.6.0 + * @param hostname Host name to resolve. + */ + function resolve4(hostname: string): Promise; + function resolve4(hostname: string, options: ResolveWithTtlOptions): Promise; + function resolve4(hostname: string, options: ResolveOptions): Promise; + /** + * Uses the DNS protocol to resolve IPv6 addresses (`AAAA` records) for the`hostname`. On success, the `Promise` is resolved with an array of IPv6 + * addresses. + * @since v10.6.0 + * @param hostname Host name to resolve. + */ + function resolve6(hostname: string): Promise; + function resolve6(hostname: string, options: ResolveWithTtlOptions): Promise; + function resolve6(hostname: string, options: ResolveOptions): Promise; + /** + * Uses the DNS protocol to resolve all records (also known as `ANY` or `*` query). + * On success, the `Promise` is resolved with an array containing various types of + * records. Each object has a property `type` that indicates the type of the + * current record. And depending on the `type`, additional properties will be + * present on the object: + * + * + * + * Here is an example of the result object: + * + * ```js + * [ { type: 'A', address: '127.0.0.1', ttl: 299 }, + * { type: 'CNAME', value: 'example.com' }, + * { type: 'MX', exchange: 'alt4.aspmx.l.example.com', priority: 50 }, + * { type: 'NS', value: 'ns1.example.com' }, + * { type: 'TXT', entries: [ 'v=spf1 include:_spf.example.com ~all' ] }, + * { type: 'SOA', + * nsname: 'ns1.example.com', + * hostmaster: 'admin.example.com', + * serial: 156696742, + * refresh: 900, + * retry: 900, + * expire: 1800, + * minttl: 60 } ] + * ``` + * @since v10.6.0 + */ + function resolveAny(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve `CAA` records for the `hostname`. On success, + * the `Promise` is resolved with an array of objects containing available + * certification authority authorization records available for the `hostname`(e.g. `[{critical: 0, iodef: 'mailto:pki@example.com'},{critical: 128, issue: 'pki.example.com'}]`). + * @since v15.0.0, v14.17.0 + */ + function resolveCaa(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve `CNAME` records for the `hostname`. On success, + * the `Promise` is resolved with an array of canonical name records available for + * the `hostname` (e.g. `['bar.example.com']`). + * @since v10.6.0 + */ + function resolveCname(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve mail exchange records (`MX` records) for the`hostname`. On success, the `Promise` is resolved with an array of objects + * containing both a `priority` and `exchange` property (e.g.`[{priority: 10, exchange: 'mx.example.com'}, ...]`). + * @since v10.6.0 + */ + function resolveMx(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve regular expression-based records (`NAPTR`records) for the `hostname`. On success, the `Promise` is resolved with an array + * of objects with the following properties: + * + * * `flags` + * * `service` + * * `regexp` + * * `replacement` + * * `order` + * * `preference` + * + * ```js + * { + * flags: 's', + * service: 'SIP+D2U', + * regexp: '', + * replacement: '_sip._udp.example.com', + * order: 30, + * preference: 100 + * } + * ``` + * @since v10.6.0 + */ + function resolveNaptr(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve name server records (`NS` records) for the`hostname`. On success, the `Promise` is resolved with an array of name server + * records available for `hostname` (e.g.`['ns1.example.com', 'ns2.example.com']`). + * @since v10.6.0 + */ + function resolveNs(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve pointer records (`PTR` records) for the`hostname`. On success, the `Promise` is resolved with an array of strings + * containing the reply records. + * @since v10.6.0 + */ + function resolvePtr(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve a start of authority record (`SOA` record) for + * the `hostname`. On success, the `Promise` is resolved with an object with the + * following properties: + * + * * `nsname` + * * `hostmaster` + * * `serial` + * * `refresh` + * * `retry` + * * `expire` + * * `minttl` + * + * ```js + * { + * nsname: 'ns.example.com', + * hostmaster: 'root.example.com', + * serial: 2013101809, + * refresh: 10000, + * retry: 2400, + * expire: 604800, + * minttl: 3600 + * } + * ``` + * @since v10.6.0 + */ + function resolveSoa(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve service records (`SRV` records) for the`hostname`. On success, the `Promise` is resolved with an array of objects with + * the following properties: + * + * * `priority` + * * `weight` + * * `port` + * * `name` + * + * ```js + * { + * priority: 10, + * weight: 5, + * port: 21223, + * name: 'service.example.com' + * } + * ``` + * @since v10.6.0 + */ + function resolveSrv(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve text queries (`TXT` records) for the`hostname`. On success, the `Promise` is resolved with a two-dimensional array + * of the text records available for `hostname` (e.g.`[ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ]`). Each sub-array contains TXT chunks of + * one record. Depending on the use case, these could be either joined together or + * treated separately. + * @since v10.6.0 + */ + function resolveTxt(hostname: string): Promise; + /** + * Performs a reverse DNS query that resolves an IPv4 or IPv6 address to an + * array of host names. + * + * On error, the `Promise` is rejected with an `Error` object, where `err.code`is one of the `DNS error codes`. + * @since v10.6.0 + */ + function reverse(ip: string): Promise; + /** + * Sets the IP address and port of servers to be used when performing DNS + * resolution. The `servers` argument is an array of [RFC 5952](https://tools.ietf.org/html/rfc5952#section-6) formatted + * addresses. If the port is the IANA default DNS port (53) it can be omitted. + * + * ```js + * dnsPromises.setServers([ + * '4.4.4.4', + * '[2001:4860:4860::8888]', + * '4.4.4.4:1053', + * '[2001:4860:4860::8888]:1053', + * ]); + * ``` + * + * An error will be thrown if an invalid address is provided. + * + * The `dnsPromises.setServers()` method must not be called while a DNS query is in + * progress. + * + * This method works much like [resolve.conf](https://man7.org/linux/man-pages/man5/resolv.conf.5.html). + * That is, if attempting to resolve with the first server provided results in a`NOTFOUND` error, the `resolve()` method will _not_ attempt to resolve with + * subsequent servers provided. Fallback DNS servers will only be used if the + * earlier ones time out or result in some other error. + * @since v10.6.0 + * @param servers array of `RFC 5952` formatted addresses + */ + function setServers(servers: ReadonlyArray): void; + /** + * Set the default value of `verbatim` in `dns.lookup()` and `dnsPromises.lookup()`. The value could be: + * + * * `ipv4first`: sets default `verbatim` `false`. + * * `verbatim`: sets default `verbatim` `true`. + * + * The default is `verbatim` and `dnsPromises.setDefaultResultOrder()` have + * higher priority than `--dns-result-order`. When using `worker threads`,`dnsPromises.setDefaultResultOrder()` from the main thread won't affect the + * default dns orders in workers. + * @since v16.4.0, v14.18.0 + * @param order must be `'ipv4first'` or `'verbatim'`. + */ + function setDefaultResultOrder(order: "ipv4first" | "verbatim"): void; + /** + * An independent resolver for DNS requests. + * + * Creating a new resolver uses the default server settings. Setting + * the servers used for a resolver using `resolver.setServers()` does not affect + * other resolvers: + * + * ```js + * const { Resolver } = require('node:dns').promises; + * const resolver = new Resolver(); + * resolver.setServers(['4.4.4.4']); + * + * // This request will use the server at 4.4.4.4, independent of global settings. + * resolver.resolve4('example.org').then((addresses) => { + * // ... + * }); + * + * // Alternatively, the same code can be written using async-await style. + * (async function() { + * const addresses = await resolver.resolve4('example.org'); + * })(); + * ``` + * + * The following methods from the `dnsPromises` API are available: + * + * * `resolver.getServers()` + * * `resolver.resolve()` + * * `resolver.resolve4()` + * * `resolver.resolve6()` + * * `resolver.resolveAny()` + * * `resolver.resolveCaa()` + * * `resolver.resolveCname()` + * * `resolver.resolveMx()` + * * `resolver.resolveNaptr()` + * * `resolver.resolveNs()` + * * `resolver.resolvePtr()` + * * `resolver.resolveSoa()` + * * `resolver.resolveSrv()` + * * `resolver.resolveTxt()` + * * `resolver.reverse()` + * * `resolver.setServers()` + * @since v10.6.0 + */ + class Resolver { + constructor(options?: ResolverOptions); + cancel(): void; + getServers: typeof getServers; + resolve: typeof resolve; + resolve4: typeof resolve4; + resolve6: typeof resolve6; + resolveAny: typeof resolveAny; + resolveCaa: typeof resolveCaa; + resolveCname: typeof resolveCname; + resolveMx: typeof resolveMx; + resolveNaptr: typeof resolveNaptr; + resolveNs: typeof resolveNs; + resolvePtr: typeof resolvePtr; + resolveSoa: typeof resolveSoa; + resolveSrv: typeof resolveSrv; + resolveTxt: typeof resolveTxt; + reverse: typeof reverse; + setLocalAddress(ipv4?: string, ipv6?: string): void; + setServers: typeof setServers; + } +} +declare module "node:dns/promises" { + export * from "dns/promises"; +} diff --git a/node_modules/@types/node/dom-events.d.ts b/node_modules/@types/node/dom-events.d.ts new file mode 100644 index 00000000..147a7b65 --- /dev/null +++ b/node_modules/@types/node/dom-events.d.ts @@ -0,0 +1,122 @@ +export {}; // Don't export anything! + +//// DOM-like Events +// NB: The Event / EventTarget / EventListener implementations below were copied +// from lib.dom.d.ts, then edited to reflect Node's documentation at +// https://nodejs.org/api/events.html#class-eventtarget. +// Please read that link to understand important implementation differences. + +// This conditional type will be the existing global Event in a browser, or +// the copy below in a Node environment. +type __Event = typeof globalThis extends { onmessage: any; Event: any } ? {} + : { + /** This is not used in Node.js and is provided purely for completeness. */ + readonly bubbles: boolean; + /** Alias for event.stopPropagation(). This is not used in Node.js and is provided purely for completeness. */ + cancelBubble: () => void; + /** True if the event was created with the cancelable option */ + readonly cancelable: boolean; + /** This is not used in Node.js and is provided purely for completeness. */ + readonly composed: boolean; + /** Returns an array containing the current EventTarget as the only entry or empty if the event is not being dispatched. This is not used in Node.js and is provided purely for completeness. */ + composedPath(): [EventTarget?]; + /** Alias for event.target. */ + readonly currentTarget: EventTarget | null; + /** Is true if cancelable is true and event.preventDefault() has been called. */ + readonly defaultPrevented: boolean; + /** This is not used in Node.js and is provided purely for completeness. */ + readonly eventPhase: 0 | 2; + /** The `AbortSignal` "abort" event is emitted with `isTrusted` set to `true`. The value is `false` in all other cases. */ + readonly isTrusted: boolean; + /** Sets the `defaultPrevented` property to `true` if `cancelable` is `true`. */ + preventDefault(): void; + /** This is not used in Node.js and is provided purely for completeness. */ + returnValue: boolean; + /** Alias for event.target. */ + readonly srcElement: EventTarget | null; + /** Stops the invocation of event listeners after the current one completes. */ + stopImmediatePropagation(): void; + /** This is not used in Node.js and is provided purely for completeness. */ + stopPropagation(): void; + /** The `EventTarget` dispatching the event */ + readonly target: EventTarget | null; + /** The millisecond timestamp when the Event object was created. */ + readonly timeStamp: number; + /** Returns the type of event, e.g. "click", "hashchange", or "submit". */ + readonly type: string; + }; + +// See comment above explaining conditional type +type __EventTarget = typeof globalThis extends { onmessage: any; EventTarget: any } ? {} + : { + /** + * Adds a new handler for the `type` event. Any given `listener` is added only once per `type` and per `capture` option value. + * + * If the `once` option is true, the `listener` is removed after the next time a `type` event is dispatched. + * + * The `capture` option is not used by Node.js in any functional way other than tracking registered event listeners per the `EventTarget` specification. + * Specifically, the `capture` option is used as part of the key when registering a `listener`. + * Any individual `listener` may be added once with `capture = false`, and once with `capture = true`. + */ + addEventListener( + type: string, + listener: EventListener | EventListenerObject, + options?: AddEventListenerOptions | boolean, + ): void; + /** Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise. */ + dispatchEvent(event: Event): boolean; + /** Removes the event listener in target's event listener list with the same type, callback, and options. */ + removeEventListener( + type: string, + listener: EventListener | EventListenerObject, + options?: EventListenerOptions | boolean, + ): void; + }; + +interface EventInit { + bubbles?: boolean; + cancelable?: boolean; + composed?: boolean; +} + +interface EventListenerOptions { + /** Not directly used by Node.js. Added for API completeness. Default: `false`. */ + capture?: boolean; +} + +interface AddEventListenerOptions extends EventListenerOptions { + /** When `true`, the listener is automatically removed when it is first invoked. Default: `false`. */ + once?: boolean; + /** When `true`, serves as a hint that the listener will not call the `Event` object's `preventDefault()` method. Default: false. */ + passive?: boolean; +} + +interface EventListener { + (evt: Event): void; +} + +interface EventListenerObject { + handleEvent(object: Event): void; +} + +import {} from "events"; // Make this an ambient declaration +declare global { + /** An event which takes place in the DOM. */ + interface Event extends __Event {} + var Event: typeof globalThis extends { onmessage: any; Event: infer T } ? T + : { + prototype: __Event; + new(type: string, eventInitDict?: EventInit): __Event; + }; + + /** + * EventTarget is a DOM interface implemented by objects that can + * receive events and may have listeners for them. + */ + interface EventTarget extends __EventTarget {} + var EventTarget: typeof globalThis extends { onmessage: any; EventTarget: infer T } ? T + : { + prototype: __EventTarget; + new(): __EventTarget; + }; +} diff --git a/node_modules/@types/node/domain.d.ts b/node_modules/@types/node/domain.d.ts new file mode 100644 index 00000000..72f17bd8 --- /dev/null +++ b/node_modules/@types/node/domain.d.ts @@ -0,0 +1,170 @@ +/** + * **This module is pending deprecation.** Once a replacement API has been + * finalized, this module will be fully deprecated. Most developers should + * **not** have cause to use this module. Users who absolutely must have + * the functionality that domains provide may rely on it for the time being + * but should expect to have to migrate to a different solution + * in the future. + * + * Domains provide a way to handle multiple different IO operations as a + * single group. If any of the event emitters or callbacks registered to a + * domain emit an `'error'` event, or throw an error, then the domain object + * will be notified, rather than losing the context of the error in the`process.on('uncaughtException')` handler, or causing the program to + * exit immediately with an error code. + * @deprecated Since v1.4.2 - Deprecated + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/domain.js) + */ +declare module "domain" { + import EventEmitter = require("node:events"); + /** + * The `Domain` class encapsulates the functionality of routing errors and + * uncaught exceptions to the active `Domain` object. + * + * To handle the errors that it catches, listen to its `'error'` event. + */ + class Domain extends EventEmitter { + /** + * An array of timers and event emitters that have been explicitly added + * to the domain. + */ + members: Array; + /** + * The `enter()` method is plumbing used by the `run()`, `bind()`, and`intercept()` methods to set the active domain. It sets `domain.active` and`process.domain` to the domain, and implicitly + * pushes the domain onto the domain + * stack managed by the domain module (see {@link exit} for details on the + * domain stack). The call to `enter()` delimits the beginning of a chain of + * asynchronous calls and I/O operations bound to a domain. + * + * Calling `enter()` changes only the active domain, and does not alter the domain + * itself. `enter()` and `exit()` can be called an arbitrary number of times on a + * single domain. + */ + enter(): void; + /** + * The `exit()` method exits the current domain, popping it off the domain stack. + * Any time execution is going to switch to the context of a different chain of + * asynchronous calls, it's important to ensure that the current domain is exited. + * The call to `exit()` delimits either the end of or an interruption to the chain + * of asynchronous calls and I/O operations bound to a domain. + * + * If there are multiple, nested domains bound to the current execution context,`exit()` will exit any domains nested within this domain. + * + * Calling `exit()` changes only the active domain, and does not alter the domain + * itself. `enter()` and `exit()` can be called an arbitrary number of times on a + * single domain. + */ + exit(): void; + /** + * Run the supplied function in the context of the domain, implicitly + * binding all event emitters, timers, and low-level requests that are + * created in that context. Optionally, arguments can be passed to + * the function. + * + * This is the most basic way to use a domain. + * + * ```js + * const domain = require('node:domain'); + * const fs = require('node:fs'); + * const d = domain.create(); + * d.on('error', (er) => { + * console.error('Caught error!', er); + * }); + * d.run(() => { + * process.nextTick(() => { + * setTimeout(() => { // Simulating some various async stuff + * fs.open('non-existent file', 'r', (er, fd) => { + * if (er) throw er; + * // proceed... + * }); + * }, 100); + * }); + * }); + * ``` + * + * In this example, the `d.on('error')` handler will be triggered, rather + * than crashing the program. + */ + run(fn: (...args: any[]) => T, ...args: any[]): T; + /** + * Explicitly adds an emitter to the domain. If any event handlers called by + * the emitter throw an error, or if the emitter emits an `'error'` event, it + * will be routed to the domain's `'error'` event, just like with implicit + * binding. + * + * This also works with timers that are returned from `setInterval()` and `setTimeout()`. If their callback function throws, it will be caught by + * the domain `'error'` handler. + * + * If the Timer or `EventEmitter` was already bound to a domain, it is removed + * from that one, and bound to this one instead. + * @param emitter emitter or timer to be added to the domain + */ + add(emitter: EventEmitter | NodeJS.Timer): void; + /** + * The opposite of {@link add}. Removes domain handling from the + * specified emitter. + * @param emitter emitter or timer to be removed from the domain + */ + remove(emitter: EventEmitter | NodeJS.Timer): void; + /** + * The returned function will be a wrapper around the supplied callback + * function. When the returned function is called, any errors that are + * thrown will be routed to the domain's `'error'` event. + * + * ```js + * const d = domain.create(); + * + * function readSomeFile(filename, cb) { + * fs.readFile(filename, 'utf8', d.bind((er, data) => { + * // If this throws, it will also be passed to the domain. + * return cb(er, data ? JSON.parse(data) : null); + * })); + * } + * + * d.on('error', (er) => { + * // An error occurred somewhere. If we throw it now, it will crash the program + * // with the normal line number and stack message. + * }); + * ``` + * @param callback The callback function + * @return The bound function + */ + bind(callback: T): T; + /** + * This method is almost identical to {@link bind}. However, in + * addition to catching thrown errors, it will also intercept `Error` objects sent as the first argument to the function. + * + * In this way, the common `if (err) return callback(err);` pattern can be replaced + * with a single error handler in a single place. + * + * ```js + * const d = domain.create(); + * + * function readSomeFile(filename, cb) { + * fs.readFile(filename, 'utf8', d.intercept((data) => { + * // Note, the first argument is never passed to the + * // callback since it is assumed to be the 'Error' argument + * // and thus intercepted by the domain. + * + * // If this throws, it will also be passed to the domain + * // so the error-handling logic can be moved to the 'error' + * // event on the domain instead of being repeated throughout + * // the program. + * return cb(null, JSON.parse(data)); + * })); + * } + * + * d.on('error', (er) => { + * // An error occurred somewhere. If we throw it now, it will crash the program + * // with the normal line number and stack message. + * }); + * ``` + * @param callback The callback function + * @return The intercepted function + */ + intercept(callback: T): T; + } + function create(): Domain; +} +declare module "node:domain" { + export * from "domain"; +} diff --git a/node_modules/@types/node/events.d.ts b/node_modules/@types/node/events.d.ts new file mode 100644 index 00000000..113410c7 --- /dev/null +++ b/node_modules/@types/node/events.d.ts @@ -0,0 +1,844 @@ +/** + * Much of the Node.js core API is built around an idiomatic asynchronous + * event-driven architecture in which certain kinds of objects (called "emitters") + * emit named events that cause `Function` objects ("listeners") to be called. + * + * For instance: a `net.Server` object emits an event each time a peer + * connects to it; a `fs.ReadStream` emits an event when the file is opened; + * a `stream` emits an event whenever data is available to be read. + * + * All objects that emit events are instances of the `EventEmitter` class. These + * objects expose an `eventEmitter.on()` function that allows one or more + * functions to be attached to named events emitted by the object. Typically, + * event names are camel-cased strings but any valid JavaScript property key + * can be used. + * + * When the `EventEmitter` object emits an event, all of the functions attached + * to that specific event are called _synchronously_. Any values returned by the + * called listeners are _ignored_ and discarded. + * + * The following example shows a simple `EventEmitter` instance with a single + * listener. The `eventEmitter.on()` method is used to register listeners, while + * the `eventEmitter.emit()` method is used to trigger the event. + * + * ```js + * import { EventEmitter } from 'node:events'; + * + * class MyEmitter extends EventEmitter {} + * + * const myEmitter = new MyEmitter(); + * myEmitter.on('event', () => { + * console.log('an event occurred!'); + * }); + * myEmitter.emit('event'); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/events.js) + */ +declare module "events" { + import { AsyncResource, AsyncResourceOptions } from "node:async_hooks"; + // NOTE: This class is in the docs but is **not actually exported** by Node. + // If https://github.com/nodejs/node/issues/39903 gets resolved and Node + // actually starts exporting the class, uncomment below. + // import { EventListener, EventListenerObject } from '__dom-events'; + // /** The NodeEventTarget is a Node.js-specific extension to EventTarget that emulates a subset of the EventEmitter API. */ + // interface NodeEventTarget extends EventTarget { + // /** + // * Node.js-specific extension to the `EventTarget` class that emulates the equivalent `EventEmitter` API. + // * The only difference between `addListener()` and `addEventListener()` is that addListener() will return a reference to the EventTarget. + // */ + // addListener(type: string, listener: EventListener | EventListenerObject, options?: { once: boolean }): this; + // /** Node.js-specific extension to the `EventTarget` class that returns an array of event `type` names for which event listeners are registered. */ + // eventNames(): string[]; + // /** Node.js-specific extension to the `EventTarget` class that returns the number of event listeners registered for the `type`. */ + // listenerCount(type: string): number; + // /** Node.js-specific alias for `eventTarget.removeListener()`. */ + // off(type: string, listener: EventListener | EventListenerObject): this; + // /** Node.js-specific alias for `eventTarget.addListener()`. */ + // on(type: string, listener: EventListener | EventListenerObject, options?: { once: boolean }): this; + // /** Node.js-specific extension to the `EventTarget` class that adds a `once` listener for the given event `type`. This is equivalent to calling `on` with the `once` option set to `true`. */ + // once(type: string, listener: EventListener | EventListenerObject): this; + // /** + // * Node.js-specific extension to the `EventTarget` class. + // * If `type` is specified, removes all registered listeners for `type`, + // * otherwise removes all registered listeners. + // */ + // removeAllListeners(type: string): this; + // /** + // * Node.js-specific extension to the `EventTarget` class that removes the listener for the given `type`. + // * The only difference between `removeListener()` and `removeEventListener()` is that `removeListener()` will return a reference to the `EventTarget`. + // */ + // removeListener(type: string, listener: EventListener | EventListenerObject): this; + // } + interface EventEmitterOptions { + /** + * Enables automatic capturing of promise rejection. + */ + captureRejections?: boolean | undefined; + } + // Any EventTarget with a Node-style `once` function + interface _NodeEventTarget { + once(eventName: string | symbol, listener: (...args: any[]) => void): this; + } + // Any EventTarget with a DOM-style `addEventListener` + interface _DOMEventTarget { + addEventListener( + eventName: string, + listener: (...args: any[]) => void, + opts?: { + once: boolean; + }, + ): any; + } + interface StaticEventEmitterOptions { + signal?: AbortSignal | undefined; + } + interface EventEmitter extends NodeJS.EventEmitter {} + /** + * The `EventEmitter` class is defined and exposed by the `node:events` module: + * + * ```js + * import { EventEmitter } from 'node:events'; + * ``` + * + * All `EventEmitter`s emit the event `'newListener'` when new listeners are + * added and `'removeListener'` when existing listeners are removed. + * + * It supports the following option: + * @since v0.1.26 + */ + class EventEmitter { + constructor(options?: EventEmitterOptions); + + [EventEmitter.captureRejectionSymbol]?(error: Error, event: string, ...args: any[]): void; + + /** + * Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given + * event or that is rejected if the `EventEmitter` emits `'error'` while waiting. + * The `Promise` will resolve with an array of all the arguments emitted to the + * given event. + * + * This method is intentionally generic and works with the web platform [EventTarget](https://dom.spec.whatwg.org/#interface-eventtarget) interface, which has no special`'error'` event + * semantics and does not listen to the `'error'` event. + * + * ```js + * import { once, EventEmitter } from 'node:events'; + * import process from 'node:process'; + * + * const ee = new EventEmitter(); + * + * process.nextTick(() => { + * ee.emit('myevent', 42); + * }); + * + * const [value] = await once(ee, 'myevent'); + * console.log(value); + * + * const err = new Error('kaboom'); + * process.nextTick(() => { + * ee.emit('error', err); + * }); + * + * try { + * await once(ee, 'myevent'); + * } catch (err) { + * console.error('error happened', err); + * } + * ``` + * + * The special handling of the `'error'` event is only used when `events.once()`is used to wait for another event. If `events.once()` is used to wait for the + * '`error'` event itself, then it is treated as any other kind of event without + * special handling: + * + * ```js + * import { EventEmitter, once } from 'node:events'; + * + * const ee = new EventEmitter(); + * + * once(ee, 'error') + * .then(([err]) => console.log('ok', err.message)) + * .catch((err) => console.error('error', err.message)); + * + * ee.emit('error', new Error('boom')); + * + * // Prints: ok boom + * ``` + * + * An `AbortSignal` can be used to cancel waiting for the event: + * + * ```js + * import { EventEmitter, once } from 'node:events'; + * + * const ee = new EventEmitter(); + * const ac = new AbortController(); + * + * async function foo(emitter, event, signal) { + * try { + * await once(emitter, event, { signal }); + * console.log('event emitted!'); + * } catch (error) { + * if (error.name === 'AbortError') { + * console.error('Waiting for the event was canceled!'); + * } else { + * console.error('There was an error', error.message); + * } + * } + * } + * + * foo(ee, 'foo', ac.signal); + * ac.abort(); // Abort waiting for the event + * ee.emit('foo'); // Prints: Waiting for the event was canceled! + * ``` + * @since v11.13.0, v10.16.0 + */ + static once( + emitter: _NodeEventTarget, + eventName: string | symbol, + options?: StaticEventEmitterOptions, + ): Promise; + static once(emitter: _DOMEventTarget, eventName: string, options?: StaticEventEmitterOptions): Promise; + /** + * ```js + * import { on, EventEmitter } from 'node:events'; + * import process from 'node:process'; + * + * const ee = new EventEmitter(); + * + * // Emit later on + * process.nextTick(() => { + * ee.emit('foo', 'bar'); + * ee.emit('foo', 42); + * }); + * + * for await (const event of on(ee, 'foo')) { + * // The execution of this inner block is synchronous and it + * // processes one event at a time (even with await). Do not use + * // if concurrent execution is required. + * console.log(event); // prints ['bar'] [42] + * } + * // Unreachable here + * ``` + * + * Returns an `AsyncIterator` that iterates `eventName` events. It will throw + * if the `EventEmitter` emits `'error'`. It removes all listeners when + * exiting the loop. The `value` returned by each iteration is an array + * composed of the emitted event arguments. + * + * An `AbortSignal` can be used to cancel waiting on events: + * + * ```js + * import { on, EventEmitter } from 'node:events'; + * import process from 'node:process'; + * + * const ac = new AbortController(); + * + * (async () => { + * const ee = new EventEmitter(); + * + * // Emit later on + * process.nextTick(() => { + * ee.emit('foo', 'bar'); + * ee.emit('foo', 42); + * }); + * + * for await (const event of on(ee, 'foo', { signal: ac.signal })) { + * // The execution of this inner block is synchronous and it + * // processes one event at a time (even with await). Do not use + * // if concurrent execution is required. + * console.log(event); // prints ['bar'] [42] + * } + * // Unreachable here + * })(); + * + * process.nextTick(() => ac.abort()); + * ``` + * @since v13.6.0, v12.16.0 + * @param eventName The name of the event being listened for + * @return that iterates `eventName` events emitted by the `emitter` + */ + static on( + emitter: NodeJS.EventEmitter, + eventName: string, + options?: StaticEventEmitterOptions, + ): AsyncIterableIterator; + /** + * A class method that returns the number of listeners for the given `eventName`registered on the given `emitter`. + * + * ```js + * import { EventEmitter, listenerCount } from 'node:events'; + * + * const myEmitter = new EventEmitter(); + * myEmitter.on('event', () => {}); + * myEmitter.on('event', () => {}); + * console.log(listenerCount(myEmitter, 'event')); + * // Prints: 2 + * ``` + * @since v0.9.12 + * @deprecated Since v3.2.0 - Use `listenerCount` instead. + * @param emitter The emitter to query + * @param eventName The event name + */ + static listenerCount(emitter: NodeJS.EventEmitter, eventName: string | symbol): number; + /** + * Returns a copy of the array of listeners for the event named `eventName`. + * + * For `EventEmitter`s this behaves exactly the same as calling `.listeners` on + * the emitter. + * + * For `EventTarget`s this is the only way to get the event listeners for the + * event target. This is useful for debugging and diagnostic purposes. + * + * ```js + * import { getEventListeners, EventEmitter } from 'node:events'; + * + * { + * const ee = new EventEmitter(); + * const listener = () => console.log('Events are fun'); + * ee.on('foo', listener); + * console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ] + * } + * { + * const et = new EventTarget(); + * const listener = () => console.log('Events are fun'); + * et.addEventListener('foo', listener); + * console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ] + * } + * ``` + * @since v15.2.0, v14.17.0 + */ + static getEventListeners(emitter: _DOMEventTarget | NodeJS.EventEmitter, name: string | symbol): Function[]; + /** + * Returns the currently set max amount of listeners. + * + * For `EventEmitter`s this behaves exactly the same as calling `.getMaxListeners` on + * the emitter. + * + * For `EventTarget`s this is the only way to get the max event listeners for the + * event target. If the number of event handlers on a single EventTarget exceeds + * the max set, the EventTarget will print a warning. + * + * ```js + * import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events'; + * + * { + * const ee = new EventEmitter(); + * console.log(getMaxListeners(ee)); // 10 + * setMaxListeners(11, ee); + * console.log(getMaxListeners(ee)); // 11 + * } + * { + * const et = new EventTarget(); + * console.log(getMaxListeners(et)); // 10 + * setMaxListeners(11, et); + * console.log(getMaxListeners(et)); // 11 + * } + * ``` + * @since v19.9.0 + */ + static getMaxListeners(emitter: _DOMEventTarget | NodeJS.EventEmitter): number; + /** + * ```js + * import { setMaxListeners, EventEmitter } from 'node:events'; + * + * const target = new EventTarget(); + * const emitter = new EventEmitter(); + * + * setMaxListeners(5, target, emitter); + * ``` + * @since v15.4.0 + * @param n A non-negative number. The maximum number of listeners per `EventTarget` event. + * @param eventsTargets Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, `n` is set as the default max for all newly created {EventTarget} and {EventEmitter} + * objects. + */ + static setMaxListeners(n?: number, ...eventTargets: Array<_DOMEventTarget | NodeJS.EventEmitter>): void; + /** + * Listens once to the `abort` event on the provided `signal`. + * + * Listening to the `abort` event on abort signals is unsafe and may + * lead to resource leaks since another third party with the signal can + * call `e.stopImmediatePropagation()`. Unfortunately Node.js cannot change + * this since it would violate the web standard. Additionally, the original + * API makes it easy to forget to remove listeners. + * + * This API allows safely using `AbortSignal`s in Node.js APIs by solving these + * two issues by listening to the event such that `stopImmediatePropagation` does + * not prevent the listener from running. + * + * Returns a disposable so that it may be unsubscribed from more easily. + * + * ```js + * import { addAbortListener } from 'node:events'; + * + * function example(signal) { + * let disposable; + * try { + * signal.addEventListener('abort', (e) => e.stopImmediatePropagation()); + * disposable = addAbortListener(signal, (e) => { + * // Do something when signal is aborted. + * }); + * } finally { + * disposable?.[Symbol.dispose](); + * } + * } + * ``` + * @since v20.5.0 + * @experimental + * @return Disposable that removes the `abort` listener. + */ + static addAbortListener(signal: AbortSignal, resource: (event: Event) => void): Disposable; + /** + * This symbol shall be used to install a listener for only monitoring `'error'`events. Listeners installed using this symbol are called before the regular`'error'` listeners are called. + * + * Installing a listener using this symbol does not change the behavior once an`'error'` event is emitted. Therefore, the process will still crash if no + * regular `'error'` listener is installed. + * @since v13.6.0, v12.17.0 + */ + static readonly errorMonitor: unique symbol; + /** + * Value: `Symbol.for('nodejs.rejection')` + * + * See how to write a custom `rejection handler`. + * @since v13.4.0, v12.16.0 + */ + static readonly captureRejectionSymbol: unique symbol; + /** + * Value: [boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + * + * Change the default `captureRejections` option on all new `EventEmitter` objects. + * @since v13.4.0, v12.16.0 + */ + static captureRejections: boolean; + /** + * By default, a maximum of `10` listeners can be registered for any single + * event. This limit can be changed for individual `EventEmitter` instances + * using the `emitter.setMaxListeners(n)` method. To change the default + * for _all_`EventEmitter` instances, the `events.defaultMaxListeners`property can be used. If this value is not a positive number, a `RangeError`is thrown. + * + * Take caution when setting the `events.defaultMaxListeners` because the + * change affects _all_`EventEmitter` instances, including those created before + * the change is made. However, calling `emitter.setMaxListeners(n)` still has + * precedence over `events.defaultMaxListeners`. + * + * This is not a hard limit. The `EventEmitter` instance will allow + * more listeners to be added but will output a trace warning to stderr indicating + * that a "possible EventEmitter memory leak" has been detected. For any single`EventEmitter`, the `emitter.getMaxListeners()` and `emitter.setMaxListeners()`methods can be used to + * temporarily avoid this warning: + * + * ```js + * import { EventEmitter } from 'node:events'; + * const emitter = new EventEmitter(); + * emitter.setMaxListeners(emitter.getMaxListeners() + 1); + * emitter.once('event', () => { + * // do stuff + * emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0)); + * }); + * ``` + * + * The `--trace-warnings` command-line flag can be used to display the + * stack trace for such warnings. + * + * The emitted warning can be inspected with `process.on('warning')` and will + * have the additional `emitter`, `type`, and `count` properties, referring to + * the event emitter instance, the event's name and the number of attached + * listeners, respectively. + * Its `name` property is set to `'MaxListenersExceededWarning'`. + * @since v0.11.2 + */ + static defaultMaxListeners: number; + } + import internal = require("node:events"); + namespace EventEmitter { + // Should just be `export { EventEmitter }`, but that doesn't work in TypeScript 3.4 + export { internal as EventEmitter }; + export interface Abortable { + /** + * When provided the corresponding `AbortController` can be used to cancel an asynchronous action. + */ + signal?: AbortSignal | undefined; + } + + export interface EventEmitterReferencingAsyncResource extends AsyncResource { + readonly eventEmitter: EventEmitterAsyncResource; + } + + export interface EventEmitterAsyncResourceOptions extends AsyncResourceOptions, EventEmitterOptions { + /** + * The type of async event, this is required when instantiating `EventEmitterAsyncResource` + * directly rather than as a child class. + * @default new.target.name if instantiated as a child class. + */ + name?: string; + } + + /** + * Integrates `EventEmitter` with `AsyncResource` for `EventEmitter`s that require + * manual async tracking. Specifically, all events emitted by instances of + * `EventEmitterAsyncResource` will run within its async context. + * + * The EventEmitterAsyncResource class has the same methods and takes the + * same options as EventEmitter and AsyncResource themselves. + * @throws if `options.name` is not provided when instantiated directly. + * @since v17.4.0, v16.14.0 + */ + export class EventEmitterAsyncResource extends EventEmitter { + /** + * @param options Only optional in child class. + */ + constructor(options?: EventEmitterAsyncResourceOptions); + /** + * Call all destroy hooks. This should only ever be called once. An + * error will be thrown if it is called more than once. This must be + * manually called. If the resource is left to be collected by the GC then + * the destroy hooks will never be called. + */ + emitDestroy(): void; + /** The unique asyncId assigned to the resource. */ + readonly asyncId: number; + /** The same triggerAsyncId that is passed to the AsyncResource constructor. */ + readonly triggerAsyncId: number; + /** The underlying AsyncResource */ + readonly asyncResource: EventEmitterReferencingAsyncResource; + } + } + global { + namespace NodeJS { + interface EventEmitter { + [EventEmitter.captureRejectionSymbol]?(error: Error, event: string, ...args: any[]): void; + /** + * Alias for `emitter.on(eventName, listener)`. + * @since v0.1.26 + */ + addListener(eventName: string | symbol, listener: (...args: any[]) => void): this; + /** + * Adds the `listener` function to the end of the listeners array for the + * event named `eventName`. No checks are made to see if the `listener` has + * already been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple + * times. + * + * ```js + * server.on('connection', (stream) => { + * console.log('someone connected!'); + * }); + * ``` + * + * Returns a reference to the `EventEmitter`, so that calls can be chained. + * + * By default, event listeners are invoked in the order they are added. The`emitter.prependListener()` method can be used as an alternative to add the + * event listener to the beginning of the listeners array. + * + * ```js + * import { EventEmitter } from 'node:events'; + * const myEE = new EventEmitter(); + * myEE.on('foo', () => console.log('a')); + * myEE.prependListener('foo', () => console.log('b')); + * myEE.emit('foo'); + * // Prints: + * // b + * // a + * ``` + * @since v0.1.101 + * @param eventName The name of the event. + * @param listener The callback function + */ + on(eventName: string | symbol, listener: (...args: any[]) => void): this; + /** + * Adds a **one-time**`listener` function for the event named `eventName`. The + * next time `eventName` is triggered, this listener is removed and then invoked. + * + * ```js + * server.once('connection', (stream) => { + * console.log('Ah, we have our first user!'); + * }); + * ``` + * + * Returns a reference to the `EventEmitter`, so that calls can be chained. + * + * By default, event listeners are invoked in the order they are added. The`emitter.prependOnceListener()` method can be used as an alternative to add the + * event listener to the beginning of the listeners array. + * + * ```js + * import { EventEmitter } from 'node:events'; + * const myEE = new EventEmitter(); + * myEE.once('foo', () => console.log('a')); + * myEE.prependOnceListener('foo', () => console.log('b')); + * myEE.emit('foo'); + * // Prints: + * // b + * // a + * ``` + * @since v0.3.0 + * @param eventName The name of the event. + * @param listener The callback function + */ + once(eventName: string | symbol, listener: (...args: any[]) => void): this; + /** + * Removes the specified `listener` from the listener array for the event named`eventName`. + * + * ```js + * const callback = (stream) => { + * console.log('someone connected!'); + * }; + * server.on('connection', callback); + * // ... + * server.removeListener('connection', callback); + * ``` + * + * `removeListener()` will remove, at most, one instance of a listener from the + * listener array. If any single listener has been added multiple times to the + * listener array for the specified `eventName`, then `removeListener()` must be + * called multiple times to remove each instance. + * + * Once an event is emitted, all listeners attached to it at the + * time of emitting are called in order. This implies that any`removeListener()` or `removeAllListeners()` calls _after_ emitting and _before_ the last listener finishes execution + * will not remove them from`emit()` in progress. Subsequent events behave as expected. + * + * ```js + * import { EventEmitter } from 'node:events'; + * class MyEmitter extends EventEmitter {} + * const myEmitter = new MyEmitter(); + * + * const callbackA = () => { + * console.log('A'); + * myEmitter.removeListener('event', callbackB); + * }; + * + * const callbackB = () => { + * console.log('B'); + * }; + * + * myEmitter.on('event', callbackA); + * + * myEmitter.on('event', callbackB); + * + * // callbackA removes listener callbackB but it will still be called. + * // Internal listener array at time of emit [callbackA, callbackB] + * myEmitter.emit('event'); + * // Prints: + * // A + * // B + * + * // callbackB is now removed. + * // Internal listener array [callbackA] + * myEmitter.emit('event'); + * // Prints: + * // A + * ``` + * + * Because listeners are managed using an internal array, calling this will + * change the position indices of any listener registered _after_ the listener + * being removed. This will not impact the order in which listeners are called, + * but it means that any copies of the listener array as returned by + * the `emitter.listeners()` method will need to be recreated. + * + * When a single function has been added as a handler multiple times for a single + * event (as in the example below), `removeListener()` will remove the most + * recently added instance. In the example the `once('ping')`listener is removed: + * + * ```js + * import { EventEmitter } from 'node:events'; + * const ee = new EventEmitter(); + * + * function pong() { + * console.log('pong'); + * } + * + * ee.on('ping', pong); + * ee.once('ping', pong); + * ee.removeListener('ping', pong); + * + * ee.emit('ping'); + * ee.emit('ping'); + * ``` + * + * Returns a reference to the `EventEmitter`, so that calls can be chained. + * @since v0.1.26 + */ + removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this; + /** + * Alias for `emitter.removeListener()`. + * @since v10.0.0 + */ + off(eventName: string | symbol, listener: (...args: any[]) => void): this; + /** + * Removes all listeners, or those of the specified `eventName`. + * + * It is bad practice to remove listeners added elsewhere in the code, + * particularly when the `EventEmitter` instance was created by some other + * component or module (e.g. sockets or file streams). + * + * Returns a reference to the `EventEmitter`, so that calls can be chained. + * @since v0.1.26 + */ + removeAllListeners(event?: string | symbol): this; + /** + * By default `EventEmitter`s will print a warning if more than `10` listeners are + * added for a particular event. This is a useful default that helps finding + * memory leaks. The `emitter.setMaxListeners()` method allows the limit to be + * modified for this specific `EventEmitter` instance. The value can be set to`Infinity` (or `0`) to indicate an unlimited number of listeners. + * + * Returns a reference to the `EventEmitter`, so that calls can be chained. + * @since v0.3.5 + */ + setMaxListeners(n: number): this; + /** + * Returns the current max listener value for the `EventEmitter` which is either + * set by `emitter.setMaxListeners(n)` or defaults to {@link defaultMaxListeners}. + * @since v1.0.0 + */ + getMaxListeners(): number; + /** + * Returns a copy of the array of listeners for the event named `eventName`. + * + * ```js + * server.on('connection', (stream) => { + * console.log('someone connected!'); + * }); + * console.log(util.inspect(server.listeners('connection'))); + * // Prints: [ [Function] ] + * ``` + * @since v0.1.26 + */ + listeners(eventName: string | symbol): Function[]; + /** + * Returns a copy of the array of listeners for the event named `eventName`, + * including any wrappers (such as those created by `.once()`). + * + * ```js + * import { EventEmitter } from 'node:events'; + * const emitter = new EventEmitter(); + * emitter.once('log', () => console.log('log once')); + * + * // Returns a new Array with a function `onceWrapper` which has a property + * // `listener` which contains the original listener bound above + * const listeners = emitter.rawListeners('log'); + * const logFnWrapper = listeners[0]; + * + * // Logs "log once" to the console and does not unbind the `once` event + * logFnWrapper.listener(); + * + * // Logs "log once" to the console and removes the listener + * logFnWrapper(); + * + * emitter.on('log', () => console.log('log persistently')); + * // Will return a new Array with a single function bound by `.on()` above + * const newListeners = emitter.rawListeners('log'); + * + * // Logs "log persistently" twice + * newListeners[0](); + * emitter.emit('log'); + * ``` + * @since v9.4.0 + */ + rawListeners(eventName: string | symbol): Function[]; + /** + * Synchronously calls each of the listeners registered for the event named`eventName`, in the order they were registered, passing the supplied arguments + * to each. + * + * Returns `true` if the event had listeners, `false` otherwise. + * + * ```js + * import { EventEmitter } from 'node:events'; + * const myEmitter = new EventEmitter(); + * + * // First listener + * myEmitter.on('event', function firstListener() { + * console.log('Helloooo! first listener'); + * }); + * // Second listener + * myEmitter.on('event', function secondListener(arg1, arg2) { + * console.log(`event with parameters ${arg1}, ${arg2} in second listener`); + * }); + * // Third listener + * myEmitter.on('event', function thirdListener(...args) { + * const parameters = args.join(', '); + * console.log(`event with parameters ${parameters} in third listener`); + * }); + * + * console.log(myEmitter.listeners('event')); + * + * myEmitter.emit('event', 1, 2, 3, 4, 5); + * + * // Prints: + * // [ + * // [Function: firstListener], + * // [Function: secondListener], + * // [Function: thirdListener] + * // ] + * // Helloooo! first listener + * // event with parameters 1, 2 in second listener + * // event with parameters 1, 2, 3, 4, 5 in third listener + * ``` + * @since v0.1.26 + */ + emit(eventName: string | symbol, ...args: any[]): boolean; + /** + * Returns the number of listeners listening for the event named `eventName`. + * If `listener` is provided, it will return how many times the listener is found + * in the list of the listeners of the event. + * @since v3.2.0 + * @param eventName The name of the event being listened for + * @param listener The event handler function + */ + listenerCount(eventName: string | symbol, listener?: Function): number; + /** + * Adds the `listener` function to the _beginning_ of the listeners array for the + * event named `eventName`. No checks are made to see if the `listener` has + * already been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple + * times. + * + * ```js + * server.prependListener('connection', (stream) => { + * console.log('someone connected!'); + * }); + * ``` + * + * Returns a reference to the `EventEmitter`, so that calls can be chained. + * @since v6.0.0 + * @param eventName The name of the event. + * @param listener The callback function + */ + prependListener(eventName: string | symbol, listener: (...args: any[]) => void): this; + /** + * Adds a **one-time**`listener` function for the event named `eventName` to the _beginning_ of the listeners array. The next time `eventName` is triggered, this + * listener is removed, and then invoked. + * + * ```js + * server.prependOnceListener('connection', (stream) => { + * console.log('Ah, we have our first user!'); + * }); + * ``` + * + * Returns a reference to the `EventEmitter`, so that calls can be chained. + * @since v6.0.0 + * @param eventName The name of the event. + * @param listener The callback function + */ + prependOnceListener(eventName: string | symbol, listener: (...args: any[]) => void): this; + /** + * Returns an array listing the events for which the emitter has registered + * listeners. The values in the array are strings or `Symbol`s. + * + * ```js + * import { EventEmitter } from 'node:events'; + * + * const myEE = new EventEmitter(); + * myEE.on('foo', () => {}); + * myEE.on('bar', () => {}); + * + * const sym = Symbol('symbol'); + * myEE.on(sym, () => {}); + * + * console.log(myEE.eventNames()); + * // Prints: [ 'foo', 'bar', Symbol(symbol) ] + * ``` + * @since v6.0.0 + */ + eventNames(): Array; + } + } + } + export = EventEmitter; +} +declare module "node:events" { + import events = require("events"); + export = events; +} diff --git a/node_modules/@types/node/fs.d.ts b/node_modules/@types/node/fs.d.ts new file mode 100644 index 00000000..3f5d9a1c --- /dev/null +++ b/node_modules/@types/node/fs.d.ts @@ -0,0 +1,4289 @@ +/** + * The `node:fs` module enables interacting with the file system in a + * way modeled on standard POSIX functions. + * + * To use the promise-based APIs: + * + * ```js + * import * as fs from 'node:fs/promises'; + * ``` + * + * To use the callback and sync APIs: + * + * ```js + * import * as fs from 'node:fs'; + * ``` + * + * All file system operations have synchronous, callback, and promise-based + * forms, and are accessible using both CommonJS syntax and ES6 Modules (ESM). + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/fs.js) + */ +declare module "fs" { + import * as stream from "node:stream"; + import { Abortable, EventEmitter } from "node:events"; + import { URL } from "node:url"; + import * as promises from "node:fs/promises"; + export { promises }; + /** + * Valid types for path values in "fs". + */ + export type PathLike = string | Buffer | URL; + export type PathOrFileDescriptor = PathLike | number; + export type TimeLike = string | number | Date; + export type NoParamCallback = (err: NodeJS.ErrnoException | null) => void; + export type BufferEncodingOption = + | "buffer" + | { + encoding: "buffer"; + }; + export interface ObjectEncodingOptions { + encoding?: BufferEncoding | null | undefined; + } + export type EncodingOption = ObjectEncodingOptions | BufferEncoding | undefined | null; + export type OpenMode = number | string; + export type Mode = number | string; + export interface StatsBase { + isFile(): boolean; + isDirectory(): boolean; + isBlockDevice(): boolean; + isCharacterDevice(): boolean; + isSymbolicLink(): boolean; + isFIFO(): boolean; + isSocket(): boolean; + dev: T; + ino: T; + mode: T; + nlink: T; + uid: T; + gid: T; + rdev: T; + size: T; + blksize: T; + blocks: T; + atimeMs: T; + mtimeMs: T; + ctimeMs: T; + birthtimeMs: T; + atime: Date; + mtime: Date; + ctime: Date; + birthtime: Date; + } + export interface Stats extends StatsBase {} + /** + * A `fs.Stats` object provides information about a file. + * + * Objects returned from {@link stat}, {@link lstat}, {@link fstat}, and + * their synchronous counterparts are of this type. + * If `bigint` in the `options` passed to those methods is true, the numeric values + * will be `bigint` instead of `number`, and the object will contain additional + * nanosecond-precision properties suffixed with `Ns`. + * + * ```console + * Stats { + * dev: 2114, + * ino: 48064969, + * mode: 33188, + * nlink: 1, + * uid: 85, + * gid: 100, + * rdev: 0, + * size: 527, + * blksize: 4096, + * blocks: 8, + * atimeMs: 1318289051000.1, + * mtimeMs: 1318289051000.1, + * ctimeMs: 1318289051000.1, + * birthtimeMs: 1318289051000.1, + * atime: Mon, 10 Oct 2011 23:24:11 GMT, + * mtime: Mon, 10 Oct 2011 23:24:11 GMT, + * ctime: Mon, 10 Oct 2011 23:24:11 GMT, + * birthtime: Mon, 10 Oct 2011 23:24:11 GMT } + * ``` + * + * `bigint` version: + * + * ```console + * BigIntStats { + * dev: 2114n, + * ino: 48064969n, + * mode: 33188n, + * nlink: 1n, + * uid: 85n, + * gid: 100n, + * rdev: 0n, + * size: 527n, + * blksize: 4096n, + * blocks: 8n, + * atimeMs: 1318289051000n, + * mtimeMs: 1318289051000n, + * ctimeMs: 1318289051000n, + * birthtimeMs: 1318289051000n, + * atimeNs: 1318289051000000000n, + * mtimeNs: 1318289051000000000n, + * ctimeNs: 1318289051000000000n, + * birthtimeNs: 1318289051000000000n, + * atime: Mon, 10 Oct 2011 23:24:11 GMT, + * mtime: Mon, 10 Oct 2011 23:24:11 GMT, + * ctime: Mon, 10 Oct 2011 23:24:11 GMT, + * birthtime: Mon, 10 Oct 2011 23:24:11 GMT } + * ``` + * @since v0.1.21 + */ + export class Stats {} + export interface StatsFsBase { + /** Type of file system. */ + type: T; + /** Optimal transfer block size. */ + bsize: T; + /** Total data blocks in file system. */ + blocks: T; + /** Free blocks in file system. */ + bfree: T; + /** Available blocks for unprivileged users */ + bavail: T; + /** Total file nodes in file system. */ + files: T; + /** Free file nodes in file system. */ + ffree: T; + } + export interface StatsFs extends StatsFsBase {} + /** + * Provides information about a mounted file system. + * + * Objects returned from {@link statfs} and its synchronous counterpart are of + * this type. If `bigint` in the `options` passed to those methods is `true`, the + * numeric values will be `bigint` instead of `number`. + * + * ```console + * StatFs { + * type: 1397114950, + * bsize: 4096, + * blocks: 121938943, + * bfree: 61058895, + * bavail: 61058895, + * files: 999, + * ffree: 1000000 + * } + * ``` + * + * `bigint` version: + * + * ```console + * StatFs { + * type: 1397114950n, + * bsize: 4096n, + * blocks: 121938943n, + * bfree: 61058895n, + * bavail: 61058895n, + * files: 999n, + * ffree: 1000000n + * } + * ``` + * @since v19.6.0, v18.15.0 + */ + export class StatsFs {} + export interface BigIntStatsFs extends StatsFsBase {} + export interface StatFsOptions { + bigint?: boolean | undefined; + } + /** + * A representation of a directory entry, which can be a file or a subdirectory + * within the directory, as returned by reading from an `fs.Dir`. The + * directory entry is a combination of the file name and file type pairs. + * + * Additionally, when {@link readdir} or {@link readdirSync} is called with + * the `withFileTypes` option set to `true`, the resulting array is filled with `fs.Dirent` objects, rather than strings or `Buffer` s. + * @since v10.10.0 + */ + export class Dirent { + /** + * Returns `true` if the `fs.Dirent` object describes a regular file. + * @since v10.10.0 + */ + isFile(): boolean; + /** + * Returns `true` if the `fs.Dirent` object describes a file system + * directory. + * @since v10.10.0 + */ + isDirectory(): boolean; + /** + * Returns `true` if the `fs.Dirent` object describes a block device. + * @since v10.10.0 + */ + isBlockDevice(): boolean; + /** + * Returns `true` if the `fs.Dirent` object describes a character device. + * @since v10.10.0 + */ + isCharacterDevice(): boolean; + /** + * Returns `true` if the `fs.Dirent` object describes a symbolic link. + * @since v10.10.0 + */ + isSymbolicLink(): boolean; + /** + * Returns `true` if the `fs.Dirent` object describes a first-in-first-out + * (FIFO) pipe. + * @since v10.10.0 + */ + isFIFO(): boolean; + /** + * Returns `true` if the `fs.Dirent` object describes a socket. + * @since v10.10.0 + */ + isSocket(): boolean; + /** + * The file name that this `fs.Dirent` object refers to. The type of this + * value is determined by the `options.encoding` passed to {@link readdir} or {@link readdirSync}. + * @since v10.10.0 + */ + name: string; + /** + * The base path that this `fs.Dirent` object refers to. + * @since v20.1.0 + */ + path: string; + } + /** + * A class representing a directory stream. + * + * Created by {@link opendir}, {@link opendirSync}, or `fsPromises.opendir()`. + * + * ```js + * import { opendir } from 'node:fs/promises'; + * + * try { + * const dir = await opendir('./'); + * for await (const dirent of dir) + * console.log(dirent.name); + * } catch (err) { + * console.error(err); + * } + * ``` + * + * When using the async iterator, the `fs.Dir` object will be automatically + * closed after the iterator exits. + * @since v12.12.0 + */ + export class Dir implements AsyncIterable { + /** + * The read-only path of this directory as was provided to {@link opendir},{@link opendirSync}, or `fsPromises.opendir()`. + * @since v12.12.0 + */ + readonly path: string; + /** + * Asynchronously iterates over the directory via `readdir(3)` until all entries have been read. + */ + [Symbol.asyncIterator](): AsyncIterableIterator; + /** + * Asynchronously close the directory's underlying resource handle. + * Subsequent reads will result in errors. + * + * A promise is returned that will be resolved after the resource has been + * closed. + * @since v12.12.0 + */ + close(): Promise; + close(cb: NoParamCallback): void; + /** + * Synchronously close the directory's underlying resource handle. + * Subsequent reads will result in errors. + * @since v12.12.0 + */ + closeSync(): void; + /** + * Asynchronously read the next directory entry via [`readdir(3)`](http://man7.org/linux/man-pages/man3/readdir.3.html) as an `fs.Dirent`. + * + * A promise is returned that will be resolved with an `fs.Dirent`, or `null`if there are no more directory entries to read. + * + * Directory entries returned by this function are in no particular order as + * provided by the operating system's underlying directory mechanisms. + * Entries added or removed while iterating over the directory might not be + * included in the iteration results. + * @since v12.12.0 + * @return containing {fs.Dirent|null} + */ + read(): Promise; + read(cb: (err: NodeJS.ErrnoException | null, dirEnt: Dirent | null) => void): void; + /** + * Synchronously read the next directory entry as an `fs.Dirent`. See the + * POSIX [`readdir(3)`](http://man7.org/linux/man-pages/man3/readdir.3.html) documentation for more detail. + * + * If there are no more directory entries to read, `null` will be returned. + * + * Directory entries returned by this function are in no particular order as + * provided by the operating system's underlying directory mechanisms. + * Entries added or removed while iterating over the directory might not be + * included in the iteration results. + * @since v12.12.0 + */ + readSync(): Dirent | null; + } + /** + * Class: fs.StatWatcher + * @since v14.3.0, v12.20.0 + * Extends `EventEmitter` + * A successful call to {@link watchFile} method will return a new fs.StatWatcher object. + */ + export interface StatWatcher extends EventEmitter { + /** + * When called, requests that the Node.js event loop _not_ exit so long as the `fs.StatWatcher` is active. Calling `watcher.ref()` multiple times will have + * no effect. + * + * By default, all `fs.StatWatcher` objects are "ref'ed", making it normally + * unnecessary to call `watcher.ref()` unless `watcher.unref()` had been + * called previously. + * @since v14.3.0, v12.20.0 + */ + ref(): this; + /** + * When called, the active `fs.StatWatcher` object will not require the Node.js + * event loop to remain active. If there is no other activity keeping the + * event loop running, the process may exit before the `fs.StatWatcher` object's + * callback is invoked. Calling `watcher.unref()` multiple times will have + * no effect. + * @since v14.3.0, v12.20.0 + */ + unref(): this; + } + export interface FSWatcher extends EventEmitter { + /** + * Stop watching for changes on the given `fs.FSWatcher`. Once stopped, the `fs.FSWatcher` object is no longer usable. + * @since v0.5.8 + */ + close(): void; + /** + * events.EventEmitter + * 1. change + * 2. error + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + addListener(event: "error", listener: (error: Error) => void): this; + addListener(event: "close", listener: () => void): this; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + on(event: "error", listener: (error: Error) => void): this; + on(event: "close", listener: () => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + once(event: "error", listener: (error: Error) => void): this; + once(event: "close", listener: () => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + prependListener(event: "error", listener: (error: Error) => void): this; + prependListener(event: "close", listener: () => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + prependOnceListener(event: "error", listener: (error: Error) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + } + /** + * Instances of `fs.ReadStream` are created and returned using the {@link createReadStream} function. + * @since v0.1.93 + */ + export class ReadStream extends stream.Readable { + close(callback?: (err?: NodeJS.ErrnoException | null) => void): void; + /** + * The number of bytes that have been read so far. + * @since v6.4.0 + */ + bytesRead: number; + /** + * The path to the file the stream is reading from as specified in the first + * argument to `fs.createReadStream()`. If `path` is passed as a string, then`readStream.path` will be a string. If `path` is passed as a `Buffer`, then`readStream.path` will be a + * `Buffer`. If `fd` is specified, then`readStream.path` will be `undefined`. + * @since v0.1.93 + */ + path: string | Buffer; + /** + * This property is `true` if the underlying file has not been opened yet, + * i.e. before the `'ready'` event is emitted. + * @since v11.2.0, v10.16.0 + */ + pending: boolean; + /** + * events.EventEmitter + * 1. open + * 2. close + * 3. ready + */ + addListener(event: "close", listener: () => void): this; + addListener(event: "data", listener: (chunk: Buffer | string) => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "open", listener: (fd: number) => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "readable", listener: () => void): this; + addListener(event: "ready", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + on(event: "close", listener: () => void): this; + on(event: "data", listener: (chunk: Buffer | string) => void): this; + on(event: "end", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "open", listener: (fd: number) => void): this; + on(event: "pause", listener: () => void): this; + on(event: "readable", listener: () => void): this; + on(event: "ready", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "data", listener: (chunk: Buffer | string) => void): this; + once(event: "end", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "open", listener: (fd: number) => void): this; + once(event: "pause", listener: () => void): this; + once(event: "readable", listener: () => void): this; + once(event: "ready", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "open", listener: (fd: number) => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "readable", listener: () => void): this; + prependListener(event: "ready", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "open", listener: (fd: number) => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "readable", listener: () => void): this; + prependOnceListener(event: "ready", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + /** + * * Extends `stream.Writable` + * + * Instances of `fs.WriteStream` are created and returned using the {@link createWriteStream} function. + * @since v0.1.93 + */ + export class WriteStream extends stream.Writable { + /** + * Closes `writeStream`. Optionally accepts a + * callback that will be executed once the `writeStream`is closed. + * @since v0.9.4 + */ + close(callback?: (err?: NodeJS.ErrnoException | null) => void): void; + /** + * The number of bytes written so far. Does not include data that is still queued + * for writing. + * @since v0.4.7 + */ + bytesWritten: number; + /** + * The path to the file the stream is writing to as specified in the first + * argument to {@link createWriteStream}. If `path` is passed as a string, then`writeStream.path` will be a string. If `path` is passed as a `Buffer`, then`writeStream.path` will be a + * `Buffer`. + * @since v0.1.93 + */ + path: string | Buffer; + /** + * This property is `true` if the underlying file has not been opened yet, + * i.e. before the `'ready'` event is emitted. + * @since v11.2.0 + */ + pending: boolean; + /** + * events.EventEmitter + * 1. open + * 2. close + * 3. ready + */ + addListener(event: "close", listener: () => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "open", listener: (fd: number) => void): this; + addListener(event: "pipe", listener: (src: stream.Readable) => void): this; + addListener(event: "ready", listener: () => void): this; + addListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + on(event: "close", listener: () => void): this; + on(event: "drain", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "open", listener: (fd: number) => void): this; + on(event: "pipe", listener: (src: stream.Readable) => void): this; + on(event: "ready", listener: () => void): this; + on(event: "unpipe", listener: (src: stream.Readable) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "drain", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "open", listener: (fd: number) => void): this; + once(event: "pipe", listener: (src: stream.Readable) => void): this; + once(event: "ready", listener: () => void): this; + once(event: "unpipe", listener: (src: stream.Readable) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "open", listener: (fd: number) => void): this; + prependListener(event: "pipe", listener: (src: stream.Readable) => void): this; + prependListener(event: "ready", listener: () => void): this; + prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "open", listener: (fd: number) => void): this; + prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this; + prependOnceListener(event: "ready", listener: () => void): this; + prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + /** + * Asynchronously rename file at `oldPath` to the pathname provided + * as `newPath`. In the case that `newPath` already exists, it will + * be overwritten. If there is a directory at `newPath`, an error will + * be raised instead. No arguments other than a possible exception are + * given to the completion callback. + * + * See also: [`rename(2)`](http://man7.org/linux/man-pages/man2/rename.2.html). + * + * ```js + * import { rename } from 'node:fs'; + * + * rename('oldFile.txt', 'newFile.txt', (err) => { + * if (err) throw err; + * console.log('Rename complete!'); + * }); + * ``` + * @since v0.0.2 + */ + export function rename(oldPath: PathLike, newPath: PathLike, callback: NoParamCallback): void; + export namespace rename { + /** + * Asynchronous rename(2) - Change the name or location of a file or directory. + * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol. + * URL support is _experimental_. + * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. + * URL support is _experimental_. + */ + function __promisify__(oldPath: PathLike, newPath: PathLike): Promise; + } + /** + * Renames the file from `oldPath` to `newPath`. Returns `undefined`. + * + * See the POSIX [`rename(2)`](http://man7.org/linux/man-pages/man2/rename.2.html) documentation for more details. + * @since v0.1.21 + */ + export function renameSync(oldPath: PathLike, newPath: PathLike): void; + /** + * Truncates the file. No arguments other than a possible exception are + * given to the completion callback. A file descriptor can also be passed as the + * first argument. In this case, `fs.ftruncate()` is called. + * + * ```js + * import { truncate } from 'node:fs'; + * // Assuming that 'path/file.txt' is a regular file. + * truncate('path/file.txt', (err) => { + * if (err) throw err; + * console.log('path/file.txt was truncated'); + * }); + * ``` + * + * Passing a file descriptor is deprecated and may result in an error being thrown + * in the future. + * + * See the POSIX [`truncate(2)`](http://man7.org/linux/man-pages/man2/truncate.2.html) documentation for more details. + * @since v0.8.6 + * @param [len=0] + */ + export function truncate(path: PathLike, len: number | undefined | null, callback: NoParamCallback): void; + /** + * Asynchronous truncate(2) - Truncate a file to a specified length. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export function truncate(path: PathLike, callback: NoParamCallback): void; + export namespace truncate { + /** + * Asynchronous truncate(2) - Truncate a file to a specified length. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param len If not specified, defaults to `0`. + */ + function __promisify__(path: PathLike, len?: number | null): Promise; + } + /** + * Truncates the file. Returns `undefined`. A file descriptor can also be + * passed as the first argument. In this case, `fs.ftruncateSync()` is called. + * + * Passing a file descriptor is deprecated and may result in an error being thrown + * in the future. + * @since v0.8.6 + * @param [len=0] + */ + export function truncateSync(path: PathLike, len?: number | null): void; + /** + * Truncates the file descriptor. No arguments other than a possible exception are + * given to the completion callback. + * + * See the POSIX [`ftruncate(2)`](http://man7.org/linux/man-pages/man2/ftruncate.2.html) documentation for more detail. + * + * If the file referred to by the file descriptor was larger than `len` bytes, only + * the first `len` bytes will be retained in the file. + * + * For example, the following program retains only the first four bytes of the + * file: + * + * ```js + * import { open, close, ftruncate } from 'node:fs'; + * + * function closeFd(fd) { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * + * open('temp.txt', 'r+', (err, fd) => { + * if (err) throw err; + * + * try { + * ftruncate(fd, 4, (err) => { + * closeFd(fd); + * if (err) throw err; + * }); + * } catch (err) { + * closeFd(fd); + * if (err) throw err; + * } + * }); + * ``` + * + * If the file previously was shorter than `len` bytes, it is extended, and the + * extended part is filled with null bytes (`'\0'`): + * + * If `len` is negative then `0` will be used. + * @since v0.8.6 + * @param [len=0] + */ + export function ftruncate(fd: number, len: number | undefined | null, callback: NoParamCallback): void; + /** + * Asynchronous ftruncate(2) - Truncate a file to a specified length. + * @param fd A file descriptor. + */ + export function ftruncate(fd: number, callback: NoParamCallback): void; + export namespace ftruncate { + /** + * Asynchronous ftruncate(2) - Truncate a file to a specified length. + * @param fd A file descriptor. + * @param len If not specified, defaults to `0`. + */ + function __promisify__(fd: number, len?: number | null): Promise; + } + /** + * Truncates the file descriptor. Returns `undefined`. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link ftruncate}. + * @since v0.8.6 + * @param [len=0] + */ + export function ftruncateSync(fd: number, len?: number | null): void; + /** + * Asynchronously changes owner and group of a file. No arguments other than a + * possible exception are given to the completion callback. + * + * See the POSIX [`chown(2)`](http://man7.org/linux/man-pages/man2/chown.2.html) documentation for more detail. + * @since v0.1.97 + */ + export function chown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void; + export namespace chown { + /** + * Asynchronous chown(2) - Change ownership of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + function __promisify__(path: PathLike, uid: number, gid: number): Promise; + } + /** + * Synchronously changes owner and group of a file. Returns `undefined`. + * This is the synchronous version of {@link chown}. + * + * See the POSIX [`chown(2)`](http://man7.org/linux/man-pages/man2/chown.2.html) documentation for more detail. + * @since v0.1.97 + */ + export function chownSync(path: PathLike, uid: number, gid: number): void; + /** + * Sets the owner of the file. No arguments other than a possible exception are + * given to the completion callback. + * + * See the POSIX [`fchown(2)`](http://man7.org/linux/man-pages/man2/fchown.2.html) documentation for more detail. + * @since v0.4.7 + */ + export function fchown(fd: number, uid: number, gid: number, callback: NoParamCallback): void; + export namespace fchown { + /** + * Asynchronous fchown(2) - Change ownership of a file. + * @param fd A file descriptor. + */ + function __promisify__(fd: number, uid: number, gid: number): Promise; + } + /** + * Sets the owner of the file. Returns `undefined`. + * + * See the POSIX [`fchown(2)`](http://man7.org/linux/man-pages/man2/fchown.2.html) documentation for more detail. + * @since v0.4.7 + * @param uid The file's new owner's user id. + * @param gid The file's new group's group id. + */ + export function fchownSync(fd: number, uid: number, gid: number): void; + /** + * Set the owner of the symbolic link. No arguments other than a possible + * exception are given to the completion callback. + * + * See the POSIX [`lchown(2)`](http://man7.org/linux/man-pages/man2/lchown.2.html) documentation for more detail. + */ + export function lchown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void; + export namespace lchown { + /** + * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + function __promisify__(path: PathLike, uid: number, gid: number): Promise; + } + /** + * Set the owner for the path. Returns `undefined`. + * + * See the POSIX [`lchown(2)`](http://man7.org/linux/man-pages/man2/lchown.2.html) documentation for more details. + * @param uid The file's new owner's user id. + * @param gid The file's new group's group id. + */ + export function lchownSync(path: PathLike, uid: number, gid: number): void; + /** + * Changes the access and modification times of a file in the same way as {@link utimes}, with the difference that if the path refers to a symbolic + * link, then the link is not dereferenced: instead, the timestamps of the + * symbolic link itself are changed. + * + * No arguments other than a possible exception are given to the completion + * callback. + * @since v14.5.0, v12.19.0 + */ + export function lutimes(path: PathLike, atime: TimeLike, mtime: TimeLike, callback: NoParamCallback): void; + export namespace lutimes { + /** + * Changes the access and modification times of a file in the same way as `fsPromises.utimes()`, + * with the difference that if the path refers to a symbolic link, then the link is not + * dereferenced: instead, the timestamps of the symbolic link itself are changed. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param atime The last access time. If a string is provided, it will be coerced to number. + * @param mtime The last modified time. If a string is provided, it will be coerced to number. + */ + function __promisify__(path: PathLike, atime: TimeLike, mtime: TimeLike): Promise; + } + /** + * Change the file system timestamps of the symbolic link referenced by `path`. + * Returns `undefined`, or throws an exception when parameters are incorrect or + * the operation fails. This is the synchronous version of {@link lutimes}. + * @since v14.5.0, v12.19.0 + */ + export function lutimesSync(path: PathLike, atime: TimeLike, mtime: TimeLike): void; + /** + * Asynchronously changes the permissions of a file. No arguments other than a + * possible exception are given to the completion callback. + * + * See the POSIX [`chmod(2)`](http://man7.org/linux/man-pages/man2/chmod.2.html) documentation for more detail. + * + * ```js + * import { chmod } from 'node:fs'; + * + * chmod('my_file.txt', 0o775, (err) => { + * if (err) throw err; + * console.log('The permissions for file "my_file.txt" have been changed!'); + * }); + * ``` + * @since v0.1.30 + */ + export function chmod(path: PathLike, mode: Mode, callback: NoParamCallback): void; + export namespace chmod { + /** + * Asynchronous chmod(2) - Change permissions of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param mode A file mode. If a string is passed, it is parsed as an octal integer. + */ + function __promisify__(path: PathLike, mode: Mode): Promise; + } + /** + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link chmod}. + * + * See the POSIX [`chmod(2)`](http://man7.org/linux/man-pages/man2/chmod.2.html) documentation for more detail. + * @since v0.6.7 + */ + export function chmodSync(path: PathLike, mode: Mode): void; + /** + * Sets the permissions on the file. No arguments other than a possible exception + * are given to the completion callback. + * + * See the POSIX [`fchmod(2)`](http://man7.org/linux/man-pages/man2/fchmod.2.html) documentation for more detail. + * @since v0.4.7 + */ + export function fchmod(fd: number, mode: Mode, callback: NoParamCallback): void; + export namespace fchmod { + /** + * Asynchronous fchmod(2) - Change permissions of a file. + * @param fd A file descriptor. + * @param mode A file mode. If a string is passed, it is parsed as an octal integer. + */ + function __promisify__(fd: number, mode: Mode): Promise; + } + /** + * Sets the permissions on the file. Returns `undefined`. + * + * See the POSIX [`fchmod(2)`](http://man7.org/linux/man-pages/man2/fchmod.2.html) documentation for more detail. + * @since v0.4.7 + */ + export function fchmodSync(fd: number, mode: Mode): void; + /** + * Changes the permissions on a symbolic link. No arguments other than a possible + * exception are given to the completion callback. + * + * This method is only implemented on macOS. + * + * See the POSIX [`lchmod(2)`](https://www.freebsd.org/cgi/man.cgi?query=lchmod&sektion=2) documentation for more detail. + * @deprecated Since v0.4.7 + */ + export function lchmod(path: PathLike, mode: Mode, callback: NoParamCallback): void; + /** @deprecated */ + export namespace lchmod { + /** + * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param mode A file mode. If a string is passed, it is parsed as an octal integer. + */ + function __promisify__(path: PathLike, mode: Mode): Promise; + } + /** + * Changes the permissions on a symbolic link. Returns `undefined`. + * + * This method is only implemented on macOS. + * + * See the POSIX [`lchmod(2)`](https://www.freebsd.org/cgi/man.cgi?query=lchmod&sektion=2) documentation for more detail. + * @deprecated Since v0.4.7 + */ + export function lchmodSync(path: PathLike, mode: Mode): void; + /** + * Asynchronous [`stat(2)`](http://man7.org/linux/man-pages/man2/stat.2.html). The callback gets two arguments `(err, stats)` where`stats` is an `fs.Stats` object. + * + * In case of an error, the `err.code` will be one of `Common System Errors`. + * + * {@link stat} follows symbolic links. Use {@link lstat} to look at the + * links themselves. + * + * Using `fs.stat()` to check for the existence of a file before calling`fs.open()`, `fs.readFile()`, or `fs.writeFile()` is not recommended. + * Instead, user code should open/read/write the file directly and handle the + * error raised if the file is not available. + * + * To check if a file exists without manipulating it afterwards, {@link access} is recommended. + * + * For example, given the following directory structure: + * + * ```text + * - txtDir + * -- file.txt + * - app.js + * ``` + * + * The next program will check for the stats of the given paths: + * + * ```js + * import { stat } from 'node:fs'; + * + * const pathsToCheck = ['./txtDir', './txtDir/file.txt']; + * + * for (let i = 0; i < pathsToCheck.length; i++) { + * stat(pathsToCheck[i], (err, stats) => { + * console.log(stats.isDirectory()); + * console.log(stats); + * }); + * } + * ``` + * + * The resulting output will resemble: + * + * ```console + * true + * Stats { + * dev: 16777220, + * mode: 16877, + * nlink: 3, + * uid: 501, + * gid: 20, + * rdev: 0, + * blksize: 4096, + * ino: 14214262, + * size: 96, + * blocks: 0, + * atimeMs: 1561174653071.963, + * mtimeMs: 1561174614583.3518, + * ctimeMs: 1561174626623.5366, + * birthtimeMs: 1561174126937.2893, + * atime: 2019-06-22T03:37:33.072Z, + * mtime: 2019-06-22T03:36:54.583Z, + * ctime: 2019-06-22T03:37:06.624Z, + * birthtime: 2019-06-22T03:28:46.937Z + * } + * false + * Stats { + * dev: 16777220, + * mode: 33188, + * nlink: 1, + * uid: 501, + * gid: 20, + * rdev: 0, + * blksize: 4096, + * ino: 14214074, + * size: 8, + * blocks: 8, + * atimeMs: 1561174616618.8555, + * mtimeMs: 1561174614584, + * ctimeMs: 1561174614583.8145, + * birthtimeMs: 1561174007710.7478, + * atime: 2019-06-22T03:36:56.619Z, + * mtime: 2019-06-22T03:36:54.584Z, + * ctime: 2019-06-22T03:36:54.584Z, + * birthtime: 2019-06-22T03:26:47.711Z + * } + * ``` + * @since v0.0.2 + */ + export function stat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void; + export function stat( + path: PathLike, + options: + | (StatOptions & { + bigint?: false | undefined; + }) + | undefined, + callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void, + ): void; + export function stat( + path: PathLike, + options: StatOptions & { + bigint: true; + }, + callback: (err: NodeJS.ErrnoException | null, stats: BigIntStats) => void, + ): void; + export function stat( + path: PathLike, + options: StatOptions | undefined, + callback: (err: NodeJS.ErrnoException | null, stats: Stats | BigIntStats) => void, + ): void; + export namespace stat { + /** + * Asynchronous stat(2) - Get file status. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + function __promisify__( + path: PathLike, + options?: StatOptions & { + bigint?: false | undefined; + }, + ): Promise; + function __promisify__( + path: PathLike, + options: StatOptions & { + bigint: true; + }, + ): Promise; + function __promisify__(path: PathLike, options?: StatOptions): Promise; + } + export interface StatSyncFn extends Function { + (path: PathLike, options?: undefined): Stats; + ( + path: PathLike, + options?: StatSyncOptions & { + bigint?: false | undefined; + throwIfNoEntry: false; + }, + ): Stats | undefined; + ( + path: PathLike, + options: StatSyncOptions & { + bigint: true; + throwIfNoEntry: false; + }, + ): BigIntStats | undefined; + ( + path: PathLike, + options?: StatSyncOptions & { + bigint?: false | undefined; + }, + ): Stats; + ( + path: PathLike, + options: StatSyncOptions & { + bigint: true; + }, + ): BigIntStats; + ( + path: PathLike, + options: StatSyncOptions & { + bigint: boolean; + throwIfNoEntry?: false | undefined; + }, + ): Stats | BigIntStats; + (path: PathLike, options?: StatSyncOptions): Stats | BigIntStats | undefined; + } + /** + * Synchronous stat(2) - Get file status. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export const statSync: StatSyncFn; + /** + * Invokes the callback with the `fs.Stats` for the file descriptor. + * + * See the POSIX [`fstat(2)`](http://man7.org/linux/man-pages/man2/fstat.2.html) documentation for more detail. + * @since v0.1.95 + */ + export function fstat(fd: number, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void; + export function fstat( + fd: number, + options: + | (StatOptions & { + bigint?: false | undefined; + }) + | undefined, + callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void, + ): void; + export function fstat( + fd: number, + options: StatOptions & { + bigint: true; + }, + callback: (err: NodeJS.ErrnoException | null, stats: BigIntStats) => void, + ): void; + export function fstat( + fd: number, + options: StatOptions | undefined, + callback: (err: NodeJS.ErrnoException | null, stats: Stats | BigIntStats) => void, + ): void; + export namespace fstat { + /** + * Asynchronous fstat(2) - Get file status. + * @param fd A file descriptor. + */ + function __promisify__( + fd: number, + options?: StatOptions & { + bigint?: false | undefined; + }, + ): Promise; + function __promisify__( + fd: number, + options: StatOptions & { + bigint: true; + }, + ): Promise; + function __promisify__(fd: number, options?: StatOptions): Promise; + } + /** + * Retrieves the `fs.Stats` for the file descriptor. + * + * See the POSIX [`fstat(2)`](http://man7.org/linux/man-pages/man2/fstat.2.html) documentation for more detail. + * @since v0.1.95 + */ + export function fstatSync( + fd: number, + options?: StatOptions & { + bigint?: false | undefined; + }, + ): Stats; + export function fstatSync( + fd: number, + options: StatOptions & { + bigint: true; + }, + ): BigIntStats; + export function fstatSync(fd: number, options?: StatOptions): Stats | BigIntStats; + /** + * Retrieves the `fs.Stats` for the symbolic link referred to by the path. + * The callback gets two arguments `(err, stats)` where `stats` is a `fs.Stats` object. `lstat()` is identical to `stat()`, except that if `path` is a symbolic + * link, then the link itself is stat-ed, not the file that it refers to. + * + * See the POSIX [`lstat(2)`](http://man7.org/linux/man-pages/man2/lstat.2.html) documentation for more details. + * @since v0.1.30 + */ + export function lstat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void; + export function lstat( + path: PathLike, + options: + | (StatOptions & { + bigint?: false | undefined; + }) + | undefined, + callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void, + ): void; + export function lstat( + path: PathLike, + options: StatOptions & { + bigint: true; + }, + callback: (err: NodeJS.ErrnoException | null, stats: BigIntStats) => void, + ): void; + export function lstat( + path: PathLike, + options: StatOptions | undefined, + callback: (err: NodeJS.ErrnoException | null, stats: Stats | BigIntStats) => void, + ): void; + export namespace lstat { + /** + * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + function __promisify__( + path: PathLike, + options?: StatOptions & { + bigint?: false | undefined; + }, + ): Promise; + function __promisify__( + path: PathLike, + options: StatOptions & { + bigint: true; + }, + ): Promise; + function __promisify__(path: PathLike, options?: StatOptions): Promise; + } + /** + * Asynchronous [`statfs(2)`](http://man7.org/linux/man-pages/man2/statfs.2.html). Returns information about the mounted file system which + * contains `path`. The callback gets two arguments `(err, stats)` where `stats`is an `fs.StatFs` object. + * + * In case of an error, the `err.code` will be one of `Common System Errors`. + * @since v19.6.0, v18.15.0 + * @param path A path to an existing file or directory on the file system to be queried. + */ + export function statfs(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: StatsFs) => void): void; + export function statfs( + path: PathLike, + options: + | (StatFsOptions & { + bigint?: false | undefined; + }) + | undefined, + callback: (err: NodeJS.ErrnoException | null, stats: StatsFs) => void, + ): void; + export function statfs( + path: PathLike, + options: StatFsOptions & { + bigint: true; + }, + callback: (err: NodeJS.ErrnoException | null, stats: BigIntStatsFs) => void, + ): void; + export function statfs( + path: PathLike, + options: StatFsOptions | undefined, + callback: (err: NodeJS.ErrnoException | null, stats: StatsFs | BigIntStatsFs) => void, + ): void; + export namespace statfs { + /** + * Asynchronous statfs(2) - Returns information about the mounted file system which contains path. The callback gets two arguments (err, stats) where stats is an object. + * @param path A path to an existing file or directory on the file system to be queried. + */ + function __promisify__( + path: PathLike, + options?: StatFsOptions & { + bigint?: false | undefined; + }, + ): Promise; + function __promisify__( + path: PathLike, + options: StatFsOptions & { + bigint: true; + }, + ): Promise; + function __promisify__(path: PathLike, options?: StatFsOptions): Promise; + } + /** + * Synchronous [`statfs(2)`](http://man7.org/linux/man-pages/man2/statfs.2.html). Returns information about the mounted file system which + * contains `path`. + * + * In case of an error, the `err.code` will be one of `Common System Errors`. + * @since v19.6.0, v18.15.0 + * @param path A path to an existing file or directory on the file system to be queried. + */ + export function statfsSync( + path: PathLike, + options?: StatFsOptions & { + bigint?: false | undefined; + }, + ): StatsFs; + export function statfsSync( + path: PathLike, + options: StatFsOptions & { + bigint: true; + }, + ): BigIntStatsFs; + export function statfsSync(path: PathLike, options?: StatFsOptions): StatsFs | BigIntStatsFs; + /** + * Synchronous lstat(2) - Get file status. Does not dereference symbolic links. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export const lstatSync: StatSyncFn; + /** + * Creates a new link from the `existingPath` to the `newPath`. See the POSIX [`link(2)`](http://man7.org/linux/man-pages/man2/link.2.html) documentation for more detail. No arguments other than + * a possible + * exception are given to the completion callback. + * @since v0.1.31 + */ + export function link(existingPath: PathLike, newPath: PathLike, callback: NoParamCallback): void; + export namespace link { + /** + * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file. + * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + function __promisify__(existingPath: PathLike, newPath: PathLike): Promise; + } + /** + * Creates a new link from the `existingPath` to the `newPath`. See the POSIX [`link(2)`](http://man7.org/linux/man-pages/man2/link.2.html) documentation for more detail. Returns `undefined`. + * @since v0.1.31 + */ + export function linkSync(existingPath: PathLike, newPath: PathLike): void; + /** + * Creates the link called `path` pointing to `target`. No arguments other than a + * possible exception are given to the completion callback. + * + * See the POSIX [`symlink(2)`](http://man7.org/linux/man-pages/man2/symlink.2.html) documentation for more details. + * + * The `type` argument is only available on Windows and ignored on other platforms. + * It can be set to `'dir'`, `'file'`, or `'junction'`. If the `type` argument is + * not a string, Node.js will autodetect `target` type and use `'file'` or `'dir'`. + * If the `target` does not exist, `'file'` will be used. Windows junction points + * require the destination path to be absolute. When using `'junction'`, the`target` argument will automatically be normalized to absolute path. Junction + * points on NTFS volumes can only point to directories. + * + * Relative targets are relative to the link's parent directory. + * + * ```js + * import { symlink } from 'node:fs'; + * + * symlink('./mew', './mewtwo', callback); + * ``` + * + * The above example creates a symbolic link `mewtwo` which points to `mew` in the + * same directory: + * + * ```bash + * $ tree . + * . + * ├── mew + * └── mewtwo -> ./mew + * ``` + * @since v0.1.31 + * @param [type='null'] + */ + export function symlink( + target: PathLike, + path: PathLike, + type: symlink.Type | undefined | null, + callback: NoParamCallback, + ): void; + /** + * Asynchronous symlink(2) - Create a new symbolic link to an existing file. + * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. + * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. + */ + export function symlink(target: PathLike, path: PathLike, callback: NoParamCallback): void; + export namespace symlink { + /** + * Asynchronous symlink(2) - Create a new symbolic link to an existing file. + * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. + * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. + * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms). + * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path. + */ + function __promisify__(target: PathLike, path: PathLike, type?: string | null): Promise; + type Type = "dir" | "file" | "junction"; + } + /** + * Returns `undefined`. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link symlink}. + * @since v0.1.31 + * @param [type='null'] + */ + export function symlinkSync(target: PathLike, path: PathLike, type?: symlink.Type | null): void; + /** + * Reads the contents of the symbolic link referred to by `path`. The callback gets + * two arguments `(err, linkString)`. + * + * See the POSIX [`readlink(2)`](http://man7.org/linux/man-pages/man2/readlink.2.html) documentation for more details. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the link path passed to the callback. If the `encoding` is set to `'buffer'`, + * the link path returned will be passed as a `Buffer` object. + * @since v0.1.31 + */ + export function readlink( + path: PathLike, + options: EncodingOption, + callback: (err: NodeJS.ErrnoException | null, linkString: string) => void, + ): void; + /** + * Asynchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readlink( + path: PathLike, + options: BufferEncodingOption, + callback: (err: NodeJS.ErrnoException | null, linkString: Buffer) => void, + ): void; + /** + * Asynchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readlink( + path: PathLike, + options: EncodingOption, + callback: (err: NodeJS.ErrnoException | null, linkString: string | Buffer) => void, + ): void; + /** + * Asynchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export function readlink( + path: PathLike, + callback: (err: NodeJS.ErrnoException | null, linkString: string) => void, + ): void; + export namespace readlink { + /** + * Asynchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(path: PathLike, options?: EncodingOption): Promise; + /** + * Asynchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(path: PathLike, options: BufferEncodingOption): Promise; + /** + * Asynchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(path: PathLike, options?: EncodingOption): Promise; + } + /** + * Returns the symbolic link's string value. + * + * See the POSIX [`readlink(2)`](http://man7.org/linux/man-pages/man2/readlink.2.html) documentation for more details. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the link path returned. If the `encoding` is set to `'buffer'`, + * the link path returned will be passed as a `Buffer` object. + * @since v0.1.31 + */ + export function readlinkSync(path: PathLike, options?: EncodingOption): string; + /** + * Synchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readlinkSync(path: PathLike, options: BufferEncodingOption): Buffer; + /** + * Synchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readlinkSync(path: PathLike, options?: EncodingOption): string | Buffer; + /** + * Asynchronously computes the canonical pathname by resolving `.`, `..`, and + * symbolic links. + * + * A canonical pathname is not necessarily unique. Hard links and bind mounts can + * expose a file system entity through many pathnames. + * + * This function behaves like [`realpath(3)`](http://man7.org/linux/man-pages/man3/realpath.3.html), with some exceptions: + * + * 1. No case conversion is performed on case-insensitive file systems. + * 2. The maximum number of symbolic links is platform-independent and generally + * (much) higher than what the native [`realpath(3)`](http://man7.org/linux/man-pages/man3/realpath.3.html) implementation supports. + * + * The `callback` gets two arguments `(err, resolvedPath)`. May use `process.cwd`to resolve relative paths. + * + * Only paths that can be converted to UTF8 strings are supported. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the path passed to the callback. If the `encoding` is set to `'buffer'`, + * the path returned will be passed as a `Buffer` object. + * + * If `path` resolves to a socket or a pipe, the function will return a system + * dependent name for that object. + * @since v0.1.31 + */ + export function realpath( + path: PathLike, + options: EncodingOption, + callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void, + ): void; + /** + * Asynchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function realpath( + path: PathLike, + options: BufferEncodingOption, + callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void, + ): void; + /** + * Asynchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function realpath( + path: PathLike, + options: EncodingOption, + callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void, + ): void; + /** + * Asynchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export function realpath( + path: PathLike, + callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void, + ): void; + export namespace realpath { + /** + * Asynchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(path: PathLike, options?: EncodingOption): Promise; + /** + * Asynchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(path: PathLike, options: BufferEncodingOption): Promise; + /** + * Asynchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(path: PathLike, options?: EncodingOption): Promise; + /** + * Asynchronous [`realpath(3)`](http://man7.org/linux/man-pages/man3/realpath.3.html). + * + * The `callback` gets two arguments `(err, resolvedPath)`. + * + * Only paths that can be converted to UTF8 strings are supported. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the path passed to the callback. If the `encoding` is set to `'buffer'`, + * the path returned will be passed as a `Buffer` object. + * + * On Linux, when Node.js is linked against musl libc, the procfs file system must + * be mounted on `/proc` in order for this function to work. Glibc does not have + * this restriction. + * @since v9.2.0 + */ + function native( + path: PathLike, + options: EncodingOption, + callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void, + ): void; + function native( + path: PathLike, + options: BufferEncodingOption, + callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void, + ): void; + function native( + path: PathLike, + options: EncodingOption, + callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void, + ): void; + function native( + path: PathLike, + callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void, + ): void; + } + /** + * Returns the resolved pathname. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link realpath}. + * @since v0.1.31 + */ + export function realpathSync(path: PathLike, options?: EncodingOption): string; + /** + * Synchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function realpathSync(path: PathLike, options: BufferEncodingOption): Buffer; + /** + * Synchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function realpathSync(path: PathLike, options?: EncodingOption): string | Buffer; + export namespace realpathSync { + function native(path: PathLike, options?: EncodingOption): string; + function native(path: PathLike, options: BufferEncodingOption): Buffer; + function native(path: PathLike, options?: EncodingOption): string | Buffer; + } + /** + * Asynchronously removes a file or symbolic link. No arguments other than a + * possible exception are given to the completion callback. + * + * ```js + * import { unlink } from 'node:fs'; + * // Assuming that 'path/file.txt' is a regular file. + * unlink('path/file.txt', (err) => { + * if (err) throw err; + * console.log('path/file.txt was deleted'); + * }); + * ``` + * + * `fs.unlink()` will not work on a directory, empty or otherwise. To remove a + * directory, use {@link rmdir}. + * + * See the POSIX [`unlink(2)`](http://man7.org/linux/man-pages/man2/unlink.2.html) documentation for more details. + * @since v0.0.2 + */ + export function unlink(path: PathLike, callback: NoParamCallback): void; + export namespace unlink { + /** + * Asynchronous unlink(2) - delete a name and possibly the file it refers to. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + function __promisify__(path: PathLike): Promise; + } + /** + * Synchronous [`unlink(2)`](http://man7.org/linux/man-pages/man2/unlink.2.html). Returns `undefined`. + * @since v0.1.21 + */ + export function unlinkSync(path: PathLike): void; + export interface RmDirOptions { + /** + * If an `EBUSY`, `EMFILE`, `ENFILE`, `ENOTEMPTY`, or + * `EPERM` error is encountered, Node.js will retry the operation with a linear + * backoff wait of `retryDelay` ms longer on each try. This option represents the + * number of retries. This option is ignored if the `recursive` option is not + * `true`. + * @default 0 + */ + maxRetries?: number | undefined; + /** + * @deprecated since v14.14.0 In future versions of Node.js and will trigger a warning + * `fs.rmdir(path, { recursive: true })` will throw if `path` does not exist or is a file. + * Use `fs.rm(path, { recursive: true, force: true })` instead. + * + * If `true`, perform a recursive directory removal. In + * recursive mode, operations are retried on failure. + * @default false + */ + recursive?: boolean | undefined; + /** + * The amount of time in milliseconds to wait between retries. + * This option is ignored if the `recursive` option is not `true`. + * @default 100 + */ + retryDelay?: number | undefined; + } + /** + * Asynchronous [`rmdir(2)`](http://man7.org/linux/man-pages/man2/rmdir.2.html). No arguments other than a possible exception are given + * to the completion callback. + * + * Using `fs.rmdir()` on a file (not a directory) results in an `ENOENT` error on + * Windows and an `ENOTDIR` error on POSIX. + * + * To get a behavior similar to the `rm -rf` Unix command, use {@link rm} with options `{ recursive: true, force: true }`. + * @since v0.0.2 + */ + export function rmdir(path: PathLike, callback: NoParamCallback): void; + export function rmdir(path: PathLike, options: RmDirOptions, callback: NoParamCallback): void; + export namespace rmdir { + /** + * Asynchronous rmdir(2) - delete a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + function __promisify__(path: PathLike, options?: RmDirOptions): Promise; + } + /** + * Synchronous [`rmdir(2)`](http://man7.org/linux/man-pages/man2/rmdir.2.html). Returns `undefined`. + * + * Using `fs.rmdirSync()` on a file (not a directory) results in an `ENOENT` error + * on Windows and an `ENOTDIR` error on POSIX. + * + * To get a behavior similar to the `rm -rf` Unix command, use {@link rmSync} with options `{ recursive: true, force: true }`. + * @since v0.1.21 + */ + export function rmdirSync(path: PathLike, options?: RmDirOptions): void; + export interface RmOptions { + /** + * When `true`, exceptions will be ignored if `path` does not exist. + * @default false + */ + force?: boolean | undefined; + /** + * If an `EBUSY`, `EMFILE`, `ENFILE`, `ENOTEMPTY`, or + * `EPERM` error is encountered, Node.js will retry the operation with a linear + * backoff wait of `retryDelay` ms longer on each try. This option represents the + * number of retries. This option is ignored if the `recursive` option is not + * `true`. + * @default 0 + */ + maxRetries?: number | undefined; + /** + * If `true`, perform a recursive directory removal. In + * recursive mode, operations are retried on failure. + * @default false + */ + recursive?: boolean | undefined; + /** + * The amount of time in milliseconds to wait between retries. + * This option is ignored if the `recursive` option is not `true`. + * @default 100 + */ + retryDelay?: number | undefined; + } + /** + * Asynchronously removes files and directories (modeled on the standard POSIX `rm`utility). No arguments other than a possible exception are given to the + * completion callback. + * @since v14.14.0 + */ + export function rm(path: PathLike, callback: NoParamCallback): void; + export function rm(path: PathLike, options: RmOptions, callback: NoParamCallback): void; + export namespace rm { + /** + * Asynchronously removes files and directories (modeled on the standard POSIX `rm` utility). + */ + function __promisify__(path: PathLike, options?: RmOptions): Promise; + } + /** + * Synchronously removes files and directories (modeled on the standard POSIX `rm`utility). Returns `undefined`. + * @since v14.14.0 + */ + export function rmSync(path: PathLike, options?: RmOptions): void; + export interface MakeDirectoryOptions { + /** + * Indicates whether parent folders should be created. + * If a folder was created, the path to the first created folder will be returned. + * @default false + */ + recursive?: boolean | undefined; + /** + * A file mode. If a string is passed, it is parsed as an octal integer. If not specified + * @default 0o777 + */ + mode?: Mode | undefined; + } + /** + * Asynchronously creates a directory. + * + * The callback is given a possible exception and, if `recursive` is `true`, the + * first directory path created, `(err[, path])`.`path` can still be `undefined` when `recursive` is `true`, if no directory was + * created (for instance, if it was previously created). + * + * The optional `options` argument can be an integer specifying `mode` (permission + * and sticky bits), or an object with a `mode` property and a `recursive`property indicating whether parent directories should be created. Calling`fs.mkdir()` when `path` is a directory that + * exists results in an error only + * when `recursive` is false. If `recursive` is false and the directory exists, + * an `EEXIST` error occurs. + * + * ```js + * import { mkdir } from 'node:fs'; + * + * // Create ./tmp/a/apple, regardless of whether ./tmp and ./tmp/a exist. + * mkdir('./tmp/a/apple', { recursive: true }, (err) => { + * if (err) throw err; + * }); + * ``` + * + * On Windows, using `fs.mkdir()` on the root directory even with recursion will + * result in an error: + * + * ```js + * import { mkdir } from 'node:fs'; + * + * mkdir('/', { recursive: true }, (err) => { + * // => [Error: EPERM: operation not permitted, mkdir 'C:\'] + * }); + * ``` + * + * See the POSIX [`mkdir(2)`](http://man7.org/linux/man-pages/man2/mkdir.2.html) documentation for more details. + * @since v0.1.8 + */ + export function mkdir( + path: PathLike, + options: MakeDirectoryOptions & { + recursive: true; + }, + callback: (err: NodeJS.ErrnoException | null, path?: string) => void, + ): void; + /** + * Asynchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + export function mkdir( + path: PathLike, + options: + | Mode + | (MakeDirectoryOptions & { + recursive?: false | undefined; + }) + | null + | undefined, + callback: NoParamCallback, + ): void; + /** + * Asynchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + export function mkdir( + path: PathLike, + options: Mode | MakeDirectoryOptions | null | undefined, + callback: (err: NodeJS.ErrnoException | null, path?: string) => void, + ): void; + /** + * Asynchronous mkdir(2) - create a directory with a mode of `0o777`. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export function mkdir(path: PathLike, callback: NoParamCallback): void; + export namespace mkdir { + /** + * Asynchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + function __promisify__( + path: PathLike, + options: MakeDirectoryOptions & { + recursive: true; + }, + ): Promise; + /** + * Asynchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + function __promisify__( + path: PathLike, + options?: + | Mode + | (MakeDirectoryOptions & { + recursive?: false | undefined; + }) + | null, + ): Promise; + /** + * Asynchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + function __promisify__( + path: PathLike, + options?: Mode | MakeDirectoryOptions | null, + ): Promise; + } + /** + * Synchronously creates a directory. Returns `undefined`, or if `recursive` is`true`, the first directory path created. + * This is the synchronous version of {@link mkdir}. + * + * See the POSIX [`mkdir(2)`](http://man7.org/linux/man-pages/man2/mkdir.2.html) documentation for more details. + * @since v0.1.21 + */ + export function mkdirSync( + path: PathLike, + options: MakeDirectoryOptions & { + recursive: true; + }, + ): string | undefined; + /** + * Synchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + export function mkdirSync( + path: PathLike, + options?: + | Mode + | (MakeDirectoryOptions & { + recursive?: false | undefined; + }) + | null, + ): void; + /** + * Synchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + export function mkdirSync(path: PathLike, options?: Mode | MakeDirectoryOptions | null): string | undefined; + /** + * Creates a unique temporary directory. + * + * Generates six random characters to be appended behind a required`prefix` to create a unique temporary directory. Due to platform + * inconsistencies, avoid trailing `X` characters in `prefix`. Some platforms, + * notably the BSDs, can return more than six random characters, and replace + * trailing `X` characters in `prefix` with random characters. + * + * The created directory path is passed as a string to the callback's second + * parameter. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use. + * + * ```js + * import { mkdtemp } from 'node:fs'; + * import { join } from 'node:path'; + * import { tmpdir } from 'node:os'; + * + * mkdtemp(join(tmpdir(), 'foo-'), (err, directory) => { + * if (err) throw err; + * console.log(directory); + * // Prints: /tmp/foo-itXde2 or C:\Users\...\AppData\Local\Temp\foo-itXde2 + * }); + * ``` + * + * The `fs.mkdtemp()` method will append the six randomly selected characters + * directly to the `prefix` string. For instance, given a directory `/tmp`, if the + * intention is to create a temporary directory _within_`/tmp`, the `prefix`must end with a trailing platform-specific path separator + * (`require('node:path').sep`). + * + * ```js + * import { tmpdir } from 'node:os'; + * import { mkdtemp } from 'node:fs'; + * + * // The parent directory for the new temporary directory + * const tmpDir = tmpdir(); + * + * // This method is *INCORRECT*: + * mkdtemp(tmpDir, (err, directory) => { + * if (err) throw err; + * console.log(directory); + * // Will print something similar to `/tmpabc123`. + * // A new temporary directory is created at the file system root + * // rather than *within* the /tmp directory. + * }); + * + * // This method is *CORRECT*: + * import { sep } from 'node:path'; + * mkdtemp(`${tmpDir}${sep}`, (err, directory) => { + * if (err) throw err; + * console.log(directory); + * // Will print something similar to `/tmp/abc123`. + * // A new temporary directory is created within + * // the /tmp directory. + * }); + * ``` + * @since v5.10.0 + */ + export function mkdtemp( + prefix: string, + options: EncodingOption, + callback: (err: NodeJS.ErrnoException | null, folder: string) => void, + ): void; + /** + * Asynchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function mkdtemp( + prefix: string, + options: + | "buffer" + | { + encoding: "buffer"; + }, + callback: (err: NodeJS.ErrnoException | null, folder: Buffer) => void, + ): void; + /** + * Asynchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function mkdtemp( + prefix: string, + options: EncodingOption, + callback: (err: NodeJS.ErrnoException | null, folder: string | Buffer) => void, + ): void; + /** + * Asynchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + */ + export function mkdtemp( + prefix: string, + callback: (err: NodeJS.ErrnoException | null, folder: string) => void, + ): void; + export namespace mkdtemp { + /** + * Asynchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(prefix: string, options?: EncodingOption): Promise; + /** + * Asynchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(prefix: string, options: BufferEncodingOption): Promise; + /** + * Asynchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(prefix: string, options?: EncodingOption): Promise; + } + /** + * Returns the created directory path. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link mkdtemp}. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use. + * @since v5.10.0 + */ + export function mkdtempSync(prefix: string, options?: EncodingOption): string; + /** + * Synchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function mkdtempSync(prefix: string, options: BufferEncodingOption): Buffer; + /** + * Synchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function mkdtempSync(prefix: string, options?: EncodingOption): string | Buffer; + /** + * Reads the contents of a directory. The callback gets two arguments `(err, files)`where `files` is an array of the names of the files in the directory excluding`'.'` and `'..'`. + * + * See the POSIX [`readdir(3)`](http://man7.org/linux/man-pages/man3/readdir.3.html) documentation for more details. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the filenames passed to the callback. If the `encoding` is set to `'buffer'`, + * the filenames returned will be passed as `Buffer` objects. + * + * If `options.withFileTypes` is set to `true`, the `files` array will contain `fs.Dirent` objects. + * @since v0.1.8 + */ + export function readdir( + path: PathLike, + options: + | { + encoding: BufferEncoding | null; + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + } + | BufferEncoding + | undefined + | null, + callback: (err: NodeJS.ErrnoException | null, files: string[]) => void, + ): void; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readdir( + path: PathLike, + options: + | { + encoding: "buffer"; + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + } + | "buffer", + callback: (err: NodeJS.ErrnoException | null, files: Buffer[]) => void, + ): void; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readdir( + path: PathLike, + options: + | (ObjectEncodingOptions & { + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + }) + | BufferEncoding + | undefined + | null, + callback: (err: NodeJS.ErrnoException | null, files: string[] | Buffer[]) => void, + ): void; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export function readdir( + path: PathLike, + callback: (err: NodeJS.ErrnoException | null, files: string[]) => void, + ): void; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options If called with `withFileTypes: true` the result data will be an array of Dirent. + */ + export function readdir( + path: PathLike, + options: ObjectEncodingOptions & { + withFileTypes: true; + recursive?: boolean | undefined; + }, + callback: (err: NodeJS.ErrnoException | null, files: Dirent[]) => void, + ): void; + export namespace readdir { + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__( + path: PathLike, + options?: + | { + encoding: BufferEncoding | null; + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + } + | BufferEncoding + | null, + ): Promise; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__( + path: PathLike, + options: + | "buffer" + | { + encoding: "buffer"; + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + }, + ): Promise; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__( + path: PathLike, + options?: + | (ObjectEncodingOptions & { + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + }) + | BufferEncoding + | null, + ): Promise; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options If called with `withFileTypes: true` the result data will be an array of Dirent + */ + function __promisify__( + path: PathLike, + options: ObjectEncodingOptions & { + withFileTypes: true; + recursive?: boolean | undefined; + }, + ): Promise; + } + /** + * Reads the contents of the directory. + * + * See the POSIX [`readdir(3)`](http://man7.org/linux/man-pages/man3/readdir.3.html) documentation for more details. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the filenames returned. If the `encoding` is set to `'buffer'`, + * the filenames returned will be passed as `Buffer` objects. + * + * If `options.withFileTypes` is set to `true`, the result will contain `fs.Dirent` objects. + * @since v0.1.21 + */ + export function readdirSync( + path: PathLike, + options?: + | { + encoding: BufferEncoding | null; + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + } + | BufferEncoding + | null, + ): string[]; + /** + * Synchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readdirSync( + path: PathLike, + options: + | { + encoding: "buffer"; + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + } + | "buffer", + ): Buffer[]; + /** + * Synchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readdirSync( + path: PathLike, + options?: + | (ObjectEncodingOptions & { + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + }) + | BufferEncoding + | null, + ): string[] | Buffer[]; + /** + * Synchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options If called with `withFileTypes: true` the result data will be an array of Dirent. + */ + export function readdirSync( + path: PathLike, + options: ObjectEncodingOptions & { + withFileTypes: true; + recursive?: boolean | undefined; + }, + ): Dirent[]; + /** + * Closes the file descriptor. No arguments other than a possible exception are + * given to the completion callback. + * + * Calling `fs.close()` on any file descriptor (`fd`) that is currently in use + * through any other `fs` operation may lead to undefined behavior. + * + * See the POSIX [`close(2)`](http://man7.org/linux/man-pages/man2/close.2.html) documentation for more detail. + * @since v0.0.2 + */ + export function close(fd: number, callback?: NoParamCallback): void; + export namespace close { + /** + * Asynchronous close(2) - close a file descriptor. + * @param fd A file descriptor. + */ + function __promisify__(fd: number): Promise; + } + /** + * Closes the file descriptor. Returns `undefined`. + * + * Calling `fs.closeSync()` on any file descriptor (`fd`) that is currently in use + * through any other `fs` operation may lead to undefined behavior. + * + * See the POSIX [`close(2)`](http://man7.org/linux/man-pages/man2/close.2.html) documentation for more detail. + * @since v0.1.21 + */ + export function closeSync(fd: number): void; + /** + * Asynchronous file open. See the POSIX [`open(2)`](http://man7.org/linux/man-pages/man2/open.2.html) documentation for more details. + * + * `mode` sets the file mode (permission and sticky bits), but only if the file was + * created. On Windows, only the write permission can be manipulated; see {@link chmod}. + * + * The callback gets two arguments `(err, fd)`. + * + * Some characters (`< > : " / \ | ? *`) are reserved under Windows as documented + * by [Naming Files, Paths, and Namespaces](https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file). Under NTFS, if the filename contains + * a colon, Node.js will open a file system stream, as described by [this MSDN page](https://docs.microsoft.com/en-us/windows/desktop/FileIO/using-streams). + * + * Functions based on `fs.open()` exhibit this behavior as well:`fs.writeFile()`, `fs.readFile()`, etc. + * @since v0.0.2 + * @param [flags='r'] See `support of file system `flags``. + * @param [mode=0o666] + */ + export function open( + path: PathLike, + flags: OpenMode | undefined, + mode: Mode | undefined | null, + callback: (err: NodeJS.ErrnoException | null, fd: number) => void, + ): void; + /** + * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param [flags='r'] See `support of file system `flags``. + */ + export function open( + path: PathLike, + flags: OpenMode | undefined, + callback: (err: NodeJS.ErrnoException | null, fd: number) => void, + ): void; + /** + * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export function open(path: PathLike, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void; + export namespace open { + /** + * Asynchronous open(2) - open and possibly create a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`. + */ + function __promisify__(path: PathLike, flags: OpenMode, mode?: Mode | null): Promise; + } + /** + * Returns an integer representing the file descriptor. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link open}. + * @since v0.1.21 + * @param [flags='r'] + * @param [mode=0o666] + */ + export function openSync(path: PathLike, flags: OpenMode, mode?: Mode | null): number; + /** + * Change the file system timestamps of the object referenced by `path`. + * + * The `atime` and `mtime` arguments follow these rules: + * + * * Values can be either numbers representing Unix epoch time in seconds,`Date`s, or a numeric string like `'123456789.0'`. + * * If the value can not be converted to a number, or is `NaN`, `Infinity`, or`-Infinity`, an `Error` will be thrown. + * @since v0.4.2 + */ + export function utimes(path: PathLike, atime: TimeLike, mtime: TimeLike, callback: NoParamCallback): void; + export namespace utimes { + /** + * Asynchronously change file timestamps of the file referenced by the supplied path. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param atime The last access time. If a string is provided, it will be coerced to number. + * @param mtime The last modified time. If a string is provided, it will be coerced to number. + */ + function __promisify__(path: PathLike, atime: TimeLike, mtime: TimeLike): Promise; + } + /** + * Returns `undefined`. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link utimes}. + * @since v0.4.2 + */ + export function utimesSync(path: PathLike, atime: TimeLike, mtime: TimeLike): void; + /** + * Change the file system timestamps of the object referenced by the supplied file + * descriptor. See {@link utimes}. + * @since v0.4.2 + */ + export function futimes(fd: number, atime: TimeLike, mtime: TimeLike, callback: NoParamCallback): void; + export namespace futimes { + /** + * Asynchronously change file timestamps of the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + * @param atime The last access time. If a string is provided, it will be coerced to number. + * @param mtime The last modified time. If a string is provided, it will be coerced to number. + */ + function __promisify__(fd: number, atime: TimeLike, mtime: TimeLike): Promise; + } + /** + * Synchronous version of {@link futimes}. Returns `undefined`. + * @since v0.4.2 + */ + export function futimesSync(fd: number, atime: TimeLike, mtime: TimeLike): void; + /** + * Request that all data for the open file descriptor is flushed to the storage + * device. The specific implementation is operating system and device specific. + * Refer to the POSIX [`fsync(2)`](http://man7.org/linux/man-pages/man2/fsync.2.html) documentation for more detail. No arguments other + * than a possible exception are given to the completion callback. + * @since v0.1.96 + */ + export function fsync(fd: number, callback: NoParamCallback): void; + export namespace fsync { + /** + * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device. + * @param fd A file descriptor. + */ + function __promisify__(fd: number): Promise; + } + /** + * Request that all data for the open file descriptor is flushed to the storage + * device. The specific implementation is operating system and device specific. + * Refer to the POSIX [`fsync(2)`](http://man7.org/linux/man-pages/man2/fsync.2.html) documentation for more detail. Returns `undefined`. + * @since v0.1.96 + */ + export function fsyncSync(fd: number): void; + /** + * Write `buffer` to the file specified by `fd`. + * + * `offset` determines the part of the buffer to be written, and `length` is + * an integer specifying the number of bytes to write. + * + * `position` refers to the offset from the beginning of the file where this data + * should be written. If `typeof position !== 'number'`, the data will be written + * at the current position. See [`pwrite(2)`](http://man7.org/linux/man-pages/man2/pwrite.2.html). + * + * The callback will be given three arguments `(err, bytesWritten, buffer)` where`bytesWritten` specifies how many _bytes_ were written from `buffer`. + * + * If this method is invoked as its `util.promisify()` ed version, it returns + * a promise for an `Object` with `bytesWritten` and `buffer` properties. + * + * It is unsafe to use `fs.write()` multiple times on the same file without waiting + * for the callback. For this scenario, {@link createWriteStream} is + * recommended. + * + * On Linux, positional writes don't work when the file is opened in append mode. + * The kernel ignores the position argument and always appends the data to + * the end of the file. + * @since v0.0.2 + * @param [offset=0] + * @param [length=buffer.byteLength - offset] + * @param [position='null'] + */ + export function write( + fd: number, + buffer: TBuffer, + offset: number | undefined | null, + length: number | undefined | null, + position: number | undefined | null, + callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void, + ): void; + /** + * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. + * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. + */ + export function write( + fd: number, + buffer: TBuffer, + offset: number | undefined | null, + length: number | undefined | null, + callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void, + ): void; + /** + * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. + */ + export function write( + fd: number, + buffer: TBuffer, + offset: number | undefined | null, + callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void, + ): void; + /** + * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + */ + export function write( + fd: number, + buffer: TBuffer, + callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void, + ): void; + /** + * Asynchronously writes `string` to the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + * @param string A string to write. + * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. + * @param encoding The expected string encoding. + */ + export function write( + fd: number, + string: string, + position: number | undefined | null, + encoding: BufferEncoding | undefined | null, + callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void, + ): void; + /** + * Asynchronously writes `string` to the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + * @param string A string to write. + * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. + */ + export function write( + fd: number, + string: string, + position: number | undefined | null, + callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void, + ): void; + /** + * Asynchronously writes `string` to the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + * @param string A string to write. + */ + export function write( + fd: number, + string: string, + callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void, + ): void; + export namespace write { + /** + * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. + * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. + * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. + */ + function __promisify__( + fd: number, + buffer?: TBuffer, + offset?: number, + length?: number, + position?: number | null, + ): Promise<{ + bytesWritten: number; + buffer: TBuffer; + }>; + /** + * Asynchronously writes `string` to the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + * @param string A string to write. + * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. + * @param encoding The expected string encoding. + */ + function __promisify__( + fd: number, + string: string, + position?: number | null, + encoding?: BufferEncoding | null, + ): Promise<{ + bytesWritten: number; + buffer: string; + }>; + } + /** + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link write}. + * @since v0.1.21 + * @param [offset=0] + * @param [length=buffer.byteLength - offset] + * @param [position='null'] + * @return The number of bytes written. + */ + export function writeSync( + fd: number, + buffer: NodeJS.ArrayBufferView, + offset?: number | null, + length?: number | null, + position?: number | null, + ): number; + /** + * Synchronously writes `string` to the file referenced by the supplied file descriptor, returning the number of bytes written. + * @param fd A file descriptor. + * @param string A string to write. + * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. + * @param encoding The expected string encoding. + */ + export function writeSync( + fd: number, + string: string, + position?: number | null, + encoding?: BufferEncoding | null, + ): number; + export type ReadPosition = number | bigint; + export interface ReadSyncOptions { + /** + * @default 0 + */ + offset?: number | undefined; + /** + * @default `length of buffer` + */ + length?: number | undefined; + /** + * @default null + */ + position?: ReadPosition | null | undefined; + } + export interface ReadAsyncOptions extends ReadSyncOptions { + buffer?: TBuffer; + } + /** + * Read data from the file specified by `fd`. + * + * The callback is given the three arguments, `(err, bytesRead, buffer)`. + * + * If the file is not modified concurrently, the end-of-file is reached when the + * number of bytes read is zero. + * + * If this method is invoked as its `util.promisify()` ed version, it returns + * a promise for an `Object` with `bytesRead` and `buffer` properties. + * @since v0.0.2 + * @param buffer The buffer that the data will be written to. + * @param offset The position in `buffer` to write the data to. + * @param length The number of bytes to read. + * @param position Specifies where to begin reading from in the file. If `position` is `null` or `-1 `, data will be read from the current file position, and the file position will be updated. If + * `position` is an integer, the file position will be unchanged. + */ + export function read( + fd: number, + buffer: TBuffer, + offset: number, + length: number, + position: ReadPosition | null, + callback: (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: TBuffer) => void, + ): void; + /** + * Similar to the above `fs.read` function, this version takes an optional `options` object. + * If not otherwise specified in an `options` object, + * `buffer` defaults to `Buffer.alloc(16384)`, + * `offset` defaults to `0`, + * `length` defaults to `buffer.byteLength`, `- offset` as of Node 17.6.0 + * `position` defaults to `null` + * @since v12.17.0, 13.11.0 + */ + export function read( + fd: number, + options: ReadAsyncOptions, + callback: (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: TBuffer) => void, + ): void; + export function read( + fd: number, + callback: (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: NodeJS.ArrayBufferView) => void, + ): void; + export namespace read { + /** + * @param fd A file descriptor. + * @param buffer The buffer that the data will be written to. + * @param offset The offset in the buffer at which to start writing. + * @param length The number of bytes to read. + * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position. + */ + function __promisify__( + fd: number, + buffer: TBuffer, + offset: number, + length: number, + position: number | null, + ): Promise<{ + bytesRead: number; + buffer: TBuffer; + }>; + function __promisify__( + fd: number, + options: ReadAsyncOptions, + ): Promise<{ + bytesRead: number; + buffer: TBuffer; + }>; + function __promisify__(fd: number): Promise<{ + bytesRead: number; + buffer: NodeJS.ArrayBufferView; + }>; + } + /** + * Returns the number of `bytesRead`. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link read}. + * @since v0.1.21 + * @param [position='null'] + */ + export function readSync( + fd: number, + buffer: NodeJS.ArrayBufferView, + offset: number, + length: number, + position: ReadPosition | null, + ): number; + /** + * Similar to the above `fs.readSync` function, this version takes an optional `options` object. + * If no `options` object is specified, it will default with the above values. + */ + export function readSync(fd: number, buffer: NodeJS.ArrayBufferView, opts?: ReadSyncOptions): number; + /** + * Asynchronously reads the entire contents of a file. + * + * ```js + * import { readFile } from 'node:fs'; + * + * readFile('/etc/passwd', (err, data) => { + * if (err) throw err; + * console.log(data); + * }); + * ``` + * + * The callback is passed two arguments `(err, data)`, where `data` is the + * contents of the file. + * + * If no encoding is specified, then the raw buffer is returned. + * + * If `options` is a string, then it specifies the encoding: + * + * ```js + * import { readFile } from 'node:fs'; + * + * readFile('/etc/passwd', 'utf8', callback); + * ``` + * + * When the path is a directory, the behavior of `fs.readFile()` and {@link readFileSync} is platform-specific. On macOS, Linux, and Windows, an + * error will be returned. On FreeBSD, a representation of the directory's contents + * will be returned. + * + * ```js + * import { readFile } from 'node:fs'; + * + * // macOS, Linux, and Windows + * readFile('', (err, data) => { + * // => [Error: EISDIR: illegal operation on a directory, read ] + * }); + * + * // FreeBSD + * readFile('', (err, data) => { + * // => null, + * }); + * ``` + * + * It is possible to abort an ongoing request using an `AbortSignal`. If a + * request is aborted the callback is called with an `AbortError`: + * + * ```js + * import { readFile } from 'node:fs'; + * + * const controller = new AbortController(); + * const signal = controller.signal; + * readFile(fileInfo[0].name, { signal }, (err, buf) => { + * // ... + * }); + * // When you want to abort the request + * controller.abort(); + * ``` + * + * The `fs.readFile()` function buffers the entire file. To minimize memory costs, + * when possible prefer streaming via `fs.createReadStream()`. + * + * Aborting an ongoing request does not abort individual operating + * system requests but rather the internal buffering `fs.readFile` performs. + * @since v0.1.29 + * @param path filename or file descriptor + */ + export function readFile( + path: PathOrFileDescriptor, + options: + | ({ + encoding?: null | undefined; + flag?: string | undefined; + } & Abortable) + | undefined + | null, + callback: (err: NodeJS.ErrnoException | null, data: Buffer) => void, + ): void; + /** + * Asynchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + export function readFile( + path: PathOrFileDescriptor, + options: + | ({ + encoding: BufferEncoding; + flag?: string | undefined; + } & Abortable) + | BufferEncoding, + callback: (err: NodeJS.ErrnoException | null, data: string) => void, + ): void; + /** + * Asynchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + export function readFile( + path: PathOrFileDescriptor, + options: + | (ObjectEncodingOptions & { + flag?: string | undefined; + } & Abortable) + | BufferEncoding + | undefined + | null, + callback: (err: NodeJS.ErrnoException | null, data: string | Buffer) => void, + ): void; + /** + * Asynchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + */ + export function readFile( + path: PathOrFileDescriptor, + callback: (err: NodeJS.ErrnoException | null, data: Buffer) => void, + ): void; + export namespace readFile { + /** + * Asynchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param options An object that may contain an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + function __promisify__( + path: PathOrFileDescriptor, + options?: { + encoding?: null | undefined; + flag?: string | undefined; + } | null, + ): Promise; + /** + * Asynchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * URL support is _experimental_. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + function __promisify__( + path: PathOrFileDescriptor, + options: + | { + encoding: BufferEncoding; + flag?: string | undefined; + } + | BufferEncoding, + ): Promise; + /** + * Asynchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * URL support is _experimental_. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + function __promisify__( + path: PathOrFileDescriptor, + options?: + | (ObjectEncodingOptions & { + flag?: string | undefined; + }) + | BufferEncoding + | null, + ): Promise; + } + /** + * Returns the contents of the `path`. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link readFile}. + * + * If the `encoding` option is specified then this function returns a + * string. Otherwise it returns a buffer. + * + * Similar to {@link readFile}, when the path is a directory, the behavior of`fs.readFileSync()` is platform-specific. + * + * ```js + * import { readFileSync } from 'node:fs'; + * + * // macOS, Linux, and Windows + * readFileSync(''); + * // => [Error: EISDIR: illegal operation on a directory, read ] + * + * // FreeBSD + * readFileSync(''); // => + * ``` + * @since v0.1.8 + * @param path filename or file descriptor + */ + export function readFileSync( + path: PathOrFileDescriptor, + options?: { + encoding?: null | undefined; + flag?: string | undefined; + } | null, + ): Buffer; + /** + * Synchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + export function readFileSync( + path: PathOrFileDescriptor, + options: + | { + encoding: BufferEncoding; + flag?: string | undefined; + } + | BufferEncoding, + ): string; + /** + * Synchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + export function readFileSync( + path: PathOrFileDescriptor, + options?: + | (ObjectEncodingOptions & { + flag?: string | undefined; + }) + | BufferEncoding + | null, + ): string | Buffer; + export type WriteFileOptions = + | ( + & ObjectEncodingOptions + & Abortable + & { + mode?: Mode | undefined; + flag?: string | undefined; + } + ) + | BufferEncoding + | null; + /** + * When `file` is a filename, asynchronously writes data to the file, replacing the + * file if it already exists. `data` can be a string or a buffer. + * + * When `file` is a file descriptor, the behavior is similar to calling`fs.write()` directly (which is recommended). See the notes below on using + * a file descriptor. + * + * The `encoding` option is ignored if `data` is a buffer. + * + * The `mode` option only affects the newly created file. See {@link open} for more details. + * + * ```js + * import { writeFile } from 'node:fs'; + * import { Buffer } from 'node:buffer'; + * + * const data = new Uint8Array(Buffer.from('Hello Node.js')); + * writeFile('message.txt', data, (err) => { + * if (err) throw err; + * console.log('The file has been saved!'); + * }); + * ``` + * + * If `options` is a string, then it specifies the encoding: + * + * ```js + * import { writeFile } from 'node:fs'; + * + * writeFile('message.txt', 'Hello Node.js', 'utf8', callback); + * ``` + * + * It is unsafe to use `fs.writeFile()` multiple times on the same file without + * waiting for the callback. For this scenario, {@link createWriteStream} is + * recommended. + * + * Similarly to `fs.readFile` \- `fs.writeFile` is a convenience method that + * performs multiple `write` calls internally to write the buffer passed to it. + * For performance sensitive code consider using {@link createWriteStream}. + * + * It is possible to use an `AbortSignal` to cancel an `fs.writeFile()`. + * Cancelation is "best effort", and some amount of data is likely still + * to be written. + * + * ```js + * import { writeFile } from 'node:fs'; + * import { Buffer } from 'node:buffer'; + * + * const controller = new AbortController(); + * const { signal } = controller; + * const data = new Uint8Array(Buffer.from('Hello Node.js')); + * writeFile('message.txt', data, { signal }, (err) => { + * // When a request is aborted - the callback is called with an AbortError + * }); + * // When the request should be aborted + * controller.abort(); + * ``` + * + * Aborting an ongoing request does not abort individual operating + * system requests but rather the internal buffering `fs.writeFile` performs. + * @since v0.1.29 + * @param file filename or file descriptor + */ + export function writeFile( + file: PathOrFileDescriptor, + data: string | NodeJS.ArrayBufferView, + options: WriteFileOptions, + callback: NoParamCallback, + ): void; + /** + * Asynchronously writes data to a file, replacing the file if it already exists. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. + */ + export function writeFile( + path: PathOrFileDescriptor, + data: string | NodeJS.ArrayBufferView, + callback: NoParamCallback, + ): void; + export namespace writeFile { + /** + * Asynchronously writes data to a file, replacing the file if it already exists. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * URL support is _experimental_. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. + * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. + * If `encoding` is not supplied, the default of `'utf8'` is used. + * If `mode` is not supplied, the default of `0o666` is used. + * If `mode` is a string, it is parsed as an octal integer. + * If `flag` is not supplied, the default of `'w'` is used. + */ + function __promisify__( + path: PathOrFileDescriptor, + data: string | NodeJS.ArrayBufferView, + options?: WriteFileOptions, + ): Promise; + } + /** + * Returns `undefined`. + * + * The `mode` option only affects the newly created file. See {@link open} for more details. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link writeFile}. + * @since v0.1.29 + * @param file filename or file descriptor + */ + export function writeFileSync( + file: PathOrFileDescriptor, + data: string | NodeJS.ArrayBufferView, + options?: WriteFileOptions, + ): void; + /** + * Asynchronously append data to a file, creating the file if it does not yet + * exist. `data` can be a string or a `Buffer`. + * + * The `mode` option only affects the newly created file. See {@link open} for more details. + * + * ```js + * import { appendFile } from 'node:fs'; + * + * appendFile('message.txt', 'data to append', (err) => { + * if (err) throw err; + * console.log('The "data to append" was appended to file!'); + * }); + * ``` + * + * If `options` is a string, then it specifies the encoding: + * + * ```js + * import { appendFile } from 'node:fs'; + * + * appendFile('message.txt', 'data to append', 'utf8', callback); + * ``` + * + * The `path` may be specified as a numeric file descriptor that has been opened + * for appending (using `fs.open()` or `fs.openSync()`). The file descriptor will + * not be closed automatically. + * + * ```js + * import { open, close, appendFile } from 'node:fs'; + * + * function closeFd(fd) { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * + * open('message.txt', 'a', (err, fd) => { + * if (err) throw err; + * + * try { + * appendFile(fd, 'data to append', 'utf8', (err) => { + * closeFd(fd); + * if (err) throw err; + * }); + * } catch (err) { + * closeFd(fd); + * throw err; + * } + * }); + * ``` + * @since v0.6.7 + * @param path filename or file descriptor + */ + export function appendFile( + path: PathOrFileDescriptor, + data: string | Uint8Array, + options: WriteFileOptions, + callback: NoParamCallback, + ): void; + /** + * Asynchronously append data to a file, creating the file if it does not exist. + * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. + */ + export function appendFile(file: PathOrFileDescriptor, data: string | Uint8Array, callback: NoParamCallback): void; + export namespace appendFile { + /** + * Asynchronously append data to a file, creating the file if it does not exist. + * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. + * URL support is _experimental_. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. + * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. + * If `encoding` is not supplied, the default of `'utf8'` is used. + * If `mode` is not supplied, the default of `0o666` is used. + * If `mode` is a string, it is parsed as an octal integer. + * If `flag` is not supplied, the default of `'a'` is used. + */ + function __promisify__( + file: PathOrFileDescriptor, + data: string | Uint8Array, + options?: WriteFileOptions, + ): Promise; + } + /** + * Synchronously append data to a file, creating the file if it does not yet + * exist. `data` can be a string or a `Buffer`. + * + * The `mode` option only affects the newly created file. See {@link open} for more details. + * + * ```js + * import { appendFileSync } from 'node:fs'; + * + * try { + * appendFileSync('message.txt', 'data to append'); + * console.log('The "data to append" was appended to file!'); + * } catch (err) { + * // Handle the error + * } + * ``` + * + * If `options` is a string, then it specifies the encoding: + * + * ```js + * import { appendFileSync } from 'node:fs'; + * + * appendFileSync('message.txt', 'data to append', 'utf8'); + * ``` + * + * The `path` may be specified as a numeric file descriptor that has been opened + * for appending (using `fs.open()` or `fs.openSync()`). The file descriptor will + * not be closed automatically. + * + * ```js + * import { openSync, closeSync, appendFileSync } from 'node:fs'; + * + * let fd; + * + * try { + * fd = openSync('message.txt', 'a'); + * appendFileSync(fd, 'data to append', 'utf8'); + * } catch (err) { + * // Handle the error + * } finally { + * if (fd !== undefined) + * closeSync(fd); + * } + * ``` + * @since v0.6.7 + * @param path filename or file descriptor + */ + export function appendFileSync( + path: PathOrFileDescriptor, + data: string | Uint8Array, + options?: WriteFileOptions, + ): void; + /** + * Watch for changes on `filename`. The callback `listener` will be called each + * time the file is accessed. + * + * The `options` argument may be omitted. If provided, it should be an object. The`options` object may contain a boolean named `persistent` that indicates + * whether the process should continue to run as long as files are being watched. + * The `options` object may specify an `interval` property indicating how often the + * target should be polled in milliseconds. + * + * The `listener` gets two arguments the current stat object and the previous + * stat object: + * + * ```js + * import { watchFile } from 'fs'; + * + * watchFile('message.text', (curr, prev) => { + * console.log(`the current mtime is: ${curr.mtime}`); + * console.log(`the previous mtime was: ${prev.mtime}`); + * }); + * ``` + * + * These stat objects are instances of `fs.Stat`. If the `bigint` option is `true`, + * the numeric values in these objects are specified as `BigInt`s. + * + * To be notified when the file was modified, not just accessed, it is necessary + * to compare `curr.mtimeMs` and `prev.mtimeMs`. + * + * When an `fs.watchFile` operation results in an `ENOENT` error, it + * will invoke the listener once, with all the fields zeroed (or, for dates, the + * Unix Epoch). If the file is created later on, the listener will be called + * again, with the latest stat objects. This is a change in functionality since + * v0.10. + * + * Using {@link watch} is more efficient than `fs.watchFile` and`fs.unwatchFile`. `fs.watch` should be used instead of `fs.watchFile` and`fs.unwatchFile` when possible. + * + * When a file being watched by `fs.watchFile()` disappears and reappears, + * then the contents of `previous` in the second callback event (the file's + * reappearance) will be the same as the contents of `previous` in the first + * callback event (its disappearance). + * + * This happens when: + * + * * the file is deleted, followed by a restore + * * the file is renamed and then renamed a second time back to its original name + * @since v0.1.31 + */ + export interface WatchFileOptions { + bigint?: boolean | undefined; + persistent?: boolean | undefined; + interval?: number | undefined; + } + /** + * Watch for changes on `filename`. The callback `listener` will be called each + * time the file is accessed. + * + * The `options` argument may be omitted. If provided, it should be an object. The`options` object may contain a boolean named `persistent` that indicates + * whether the process should continue to run as long as files are being watched. + * The `options` object may specify an `interval` property indicating how often the + * target should be polled in milliseconds. + * + * The `listener` gets two arguments the current stat object and the previous + * stat object: + * + * ```js + * import { watchFile } from 'node:fs'; + * + * watchFile('message.text', (curr, prev) => { + * console.log(`the current mtime is: ${curr.mtime}`); + * console.log(`the previous mtime was: ${prev.mtime}`); + * }); + * ``` + * + * These stat objects are instances of `fs.Stat`. If the `bigint` option is `true`, + * the numeric values in these objects are specified as `BigInt`s. + * + * To be notified when the file was modified, not just accessed, it is necessary + * to compare `curr.mtimeMs` and `prev.mtimeMs`. + * + * When an `fs.watchFile` operation results in an `ENOENT` error, it + * will invoke the listener once, with all the fields zeroed (or, for dates, the + * Unix Epoch). If the file is created later on, the listener will be called + * again, with the latest stat objects. This is a change in functionality since + * v0.10. + * + * Using {@link watch} is more efficient than `fs.watchFile` and`fs.unwatchFile`. `fs.watch` should be used instead of `fs.watchFile` and`fs.unwatchFile` when possible. + * + * When a file being watched by `fs.watchFile()` disappears and reappears, + * then the contents of `previous` in the second callback event (the file's + * reappearance) will be the same as the contents of `previous` in the first + * callback event (its disappearance). + * + * This happens when: + * + * * the file is deleted, followed by a restore + * * the file is renamed and then renamed a second time back to its original name + * @since v0.1.31 + */ + export function watchFile( + filename: PathLike, + options: + | (WatchFileOptions & { + bigint?: false | undefined; + }) + | undefined, + listener: StatsListener, + ): StatWatcher; + export function watchFile( + filename: PathLike, + options: + | (WatchFileOptions & { + bigint: true; + }) + | undefined, + listener: BigIntStatsListener, + ): StatWatcher; + /** + * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed. + * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + */ + export function watchFile(filename: PathLike, listener: StatsListener): StatWatcher; + /** + * Stop watching for changes on `filename`. If `listener` is specified, only that + * particular listener is removed. Otherwise, _all_ listeners are removed, + * effectively stopping watching of `filename`. + * + * Calling `fs.unwatchFile()` with a filename that is not being watched is a + * no-op, not an error. + * + * Using {@link watch} is more efficient than `fs.watchFile()` and`fs.unwatchFile()`. `fs.watch()` should be used instead of `fs.watchFile()`and `fs.unwatchFile()` when possible. + * @since v0.1.31 + * @param listener Optional, a listener previously attached using `fs.watchFile()` + */ + export function unwatchFile(filename: PathLike, listener?: StatsListener): void; + export function unwatchFile(filename: PathLike, listener?: BigIntStatsListener): void; + export interface WatchOptions extends Abortable { + encoding?: BufferEncoding | "buffer" | undefined; + persistent?: boolean | undefined; + recursive?: boolean | undefined; + } + export type WatchEventType = "rename" | "change"; + export type WatchListener = (event: WatchEventType, filename: T | null) => void; + export type StatsListener = (curr: Stats, prev: Stats) => void; + export type BigIntStatsListener = (curr: BigIntStats, prev: BigIntStats) => void; + /** + * Watch for changes on `filename`, where `filename` is either a file or a + * directory. + * + * The second argument is optional. If `options` is provided as a string, it + * specifies the `encoding`. Otherwise `options` should be passed as an object. + * + * The listener callback gets two arguments `(eventType, filename)`. `eventType`is either `'rename'` or `'change'`, and `filename` is the name of the file + * which triggered the event. + * + * On most platforms, `'rename'` is emitted whenever a filename appears or + * disappears in the directory. + * + * The listener callback is attached to the `'change'` event fired by `fs.FSWatcher`, but it is not the same thing as the `'change'` value of`eventType`. + * + * If a `signal` is passed, aborting the corresponding AbortController will close + * the returned `fs.FSWatcher`. + * @since v0.5.10 + * @param listener + */ + export function watch( + filename: PathLike, + options: + | (WatchOptions & { + encoding: "buffer"; + }) + | "buffer", + listener?: WatchListener, + ): FSWatcher; + /** + * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. + * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. + * If `encoding` is not supplied, the default of `'utf8'` is used. + * If `persistent` is not supplied, the default of `true` is used. + * If `recursive` is not supplied, the default of `false` is used. + */ + export function watch( + filename: PathLike, + options?: WatchOptions | BufferEncoding | null, + listener?: WatchListener, + ): FSWatcher; + /** + * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. + * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. + * If `encoding` is not supplied, the default of `'utf8'` is used. + * If `persistent` is not supplied, the default of `true` is used. + * If `recursive` is not supplied, the default of `false` is used. + */ + export function watch( + filename: PathLike, + options: WatchOptions | string, + listener?: WatchListener, + ): FSWatcher; + /** + * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. + * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + */ + export function watch(filename: PathLike, listener?: WatchListener): FSWatcher; + /** + * Test whether or not the given path exists by checking with the file system. + * Then call the `callback` argument with either true or false: + * + * ```js + * import { exists } from 'node:fs'; + * + * exists('/etc/passwd', (e) => { + * console.log(e ? 'it exists' : 'no passwd!'); + * }); + * ``` + * + * **The parameters for this callback are not consistent with other Node.js** + * **callbacks.** Normally, the first parameter to a Node.js callback is an `err`parameter, optionally followed by other parameters. The `fs.exists()` callback + * has only one boolean parameter. This is one reason `fs.access()` is recommended + * instead of `fs.exists()`. + * + * Using `fs.exists()` to check for the existence of a file before calling`fs.open()`, `fs.readFile()`, or `fs.writeFile()` is not recommended. Doing + * so introduces a race condition, since other processes may change the file's + * state between the two calls. Instead, user code should open/read/write the + * file directly and handle the error raised if the file does not exist. + * + * **write (NOT RECOMMENDED)** + * + * ```js + * import { exists, open, close } from 'node:fs'; + * + * exists('myfile', (e) => { + * if (e) { + * console.error('myfile already exists'); + * } else { + * open('myfile', 'wx', (err, fd) => { + * if (err) throw err; + * + * try { + * writeMyData(fd); + * } finally { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * }); + * } + * }); + * ``` + * + * **write (RECOMMENDED)** + * + * ```js + * import { open, close } from 'node:fs'; + * open('myfile', 'wx', (err, fd) => { + * if (err) { + * if (err.code === 'EEXIST') { + * console.error('myfile already exists'); + * return; + * } + * + * throw err; + * } + * + * try { + * writeMyData(fd); + * } finally { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * }); + * ``` + * + * **read (NOT RECOMMENDED)** + * + * ```js + * import { open, close, exists } from 'node:fs'; + * + * exists('myfile', (e) => { + * if (e) { + * open('myfile', 'r', (err, fd) => { + * if (err) throw err; + * + * try { + * readMyData(fd); + * } finally { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * }); + * } else { + * console.error('myfile does not exist'); + * } + * }); + * ``` + * + * **read (RECOMMENDED)** + * + * ```js + * import { open, close } from 'node:fs'; + * + * open('myfile', 'r', (err, fd) => { + * if (err) { + * if (err.code === 'ENOENT') { + * console.error('myfile does not exist'); + * return; + * } + * + * throw err; + * } + * + * try { + * readMyData(fd); + * } finally { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * }); + * ``` + * + * The "not recommended" examples above check for existence and then use the + * file; the "recommended" examples are better because they use the file directly + * and handle the error, if any. + * + * In general, check for the existence of a file only if the file won't be + * used directly, for example when its existence is a signal from another + * process. + * @since v0.0.2 + * @deprecated Since v1.0.0 - Use {@link stat} or {@link access} instead. + */ + export function exists(path: PathLike, callback: (exists: boolean) => void): void; + /** @deprecated */ + export namespace exists { + /** + * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + * URL support is _experimental_. + */ + function __promisify__(path: PathLike): Promise; + } + /** + * Returns `true` if the path exists, `false` otherwise. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link exists}. + * + * `fs.exists()` is deprecated, but `fs.existsSync()` is not. The `callback`parameter to `fs.exists()` accepts parameters that are inconsistent with other + * Node.js callbacks. `fs.existsSync()` does not use a callback. + * + * ```js + * import { existsSync } from 'node:fs'; + * + * if (existsSync('/etc/passwd')) + * console.log('The path exists.'); + * ``` + * @since v0.1.21 + */ + export function existsSync(path: PathLike): boolean; + export namespace constants { + // File Access Constants + /** Constant for fs.access(). File is visible to the calling process. */ + const F_OK: number; + /** Constant for fs.access(). File can be read by the calling process. */ + const R_OK: number; + /** Constant for fs.access(). File can be written by the calling process. */ + const W_OK: number; + /** Constant for fs.access(). File can be executed by the calling process. */ + const X_OK: number; + // File Copy Constants + /** Constant for fs.copyFile. Flag indicating the destination file should not be overwritten if it already exists. */ + const COPYFILE_EXCL: number; + /** + * Constant for fs.copyFile. copy operation will attempt to create a copy-on-write reflink. + * If the underlying platform does not support copy-on-write, then a fallback copy mechanism is used. + */ + const COPYFILE_FICLONE: number; + /** + * Constant for fs.copyFile. Copy operation will attempt to create a copy-on-write reflink. + * If the underlying platform does not support copy-on-write, then the operation will fail with an error. + */ + const COPYFILE_FICLONE_FORCE: number; + // File Open Constants + /** Constant for fs.open(). Flag indicating to open a file for read-only access. */ + const O_RDONLY: number; + /** Constant for fs.open(). Flag indicating to open a file for write-only access. */ + const O_WRONLY: number; + /** Constant for fs.open(). Flag indicating to open a file for read-write access. */ + const O_RDWR: number; + /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */ + const O_CREAT: number; + /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */ + const O_EXCL: number; + /** + * Constant for fs.open(). Flag indicating that if path identifies a terminal device, + * opening the path shall not cause that terminal to become the controlling terminal for the process + * (if the process does not already have one). + */ + const O_NOCTTY: number; + /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */ + const O_TRUNC: number; + /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */ + const O_APPEND: number; + /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */ + const O_DIRECTORY: number; + /** + * constant for fs.open(). + * Flag indicating reading accesses to the file system will no longer result in + * an update to the atime information associated with the file. + * This flag is available on Linux operating systems only. + */ + const O_NOATIME: number; + /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */ + const O_NOFOLLOW: number; + /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */ + const O_SYNC: number; + /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O with write operations waiting for data integrity. */ + const O_DSYNC: number; + /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */ + const O_SYMLINK: number; + /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */ + const O_DIRECT: number; + /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */ + const O_NONBLOCK: number; + // File Type Constants + /** Constant for fs.Stats mode property for determining a file's type. Bit mask used to extract the file type code. */ + const S_IFMT: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a regular file. */ + const S_IFREG: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a directory. */ + const S_IFDIR: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a character-oriented device file. */ + const S_IFCHR: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a block-oriented device file. */ + const S_IFBLK: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a FIFO/pipe. */ + const S_IFIFO: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a symbolic link. */ + const S_IFLNK: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a socket. */ + const S_IFSOCK: number; + // File Mode Constants + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */ + const S_IRWXU: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */ + const S_IRUSR: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */ + const S_IWUSR: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */ + const S_IXUSR: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */ + const S_IRWXG: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */ + const S_IRGRP: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */ + const S_IWGRP: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */ + const S_IXGRP: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */ + const S_IRWXO: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */ + const S_IROTH: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */ + const S_IWOTH: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */ + const S_IXOTH: number; + /** + * When set, a memory file mapping is used to access the file. This flag + * is available on Windows operating systems only. On other operating systems, + * this flag is ignored. + */ + const UV_FS_O_FILEMAP: number; + } + /** + * Tests a user's permissions for the file or directory specified by `path`. + * The `mode` argument is an optional integer that specifies the accessibility + * checks to be performed. `mode` should be either the value `fs.constants.F_OK`or a mask consisting of the bitwise OR of any of `fs.constants.R_OK`,`fs.constants.W_OK`, and `fs.constants.X_OK` + * (e.g.`fs.constants.W_OK | fs.constants.R_OK`). Check `File access constants` for + * possible values of `mode`. + * + * The final argument, `callback`, is a callback function that is invoked with + * a possible error argument. If any of the accessibility checks fail, the error + * argument will be an `Error` object. The following examples check if`package.json` exists, and if it is readable or writable. + * + * ```js + * import { access, constants } from 'node:fs'; + * + * const file = 'package.json'; + * + * // Check if the file exists in the current directory. + * access(file, constants.F_OK, (err) => { + * console.log(`${file} ${err ? 'does not exist' : 'exists'}`); + * }); + * + * // Check if the file is readable. + * access(file, constants.R_OK, (err) => { + * console.log(`${file} ${err ? 'is not readable' : 'is readable'}`); + * }); + * + * // Check if the file is writable. + * access(file, constants.W_OK, (err) => { + * console.log(`${file} ${err ? 'is not writable' : 'is writable'}`); + * }); + * + * // Check if the file is readable and writable. + * access(file, constants.R_OK | constants.W_OK, (err) => { + * console.log(`${file} ${err ? 'is not' : 'is'} readable and writable`); + * }); + * ``` + * + * Do not use `fs.access()` to check for the accessibility of a file before calling`fs.open()`, `fs.readFile()`, or `fs.writeFile()`. Doing + * so introduces a race condition, since other processes may change the file's + * state between the two calls. Instead, user code should open/read/write the + * file directly and handle the error raised if the file is not accessible. + * + * **write (NOT RECOMMENDED)** + * + * ```js + * import { access, open, close } from 'node:fs'; + * + * access('myfile', (err) => { + * if (!err) { + * console.error('myfile already exists'); + * return; + * } + * + * open('myfile', 'wx', (err, fd) => { + * if (err) throw err; + * + * try { + * writeMyData(fd); + * } finally { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * }); + * }); + * ``` + * + * **write (RECOMMENDED)** + * + * ```js + * import { open, close } from 'node:fs'; + * + * open('myfile', 'wx', (err, fd) => { + * if (err) { + * if (err.code === 'EEXIST') { + * console.error('myfile already exists'); + * return; + * } + * + * throw err; + * } + * + * try { + * writeMyData(fd); + * } finally { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * }); + * ``` + * + * **read (NOT RECOMMENDED)** + * + * ```js + * import { access, open, close } from 'node:fs'; + * access('myfile', (err) => { + * if (err) { + * if (err.code === 'ENOENT') { + * console.error('myfile does not exist'); + * return; + * } + * + * throw err; + * } + * + * open('myfile', 'r', (err, fd) => { + * if (err) throw err; + * + * try { + * readMyData(fd); + * } finally { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * }); + * }); + * ``` + * + * **read (RECOMMENDED)** + * + * ```js + * import { open, close } from 'node:fs'; + * + * open('myfile', 'r', (err, fd) => { + * if (err) { + * if (err.code === 'ENOENT') { + * console.error('myfile does not exist'); + * return; + * } + * + * throw err; + * } + * + * try { + * readMyData(fd); + * } finally { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * }); + * ``` + * + * The "not recommended" examples above check for accessibility and then use the + * file; the "recommended" examples are better because they use the file directly + * and handle the error, if any. + * + * In general, check for the accessibility of a file only if the file will not be + * used directly, for example when its accessibility is a signal from another + * process. + * + * On Windows, access-control policies (ACLs) on a directory may limit access to + * a file or directory. The `fs.access()` function, however, does not check the + * ACL and therefore may report that a path is accessible even if the ACL restricts + * the user from reading or writing to it. + * @since v0.11.15 + * @param [mode=fs.constants.F_OK] + */ + export function access(path: PathLike, mode: number | undefined, callback: NoParamCallback): void; + /** + * Asynchronously tests a user's permissions for the file specified by path. + * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + */ + export function access(path: PathLike, callback: NoParamCallback): void; + export namespace access { + /** + * Asynchronously tests a user's permissions for the file specified by path. + * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + * URL support is _experimental_. + */ + function __promisify__(path: PathLike, mode?: number): Promise; + } + /** + * Synchronously tests a user's permissions for the file or directory specified + * by `path`. The `mode` argument is an optional integer that specifies the + * accessibility checks to be performed. `mode` should be either the value`fs.constants.F_OK` or a mask consisting of the bitwise OR of any of`fs.constants.R_OK`, `fs.constants.W_OK`, and + * `fs.constants.X_OK` (e.g.`fs.constants.W_OK | fs.constants.R_OK`). Check `File access constants` for + * possible values of `mode`. + * + * If any of the accessibility checks fail, an `Error` will be thrown. Otherwise, + * the method will return `undefined`. + * + * ```js + * import { accessSync, constants } from 'node:fs'; + * + * try { + * accessSync('etc/passwd', constants.R_OK | constants.W_OK); + * console.log('can read/write'); + * } catch (err) { + * console.error('no access!'); + * } + * ``` + * @since v0.11.15 + * @param [mode=fs.constants.F_OK] + */ + export function accessSync(path: PathLike, mode?: number): void; + interface StreamOptions { + flags?: string | undefined; + encoding?: BufferEncoding | undefined; + fd?: number | promises.FileHandle | undefined; + mode?: number | undefined; + autoClose?: boolean | undefined; + emitClose?: boolean | undefined; + start?: number | undefined; + signal?: AbortSignal | null | undefined; + highWaterMark?: number | undefined; + } + interface FSImplementation { + open?: (...args: any[]) => any; + close?: (...args: any[]) => any; + } + interface CreateReadStreamFSImplementation extends FSImplementation { + read: (...args: any[]) => any; + } + interface CreateWriteStreamFSImplementation extends FSImplementation { + write: (...args: any[]) => any; + writev?: (...args: any[]) => any; + } + interface ReadStreamOptions extends StreamOptions { + fs?: CreateReadStreamFSImplementation | null | undefined; + end?: number | undefined; + } + interface WriteStreamOptions extends StreamOptions { + fs?: CreateWriteStreamFSImplementation | null | undefined; + } + /** + * Unlike the 16 KiB default `highWaterMark` for a `stream.Readable`, the stream + * returned by this method has a default `highWaterMark` of 64 KiB. + * + * `options` can include `start` and `end` values to read a range of bytes from + * the file instead of the entire file. Both `start` and `end` are inclusive and + * start counting at 0, allowed values are in the + * \[0, [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)\] range. If `fd` is specified and `start` is + * omitted or `undefined`, `fs.createReadStream()` reads sequentially from the + * current file position. The `encoding` can be any one of those accepted by `Buffer`. + * + * If `fd` is specified, `ReadStream` will ignore the `path` argument and will use + * the specified file descriptor. This means that no `'open'` event will be + * emitted. `fd` should be blocking; non-blocking `fd`s should be passed to `net.Socket`. + * + * If `fd` points to a character device that only supports blocking reads + * (such as keyboard or sound card), read operations do not finish until data is + * available. This can prevent the process from exiting and the stream from + * closing naturally. + * + * By default, the stream will emit a `'close'` event after it has been + * destroyed. Set the `emitClose` option to `false` to change this behavior. + * + * By providing the `fs` option, it is possible to override the corresponding `fs`implementations for `open`, `read`, and `close`. When providing the `fs` option, + * an override for `read` is required. If no `fd` is provided, an override for`open` is also required. If `autoClose` is `true`, an override for `close` is + * also required. + * + * ```js + * import { createReadStream } from 'node:fs'; + * + * // Create a stream from some character device. + * const stream = createReadStream('/dev/input/event0'); + * setTimeout(() => { + * stream.close(); // This may not close the stream. + * // Artificially marking end-of-stream, as if the underlying resource had + * // indicated end-of-file by itself, allows the stream to close. + * // This does not cancel pending read operations, and if there is such an + * // operation, the process may still not be able to exit successfully + * // until it finishes. + * stream.push(null); + * stream.read(0); + * }, 100); + * ``` + * + * If `autoClose` is false, then the file descriptor won't be closed, even if + * there's an error. It is the application's responsibility to close it and make + * sure there's no file descriptor leak. If `autoClose` is set to true (default + * behavior), on `'error'` or `'end'` the file descriptor will be closed + * automatically. + * + * `mode` sets the file mode (permission and sticky bits), but only if the + * file was created. + * + * An example to read the last 10 bytes of a file which is 100 bytes long: + * + * ```js + * import { createReadStream } from 'node:fs'; + * + * createReadStream('sample.txt', { start: 90, end: 99 }); + * ``` + * + * If `options` is a string, then it specifies the encoding. + * @since v0.1.31 + */ + export function createReadStream(path: PathLike, options?: BufferEncoding | ReadStreamOptions): ReadStream; + /** + * `options` may also include a `start` option to allow writing data at some + * position past the beginning of the file, allowed values are in the + * \[0, [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)\] range. Modifying a file rather than + * replacing it may require the `flags` option to be set to `r+` rather than the + * default `w`. The `encoding` can be any one of those accepted by `Buffer`. + * + * If `autoClose` is set to true (default behavior) on `'error'` or `'finish'`the file descriptor will be closed automatically. If `autoClose` is false, + * then the file descriptor won't be closed, even if there's an error. + * It is the application's responsibility to close it and make sure there's no + * file descriptor leak. + * + * By default, the stream will emit a `'close'` event after it has been + * destroyed. Set the `emitClose` option to `false` to change this behavior. + * + * By providing the `fs` option it is possible to override the corresponding `fs`implementations for `open`, `write`, `writev`, and `close`. Overriding `write()`without `writev()` can reduce + * performance as some optimizations (`_writev()`) + * will be disabled. When providing the `fs` option, overrides for at least one of`write` and `writev` are required. If no `fd` option is supplied, an override + * for `open` is also required. If `autoClose` is `true`, an override for `close`is also required. + * + * Like `fs.ReadStream`, if `fd` is specified, `fs.WriteStream` will ignore the`path` argument and will use the specified file descriptor. This means that no`'open'` event will be + * emitted. `fd` should be blocking; non-blocking `fd`s + * should be passed to `net.Socket`. + * + * If `options` is a string, then it specifies the encoding. + * @since v0.1.31 + */ + export function createWriteStream(path: PathLike, options?: BufferEncoding | WriteStreamOptions): WriteStream; + /** + * Forces all currently queued I/O operations associated with the file to the + * operating system's synchronized I/O completion state. Refer to the POSIX [`fdatasync(2)`](http://man7.org/linux/man-pages/man2/fdatasync.2.html) documentation for details. No arguments other + * than a possible + * exception are given to the completion callback. + * @since v0.1.96 + */ + export function fdatasync(fd: number, callback: NoParamCallback): void; + export namespace fdatasync { + /** + * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device. + * @param fd A file descriptor. + */ + function __promisify__(fd: number): Promise; + } + /** + * Forces all currently queued I/O operations associated with the file to the + * operating system's synchronized I/O completion state. Refer to the POSIX [`fdatasync(2)`](http://man7.org/linux/man-pages/man2/fdatasync.2.html) documentation for details. Returns `undefined`. + * @since v0.1.96 + */ + export function fdatasyncSync(fd: number): void; + /** + * Asynchronously copies `src` to `dest`. By default, `dest` is overwritten if it + * already exists. No arguments other than a possible exception are given to the + * callback function. Node.js makes no guarantees about the atomicity of the copy + * operation. If an error occurs after the destination file has been opened for + * writing, Node.js will attempt to remove the destination. + * + * `mode` is an optional integer that specifies the behavior + * of the copy operation. It is possible to create a mask consisting of the bitwise + * OR of two or more values (e.g.`fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE`). + * + * * `fs.constants.COPYFILE_EXCL`: The copy operation will fail if `dest` already + * exists. + * * `fs.constants.COPYFILE_FICLONE`: The copy operation will attempt to create a + * copy-on-write reflink. If the platform does not support copy-on-write, then a + * fallback copy mechanism is used. + * * `fs.constants.COPYFILE_FICLONE_FORCE`: The copy operation will attempt to + * create a copy-on-write reflink. If the platform does not support + * copy-on-write, then the operation will fail. + * + * ```js + * import { copyFile, constants } from 'node:fs'; + * + * function callback(err) { + * if (err) throw err; + * console.log('source.txt was copied to destination.txt'); + * } + * + * // destination.txt will be created or overwritten by default. + * copyFile('source.txt', 'destination.txt', callback); + * + * // By using COPYFILE_EXCL, the operation will fail if destination.txt exists. + * copyFile('source.txt', 'destination.txt', constants.COPYFILE_EXCL, callback); + * ``` + * @since v8.5.0 + * @param src source filename to copy + * @param dest destination filename of the copy operation + * @param [mode=0] modifiers for copy operation. + */ + export function copyFile(src: PathLike, dest: PathLike, callback: NoParamCallback): void; + export function copyFile(src: PathLike, dest: PathLike, mode: number, callback: NoParamCallback): void; + export namespace copyFile { + function __promisify__(src: PathLike, dst: PathLike, mode?: number): Promise; + } + /** + * Synchronously copies `src` to `dest`. By default, `dest` is overwritten if it + * already exists. Returns `undefined`. Node.js makes no guarantees about the + * atomicity of the copy operation. If an error occurs after the destination file + * has been opened for writing, Node.js will attempt to remove the destination. + * + * `mode` is an optional integer that specifies the behavior + * of the copy operation. It is possible to create a mask consisting of the bitwise + * OR of two or more values (e.g.`fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE`). + * + * * `fs.constants.COPYFILE_EXCL`: The copy operation will fail if `dest` already + * exists. + * * `fs.constants.COPYFILE_FICLONE`: The copy operation will attempt to create a + * copy-on-write reflink. If the platform does not support copy-on-write, then a + * fallback copy mechanism is used. + * * `fs.constants.COPYFILE_FICLONE_FORCE`: The copy operation will attempt to + * create a copy-on-write reflink. If the platform does not support + * copy-on-write, then the operation will fail. + * + * ```js + * import { copyFileSync, constants } from 'node:fs'; + * + * // destination.txt will be created or overwritten by default. + * copyFileSync('source.txt', 'destination.txt'); + * console.log('source.txt was copied to destination.txt'); + * + * // By using COPYFILE_EXCL, the operation will fail if destination.txt exists. + * copyFileSync('source.txt', 'destination.txt', constants.COPYFILE_EXCL); + * ``` + * @since v8.5.0 + * @param src source filename to copy + * @param dest destination filename of the copy operation + * @param [mode=0] modifiers for copy operation. + */ + export function copyFileSync(src: PathLike, dest: PathLike, mode?: number): void; + /** + * Write an array of `ArrayBufferView`s to the file specified by `fd` using`writev()`. + * + * `position` is the offset from the beginning of the file where this data + * should be written. If `typeof position !== 'number'`, the data will be written + * at the current position. + * + * The callback will be given three arguments: `err`, `bytesWritten`, and`buffers`. `bytesWritten` is how many bytes were written from `buffers`. + * + * If this method is `util.promisify()` ed, it returns a promise for an`Object` with `bytesWritten` and `buffers` properties. + * + * It is unsafe to use `fs.writev()` multiple times on the same file without + * waiting for the callback. For this scenario, use {@link createWriteStream}. + * + * On Linux, positional writes don't work when the file is opened in append mode. + * The kernel ignores the position argument and always appends the data to + * the end of the file. + * @since v12.9.0 + * @param [position='null'] + */ + export function writev( + fd: number, + buffers: ReadonlyArray, + cb: (err: NodeJS.ErrnoException | null, bytesWritten: number, buffers: NodeJS.ArrayBufferView[]) => void, + ): void; + export function writev( + fd: number, + buffers: ReadonlyArray, + position: number, + cb: (err: NodeJS.ErrnoException | null, bytesWritten: number, buffers: NodeJS.ArrayBufferView[]) => void, + ): void; + export interface WriteVResult { + bytesWritten: number; + buffers: NodeJS.ArrayBufferView[]; + } + export namespace writev { + function __promisify__( + fd: number, + buffers: ReadonlyArray, + position?: number, + ): Promise; + } + /** + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link writev}. + * @since v12.9.0 + * @param [position='null'] + * @return The number of bytes written. + */ + export function writevSync(fd: number, buffers: ReadonlyArray, position?: number): number; + /** + * Read from a file specified by `fd` and write to an array of `ArrayBufferView`s + * using `readv()`. + * + * `position` is the offset from the beginning of the file from where data + * should be read. If `typeof position !== 'number'`, the data will be read + * from the current position. + * + * The callback will be given three arguments: `err`, `bytesRead`, and`buffers`. `bytesRead` is how many bytes were read from the file. + * + * If this method is invoked as its `util.promisify()` ed version, it returns + * a promise for an `Object` with `bytesRead` and `buffers` properties. + * @since v13.13.0, v12.17.0 + * @param [position='null'] + */ + export function readv( + fd: number, + buffers: ReadonlyArray, + cb: (err: NodeJS.ErrnoException | null, bytesRead: number, buffers: NodeJS.ArrayBufferView[]) => void, + ): void; + export function readv( + fd: number, + buffers: ReadonlyArray, + position: number, + cb: (err: NodeJS.ErrnoException | null, bytesRead: number, buffers: NodeJS.ArrayBufferView[]) => void, + ): void; + export interface ReadVResult { + bytesRead: number; + buffers: NodeJS.ArrayBufferView[]; + } + export namespace readv { + function __promisify__( + fd: number, + buffers: ReadonlyArray, + position?: number, + ): Promise; + } + /** + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link readv}. + * @since v13.13.0, v12.17.0 + * @param [position='null'] + * @return The number of bytes read. + */ + export function readvSync(fd: number, buffers: ReadonlyArray, position?: number): number; + + export interface OpenAsBlobOptions { + /** + * An optional mime type for the blob. + * + * @default 'undefined' + */ + type?: string | undefined; + } + + /** + * Returns a `Blob` whose data is backed by the given file. + * + * The file must not be modified after the `Blob` is created. Any modifications + * will cause reading the `Blob` data to fail with a `DOMException` error. + * Synchronous stat operations on the file when the `Blob` is created, and before + * each read in order to detect whether the file data has been modified on disk. + * + * ```js + * import { openAsBlob } from 'node:fs'; + * + * const blob = await openAsBlob('the.file.txt'); + * const ab = await blob.arrayBuffer(); + * blob.stream(); + * ``` + * @since v19.8.0 + * @experimental + */ + export function openAsBlob(path: PathLike, options?: OpenAsBlobOptions): Promise; + + export interface OpenDirOptions { + /** + * @default 'utf8' + */ + encoding?: BufferEncoding | undefined; + /** + * Number of directory entries that are buffered + * internally when reading from the directory. Higher values lead to better + * performance but higher memory usage. + * @default 32 + */ + bufferSize?: number | undefined; + /** + * @default false + */ + recursive?: boolean; + } + /** + * Synchronously open a directory. See [`opendir(3)`](http://man7.org/linux/man-pages/man3/opendir.3.html). + * + * Creates an `fs.Dir`, which contains all further functions for reading from + * and cleaning up the directory. + * + * The `encoding` option sets the encoding for the `path` while opening the + * directory and subsequent read operations. + * @since v12.12.0 + */ + export function opendirSync(path: PathLike, options?: OpenDirOptions): Dir; + /** + * Asynchronously open a directory. See the POSIX [`opendir(3)`](http://man7.org/linux/man-pages/man3/opendir.3.html) documentation for + * more details. + * + * Creates an `fs.Dir`, which contains all further functions for reading from + * and cleaning up the directory. + * + * The `encoding` option sets the encoding for the `path` while opening the + * directory and subsequent read operations. + * @since v12.12.0 + */ + export function opendir(path: PathLike, cb: (err: NodeJS.ErrnoException | null, dir: Dir) => void): void; + export function opendir( + path: PathLike, + options: OpenDirOptions, + cb: (err: NodeJS.ErrnoException | null, dir: Dir) => void, + ): void; + export namespace opendir { + function __promisify__(path: PathLike, options?: OpenDirOptions): Promise; + } + export interface BigIntStats extends StatsBase { + atimeNs: bigint; + mtimeNs: bigint; + ctimeNs: bigint; + birthtimeNs: bigint; + } + export interface BigIntOptions { + bigint: true; + } + export interface StatOptions { + bigint?: boolean | undefined; + } + export interface StatSyncOptions extends StatOptions { + throwIfNoEntry?: boolean | undefined; + } + interface CopyOptionsBase { + /** + * Dereference symlinks + * @default false + */ + dereference?: boolean; + /** + * When `force` is `false`, and the destination + * exists, throw an error. + * @default false + */ + errorOnExist?: boolean; + /** + * Overwrite existing file or directory. _The copy + * operation will ignore errors if you set this to false and the destination + * exists. Use the `errorOnExist` option to change this behavior. + * @default true + */ + force?: boolean; + /** + * Modifiers for copy operation. See `mode` flag of {@link copyFileSync()} + */ + mode?: number; + /** + * When `true` timestamps from `src` will + * be preserved. + * @default false + */ + preserveTimestamps?: boolean; + /** + * Copy directories recursively. + * @default false + */ + recursive?: boolean; + /** + * When true, path resolution for symlinks will be skipped + * @default false + */ + verbatimSymlinks?: boolean; + } + export interface CopyOptions extends CopyOptionsBase { + /** + * Function to filter copied files/directories. Return + * `true` to copy the item, `false` to ignore it. + */ + filter?(source: string, destination: string): boolean | Promise; + } + export interface CopySyncOptions extends CopyOptionsBase { + /** + * Function to filter copied files/directories. Return + * `true` to copy the item, `false` to ignore it. + */ + filter?(source: string, destination: string): boolean; + } + /** + * Asynchronously copies the entire directory structure from `src` to `dest`, + * including subdirectories and files. + * + * When copying a directory to another directory, globs are not supported and + * behavior is similar to `cp dir1/ dir2/`. + * @since v16.7.0 + * @experimental + * @param src source path to copy. + * @param dest destination path to copy to. + */ + export function cp( + source: string | URL, + destination: string | URL, + callback: (err: NodeJS.ErrnoException | null) => void, + ): void; + export function cp( + source: string | URL, + destination: string | URL, + opts: CopyOptions, + callback: (err: NodeJS.ErrnoException | null) => void, + ): void; + /** + * Synchronously copies the entire directory structure from `src` to `dest`, + * including subdirectories and files. + * + * When copying a directory to another directory, globs are not supported and + * behavior is similar to `cp dir1/ dir2/`. + * @since v16.7.0 + * @experimental + * @param src source path to copy. + * @param dest destination path to copy to. + */ + export function cpSync(source: string | URL, destination: string | URL, opts?: CopySyncOptions): void; +} +declare module "node:fs" { + export * from "fs"; +} diff --git a/node_modules/@types/node/fs/promises.d.ts b/node_modules/@types/node/fs/promises.d.ts new file mode 100644 index 00000000..084ee6ef --- /dev/null +++ b/node_modules/@types/node/fs/promises.d.ts @@ -0,0 +1,1232 @@ +/** + * The `fs/promises` API provides asynchronous file system methods that return + * promises. + * + * The promise APIs use the underlying Node.js threadpool to perform file + * system operations off the event loop thread. These operations are not + * synchronized or threadsafe. Care must be taken when performing multiple + * concurrent modifications on the same file or data corruption may occur. + * @since v10.0.0 + */ +declare module "fs/promises" { + import { Abortable } from "node:events"; + import { Stream } from "node:stream"; + import { ReadableStream } from "node:stream/web"; + import { + BigIntStats, + BigIntStatsFs, + BufferEncodingOption, + constants as fsConstants, + CopyOptions, + Dir, + Dirent, + MakeDirectoryOptions, + Mode, + ObjectEncodingOptions, + OpenDirOptions, + OpenMode, + PathLike, + ReadStream, + ReadVResult, + RmDirOptions, + RmOptions, + StatFsOptions, + StatOptions, + Stats, + StatsFs, + TimeLike, + WatchEventType, + WatchOptions, + WriteStream, + WriteVResult, + } from "node:fs"; + import { Interface as ReadlineInterface } from "node:readline"; + interface FileChangeInfo { + eventType: WatchEventType; + filename: T | null; + } + interface FlagAndOpenMode { + mode?: Mode | undefined; + flag?: OpenMode | undefined; + } + interface FileReadResult { + bytesRead: number; + buffer: T; + } + interface FileReadOptions { + /** + * @default `Buffer.alloc(0xffff)` + */ + buffer?: T; + /** + * @default 0 + */ + offset?: number | null; + /** + * @default `buffer.byteLength` + */ + length?: number | null; + position?: number | null; + } + interface CreateReadStreamOptions { + encoding?: BufferEncoding | null | undefined; + autoClose?: boolean | undefined; + emitClose?: boolean | undefined; + start?: number | undefined; + end?: number | undefined; + highWaterMark?: number | undefined; + } + interface CreateWriteStreamOptions { + encoding?: BufferEncoding | null | undefined; + autoClose?: boolean | undefined; + emitClose?: boolean | undefined; + start?: number | undefined; + highWaterMark?: number | undefined; + } + interface ReadableWebStreamOptions { + /** + * Whether to open a normal or a `'bytes'` stream. + * @since v20.0.0 + */ + type?: "bytes" | undefined; + } + // TODO: Add `EventEmitter` close + interface FileHandle { + /** + * The numeric file descriptor managed by the {FileHandle} object. + * @since v10.0.0 + */ + readonly fd: number; + /** + * Alias of `filehandle.writeFile()`. + * + * When operating on file handles, the mode cannot be changed from what it was set + * to with `fsPromises.open()`. Therefore, this is equivalent to `filehandle.writeFile()`. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + appendFile( + data: string | Uint8Array, + options?: (ObjectEncodingOptions & FlagAndOpenMode) | BufferEncoding | null, + ): Promise; + /** + * Changes the ownership of the file. A wrapper for [`chown(2)`](http://man7.org/linux/man-pages/man2/chown.2.html). + * @since v10.0.0 + * @param uid The file's new owner's user id. + * @param gid The file's new group's group id. + * @return Fulfills with `undefined` upon success. + */ + chown(uid: number, gid: number): Promise; + /** + * Modifies the permissions on the file. See [`chmod(2)`](http://man7.org/linux/man-pages/man2/chmod.2.html). + * @since v10.0.0 + * @param mode the file mode bit mask. + * @return Fulfills with `undefined` upon success. + */ + chmod(mode: Mode): Promise; + /** + * Unlike the 16 KiB default `highWaterMark` for a `stream.Readable`, the stream + * returned by this method has a default `highWaterMark` of 64 KiB. + * + * `options` can include `start` and `end` values to read a range of bytes from + * the file instead of the entire file. Both `start` and `end` are inclusive and + * start counting at 0, allowed values are in the + * \[0, [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)\] range. If `start` is + * omitted or `undefined`, `filehandle.createReadStream()` reads sequentially from + * the current file position. The `encoding` can be any one of those accepted by `Buffer`. + * + * If the `FileHandle` points to a character device that only supports blocking + * reads (such as keyboard or sound card), read operations do not finish until data + * is available. This can prevent the process from exiting and the stream from + * closing naturally. + * + * By default, the stream will emit a `'close'` event after it has been + * destroyed. Set the `emitClose` option to `false` to change this behavior. + * + * ```js + * import { open } from 'node:fs/promises'; + * + * const fd = await open('/dev/input/event0'); + * // Create a stream from some character device. + * const stream = fd.createReadStream(); + * setTimeout(() => { + * stream.close(); // This may not close the stream. + * // Artificially marking end-of-stream, as if the underlying resource had + * // indicated end-of-file by itself, allows the stream to close. + * // This does not cancel pending read operations, and if there is such an + * // operation, the process may still not be able to exit successfully + * // until it finishes. + * stream.push(null); + * stream.read(0); + * }, 100); + * ``` + * + * If `autoClose` is false, then the file descriptor won't be closed, even if + * there's an error. It is the application's responsibility to close it and make + * sure there's no file descriptor leak. If `autoClose` is set to true (default + * behavior), on `'error'` or `'end'` the file descriptor will be closed + * automatically. + * + * An example to read the last 10 bytes of a file which is 100 bytes long: + * + * ```js + * import { open } from 'node:fs/promises'; + * + * const fd = await open('sample.txt'); + * fd.createReadStream({ start: 90, end: 99 }); + * ``` + * @since v16.11.0 + */ + createReadStream(options?: CreateReadStreamOptions): ReadStream; + /** + * `options` may also include a `start` option to allow writing data at some + * position past the beginning of the file, allowed values are in the + * \[0, [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)\] range. Modifying a file rather than + * replacing it may require the `flags` `open` option to be set to `r+` rather than + * the default `r`. The `encoding` can be any one of those accepted by `Buffer`. + * + * If `autoClose` is set to true (default behavior) on `'error'` or `'finish'`the file descriptor will be closed automatically. If `autoClose` is false, + * then the file descriptor won't be closed, even if there's an error. + * It is the application's responsibility to close it and make sure there's no + * file descriptor leak. + * + * By default, the stream will emit a `'close'` event after it has been + * destroyed. Set the `emitClose` option to `false` to change this behavior. + * @since v16.11.0 + */ + createWriteStream(options?: CreateWriteStreamOptions): WriteStream; + /** + * Forces all currently queued I/O operations associated with the file to the + * operating system's synchronized I/O completion state. Refer to the POSIX [`fdatasync(2)`](http://man7.org/linux/man-pages/man2/fdatasync.2.html) documentation for details. + * + * Unlike `filehandle.sync` this method does not flush modified metadata. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + datasync(): Promise; + /** + * Request that all data for the open file descriptor is flushed to the storage + * device. The specific implementation is operating system and device specific. + * Refer to the POSIX [`fsync(2)`](http://man7.org/linux/man-pages/man2/fsync.2.html) documentation for more detail. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + sync(): Promise; + /** + * Reads data from the file and stores that in the given buffer. + * + * If the file is not modified concurrently, the end-of-file is reached when the + * number of bytes read is zero. + * @since v10.0.0 + * @param buffer A buffer that will be filled with the file data read. + * @param offset The location in the buffer at which to start filling. + * @param length The number of bytes to read. + * @param position The location where to begin reading data from the file. If `null`, data will be read from the current file position, and the position will be updated. If `position` is an + * integer, the current file position will remain unchanged. + * @return Fulfills upon success with an object with two properties: + */ + read( + buffer: T, + offset?: number | null, + length?: number | null, + position?: number | null, + ): Promise>; + read(options?: FileReadOptions): Promise>; + /** + * Returns a `ReadableStream` that may be used to read the files data. + * + * An error will be thrown if this method is called more than once or is called + * after the `FileHandle` is closed or closing. + * + * ```js + * import { + * open, + * } from 'node:fs/promises'; + * + * const file = await open('./some/file/to/read'); + * + * for await (const chunk of file.readableWebStream()) + * console.log(chunk); + * + * await file.close(); + * ``` + * + * While the `ReadableStream` will read the file to completion, it will not + * close the `FileHandle` automatically. User code must still call the`fileHandle.close()` method. + * @since v17.0.0 + * @experimental + */ + readableWebStream(options?: ReadableWebStreamOptions): ReadableStream; + /** + * Asynchronously reads the entire contents of a file. + * + * If `options` is a string, then it specifies the `encoding`. + * + * The `FileHandle` has to support reading. + * + * If one or more `filehandle.read()` calls are made on a file handle and then a`filehandle.readFile()` call is made, the data will be read from the current + * position till the end of the file. It doesn't always read from the beginning + * of the file. + * @since v10.0.0 + * @return Fulfills upon a successful read with the contents of the file. If no encoding is specified (using `options.encoding`), the data is returned as a {Buffer} object. Otherwise, the + * data will be a string. + */ + readFile( + options?: { + encoding?: null | undefined; + flag?: OpenMode | undefined; + } | null, + ): Promise; + /** + * Asynchronously reads the entire contents of a file. The underlying file will _not_ be closed automatically. + * The `FileHandle` must have been opened for reading. + * @param options An object that may contain an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + readFile( + options: + | { + encoding: BufferEncoding; + flag?: OpenMode | undefined; + } + | BufferEncoding, + ): Promise; + /** + * Asynchronously reads the entire contents of a file. The underlying file will _not_ be closed automatically. + * The `FileHandle` must have been opened for reading. + * @param options An object that may contain an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + readFile( + options?: + | (ObjectEncodingOptions & { + flag?: OpenMode | undefined; + }) + | BufferEncoding + | null, + ): Promise; + /** + * Convenience method to create a `readline` interface and stream over the file. + * See `filehandle.createReadStream()` for the options. + * + * ```js + * import { open } from 'node:fs/promises'; + * + * const file = await open('./some/file/to/read'); + * + * for await (const line of file.readLines()) { + * console.log(line); + * } + * ``` + * @since v18.11.0 + */ + readLines(options?: CreateReadStreamOptions): ReadlineInterface; + /** + * @since v10.0.0 + * @return Fulfills with an {fs.Stats} for the file. + */ + stat( + opts?: StatOptions & { + bigint?: false | undefined; + }, + ): Promise; + stat( + opts: StatOptions & { + bigint: true; + }, + ): Promise; + stat(opts?: StatOptions): Promise; + /** + * Truncates the file. + * + * If the file was larger than `len` bytes, only the first `len` bytes will be + * retained in the file. + * + * The following example retains only the first four bytes of the file: + * + * ```js + * import { open } from 'node:fs/promises'; + * + * let filehandle = null; + * try { + * filehandle = await open('temp.txt', 'r+'); + * await filehandle.truncate(4); + * } finally { + * await filehandle?.close(); + * } + * ``` + * + * If the file previously was shorter than `len` bytes, it is extended, and the + * extended part is filled with null bytes (`'\0'`): + * + * If `len` is negative then `0` will be used. + * @since v10.0.0 + * @param [len=0] + * @return Fulfills with `undefined` upon success. + */ + truncate(len?: number): Promise; + /** + * Change the file system timestamps of the object referenced by the `FileHandle` then resolves the promise with no arguments upon success. + * @since v10.0.0 + */ + utimes(atime: TimeLike, mtime: TimeLike): Promise; + /** + * Asynchronously writes data to a file, replacing the file if it already exists.`data` can be a string, a buffer, an + * [AsyncIterable](https://tc39.github.io/ecma262/#sec-asynciterable-interface), or an + * [Iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol) object. + * The promise is resolved with no arguments upon success. + * + * If `options` is a string, then it specifies the `encoding`. + * + * The `FileHandle` has to support writing. + * + * It is unsafe to use `filehandle.writeFile()` multiple times on the same file + * without waiting for the promise to be resolved (or rejected). + * + * If one or more `filehandle.write()` calls are made on a file handle and then a`filehandle.writeFile()` call is made, the data will be written from the + * current position till the end of the file. It doesn't always write from the + * beginning of the file. + * @since v10.0.0 + */ + writeFile( + data: string | Uint8Array, + options?: (ObjectEncodingOptions & FlagAndOpenMode & Abortable) | BufferEncoding | null, + ): Promise; + /** + * Write `buffer` to the file. + * + * The promise is resolved with an object containing two properties: + * + * It is unsafe to use `filehandle.write()` multiple times on the same file + * without waiting for the promise to be resolved (or rejected). For this + * scenario, use `filehandle.createWriteStream()`. + * + * On Linux, positional writes do not work when the file is opened in append mode. + * The kernel ignores the position argument and always appends the data to + * the end of the file. + * @since v10.0.0 + * @param offset The start position from within `buffer` where the data to write begins. + * @param [length=buffer.byteLength - offset] The number of bytes from `buffer` to write. + * @param [position='null'] The offset from the beginning of the file where the data from `buffer` should be written. If `position` is not a `number`, the data will be written at the current + * position. See the POSIX pwrite(2) documentation for more detail. + */ + write( + buffer: TBuffer, + offset?: number | null, + length?: number | null, + position?: number | null, + ): Promise<{ + bytesWritten: number; + buffer: TBuffer; + }>; + write( + data: string, + position?: number | null, + encoding?: BufferEncoding | null, + ): Promise<{ + bytesWritten: number; + buffer: string; + }>; + /** + * Write an array of [ArrayBufferView](https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView) s to the file. + * + * The promise is resolved with an object containing a two properties: + * + * It is unsafe to call `writev()` multiple times on the same file without waiting + * for the promise to be resolved (or rejected). + * + * On Linux, positional writes don't work when the file is opened in append mode. + * The kernel ignores the position argument and always appends the data to + * the end of the file. + * @since v12.9.0 + * @param [position='null'] The offset from the beginning of the file where the data from `buffers` should be written. If `position` is not a `number`, the data will be written at the current + * position. + */ + writev(buffers: ReadonlyArray, position?: number): Promise; + /** + * Read from a file and write to an array of [ArrayBufferView](https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView) s + * @since v13.13.0, v12.17.0 + * @param [position='null'] The offset from the beginning of the file where the data should be read from. If `position` is not a `number`, the data will be read from the current position. + * @return Fulfills upon success an object containing two properties: + */ + readv(buffers: ReadonlyArray, position?: number): Promise; + /** + * Closes the file handle after waiting for any pending operation on the handle to + * complete. + * + * ```js + * import { open } from 'node:fs/promises'; + * + * let filehandle; + * try { + * filehandle = await open('thefile.txt', 'r'); + * } finally { + * await filehandle?.close(); + * } + * ``` + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + close(): Promise; + /** + * An alias for {@link FileHandle.close()}. + * @since v20.4.0 + */ + [Symbol.asyncDispose](): Promise; + } + const constants: typeof fsConstants; + /** + * Tests a user's permissions for the file or directory specified by `path`. + * The `mode` argument is an optional integer that specifies the accessibility + * checks to be performed. `mode` should be either the value `fs.constants.F_OK`or a mask consisting of the bitwise OR of any of `fs.constants.R_OK`,`fs.constants.W_OK`, and `fs.constants.X_OK` + * (e.g.`fs.constants.W_OK | fs.constants.R_OK`). Check `File access constants` for + * possible values of `mode`. + * + * If the accessibility check is successful, the promise is resolved with no + * value. If any of the accessibility checks fail, the promise is rejected + * with an [Error](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) object. The following example checks if the file`/etc/passwd` can be read and + * written by the current process. + * + * ```js + * import { access, constants } from 'node:fs/promises'; + * + * try { + * await access('/etc/passwd', constants.R_OK | constants.W_OK); + * console.log('can access'); + * } catch { + * console.error('cannot access'); + * } + * ``` + * + * Using `fsPromises.access()` to check for the accessibility of a file before + * calling `fsPromises.open()` is not recommended. Doing so introduces a race + * condition, since other processes may change the file's state between the two + * calls. Instead, user code should open/read/write the file directly and handle + * the error raised if the file is not accessible. + * @since v10.0.0 + * @param [mode=fs.constants.F_OK] + * @return Fulfills with `undefined` upon success. + */ + function access(path: PathLike, mode?: number): Promise; + /** + * Asynchronously copies `src` to `dest`. By default, `dest` is overwritten if it + * already exists. + * + * No guarantees are made about the atomicity of the copy operation. If an + * error occurs after the destination file has been opened for writing, an attempt + * will be made to remove the destination. + * + * ```js + * import { copyFile, constants } from 'node:fs/promises'; + * + * try { + * await copyFile('source.txt', 'destination.txt'); + * console.log('source.txt was copied to destination.txt'); + * } catch { + * console.error('The file could not be copied'); + * } + * + * // By using COPYFILE_EXCL, the operation will fail if destination.txt exists. + * try { + * await copyFile('source.txt', 'destination.txt', constants.COPYFILE_EXCL); + * console.log('source.txt was copied to destination.txt'); + * } catch { + * console.error('The file could not be copied'); + * } + * ``` + * @since v10.0.0 + * @param src source filename to copy + * @param dest destination filename of the copy operation + * @param [mode=0] Optional modifiers that specify the behavior of the copy operation. It is possible to create a mask consisting of the bitwise OR of two or more values (e.g. + * `fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE`) + * @return Fulfills with `undefined` upon success. + */ + function copyFile(src: PathLike, dest: PathLike, mode?: number): Promise; + /** + * Opens a `FileHandle`. + * + * Refer to the POSIX [`open(2)`](http://man7.org/linux/man-pages/man2/open.2.html) documentation for more detail. + * + * Some characters (`< > : " / \ | ? *`) are reserved under Windows as documented + * by [Naming Files, Paths, and Namespaces](https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file). Under NTFS, if the filename contains + * a colon, Node.js will open a file system stream, as described by [this MSDN page](https://docs.microsoft.com/en-us/windows/desktop/FileIO/using-streams). + * @since v10.0.0 + * @param [flags='r'] See `support of file system `flags``. + * @param [mode=0o666] Sets the file mode (permission and sticky bits) if the file is created. + * @return Fulfills with a {FileHandle} object. + */ + function open(path: PathLike, flags?: string | number, mode?: Mode): Promise; + /** + * Renames `oldPath` to `newPath`. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function rename(oldPath: PathLike, newPath: PathLike): Promise; + /** + * Truncates (shortens or extends the length) of the content at `path` to `len`bytes. + * @since v10.0.0 + * @param [len=0] + * @return Fulfills with `undefined` upon success. + */ + function truncate(path: PathLike, len?: number): Promise; + /** + * Removes the directory identified by `path`. + * + * Using `fsPromises.rmdir()` on a file (not a directory) results in the + * promise being rejected with an `ENOENT` error on Windows and an `ENOTDIR`error on POSIX. + * + * To get a behavior similar to the `rm -rf` Unix command, use `fsPromises.rm()` with options `{ recursive: true, force: true }`. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function rmdir(path: PathLike, options?: RmDirOptions): Promise; + /** + * Removes files and directories (modeled on the standard POSIX `rm` utility). + * @since v14.14.0 + * @return Fulfills with `undefined` upon success. + */ + function rm(path: PathLike, options?: RmOptions): Promise; + /** + * Asynchronously creates a directory. + * + * The optional `options` argument can be an integer specifying `mode` (permission + * and sticky bits), or an object with a `mode` property and a `recursive`property indicating whether parent directories should be created. Calling`fsPromises.mkdir()` when `path` is a directory + * that exists results in a + * rejection only when `recursive` is false. + * + * ```js + * import { mkdir } from 'node:fs/promises'; + * + * try { + * const projectFolder = new URL('./test/project/', import.meta.url); + * const createDir = await mkdir(projectFolder, { recursive: true }); + * + * console.log(`created ${createDir}`); + * } catch (err) { + * console.error(err.message); + * } + * ``` + * @since v10.0.0 + * @return Upon success, fulfills with `undefined` if `recursive` is `false`, or the first directory path created if `recursive` is `true`. + */ + function mkdir( + path: PathLike, + options: MakeDirectoryOptions & { + recursive: true; + }, + ): Promise; + /** + * Asynchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + function mkdir( + path: PathLike, + options?: + | Mode + | (MakeDirectoryOptions & { + recursive?: false | undefined; + }) + | null, + ): Promise; + /** + * Asynchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + function mkdir(path: PathLike, options?: Mode | MakeDirectoryOptions | null): Promise; + /** + * Reads the contents of a directory. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the filenames. If the `encoding` is set to `'buffer'`, the filenames returned + * will be passed as `Buffer` objects. + * + * If `options.withFileTypes` is set to `true`, the resolved array will contain `fs.Dirent` objects. + * + * ```js + * import { readdir } from 'node:fs/promises'; + * + * try { + * const files = await readdir(path); + * for (const file of files) + * console.log(file); + * } catch (err) { + * console.error(err); + * } + * ``` + * @since v10.0.0 + * @return Fulfills with an array of the names of the files in the directory excluding `'.'` and `'..'`. + */ + function readdir( + path: PathLike, + options?: + | (ObjectEncodingOptions & { + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + }) + | BufferEncoding + | null, + ): Promise; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function readdir( + path: PathLike, + options: + | { + encoding: "buffer"; + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + } + | "buffer", + ): Promise; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function readdir( + path: PathLike, + options?: + | (ObjectEncodingOptions & { + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + }) + | BufferEncoding + | null, + ): Promise; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options If called with `withFileTypes: true` the result data will be an array of Dirent. + */ + function readdir( + path: PathLike, + options: ObjectEncodingOptions & { + withFileTypes: true; + recursive?: boolean | undefined; + }, + ): Promise; + /** + * Reads the contents of the symbolic link referred to by `path`. See the POSIX [`readlink(2)`](http://man7.org/linux/man-pages/man2/readlink.2.html) documentation for more detail. The promise is + * resolved with the`linkString` upon success. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the link path returned. If the `encoding` is set to `'buffer'`, the link path + * returned will be passed as a `Buffer` object. + * @since v10.0.0 + * @return Fulfills with the `linkString` upon success. + */ + function readlink(path: PathLike, options?: ObjectEncodingOptions | BufferEncoding | null): Promise; + /** + * Asynchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function readlink(path: PathLike, options: BufferEncodingOption): Promise; + /** + * Asynchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function readlink(path: PathLike, options?: ObjectEncodingOptions | string | null): Promise; + /** + * Creates a symbolic link. + * + * The `type` argument is only used on Windows platforms and can be one of `'dir'`,`'file'`, or `'junction'`. If the `type` argument is not a string, Node.js will + * autodetect `target` type and use `'file'` or `'dir'`. If the `target` does not + * exist, `'file'` will be used. Windows junction points require the destination + * path to be absolute. When using `'junction'`, the `target` argument will + * automatically be normalized to absolute path. Junction points on NTFS volumes + * can only point to directories. + * @since v10.0.0 + * @param [type='null'] + * @return Fulfills with `undefined` upon success. + */ + function symlink(target: PathLike, path: PathLike, type?: string | null): Promise; + /** + * Equivalent to `fsPromises.stat()` unless `path` refers to a symbolic link, + * in which case the link itself is stat-ed, not the file that it refers to. + * Refer to the POSIX [`lstat(2)`](http://man7.org/linux/man-pages/man2/lstat.2.html) document for more detail. + * @since v10.0.0 + * @return Fulfills with the {fs.Stats} object for the given symbolic link `path`. + */ + function lstat( + path: PathLike, + opts?: StatOptions & { + bigint?: false | undefined; + }, + ): Promise; + function lstat( + path: PathLike, + opts: StatOptions & { + bigint: true; + }, + ): Promise; + function lstat(path: PathLike, opts?: StatOptions): Promise; + /** + * @since v10.0.0 + * @return Fulfills with the {fs.Stats} object for the given `path`. + */ + function stat( + path: PathLike, + opts?: StatOptions & { + bigint?: false | undefined; + }, + ): Promise; + function stat( + path: PathLike, + opts: StatOptions & { + bigint: true; + }, + ): Promise; + function stat(path: PathLike, opts?: StatOptions): Promise; + /** + * @since v19.6.0, v18.15.0 + * @return Fulfills with the {fs.StatFs} object for the given `path`. + */ + function statfs( + path: PathLike, + opts?: StatFsOptions & { + bigint?: false | undefined; + }, + ): Promise; + function statfs( + path: PathLike, + opts: StatFsOptions & { + bigint: true; + }, + ): Promise; + function statfs(path: PathLike, opts?: StatFsOptions): Promise; + /** + * Creates a new link from the `existingPath` to the `newPath`. See the POSIX [`link(2)`](http://man7.org/linux/man-pages/man2/link.2.html) documentation for more detail. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function link(existingPath: PathLike, newPath: PathLike): Promise; + /** + * If `path` refers to a symbolic link, then the link is removed without affecting + * the file or directory to which that link refers. If the `path` refers to a file + * path that is not a symbolic link, the file is deleted. See the POSIX [`unlink(2)`](http://man7.org/linux/man-pages/man2/unlink.2.html) documentation for more detail. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function unlink(path: PathLike): Promise; + /** + * Changes the permissions of a file. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function chmod(path: PathLike, mode: Mode): Promise; + /** + * Changes the permissions on a symbolic link. + * + * This method is only implemented on macOS. + * @deprecated Since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function lchmod(path: PathLike, mode: Mode): Promise; + /** + * Changes the ownership on a symbolic link. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function lchown(path: PathLike, uid: number, gid: number): Promise; + /** + * Changes the access and modification times of a file in the same way as `fsPromises.utimes()`, with the difference that if the path refers to a + * symbolic link, then the link is not dereferenced: instead, the timestamps of + * the symbolic link itself are changed. + * @since v14.5.0, v12.19.0 + * @return Fulfills with `undefined` upon success. + */ + function lutimes(path: PathLike, atime: TimeLike, mtime: TimeLike): Promise; + /** + * Changes the ownership of a file. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function chown(path: PathLike, uid: number, gid: number): Promise; + /** + * Change the file system timestamps of the object referenced by `path`. + * + * The `atime` and `mtime` arguments follow these rules: + * + * * Values can be either numbers representing Unix epoch time, `Date`s, or a + * numeric string like `'123456789.0'`. + * * If the value can not be converted to a number, or is `NaN`, `Infinity`, or`-Infinity`, an `Error` will be thrown. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function utimes(path: PathLike, atime: TimeLike, mtime: TimeLike): Promise; + /** + * Determines the actual location of `path` using the same semantics as the`fs.realpath.native()` function. + * + * Only paths that can be converted to UTF8 strings are supported. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the path. If the `encoding` is set to `'buffer'`, the path returned will be + * passed as a `Buffer` object. + * + * On Linux, when Node.js is linked against musl libc, the procfs file system must + * be mounted on `/proc` in order for this function to work. Glibc does not have + * this restriction. + * @since v10.0.0 + * @return Fulfills with the resolved path upon success. + */ + function realpath(path: PathLike, options?: ObjectEncodingOptions | BufferEncoding | null): Promise; + /** + * Asynchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function realpath(path: PathLike, options: BufferEncodingOption): Promise; + /** + * Asynchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function realpath( + path: PathLike, + options?: ObjectEncodingOptions | BufferEncoding | null, + ): Promise; + /** + * Creates a unique temporary directory. A unique directory name is generated by + * appending six random characters to the end of the provided `prefix`. Due to + * platform inconsistencies, avoid trailing `X` characters in `prefix`. Some + * platforms, notably the BSDs, can return more than six random characters, and + * replace trailing `X` characters in `prefix` with random characters. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use. + * + * ```js + * import { mkdtemp } from 'node:fs/promises'; + * import { join } from 'node:path'; + * import { tmpdir } from 'node:os'; + * + * try { + * await mkdtemp(join(tmpdir(), 'foo-')); + * } catch (err) { + * console.error(err); + * } + * ``` + * + * The `fsPromises.mkdtemp()` method will append the six randomly selected + * characters directly to the `prefix` string. For instance, given a directory`/tmp`, if the intention is to create a temporary directory _within_`/tmp`, the`prefix` must end with a trailing + * platform-specific path separator + * (`require('node:path').sep`). + * @since v10.0.0 + * @return Fulfills with a string containing the file system path of the newly created temporary directory. + */ + function mkdtemp(prefix: string, options?: ObjectEncodingOptions | BufferEncoding | null): Promise; + /** + * Asynchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function mkdtemp(prefix: string, options: BufferEncodingOption): Promise; + /** + * Asynchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function mkdtemp(prefix: string, options?: ObjectEncodingOptions | BufferEncoding | null): Promise; + /** + * Asynchronously writes data to a file, replacing the file if it already exists.`data` can be a string, a buffer, an + * [AsyncIterable](https://tc39.github.io/ecma262/#sec-asynciterable-interface), or an + * [Iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol) object. + * + * The `encoding` option is ignored if `data` is a buffer. + * + * If `options` is a string, then it specifies the encoding. + * + * The `mode` option only affects the newly created file. See `fs.open()` for more details. + * + * Any specified `FileHandle` has to support writing. + * + * It is unsafe to use `fsPromises.writeFile()` multiple times on the same file + * without waiting for the promise to be settled. + * + * Similarly to `fsPromises.readFile` \- `fsPromises.writeFile` is a convenience + * method that performs multiple `write` calls internally to write the buffer + * passed to it. For performance sensitive code consider using `fs.createWriteStream()` or `filehandle.createWriteStream()`. + * + * It is possible to use an `AbortSignal` to cancel an `fsPromises.writeFile()`. + * Cancelation is "best effort", and some amount of data is likely still + * to be written. + * + * ```js + * import { writeFile } from 'node:fs/promises'; + * import { Buffer } from 'node:buffer'; + * + * try { + * const controller = new AbortController(); + * const { signal } = controller; + * const data = new Uint8Array(Buffer.from('Hello Node.js')); + * const promise = writeFile('message.txt', data, { signal }); + * + * // Abort the request before the promise settles. + * controller.abort(); + * + * await promise; + * } catch (err) { + * // When a request is aborted - err is an AbortError + * console.error(err); + * } + * ``` + * + * Aborting an ongoing request does not abort individual operating + * system requests but rather the internal buffering `fs.writeFile` performs. + * @since v10.0.0 + * @param file filename or `FileHandle` + * @return Fulfills with `undefined` upon success. + */ + function writeFile( + file: PathLike | FileHandle, + data: + | string + | NodeJS.ArrayBufferView + | Iterable + | AsyncIterable + | Stream, + options?: + | (ObjectEncodingOptions & { + mode?: Mode | undefined; + flag?: OpenMode | undefined; + } & Abortable) + | BufferEncoding + | null, + ): Promise; + /** + * Asynchronously append data to a file, creating the file if it does not yet + * exist. `data` can be a string or a `Buffer`. + * + * If `options` is a string, then it specifies the `encoding`. + * + * The `mode` option only affects the newly created file. See `fs.open()` for more details. + * + * The `path` may be specified as a `FileHandle` that has been opened + * for appending (using `fsPromises.open()`). + * @since v10.0.0 + * @param path filename or {FileHandle} + * @return Fulfills with `undefined` upon success. + */ + function appendFile( + path: PathLike | FileHandle, + data: string | Uint8Array, + options?: (ObjectEncodingOptions & FlagAndOpenMode) | BufferEncoding | null, + ): Promise; + /** + * Asynchronously reads the entire contents of a file. + * + * If no encoding is specified (using `options.encoding`), the data is returned + * as a `Buffer` object. Otherwise, the data will be a string. + * + * If `options` is a string, then it specifies the encoding. + * + * When the `path` is a directory, the behavior of `fsPromises.readFile()` is + * platform-specific. On macOS, Linux, and Windows, the promise will be rejected + * with an error. On FreeBSD, a representation of the directory's contents will be + * returned. + * + * An example of reading a `package.json` file located in the same directory of the + * running code: + * + * ```js + * import { readFile } from 'node:fs/promises'; + * try { + * const filePath = new URL('./package.json', import.meta.url); + * const contents = await readFile(filePath, { encoding: 'utf8' }); + * console.log(contents); + * } catch (err) { + * console.error(err.message); + * } + * ``` + * + * It is possible to abort an ongoing `readFile` using an `AbortSignal`. If a + * request is aborted the promise returned is rejected with an `AbortError`: + * + * ```js + * import { readFile } from 'node:fs/promises'; + * + * try { + * const controller = new AbortController(); + * const { signal } = controller; + * const promise = readFile(fileName, { signal }); + * + * // Abort the request before the promise settles. + * controller.abort(); + * + * await promise; + * } catch (err) { + * // When a request is aborted - err is an AbortError + * console.error(err); + * } + * ``` + * + * Aborting an ongoing request does not abort individual operating + * system requests but rather the internal buffering `fs.readFile` performs. + * + * Any specified `FileHandle` has to support reading. + * @since v10.0.0 + * @param path filename or `FileHandle` + * @return Fulfills with the contents of the file. + */ + function readFile( + path: PathLike | FileHandle, + options?: + | ({ + encoding?: null | undefined; + flag?: OpenMode | undefined; + } & Abortable) + | null, + ): Promise; + /** + * Asynchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically. + * @param options An object that may contain an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + function readFile( + path: PathLike | FileHandle, + options: + | ({ + encoding: BufferEncoding; + flag?: OpenMode | undefined; + } & Abortable) + | BufferEncoding, + ): Promise; + /** + * Asynchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically. + * @param options An object that may contain an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + function readFile( + path: PathLike | FileHandle, + options?: + | ( + & ObjectEncodingOptions + & Abortable + & { + flag?: OpenMode | undefined; + } + ) + | BufferEncoding + | null, + ): Promise; + /** + * Asynchronously open a directory for iterative scanning. See the POSIX [`opendir(3)`](http://man7.org/linux/man-pages/man3/opendir.3.html) documentation for more detail. + * + * Creates an `fs.Dir`, which contains all further functions for reading from + * and cleaning up the directory. + * + * The `encoding` option sets the encoding for the `path` while opening the + * directory and subsequent read operations. + * + * Example using async iteration: + * + * ```js + * import { opendir } from 'node:fs/promises'; + * + * try { + * const dir = await opendir('./'); + * for await (const dirent of dir) + * console.log(dirent.name); + * } catch (err) { + * console.error(err); + * } + * ``` + * + * When using the async iterator, the `fs.Dir` object will be automatically + * closed after the iterator exits. + * @since v12.12.0 + * @return Fulfills with an {fs.Dir}. + */ + function opendir(path: PathLike, options?: OpenDirOptions): Promise; + /** + * Returns an async iterator that watches for changes on `filename`, where `filename`is either a file or a directory. + * + * ```js + * const { watch } = require('node:fs/promises'); + * + * const ac = new AbortController(); + * const { signal } = ac; + * setTimeout(() => ac.abort(), 10000); + * + * (async () => { + * try { + * const watcher = watch(__filename, { signal }); + * for await (const event of watcher) + * console.log(event); + * } catch (err) { + * if (err.name === 'AbortError') + * return; + * throw err; + * } + * })(); + * ``` + * + * On most platforms, `'rename'` is emitted whenever a filename appears or + * disappears in the directory. + * + * All the `caveats` for `fs.watch()` also apply to `fsPromises.watch()`. + * @since v15.9.0, v14.18.0 + * @return of objects with the properties: + */ + function watch( + filename: PathLike, + options: + | (WatchOptions & { + encoding: "buffer"; + }) + | "buffer", + ): AsyncIterable>; + /** + * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. + * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. + * If `encoding` is not supplied, the default of `'utf8'` is used. + * If `persistent` is not supplied, the default of `true` is used. + * If `recursive` is not supplied, the default of `false` is used. + */ + function watch(filename: PathLike, options?: WatchOptions | BufferEncoding): AsyncIterable>; + /** + * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. + * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. + * If `encoding` is not supplied, the default of `'utf8'` is used. + * If `persistent` is not supplied, the default of `true` is used. + * If `recursive` is not supplied, the default of `false` is used. + */ + function watch( + filename: PathLike, + options: WatchOptions | string, + ): AsyncIterable> | AsyncIterable>; + /** + * Asynchronously copies the entire directory structure from `src` to `dest`, + * including subdirectories and files. + * + * When copying a directory to another directory, globs are not supported and + * behavior is similar to `cp dir1/ dir2/`. + * @since v16.7.0 + * @experimental + * @param src source path to copy. + * @param dest destination path to copy to. + * @return Fulfills with `undefined` upon success. + */ + function cp(source: string | URL, destination: string | URL, opts?: CopyOptions): Promise; +} +declare module "node:fs/promises" { + export * from "fs/promises"; +} diff --git a/node_modules/@types/node/globals.d.ts b/node_modules/@types/node/globals.d.ts new file mode 100644 index 00000000..3a449e4c --- /dev/null +++ b/node_modules/@types/node/globals.d.ts @@ -0,0 +1,381 @@ +// Declare "static" methods in Error +interface ErrorConstructor { + /** Create .stack property on a target object */ + captureStackTrace(targetObject: object, constructorOpt?: Function): void; + + /** + * Optional override for formatting stack traces + * + * @see https://v8.dev/docs/stack-trace-api#customizing-stack-traces + */ + prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined; + + stackTraceLimit: number; +} + +/*-----------------------------------------------* + * * + * GLOBAL * + * * + ------------------------------------------------*/ + +// For backwards compability +interface NodeRequire extends NodeJS.Require {} +interface RequireResolve extends NodeJS.RequireResolve {} +interface NodeModule extends NodeJS.Module {} + +declare var process: NodeJS.Process; +declare var console: Console; + +declare var __filename: string; +declare var __dirname: string; + +declare var require: NodeRequire; +declare var module: NodeModule; + +// Same as module.exports +declare var exports: any; + +/** + * Only available if `--expose-gc` is passed to the process. + */ +declare var gc: undefined | (() => void); + +// #region borrowed +// from https://github.com/microsoft/TypeScript/blob/38da7c600c83e7b31193a62495239a0fe478cb67/lib/lib.webworker.d.ts#L633 until moved to separate lib +/** A controller object that allows you to abort one or more DOM requests as and when desired. */ +interface AbortController { + /** + * Returns the AbortSignal object associated with this object. + */ + + readonly signal: AbortSignal; + /** + * Invoking this method will set this object's AbortSignal's aborted flag and signal to any observers that the associated activity is to be aborted. + */ + abort(reason?: any): void; +} + +/** A signal object that allows you to communicate with a DOM request (such as a Fetch) and abort it if required via an AbortController object. */ +interface AbortSignal extends EventTarget { + /** + * Returns true if this AbortSignal's AbortController has signaled to abort, and false otherwise. + */ + readonly aborted: boolean; + readonly reason: any; + onabort: null | ((this: AbortSignal, event: Event) => any); + throwIfAborted(): void; +} + +declare var AbortController: typeof globalThis extends { onmessage: any; AbortController: infer T } ? T + : { + prototype: AbortController; + new(): AbortController; + }; + +declare var AbortSignal: typeof globalThis extends { onmessage: any; AbortSignal: infer T } ? T + : { + prototype: AbortSignal; + new(): AbortSignal; + abort(reason?: any): AbortSignal; + timeout(milliseconds: number): AbortSignal; + }; +// #endregion borrowed + +// #region Disposable +interface SymbolConstructor { + /** + * A method that is used to release resources held by an object. Called by the semantics of the `using` statement. + */ + readonly dispose: unique symbol; + + /** + * A method that is used to asynchronously release resources held by an object. Called by the semantics of the `await using` statement. + */ + readonly asyncDispose: unique symbol; +} + +interface Disposable { + [Symbol.dispose](): void; +} + +interface AsyncDisposable { + [Symbol.asyncDispose](): PromiseLike; +} +// #endregion Disposable + +// #region ArrayLike.at() +interface RelativeIndexable { + /** + * Takes an integer value and returns the item at that index, + * allowing for positive and negative integers. + * Negative integers count back from the last item in the array. + */ + at(index: number): T | undefined; +} +interface String extends RelativeIndexable {} +interface Array extends RelativeIndexable {} +interface ReadonlyArray extends RelativeIndexable {} +interface Int8Array extends RelativeIndexable {} +interface Uint8Array extends RelativeIndexable {} +interface Uint8ClampedArray extends RelativeIndexable {} +interface Int16Array extends RelativeIndexable {} +interface Uint16Array extends RelativeIndexable {} +interface Int32Array extends RelativeIndexable {} +interface Uint32Array extends RelativeIndexable {} +interface Float32Array extends RelativeIndexable {} +interface Float64Array extends RelativeIndexable {} +interface BigInt64Array extends RelativeIndexable {} +interface BigUint64Array extends RelativeIndexable {} +// #endregion ArrayLike.at() end + +/** + * @since v17.0.0 + * + * Creates a deep clone of an object. + */ +declare function structuredClone( + value: T, + transfer?: { transfer: ReadonlyArray }, +): T; + +/*----------------------------------------------* +* * +* GLOBAL INTERFACES * +* * +*-----------------------------------------------*/ +declare namespace NodeJS { + interface CallSite { + /** + * Value of "this" + */ + getThis(): unknown; + + /** + * Type of "this" as a string. + * This is the name of the function stored in the constructor field of + * "this", if available. Otherwise the object's [[Class]] internal + * property. + */ + getTypeName(): string | null; + + /** + * Current function + */ + getFunction(): Function | undefined; + + /** + * Name of the current function, typically its name property. + * If a name property is not available an attempt will be made to try + * to infer a name from the function's context. + */ + getFunctionName(): string | null; + + /** + * Name of the property [of "this" or one of its prototypes] that holds + * the current function + */ + getMethodName(): string | null; + + /** + * Name of the script [if this function was defined in a script] + */ + getFileName(): string | undefined; + + /** + * Current line number [if this function was defined in a script] + */ + getLineNumber(): number | null; + + /** + * Current column number [if this function was defined in a script] + */ + getColumnNumber(): number | null; + + /** + * A call site object representing the location where eval was called + * [if this function was created using a call to eval] + */ + getEvalOrigin(): string | undefined; + + /** + * Is this a toplevel invocation, that is, is "this" the global object? + */ + isToplevel(): boolean; + + /** + * Does this call take place in code defined by a call to eval? + */ + isEval(): boolean; + + /** + * Is this call in native V8 code? + */ + isNative(): boolean; + + /** + * Is this a constructor call? + */ + isConstructor(): boolean; + } + + interface ErrnoException extends Error { + errno?: number | undefined; + code?: string | undefined; + path?: string | undefined; + syscall?: string | undefined; + } + + interface ReadableStream extends EventEmitter { + readable: boolean; + read(size?: number): string | Buffer; + setEncoding(encoding: BufferEncoding): this; + pause(): this; + resume(): this; + isPaused(): boolean; + pipe(destination: T, options?: { end?: boolean | undefined }): T; + unpipe(destination?: WritableStream): this; + unshift(chunk: string | Uint8Array, encoding?: BufferEncoding): void; + wrap(oldStream: ReadableStream): this; + [Symbol.asyncIterator](): AsyncIterableIterator; + } + + interface WritableStream extends EventEmitter { + writable: boolean; + write(buffer: Uint8Array | string, cb?: (err?: Error | null) => void): boolean; + write(str: string, encoding?: BufferEncoding, cb?: (err?: Error | null) => void): boolean; + end(cb?: () => void): this; + end(data: string | Uint8Array, cb?: () => void): this; + end(str: string, encoding?: BufferEncoding, cb?: () => void): this; + } + + interface ReadWriteStream extends ReadableStream, WritableStream {} + + interface RefCounted { + ref(): this; + unref(): this; + } + + type TypedArray = + | Uint8Array + | Uint8ClampedArray + | Uint16Array + | Uint32Array + | Int8Array + | Int16Array + | Int32Array + | BigUint64Array + | BigInt64Array + | Float32Array + | Float64Array; + type ArrayBufferView = TypedArray | DataView; + + interface Require { + (id: string): any; + resolve: RequireResolve; + cache: Dict; + /** + * @deprecated + */ + extensions: RequireExtensions; + main: Module | undefined; + } + + interface RequireResolve { + (id: string, options?: { paths?: string[] | undefined }): string; + paths(request: string): string[] | null; + } + + interface RequireExtensions extends Dict<(m: Module, filename: string) => any> { + ".js": (m: Module, filename: string) => any; + ".json": (m: Module, filename: string) => any; + ".node": (m: Module, filename: string) => any; + } + interface Module { + /** + * `true` if the module is running during the Node.js preload + */ + isPreloading: boolean; + exports: any; + require: Require; + id: string; + filename: string; + loaded: boolean; + /** @deprecated since v14.6.0 Please use `require.main` and `module.children` instead. */ + parent: Module | null | undefined; + children: Module[]; + /** + * @since v11.14.0 + * + * The directory name of the module. This is usually the same as the path.dirname() of the module.id. + */ + path: string; + paths: string[]; + } + + interface Dict { + [key: string]: T | undefined; + } + + interface ReadOnlyDict { + readonly [key: string]: T | undefined; + } + + namespace fetch { + type _Request = typeof globalThis extends { onmessage: any } ? {} : import("undici-types").Request; + type _Response = typeof globalThis extends { onmessage: any } ? {} : import("undici-types").Response; + type _FormData = typeof globalThis extends { onmessage: any } ? {} : import("undici-types").FormData; + type _Headers = typeof globalThis extends { onmessage: any } ? {} : import("undici-types").Headers; + type _RequestInit = typeof globalThis extends { onmessage: any } ? {} + : import("undici-types").RequestInit; + type Request = globalThis.Request; + type Response = globalThis.Response; + type Headers = globalThis.Headers; + type FormData = globalThis.FormData; + type RequestInit = globalThis.RequestInit; + type RequestInfo = import("undici-types").RequestInfo; + type HeadersInit = import("undici-types").HeadersInit; + type BodyInit = import("undici-types").BodyInit; + type RequestRedirect = import("undici-types").RequestRedirect; + type RequestCredentials = import("undici-types").RequestCredentials; + type RequestMode = import("undici-types").RequestMode; + type ReferrerPolicy = import("undici-types").ReferrerPolicy; + type Dispatcher = import("undici-types").Dispatcher; + type RequestDuplex = import("undici-types").RequestDuplex; + } +} + +interface RequestInit extends NodeJS.fetch._RequestInit {} + +declare function fetch( + input: NodeJS.fetch.RequestInfo, + init?: RequestInit, +): Promise; + +interface Request extends NodeJS.fetch._Request {} +declare var Request: typeof globalThis extends { + onmessage: any; + Request: infer T; +} ? T + : typeof import("undici-types").Request; + +interface Response extends NodeJS.fetch._Response {} +declare var Response: typeof globalThis extends { + onmessage: any; + Response: infer T; +} ? T + : typeof import("undici-types").Response; + +interface FormData extends NodeJS.fetch._FormData {} +declare var FormData: typeof globalThis extends { + onmessage: any; + FormData: infer T; +} ? T + : typeof import("undici-types").FormData; + +interface Headers extends NodeJS.fetch._Headers {} +declare var Headers: typeof globalThis extends { + onmessage: any; + Headers: infer T; +} ? T + : typeof import("undici-types").Headers; diff --git a/node_modules/@types/node/globals.global.d.ts b/node_modules/@types/node/globals.global.d.ts new file mode 100644 index 00000000..ef1198c0 --- /dev/null +++ b/node_modules/@types/node/globals.global.d.ts @@ -0,0 +1 @@ +declare var global: typeof globalThis; diff --git a/node_modules/@types/node/http.d.ts b/node_modules/@types/node/http.d.ts new file mode 100644 index 00000000..b06f5419 --- /dev/null +++ b/node_modules/@types/node/http.d.ts @@ -0,0 +1,1888 @@ +/** + * To use the HTTP server and client one must `require('node:http')`. + * + * The HTTP interfaces in Node.js are designed to support many features + * of the protocol which have been traditionally difficult to use. + * In particular, large, possibly chunk-encoded, messages. The interface is + * careful to never buffer entire requests or responses, so the + * user is able to stream data. + * + * HTTP message headers are represented by an object like this: + * + * ```js + * { 'content-length': '123', + * 'content-type': 'text/plain', + * 'connection': 'keep-alive', + * 'host': 'example.com', + * 'accept': '*' } + * ``` + * + * Keys are lowercased. Values are not modified. + * + * In order to support the full spectrum of possible HTTP applications, the Node.js + * HTTP API is very low-level. It deals with stream handling and message + * parsing only. It parses a message into headers and body but it does not + * parse the actual headers or the body. + * + * See `message.headers` for details on how duplicate headers are handled. + * + * The raw headers as they were received are retained in the `rawHeaders`property, which is an array of `[key, value, key2, value2, ...]`. For + * example, the previous message header object might have a `rawHeaders`list like the following: + * + * ```js + * [ 'ConTent-Length', '123456', + * 'content-LENGTH', '123', + * 'content-type', 'text/plain', + * 'CONNECTION', 'keep-alive', + * 'Host', 'example.com', + * 'accepT', '*' ] + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/http.js) + */ +declare module "http" { + import * as stream from "node:stream"; + import { URL } from "node:url"; + import { LookupOptions } from "node:dns"; + import { EventEmitter } from "node:events"; + import { LookupFunction, Server as NetServer, Socket, TcpSocketConnectOpts } from "node:net"; + // incoming headers will never contain number + interface IncomingHttpHeaders extends NodeJS.Dict { + accept?: string | undefined; + "accept-language"?: string | undefined; + "accept-patch"?: string | undefined; + "accept-ranges"?: string | undefined; + "access-control-allow-credentials"?: string | undefined; + "access-control-allow-headers"?: string | undefined; + "access-control-allow-methods"?: string | undefined; + "access-control-allow-origin"?: string | undefined; + "access-control-expose-headers"?: string | undefined; + "access-control-max-age"?: string | undefined; + "access-control-request-headers"?: string | undefined; + "access-control-request-method"?: string | undefined; + age?: string | undefined; + allow?: string | undefined; + "alt-svc"?: string | undefined; + authorization?: string | undefined; + "cache-control"?: string | undefined; + connection?: string | undefined; + "content-disposition"?: string | undefined; + "content-encoding"?: string | undefined; + "content-language"?: string | undefined; + "content-length"?: string | undefined; + "content-location"?: string | undefined; + "content-range"?: string | undefined; + "content-type"?: string | undefined; + cookie?: string | undefined; + date?: string | undefined; + etag?: string | undefined; + expect?: string | undefined; + expires?: string | undefined; + forwarded?: string | undefined; + from?: string | undefined; + host?: string | undefined; + "if-match"?: string | undefined; + "if-modified-since"?: string | undefined; + "if-none-match"?: string | undefined; + "if-unmodified-since"?: string | undefined; + "last-modified"?: string | undefined; + location?: string | undefined; + origin?: string | undefined; + pragma?: string | undefined; + "proxy-authenticate"?: string | undefined; + "proxy-authorization"?: string | undefined; + "public-key-pins"?: string | undefined; + range?: string | undefined; + referer?: string | undefined; + "retry-after"?: string | undefined; + "sec-websocket-accept"?: string | undefined; + "sec-websocket-extensions"?: string | undefined; + "sec-websocket-key"?: string | undefined; + "sec-websocket-protocol"?: string | undefined; + "sec-websocket-version"?: string | undefined; + "set-cookie"?: string[] | undefined; + "strict-transport-security"?: string | undefined; + tk?: string | undefined; + trailer?: string | undefined; + "transfer-encoding"?: string | undefined; + upgrade?: string | undefined; + "user-agent"?: string | undefined; + vary?: string | undefined; + via?: string | undefined; + warning?: string | undefined; + "www-authenticate"?: string | undefined; + } + // outgoing headers allows numbers (as they are converted internally to strings) + type OutgoingHttpHeader = number | string | string[]; + interface OutgoingHttpHeaders extends NodeJS.Dict { + accept?: string | string[] | undefined; + "accept-charset"?: string | string[] | undefined; + "accept-encoding"?: string | string[] | undefined; + "accept-language"?: string | string[] | undefined; + "accept-ranges"?: string | undefined; + "access-control-allow-credentials"?: string | undefined; + "access-control-allow-headers"?: string | undefined; + "access-control-allow-methods"?: string | undefined; + "access-control-allow-origin"?: string | undefined; + "access-control-expose-headers"?: string | undefined; + "access-control-max-age"?: string | undefined; + "access-control-request-headers"?: string | undefined; + "access-control-request-method"?: string | undefined; + age?: string | undefined; + allow?: string | undefined; + authorization?: string | undefined; + "cache-control"?: string | undefined; + "cdn-cache-control"?: string | undefined; + connection?: string | string[] | undefined; + "content-disposition"?: string | undefined; + "content-encoding"?: string | undefined; + "content-language"?: string | undefined; + "content-length"?: string | number | undefined; + "content-location"?: string | undefined; + "content-range"?: string | undefined; + "content-security-policy"?: string | undefined; + "content-security-policy-report-only"?: string | undefined; + cookie?: string | string[] | undefined; + dav?: string | string[] | undefined; + dnt?: string | undefined; + date?: string | undefined; + etag?: string | undefined; + expect?: string | undefined; + expires?: string | undefined; + forwarded?: string | undefined; + from?: string | undefined; + host?: string | undefined; + "if-match"?: string | undefined; + "if-modified-since"?: string | undefined; + "if-none-match"?: string | undefined; + "if-range"?: string | undefined; + "if-unmodified-since"?: string | undefined; + "last-modified"?: string | undefined; + link?: string | string[] | undefined; + location?: string | undefined; + "max-forwards"?: string | undefined; + origin?: string | undefined; + prgama?: string | string[] | undefined; + "proxy-authenticate"?: string | string[] | undefined; + "proxy-authorization"?: string | undefined; + "public-key-pins"?: string | undefined; + "public-key-pins-report-only"?: string | undefined; + range?: string | undefined; + referer?: string | undefined; + "referrer-policy"?: string | undefined; + refresh?: string | undefined; + "retry-after"?: string | undefined; + "sec-websocket-accept"?: string | undefined; + "sec-websocket-extensions"?: string | string[] | undefined; + "sec-websocket-key"?: string | undefined; + "sec-websocket-protocol"?: string | string[] | undefined; + "sec-websocket-version"?: string | undefined; + server?: string | undefined; + "set-cookie"?: string | string[] | undefined; + "strict-transport-security"?: string | undefined; + te?: string | undefined; + trailer?: string | undefined; + "transfer-encoding"?: string | undefined; + "user-agent"?: string | undefined; + upgrade?: string | undefined; + "upgrade-insecure-requests"?: string | undefined; + vary?: string | undefined; + via?: string | string[] | undefined; + warning?: string | undefined; + "www-authenticate"?: string | string[] | undefined; + "x-content-type-options"?: string | undefined; + "x-dns-prefetch-control"?: string | undefined; + "x-frame-options"?: string | undefined; + "x-xss-protection"?: string | undefined; + } + interface ClientRequestArgs { + _defaultAgent?: Agent | undefined; + agent?: Agent | boolean | undefined; + auth?: string | null | undefined; + // https://github.com/nodejs/node/blob/master/lib/_http_client.js#L278 + createConnection?: + | ((options: ClientRequestArgs, oncreate: (err: Error, socket: Socket) => void) => Socket) + | undefined; + defaultPort?: number | string | undefined; + family?: number | undefined; + headers?: OutgoingHttpHeaders | undefined; + hints?: LookupOptions["hints"]; + host?: string | null | undefined; + hostname?: string | null | undefined; + insecureHTTPParser?: boolean | undefined; + localAddress?: string | undefined; + localPort?: number | undefined; + lookup?: LookupFunction | undefined; + /** + * @default 16384 + */ + maxHeaderSize?: number | undefined; + method?: string | undefined; + path?: string | null | undefined; + port?: number | string | null | undefined; + protocol?: string | null | undefined; + setHost?: boolean | undefined; + signal?: AbortSignal | undefined; + socketPath?: string | undefined; + timeout?: number | undefined; + uniqueHeaders?: Array | undefined; + joinDuplicateHeaders?: boolean; + } + interface ServerOptions< + Request extends typeof IncomingMessage = typeof IncomingMessage, + Response extends typeof ServerResponse = typeof ServerResponse, + > { + /** + * Specifies the `IncomingMessage` class to be used. Useful for extending the original `IncomingMessage`. + */ + IncomingMessage?: Request | undefined; + /** + * Specifies the `ServerResponse` class to be used. Useful for extending the original `ServerResponse`. + */ + ServerResponse?: Response | undefined; + /** + * Sets the timeout value in milliseconds for receiving the entire request from the client. + * @see Server.requestTimeout for more information. + * @default 300000 + * @since v18.0.0 + */ + requestTimeout?: number | undefined; + /** + * It joins the field line values of multiple headers in a request with `, ` instead of discarding the duplicates. + * @default false + * @since v18.14.0 + */ + joinDuplicateHeaders?: boolean; + /** + * The number of milliseconds of inactivity a server needs to wait for additional incoming data, + * after it has finished writing the last response, before a socket will be destroyed. + * @see Server.keepAliveTimeout for more information. + * @default 5000 + * @since v18.0.0 + */ + keepAliveTimeout?: number | undefined; + /** + * Sets the interval value in milliseconds to check for request and headers timeout in incomplete requests. + * @default 30000 + */ + connectionsCheckingInterval?: number | undefined; + /** + * Optionally overrides all `socket`s' `readableHighWaterMark` and `writableHighWaterMark`. + * This affects `highWaterMark` property of both `IncomingMessage` and `ServerResponse`. + * Default: @see stream.getDefaultHighWaterMark(). + * @since v20.1.0 + */ + highWaterMark?: number | undefined; + /** + * Use an insecure HTTP parser that accepts invalid HTTP headers when `true`. + * Using the insecure parser should be avoided. + * See --insecure-http-parser for more information. + * @default false + */ + insecureHTTPParser?: boolean | undefined; + /** + * Optionally overrides the value of + * `--max-http-header-size` for requests received by this server, i.e. + * the maximum length of request headers in bytes. + * @default 16384 + * @since v13.3.0 + */ + maxHeaderSize?: number | undefined; + /** + * If set to `true`, it disables the use of Nagle's algorithm immediately after a new incoming connection is received. + * @default true + * @since v16.5.0 + */ + noDelay?: boolean | undefined; + /** + * If set to `true`, it enables keep-alive functionality on the socket immediately after a new incoming connection is received, + * similarly on what is done in `socket.setKeepAlive([enable][, initialDelay])`. + * @default false + * @since v16.5.0 + */ + keepAlive?: boolean | undefined; + /** + * If set to a positive number, it sets the initial delay before the first keepalive probe is sent on an idle socket. + * @default 0 + * @since v16.5.0 + */ + keepAliveInitialDelay?: number | undefined; + /** + * A list of response headers that should be sent only once. + * If the header's value is an array, the items will be joined using `; `. + */ + uniqueHeaders?: Array | undefined; + } + type RequestListener< + Request extends typeof IncomingMessage = typeof IncomingMessage, + Response extends typeof ServerResponse = typeof ServerResponse, + > = (req: InstanceType, res: InstanceType & { req: InstanceType }) => void; + /** + * @since v0.1.17 + */ + class Server< + Request extends typeof IncomingMessage = typeof IncomingMessage, + Response extends typeof ServerResponse = typeof ServerResponse, + > extends NetServer { + constructor(requestListener?: RequestListener); + constructor(options: ServerOptions, requestListener?: RequestListener); + /** + * Sets the timeout value for sockets, and emits a `'timeout'` event on + * the Server object, passing the socket as an argument, if a timeout + * occurs. + * + * If there is a `'timeout'` event listener on the Server object, then it + * will be called with the timed-out socket as an argument. + * + * By default, the Server does not timeout sockets. However, if a callback + * is assigned to the Server's `'timeout'` event, timeouts must be handled + * explicitly. + * @since v0.9.12 + * @param [msecs=0 (no timeout)] + */ + setTimeout(msecs?: number, callback?: () => void): this; + setTimeout(callback: () => void): this; + /** + * Limits maximum incoming headers count. If set to 0, no limit will be applied. + * @since v0.7.0 + */ + maxHeadersCount: number | null; + /** + * The maximum number of requests socket can handle + * before closing keep alive connection. + * + * A value of `0` will disable the limit. + * + * When the limit is reached it will set the `Connection` header value to `close`, + * but will not actually close the connection, subsequent requests sent + * after the limit is reached will get `503 Service Unavailable` as a response. + * @since v16.10.0 + */ + maxRequestsPerSocket: number | null; + /** + * The number of milliseconds of inactivity before a socket is presumed + * to have timed out. + * + * A value of `0` will disable the timeout behavior on incoming connections. + * + * The socket timeout logic is set up on connection, so changing this + * value only affects new connections to the server, not any existing connections. + * @since v0.9.12 + */ + timeout: number; + /** + * Limit the amount of time the parser will wait to receive the complete HTTP + * headers. + * + * If the timeout expires, the server responds with status 408 without + * forwarding the request to the request listener and then closes the connection. + * + * It must be set to a non-zero value (e.g. 120 seconds) to protect against + * potential Denial-of-Service attacks in case the server is deployed without a + * reverse proxy in front. + * @since v11.3.0, v10.14.0 + */ + headersTimeout: number; + /** + * The number of milliseconds of inactivity a server needs to wait for additional + * incoming data, after it has finished writing the last response, before a socket + * will be destroyed. If the server receives new data before the keep-alive + * timeout has fired, it will reset the regular inactivity timeout, i.e.,`server.timeout`. + * + * A value of `0` will disable the keep-alive timeout behavior on incoming + * connections. + * A value of `0` makes the http server behave similarly to Node.js versions prior + * to 8.0.0, which did not have a keep-alive timeout. + * + * The socket timeout logic is set up on connection, so changing this value only + * affects new connections to the server, not any existing connections. + * @since v8.0.0 + */ + keepAliveTimeout: number; + /** + * Sets the timeout value in milliseconds for receiving the entire request from + * the client. + * + * If the timeout expires, the server responds with status 408 without + * forwarding the request to the request listener and then closes the connection. + * + * It must be set to a non-zero value (e.g. 120 seconds) to protect against + * potential Denial-of-Service attacks in case the server is deployed without a + * reverse proxy in front. + * @since v14.11.0 + */ + requestTimeout: number; + /** + * Closes all connections connected to this server. + * @since v18.2.0 + */ + closeAllConnections(): void; + /** + * Closes all connections connected to this server which are not sending a request + * or waiting for a response. + * @since v18.2.0 + */ + closeIdleConnections(): void; + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "connection", listener: (socket: Socket) => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "listening", listener: () => void): this; + addListener(event: "checkContinue", listener: RequestListener): this; + addListener(event: "checkExpectation", listener: RequestListener): this; + addListener(event: "clientError", listener: (err: Error, socket: stream.Duplex) => void): this; + addListener( + event: "connect", + listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, + ): this; + addListener(event: "dropRequest", listener: (req: InstanceType, socket: stream.Duplex) => void): this; + addListener(event: "request", listener: RequestListener): this; + addListener( + event: "upgrade", + listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, + ): this; + emit(event: string, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "connection", socket: Socket): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "listening"): boolean; + emit( + event: "checkContinue", + req: InstanceType, + res: InstanceType & { req: InstanceType }, + ): boolean; + emit( + event: "checkExpectation", + req: InstanceType, + res: InstanceType & { req: InstanceType }, + ): boolean; + emit(event: "clientError", err: Error, socket: stream.Duplex): boolean; + emit(event: "connect", req: InstanceType, socket: stream.Duplex, head: Buffer): boolean; + emit(event: "dropRequest", req: InstanceType, socket: stream.Duplex): boolean; + emit( + event: "request", + req: InstanceType, + res: InstanceType & { req: InstanceType }, + ): boolean; + emit(event: "upgrade", req: InstanceType, socket: stream.Duplex, head: Buffer): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "close", listener: () => void): this; + on(event: "connection", listener: (socket: Socket) => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "listening", listener: () => void): this; + on(event: "checkContinue", listener: RequestListener): this; + on(event: "checkExpectation", listener: RequestListener): this; + on(event: "clientError", listener: (err: Error, socket: stream.Duplex) => void): this; + on(event: "connect", listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void): this; + on(event: "dropRequest", listener: (req: InstanceType, socket: stream.Duplex) => void): this; + on(event: "request", listener: RequestListener): this; + on(event: "upgrade", listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "connection", listener: (socket: Socket) => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "listening", listener: () => void): this; + once(event: "checkContinue", listener: RequestListener): this; + once(event: "checkExpectation", listener: RequestListener): this; + once(event: "clientError", listener: (err: Error, socket: stream.Duplex) => void): this; + once( + event: "connect", + listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, + ): this; + once(event: "dropRequest", listener: (req: InstanceType, socket: stream.Duplex) => void): this; + once(event: "request", listener: RequestListener): this; + once( + event: "upgrade", + listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, + ): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "connection", listener: (socket: Socket) => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "listening", listener: () => void): this; + prependListener(event: "checkContinue", listener: RequestListener): this; + prependListener(event: "checkExpectation", listener: RequestListener): this; + prependListener(event: "clientError", listener: (err: Error, socket: stream.Duplex) => void): this; + prependListener( + event: "connect", + listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, + ): this; + prependListener( + event: "dropRequest", + listener: (req: InstanceType, socket: stream.Duplex) => void, + ): this; + prependListener(event: "request", listener: RequestListener): this; + prependListener( + event: "upgrade", + listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, + ): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "connection", listener: (socket: Socket) => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "listening", listener: () => void): this; + prependOnceListener(event: "checkContinue", listener: RequestListener): this; + prependOnceListener(event: "checkExpectation", listener: RequestListener): this; + prependOnceListener(event: "clientError", listener: (err: Error, socket: stream.Duplex) => void): this; + prependOnceListener( + event: "connect", + listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, + ): this; + prependOnceListener( + event: "dropRequest", + listener: (req: InstanceType, socket: stream.Duplex) => void, + ): this; + prependOnceListener(event: "request", listener: RequestListener): this; + prependOnceListener( + event: "upgrade", + listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, + ): this; + } + /** + * This class serves as the parent class of {@link ClientRequest} and {@link ServerResponse}. It is an abstract outgoing message from + * the perspective of the participants of an HTTP transaction. + * @since v0.1.17 + */ + class OutgoingMessage extends stream.Writable { + readonly req: Request; + chunkedEncoding: boolean; + shouldKeepAlive: boolean; + useChunkedEncodingByDefault: boolean; + sendDate: boolean; + /** + * @deprecated Use `writableEnded` instead. + */ + finished: boolean; + /** + * Read-only. `true` if the headers were sent, otherwise `false`. + * @since v0.9.3 + */ + readonly headersSent: boolean; + /** + * Alias of `outgoingMessage.socket`. + * @since v0.3.0 + * @deprecated Since v15.12.0,v14.17.1 - Use `socket` instead. + */ + readonly connection: Socket | null; + /** + * Reference to the underlying socket. Usually, users will not want to access + * this property. + * + * After calling `outgoingMessage.end()`, this property will be nulled. + * @since v0.3.0 + */ + readonly socket: Socket | null; + constructor(); + /** + * Once a socket is associated with the message and is connected,`socket.setTimeout()` will be called with `msecs` as the first parameter. + * @since v0.9.12 + * @param callback Optional function to be called when a timeout occurs. Same as binding to the `timeout` event. + */ + setTimeout(msecs: number, callback?: () => void): this; + /** + * Sets a single header value. If the header already exists in the to-be-sent + * headers, its value will be replaced. Use an array of strings to send multiple + * headers with the same name. + * @since v0.4.0 + * @param name Header name + * @param value Header value + */ + setHeader(name: string, value: number | string | ReadonlyArray): this; + /** + * Append a single header value for the header object. + * + * If the value is an array, this is equivalent of calling this method multiple + * times. + * + * If there were no previous value for the header, this is equivalent of calling `outgoingMessage.setHeader(name, value)`. + * + * Depending of the value of `options.uniqueHeaders` when the client request or the + * server were created, this will end up in the header being sent multiple times or + * a single time with values joined using `; `. + * @since v18.3.0, v16.17.0 + * @param name Header name + * @param value Header value + */ + appendHeader(name: string, value: string | ReadonlyArray): this; + /** + * Gets the value of the HTTP header with the given name. If that header is not + * set, the returned value will be `undefined`. + * @since v0.4.0 + * @param name Name of header + */ + getHeader(name: string): number | string | string[] | undefined; + /** + * Returns a shallow copy of the current outgoing headers. Since a shallow + * copy is used, array values may be mutated without additional calls to + * various header-related HTTP module methods. The keys of the returned + * object are the header names and the values are the respective header + * values. All header names are lowercase. + * + * The object returned by the `outgoingMessage.getHeaders()` method does + * not prototypically inherit from the JavaScript `Object`. This means that + * typical `Object` methods such as `obj.toString()`, `obj.hasOwnProperty()`, + * and others are not defined and will not work. + * + * ```js + * outgoingMessage.setHeader('Foo', 'bar'); + * outgoingMessage.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']); + * + * const headers = outgoingMessage.getHeaders(); + * // headers === { foo: 'bar', 'set-cookie': ['foo=bar', 'bar=baz'] } + * ``` + * @since v7.7.0 + */ + getHeaders(): OutgoingHttpHeaders; + /** + * Returns an array containing the unique names of the current outgoing headers. + * All names are lowercase. + * @since v7.7.0 + */ + getHeaderNames(): string[]; + /** + * Returns `true` if the header identified by `name` is currently set in the + * outgoing headers. The header name is case-insensitive. + * + * ```js + * const hasContentType = outgoingMessage.hasHeader('content-type'); + * ``` + * @since v7.7.0 + */ + hasHeader(name: string): boolean; + /** + * Removes a header that is queued for implicit sending. + * + * ```js + * outgoingMessage.removeHeader('Content-Encoding'); + * ``` + * @since v0.4.0 + * @param name Header name + */ + removeHeader(name: string): void; + /** + * Adds HTTP trailers (headers but at the end of the message) to the message. + * + * Trailers will **only** be emitted if the message is chunked encoded. If not, + * the trailers will be silently discarded. + * + * HTTP requires the `Trailer` header to be sent to emit trailers, + * with a list of header field names in its value, e.g. + * + * ```js + * message.writeHead(200, { 'Content-Type': 'text/plain', + * 'Trailer': 'Content-MD5' }); + * message.write(fileData); + * message.addTrailers({ 'Content-MD5': '7895bf4b8828b55ceaf47747b4bca667' }); + * message.end(); + * ``` + * + * Attempting to set a header field name or value that contains invalid characters + * will result in a `TypeError` being thrown. + * @since v0.3.0 + */ + addTrailers(headers: OutgoingHttpHeaders | ReadonlyArray<[string, string]>): void; + /** + * Flushes the message headers. + * + * For efficiency reason, Node.js normally buffers the message headers + * until `outgoingMessage.end()` is called or the first chunk of message data + * is written. It then tries to pack the headers and data into a single TCP + * packet. + * + * It is usually desired (it saves a TCP round-trip), but not when the first + * data is not sent until possibly much later. `outgoingMessage.flushHeaders()`bypasses the optimization and kickstarts the message. + * @since v1.6.0 + */ + flushHeaders(): void; + } + /** + * This object is created internally by an HTTP server, not by the user. It is + * passed as the second parameter to the `'request'` event. + * @since v0.1.17 + */ + class ServerResponse extends OutgoingMessage { + /** + * When using implicit headers (not calling `response.writeHead()` explicitly), + * this property controls the status code that will be sent to the client when + * the headers get flushed. + * + * ```js + * response.statusCode = 404; + * ``` + * + * After response header was sent to the client, this property indicates the + * status code which was sent out. + * @since v0.4.0 + */ + statusCode: number; + /** + * When using implicit headers (not calling `response.writeHead()` explicitly), + * this property controls the status message that will be sent to the client when + * the headers get flushed. If this is left as `undefined` then the standard + * message for the status code will be used. + * + * ```js + * response.statusMessage = 'Not found'; + * ``` + * + * After response header was sent to the client, this property indicates the + * status message which was sent out. + * @since v0.11.8 + */ + statusMessage: string; + /** + * If set to `true`, Node.js will check whether the `Content-Length`header value and the size of the body, in bytes, are equal. + * Mismatching the `Content-Length` header value will result + * in an `Error` being thrown, identified by `code:``'ERR_HTTP_CONTENT_LENGTH_MISMATCH'`. + * @since v18.10.0, v16.18.0 + */ + strictContentLength: boolean; + constructor(req: Request); + assignSocket(socket: Socket): void; + detachSocket(socket: Socket): void; + /** + * Sends an HTTP/1.1 100 Continue message to the client, indicating that + * the request body should be sent. See the `'checkContinue'` event on`Server`. + * @since v0.3.0 + */ + writeContinue(callback?: () => void): void; + /** + * Sends an HTTP/1.1 103 Early Hints message to the client with a Link header, + * indicating that the user agent can preload/preconnect the linked resources. + * The `hints` is an object containing the values of headers to be sent with + * early hints message. The optional `callback` argument will be called when + * the response message has been written. + * + * **Example** + * + * ```js + * const earlyHintsLink = '; rel=preload; as=style'; + * response.writeEarlyHints({ + * 'link': earlyHintsLink, + * }); + * + * const earlyHintsLinks = [ + * '; rel=preload; as=style', + * '; rel=preload; as=script', + * ]; + * response.writeEarlyHints({ + * 'link': earlyHintsLinks, + * 'x-trace-id': 'id for diagnostics', + * }); + * + * const earlyHintsCallback = () => console.log('early hints message sent'); + * response.writeEarlyHints({ + * 'link': earlyHintsLinks, + * }, earlyHintsCallback); + * ``` + * @since v18.11.0 + * @param hints An object containing the values of headers + * @param callback Will be called when the response message has been written + */ + writeEarlyHints(hints: Record, callback?: () => void): void; + /** + * Sends a response header to the request. The status code is a 3-digit HTTP + * status code, like `404`. The last argument, `headers`, are the response headers. + * Optionally one can give a human-readable `statusMessage` as the second + * argument. + * + * `headers` may be an `Array` where the keys and values are in the same list. + * It is _not_ a list of tuples. So, the even-numbered offsets are key values, + * and the odd-numbered offsets are the associated values. The array is in the same + * format as `request.rawHeaders`. + * + * Returns a reference to the `ServerResponse`, so that calls can be chained. + * + * ```js + * const body = 'hello world'; + * response + * .writeHead(200, { + * 'Content-Length': Buffer.byteLength(body), + * 'Content-Type': 'text/plain', + * }) + * .end(body); + * ``` + * + * This method must only be called once on a message and it must + * be called before `response.end()` is called. + * + * If `response.write()` or `response.end()` are called before calling + * this, the implicit/mutable headers will be calculated and call this function. + * + * When headers have been set with `response.setHeader()`, they will be merged + * with any headers passed to `response.writeHead()`, with the headers passed + * to `response.writeHead()` given precedence. + * + * If this method is called and `response.setHeader()` has not been called, + * it will directly write the supplied header values onto the network channel + * without caching internally, and the `response.getHeader()` on the header + * will not yield the expected result. If progressive population of headers is + * desired with potential future retrieval and modification, use `response.setHeader()` instead. + * + * ```js + * // Returns content-type = text/plain + * const server = http.createServer((req, res) => { + * res.setHeader('Content-Type', 'text/html'); + * res.setHeader('X-Foo', 'bar'); + * res.writeHead(200, { 'Content-Type': 'text/plain' }); + * res.end('ok'); + * }); + * ``` + * + * `Content-Length` is read in bytes, not characters. Use `Buffer.byteLength()` to determine the length of the body in bytes. Node.js + * will check whether `Content-Length` and the length of the body which has + * been transmitted are equal or not. + * + * Attempting to set a header field name or value that contains invalid characters + * will result in a \[`Error`\]\[\] being thrown. + * @since v0.1.30 + */ + writeHead( + statusCode: number, + statusMessage?: string, + headers?: OutgoingHttpHeaders | OutgoingHttpHeader[], + ): this; + writeHead(statusCode: number, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[]): this; + /** + * Sends a HTTP/1.1 102 Processing message to the client, indicating that + * the request body should be sent. + * @since v10.0.0 + */ + writeProcessing(): void; + } + interface InformationEvent { + statusCode: number; + statusMessage: string; + httpVersion: string; + httpVersionMajor: number; + httpVersionMinor: number; + headers: IncomingHttpHeaders; + rawHeaders: string[]; + } + /** + * This object is created internally and returned from {@link request}. It + * represents an _in-progress_ request whose header has already been queued. The + * header is still mutable using the `setHeader(name, value)`,`getHeader(name)`, `removeHeader(name)` API. The actual header will + * be sent along with the first data chunk or when calling `request.end()`. + * + * To get the response, add a listener for `'response'` to the request object.`'response'` will be emitted from the request object when the response + * headers have been received. The `'response'` event is executed with one + * argument which is an instance of {@link IncomingMessage}. + * + * During the `'response'` event, one can add listeners to the + * response object; particularly to listen for the `'data'` event. + * + * If no `'response'` handler is added, then the response will be + * entirely discarded. However, if a `'response'` event handler is added, + * then the data from the response object **must** be consumed, either by + * calling `response.read()` whenever there is a `'readable'` event, or + * by adding a `'data'` handler, or by calling the `.resume()` method. + * Until the data is consumed, the `'end'` event will not fire. Also, until + * the data is read it will consume memory that can eventually lead to a + * 'process out of memory' error. + * + * For backward compatibility, `res` will only emit `'error'` if there is an`'error'` listener registered. + * + * Set `Content-Length` header to limit the response body size. + * If `response.strictContentLength` is set to `true`, mismatching the`Content-Length` header value will result in an `Error` being thrown, + * identified by `code:``'ERR_HTTP_CONTENT_LENGTH_MISMATCH'`. + * + * `Content-Length` value should be in bytes, not characters. Use `Buffer.byteLength()` to determine the length of the body in bytes. + * @since v0.1.17 + */ + class ClientRequest extends OutgoingMessage { + /** + * The `request.aborted` property will be `true` if the request has + * been aborted. + * @since v0.11.14 + * @deprecated Since v17.0.0,v16.12.0 - Check `destroyed` instead. + */ + aborted: boolean; + /** + * The request host. + * @since v14.5.0, v12.19.0 + */ + host: string; + /** + * The request protocol. + * @since v14.5.0, v12.19.0 + */ + protocol: string; + /** + * When sending request through a keep-alive enabled agent, the underlying socket + * might be reused. But if server closes connection at unfortunate time, client + * may run into a 'ECONNRESET' error. + * + * ```js + * import http from 'node:http'; + * + * // Server has a 5 seconds keep-alive timeout by default + * http + * .createServer((req, res) => { + * res.write('hello\n'); + * res.end(); + * }) + * .listen(3000); + * + * setInterval(() => { + * // Adapting a keep-alive agent + * http.get('http://localhost:3000', { agent }, (res) => { + * res.on('data', (data) => { + * // Do nothing + * }); + * }); + * }, 5000); // Sending request on 5s interval so it's easy to hit idle timeout + * ``` + * + * By marking a request whether it reused socket or not, we can do + * automatic error retry base on it. + * + * ```js + * import http from 'node:http'; + * const agent = new http.Agent({ keepAlive: true }); + * + * function retriableRequest() { + * const req = http + * .get('http://localhost:3000', { agent }, (res) => { + * // ... + * }) + * .on('error', (err) => { + * // Check if retry is needed + * if (req.reusedSocket && err.code === 'ECONNRESET') { + * retriableRequest(); + * } + * }); + * } + * + * retriableRequest(); + * ``` + * @since v13.0.0, v12.16.0 + */ + reusedSocket: boolean; + /** + * Limits maximum response headers count. If set to 0, no limit will be applied. + */ + maxHeadersCount: number; + constructor(url: string | URL | ClientRequestArgs, cb?: (res: IncomingMessage) => void); + /** + * The request method. + * @since v0.1.97 + */ + method: string; + /** + * The request path. + * @since v0.4.0 + */ + path: string; + /** + * Marks the request as aborting. Calling this will cause remaining data + * in the response to be dropped and the socket to be destroyed. + * @since v0.3.8 + * @deprecated Since v14.1.0,v13.14.0 - Use `destroy` instead. + */ + abort(): void; + onSocket(socket: Socket): void; + /** + * Once a socket is assigned to this request and is connected `socket.setTimeout()` will be called. + * @since v0.5.9 + * @param timeout Milliseconds before a request times out. + * @param callback Optional function to be called when a timeout occurs. Same as binding to the `'timeout'` event. + */ + setTimeout(timeout: number, callback?: () => void): this; + /** + * Once a socket is assigned to this request and is connected `socket.setNoDelay()` will be called. + * @since v0.5.9 + */ + setNoDelay(noDelay?: boolean): void; + /** + * Once a socket is assigned to this request and is connected `socket.setKeepAlive()` will be called. + * @since v0.5.9 + */ + setSocketKeepAlive(enable?: boolean, initialDelay?: number): void; + /** + * Returns an array containing the unique names of the current outgoing raw + * headers. Header names are returned with their exact casing being set. + * + * ```js + * request.setHeader('Foo', 'bar'); + * request.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']); + * + * const headerNames = request.getRawHeaderNames(); + * // headerNames === ['Foo', 'Set-Cookie'] + * ``` + * @since v15.13.0, v14.17.0 + */ + getRawHeaderNames(): string[]; + /** + * @deprecated + */ + addListener(event: "abort", listener: () => void): this; + addListener( + event: "connect", + listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, + ): this; + addListener(event: "continue", listener: () => void): this; + addListener(event: "information", listener: (info: InformationEvent) => void): this; + addListener(event: "response", listener: (response: IncomingMessage) => void): this; + addListener(event: "socket", listener: (socket: Socket) => void): this; + addListener(event: "timeout", listener: () => void): this; + addListener( + event: "upgrade", + listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, + ): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "pipe", listener: (src: stream.Readable) => void): this; + addListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + /** + * @deprecated + */ + on(event: "abort", listener: () => void): this; + on(event: "connect", listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; + on(event: "continue", listener: () => void): this; + on(event: "information", listener: (info: InformationEvent) => void): this; + on(event: "response", listener: (response: IncomingMessage) => void): this; + on(event: "socket", listener: (socket: Socket) => void): this; + on(event: "timeout", listener: () => void): this; + on(event: "upgrade", listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; + on(event: "close", listener: () => void): this; + on(event: "drain", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "pipe", listener: (src: stream.Readable) => void): this; + on(event: "unpipe", listener: (src: stream.Readable) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + /** + * @deprecated + */ + once(event: "abort", listener: () => void): this; + once(event: "connect", listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; + once(event: "continue", listener: () => void): this; + once(event: "information", listener: (info: InformationEvent) => void): this; + once(event: "response", listener: (response: IncomingMessage) => void): this; + once(event: "socket", listener: (socket: Socket) => void): this; + once(event: "timeout", listener: () => void): this; + once(event: "upgrade", listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; + once(event: "close", listener: () => void): this; + once(event: "drain", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "pipe", listener: (src: stream.Readable) => void): this; + once(event: "unpipe", listener: (src: stream.Readable) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + /** + * @deprecated + */ + prependListener(event: "abort", listener: () => void): this; + prependListener( + event: "connect", + listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, + ): this; + prependListener(event: "continue", listener: () => void): this; + prependListener(event: "information", listener: (info: InformationEvent) => void): this; + prependListener(event: "response", listener: (response: IncomingMessage) => void): this; + prependListener(event: "socket", listener: (socket: Socket) => void): this; + prependListener(event: "timeout", listener: () => void): this; + prependListener( + event: "upgrade", + listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, + ): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "pipe", listener: (src: stream.Readable) => void): this; + prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + /** + * @deprecated + */ + prependOnceListener(event: "abort", listener: () => void): this; + prependOnceListener( + event: "connect", + listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, + ): this; + prependOnceListener(event: "continue", listener: () => void): this; + prependOnceListener(event: "information", listener: (info: InformationEvent) => void): this; + prependOnceListener(event: "response", listener: (response: IncomingMessage) => void): this; + prependOnceListener(event: "socket", listener: (socket: Socket) => void): this; + prependOnceListener(event: "timeout", listener: () => void): this; + prependOnceListener( + event: "upgrade", + listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, + ): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this; + prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + /** + * An `IncomingMessage` object is created by {@link Server} or {@link ClientRequest} and passed as the first argument to the `'request'` and `'response'` event respectively. It may be used to + * access response + * status, headers, and data. + * + * Different from its `socket` value which is a subclass of `stream.Duplex`, the`IncomingMessage` itself extends `stream.Readable` and is created separately to + * parse and emit the incoming HTTP headers and payload, as the underlying socket + * may be reused multiple times in case of keep-alive. + * @since v0.1.17 + */ + class IncomingMessage extends stream.Readable { + constructor(socket: Socket); + /** + * The `message.aborted` property will be `true` if the request has + * been aborted. + * @since v10.1.0 + * @deprecated Since v17.0.0,v16.12.0 - Check `message.destroyed` from stream.Readable. + */ + aborted: boolean; + /** + * In case of server request, the HTTP version sent by the client. In the case of + * client response, the HTTP version of the connected-to server. + * Probably either `'1.1'` or `'1.0'`. + * + * Also `message.httpVersionMajor` is the first integer and`message.httpVersionMinor` is the second. + * @since v0.1.1 + */ + httpVersion: string; + httpVersionMajor: number; + httpVersionMinor: number; + /** + * The `message.complete` property will be `true` if a complete HTTP message has + * been received and successfully parsed. + * + * This property is particularly useful as a means of determining if a client or + * server fully transmitted a message before a connection was terminated: + * + * ```js + * const req = http.request({ + * host: '127.0.0.1', + * port: 8080, + * method: 'POST', + * }, (res) => { + * res.resume(); + * res.on('end', () => { + * if (!res.complete) + * console.error( + * 'The connection was terminated while the message was still being sent'); + * }); + * }); + * ``` + * @since v0.3.0 + */ + complete: boolean; + /** + * Alias for `message.socket`. + * @since v0.1.90 + * @deprecated Since v16.0.0 - Use `socket`. + */ + connection: Socket; + /** + * The `net.Socket` object associated with the connection. + * + * With HTTPS support, use `request.socket.getPeerCertificate()` to obtain the + * client's authentication details. + * + * This property is guaranteed to be an instance of the `net.Socket` class, + * a subclass of `stream.Duplex`, unless the user specified a socket + * type other than `net.Socket` or internally nulled. + * @since v0.3.0 + */ + socket: Socket; + /** + * The request/response headers object. + * + * Key-value pairs of header names and values. Header names are lower-cased. + * + * ```js + * // Prints something like: + * // + * // { 'user-agent': 'curl/7.22.0', + * // host: '127.0.0.1:8000', + * // accept: '*' } + * console.log(request.headers); + * ``` + * + * Duplicates in raw headers are handled in the following ways, depending on the + * header name: + * + * * Duplicates of `age`, `authorization`, `content-length`, `content-type`,`etag`, `expires`, `from`, `host`, `if-modified-since`, `if-unmodified-since`,`last-modified`, `location`, + * `max-forwards`, `proxy-authorization`, `referer`,`retry-after`, `server`, or `user-agent` are discarded. + * To allow duplicate values of the headers listed above to be joined, + * use the option `joinDuplicateHeaders` in {@link request} and {@link createServer}. See RFC 9110 Section 5.3 for more + * information. + * * `set-cookie` is always an array. Duplicates are added to the array. + * * For duplicate `cookie` headers, the values are joined together with `; `. + * * For all other headers, the values are joined together with `, `. + * @since v0.1.5 + */ + headers: IncomingHttpHeaders; + /** + * Similar to `message.headers`, but there is no join logic and the values are + * always arrays of strings, even for headers received just once. + * + * ```js + * // Prints something like: + * // + * // { 'user-agent': ['curl/7.22.0'], + * // host: ['127.0.0.1:8000'], + * // accept: ['*'] } + * console.log(request.headersDistinct); + * ``` + * @since v18.3.0, v16.17.0 + */ + headersDistinct: NodeJS.Dict; + /** + * The raw request/response headers list exactly as they were received. + * + * The keys and values are in the same list. It is _not_ a + * list of tuples. So, the even-numbered offsets are key values, and the + * odd-numbered offsets are the associated values. + * + * Header names are not lowercased, and duplicates are not merged. + * + * ```js + * // Prints something like: + * // + * // [ 'user-agent', + * // 'this is invalid because there can be only one', + * // 'User-Agent', + * // 'curl/7.22.0', + * // 'Host', + * // '127.0.0.1:8000', + * // 'ACCEPT', + * // '*' ] + * console.log(request.rawHeaders); + * ``` + * @since v0.11.6 + */ + rawHeaders: string[]; + /** + * The request/response trailers object. Only populated at the `'end'` event. + * @since v0.3.0 + */ + trailers: NodeJS.Dict; + /** + * Similar to `message.trailers`, but there is no join logic and the values are + * always arrays of strings, even for headers received just once. + * Only populated at the `'end'` event. + * @since v18.3.0, v16.17.0 + */ + trailersDistinct: NodeJS.Dict; + /** + * The raw request/response trailer keys and values exactly as they were + * received. Only populated at the `'end'` event. + * @since v0.11.6 + */ + rawTrailers: string[]; + /** + * Calls `message.socket.setTimeout(msecs, callback)`. + * @since v0.5.9 + */ + setTimeout(msecs: number, callback?: () => void): this; + /** + * **Only valid for request obtained from {@link Server}.** + * + * The request method as a string. Read only. Examples: `'GET'`, `'DELETE'`. + * @since v0.1.1 + */ + method?: string | undefined; + /** + * **Only valid for request obtained from {@link Server}.** + * + * Request URL string. This contains only the URL that is present in the actual + * HTTP request. Take the following request: + * + * ```http + * GET /status?name=ryan HTTP/1.1 + * Accept: text/plain + * ``` + * + * To parse the URL into its parts: + * + * ```js + * new URL(request.url, `http://${request.headers.host}`); + * ``` + * + * When `request.url` is `'/status?name=ryan'` and `request.headers.host` is`'localhost:3000'`: + * + * ```console + * $ node + * > new URL(request.url, `http://${request.headers.host}`) + * URL { + * href: 'http://localhost:3000/status?name=ryan', + * origin: 'http://localhost:3000', + * protocol: 'http:', + * username: '', + * password: '', + * host: 'localhost:3000', + * hostname: 'localhost', + * port: '3000', + * pathname: '/status', + * search: '?name=ryan', + * searchParams: URLSearchParams { 'name' => 'ryan' }, + * hash: '' + * } + * ``` + * @since v0.1.90 + */ + url?: string | undefined; + /** + * **Only valid for response obtained from {@link ClientRequest}.** + * + * The 3-digit HTTP response status code. E.G. `404`. + * @since v0.1.1 + */ + statusCode?: number | undefined; + /** + * **Only valid for response obtained from {@link ClientRequest}.** + * + * The HTTP response status message (reason phrase). E.G. `OK` or `Internal Server Error`. + * @since v0.11.10 + */ + statusMessage?: string | undefined; + /** + * Calls `destroy()` on the socket that received the `IncomingMessage`. If `error`is provided, an `'error'` event is emitted on the socket and `error` is passed + * as an argument to any listeners on the event. + * @since v0.3.0 + */ + destroy(error?: Error): this; + } + interface AgentOptions extends Partial { + /** + * Keep sockets around in a pool to be used by other requests in the future. Default = false + */ + keepAlive?: boolean | undefined; + /** + * When using HTTP KeepAlive, how often to send TCP KeepAlive packets over sockets being kept alive. Default = 1000. + * Only relevant if keepAlive is set to true. + */ + keepAliveMsecs?: number | undefined; + /** + * Maximum number of sockets to allow per host. Default for Node 0.10 is 5, default for Node 0.12 is Infinity + */ + maxSockets?: number | undefined; + /** + * Maximum number of sockets allowed for all hosts in total. Each request will use a new socket until the maximum is reached. Default: Infinity. + */ + maxTotalSockets?: number | undefined; + /** + * Maximum number of sockets to leave open in a free state. Only relevant if keepAlive is set to true. Default = 256. + */ + maxFreeSockets?: number | undefined; + /** + * Socket timeout in milliseconds. This will set the timeout after the socket is connected. + */ + timeout?: number | undefined; + /** + * Scheduling strategy to apply when picking the next free socket to use. + * @default `lifo` + */ + scheduling?: "fifo" | "lifo" | undefined; + } + /** + * An `Agent` is responsible for managing connection persistence + * and reuse for HTTP clients. It maintains a queue of pending requests + * for a given host and port, reusing a single socket connection for each + * until the queue is empty, at which time the socket is either destroyed + * or put into a pool where it is kept to be used again for requests to the + * same host and port. Whether it is destroyed or pooled depends on the`keepAlive` `option`. + * + * Pooled connections have TCP Keep-Alive enabled for them, but servers may + * still close idle connections, in which case they will be removed from the + * pool and a new connection will be made when a new HTTP request is made for + * that host and port. Servers may also refuse to allow multiple requests + * over the same connection, in which case the connection will have to be + * remade for every request and cannot be pooled. The `Agent` will still make + * the requests to that server, but each one will occur over a new connection. + * + * When a connection is closed by the client or the server, it is removed + * from the pool. Any unused sockets in the pool will be unrefed so as not + * to keep the Node.js process running when there are no outstanding requests. + * (see `socket.unref()`). + * + * It is good practice, to `destroy()` an `Agent` instance when it is no + * longer in use, because unused sockets consume OS resources. + * + * Sockets are removed from an agent when the socket emits either + * a `'close'` event or an `'agentRemove'` event. When intending to keep one + * HTTP request open for a long time without keeping it in the agent, something + * like the following may be done: + * + * ```js + * http.get(options, (res) => { + * // Do stuff + * }).on('socket', (socket) => { + * socket.emit('agentRemove'); + * }); + * ``` + * + * An agent may also be used for an individual request. By providing`{agent: false}` as an option to the `http.get()` or `http.request()`functions, a one-time use `Agent` with default options + * will be used + * for the client connection. + * + * `agent:false`: + * + * ```js + * http.get({ + * hostname: 'localhost', + * port: 80, + * path: '/', + * agent: false, // Create a new agent just for this one request + * }, (res) => { + * // Do stuff with response + * }); + * ``` + * @since v0.3.4 + */ + class Agent extends EventEmitter { + /** + * By default set to 256. For agents with `keepAlive` enabled, this + * sets the maximum number of sockets that will be left open in the free + * state. + * @since v0.11.7 + */ + maxFreeSockets: number; + /** + * By default set to `Infinity`. Determines how many concurrent sockets the agent + * can have open per origin. Origin is the returned value of `agent.getName()`. + * @since v0.3.6 + */ + maxSockets: number; + /** + * By default set to `Infinity`. Determines how many concurrent sockets the agent + * can have open. Unlike `maxSockets`, this parameter applies across all origins. + * @since v14.5.0, v12.19.0 + */ + maxTotalSockets: number; + /** + * An object which contains arrays of sockets currently awaiting use by + * the agent when `keepAlive` is enabled. Do not modify. + * + * Sockets in the `freeSockets` list will be automatically destroyed and + * removed from the array on `'timeout'`. + * @since v0.11.4 + */ + readonly freeSockets: NodeJS.ReadOnlyDict; + /** + * An object which contains arrays of sockets currently in use by the + * agent. Do not modify. + * @since v0.3.6 + */ + readonly sockets: NodeJS.ReadOnlyDict; + /** + * An object which contains queues of requests that have not yet been assigned to + * sockets. Do not modify. + * @since v0.5.9 + */ + readonly requests: NodeJS.ReadOnlyDict; + constructor(opts?: AgentOptions); + /** + * Destroy any sockets that are currently in use by the agent. + * + * It is usually not necessary to do this. However, if using an + * agent with `keepAlive` enabled, then it is best to explicitly shut down + * the agent when it is no longer needed. Otherwise, + * sockets might stay open for quite a long time before the server + * terminates them. + * @since v0.11.4 + */ + destroy(): void; + } + const METHODS: string[]; + const STATUS_CODES: { + [errorCode: number]: string | undefined; + [errorCode: string]: string | undefined; + }; + /** + * Returns a new instance of {@link Server}. + * + * The `requestListener` is a function which is automatically + * added to the `'request'` event. + * + * ```js + * import http from 'node:http'; + * + * // Create a local server to receive data from + * const server = http.createServer((req, res) => { + * res.writeHead(200, { 'Content-Type': 'application/json' }); + * res.end(JSON.stringify({ + * data: 'Hello World!', + * })); + * }); + * + * server.listen(8000); + * ``` + * + * ```js + * import http from 'node:http'; + * + * // Create a local server to receive data from + * const server = http.createServer(); + * + * // Listen to the request event + * server.on('request', (request, res) => { + * res.writeHead(200, { 'Content-Type': 'application/json' }); + * res.end(JSON.stringify({ + * data: 'Hello World!', + * })); + * }); + * + * server.listen(8000); + * ``` + * @since v0.1.13 + */ + function createServer< + Request extends typeof IncomingMessage = typeof IncomingMessage, + Response extends typeof ServerResponse = typeof ServerResponse, + >(requestListener?: RequestListener): Server; + function createServer< + Request extends typeof IncomingMessage = typeof IncomingMessage, + Response extends typeof ServerResponse = typeof ServerResponse, + >( + options: ServerOptions, + requestListener?: RequestListener, + ): Server; + // although RequestOptions are passed as ClientRequestArgs to ClientRequest directly, + // create interface RequestOptions would make the naming more clear to developers + interface RequestOptions extends ClientRequestArgs {} + /** + * `options` in `socket.connect()` are also supported. + * + * Node.js maintains several connections per server to make HTTP requests. + * This function allows one to transparently issue requests. + * + * `url` can be a string or a `URL` object. If `url` is a + * string, it is automatically parsed with `new URL()`. If it is a `URL` object, it will be automatically converted to an ordinary `options` object. + * + * If both `url` and `options` are specified, the objects are merged, with the`options` properties taking precedence. + * + * The optional `callback` parameter will be added as a one-time listener for + * the `'response'` event. + * + * `http.request()` returns an instance of the {@link ClientRequest} class. The `ClientRequest` instance is a writable stream. If one needs to + * upload a file with a POST request, then write to the `ClientRequest` object. + * + * ```js + * import http from 'node:http'; + * import { Buffer } from 'node:buffer'; + * + * const postData = JSON.stringify({ + * 'msg': 'Hello World!', + * }); + * + * const options = { + * hostname: 'www.google.com', + * port: 80, + * path: '/upload', + * method: 'POST', + * headers: { + * 'Content-Type': 'application/json', + * 'Content-Length': Buffer.byteLength(postData), + * }, + * }; + * + * const req = http.request(options, (res) => { + * console.log(`STATUS: ${res.statusCode}`); + * console.log(`HEADERS: ${JSON.stringify(res.headers)}`); + * res.setEncoding('utf8'); + * res.on('data', (chunk) => { + * console.log(`BODY: ${chunk}`); + * }); + * res.on('end', () => { + * console.log('No more data in response.'); + * }); + * }); + * + * req.on('error', (e) => { + * console.error(`problem with request: ${e.message}`); + * }); + * + * // Write data to request body + * req.write(postData); + * req.end(); + * ``` + * + * In the example `req.end()` was called. With `http.request()` one + * must always call `req.end()` to signify the end of the request - + * even if there is no data being written to the request body. + * + * If any error is encountered during the request (be that with DNS resolution, + * TCP level errors, or actual HTTP parse errors) an `'error'` event is emitted + * on the returned request object. As with all `'error'` events, if no listeners + * are registered the error will be thrown. + * + * There are a few special headers that should be noted. + * + * * Sending a 'Connection: keep-alive' will notify Node.js that the connection to + * the server should be persisted until the next request. + * * Sending a 'Content-Length' header will disable the default chunked encoding. + * * Sending an 'Expect' header will immediately send the request headers. + * Usually, when sending 'Expect: 100-continue', both a timeout and a listener + * for the `'continue'` event should be set. See RFC 2616 Section 8.2.3 for more + * information. + * * Sending an Authorization header will override using the `auth` option + * to compute basic authentication. + * + * Example using a `URL` as `options`: + * + * ```js + * const options = new URL('http://abc:xyz@example.com'); + * + * const req = http.request(options, (res) => { + * // ... + * }); + * ``` + * + * In a successful request, the following events will be emitted in the following + * order: + * + * * `'socket'` + * * `'response'` + * * `'data'` any number of times, on the `res` object + * (`'data'` will not be emitted at all if the response body is empty, for + * instance, in most redirects) + * * `'end'` on the `res` object + * * `'close'` + * + * In the case of a connection error, the following events will be emitted: + * + * * `'socket'` + * * `'error'` + * * `'close'` + * + * In the case of a premature connection close before the response is received, + * the following events will be emitted in the following order: + * + * * `'socket'` + * * `'error'` with an error with message `'Error: socket hang up'` and code`'ECONNRESET'` + * * `'close'` + * + * In the case of a premature connection close after the response is received, + * the following events will be emitted in the following order: + * + * * `'socket'` + * * `'response'` + * * `'data'` any number of times, on the `res` object + * * (connection closed here) + * * `'aborted'` on the `res` object + * * `'error'` on the `res` object with an error with message`'Error: aborted'` and code `'ECONNRESET'` + * * `'close'` + * * `'close'` on the `res` object + * + * If `req.destroy()` is called before a socket is assigned, the following + * events will be emitted in the following order: + * + * * (`req.destroy()` called here) + * * `'error'` with an error with message `'Error: socket hang up'` and code`'ECONNRESET'`, or the error with which `req.destroy()` was called + * * `'close'` + * + * If `req.destroy()` is called before the connection succeeds, the following + * events will be emitted in the following order: + * + * * `'socket'` + * * (`req.destroy()` called here) + * * `'error'` with an error with message `'Error: socket hang up'` and code`'ECONNRESET'`, or the error with which `req.destroy()` was called + * * `'close'` + * + * If `req.destroy()` is called after the response is received, the following + * events will be emitted in the following order: + * + * * `'socket'` + * * `'response'` + * * `'data'` any number of times, on the `res` object + * * (`req.destroy()` called here) + * * `'aborted'` on the `res` object + * * `'error'` on the `res` object with an error with message `'Error: aborted'`and code `'ECONNRESET'`, or the error with which `req.destroy()` was called + * * `'close'` + * * `'close'` on the `res` object + * + * If `req.abort()` is called before a socket is assigned, the following + * events will be emitted in the following order: + * + * * (`req.abort()` called here) + * * `'abort'` + * * `'close'` + * + * If `req.abort()` is called before the connection succeeds, the following + * events will be emitted in the following order: + * + * * `'socket'` + * * (`req.abort()` called here) + * * `'abort'` + * * `'error'` with an error with message `'Error: socket hang up'` and code`'ECONNRESET'` + * * `'close'` + * + * If `req.abort()` is called after the response is received, the following + * events will be emitted in the following order: + * + * * `'socket'` + * * `'response'` + * * `'data'` any number of times, on the `res` object + * * (`req.abort()` called here) + * * `'abort'` + * * `'aborted'` on the `res` object + * * `'error'` on the `res` object with an error with message`'Error: aborted'` and code `'ECONNRESET'`. + * * `'close'` + * * `'close'` on the `res` object + * + * Setting the `timeout` option or using the `setTimeout()` function will + * not abort the request or do anything besides add a `'timeout'` event. + * + * Passing an `AbortSignal` and then calling `abort()` on the corresponding`AbortController` will behave the same way as calling `.destroy()` on the + * request. Specifically, the `'error'` event will be emitted with an error with + * the message `'AbortError: The operation was aborted'`, the code `'ABORT_ERR'`and the `cause`, if one was provided. + * @since v0.3.6 + */ + function request(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest; + function request( + url: string | URL, + options: RequestOptions, + callback?: (res: IncomingMessage) => void, + ): ClientRequest; + /** + * Since most requests are GET requests without bodies, Node.js provides this + * convenience method. The only difference between this method and {@link request} is that it sets the method to GET by default and calls `req.end()`automatically. The callback must take care to + * consume the response + * data for reasons stated in {@link ClientRequest} section. + * + * The `callback` is invoked with a single argument that is an instance of {@link IncomingMessage}. + * + * JSON fetching example: + * + * ```js + * http.get('http://localhost:8000/', (res) => { + * const { statusCode } = res; + * const contentType = res.headers['content-type']; + * + * let error; + * // Any 2xx status code signals a successful response but + * // here we're only checking for 200. + * if (statusCode !== 200) { + * error = new Error('Request Failed.\n' + + * `Status Code: ${statusCode}`); + * } else if (!/^application\/json/.test(contentType)) { + * error = new Error('Invalid content-type.\n' + + * `Expected application/json but received ${contentType}`); + * } + * if (error) { + * console.error(error.message); + * // Consume response data to free up memory + * res.resume(); + * return; + * } + * + * res.setEncoding('utf8'); + * let rawData = ''; + * res.on('data', (chunk) => { rawData += chunk; }); + * res.on('end', () => { + * try { + * const parsedData = JSON.parse(rawData); + * console.log(parsedData); + * } catch (e) { + * console.error(e.message); + * } + * }); + * }).on('error', (e) => { + * console.error(`Got error: ${e.message}`); + * }); + * + * // Create a local server to receive data from + * const server = http.createServer((req, res) => { + * res.writeHead(200, { 'Content-Type': 'application/json' }); + * res.end(JSON.stringify({ + * data: 'Hello World!', + * })); + * }); + * + * server.listen(8000); + * ``` + * @since v0.3.6 + * @param options Accepts the same `options` as {@link request}, with the method set to GET by default. + */ + function get(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest; + function get(url: string | URL, options: RequestOptions, callback?: (res: IncomingMessage) => void): ClientRequest; + /** + * Performs the low-level validations on the provided `name` that are done when`res.setHeader(name, value)` is called. + * + * Passing illegal value as `name` will result in a `TypeError` being thrown, + * identified by `code: 'ERR_INVALID_HTTP_TOKEN'`. + * + * It is not necessary to use this method before passing headers to an HTTP request + * or response. The HTTP module will automatically validate such headers. + * Examples: + * + * Example: + * + * ```js + * import { validateHeaderName } from 'node:http'; + * + * try { + * validateHeaderName(''); + * } catch (err) { + * console.error(err instanceof TypeError); // --> true + * console.error(err.code); // --> 'ERR_INVALID_HTTP_TOKEN' + * console.error(err.message); // --> 'Header name must be a valid HTTP token [""]' + * } + * ``` + * @since v14.3.0 + * @param [label='Header name'] Label for error message. + */ + function validateHeaderName(name: string): void; + /** + * Performs the low-level validations on the provided `value` that are done when`res.setHeader(name, value)` is called. + * + * Passing illegal value as `value` will result in a `TypeError` being thrown. + * + * * Undefined value error is identified by `code: 'ERR_HTTP_INVALID_HEADER_VALUE'`. + * * Invalid value character error is identified by `code: 'ERR_INVALID_CHAR'`. + * + * It is not necessary to use this method before passing headers to an HTTP request + * or response. The HTTP module will automatically validate such headers. + * + * Examples: + * + * ```js + * import { validateHeaderValue } from 'node:http'; + * + * try { + * validateHeaderValue('x-my-header', undefined); + * } catch (err) { + * console.error(err instanceof TypeError); // --> true + * console.error(err.code === 'ERR_HTTP_INVALID_HEADER_VALUE'); // --> true + * console.error(err.message); // --> 'Invalid value "undefined" for header "x-my-header"' + * } + * + * try { + * validateHeaderValue('x-my-header', 'oʊmɪɡə'); + * } catch (err) { + * console.error(err instanceof TypeError); // --> true + * console.error(err.code === 'ERR_INVALID_CHAR'); // --> true + * console.error(err.message); // --> 'Invalid character in header content ["x-my-header"]' + * } + * ``` + * @since v14.3.0 + * @param name Header name + * @param value Header value + */ + function validateHeaderValue(name: string, value: string): void; + /** + * Set the maximum number of idle HTTP parsers. + * @since v18.8.0, v16.18.0 + * @param [max=1000] + */ + function setMaxIdleHTTPParsers(max: number): void; + let globalAgent: Agent; + /** + * Read-only property specifying the maximum allowed size of HTTP headers in bytes. + * Defaults to 16KB. Configurable using the `--max-http-header-size` CLI option. + */ + const maxHeaderSize: number; +} +declare module "node:http" { + export * from "http"; +} diff --git a/node_modules/@types/node/http2.d.ts b/node_modules/@types/node/http2.d.ts new file mode 100644 index 00000000..7f0dd575 --- /dev/null +++ b/node_modules/@types/node/http2.d.ts @@ -0,0 +1,2381 @@ +/** + * The `node:http2` module provides an implementation of the [HTTP/2](https://tools.ietf.org/html/rfc7540) protocol. + * It can be accessed using: + * + * ```js + * const http2 = require('node:http2'); + * ``` + * @since v8.4.0 + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/http2.js) + */ +declare module "http2" { + import EventEmitter = require("node:events"); + import * as fs from "node:fs"; + import * as net from "node:net"; + import * as stream from "node:stream"; + import * as tls from "node:tls"; + import * as url from "node:url"; + import { + IncomingHttpHeaders as Http1IncomingHttpHeaders, + IncomingMessage, + OutgoingHttpHeaders, + ServerResponse, + } from "node:http"; + export { OutgoingHttpHeaders } from "node:http"; + export interface IncomingHttpStatusHeader { + ":status"?: number | undefined; + } + export interface IncomingHttpHeaders extends Http1IncomingHttpHeaders { + ":path"?: string | undefined; + ":method"?: string | undefined; + ":authority"?: string | undefined; + ":scheme"?: string | undefined; + } + // Http2Stream + export interface StreamPriorityOptions { + exclusive?: boolean | undefined; + parent?: number | undefined; + weight?: number | undefined; + silent?: boolean | undefined; + } + export interface StreamState { + localWindowSize?: number | undefined; + state?: number | undefined; + localClose?: number | undefined; + remoteClose?: number | undefined; + sumDependencyWeight?: number | undefined; + weight?: number | undefined; + } + export interface ServerStreamResponseOptions { + endStream?: boolean | undefined; + waitForTrailers?: boolean | undefined; + } + export interface StatOptions { + offset: number; + length: number; + } + export interface ServerStreamFileResponseOptions { + statCheck?(stats: fs.Stats, headers: OutgoingHttpHeaders, statOptions: StatOptions): void | boolean; + waitForTrailers?: boolean | undefined; + offset?: number | undefined; + length?: number | undefined; + } + export interface ServerStreamFileResponseOptionsWithError extends ServerStreamFileResponseOptions { + onError?(err: NodeJS.ErrnoException): void; + } + export interface Http2Stream extends stream.Duplex { + /** + * Set to `true` if the `Http2Stream` instance was aborted abnormally. When set, + * the `'aborted'` event will have been emitted. + * @since v8.4.0 + */ + readonly aborted: boolean; + /** + * This property shows the number of characters currently buffered to be written. + * See `net.Socket.bufferSize` for details. + * @since v11.2.0, v10.16.0 + */ + readonly bufferSize: number; + /** + * Set to `true` if the `Http2Stream` instance has been closed. + * @since v9.4.0 + */ + readonly closed: boolean; + /** + * Set to `true` if the `Http2Stream` instance has been destroyed and is no longer + * usable. + * @since v8.4.0 + */ + readonly destroyed: boolean; + /** + * Set to `true` if the `END_STREAM` flag was set in the request or response + * HEADERS frame received, indicating that no additional data should be received + * and the readable side of the `Http2Stream` will be closed. + * @since v10.11.0 + */ + readonly endAfterHeaders: boolean; + /** + * The numeric stream identifier of this `Http2Stream` instance. Set to `undefined`if the stream identifier has not yet been assigned. + * @since v8.4.0 + */ + readonly id?: number | undefined; + /** + * Set to `true` if the `Http2Stream` instance has not yet been assigned a + * numeric stream identifier. + * @since v9.4.0 + */ + readonly pending: boolean; + /** + * Set to the `RST_STREAM` `error code` reported when the `Http2Stream` is + * destroyed after either receiving an `RST_STREAM` frame from the connected peer, + * calling `http2stream.close()`, or `http2stream.destroy()`. Will be`undefined` if the `Http2Stream` has not been closed. + * @since v8.4.0 + */ + readonly rstCode: number; + /** + * An object containing the outbound headers sent for this `Http2Stream`. + * @since v9.5.0 + */ + readonly sentHeaders: OutgoingHttpHeaders; + /** + * An array of objects containing the outbound informational (additional) headers + * sent for this `Http2Stream`. + * @since v9.5.0 + */ + readonly sentInfoHeaders?: OutgoingHttpHeaders[] | undefined; + /** + * An object containing the outbound trailers sent for this `HttpStream`. + * @since v9.5.0 + */ + readonly sentTrailers?: OutgoingHttpHeaders | undefined; + /** + * A reference to the `Http2Session` instance that owns this `Http2Stream`. The + * value will be `undefined` after the `Http2Stream` instance is destroyed. + * @since v8.4.0 + */ + readonly session: Http2Session | undefined; + /** + * Provides miscellaneous information about the current state of the`Http2Stream`. + * + * A current state of this `Http2Stream`. + * @since v8.4.0 + */ + readonly state: StreamState; + /** + * Closes the `Http2Stream` instance by sending an `RST_STREAM` frame to the + * connected HTTP/2 peer. + * @since v8.4.0 + * @param [code=http2.constants.NGHTTP2_NO_ERROR] Unsigned 32-bit integer identifying the error code. + * @param callback An optional function registered to listen for the `'close'` event. + */ + close(code?: number, callback?: () => void): void; + /** + * Updates the priority for this `Http2Stream` instance. + * @since v8.4.0 + */ + priority(options: StreamPriorityOptions): void; + /** + * ```js + * const http2 = require('node:http2'); + * const client = http2.connect('http://example.org:8000'); + * const { NGHTTP2_CANCEL } = http2.constants; + * const req = client.request({ ':path': '/' }); + * + * // Cancel the stream if there's no activity after 5 seconds + * req.setTimeout(5000, () => req.close(NGHTTP2_CANCEL)); + * ``` + * @since v8.4.0 + */ + setTimeout(msecs: number, callback?: () => void): void; + /** + * Sends a trailing `HEADERS` frame to the connected HTTP/2 peer. This method + * will cause the `Http2Stream` to be immediately closed and must only be + * called after the `'wantTrailers'` event has been emitted. When sending a + * request or sending a response, the `options.waitForTrailers` option must be set + * in order to keep the `Http2Stream` open after the final `DATA` frame so that + * trailers can be sent. + * + * ```js + * const http2 = require('node:http2'); + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * stream.respond(undefined, { waitForTrailers: true }); + * stream.on('wantTrailers', () => { + * stream.sendTrailers({ xyz: 'abc' }); + * }); + * stream.end('Hello World'); + * }); + * ``` + * + * The HTTP/1 specification forbids trailers from containing HTTP/2 pseudo-header + * fields (e.g. `':method'`, `':path'`, etc). + * @since v10.0.0 + */ + sendTrailers(headers: OutgoingHttpHeaders): void; + addListener(event: "aborted", listener: () => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "data", listener: (chunk: Buffer | string) => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; + addListener(event: "pipe", listener: (src: stream.Readable) => void): this; + addListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + addListener(event: "streamClosed", listener: (code: number) => void): this; + addListener(event: "timeout", listener: () => void): this; + addListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; + addListener(event: "wantTrailers", listener: () => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "aborted"): boolean; + emit(event: "close"): boolean; + emit(event: "data", chunk: Buffer | string): boolean; + emit(event: "drain"): boolean; + emit(event: "end"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "finish"): boolean; + emit(event: "frameError", frameType: number, errorCode: number): boolean; + emit(event: "pipe", src: stream.Readable): boolean; + emit(event: "unpipe", src: stream.Readable): boolean; + emit(event: "streamClosed", code: number): boolean; + emit(event: "timeout"): boolean; + emit(event: "trailers", trailers: IncomingHttpHeaders, flags: number): boolean; + emit(event: "wantTrailers"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "aborted", listener: () => void): this; + on(event: "close", listener: () => void): this; + on(event: "data", listener: (chunk: Buffer | string) => void): this; + on(event: "drain", listener: () => void): this; + on(event: "end", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; + on(event: "pipe", listener: (src: stream.Readable) => void): this; + on(event: "unpipe", listener: (src: stream.Readable) => void): this; + on(event: "streamClosed", listener: (code: number) => void): this; + on(event: "timeout", listener: () => void): this; + on(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; + on(event: "wantTrailers", listener: () => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "aborted", listener: () => void): this; + once(event: "close", listener: () => void): this; + once(event: "data", listener: (chunk: Buffer | string) => void): this; + once(event: "drain", listener: () => void): this; + once(event: "end", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; + once(event: "pipe", listener: (src: stream.Readable) => void): this; + once(event: "unpipe", listener: (src: stream.Readable) => void): this; + once(event: "streamClosed", listener: (code: number) => void): this; + once(event: "timeout", listener: () => void): this; + once(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; + once(event: "wantTrailers", listener: () => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "aborted", listener: () => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; + prependListener(event: "pipe", listener: (src: stream.Readable) => void): this; + prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + prependListener(event: "streamClosed", listener: (code: number) => void): this; + prependListener(event: "timeout", listener: () => void): this; + prependListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; + prependListener(event: "wantTrailers", listener: () => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "aborted", listener: () => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; + prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this; + prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + prependOnceListener(event: "streamClosed", listener: (code: number) => void): this; + prependOnceListener(event: "timeout", listener: () => void): this; + prependOnceListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; + prependOnceListener(event: "wantTrailers", listener: () => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + export interface ClientHttp2Stream extends Http2Stream { + addListener(event: "continue", listener: () => {}): this; + addListener( + event: "headers", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + addListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; + addListener( + event: "response", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "continue"): boolean; + emit(event: "headers", headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean; + emit(event: "push", headers: IncomingHttpHeaders, flags: number): boolean; + emit(event: "response", headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "continue", listener: () => {}): this; + on( + event: "headers", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + on(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; + on( + event: "response", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "continue", listener: () => {}): this; + once( + event: "headers", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + once(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; + once( + event: "response", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "continue", listener: () => {}): this; + prependListener( + event: "headers", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + prependListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; + prependListener( + event: "response", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "continue", listener: () => {}): this; + prependOnceListener( + event: "headers", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + prependOnceListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; + prependOnceListener( + event: "response", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + export interface ServerHttp2Stream extends Http2Stream { + /** + * True if headers were sent, false otherwise (read-only). + * @since v8.4.0 + */ + readonly headersSent: boolean; + /** + * Read-only property mapped to the `SETTINGS_ENABLE_PUSH` flag of the remote + * client's most recent `SETTINGS` frame. Will be `true` if the remote peer + * accepts push streams, `false` otherwise. Settings are the same for every`Http2Stream` in the same `Http2Session`. + * @since v8.4.0 + */ + readonly pushAllowed: boolean; + /** + * Sends an additional informational `HEADERS` frame to the connected HTTP/2 peer. + * @since v8.4.0 + */ + additionalHeaders(headers: OutgoingHttpHeaders): void; + /** + * Initiates a push stream. The callback is invoked with the new `Http2Stream`instance created for the push stream passed as the second argument, or an`Error` passed as the first argument. + * + * ```js + * const http2 = require('node:http2'); + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * stream.respond({ ':status': 200 }); + * stream.pushStream({ ':path': '/' }, (err, pushStream, headers) => { + * if (err) throw err; + * pushStream.respond({ ':status': 200 }); + * pushStream.end('some pushed data'); + * }); + * stream.end('some data'); + * }); + * ``` + * + * Setting the weight of a push stream is not allowed in the `HEADERS` frame. Pass + * a `weight` value to `http2stream.priority` with the `silent` option set to`true` to enable server-side bandwidth balancing between concurrent streams. + * + * Calling `http2stream.pushStream()` from within a pushed stream is not permitted + * and will throw an error. + * @since v8.4.0 + * @param callback Callback that is called once the push stream has been initiated. + */ + pushStream( + headers: OutgoingHttpHeaders, + callback?: (err: Error | null, pushStream: ServerHttp2Stream, headers: OutgoingHttpHeaders) => void, + ): void; + pushStream( + headers: OutgoingHttpHeaders, + options?: StreamPriorityOptions, + callback?: (err: Error | null, pushStream: ServerHttp2Stream, headers: OutgoingHttpHeaders) => void, + ): void; + /** + * ```js + * const http2 = require('node:http2'); + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * stream.respond({ ':status': 200 }); + * stream.end('some data'); + * }); + * ``` + * + * Initiates a response. When the `options.waitForTrailers` option is set, the`'wantTrailers'` event will be emitted immediately after queuing the last chunk + * of payload data to be sent. The `http2stream.sendTrailers()` method can then be + * used to sent trailing header fields to the peer. + * + * When `options.waitForTrailers` is set, the `Http2Stream` will not automatically + * close when the final `DATA` frame is transmitted. User code must call either`http2stream.sendTrailers()` or `http2stream.close()` to close the`Http2Stream`. + * + * ```js + * const http2 = require('node:http2'); + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * stream.respond({ ':status': 200 }, { waitForTrailers: true }); + * stream.on('wantTrailers', () => { + * stream.sendTrailers({ ABC: 'some value to send' }); + * }); + * stream.end('some data'); + * }); + * ``` + * @since v8.4.0 + */ + respond(headers?: OutgoingHttpHeaders, options?: ServerStreamResponseOptions): void; + /** + * Initiates a response whose data is read from the given file descriptor. No + * validation is performed on the given file descriptor. If an error occurs while + * attempting to read data using the file descriptor, the `Http2Stream` will be + * closed using an `RST_STREAM` frame using the standard `INTERNAL_ERROR` code. + * + * When used, the `Http2Stream` object's `Duplex` interface will be closed + * automatically. + * + * ```js + * const http2 = require('node:http2'); + * const fs = require('node:fs'); + * + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * const fd = fs.openSync('/some/file', 'r'); + * + * const stat = fs.fstatSync(fd); + * const headers = { + * 'content-length': stat.size, + * 'last-modified': stat.mtime.toUTCString(), + * 'content-type': 'text/plain; charset=utf-8', + * }; + * stream.respondWithFD(fd, headers); + * stream.on('close', () => fs.closeSync(fd)); + * }); + * ``` + * + * The optional `options.statCheck` function may be specified to give user code + * an opportunity to set additional content headers based on the `fs.Stat` details + * of the given fd. If the `statCheck` function is provided, the`http2stream.respondWithFD()` method will perform an `fs.fstat()` call to + * collect details on the provided file descriptor. + * + * The `offset` and `length` options may be used to limit the response to a + * specific range subset. This can be used, for instance, to support HTTP Range + * requests. + * + * The file descriptor or `FileHandle` is not closed when the stream is closed, + * so it will need to be closed manually once it is no longer needed. + * Using the same file descriptor concurrently for multiple streams + * is not supported and may result in data loss. Re-using a file descriptor + * after a stream has finished is supported. + * + * When the `options.waitForTrailers` option is set, the `'wantTrailers'` event + * will be emitted immediately after queuing the last chunk of payload data to be + * sent. The `http2stream.sendTrailers()` method can then be used to sent trailing + * header fields to the peer. + * + * When `options.waitForTrailers` is set, the `Http2Stream` will not automatically + * close when the final `DATA` frame is transmitted. User code _must_ call either`http2stream.sendTrailers()` or `http2stream.close()` to close the`Http2Stream`. + * + * ```js + * const http2 = require('node:http2'); + * const fs = require('node:fs'); + * + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * const fd = fs.openSync('/some/file', 'r'); + * + * const stat = fs.fstatSync(fd); + * const headers = { + * 'content-length': stat.size, + * 'last-modified': stat.mtime.toUTCString(), + * 'content-type': 'text/plain; charset=utf-8', + * }; + * stream.respondWithFD(fd, headers, { waitForTrailers: true }); + * stream.on('wantTrailers', () => { + * stream.sendTrailers({ ABC: 'some value to send' }); + * }); + * + * stream.on('close', () => fs.closeSync(fd)); + * }); + * ``` + * @since v8.4.0 + * @param fd A readable file descriptor. + */ + respondWithFD( + fd: number | fs.promises.FileHandle, + headers?: OutgoingHttpHeaders, + options?: ServerStreamFileResponseOptions, + ): void; + /** + * Sends a regular file as the response. The `path` must specify a regular file + * or an `'error'` event will be emitted on the `Http2Stream` object. + * + * When used, the `Http2Stream` object's `Duplex` interface will be closed + * automatically. + * + * The optional `options.statCheck` function may be specified to give user code + * an opportunity to set additional content headers based on the `fs.Stat` details + * of the given file: + * + * If an error occurs while attempting to read the file data, the `Http2Stream`will be closed using an `RST_STREAM` frame using the standard `INTERNAL_ERROR`code. If the `onError` callback is + * defined, then it will be called. Otherwise + * the stream will be destroyed. + * + * Example using a file path: + * + * ```js + * const http2 = require('node:http2'); + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * function statCheck(stat, headers) { + * headers['last-modified'] = stat.mtime.toUTCString(); + * } + * + * function onError(err) { + * // stream.respond() can throw if the stream has been destroyed by + * // the other side. + * try { + * if (err.code === 'ENOENT') { + * stream.respond({ ':status': 404 }); + * } else { + * stream.respond({ ':status': 500 }); + * } + * } catch (err) { + * // Perform actual error handling. + * console.error(err); + * } + * stream.end(); + * } + * + * stream.respondWithFile('/some/file', + * { 'content-type': 'text/plain; charset=utf-8' }, + * { statCheck, onError }); + * }); + * ``` + * + * The `options.statCheck` function may also be used to cancel the send operation + * by returning `false`. For instance, a conditional request may check the stat + * results to determine if the file has been modified to return an appropriate`304` response: + * + * ```js + * const http2 = require('node:http2'); + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * function statCheck(stat, headers) { + * // Check the stat here... + * stream.respond({ ':status': 304 }); + * return false; // Cancel the send operation + * } + * stream.respondWithFile('/some/file', + * { 'content-type': 'text/plain; charset=utf-8' }, + * { statCheck }); + * }); + * ``` + * + * The `content-length` header field will be automatically set. + * + * The `offset` and `length` options may be used to limit the response to a + * specific range subset. This can be used, for instance, to support HTTP Range + * requests. + * + * The `options.onError` function may also be used to handle all the errors + * that could happen before the delivery of the file is initiated. The + * default behavior is to destroy the stream. + * + * When the `options.waitForTrailers` option is set, the `'wantTrailers'` event + * will be emitted immediately after queuing the last chunk of payload data to be + * sent. The `http2stream.sendTrailers()` method can then be used to sent trailing + * header fields to the peer. + * + * When `options.waitForTrailers` is set, the `Http2Stream` will not automatically + * close when the final `DATA` frame is transmitted. User code must call either`http2stream.sendTrailers()` or `http2stream.close()` to close the`Http2Stream`. + * + * ```js + * const http2 = require('node:http2'); + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * stream.respondWithFile('/some/file', + * { 'content-type': 'text/plain; charset=utf-8' }, + * { waitForTrailers: true }); + * stream.on('wantTrailers', () => { + * stream.sendTrailers({ ABC: 'some value to send' }); + * }); + * }); + * ``` + * @since v8.4.0 + */ + respondWithFile( + path: string, + headers?: OutgoingHttpHeaders, + options?: ServerStreamFileResponseOptionsWithError, + ): void; + } + // Http2Session + export interface Settings { + headerTableSize?: number | undefined; + enablePush?: boolean | undefined; + initialWindowSize?: number | undefined; + maxFrameSize?: number | undefined; + maxConcurrentStreams?: number | undefined; + maxHeaderListSize?: number | undefined; + enableConnectProtocol?: boolean | undefined; + } + export interface ClientSessionRequestOptions { + endStream?: boolean | undefined; + exclusive?: boolean | undefined; + parent?: number | undefined; + weight?: number | undefined; + waitForTrailers?: boolean | undefined; + signal?: AbortSignal | undefined; + } + export interface SessionState { + effectiveLocalWindowSize?: number | undefined; + effectiveRecvDataLength?: number | undefined; + nextStreamID?: number | undefined; + localWindowSize?: number | undefined; + lastProcStreamID?: number | undefined; + remoteWindowSize?: number | undefined; + outboundQueueSize?: number | undefined; + deflateDynamicTableSize?: number | undefined; + inflateDynamicTableSize?: number | undefined; + } + export interface Http2Session extends EventEmitter { + /** + * Value will be `undefined` if the `Http2Session` is not yet connected to a + * socket, `h2c` if the `Http2Session` is not connected to a `TLSSocket`, or + * will return the value of the connected `TLSSocket`'s own `alpnProtocol`property. + * @since v9.4.0 + */ + readonly alpnProtocol?: string | undefined; + /** + * Will be `true` if this `Http2Session` instance has been closed, otherwise`false`. + * @since v9.4.0 + */ + readonly closed: boolean; + /** + * Will be `true` if this `Http2Session` instance is still connecting, will be set + * to `false` before emitting `connect` event and/or calling the `http2.connect`callback. + * @since v10.0.0 + */ + readonly connecting: boolean; + /** + * Will be `true` if this `Http2Session` instance has been destroyed and must no + * longer be used, otherwise `false`. + * @since v8.4.0 + */ + readonly destroyed: boolean; + /** + * Value is `undefined` if the `Http2Session` session socket has not yet been + * connected, `true` if the `Http2Session` is connected with a `TLSSocket`, + * and `false` if the `Http2Session` is connected to any other kind of socket + * or stream. + * @since v9.4.0 + */ + readonly encrypted?: boolean | undefined; + /** + * A prototype-less object describing the current local settings of this`Http2Session`. The local settings are local to _this_`Http2Session` instance. + * @since v8.4.0 + */ + readonly localSettings: Settings; + /** + * If the `Http2Session` is connected to a `TLSSocket`, the `originSet` property + * will return an `Array` of origins for which the `Http2Session` may be + * considered authoritative. + * + * The `originSet` property is only available when using a secure TLS connection. + * @since v9.4.0 + */ + readonly originSet?: string[] | undefined; + /** + * Indicates whether the `Http2Session` is currently waiting for acknowledgment of + * a sent `SETTINGS` frame. Will be `true` after calling the`http2session.settings()` method. Will be `false` once all sent `SETTINGS`frames have been acknowledged. + * @since v8.4.0 + */ + readonly pendingSettingsAck: boolean; + /** + * A prototype-less object describing the current remote settings of this`Http2Session`. The remote settings are set by the _connected_ HTTP/2 peer. + * @since v8.4.0 + */ + readonly remoteSettings: Settings; + /** + * Returns a `Proxy` object that acts as a `net.Socket` (or `tls.TLSSocket`) but + * limits available methods to ones safe to use with HTTP/2. + * + * `destroy`, `emit`, `end`, `pause`, `read`, `resume`, and `write` will throw + * an error with code `ERR_HTTP2_NO_SOCKET_MANIPULATION`. See `Http2Session and Sockets` for more information. + * + * `setTimeout` method will be called on this `Http2Session`. + * + * All other interactions will be routed directly to the socket. + * @since v8.4.0 + */ + readonly socket: net.Socket | tls.TLSSocket; + /** + * Provides miscellaneous information about the current state of the`Http2Session`. + * + * An object describing the current status of this `Http2Session`. + * @since v8.4.0 + */ + readonly state: SessionState; + /** + * The `http2session.type` will be equal to`http2.constants.NGHTTP2_SESSION_SERVER` if this `Http2Session` instance is a + * server, and `http2.constants.NGHTTP2_SESSION_CLIENT` if the instance is a + * client. + * @since v8.4.0 + */ + readonly type: number; + /** + * Gracefully closes the `Http2Session`, allowing any existing streams to + * complete on their own and preventing new `Http2Stream` instances from being + * created. Once closed, `http2session.destroy()`_might_ be called if there + * are no open `Http2Stream` instances. + * + * If specified, the `callback` function is registered as a handler for the`'close'` event. + * @since v9.4.0 + */ + close(callback?: () => void): void; + /** + * Immediately terminates the `Http2Session` and the associated `net.Socket` or`tls.TLSSocket`. + * + * Once destroyed, the `Http2Session` will emit the `'close'` event. If `error`is not undefined, an `'error'` event will be emitted immediately before the`'close'` event. + * + * If there are any remaining open `Http2Streams` associated with the`Http2Session`, those will also be destroyed. + * @since v8.4.0 + * @param error An `Error` object if the `Http2Session` is being destroyed due to an error. + * @param code The HTTP/2 error code to send in the final `GOAWAY` frame. If unspecified, and `error` is not undefined, the default is `INTERNAL_ERROR`, otherwise defaults to `NO_ERROR`. + */ + destroy(error?: Error, code?: number): void; + /** + * Transmits a `GOAWAY` frame to the connected peer _without_ shutting down the`Http2Session`. + * @since v9.4.0 + * @param code An HTTP/2 error code + * @param lastStreamID The numeric ID of the last processed `Http2Stream` + * @param opaqueData A `TypedArray` or `DataView` instance containing additional data to be carried within the `GOAWAY` frame. + */ + goaway(code?: number, lastStreamID?: number, opaqueData?: NodeJS.ArrayBufferView): void; + /** + * Sends a `PING` frame to the connected HTTP/2 peer. A `callback` function must + * be provided. The method will return `true` if the `PING` was sent, `false`otherwise. + * + * The maximum number of outstanding (unacknowledged) pings is determined by the`maxOutstandingPings` configuration option. The default maximum is 10. + * + * If provided, the `payload` must be a `Buffer`, `TypedArray`, or `DataView`containing 8 bytes of data that will be transmitted with the `PING` and + * returned with the ping acknowledgment. + * + * The callback will be invoked with three arguments: an error argument that will + * be `null` if the `PING` was successfully acknowledged, a `duration` argument + * that reports the number of milliseconds elapsed since the ping was sent and the + * acknowledgment was received, and a `Buffer` containing the 8-byte `PING`payload. + * + * ```js + * session.ping(Buffer.from('abcdefgh'), (err, duration, payload) => { + * if (!err) { + * console.log(`Ping acknowledged in ${duration} milliseconds`); + * console.log(`With payload '${payload.toString()}'`); + * } + * }); + * ``` + * + * If the `payload` argument is not specified, the default payload will be the + * 64-bit timestamp (little endian) marking the start of the `PING` duration. + * @since v8.9.3 + * @param payload Optional ping payload. + */ + ping(callback: (err: Error | null, duration: number, payload: Buffer) => void): boolean; + ping( + payload: NodeJS.ArrayBufferView, + callback: (err: Error | null, duration: number, payload: Buffer) => void, + ): boolean; + /** + * Calls `ref()` on this `Http2Session`instance's underlying `net.Socket`. + * @since v9.4.0 + */ + ref(): void; + /** + * Sets the local endpoint's window size. + * The `windowSize` is the total window size to set, not + * the delta. + * + * ```js + * const http2 = require('node:http2'); + * + * const server = http2.createServer(); + * const expectedWindowSize = 2 ** 20; + * server.on('connect', (session) => { + * + * // Set local window size to be 2 ** 20 + * session.setLocalWindowSize(expectedWindowSize); + * }); + * ``` + * @since v15.3.0, v14.18.0 + */ + setLocalWindowSize(windowSize: number): void; + /** + * Used to set a callback function that is called when there is no activity on + * the `Http2Session` after `msecs` milliseconds. The given `callback` is + * registered as a listener on the `'timeout'` event. + * @since v8.4.0 + */ + setTimeout(msecs: number, callback?: () => void): void; + /** + * Updates the current local settings for this `Http2Session` and sends a new`SETTINGS` frame to the connected HTTP/2 peer. + * + * Once called, the `http2session.pendingSettingsAck` property will be `true`while the session is waiting for the remote peer to acknowledge the new + * settings. + * + * The new settings will not become effective until the `SETTINGS` acknowledgment + * is received and the `'localSettings'` event is emitted. It is possible to send + * multiple `SETTINGS` frames while acknowledgment is still pending. + * @since v8.4.0 + * @param callback Callback that is called once the session is connected or right away if the session is already connected. + */ + settings( + settings: Settings, + callback?: (err: Error | null, settings: Settings, duration: number) => void, + ): void; + /** + * Calls `unref()` on this `Http2Session`instance's underlying `net.Socket`. + * @since v9.4.0 + */ + unref(): void; + addListener(event: "close", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener( + event: "frameError", + listener: (frameType: number, errorCode: number, streamID: number) => void, + ): this; + addListener( + event: "goaway", + listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void, + ): this; + addListener(event: "localSettings", listener: (settings: Settings) => void): this; + addListener(event: "ping", listener: () => void): this; + addListener(event: "remoteSettings", listener: (settings: Settings) => void): this; + addListener(event: "timeout", listener: () => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "close"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "frameError", frameType: number, errorCode: number, streamID: number): boolean; + emit(event: "goaway", errorCode: number, lastStreamID: number, opaqueData: Buffer): boolean; + emit(event: "localSettings", settings: Settings): boolean; + emit(event: "ping"): boolean; + emit(event: "remoteSettings", settings: Settings): boolean; + emit(event: "timeout"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "close", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; + on(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; + on(event: "localSettings", listener: (settings: Settings) => void): this; + on(event: "ping", listener: () => void): this; + on(event: "remoteSettings", listener: (settings: Settings) => void): this; + on(event: "timeout", listener: () => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; + once(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; + once(event: "localSettings", listener: (settings: Settings) => void): this; + once(event: "ping", listener: () => void): this; + once(event: "remoteSettings", listener: (settings: Settings) => void): this; + once(event: "timeout", listener: () => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener( + event: "frameError", + listener: (frameType: number, errorCode: number, streamID: number) => void, + ): this; + prependListener( + event: "goaway", + listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void, + ): this; + prependListener(event: "localSettings", listener: (settings: Settings) => void): this; + prependListener(event: "ping", listener: () => void): this; + prependListener(event: "remoteSettings", listener: (settings: Settings) => void): this; + prependListener(event: "timeout", listener: () => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener( + event: "frameError", + listener: (frameType: number, errorCode: number, streamID: number) => void, + ): this; + prependOnceListener( + event: "goaway", + listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void, + ): this; + prependOnceListener(event: "localSettings", listener: (settings: Settings) => void): this; + prependOnceListener(event: "ping", listener: () => void): this; + prependOnceListener(event: "remoteSettings", listener: (settings: Settings) => void): this; + prependOnceListener(event: "timeout", listener: () => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + export interface ClientHttp2Session extends Http2Session { + /** + * For HTTP/2 Client `Http2Session` instances only, the `http2session.request()`creates and returns an `Http2Stream` instance that can be used to send an + * HTTP/2 request to the connected server. + * + * When a `ClientHttp2Session` is first created, the socket may not yet be + * connected. if `clienthttp2session.request()` is called during this time, the + * actual request will be deferred until the socket is ready to go. + * If the `session` is closed before the actual request be executed, an`ERR_HTTP2_GOAWAY_SESSION` is thrown. + * + * This method is only available if `http2session.type` is equal to`http2.constants.NGHTTP2_SESSION_CLIENT`. + * + * ```js + * const http2 = require('node:http2'); + * const clientSession = http2.connect('https://localhost:1234'); + * const { + * HTTP2_HEADER_PATH, + * HTTP2_HEADER_STATUS, + * } = http2.constants; + * + * const req = clientSession.request({ [HTTP2_HEADER_PATH]: '/' }); + * req.on('response', (headers) => { + * console.log(headers[HTTP2_HEADER_STATUS]); + * req.on('data', (chunk) => { // .. }); + * req.on('end', () => { // .. }); + * }); + * ``` + * + * When the `options.waitForTrailers` option is set, the `'wantTrailers'` event + * is emitted immediately after queuing the last chunk of payload data to be sent. + * The `http2stream.sendTrailers()` method can then be called to send trailing + * headers to the peer. + * + * When `options.waitForTrailers` is set, the `Http2Stream` will not automatically + * close when the final `DATA` frame is transmitted. User code must call either`http2stream.sendTrailers()` or `http2stream.close()` to close the`Http2Stream`. + * + * When `options.signal` is set with an `AbortSignal` and then `abort` on the + * corresponding `AbortController` is called, the request will emit an `'error'`event with an `AbortError` error. + * + * The `:method` and `:path` pseudo-headers are not specified within `headers`, + * they respectively default to: + * + * * `:method` \= `'GET'` + * * `:path` \= `/` + * @since v8.4.0 + */ + request(headers?: OutgoingHttpHeaders, options?: ClientSessionRequestOptions): ClientHttp2Stream; + addListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; + addListener(event: "origin", listener: (origins: string[]) => void): this; + addListener( + event: "connect", + listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): this; + addListener( + event: "stream", + listener: ( + stream: ClientHttp2Stream, + headers: IncomingHttpHeaders & IncomingHttpStatusHeader, + flags: number, + ) => void, + ): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "altsvc", alt: string, origin: string, stream: number): boolean; + emit(event: "origin", origins: ReadonlyArray): boolean; + emit(event: "connect", session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket): boolean; + emit( + event: "stream", + stream: ClientHttp2Stream, + headers: IncomingHttpHeaders & IncomingHttpStatusHeader, + flags: number, + ): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; + on(event: "origin", listener: (origins: string[]) => void): this; + on(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; + on( + event: "stream", + listener: ( + stream: ClientHttp2Stream, + headers: IncomingHttpHeaders & IncomingHttpStatusHeader, + flags: number, + ) => void, + ): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; + once(event: "origin", listener: (origins: string[]) => void): this; + once( + event: "connect", + listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): this; + once( + event: "stream", + listener: ( + stream: ClientHttp2Stream, + headers: IncomingHttpHeaders & IncomingHttpStatusHeader, + flags: number, + ) => void, + ): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; + prependListener(event: "origin", listener: (origins: string[]) => void): this; + prependListener( + event: "connect", + listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): this; + prependListener( + event: "stream", + listener: ( + stream: ClientHttp2Stream, + headers: IncomingHttpHeaders & IncomingHttpStatusHeader, + flags: number, + ) => void, + ): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; + prependOnceListener(event: "origin", listener: (origins: string[]) => void): this; + prependOnceListener( + event: "connect", + listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): this; + prependOnceListener( + event: "stream", + listener: ( + stream: ClientHttp2Stream, + headers: IncomingHttpHeaders & IncomingHttpStatusHeader, + flags: number, + ) => void, + ): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + export interface AlternativeServiceOptions { + origin: number | string | url.URL; + } + export interface ServerHttp2Session extends Http2Session { + readonly server: Http2Server | Http2SecureServer; + /** + * Submits an `ALTSVC` frame (as defined by [RFC 7838](https://tools.ietf.org/html/rfc7838)) to the connected client. + * + * ```js + * const http2 = require('node:http2'); + * + * const server = http2.createServer(); + * server.on('session', (session) => { + * // Set altsvc for origin https://example.org:80 + * session.altsvc('h2=":8000"', 'https://example.org:80'); + * }); + * + * server.on('stream', (stream) => { + * // Set altsvc for a specific stream + * stream.session.altsvc('h2=":8000"', stream.id); + * }); + * ``` + * + * Sending an `ALTSVC` frame with a specific stream ID indicates that the alternate + * service is associated with the origin of the given `Http2Stream`. + * + * The `alt` and origin string _must_ contain only ASCII bytes and are + * strictly interpreted as a sequence of ASCII bytes. The special value `'clear'`may be passed to clear any previously set alternative service for a given + * domain. + * + * When a string is passed for the `originOrStream` argument, it will be parsed as + * a URL and the origin will be derived. For instance, the origin for the + * HTTP URL `'https://example.org/foo/bar'` is the ASCII string`'https://example.org'`. An error will be thrown if either the given string + * cannot be parsed as a URL or if a valid origin cannot be derived. + * + * A `URL` object, or any object with an `origin` property, may be passed as`originOrStream`, in which case the value of the `origin` property will be + * used. The value of the `origin` property _must_ be a properly serialized + * ASCII origin. + * @since v9.4.0 + * @param alt A description of the alternative service configuration as defined by `RFC 7838`. + * @param originOrStream Either a URL string specifying the origin (or an `Object` with an `origin` property) or the numeric identifier of an active `Http2Stream` as given by the + * `http2stream.id` property. + */ + altsvc(alt: string, originOrStream: number | string | url.URL | AlternativeServiceOptions): void; + /** + * Submits an `ORIGIN` frame (as defined by [RFC 8336](https://tools.ietf.org/html/rfc8336)) to the connected client + * to advertise the set of origins for which the server is capable of providing + * authoritative responses. + * + * ```js + * const http2 = require('node:http2'); + * const options = getSecureOptionsSomehow(); + * const server = http2.createSecureServer(options); + * server.on('stream', (stream) => { + * stream.respond(); + * stream.end('ok'); + * }); + * server.on('session', (session) => { + * session.origin('https://example.com', 'https://example.org'); + * }); + * ``` + * + * When a string is passed as an `origin`, it will be parsed as a URL and the + * origin will be derived. For instance, the origin for the HTTP URL`'https://example.org/foo/bar'` is the ASCII string`'https://example.org'`. An error will be thrown if either the given + * string + * cannot be parsed as a URL or if a valid origin cannot be derived. + * + * A `URL` object, or any object with an `origin` property, may be passed as + * an `origin`, in which case the value of the `origin` property will be + * used. The value of the `origin` property _must_ be a properly serialized + * ASCII origin. + * + * Alternatively, the `origins` option may be used when creating a new HTTP/2 + * server using the `http2.createSecureServer()` method: + * + * ```js + * const http2 = require('node:http2'); + * const options = getSecureOptionsSomehow(); + * options.origins = ['https://example.com', 'https://example.org']; + * const server = http2.createSecureServer(options); + * server.on('stream', (stream) => { + * stream.respond(); + * stream.end('ok'); + * }); + * ``` + * @since v10.12.0 + * @param origins One or more URL Strings passed as separate arguments. + */ + origin( + ...origins: Array< + | string + | url.URL + | { + origin: string; + } + > + ): void; + addListener( + event: "connect", + listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): this; + addListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "connect", session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket): boolean; + emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; + on( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once( + event: "connect", + listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): this; + once( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener( + event: "connect", + listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): this; + prependListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener( + event: "connect", + listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): this; + prependOnceListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + // Http2Server + export interface SessionOptions { + maxDeflateDynamicTableSize?: number | undefined; + maxSessionMemory?: number | undefined; + maxHeaderListPairs?: number | undefined; + maxOutstandingPings?: number | undefined; + maxSendHeaderBlockLength?: number | undefined; + paddingStrategy?: number | undefined; + peerMaxConcurrentStreams?: number | undefined; + settings?: Settings | undefined; + /** + * Specifies a timeout in milliseconds that + * a server should wait when an [`'unknownProtocol'`][] is emitted. If the + * socket has not been destroyed by that time the server will destroy it. + * @default 100000 + */ + unknownProtocolTimeout?: number | undefined; + selectPadding?(frameLen: number, maxFrameLen: number): number; + } + export interface ClientSessionOptions extends SessionOptions { + maxReservedRemoteStreams?: number | undefined; + createConnection?: ((authority: url.URL, option: SessionOptions) => stream.Duplex) | undefined; + protocol?: "http:" | "https:" | undefined; + } + export interface ServerSessionOptions extends SessionOptions { + Http1IncomingMessage?: typeof IncomingMessage | undefined; + Http1ServerResponse?: typeof ServerResponse | undefined; + Http2ServerRequest?: typeof Http2ServerRequest | undefined; + Http2ServerResponse?: typeof Http2ServerResponse | undefined; + } + export interface SecureClientSessionOptions extends ClientSessionOptions, tls.ConnectionOptions {} + export interface SecureServerSessionOptions extends ServerSessionOptions, tls.TlsOptions {} + export interface ServerOptions extends ServerSessionOptions {} + export interface SecureServerOptions extends SecureServerSessionOptions { + allowHTTP1?: boolean | undefined; + origins?: string[] | undefined; + } + interface HTTP2ServerCommon { + setTimeout(msec?: number, callback?: () => void): this; + /** + * Throws ERR_HTTP2_INVALID_SETTING_VALUE for invalid settings values. + * Throws ERR_INVALID_ARG_TYPE for invalid settings argument. + */ + updateSettings(settings: Settings): void; + } + export interface Http2Server extends net.Server, HTTP2ServerCommon { + addListener( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + addListener( + event: "request", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + addListener(event: "session", listener: (session: ServerHttp2Session) => void): this; + addListener(event: "sessionError", listener: (err: Error) => void): this; + addListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + addListener(event: "timeout", listener: () => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "checkContinue", request: Http2ServerRequest, response: Http2ServerResponse): boolean; + emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean; + emit(event: "session", session: ServerHttp2Session): boolean; + emit(event: "sessionError", err: Error): boolean; + emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; + emit(event: "timeout"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; + on(event: "session", listener: (session: ServerHttp2Session) => void): this; + on(event: "sessionError", listener: (err: Error) => void): this; + on( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + on(event: "timeout", listener: () => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; + once(event: "session", listener: (session: ServerHttp2Session) => void): this; + once(event: "sessionError", listener: (err: Error) => void): this; + once( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + once(event: "timeout", listener: () => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + prependListener( + event: "request", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + prependListener(event: "session", listener: (session: ServerHttp2Session) => void): this; + prependListener(event: "sessionError", listener: (err: Error) => void): this; + prependListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + prependListener(event: "timeout", listener: () => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + prependOnceListener( + event: "request", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + prependOnceListener(event: "session", listener: (session: ServerHttp2Session) => void): this; + prependOnceListener(event: "sessionError", listener: (err: Error) => void): this; + prependOnceListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + prependOnceListener(event: "timeout", listener: () => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + export interface Http2SecureServer extends tls.Server, HTTP2ServerCommon { + addListener( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + addListener( + event: "request", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + addListener(event: "session", listener: (session: ServerHttp2Session) => void): this; + addListener(event: "sessionError", listener: (err: Error) => void): this; + addListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + addListener(event: "timeout", listener: () => void): this; + addListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "checkContinue", request: Http2ServerRequest, response: Http2ServerResponse): boolean; + emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean; + emit(event: "session", session: ServerHttp2Session): boolean; + emit(event: "sessionError", err: Error): boolean; + emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; + emit(event: "timeout"): boolean; + emit(event: "unknownProtocol", socket: tls.TLSSocket): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; + on(event: "session", listener: (session: ServerHttp2Session) => void): this; + on(event: "sessionError", listener: (err: Error) => void): this; + on( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + on(event: "timeout", listener: () => void): this; + on(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; + once(event: "session", listener: (session: ServerHttp2Session) => void): this; + once(event: "sessionError", listener: (err: Error) => void): this; + once( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + once(event: "timeout", listener: () => void): this; + once(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + prependListener( + event: "request", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + prependListener(event: "session", listener: (session: ServerHttp2Session) => void): this; + prependListener(event: "sessionError", listener: (err: Error) => void): this; + prependListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + prependListener(event: "timeout", listener: () => void): this; + prependListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + prependOnceListener( + event: "request", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + prependOnceListener(event: "session", listener: (session: ServerHttp2Session) => void): this; + prependOnceListener(event: "sessionError", listener: (err: Error) => void): this; + prependOnceListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + prependOnceListener(event: "timeout", listener: () => void): this; + prependOnceListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + /** + * A `Http2ServerRequest` object is created by {@link Server} or {@link SecureServer} and passed as the first argument to the `'request'` event. It may be used to access a request status, + * headers, and + * data. + * @since v8.4.0 + */ + export class Http2ServerRequest extends stream.Readable { + constructor( + stream: ServerHttp2Stream, + headers: IncomingHttpHeaders, + options: stream.ReadableOptions, + rawHeaders: ReadonlyArray, + ); + /** + * The `request.aborted` property will be `true` if the request has + * been aborted. + * @since v10.1.0 + */ + readonly aborted: boolean; + /** + * The request authority pseudo header field. Because HTTP/2 allows requests + * to set either `:authority` or `host`, this value is derived from`req.headers[':authority']` if present. Otherwise, it is derived from`req.headers['host']`. + * @since v8.4.0 + */ + readonly authority: string; + /** + * See `request.socket`. + * @since v8.4.0 + * @deprecated Since v13.0.0 - Use `socket`. + */ + readonly connection: net.Socket | tls.TLSSocket; + /** + * The `request.complete` property will be `true` if the request has + * been completed, aborted, or destroyed. + * @since v12.10.0 + */ + readonly complete: boolean; + /** + * The request/response headers object. + * + * Key-value pairs of header names and values. Header names are lower-cased. + * + * ```js + * // Prints something like: + * // + * // { 'user-agent': 'curl/7.22.0', + * // host: '127.0.0.1:8000', + * // accept: '*' } + * console.log(request.headers); + * ``` + * + * See `HTTP/2 Headers Object`. + * + * In HTTP/2, the request path, host name, protocol, and method are represented as + * special headers prefixed with the `:` character (e.g. `':path'`). These special + * headers will be included in the `request.headers` object. Care must be taken not + * to inadvertently modify these special headers or errors may occur. For instance, + * removing all headers from the request will cause errors to occur: + * + * ```js + * removeAllHeaders(request.headers); + * assert(request.url); // Fails because the :path header has been removed + * ``` + * @since v8.4.0 + */ + readonly headers: IncomingHttpHeaders; + /** + * In case of server request, the HTTP version sent by the client. In the case of + * client response, the HTTP version of the connected-to server. Returns`'2.0'`. + * + * Also `message.httpVersionMajor` is the first integer and`message.httpVersionMinor` is the second. + * @since v8.4.0 + */ + readonly httpVersion: string; + readonly httpVersionMinor: number; + readonly httpVersionMajor: number; + /** + * The request method as a string. Read-only. Examples: `'GET'`, `'DELETE'`. + * @since v8.4.0 + */ + readonly method: string; + /** + * The raw request/response headers list exactly as they were received. + * + * The keys and values are in the same list. It is _not_ a + * list of tuples. So, the even-numbered offsets are key values, and the + * odd-numbered offsets are the associated values. + * + * Header names are not lowercased, and duplicates are not merged. + * + * ```js + * // Prints something like: + * // + * // [ 'user-agent', + * // 'this is invalid because there can be only one', + * // 'User-Agent', + * // 'curl/7.22.0', + * // 'Host', + * // '127.0.0.1:8000', + * // 'ACCEPT', + * // '*' ] + * console.log(request.rawHeaders); + * ``` + * @since v8.4.0 + */ + readonly rawHeaders: string[]; + /** + * The raw request/response trailer keys and values exactly as they were + * received. Only populated at the `'end'` event. + * @since v8.4.0 + */ + readonly rawTrailers: string[]; + /** + * The request scheme pseudo header field indicating the scheme + * portion of the target URL. + * @since v8.4.0 + */ + readonly scheme: string; + /** + * Returns a `Proxy` object that acts as a `net.Socket` (or `tls.TLSSocket`) but + * applies getters, setters, and methods based on HTTP/2 logic. + * + * `destroyed`, `readable`, and `writable` properties will be retrieved from and + * set on `request.stream`. + * + * `destroy`, `emit`, `end`, `on` and `once` methods will be called on`request.stream`. + * + * `setTimeout` method will be called on `request.stream.session`. + * + * `pause`, `read`, `resume`, and `write` will throw an error with code`ERR_HTTP2_NO_SOCKET_MANIPULATION`. See `Http2Session and Sockets` for + * more information. + * + * All other interactions will be routed directly to the socket. With TLS support, + * use `request.socket.getPeerCertificate()` to obtain the client's + * authentication details. + * @since v8.4.0 + */ + readonly socket: net.Socket | tls.TLSSocket; + /** + * The `Http2Stream` object backing the request. + * @since v8.4.0 + */ + readonly stream: ServerHttp2Stream; + /** + * The request/response trailers object. Only populated at the `'end'` event. + * @since v8.4.0 + */ + readonly trailers: IncomingHttpHeaders; + /** + * Request URL string. This contains only the URL that is present in the actual + * HTTP request. If the request is: + * + * ```http + * GET /status?name=ryan HTTP/1.1 + * Accept: text/plain + * ``` + * + * Then `request.url` will be: + * + * ```js + * '/status?name=ryan' + * ``` + * + * To parse the url into its parts, `new URL()` can be used: + * + * ```console + * $ node + * > new URL('/status?name=ryan', 'http://example.com') + * URL { + * href: 'http://example.com/status?name=ryan', + * origin: 'http://example.com', + * protocol: 'http:', + * username: '', + * password: '', + * host: 'example.com', + * hostname: 'example.com', + * port: '', + * pathname: '/status', + * search: '?name=ryan', + * searchParams: URLSearchParams { 'name' => 'ryan' }, + * hash: '' + * } + * ``` + * @since v8.4.0 + */ + url: string; + /** + * Sets the `Http2Stream`'s timeout value to `msecs`. If a callback is + * provided, then it is added as a listener on the `'timeout'` event on + * the response object. + * + * If no `'timeout'` listener is added to the request, the response, or + * the server, then `Http2Stream` s are destroyed when they time out. If a + * handler is assigned to the request, the response, or the server's `'timeout'`events, timed out sockets must be handled explicitly. + * @since v8.4.0 + */ + setTimeout(msecs: number, callback?: () => void): void; + read(size?: number): Buffer | string | null; + addListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "data", listener: (chunk: Buffer | string) => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "readable", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "aborted", hadError: boolean, code: number): boolean; + emit(event: "close"): boolean; + emit(event: "data", chunk: Buffer | string): boolean; + emit(event: "end"): boolean; + emit(event: "readable"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "aborted", listener: (hadError: boolean, code: number) => void): this; + on(event: "close", listener: () => void): this; + on(event: "data", listener: (chunk: Buffer | string) => void): this; + on(event: "end", listener: () => void): this; + on(event: "readable", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "aborted", listener: (hadError: boolean, code: number) => void): this; + once(event: "close", listener: () => void): this; + once(event: "data", listener: (chunk: Buffer | string) => void): this; + once(event: "end", listener: () => void): this; + once(event: "readable", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "readable", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "readable", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + /** + * This object is created internally by an HTTP server, not by the user. It is + * passed as the second parameter to the `'request'` event. + * @since v8.4.0 + */ + export class Http2ServerResponse extends stream.Writable { + constructor(stream: ServerHttp2Stream); + /** + * See `response.socket`. + * @since v8.4.0 + * @deprecated Since v13.0.0 - Use `socket`. + */ + readonly connection: net.Socket | tls.TLSSocket; + /** + * Boolean value that indicates whether the response has completed. Starts + * as `false`. After `response.end()` executes, the value will be `true`. + * @since v8.4.0 + * @deprecated Since v13.4.0,v12.16.0 - Use `writableEnded`. + */ + readonly finished: boolean; + /** + * True if headers were sent, false otherwise (read-only). + * @since v8.4.0 + */ + readonly headersSent: boolean; + /** + * A reference to the original HTTP2 `request` object. + * @since v15.7.0 + */ + readonly req: Http2ServerRequest; + /** + * Returns a `Proxy` object that acts as a `net.Socket` (or `tls.TLSSocket`) but + * applies getters, setters, and methods based on HTTP/2 logic. + * + * `destroyed`, `readable`, and `writable` properties will be retrieved from and + * set on `response.stream`. + * + * `destroy`, `emit`, `end`, `on` and `once` methods will be called on`response.stream`. + * + * `setTimeout` method will be called on `response.stream.session`. + * + * `pause`, `read`, `resume`, and `write` will throw an error with code`ERR_HTTP2_NO_SOCKET_MANIPULATION`. See `Http2Session and Sockets` for + * more information. + * + * All other interactions will be routed directly to the socket. + * + * ```js + * const http2 = require('node:http2'); + * const server = http2.createServer((req, res) => { + * const ip = req.socket.remoteAddress; + * const port = req.socket.remotePort; + * res.end(`Your IP address is ${ip} and your source port is ${port}.`); + * }).listen(3000); + * ``` + * @since v8.4.0 + */ + readonly socket: net.Socket | tls.TLSSocket; + /** + * The `Http2Stream` object backing the response. + * @since v8.4.0 + */ + readonly stream: ServerHttp2Stream; + /** + * When true, the Date header will be automatically generated and sent in + * the response if it is not already present in the headers. Defaults to true. + * + * This should only be disabled for testing; HTTP requires the Date header + * in responses. + * @since v8.4.0 + */ + sendDate: boolean; + /** + * When using implicit headers (not calling `response.writeHead()` explicitly), + * this property controls the status code that will be sent to the client when + * the headers get flushed. + * + * ```js + * response.statusCode = 404; + * ``` + * + * After response header was sent to the client, this property indicates the + * status code which was sent out. + * @since v8.4.0 + */ + statusCode: number; + /** + * Status message is not supported by HTTP/2 (RFC 7540 8.1.2.4). It returns + * an empty string. + * @since v8.4.0 + */ + statusMessage: ""; + /** + * This method adds HTTP trailing headers (a header but at the end of the + * message) to the response. + * + * Attempting to set a header field name or value that contains invalid characters + * will result in a `TypeError` being thrown. + * @since v8.4.0 + */ + addTrailers(trailers: OutgoingHttpHeaders): void; + /** + * This method signals to the server that all of the response headers and body + * have been sent; that server should consider this message complete. + * The method, `response.end()`, MUST be called on each response. + * + * If `data` is specified, it is equivalent to calling `response.write(data, encoding)` followed by `response.end(callback)`. + * + * If `callback` is specified, it will be called when the response stream + * is finished. + * @since v8.4.0 + */ + end(callback?: () => void): this; + end(data: string | Uint8Array, callback?: () => void): this; + end(data: string | Uint8Array, encoding: BufferEncoding, callback?: () => void): this; + /** + * Reads out a header that has already been queued but not sent to the client. + * The name is case-insensitive. + * + * ```js + * const contentType = response.getHeader('content-type'); + * ``` + * @since v8.4.0 + */ + getHeader(name: string): string; + /** + * Returns an array containing the unique names of the current outgoing headers. + * All header names are lowercase. + * + * ```js + * response.setHeader('Foo', 'bar'); + * response.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']); + * + * const headerNames = response.getHeaderNames(); + * // headerNames === ['foo', 'set-cookie'] + * ``` + * @since v8.4.0 + */ + getHeaderNames(): string[]; + /** + * Returns a shallow copy of the current outgoing headers. Since a shallow copy + * is used, array values may be mutated without additional calls to various + * header-related http module methods. The keys of the returned object are the + * header names and the values are the respective header values. All header names + * are lowercase. + * + * The object returned by the `response.getHeaders()` method _does not_prototypically inherit from the JavaScript `Object`. This means that typical`Object` methods such as `obj.toString()`, + * `obj.hasOwnProperty()`, and others + * are not defined and _will not work_. + * + * ```js + * response.setHeader('Foo', 'bar'); + * response.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']); + * + * const headers = response.getHeaders(); + * // headers === { foo: 'bar', 'set-cookie': ['foo=bar', 'bar=baz'] } + * ``` + * @since v8.4.0 + */ + getHeaders(): OutgoingHttpHeaders; + /** + * Returns `true` if the header identified by `name` is currently set in the + * outgoing headers. The header name matching is case-insensitive. + * + * ```js + * const hasContentType = response.hasHeader('content-type'); + * ``` + * @since v8.4.0 + */ + hasHeader(name: string): boolean; + /** + * Removes a header that has been queued for implicit sending. + * + * ```js + * response.removeHeader('Content-Encoding'); + * ``` + * @since v8.4.0 + */ + removeHeader(name: string): void; + /** + * Sets a single header value for implicit headers. If this header already exists + * in the to-be-sent headers, its value will be replaced. Use an array of strings + * here to send multiple headers with the same name. + * + * ```js + * response.setHeader('Content-Type', 'text/html; charset=utf-8'); + * ``` + * + * or + * + * ```js + * response.setHeader('Set-Cookie', ['type=ninja', 'language=javascript']); + * ``` + * + * Attempting to set a header field name or value that contains invalid characters + * will result in a `TypeError` being thrown. + * + * When headers have been set with `response.setHeader()`, they will be merged + * with any headers passed to `response.writeHead()`, with the headers passed + * to `response.writeHead()` given precedence. + * + * ```js + * // Returns content-type = text/plain + * const server = http2.createServer((req, res) => { + * res.setHeader('Content-Type', 'text/html; charset=utf-8'); + * res.setHeader('X-Foo', 'bar'); + * res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' }); + * res.end('ok'); + * }); + * ``` + * @since v8.4.0 + */ + setHeader(name: string, value: number | string | ReadonlyArray): void; + /** + * Sets the `Http2Stream`'s timeout value to `msecs`. If a callback is + * provided, then it is added as a listener on the `'timeout'` event on + * the response object. + * + * If no `'timeout'` listener is added to the request, the response, or + * the server, then `Http2Stream` s are destroyed when they time out. If a + * handler is assigned to the request, the response, or the server's `'timeout'`events, timed out sockets must be handled explicitly. + * @since v8.4.0 + */ + setTimeout(msecs: number, callback?: () => void): void; + /** + * If this method is called and `response.writeHead()` has not been called, + * it will switch to implicit header mode and flush the implicit headers. + * + * This sends a chunk of the response body. This method may + * be called multiple times to provide successive parts of the body. + * + * In the `node:http` module, the response body is omitted when the + * request is a HEAD request. Similarly, the `204` and `304` responses _must not_ include a message body. + * + * `chunk` can be a string or a buffer. If `chunk` is a string, + * the second parameter specifies how to encode it into a byte stream. + * By default the `encoding` is `'utf8'`. `callback` will be called when this chunk + * of data is flushed. + * + * This is the raw HTTP body and has nothing to do with higher-level multi-part + * body encodings that may be used. + * + * The first time `response.write()` is called, it will send the buffered + * header information and the first chunk of the body to the client. The second + * time `response.write()` is called, Node.js assumes data will be streamed, + * and sends the new data separately. That is, the response is buffered up to the + * first chunk of the body. + * + * Returns `true` if the entire data was flushed successfully to the kernel + * buffer. Returns `false` if all or part of the data was queued in user memory.`'drain'` will be emitted when the buffer is free again. + * @since v8.4.0 + */ + write(chunk: string | Uint8Array, callback?: (err: Error) => void): boolean; + write(chunk: string | Uint8Array, encoding: BufferEncoding, callback?: (err: Error) => void): boolean; + /** + * Sends a status `100 Continue` to the client, indicating that the request body + * should be sent. See the `'checkContinue'` event on `Http2Server` and`Http2SecureServer`. + * @since v8.4.0 + */ + writeContinue(): void; + /** + * Sends a status `103 Early Hints` to the client with a Link header, + * indicating that the user agent can preload/preconnect the linked resources. + * The `hints` is an object containing the values of headers to be sent with + * early hints message. + * + * **Example** + * + * ```js + * const earlyHintsLink = '; rel=preload; as=style'; + * response.writeEarlyHints({ + * 'link': earlyHintsLink, + * }); + * + * const earlyHintsLinks = [ + * '; rel=preload; as=style', + * '; rel=preload; as=script', + * ]; + * response.writeEarlyHints({ + * 'link': earlyHintsLinks, + * }); + * ``` + * @since v18.11.0 + */ + writeEarlyHints(hints: Record): void; + /** + * Sends a response header to the request. The status code is a 3-digit HTTP + * status code, like `404`. The last argument, `headers`, are the response headers. + * + * Returns a reference to the `Http2ServerResponse`, so that calls can be chained. + * + * For compatibility with `HTTP/1`, a human-readable `statusMessage` may be + * passed as the second argument. However, because the `statusMessage` has no + * meaning within HTTP/2, the argument will have no effect and a process warning + * will be emitted. + * + * ```js + * const body = 'hello world'; + * response.writeHead(200, { + * 'Content-Length': Buffer.byteLength(body), + * 'Content-Type': 'text/plain; charset=utf-8', + * }); + * ``` + * + * `Content-Length` is given in bytes not characters. The`Buffer.byteLength()` API may be used to determine the number of bytes in a + * given encoding. On outbound messages, Node.js does not check if Content-Length + * and the length of the body being transmitted are equal or not. However, when + * receiving messages, Node.js will automatically reject messages when the`Content-Length` does not match the actual payload size. + * + * This method may be called at most one time on a message before `response.end()` is called. + * + * If `response.write()` or `response.end()` are called before calling + * this, the implicit/mutable headers will be calculated and call this function. + * + * When headers have been set with `response.setHeader()`, they will be merged + * with any headers passed to `response.writeHead()`, with the headers passed + * to `response.writeHead()` given precedence. + * + * ```js + * // Returns content-type = text/plain + * const server = http2.createServer((req, res) => { + * res.setHeader('Content-Type', 'text/html; charset=utf-8'); + * res.setHeader('X-Foo', 'bar'); + * res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' }); + * res.end('ok'); + * }); + * ``` + * + * Attempting to set a header field name or value that contains invalid characters + * will result in a `TypeError` being thrown. + * @since v8.4.0 + */ + writeHead(statusCode: number, headers?: OutgoingHttpHeaders): this; + writeHead(statusCode: number, statusMessage: string, headers?: OutgoingHttpHeaders): this; + /** + * Call `http2stream.pushStream()` with the given headers, and wrap the + * given `Http2Stream` on a newly created `Http2ServerResponse` as the callback + * parameter if successful. When `Http2ServerRequest` is closed, the callback is + * called with an error `ERR_HTTP2_INVALID_STREAM`. + * @since v8.4.0 + * @param headers An object describing the headers + * @param callback Called once `http2stream.pushStream()` is finished, or either when the attempt to create the pushed `Http2Stream` has failed or has been rejected, or the state of + * `Http2ServerRequest` is closed prior to calling the `http2stream.pushStream()` method + */ + createPushResponse( + headers: OutgoingHttpHeaders, + callback: (err: Error | null, res: Http2ServerResponse) => void, + ): void; + addListener(event: "close", listener: () => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "error", listener: (error: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "pipe", listener: (src: stream.Readable) => void): this; + addListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "close"): boolean; + emit(event: "drain"): boolean; + emit(event: "error", error: Error): boolean; + emit(event: "finish"): boolean; + emit(event: "pipe", src: stream.Readable): boolean; + emit(event: "unpipe", src: stream.Readable): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "close", listener: () => void): this; + on(event: "drain", listener: () => void): this; + on(event: "error", listener: (error: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "pipe", listener: (src: stream.Readable) => void): this; + on(event: "unpipe", listener: (src: stream.Readable) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "drain", listener: () => void): this; + once(event: "error", listener: (error: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "pipe", listener: (src: stream.Readable) => void): this; + once(event: "unpipe", listener: (src: stream.Readable) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "error", listener: (error: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "pipe", listener: (src: stream.Readable) => void): this; + prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "error", listener: (error: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this; + prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + export namespace constants { + const NGHTTP2_SESSION_SERVER: number; + const NGHTTP2_SESSION_CLIENT: number; + const NGHTTP2_STREAM_STATE_IDLE: number; + const NGHTTP2_STREAM_STATE_OPEN: number; + const NGHTTP2_STREAM_STATE_RESERVED_LOCAL: number; + const NGHTTP2_STREAM_STATE_RESERVED_REMOTE: number; + const NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL: number; + const NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE: number; + const NGHTTP2_STREAM_STATE_CLOSED: number; + const NGHTTP2_NO_ERROR: number; + const NGHTTP2_PROTOCOL_ERROR: number; + const NGHTTP2_INTERNAL_ERROR: number; + const NGHTTP2_FLOW_CONTROL_ERROR: number; + const NGHTTP2_SETTINGS_TIMEOUT: number; + const NGHTTP2_STREAM_CLOSED: number; + const NGHTTP2_FRAME_SIZE_ERROR: number; + const NGHTTP2_REFUSED_STREAM: number; + const NGHTTP2_CANCEL: number; + const NGHTTP2_COMPRESSION_ERROR: number; + const NGHTTP2_CONNECT_ERROR: number; + const NGHTTP2_ENHANCE_YOUR_CALM: number; + const NGHTTP2_INADEQUATE_SECURITY: number; + const NGHTTP2_HTTP_1_1_REQUIRED: number; + const NGHTTP2_ERR_FRAME_SIZE_ERROR: number; + const NGHTTP2_FLAG_NONE: number; + const NGHTTP2_FLAG_END_STREAM: number; + const NGHTTP2_FLAG_END_HEADERS: number; + const NGHTTP2_FLAG_ACK: number; + const NGHTTP2_FLAG_PADDED: number; + const NGHTTP2_FLAG_PRIORITY: number; + const DEFAULT_SETTINGS_HEADER_TABLE_SIZE: number; + const DEFAULT_SETTINGS_ENABLE_PUSH: number; + const DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE: number; + const DEFAULT_SETTINGS_MAX_FRAME_SIZE: number; + const MAX_MAX_FRAME_SIZE: number; + const MIN_MAX_FRAME_SIZE: number; + const MAX_INITIAL_WINDOW_SIZE: number; + const NGHTTP2_DEFAULT_WEIGHT: number; + const NGHTTP2_SETTINGS_HEADER_TABLE_SIZE: number; + const NGHTTP2_SETTINGS_ENABLE_PUSH: number; + const NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS: number; + const NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE: number; + const NGHTTP2_SETTINGS_MAX_FRAME_SIZE: number; + const NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE: number; + const PADDING_STRATEGY_NONE: number; + const PADDING_STRATEGY_MAX: number; + const PADDING_STRATEGY_CALLBACK: number; + const HTTP2_HEADER_STATUS: string; + const HTTP2_HEADER_METHOD: string; + const HTTP2_HEADER_AUTHORITY: string; + const HTTP2_HEADER_SCHEME: string; + const HTTP2_HEADER_PATH: string; + const HTTP2_HEADER_ACCEPT_CHARSET: string; + const HTTP2_HEADER_ACCEPT_ENCODING: string; + const HTTP2_HEADER_ACCEPT_LANGUAGE: string; + const HTTP2_HEADER_ACCEPT_RANGES: string; + const HTTP2_HEADER_ACCEPT: string; + const HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN: string; + const HTTP2_HEADER_AGE: string; + const HTTP2_HEADER_ALLOW: string; + const HTTP2_HEADER_AUTHORIZATION: string; + const HTTP2_HEADER_CACHE_CONTROL: string; + const HTTP2_HEADER_CONNECTION: string; + const HTTP2_HEADER_CONTENT_DISPOSITION: string; + const HTTP2_HEADER_CONTENT_ENCODING: string; + const HTTP2_HEADER_CONTENT_LANGUAGE: string; + const HTTP2_HEADER_CONTENT_LENGTH: string; + const HTTP2_HEADER_CONTENT_LOCATION: string; + const HTTP2_HEADER_CONTENT_MD5: string; + const HTTP2_HEADER_CONTENT_RANGE: string; + const HTTP2_HEADER_CONTENT_TYPE: string; + const HTTP2_HEADER_COOKIE: string; + const HTTP2_HEADER_DATE: string; + const HTTP2_HEADER_ETAG: string; + const HTTP2_HEADER_EXPECT: string; + const HTTP2_HEADER_EXPIRES: string; + const HTTP2_HEADER_FROM: string; + const HTTP2_HEADER_HOST: string; + const HTTP2_HEADER_IF_MATCH: string; + const HTTP2_HEADER_IF_MODIFIED_SINCE: string; + const HTTP2_HEADER_IF_NONE_MATCH: string; + const HTTP2_HEADER_IF_RANGE: string; + const HTTP2_HEADER_IF_UNMODIFIED_SINCE: string; + const HTTP2_HEADER_LAST_MODIFIED: string; + const HTTP2_HEADER_LINK: string; + const HTTP2_HEADER_LOCATION: string; + const HTTP2_HEADER_MAX_FORWARDS: string; + const HTTP2_HEADER_PREFER: string; + const HTTP2_HEADER_PROXY_AUTHENTICATE: string; + const HTTP2_HEADER_PROXY_AUTHORIZATION: string; + const HTTP2_HEADER_RANGE: string; + const HTTP2_HEADER_REFERER: string; + const HTTP2_HEADER_REFRESH: string; + const HTTP2_HEADER_RETRY_AFTER: string; + const HTTP2_HEADER_SERVER: string; + const HTTP2_HEADER_SET_COOKIE: string; + const HTTP2_HEADER_STRICT_TRANSPORT_SECURITY: string; + const HTTP2_HEADER_TRANSFER_ENCODING: string; + const HTTP2_HEADER_TE: string; + const HTTP2_HEADER_UPGRADE: string; + const HTTP2_HEADER_USER_AGENT: string; + const HTTP2_HEADER_VARY: string; + const HTTP2_HEADER_VIA: string; + const HTTP2_HEADER_WWW_AUTHENTICATE: string; + const HTTP2_HEADER_HTTP2_SETTINGS: string; + const HTTP2_HEADER_KEEP_ALIVE: string; + const HTTP2_HEADER_PROXY_CONNECTION: string; + const HTTP2_METHOD_ACL: string; + const HTTP2_METHOD_BASELINE_CONTROL: string; + const HTTP2_METHOD_BIND: string; + const HTTP2_METHOD_CHECKIN: string; + const HTTP2_METHOD_CHECKOUT: string; + const HTTP2_METHOD_CONNECT: string; + const HTTP2_METHOD_COPY: string; + const HTTP2_METHOD_DELETE: string; + const HTTP2_METHOD_GET: string; + const HTTP2_METHOD_HEAD: string; + const HTTP2_METHOD_LABEL: string; + const HTTP2_METHOD_LINK: string; + const HTTP2_METHOD_LOCK: string; + const HTTP2_METHOD_MERGE: string; + const HTTP2_METHOD_MKACTIVITY: string; + const HTTP2_METHOD_MKCALENDAR: string; + const HTTP2_METHOD_MKCOL: string; + const HTTP2_METHOD_MKREDIRECTREF: string; + const HTTP2_METHOD_MKWORKSPACE: string; + const HTTP2_METHOD_MOVE: string; + const HTTP2_METHOD_OPTIONS: string; + const HTTP2_METHOD_ORDERPATCH: string; + const HTTP2_METHOD_PATCH: string; + const HTTP2_METHOD_POST: string; + const HTTP2_METHOD_PRI: string; + const HTTP2_METHOD_PROPFIND: string; + const HTTP2_METHOD_PROPPATCH: string; + const HTTP2_METHOD_PUT: string; + const HTTP2_METHOD_REBIND: string; + const HTTP2_METHOD_REPORT: string; + const HTTP2_METHOD_SEARCH: string; + const HTTP2_METHOD_TRACE: string; + const HTTP2_METHOD_UNBIND: string; + const HTTP2_METHOD_UNCHECKOUT: string; + const HTTP2_METHOD_UNLINK: string; + const HTTP2_METHOD_UNLOCK: string; + const HTTP2_METHOD_UPDATE: string; + const HTTP2_METHOD_UPDATEREDIRECTREF: string; + const HTTP2_METHOD_VERSION_CONTROL: string; + const HTTP_STATUS_CONTINUE: number; + const HTTP_STATUS_SWITCHING_PROTOCOLS: number; + const HTTP_STATUS_PROCESSING: number; + const HTTP_STATUS_OK: number; + const HTTP_STATUS_CREATED: number; + const HTTP_STATUS_ACCEPTED: number; + const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION: number; + const HTTP_STATUS_NO_CONTENT: number; + const HTTP_STATUS_RESET_CONTENT: number; + const HTTP_STATUS_PARTIAL_CONTENT: number; + const HTTP_STATUS_MULTI_STATUS: number; + const HTTP_STATUS_ALREADY_REPORTED: number; + const HTTP_STATUS_IM_USED: number; + const HTTP_STATUS_MULTIPLE_CHOICES: number; + const HTTP_STATUS_MOVED_PERMANENTLY: number; + const HTTP_STATUS_FOUND: number; + const HTTP_STATUS_SEE_OTHER: number; + const HTTP_STATUS_NOT_MODIFIED: number; + const HTTP_STATUS_USE_PROXY: number; + const HTTP_STATUS_TEMPORARY_REDIRECT: number; + const HTTP_STATUS_PERMANENT_REDIRECT: number; + const HTTP_STATUS_BAD_REQUEST: number; + const HTTP_STATUS_UNAUTHORIZED: number; + const HTTP_STATUS_PAYMENT_REQUIRED: number; + const HTTP_STATUS_FORBIDDEN: number; + const HTTP_STATUS_NOT_FOUND: number; + const HTTP_STATUS_METHOD_NOT_ALLOWED: number; + const HTTP_STATUS_NOT_ACCEPTABLE: number; + const HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED: number; + const HTTP_STATUS_REQUEST_TIMEOUT: number; + const HTTP_STATUS_CONFLICT: number; + const HTTP_STATUS_GONE: number; + const HTTP_STATUS_LENGTH_REQUIRED: number; + const HTTP_STATUS_PRECONDITION_FAILED: number; + const HTTP_STATUS_PAYLOAD_TOO_LARGE: number; + const HTTP_STATUS_URI_TOO_LONG: number; + const HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: number; + const HTTP_STATUS_RANGE_NOT_SATISFIABLE: number; + const HTTP_STATUS_EXPECTATION_FAILED: number; + const HTTP_STATUS_TEAPOT: number; + const HTTP_STATUS_MISDIRECTED_REQUEST: number; + const HTTP_STATUS_UNPROCESSABLE_ENTITY: number; + const HTTP_STATUS_LOCKED: number; + const HTTP_STATUS_FAILED_DEPENDENCY: number; + const HTTP_STATUS_UNORDERED_COLLECTION: number; + const HTTP_STATUS_UPGRADE_REQUIRED: number; + const HTTP_STATUS_PRECONDITION_REQUIRED: number; + const HTTP_STATUS_TOO_MANY_REQUESTS: number; + const HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE: number; + const HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS: number; + const HTTP_STATUS_INTERNAL_SERVER_ERROR: number; + const HTTP_STATUS_NOT_IMPLEMENTED: number; + const HTTP_STATUS_BAD_GATEWAY: number; + const HTTP_STATUS_SERVICE_UNAVAILABLE: number; + const HTTP_STATUS_GATEWAY_TIMEOUT: number; + const HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED: number; + const HTTP_STATUS_VARIANT_ALSO_NEGOTIATES: number; + const HTTP_STATUS_INSUFFICIENT_STORAGE: number; + const HTTP_STATUS_LOOP_DETECTED: number; + const HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED: number; + const HTTP_STATUS_NOT_EXTENDED: number; + const HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED: number; + } + /** + * This symbol can be set as a property on the HTTP/2 headers object with + * an array value in order to provide a list of headers considered sensitive. + */ + export const sensitiveHeaders: symbol; + /** + * Returns an object containing the default settings for an `Http2Session`instance. This method returns a new object instance every time it is called + * so instances returned may be safely modified for use. + * @since v8.4.0 + */ + export function getDefaultSettings(): Settings; + /** + * Returns a `Buffer` instance containing serialized representation of the given + * HTTP/2 settings as specified in the [HTTP/2](https://tools.ietf.org/html/rfc7540) specification. This is intended + * for use with the `HTTP2-Settings` header field. + * + * ```js + * const http2 = require('node:http2'); + * + * const packed = http2.getPackedSettings({ enablePush: false }); + * + * console.log(packed.toString('base64')); + * // Prints: AAIAAAAA + * ``` + * @since v8.4.0 + */ + export function getPackedSettings(settings: Settings): Buffer; + /** + * Returns a `HTTP/2 Settings Object` containing the deserialized settings from + * the given `Buffer` as generated by `http2.getPackedSettings()`. + * @since v8.4.0 + * @param buf The packed settings. + */ + export function getUnpackedSettings(buf: Uint8Array): Settings; + /** + * Returns a `net.Server` instance that creates and manages `Http2Session`instances. + * + * Since there are no browsers known that support [unencrypted HTTP/2](https://http2.github.io/faq/#does-http2-require-encryption), the use of {@link createSecureServer} is necessary when + * communicating + * with browser clients. + * + * ```js + * const http2 = require('node:http2'); + * + * // Create an unencrypted HTTP/2 server. + * // Since there are no browsers known that support + * // unencrypted HTTP/2, the use of `http2.createSecureServer()` + * // is necessary when communicating with browser clients. + * const server = http2.createServer(); + * + * server.on('stream', (stream, headers) => { + * stream.respond({ + * 'content-type': 'text/html; charset=utf-8', + * ':status': 200, + * }); + * stream.end('

Hello World

'); + * }); + * + * server.listen(8000); + * ``` + * @since v8.4.0 + * @param onRequestHandler See `Compatibility API` + */ + export function createServer( + onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): Http2Server; + export function createServer( + options: ServerOptions, + onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): Http2Server; + /** + * Returns a `tls.Server` instance that creates and manages `Http2Session`instances. + * + * ```js + * const http2 = require('node:http2'); + * const fs = require('node:fs'); + * + * const options = { + * key: fs.readFileSync('server-key.pem'), + * cert: fs.readFileSync('server-cert.pem'), + * }; + * + * // Create a secure HTTP/2 server + * const server = http2.createSecureServer(options); + * + * server.on('stream', (stream, headers) => { + * stream.respond({ + * 'content-type': 'text/html; charset=utf-8', + * ':status': 200, + * }); + * stream.end('

Hello World

'); + * }); + * + * server.listen(8443); + * ``` + * @since v8.4.0 + * @param onRequestHandler See `Compatibility API` + */ + export function createSecureServer( + onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): Http2SecureServer; + export function createSecureServer( + options: SecureServerOptions, + onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): Http2SecureServer; + /** + * Returns a `ClientHttp2Session` instance. + * + * ```js + * const http2 = require('node:http2'); + * const client = http2.connect('https://localhost:1234'); + * + * // Use the client + * + * client.close(); + * ``` + * @since v8.4.0 + * @param authority The remote HTTP/2 server to connect to. This must be in the form of a minimal, valid URL with the `http://` or `https://` prefix, host name, and IP port (if a non-default port + * is used). Userinfo (user ID and password), path, querystring, and fragment details in the URL will be ignored. + * @param listener Will be registered as a one-time listener of the {@link 'connect'} event. + */ + export function connect( + authority: string | url.URL, + listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): ClientHttp2Session; + export function connect( + authority: string | url.URL, + options?: ClientSessionOptions | SecureClientSessionOptions, + listener?: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): ClientHttp2Session; +} +declare module "node:http2" { + export * from "http2"; +} diff --git a/node_modules/@types/node/https.d.ts b/node_modules/@types/node/https.d.ts new file mode 100644 index 00000000..36ae5b2f --- /dev/null +++ b/node_modules/@types/node/https.d.ts @@ -0,0 +1,550 @@ +/** + * HTTPS is the HTTP protocol over TLS/SSL. In Node.js this is implemented as a + * separate module. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/https.js) + */ +declare module "https" { + import { Duplex } from "node:stream"; + import * as tls from "node:tls"; + import * as http from "node:http"; + import { URL } from "node:url"; + type ServerOptions< + Request extends typeof http.IncomingMessage = typeof http.IncomingMessage, + Response extends typeof http.ServerResponse = typeof http.ServerResponse, + > = tls.SecureContextOptions & tls.TlsOptions & http.ServerOptions; + type RequestOptions = + & http.RequestOptions + & tls.SecureContextOptions + & { + checkServerIdentity?: typeof tls.checkServerIdentity | undefined; + rejectUnauthorized?: boolean | undefined; // Defaults to true + servername?: string | undefined; // SNI TLS Extension + }; + interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions { + rejectUnauthorized?: boolean | undefined; + maxCachedSessions?: number | undefined; + } + /** + * An `Agent` object for HTTPS similar to `http.Agent`. See {@link request} for more information. + * @since v0.4.5 + */ + class Agent extends http.Agent { + constructor(options?: AgentOptions); + options: AgentOptions; + } + interface Server< + Request extends typeof http.IncomingMessage = typeof http.IncomingMessage, + Response extends typeof http.ServerResponse = typeof http.ServerResponse, + > extends http.Server {} + /** + * See `http.Server` for more information. + * @since v0.3.4 + */ + class Server< + Request extends typeof http.IncomingMessage = typeof http.IncomingMessage, + Response extends typeof http.ServerResponse = typeof http.ServerResponse, + > extends tls.Server { + constructor(requestListener?: http.RequestListener); + constructor( + options: ServerOptions, + requestListener?: http.RequestListener, + ); + /** + * Closes all connections connected to this server. + * @since v18.2.0 + */ + closeAllConnections(): void; + /** + * Closes all connections connected to this server which are not sending a request or waiting for a response. + * @since v18.2.0 + */ + closeIdleConnections(): void; + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "keylog", listener: (line: Buffer, tlsSocket: tls.TLSSocket) => void): this; + addListener( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void, + ): this; + addListener( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + addListener( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void, + ): this; + addListener(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this; + addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "connection", listener: (socket: Duplex) => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "listening", listener: () => void): this; + addListener(event: "checkContinue", listener: http.RequestListener): this; + addListener(event: "checkExpectation", listener: http.RequestListener): this; + addListener(event: "clientError", listener: (err: Error, socket: Duplex) => void): this; + addListener( + event: "connect", + listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, + ): this; + addListener(event: "request", listener: http.RequestListener): this; + addListener( + event: "upgrade", + listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, + ): this; + emit(event: string, ...args: any[]): boolean; + emit(event: "keylog", line: Buffer, tlsSocket: tls.TLSSocket): boolean; + emit( + event: "newSession", + sessionId: Buffer, + sessionData: Buffer, + callback: (err: Error, resp: Buffer) => void, + ): boolean; + emit( + event: "OCSPRequest", + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ): boolean; + emit(event: "resumeSession", sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void): boolean; + emit(event: "secureConnection", tlsSocket: tls.TLSSocket): boolean; + emit(event: "tlsClientError", err: Error, tlsSocket: tls.TLSSocket): boolean; + emit(event: "close"): boolean; + emit(event: "connection", socket: Duplex): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "listening"): boolean; + emit( + event: "checkContinue", + req: InstanceType, + res: InstanceType & { + req: InstanceType; + }, + ): boolean; + emit( + event: "checkExpectation", + req: InstanceType, + res: InstanceType & { + req: InstanceType; + }, + ): boolean; + emit(event: "clientError", err: Error, socket: Duplex): boolean; + emit(event: "connect", req: InstanceType, socket: Duplex, head: Buffer): boolean; + emit( + event: "request", + req: InstanceType, + res: InstanceType & { + req: InstanceType; + }, + ): boolean; + emit(event: "upgrade", req: InstanceType, socket: Duplex, head: Buffer): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "keylog", listener: (line: Buffer, tlsSocket: tls.TLSSocket) => void): this; + on( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void, + ): this; + on( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + on( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void, + ): this; + on(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this; + on(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this; + on(event: "close", listener: () => void): this; + on(event: "connection", listener: (socket: Duplex) => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "listening", listener: () => void): this; + on(event: "checkContinue", listener: http.RequestListener): this; + on(event: "checkExpectation", listener: http.RequestListener): this; + on(event: "clientError", listener: (err: Error, socket: Duplex) => void): this; + on(event: "connect", listener: (req: InstanceType, socket: Duplex, head: Buffer) => void): this; + on(event: "request", listener: http.RequestListener): this; + on(event: "upgrade", listener: (req: InstanceType, socket: Duplex, head: Buffer) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "keylog", listener: (line: Buffer, tlsSocket: tls.TLSSocket) => void): this; + once( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void, + ): this; + once( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + once( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void, + ): this; + once(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this; + once(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this; + once(event: "close", listener: () => void): this; + once(event: "connection", listener: (socket: Duplex) => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "listening", listener: () => void): this; + once(event: "checkContinue", listener: http.RequestListener): this; + once(event: "checkExpectation", listener: http.RequestListener): this; + once(event: "clientError", listener: (err: Error, socket: Duplex) => void): this; + once(event: "connect", listener: (req: InstanceType, socket: Duplex, head: Buffer) => void): this; + once(event: "request", listener: http.RequestListener): this; + once(event: "upgrade", listener: (req: InstanceType, socket: Duplex, head: Buffer) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "keylog", listener: (line: Buffer, tlsSocket: tls.TLSSocket) => void): this; + prependListener( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void, + ): this; + prependListener( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + prependListener( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void, + ): this; + prependListener(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this; + prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "connection", listener: (socket: Duplex) => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "listening", listener: () => void): this; + prependListener(event: "checkContinue", listener: http.RequestListener): this; + prependListener(event: "checkExpectation", listener: http.RequestListener): this; + prependListener(event: "clientError", listener: (err: Error, socket: Duplex) => void): this; + prependListener( + event: "connect", + listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, + ): this; + prependListener(event: "request", listener: http.RequestListener): this; + prependListener( + event: "upgrade", + listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, + ): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "keylog", listener: (line: Buffer, tlsSocket: tls.TLSSocket) => void): this; + prependOnceListener( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void, + ): this; + prependOnceListener( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + prependOnceListener( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void, + ): this; + prependOnceListener(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this; + prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "connection", listener: (socket: Duplex) => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "listening", listener: () => void): this; + prependOnceListener(event: "checkContinue", listener: http.RequestListener): this; + prependOnceListener(event: "checkExpectation", listener: http.RequestListener): this; + prependOnceListener(event: "clientError", listener: (err: Error, socket: Duplex) => void): this; + prependOnceListener( + event: "connect", + listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, + ): this; + prependOnceListener(event: "request", listener: http.RequestListener): this; + prependOnceListener( + event: "upgrade", + listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, + ): this; + } + /** + * ```js + * // curl -k https://localhost:8000/ + * const https = require('node:https'); + * const fs = require('node:fs'); + * + * const options = { + * key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), + * cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem'), + * }; + * + * https.createServer(options, (req, res) => { + * res.writeHead(200); + * res.end('hello world\n'); + * }).listen(8000); + * ``` + * + * Or + * + * ```js + * const https = require('node:https'); + * const fs = require('node:fs'); + * + * const options = { + * pfx: fs.readFileSync('test/fixtures/test_cert.pfx'), + * passphrase: 'sample', + * }; + * + * https.createServer(options, (req, res) => { + * res.writeHead(200); + * res.end('hello world\n'); + * }).listen(8000); + * ``` + * @since v0.3.4 + * @param options Accepts `options` from `createServer`, `createSecureContext` and `createServer`. + * @param requestListener A listener to be added to the `'request'` event. + */ + function createServer< + Request extends typeof http.IncomingMessage = typeof http.IncomingMessage, + Response extends typeof http.ServerResponse = typeof http.ServerResponse, + >(requestListener?: http.RequestListener): Server; + function createServer< + Request extends typeof http.IncomingMessage = typeof http.IncomingMessage, + Response extends typeof http.ServerResponse = typeof http.ServerResponse, + >( + options: ServerOptions, + requestListener?: http.RequestListener, + ): Server; + /** + * Makes a request to a secure web server. + * + * The following additional `options` from `tls.connect()` are also accepted:`ca`, `cert`, `ciphers`, `clientCertEngine`, `crl`, `dhparam`, `ecdhCurve`,`honorCipherOrder`, `key`, `passphrase`, + * `pfx`, `rejectUnauthorized`,`secureOptions`, `secureProtocol`, `servername`, `sessionIdContext`,`highWaterMark`. + * + * `options` can be an object, a string, or a `URL` object. If `options` is a + * string, it is automatically parsed with `new URL()`. If it is a `URL` object, it will be automatically converted to an ordinary `options` object. + * + * `https.request()` returns an instance of the `http.ClientRequest` class. The `ClientRequest` instance is a writable stream. If one needs to + * upload a file with a POST request, then write to the `ClientRequest` object. + * + * ```js + * const https = require('node:https'); + * + * const options = { + * hostname: 'encrypted.google.com', + * port: 443, + * path: '/', + * method: 'GET', + * }; + * + * const req = https.request(options, (res) => { + * console.log('statusCode:', res.statusCode); + * console.log('headers:', res.headers); + * + * res.on('data', (d) => { + * process.stdout.write(d); + * }); + * }); + * + * req.on('error', (e) => { + * console.error(e); + * }); + * req.end(); + * ``` + * + * Example using options from `tls.connect()`: + * + * ```js + * const options = { + * hostname: 'encrypted.google.com', + * port: 443, + * path: '/', + * method: 'GET', + * key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), + * cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem'), + * }; + * options.agent = new https.Agent(options); + * + * const req = https.request(options, (res) => { + * // ... + * }); + * ``` + * + * Alternatively, opt out of connection pooling by not using an `Agent`. + * + * ```js + * const options = { + * hostname: 'encrypted.google.com', + * port: 443, + * path: '/', + * method: 'GET', + * key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), + * cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem'), + * agent: false, + * }; + * + * const req = https.request(options, (res) => { + * // ... + * }); + * ``` + * + * Example using a `URL` as `options`: + * + * ```js + * const options = new URL('https://abc:xyz@example.com'); + * + * const req = https.request(options, (res) => { + * // ... + * }); + * ``` + * + * Example pinning on certificate fingerprint, or the public key (similar to`pin-sha256`): + * + * ```js + * const tls = require('node:tls'); + * const https = require('node:https'); + * const crypto = require('node:crypto'); + * + * function sha256(s) { + * return crypto.createHash('sha256').update(s).digest('base64'); + * } + * const options = { + * hostname: 'github.com', + * port: 443, + * path: '/', + * method: 'GET', + * checkServerIdentity: function(host, cert) { + * // Make sure the certificate is issued to the host we are connected to + * const err = tls.checkServerIdentity(host, cert); + * if (err) { + * return err; + * } + * + * // Pin the public key, similar to HPKP pin-sha256 pinning + * const pubkey256 = 'pL1+qb9HTMRZJmuC/bB/ZI9d302BYrrqiVuRyW+DGrU='; + * if (sha256(cert.pubkey) !== pubkey256) { + * const msg = 'Certificate verification error: ' + + * `The public key of '${cert.subject.CN}' ` + + * 'does not match our pinned fingerprint'; + * return new Error(msg); + * } + * + * // Pin the exact certificate, rather than the pub key + * const cert256 = '25:FE:39:32:D9:63:8C:8A:FC:A1:9A:29:87:' + + * 'D8:3E:4C:1D:98:DB:71:E4:1A:48:03:98:EA:22:6A:BD:8B:93:16'; + * if (cert.fingerprint256 !== cert256) { + * const msg = 'Certificate verification error: ' + + * `The certificate of '${cert.subject.CN}' ` + + * 'does not match our pinned fingerprint'; + * return new Error(msg); + * } + * + * // This loop is informational only. + * // Print the certificate and public key fingerprints of all certs in the + * // chain. Its common to pin the public key of the issuer on the public + * // internet, while pinning the public key of the service in sensitive + * // environments. + * do { + * console.log('Subject Common Name:', cert.subject.CN); + * console.log(' Certificate SHA256 fingerprint:', cert.fingerprint256); + * + * hash = crypto.createHash('sha256'); + * console.log(' Public key ping-sha256:', sha256(cert.pubkey)); + * + * lastprint256 = cert.fingerprint256; + * cert = cert.issuerCertificate; + * } while (cert.fingerprint256 !== lastprint256); + * + * }, + * }; + * + * options.agent = new https.Agent(options); + * const req = https.request(options, (res) => { + * console.log('All OK. Server matched our pinned cert or public key'); + * console.log('statusCode:', res.statusCode); + * // Print the HPKP values + * console.log('headers:', res.headers['public-key-pins']); + * + * res.on('data', (d) => {}); + * }); + * + * req.on('error', (e) => { + * console.error(e.message); + * }); + * req.end(); + * ``` + * + * Outputs for example: + * + * ```text + * Subject Common Name: github.com + * Certificate SHA256 fingerprint: 25:FE:39:32:D9:63:8C:8A:FC:A1:9A:29:87:D8:3E:4C:1D:98:DB:71:E4:1A:48:03:98:EA:22:6A:BD:8B:93:16 + * Public key ping-sha256: pL1+qb9HTMRZJmuC/bB/ZI9d302BYrrqiVuRyW+DGrU= + * Subject Common Name: DigiCert SHA2 Extended Validation Server CA + * Certificate SHA256 fingerprint: 40:3E:06:2A:26:53:05:91:13:28:5B:AF:80:A0:D4:AE:42:2C:84:8C:9F:78:FA:D0:1F:C9:4B:C5:B8:7F:EF:1A + * Public key ping-sha256: RRM1dGqnDFsCJXBTHky16vi1obOlCgFFn/yOhI/y+ho= + * Subject Common Name: DigiCert High Assurance EV Root CA + * Certificate SHA256 fingerprint: 74:31:E5:F4:C3:C1:CE:46:90:77:4F:0B:61:E0:54:40:88:3B:A9:A0:1E:D0:0B:A6:AB:D7:80:6E:D3:B1:18:CF + * Public key ping-sha256: WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18= + * All OK. Server matched our pinned cert or public key + * statusCode: 200 + * headers: max-age=0; pin-sha256="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18="; pin-sha256="RRM1dGqnDFsCJXBTHky16vi1obOlCgFFn/yOhI/y+ho="; + * pin-sha256="k2v657xBsOVe1PQRwOsHsw3bsGT2VzIqz5K+59sNQws="; pin-sha256="K87oWBWM9UZfyddvDfoxL+8lpNyoUB2ptGtn0fv6G2Q="; pin-sha256="IQBnNBEiFuhj+8x6X8XLgh01V9Ic5/V3IRQLNFFc7v4="; + * pin-sha256="iie1VXtL7HzAMF+/PVPR9xzT80kQxdZeJ+zduCB3uj0="; pin-sha256="LvRiGEjRqfzurezaWuj8Wie2gyHMrW5Q06LspMnox7A="; includeSubDomains + * ``` + * @since v0.3.6 + * @param options Accepts all `options` from `request`, with some differences in default values: + */ + function request( + options: RequestOptions | string | URL, + callback?: (res: http.IncomingMessage) => void, + ): http.ClientRequest; + function request( + url: string | URL, + options: RequestOptions, + callback?: (res: http.IncomingMessage) => void, + ): http.ClientRequest; + /** + * Like `http.get()` but for HTTPS. + * + * `options` can be an object, a string, or a `URL` object. If `options` is a + * string, it is automatically parsed with `new URL()`. If it is a `URL` object, it will be automatically converted to an ordinary `options` object. + * + * ```js + * const https = require('node:https'); + * + * https.get('https://encrypted.google.com/', (res) => { + * console.log('statusCode:', res.statusCode); + * console.log('headers:', res.headers); + * + * res.on('data', (d) => { + * process.stdout.write(d); + * }); + * + * }).on('error', (e) => { + * console.error(e); + * }); + * ``` + * @since v0.3.6 + * @param options Accepts the same `options` as {@link request}, with the `method` always set to `GET`. + */ + function get( + options: RequestOptions | string | URL, + callback?: (res: http.IncomingMessage) => void, + ): http.ClientRequest; + function get( + url: string | URL, + options: RequestOptions, + callback?: (res: http.IncomingMessage) => void, + ): http.ClientRequest; + let globalAgent: Agent; +} +declare module "node:https" { + export * from "https"; +} diff --git a/node_modules/@types/node/index.d.ts b/node_modules/@types/node/index.d.ts new file mode 100644 index 00000000..a596cad0 --- /dev/null +++ b/node_modules/@types/node/index.d.ts @@ -0,0 +1,88 @@ +/** + * License for programmatically and manually incorporated + * documentation aka. `JSDoc` from https://github.com/nodejs/node/tree/master/doc + * + * Copyright Node.js contributors. All rights reserved. + * 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. + */ + +// NOTE: These definitions support NodeJS and TypeScript 4.9+. + +// Reference required types from the default lib: +/// +/// +/// +/// + +// Base definitions for all NodeJS modules that are not specific to any version of TypeScript: +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// + +/// diff --git a/node_modules/@types/node/inspector.d.ts b/node_modules/@types/node/inspector.d.ts new file mode 100644 index 00000000..3927b816 --- /dev/null +++ b/node_modules/@types/node/inspector.d.ts @@ -0,0 +1,2747 @@ +// Type definitions for inspector + +// These definitions are auto-generated. +// Please see https://github.com/DefinitelyTyped/DefinitelyTyped/pull/19330 +// for more information. + + +/** + * The `node:inspector` module provides an API for interacting with the V8 + * inspector. + * + * It can be accessed using: + * + * ```js + * import * as inspector from 'node:inspector/promises'; + * ``` + * + * or + * + * ```js + * import * as inspector from 'node:inspector'; + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/inspector.js) + */ +declare module 'inspector' { + import EventEmitter = require('node:events'); + interface InspectorNotification { + method: string; + params: T; + } + namespace Schema { + /** + * Description of the protocol domain. + */ + interface Domain { + /** + * Domain name. + */ + name: string; + /** + * Domain version. + */ + version: string; + } + interface GetDomainsReturnType { + /** + * List of supported domains. + */ + domains: Domain[]; + } + } + namespace Runtime { + /** + * Unique script identifier. + */ + type ScriptId = string; + /** + * Unique object identifier. + */ + type RemoteObjectId = string; + /** + * Primitive value which cannot be JSON-stringified. + */ + type UnserializableValue = string; + /** + * Mirror object referencing original JavaScript object. + */ + interface RemoteObject { + /** + * Object type. + */ + type: string; + /** + * Object subtype hint. Specified for object type values only. + */ + subtype?: string | undefined; + /** + * Object class (constructor) name. Specified for object type values only. + */ + className?: string | undefined; + /** + * Remote object value in case of primitive values or JSON values (if it was requested). + */ + value?: any; + /** + * Primitive value which can not be JSON-stringified does not have value, but gets this property. + */ + unserializableValue?: UnserializableValue | undefined; + /** + * String representation of the object. + */ + description?: string | undefined; + /** + * Unique object identifier (for non-primitive values). + */ + objectId?: RemoteObjectId | undefined; + /** + * Preview containing abbreviated property values. Specified for object type values only. + * @experimental + */ + preview?: ObjectPreview | undefined; + /** + * @experimental + */ + customPreview?: CustomPreview | undefined; + } + /** + * @experimental + */ + interface CustomPreview { + header: string; + hasBody: boolean; + formatterObjectId: RemoteObjectId; + bindRemoteObjectFunctionId: RemoteObjectId; + configObjectId?: RemoteObjectId | undefined; + } + /** + * Object containing abbreviated remote object value. + * @experimental + */ + interface ObjectPreview { + /** + * Object type. + */ + type: string; + /** + * Object subtype hint. Specified for object type values only. + */ + subtype?: string | undefined; + /** + * String representation of the object. + */ + description?: string | undefined; + /** + * True iff some of the properties or entries of the original object did not fit. + */ + overflow: boolean; + /** + * List of the properties. + */ + properties: PropertyPreview[]; + /** + * List of the entries. Specified for map and set subtype values only. + */ + entries?: EntryPreview[] | undefined; + } + /** + * @experimental + */ + interface PropertyPreview { + /** + * Property name. + */ + name: string; + /** + * Object type. Accessor means that the property itself is an accessor property. + */ + type: string; + /** + * User-friendly property value string. + */ + value?: string | undefined; + /** + * Nested value preview. + */ + valuePreview?: ObjectPreview | undefined; + /** + * Object subtype hint. Specified for object type values only. + */ + subtype?: string | undefined; + } + /** + * @experimental + */ + interface EntryPreview { + /** + * Preview of the key. Specified for map-like collection entries. + */ + key?: ObjectPreview | undefined; + /** + * Preview of the value. + */ + value: ObjectPreview; + } + /** + * Object property descriptor. + */ + interface PropertyDescriptor { + /** + * Property name or symbol description. + */ + name: string; + /** + * The value associated with the property. + */ + value?: RemoteObject | undefined; + /** + * True if the value associated with the property may be changed (data descriptors only). + */ + writable?: boolean | undefined; + /** + * A function which serves as a getter for the property, or undefined if there is no getter (accessor descriptors only). + */ + get?: RemoteObject | undefined; + /** + * A function which serves as a setter for the property, or undefined if there is no setter (accessor descriptors only). + */ + set?: RemoteObject | undefined; + /** + * True if the type of this property descriptor may be changed and if the property may be deleted from the corresponding object. + */ + configurable: boolean; + /** + * True if this property shows up during enumeration of the properties on the corresponding object. + */ + enumerable: boolean; + /** + * True if the result was thrown during the evaluation. + */ + wasThrown?: boolean | undefined; + /** + * True if the property is owned for the object. + */ + isOwn?: boolean | undefined; + /** + * Property symbol object, if the property is of the symbol type. + */ + symbol?: RemoteObject | undefined; + } + /** + * Object internal property descriptor. This property isn't normally visible in JavaScript code. + */ + interface InternalPropertyDescriptor { + /** + * Conventional property name. + */ + name: string; + /** + * The value associated with the property. + */ + value?: RemoteObject | undefined; + } + /** + * Represents function call argument. Either remote object id objectId, primitive value, unserializable primitive value or neither of (for undefined) them should be specified. + */ + interface CallArgument { + /** + * Primitive value or serializable javascript object. + */ + value?: any; + /** + * Primitive value which can not be JSON-stringified. + */ + unserializableValue?: UnserializableValue | undefined; + /** + * Remote object handle. + */ + objectId?: RemoteObjectId | undefined; + } + /** + * Id of an execution context. + */ + type ExecutionContextId = number; + /** + * Description of an isolated world. + */ + interface ExecutionContextDescription { + /** + * Unique id of the execution context. It can be used to specify in which execution context script evaluation should be performed. + */ + id: ExecutionContextId; + /** + * Execution context origin. + */ + origin: string; + /** + * Human readable name describing given context. + */ + name: string; + /** + * Embedder-specific auxiliary data. + */ + auxData?: {} | undefined; + } + /** + * Detailed information about exception (or error) that was thrown during script compilation or execution. + */ + interface ExceptionDetails { + /** + * Exception id. + */ + exceptionId: number; + /** + * Exception text, which should be used together with exception object when available. + */ + text: string; + /** + * Line number of the exception location (0-based). + */ + lineNumber: number; + /** + * Column number of the exception location (0-based). + */ + columnNumber: number; + /** + * Script ID of the exception location. + */ + scriptId?: ScriptId | undefined; + /** + * URL of the exception location, to be used when the script was not reported. + */ + url?: string | undefined; + /** + * JavaScript stack trace if available. + */ + stackTrace?: StackTrace | undefined; + /** + * Exception object if available. + */ + exception?: RemoteObject | undefined; + /** + * Identifier of the context where exception happened. + */ + executionContextId?: ExecutionContextId | undefined; + } + /** + * Number of milliseconds since epoch. + */ + type Timestamp = number; + /** + * Stack entry for runtime errors and assertions. + */ + interface CallFrame { + /** + * JavaScript function name. + */ + functionName: string; + /** + * JavaScript script id. + */ + scriptId: ScriptId; + /** + * JavaScript script name or url. + */ + url: string; + /** + * JavaScript script line number (0-based). + */ + lineNumber: number; + /** + * JavaScript script column number (0-based). + */ + columnNumber: number; + } + /** + * Call frames for assertions or error messages. + */ + interface StackTrace { + /** + * String label of this stack trace. For async traces this may be a name of the function that initiated the async call. + */ + description?: string | undefined; + /** + * JavaScript function name. + */ + callFrames: CallFrame[]; + /** + * Asynchronous JavaScript stack trace that preceded this stack, if available. + */ + parent?: StackTrace | undefined; + /** + * Asynchronous JavaScript stack trace that preceded this stack, if available. + * @experimental + */ + parentId?: StackTraceId | undefined; + } + /** + * Unique identifier of current debugger. + * @experimental + */ + type UniqueDebuggerId = string; + /** + * If debuggerId is set stack trace comes from another debugger and can be resolved there. This allows to track cross-debugger calls. See Runtime.StackTrace and Debugger.paused for usages. + * @experimental + */ + interface StackTraceId { + id: string; + debuggerId?: UniqueDebuggerId | undefined; + } + interface EvaluateParameterType { + /** + * Expression to evaluate. + */ + expression: string; + /** + * Symbolic group name that can be used to release multiple objects. + */ + objectGroup?: string | undefined; + /** + * Determines whether Command Line API should be available during the evaluation. + */ + includeCommandLineAPI?: boolean | undefined; + /** + * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. + */ + silent?: boolean | undefined; + /** + * Specifies in which execution context to perform evaluation. If the parameter is omitted the evaluation will be performed in the context of the inspected page. + */ + contextId?: ExecutionContextId | undefined; + /** + * Whether the result is expected to be a JSON object that should be sent by value. + */ + returnByValue?: boolean | undefined; + /** + * Whether preview should be generated for the result. + * @experimental + */ + generatePreview?: boolean | undefined; + /** + * Whether execution should be treated as initiated by user in the UI. + */ + userGesture?: boolean | undefined; + /** + * Whether execution should await for resulting value and return once awaited promise is resolved. + */ + awaitPromise?: boolean | undefined; + } + interface AwaitPromiseParameterType { + /** + * Identifier of the promise. + */ + promiseObjectId: RemoteObjectId; + /** + * Whether the result is expected to be a JSON object that should be sent by value. + */ + returnByValue?: boolean | undefined; + /** + * Whether preview should be generated for the result. + */ + generatePreview?: boolean | undefined; + } + interface CallFunctionOnParameterType { + /** + * Declaration of the function to call. + */ + functionDeclaration: string; + /** + * Identifier of the object to call function on. Either objectId or executionContextId should be specified. + */ + objectId?: RemoteObjectId | undefined; + /** + * Call arguments. All call arguments must belong to the same JavaScript world as the target object. + */ + arguments?: CallArgument[] | undefined; + /** + * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. + */ + silent?: boolean | undefined; + /** + * Whether the result is expected to be a JSON object which should be sent by value. + */ + returnByValue?: boolean | undefined; + /** + * Whether preview should be generated for the result. + * @experimental + */ + generatePreview?: boolean | undefined; + /** + * Whether execution should be treated as initiated by user in the UI. + */ + userGesture?: boolean | undefined; + /** + * Whether execution should await for resulting value and return once awaited promise is resolved. + */ + awaitPromise?: boolean | undefined; + /** + * Specifies execution context which global object will be used to call function on. Either executionContextId or objectId should be specified. + */ + executionContextId?: ExecutionContextId | undefined; + /** + * Symbolic group name that can be used to release multiple objects. If objectGroup is not specified and objectId is, objectGroup will be inherited from object. + */ + objectGroup?: string | undefined; + } + interface GetPropertiesParameterType { + /** + * Identifier of the object to return properties for. + */ + objectId: RemoteObjectId; + /** + * If true, returns properties belonging only to the element itself, not to its prototype chain. + */ + ownProperties?: boolean | undefined; + /** + * If true, returns accessor properties (with getter/setter) only; internal properties are not returned either. + * @experimental + */ + accessorPropertiesOnly?: boolean | undefined; + /** + * Whether preview should be generated for the results. + * @experimental + */ + generatePreview?: boolean | undefined; + } + interface ReleaseObjectParameterType { + /** + * Identifier of the object to release. + */ + objectId: RemoteObjectId; + } + interface ReleaseObjectGroupParameterType { + /** + * Symbolic object group name. + */ + objectGroup: string; + } + interface SetCustomObjectFormatterEnabledParameterType { + enabled: boolean; + } + interface CompileScriptParameterType { + /** + * Expression to compile. + */ + expression: string; + /** + * Source url to be set for the script. + */ + sourceURL: string; + /** + * Specifies whether the compiled script should be persisted. + */ + persistScript: boolean; + /** + * Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page. + */ + executionContextId?: ExecutionContextId | undefined; + } + interface RunScriptParameterType { + /** + * Id of the script to run. + */ + scriptId: ScriptId; + /** + * Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page. + */ + executionContextId?: ExecutionContextId | undefined; + /** + * Symbolic group name that can be used to release multiple objects. + */ + objectGroup?: string | undefined; + /** + * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. + */ + silent?: boolean | undefined; + /** + * Determines whether Command Line API should be available during the evaluation. + */ + includeCommandLineAPI?: boolean | undefined; + /** + * Whether the result is expected to be a JSON object which should be sent by value. + */ + returnByValue?: boolean | undefined; + /** + * Whether preview should be generated for the result. + */ + generatePreview?: boolean | undefined; + /** + * Whether execution should await for resulting value and return once awaited promise is resolved. + */ + awaitPromise?: boolean | undefined; + } + interface QueryObjectsParameterType { + /** + * Identifier of the prototype to return objects for. + */ + prototypeObjectId: RemoteObjectId; + } + interface GlobalLexicalScopeNamesParameterType { + /** + * Specifies in which execution context to lookup global scope variables. + */ + executionContextId?: ExecutionContextId | undefined; + } + interface EvaluateReturnType { + /** + * Evaluation result. + */ + result: RemoteObject; + /** + * Exception details. + */ + exceptionDetails?: ExceptionDetails | undefined; + } + interface AwaitPromiseReturnType { + /** + * Promise result. Will contain rejected value if promise was rejected. + */ + result: RemoteObject; + /** + * Exception details if stack strace is available. + */ + exceptionDetails?: ExceptionDetails | undefined; + } + interface CallFunctionOnReturnType { + /** + * Call result. + */ + result: RemoteObject; + /** + * Exception details. + */ + exceptionDetails?: ExceptionDetails | undefined; + } + interface GetPropertiesReturnType { + /** + * Object properties. + */ + result: PropertyDescriptor[]; + /** + * Internal object properties (only of the element itself). + */ + internalProperties?: InternalPropertyDescriptor[] | undefined; + /** + * Exception details. + */ + exceptionDetails?: ExceptionDetails | undefined; + } + interface CompileScriptReturnType { + /** + * Id of the script. + */ + scriptId?: ScriptId | undefined; + /** + * Exception details. + */ + exceptionDetails?: ExceptionDetails | undefined; + } + interface RunScriptReturnType { + /** + * Run result. + */ + result: RemoteObject; + /** + * Exception details. + */ + exceptionDetails?: ExceptionDetails | undefined; + } + interface QueryObjectsReturnType { + /** + * Array with objects. + */ + objects: RemoteObject; + } + interface GlobalLexicalScopeNamesReturnType { + names: string[]; + } + interface ExecutionContextCreatedEventDataType { + /** + * A newly created execution context. + */ + context: ExecutionContextDescription; + } + interface ExecutionContextDestroyedEventDataType { + /** + * Id of the destroyed context + */ + executionContextId: ExecutionContextId; + } + interface ExceptionThrownEventDataType { + /** + * Timestamp of the exception. + */ + timestamp: Timestamp; + exceptionDetails: ExceptionDetails; + } + interface ExceptionRevokedEventDataType { + /** + * Reason describing why exception was revoked. + */ + reason: string; + /** + * The id of revoked exception, as reported in exceptionThrown. + */ + exceptionId: number; + } + interface ConsoleAPICalledEventDataType { + /** + * Type of the call. + */ + type: string; + /** + * Call arguments. + */ + args: RemoteObject[]; + /** + * Identifier of the context where the call was made. + */ + executionContextId: ExecutionContextId; + /** + * Call timestamp. + */ + timestamp: Timestamp; + /** + * Stack trace captured when the call was made. + */ + stackTrace?: StackTrace | undefined; + /** + * Console context descriptor for calls on non-default console context (not console.*): 'anonymous#unique-logger-id' for call on unnamed context, 'name#unique-logger-id' for call on named context. + * @experimental + */ + context?: string | undefined; + } + interface InspectRequestedEventDataType { + object: RemoteObject; + hints: {}; + } + } + namespace Debugger { + /** + * Breakpoint identifier. + */ + type BreakpointId = string; + /** + * Call frame identifier. + */ + type CallFrameId = string; + /** + * Location in the source code. + */ + interface Location { + /** + * Script identifier as reported in the Debugger.scriptParsed. + */ + scriptId: Runtime.ScriptId; + /** + * Line number in the script (0-based). + */ + lineNumber: number; + /** + * Column number in the script (0-based). + */ + columnNumber?: number | undefined; + } + /** + * Location in the source code. + * @experimental + */ + interface ScriptPosition { + lineNumber: number; + columnNumber: number; + } + /** + * JavaScript call frame. Array of call frames form the call stack. + */ + interface CallFrame { + /** + * Call frame identifier. This identifier is only valid while the virtual machine is paused. + */ + callFrameId: CallFrameId; + /** + * Name of the JavaScript function called on this call frame. + */ + functionName: string; + /** + * Location in the source code. + */ + functionLocation?: Location | undefined; + /** + * Location in the source code. + */ + location: Location; + /** + * JavaScript script name or url. + */ + url: string; + /** + * Scope chain for this call frame. + */ + scopeChain: Scope[]; + /** + * this object for this call frame. + */ + this: Runtime.RemoteObject; + /** + * The value being returned, if the function is at return point. + */ + returnValue?: Runtime.RemoteObject | undefined; + } + /** + * Scope description. + */ + interface Scope { + /** + * Scope type. + */ + type: string; + /** + * Object representing the scope. For global and with scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties. + */ + object: Runtime.RemoteObject; + name?: string | undefined; + /** + * Location in the source code where scope starts + */ + startLocation?: Location | undefined; + /** + * Location in the source code where scope ends + */ + endLocation?: Location | undefined; + } + /** + * Search match for resource. + */ + interface SearchMatch { + /** + * Line number in resource content. + */ + lineNumber: number; + /** + * Line with match content. + */ + lineContent: string; + } + interface BreakLocation { + /** + * Script identifier as reported in the Debugger.scriptParsed. + */ + scriptId: Runtime.ScriptId; + /** + * Line number in the script (0-based). + */ + lineNumber: number; + /** + * Column number in the script (0-based). + */ + columnNumber?: number | undefined; + type?: string | undefined; + } + interface SetBreakpointsActiveParameterType { + /** + * New value for breakpoints active state. + */ + active: boolean; + } + interface SetSkipAllPausesParameterType { + /** + * New value for skip pauses state. + */ + skip: boolean; + } + interface SetBreakpointByUrlParameterType { + /** + * Line number to set breakpoint at. + */ + lineNumber: number; + /** + * URL of the resources to set breakpoint on. + */ + url?: string | undefined; + /** + * Regex pattern for the URLs of the resources to set breakpoints on. Either url or urlRegex must be specified. + */ + urlRegex?: string | undefined; + /** + * Script hash of the resources to set breakpoint on. + */ + scriptHash?: string | undefined; + /** + * Offset in the line to set breakpoint at. + */ + columnNumber?: number | undefined; + /** + * Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true. + */ + condition?: string | undefined; + } + interface SetBreakpointParameterType { + /** + * Location to set breakpoint in. + */ + location: Location; + /** + * Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true. + */ + condition?: string | undefined; + } + interface RemoveBreakpointParameterType { + breakpointId: BreakpointId; + } + interface GetPossibleBreakpointsParameterType { + /** + * Start of range to search possible breakpoint locations in. + */ + start: Location; + /** + * End of range to search possible breakpoint locations in (excluding). When not specified, end of scripts is used as end of range. + */ + end?: Location | undefined; + /** + * Only consider locations which are in the same (non-nested) function as start. + */ + restrictToFunction?: boolean | undefined; + } + interface ContinueToLocationParameterType { + /** + * Location to continue to. + */ + location: Location; + targetCallFrames?: string | undefined; + } + interface PauseOnAsyncCallParameterType { + /** + * Debugger will pause when async call with given stack trace is started. + */ + parentStackTraceId: Runtime.StackTraceId; + } + interface StepIntoParameterType { + /** + * Debugger will issue additional Debugger.paused notification if any async task is scheduled before next pause. + * @experimental + */ + breakOnAsyncCall?: boolean | undefined; + } + interface GetStackTraceParameterType { + stackTraceId: Runtime.StackTraceId; + } + interface SearchInContentParameterType { + /** + * Id of the script to search in. + */ + scriptId: Runtime.ScriptId; + /** + * String to search for. + */ + query: string; + /** + * If true, search is case sensitive. + */ + caseSensitive?: boolean | undefined; + /** + * If true, treats string parameter as regex. + */ + isRegex?: boolean | undefined; + } + interface SetScriptSourceParameterType { + /** + * Id of the script to edit. + */ + scriptId: Runtime.ScriptId; + /** + * New content of the script. + */ + scriptSource: string; + /** + * If true the change will not actually be applied. Dry run may be used to get result description without actually modifying the code. + */ + dryRun?: boolean | undefined; + } + interface RestartFrameParameterType { + /** + * Call frame identifier to evaluate on. + */ + callFrameId: CallFrameId; + } + interface GetScriptSourceParameterType { + /** + * Id of the script to get source for. + */ + scriptId: Runtime.ScriptId; + } + interface SetPauseOnExceptionsParameterType { + /** + * Pause on exceptions mode. + */ + state: string; + } + interface EvaluateOnCallFrameParameterType { + /** + * Call frame identifier to evaluate on. + */ + callFrameId: CallFrameId; + /** + * Expression to evaluate. + */ + expression: string; + /** + * String object group name to put result into (allows rapid releasing resulting object handles using releaseObjectGroup). + */ + objectGroup?: string | undefined; + /** + * Specifies whether command line API should be available to the evaluated expression, defaults to false. + */ + includeCommandLineAPI?: boolean | undefined; + /** + * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. + */ + silent?: boolean | undefined; + /** + * Whether the result is expected to be a JSON object that should be sent by value. + */ + returnByValue?: boolean | undefined; + /** + * Whether preview should be generated for the result. + * @experimental + */ + generatePreview?: boolean | undefined; + /** + * Whether to throw an exception if side effect cannot be ruled out during evaluation. + */ + throwOnSideEffect?: boolean | undefined; + } + interface SetVariableValueParameterType { + /** + * 0-based number of scope as was listed in scope chain. Only 'local', 'closure' and 'catch' scope types are allowed. Other scopes could be manipulated manually. + */ + scopeNumber: number; + /** + * Variable name. + */ + variableName: string; + /** + * New variable value. + */ + newValue: Runtime.CallArgument; + /** + * Id of callframe that holds variable. + */ + callFrameId: CallFrameId; + } + interface SetReturnValueParameterType { + /** + * New return value. + */ + newValue: Runtime.CallArgument; + } + interface SetAsyncCallStackDepthParameterType { + /** + * Maximum depth of async call stacks. Setting to 0 will effectively disable collecting async call stacks (default). + */ + maxDepth: number; + } + interface SetBlackboxPatternsParameterType { + /** + * Array of regexps that will be used to check script url for blackbox state. + */ + patterns: string[]; + } + interface SetBlackboxedRangesParameterType { + /** + * Id of the script. + */ + scriptId: Runtime.ScriptId; + positions: ScriptPosition[]; + } + interface EnableReturnType { + /** + * Unique identifier of the debugger. + * @experimental + */ + debuggerId: Runtime.UniqueDebuggerId; + } + interface SetBreakpointByUrlReturnType { + /** + * Id of the created breakpoint for further reference. + */ + breakpointId: BreakpointId; + /** + * List of the locations this breakpoint resolved into upon addition. + */ + locations: Location[]; + } + interface SetBreakpointReturnType { + /** + * Id of the created breakpoint for further reference. + */ + breakpointId: BreakpointId; + /** + * Location this breakpoint resolved into. + */ + actualLocation: Location; + } + interface GetPossibleBreakpointsReturnType { + /** + * List of the possible breakpoint locations. + */ + locations: BreakLocation[]; + } + interface GetStackTraceReturnType { + stackTrace: Runtime.StackTrace; + } + interface SearchInContentReturnType { + /** + * List of search matches. + */ + result: SearchMatch[]; + } + interface SetScriptSourceReturnType { + /** + * New stack trace in case editing has happened while VM was stopped. + */ + callFrames?: CallFrame[] | undefined; + /** + * Whether current call stack was modified after applying the changes. + */ + stackChanged?: boolean | undefined; + /** + * Async stack trace, if any. + */ + asyncStackTrace?: Runtime.StackTrace | undefined; + /** + * Async stack trace, if any. + * @experimental + */ + asyncStackTraceId?: Runtime.StackTraceId | undefined; + /** + * Exception details if any. + */ + exceptionDetails?: Runtime.ExceptionDetails | undefined; + } + interface RestartFrameReturnType { + /** + * New stack trace. + */ + callFrames: CallFrame[]; + /** + * Async stack trace, if any. + */ + asyncStackTrace?: Runtime.StackTrace | undefined; + /** + * Async stack trace, if any. + * @experimental + */ + asyncStackTraceId?: Runtime.StackTraceId | undefined; + } + interface GetScriptSourceReturnType { + /** + * Script source. + */ + scriptSource: string; + } + interface EvaluateOnCallFrameReturnType { + /** + * Object wrapper for the evaluation result. + */ + result: Runtime.RemoteObject; + /** + * Exception details. + */ + exceptionDetails?: Runtime.ExceptionDetails | undefined; + } + interface ScriptParsedEventDataType { + /** + * Identifier of the script parsed. + */ + scriptId: Runtime.ScriptId; + /** + * URL or name of the script parsed (if any). + */ + url: string; + /** + * Line offset of the script within the resource with given URL (for script tags). + */ + startLine: number; + /** + * Column offset of the script within the resource with given URL. + */ + startColumn: number; + /** + * Last line of the script. + */ + endLine: number; + /** + * Length of the last line of the script. + */ + endColumn: number; + /** + * Specifies script creation context. + */ + executionContextId: Runtime.ExecutionContextId; + /** + * Content hash of the script. + */ + hash: string; + /** + * Embedder-specific auxiliary data. + */ + executionContextAuxData?: {} | undefined; + /** + * True, if this script is generated as a result of the live edit operation. + * @experimental + */ + isLiveEdit?: boolean | undefined; + /** + * URL of source map associated with script (if any). + */ + sourceMapURL?: string | undefined; + /** + * True, if this script has sourceURL. + */ + hasSourceURL?: boolean | undefined; + /** + * True, if this script is ES6 module. + */ + isModule?: boolean | undefined; + /** + * This script length. + */ + length?: number | undefined; + /** + * JavaScript top stack frame of where the script parsed event was triggered if available. + * @experimental + */ + stackTrace?: Runtime.StackTrace | undefined; + } + interface ScriptFailedToParseEventDataType { + /** + * Identifier of the script parsed. + */ + scriptId: Runtime.ScriptId; + /** + * URL or name of the script parsed (if any). + */ + url: string; + /** + * Line offset of the script within the resource with given URL (for script tags). + */ + startLine: number; + /** + * Column offset of the script within the resource with given URL. + */ + startColumn: number; + /** + * Last line of the script. + */ + endLine: number; + /** + * Length of the last line of the script. + */ + endColumn: number; + /** + * Specifies script creation context. + */ + executionContextId: Runtime.ExecutionContextId; + /** + * Content hash of the script. + */ + hash: string; + /** + * Embedder-specific auxiliary data. + */ + executionContextAuxData?: {} | undefined; + /** + * URL of source map associated with script (if any). + */ + sourceMapURL?: string | undefined; + /** + * True, if this script has sourceURL. + */ + hasSourceURL?: boolean | undefined; + /** + * True, if this script is ES6 module. + */ + isModule?: boolean | undefined; + /** + * This script length. + */ + length?: number | undefined; + /** + * JavaScript top stack frame of where the script parsed event was triggered if available. + * @experimental + */ + stackTrace?: Runtime.StackTrace | undefined; + } + interface BreakpointResolvedEventDataType { + /** + * Breakpoint unique identifier. + */ + breakpointId: BreakpointId; + /** + * Actual breakpoint location. + */ + location: Location; + } + interface PausedEventDataType { + /** + * Call stack the virtual machine stopped on. + */ + callFrames: CallFrame[]; + /** + * Pause reason. + */ + reason: string; + /** + * Object containing break-specific auxiliary properties. + */ + data?: {} | undefined; + /** + * Hit breakpoints IDs + */ + hitBreakpoints?: string[] | undefined; + /** + * Async stack trace, if any. + */ + asyncStackTrace?: Runtime.StackTrace | undefined; + /** + * Async stack trace, if any. + * @experimental + */ + asyncStackTraceId?: Runtime.StackTraceId | undefined; + /** + * Just scheduled async call will have this stack trace as parent stack during async execution. This field is available only after Debugger.stepInto call with breakOnAsynCall flag. + * @experimental + */ + asyncCallStackTraceId?: Runtime.StackTraceId | undefined; + } + } + namespace Console { + /** + * Console message. + */ + interface ConsoleMessage { + /** + * Message source. + */ + source: string; + /** + * Message severity. + */ + level: string; + /** + * Message text. + */ + text: string; + /** + * URL of the message origin. + */ + url?: string | undefined; + /** + * Line number in the resource that generated this message (1-based). + */ + line?: number | undefined; + /** + * Column number in the resource that generated this message (1-based). + */ + column?: number | undefined; + } + interface MessageAddedEventDataType { + /** + * Console message that has been added. + */ + message: ConsoleMessage; + } + } + namespace Profiler { + /** + * Profile node. Holds callsite information, execution statistics and child nodes. + */ + interface ProfileNode { + /** + * Unique id of the node. + */ + id: number; + /** + * Function location. + */ + callFrame: Runtime.CallFrame; + /** + * Number of samples where this node was on top of the call stack. + */ + hitCount?: number | undefined; + /** + * Child node ids. + */ + children?: number[] | undefined; + /** + * The reason of being not optimized. The function may be deoptimized or marked as don't optimize. + */ + deoptReason?: string | undefined; + /** + * An array of source position ticks. + */ + positionTicks?: PositionTickInfo[] | undefined; + } + /** + * Profile. + */ + interface Profile { + /** + * The list of profile nodes. First item is the root node. + */ + nodes: ProfileNode[]; + /** + * Profiling start timestamp in microseconds. + */ + startTime: number; + /** + * Profiling end timestamp in microseconds. + */ + endTime: number; + /** + * Ids of samples top nodes. + */ + samples?: number[] | undefined; + /** + * Time intervals between adjacent samples in microseconds. The first delta is relative to the profile startTime. + */ + timeDeltas?: number[] | undefined; + } + /** + * Specifies a number of samples attributed to a certain source position. + */ + interface PositionTickInfo { + /** + * Source line number (1-based). + */ + line: number; + /** + * Number of samples attributed to the source line. + */ + ticks: number; + } + /** + * Coverage data for a source range. + */ + interface CoverageRange { + /** + * JavaScript script source offset for the range start. + */ + startOffset: number; + /** + * JavaScript script source offset for the range end. + */ + endOffset: number; + /** + * Collected execution count of the source range. + */ + count: number; + } + /** + * Coverage data for a JavaScript function. + */ + interface FunctionCoverage { + /** + * JavaScript function name. + */ + functionName: string; + /** + * Source ranges inside the function with coverage data. + */ + ranges: CoverageRange[]; + /** + * Whether coverage data for this function has block granularity. + */ + isBlockCoverage: boolean; + } + /** + * Coverage data for a JavaScript script. + */ + interface ScriptCoverage { + /** + * JavaScript script id. + */ + scriptId: Runtime.ScriptId; + /** + * JavaScript script name or url. + */ + url: string; + /** + * Functions contained in the script that has coverage data. + */ + functions: FunctionCoverage[]; + } + /** + * Describes a type collected during runtime. + * @experimental + */ + interface TypeObject { + /** + * Name of a type collected with type profiling. + */ + name: string; + } + /** + * Source offset and types for a parameter or return value. + * @experimental + */ + interface TypeProfileEntry { + /** + * Source offset of the parameter or end of function for return values. + */ + offset: number; + /** + * The types for this parameter or return value. + */ + types: TypeObject[]; + } + /** + * Type profile data collected during runtime for a JavaScript script. + * @experimental + */ + interface ScriptTypeProfile { + /** + * JavaScript script id. + */ + scriptId: Runtime.ScriptId; + /** + * JavaScript script name or url. + */ + url: string; + /** + * Type profile entries for parameters and return values of the functions in the script. + */ + entries: TypeProfileEntry[]; + } + interface SetSamplingIntervalParameterType { + /** + * New sampling interval in microseconds. + */ + interval: number; + } + interface StartPreciseCoverageParameterType { + /** + * Collect accurate call counts beyond simple 'covered' or 'not covered'. + */ + callCount?: boolean | undefined; + /** + * Collect block-based coverage. + */ + detailed?: boolean | undefined; + } + interface StopReturnType { + /** + * Recorded profile. + */ + profile: Profile; + } + interface TakePreciseCoverageReturnType { + /** + * Coverage data for the current isolate. + */ + result: ScriptCoverage[]; + } + interface GetBestEffortCoverageReturnType { + /** + * Coverage data for the current isolate. + */ + result: ScriptCoverage[]; + } + interface TakeTypeProfileReturnType { + /** + * Type profile for all scripts since startTypeProfile() was turned on. + */ + result: ScriptTypeProfile[]; + } + interface ConsoleProfileStartedEventDataType { + id: string; + /** + * Location of console.profile(). + */ + location: Debugger.Location; + /** + * Profile title passed as an argument to console.profile(). + */ + title?: string | undefined; + } + interface ConsoleProfileFinishedEventDataType { + id: string; + /** + * Location of console.profileEnd(). + */ + location: Debugger.Location; + profile: Profile; + /** + * Profile title passed as an argument to console.profile(). + */ + title?: string | undefined; + } + } + namespace HeapProfiler { + /** + * Heap snapshot object id. + */ + type HeapSnapshotObjectId = string; + /** + * Sampling Heap Profile node. Holds callsite information, allocation statistics and child nodes. + */ + interface SamplingHeapProfileNode { + /** + * Function location. + */ + callFrame: Runtime.CallFrame; + /** + * Allocations size in bytes for the node excluding children. + */ + selfSize: number; + /** + * Child nodes. + */ + children: SamplingHeapProfileNode[]; + } + /** + * Profile. + */ + interface SamplingHeapProfile { + head: SamplingHeapProfileNode; + } + interface StartTrackingHeapObjectsParameterType { + trackAllocations?: boolean | undefined; + } + interface StopTrackingHeapObjectsParameterType { + /** + * If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken when the tracking is stopped. + */ + reportProgress?: boolean | undefined; + } + interface TakeHeapSnapshotParameterType { + /** + * If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken. + */ + reportProgress?: boolean | undefined; + } + interface GetObjectByHeapObjectIdParameterType { + objectId: HeapSnapshotObjectId; + /** + * Symbolic group name that can be used to release multiple objects. + */ + objectGroup?: string | undefined; + } + interface AddInspectedHeapObjectParameterType { + /** + * Heap snapshot object id to be accessible by means of $x command line API. + */ + heapObjectId: HeapSnapshotObjectId; + } + interface GetHeapObjectIdParameterType { + /** + * Identifier of the object to get heap object id for. + */ + objectId: Runtime.RemoteObjectId; + } + interface StartSamplingParameterType { + /** + * Average sample interval in bytes. Poisson distribution is used for the intervals. The default value is 32768 bytes. + */ + samplingInterval?: number | undefined; + } + interface GetObjectByHeapObjectIdReturnType { + /** + * Evaluation result. + */ + result: Runtime.RemoteObject; + } + interface GetHeapObjectIdReturnType { + /** + * Id of the heap snapshot object corresponding to the passed remote object id. + */ + heapSnapshotObjectId: HeapSnapshotObjectId; + } + interface StopSamplingReturnType { + /** + * Recorded sampling heap profile. + */ + profile: SamplingHeapProfile; + } + interface GetSamplingProfileReturnType { + /** + * Return the sampling profile being collected. + */ + profile: SamplingHeapProfile; + } + interface AddHeapSnapshotChunkEventDataType { + chunk: string; + } + interface ReportHeapSnapshotProgressEventDataType { + done: number; + total: number; + finished?: boolean | undefined; + } + interface LastSeenObjectIdEventDataType { + lastSeenObjectId: number; + timestamp: number; + } + interface HeapStatsUpdateEventDataType { + /** + * An array of triplets. Each triplet describes a fragment. The first integer is the fragment index, the second integer is a total count of objects for the fragment, the third integer is a total size of the objects for the fragment. + */ + statsUpdate: number[]; + } + } + namespace NodeTracing { + interface TraceConfig { + /** + * Controls how the trace buffer stores data. + */ + recordMode?: string | undefined; + /** + * Included category filters. + */ + includedCategories: string[]; + } + interface StartParameterType { + traceConfig: TraceConfig; + } + interface GetCategoriesReturnType { + /** + * A list of supported tracing categories. + */ + categories: string[]; + } + interface DataCollectedEventDataType { + value: Array<{}>; + } + } + namespace NodeWorker { + type WorkerID = string; + /** + * Unique identifier of attached debugging session. + */ + type SessionID = string; + interface WorkerInfo { + workerId: WorkerID; + type: string; + title: string; + url: string; + } + interface SendMessageToWorkerParameterType { + message: string; + /** + * Identifier of the session. + */ + sessionId: SessionID; + } + interface EnableParameterType { + /** + * Whether to new workers should be paused until the frontend sends `Runtime.runIfWaitingForDebugger` + * message to run them. + */ + waitForDebuggerOnStart: boolean; + } + interface DetachParameterType { + sessionId: SessionID; + } + interface AttachedToWorkerEventDataType { + /** + * Identifier assigned to the session used to send/receive messages. + */ + sessionId: SessionID; + workerInfo: WorkerInfo; + waitingForDebugger: boolean; + } + interface DetachedFromWorkerEventDataType { + /** + * Detached session identifier. + */ + sessionId: SessionID; + } + interface ReceivedMessageFromWorkerEventDataType { + /** + * Identifier of a session which sends a message. + */ + sessionId: SessionID; + message: string; + } + } + namespace NodeRuntime { + interface NotifyWhenWaitingForDisconnectParameterType { + enabled: boolean; + } + } + /** + * The `inspector.Session` is used for dispatching messages to the V8 inspector + * back-end and receiving message responses and notifications. + */ + class Session extends EventEmitter { + /** + * Create a new instance of the inspector.Session class. + * The inspector session needs to be connected through session.connect() before the messages can be dispatched to the inspector backend. + */ + constructor(); + /** + * Connects a session to the inspector back-end. + * @since v8.0.0 + */ + connect(): void; + /** + * Immediately close the session. All pending message callbacks will be called + * with an error. `session.connect()` will need to be called to be able to send + * messages again. Reconnected session will lose all inspector state, such as + * enabled agents or configured breakpoints. + * @since v8.0.0 + */ + disconnect(): void; + /** + * Posts a message to the inspector back-end. `callback` will be notified when + * a response is received. `callback` is a function that accepts two optional + * arguments: error and message-specific result. + * + * ```js + * session.post('Runtime.evaluate', { expression: '2 + 2' }, + * (error, { result }) => console.log(result)); + * // Output: { type: 'number', value: 4, description: '4' } + * ``` + * + * The latest version of the V8 inspector protocol is published on the [Chrome DevTools Protocol Viewer](https://chromedevtools.github.io/devtools-protocol/v8/). + * + * Node.js inspector supports all the Chrome DevTools Protocol domains declared + * by V8\. Chrome DevTools Protocol domain provides an interface for interacting + * with one of the runtime agents used to inspect the application state and listen + * to the run-time events. + * + * ## Example usage + * + * Apart from the debugger, various V8 Profilers are available through the DevTools + * protocol. + * @since v8.0.0 + */ + post(method: string, params?: {}, callback?: (err: Error | null, params?: {}) => void): void; + post(method: string, callback?: (err: Error | null, params?: {}) => void): void; + /** + * Returns supported domains. + */ + post(method: 'Schema.getDomains', callback?: (err: Error | null, params: Schema.GetDomainsReturnType) => void): void; + /** + * Evaluates expression on global object. + */ + post(method: 'Runtime.evaluate', params?: Runtime.EvaluateParameterType, callback?: (err: Error | null, params: Runtime.EvaluateReturnType) => void): void; + post(method: 'Runtime.evaluate', callback?: (err: Error | null, params: Runtime.EvaluateReturnType) => void): void; + /** + * Add handler to promise with given promise object id. + */ + post(method: 'Runtime.awaitPromise', params?: Runtime.AwaitPromiseParameterType, callback?: (err: Error | null, params: Runtime.AwaitPromiseReturnType) => void): void; + post(method: 'Runtime.awaitPromise', callback?: (err: Error | null, params: Runtime.AwaitPromiseReturnType) => void): void; + /** + * Calls function with given declaration on the given object. Object group of the result is inherited from the target object. + */ + post(method: 'Runtime.callFunctionOn', params?: Runtime.CallFunctionOnParameterType, callback?: (err: Error | null, params: Runtime.CallFunctionOnReturnType) => void): void; + post(method: 'Runtime.callFunctionOn', callback?: (err: Error | null, params: Runtime.CallFunctionOnReturnType) => void): void; + /** + * Returns properties of a given object. Object group of the result is inherited from the target object. + */ + post(method: 'Runtime.getProperties', params?: Runtime.GetPropertiesParameterType, callback?: (err: Error | null, params: Runtime.GetPropertiesReturnType) => void): void; + post(method: 'Runtime.getProperties', callback?: (err: Error | null, params: Runtime.GetPropertiesReturnType) => void): void; + /** + * Releases remote object with given id. + */ + post(method: 'Runtime.releaseObject', params?: Runtime.ReleaseObjectParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Runtime.releaseObject', callback?: (err: Error | null) => void): void; + /** + * Releases all remote objects that belong to a given group. + */ + post(method: 'Runtime.releaseObjectGroup', params?: Runtime.ReleaseObjectGroupParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Runtime.releaseObjectGroup', callback?: (err: Error | null) => void): void; + /** + * Tells inspected instance to run if it was waiting for debugger to attach. + */ + post(method: 'Runtime.runIfWaitingForDebugger', callback?: (err: Error | null) => void): void; + /** + * Enables reporting of execution contexts creation by means of executionContextCreated event. When the reporting gets enabled the event will be sent immediately for each existing execution context. + */ + post(method: 'Runtime.enable', callback?: (err: Error | null) => void): void; + /** + * Disables reporting of execution contexts creation. + */ + post(method: 'Runtime.disable', callback?: (err: Error | null) => void): void; + /** + * Discards collected exceptions and console API calls. + */ + post(method: 'Runtime.discardConsoleEntries', callback?: (err: Error | null) => void): void; + /** + * @experimental + */ + post(method: 'Runtime.setCustomObjectFormatterEnabled', params?: Runtime.SetCustomObjectFormatterEnabledParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Runtime.setCustomObjectFormatterEnabled', callback?: (err: Error | null) => void): void; + /** + * Compiles expression. + */ + post(method: 'Runtime.compileScript', params?: Runtime.CompileScriptParameterType, callback?: (err: Error | null, params: Runtime.CompileScriptReturnType) => void): void; + post(method: 'Runtime.compileScript', callback?: (err: Error | null, params: Runtime.CompileScriptReturnType) => void): void; + /** + * Runs script with given id in a given context. + */ + post(method: 'Runtime.runScript', params?: Runtime.RunScriptParameterType, callback?: (err: Error | null, params: Runtime.RunScriptReturnType) => void): void; + post(method: 'Runtime.runScript', callback?: (err: Error | null, params: Runtime.RunScriptReturnType) => void): void; + post(method: 'Runtime.queryObjects', params?: Runtime.QueryObjectsParameterType, callback?: (err: Error | null, params: Runtime.QueryObjectsReturnType) => void): void; + post(method: 'Runtime.queryObjects', callback?: (err: Error | null, params: Runtime.QueryObjectsReturnType) => void): void; + /** + * Returns all let, const and class variables from global scope. + */ + post( + method: 'Runtime.globalLexicalScopeNames', + params?: Runtime.GlobalLexicalScopeNamesParameterType, + callback?: (err: Error | null, params: Runtime.GlobalLexicalScopeNamesReturnType) => void + ): void; + post(method: 'Runtime.globalLexicalScopeNames', callback?: (err: Error | null, params: Runtime.GlobalLexicalScopeNamesReturnType) => void): void; + /** + * Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received. + */ + post(method: 'Debugger.enable', callback?: (err: Error | null, params: Debugger.EnableReturnType) => void): void; + /** + * Disables debugger for given page. + */ + post(method: 'Debugger.disable', callback?: (err: Error | null) => void): void; + /** + * Activates / deactivates all breakpoints on the page. + */ + post(method: 'Debugger.setBreakpointsActive', params?: Debugger.SetBreakpointsActiveParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.setBreakpointsActive', callback?: (err: Error | null) => void): void; + /** + * Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc). + */ + post(method: 'Debugger.setSkipAllPauses', params?: Debugger.SetSkipAllPausesParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.setSkipAllPauses', callback?: (err: Error | null) => void): void; + /** + * Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in locations property. Further matching script parsing will result in subsequent breakpointResolved events issued. This logical breakpoint will survive page reloads. + */ + post(method: 'Debugger.setBreakpointByUrl', params?: Debugger.SetBreakpointByUrlParameterType, callback?: (err: Error | null, params: Debugger.SetBreakpointByUrlReturnType) => void): void; + post(method: 'Debugger.setBreakpointByUrl', callback?: (err: Error | null, params: Debugger.SetBreakpointByUrlReturnType) => void): void; + /** + * Sets JavaScript breakpoint at a given location. + */ + post(method: 'Debugger.setBreakpoint', params?: Debugger.SetBreakpointParameterType, callback?: (err: Error | null, params: Debugger.SetBreakpointReturnType) => void): void; + post(method: 'Debugger.setBreakpoint', callback?: (err: Error | null, params: Debugger.SetBreakpointReturnType) => void): void; + /** + * Removes JavaScript breakpoint. + */ + post(method: 'Debugger.removeBreakpoint', params?: Debugger.RemoveBreakpointParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.removeBreakpoint', callback?: (err: Error | null) => void): void; + /** + * Returns possible locations for breakpoint. scriptId in start and end range locations should be the same. + */ + post( + method: 'Debugger.getPossibleBreakpoints', + params?: Debugger.GetPossibleBreakpointsParameterType, + callback?: (err: Error | null, params: Debugger.GetPossibleBreakpointsReturnType) => void + ): void; + post(method: 'Debugger.getPossibleBreakpoints', callback?: (err: Error | null, params: Debugger.GetPossibleBreakpointsReturnType) => void): void; + /** + * Continues execution until specific location is reached. + */ + post(method: 'Debugger.continueToLocation', params?: Debugger.ContinueToLocationParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.continueToLocation', callback?: (err: Error | null) => void): void; + /** + * @experimental + */ + post(method: 'Debugger.pauseOnAsyncCall', params?: Debugger.PauseOnAsyncCallParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.pauseOnAsyncCall', callback?: (err: Error | null) => void): void; + /** + * Steps over the statement. + */ + post(method: 'Debugger.stepOver', callback?: (err: Error | null) => void): void; + /** + * Steps into the function call. + */ + post(method: 'Debugger.stepInto', params?: Debugger.StepIntoParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.stepInto', callback?: (err: Error | null) => void): void; + /** + * Steps out of the function call. + */ + post(method: 'Debugger.stepOut', callback?: (err: Error | null) => void): void; + /** + * Stops on the next JavaScript statement. + */ + post(method: 'Debugger.pause', callback?: (err: Error | null) => void): void; + /** + * This method is deprecated - use Debugger.stepInto with breakOnAsyncCall and Debugger.pauseOnAsyncTask instead. Steps into next scheduled async task if any is scheduled before next pause. Returns success when async task is actually scheduled, returns error if no task were scheduled or another scheduleStepIntoAsync was called. + * @experimental + */ + post(method: 'Debugger.scheduleStepIntoAsync', callback?: (err: Error | null) => void): void; + /** + * Resumes JavaScript execution. + */ + post(method: 'Debugger.resume', callback?: (err: Error | null) => void): void; + /** + * Returns stack trace with given stackTraceId. + * @experimental + */ + post(method: 'Debugger.getStackTrace', params?: Debugger.GetStackTraceParameterType, callback?: (err: Error | null, params: Debugger.GetStackTraceReturnType) => void): void; + post(method: 'Debugger.getStackTrace', callback?: (err: Error | null, params: Debugger.GetStackTraceReturnType) => void): void; + /** + * Searches for given string in script content. + */ + post(method: 'Debugger.searchInContent', params?: Debugger.SearchInContentParameterType, callback?: (err: Error | null, params: Debugger.SearchInContentReturnType) => void): void; + post(method: 'Debugger.searchInContent', callback?: (err: Error | null, params: Debugger.SearchInContentReturnType) => void): void; + /** + * Edits JavaScript source live. + */ + post(method: 'Debugger.setScriptSource', params?: Debugger.SetScriptSourceParameterType, callback?: (err: Error | null, params: Debugger.SetScriptSourceReturnType) => void): void; + post(method: 'Debugger.setScriptSource', callback?: (err: Error | null, params: Debugger.SetScriptSourceReturnType) => void): void; + /** + * Restarts particular call frame from the beginning. + */ + post(method: 'Debugger.restartFrame', params?: Debugger.RestartFrameParameterType, callback?: (err: Error | null, params: Debugger.RestartFrameReturnType) => void): void; + post(method: 'Debugger.restartFrame', callback?: (err: Error | null, params: Debugger.RestartFrameReturnType) => void): void; + /** + * Returns source for the script with given id. + */ + post(method: 'Debugger.getScriptSource', params?: Debugger.GetScriptSourceParameterType, callback?: (err: Error | null, params: Debugger.GetScriptSourceReturnType) => void): void; + post(method: 'Debugger.getScriptSource', callback?: (err: Error | null, params: Debugger.GetScriptSourceReturnType) => void): void; + /** + * Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is none. + */ + post(method: 'Debugger.setPauseOnExceptions', params?: Debugger.SetPauseOnExceptionsParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.setPauseOnExceptions', callback?: (err: Error | null) => void): void; + /** + * Evaluates expression on a given call frame. + */ + post(method: 'Debugger.evaluateOnCallFrame', params?: Debugger.EvaluateOnCallFrameParameterType, callback?: (err: Error | null, params: Debugger.EvaluateOnCallFrameReturnType) => void): void; + post(method: 'Debugger.evaluateOnCallFrame', callback?: (err: Error | null, params: Debugger.EvaluateOnCallFrameReturnType) => void): void; + /** + * Changes value of variable in a callframe. Object-based scopes are not supported and must be mutated manually. + */ + post(method: 'Debugger.setVariableValue', params?: Debugger.SetVariableValueParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.setVariableValue', callback?: (err: Error | null) => void): void; + /** + * Changes return value in top frame. Available only at return break position. + * @experimental + */ + post(method: 'Debugger.setReturnValue', params?: Debugger.SetReturnValueParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.setReturnValue', callback?: (err: Error | null) => void): void; + /** + * Enables or disables async call stacks tracking. + */ + post(method: 'Debugger.setAsyncCallStackDepth', params?: Debugger.SetAsyncCallStackDepthParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.setAsyncCallStackDepth', callback?: (err: Error | null) => void): void; + /** + * Replace previous blackbox patterns with passed ones. Forces backend to skip stepping/pausing in scripts with url matching one of the patterns. VM will try to leave blackboxed script by performing 'step in' several times, finally resorting to 'step out' if unsuccessful. + * @experimental + */ + post(method: 'Debugger.setBlackboxPatterns', params?: Debugger.SetBlackboxPatternsParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.setBlackboxPatterns', callback?: (err: Error | null) => void): void; + /** + * Makes backend skip steps in the script in blackboxed ranges. VM will try leave blacklisted scripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful. Positions array contains positions where blackbox state is changed. First interval isn't blackboxed. Array should be sorted. + * @experimental + */ + post(method: 'Debugger.setBlackboxedRanges', params?: Debugger.SetBlackboxedRangesParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.setBlackboxedRanges', callback?: (err: Error | null) => void): void; + /** + * Enables console domain, sends the messages collected so far to the client by means of the messageAdded notification. + */ + post(method: 'Console.enable', callback?: (err: Error | null) => void): void; + /** + * Disables console domain, prevents further console messages from being reported to the client. + */ + post(method: 'Console.disable', callback?: (err: Error | null) => void): void; + /** + * Does nothing. + */ + post(method: 'Console.clearMessages', callback?: (err: Error | null) => void): void; + post(method: 'Profiler.enable', callback?: (err: Error | null) => void): void; + post(method: 'Profiler.disable', callback?: (err: Error | null) => void): void; + /** + * Changes CPU profiler sampling interval. Must be called before CPU profiles recording started. + */ + post(method: 'Profiler.setSamplingInterval', params?: Profiler.SetSamplingIntervalParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Profiler.setSamplingInterval', callback?: (err: Error | null) => void): void; + post(method: 'Profiler.start', callback?: (err: Error | null) => void): void; + post(method: 'Profiler.stop', callback?: (err: Error | null, params: Profiler.StopReturnType) => void): void; + /** + * Enable precise code coverage. Coverage data for JavaScript executed before enabling precise code coverage may be incomplete. Enabling prevents running optimized code and resets execution counters. + */ + post(method: 'Profiler.startPreciseCoverage', params?: Profiler.StartPreciseCoverageParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Profiler.startPreciseCoverage', callback?: (err: Error | null) => void): void; + /** + * Disable precise code coverage. Disabling releases unnecessary execution count records and allows executing optimized code. + */ + post(method: 'Profiler.stopPreciseCoverage', callback?: (err: Error | null) => void): void; + /** + * Collect coverage data for the current isolate, and resets execution counters. Precise code coverage needs to have started. + */ + post(method: 'Profiler.takePreciseCoverage', callback?: (err: Error | null, params: Profiler.TakePreciseCoverageReturnType) => void): void; + /** + * Collect coverage data for the current isolate. The coverage data may be incomplete due to garbage collection. + */ + post(method: 'Profiler.getBestEffortCoverage', callback?: (err: Error | null, params: Profiler.GetBestEffortCoverageReturnType) => void): void; + /** + * Enable type profile. + * @experimental + */ + post(method: 'Profiler.startTypeProfile', callback?: (err: Error | null) => void): void; + /** + * Disable type profile. Disabling releases type profile data collected so far. + * @experimental + */ + post(method: 'Profiler.stopTypeProfile', callback?: (err: Error | null) => void): void; + /** + * Collect type profile. + * @experimental + */ + post(method: 'Profiler.takeTypeProfile', callback?: (err: Error | null, params: Profiler.TakeTypeProfileReturnType) => void): void; + post(method: 'HeapProfiler.enable', callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.disable', callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.startTrackingHeapObjects', params?: HeapProfiler.StartTrackingHeapObjectsParameterType, callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.startTrackingHeapObjects', callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.stopTrackingHeapObjects', params?: HeapProfiler.StopTrackingHeapObjectsParameterType, callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.stopTrackingHeapObjects', callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.takeHeapSnapshot', params?: HeapProfiler.TakeHeapSnapshotParameterType, callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.takeHeapSnapshot', callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.collectGarbage', callback?: (err: Error | null) => void): void; + post( + method: 'HeapProfiler.getObjectByHeapObjectId', + params?: HeapProfiler.GetObjectByHeapObjectIdParameterType, + callback?: (err: Error | null, params: HeapProfiler.GetObjectByHeapObjectIdReturnType) => void + ): void; + post(method: 'HeapProfiler.getObjectByHeapObjectId', callback?: (err: Error | null, params: HeapProfiler.GetObjectByHeapObjectIdReturnType) => void): void; + /** + * Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions). + */ + post(method: 'HeapProfiler.addInspectedHeapObject', params?: HeapProfiler.AddInspectedHeapObjectParameterType, callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.addInspectedHeapObject', callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.getHeapObjectId', params?: HeapProfiler.GetHeapObjectIdParameterType, callback?: (err: Error | null, params: HeapProfiler.GetHeapObjectIdReturnType) => void): void; + post(method: 'HeapProfiler.getHeapObjectId', callback?: (err: Error | null, params: HeapProfiler.GetHeapObjectIdReturnType) => void): void; + post(method: 'HeapProfiler.startSampling', params?: HeapProfiler.StartSamplingParameterType, callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.startSampling', callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.stopSampling', callback?: (err: Error | null, params: HeapProfiler.StopSamplingReturnType) => void): void; + post(method: 'HeapProfiler.getSamplingProfile', callback?: (err: Error | null, params: HeapProfiler.GetSamplingProfileReturnType) => void): void; + /** + * Gets supported tracing categories. + */ + post(method: 'NodeTracing.getCategories', callback?: (err: Error | null, params: NodeTracing.GetCategoriesReturnType) => void): void; + /** + * Start trace events collection. + */ + post(method: 'NodeTracing.start', params?: NodeTracing.StartParameterType, callback?: (err: Error | null) => void): void; + post(method: 'NodeTracing.start', callback?: (err: Error | null) => void): void; + /** + * Stop trace events collection. Remaining collected events will be sent as a sequence of + * dataCollected events followed by tracingComplete event. + */ + post(method: 'NodeTracing.stop', callback?: (err: Error | null) => void): void; + /** + * Sends protocol message over session with given id. + */ + post(method: 'NodeWorker.sendMessageToWorker', params?: NodeWorker.SendMessageToWorkerParameterType, callback?: (err: Error | null) => void): void; + post(method: 'NodeWorker.sendMessageToWorker', callback?: (err: Error | null) => void): void; + /** + * Instructs the inspector to attach to running workers. Will also attach to new workers + * as they start + */ + post(method: 'NodeWorker.enable', params?: NodeWorker.EnableParameterType, callback?: (err: Error | null) => void): void; + post(method: 'NodeWorker.enable', callback?: (err: Error | null) => void): void; + /** + * Detaches from all running workers and disables attaching to new workers as they are started. + */ + post(method: 'NodeWorker.disable', callback?: (err: Error | null) => void): void; + /** + * Detached from the worker with given sessionId. + */ + post(method: 'NodeWorker.detach', params?: NodeWorker.DetachParameterType, callback?: (err: Error | null) => void): void; + post(method: 'NodeWorker.detach', callback?: (err: Error | null) => void): void; + /** + * Enable the `NodeRuntime.waitingForDisconnect`. + */ + post(method: 'NodeRuntime.notifyWhenWaitingForDisconnect', params?: NodeRuntime.NotifyWhenWaitingForDisconnectParameterType, callback?: (err: Error | null) => void): void; + post(method: 'NodeRuntime.notifyWhenWaitingForDisconnect', callback?: (err: Error | null) => void): void; + // Events + addListener(event: string, listener: (...args: any[]) => void): this; + /** + * Emitted when any notification from the V8 Inspector is received. + */ + addListener(event: 'inspectorNotification', listener: (message: InspectorNotification<{}>) => void): this; + /** + * Issued when new execution context is created. + */ + addListener(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; + /** + * Issued when execution context is destroyed. + */ + addListener(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; + /** + * Issued when all executionContexts were cleared in browser + */ + addListener(event: 'Runtime.executionContextsCleared', listener: () => void): this; + /** + * Issued when exception was thrown and unhandled. + */ + addListener(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; + /** + * Issued when unhandled exception was revoked. + */ + addListener(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; + /** + * Issued when console API was called. + */ + addListener(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; + /** + * Issued when object should be inspected (for example, as a result of inspect() command line API call). + */ + addListener(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. + */ + addListener(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine fails to parse the script. + */ + addListener(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; + /** + * Fired when breakpoint is resolved to an actual script and location. + */ + addListener(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. + */ + addListener(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine resumed execution. + */ + addListener(event: 'Debugger.resumed', listener: () => void): this; + /** + * Issued when new console message is added. + */ + addListener(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; + /** + * Sent when new profile recording is started using console.profile() call. + */ + addListener(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; + addListener(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; + addListener(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; + addListener(event: 'HeapProfiler.resetProfiles', listener: () => void): this; + addListener(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. + */ + addListener(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend may send update for one or more fragments + */ + addListener(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; + /** + * Contains an bucket of collected trace events. + */ + addListener(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; + /** + * Signals that tracing is stopped and there is no trace buffers pending flush, all data were + * delivered via dataCollected events. + */ + addListener(event: 'NodeTracing.tracingComplete', listener: () => void): this; + /** + * Issued when attached to a worker. + */ + addListener(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; + /** + * Issued when detached from the worker. + */ + addListener(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * Notifies about a new protocol message received from the session + * (session ID is provided in attachedToWorker notification). + */ + addListener(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * This event is fired instead of `Runtime.executionContextDestroyed` when + * enabled. + * It is fired when the Node process finished all code execution and is + * waiting for all frontends to disconnect. + */ + addListener(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: 'inspectorNotification', message: InspectorNotification<{}>): boolean; + emit(event: 'Runtime.executionContextCreated', message: InspectorNotification): boolean; + emit(event: 'Runtime.executionContextDestroyed', message: InspectorNotification): boolean; + emit(event: 'Runtime.executionContextsCleared'): boolean; + emit(event: 'Runtime.exceptionThrown', message: InspectorNotification): boolean; + emit(event: 'Runtime.exceptionRevoked', message: InspectorNotification): boolean; + emit(event: 'Runtime.consoleAPICalled', message: InspectorNotification): boolean; + emit(event: 'Runtime.inspectRequested', message: InspectorNotification): boolean; + emit(event: 'Debugger.scriptParsed', message: InspectorNotification): boolean; + emit(event: 'Debugger.scriptFailedToParse', message: InspectorNotification): boolean; + emit(event: 'Debugger.breakpointResolved', message: InspectorNotification): boolean; + emit(event: 'Debugger.paused', message: InspectorNotification): boolean; + emit(event: 'Debugger.resumed'): boolean; + emit(event: 'Console.messageAdded', message: InspectorNotification): boolean; + emit(event: 'Profiler.consoleProfileStarted', message: InspectorNotification): boolean; + emit(event: 'Profiler.consoleProfileFinished', message: InspectorNotification): boolean; + emit(event: 'HeapProfiler.addHeapSnapshotChunk', message: InspectorNotification): boolean; + emit(event: 'HeapProfiler.resetProfiles'): boolean; + emit(event: 'HeapProfiler.reportHeapSnapshotProgress', message: InspectorNotification): boolean; + emit(event: 'HeapProfiler.lastSeenObjectId', message: InspectorNotification): boolean; + emit(event: 'HeapProfiler.heapStatsUpdate', message: InspectorNotification): boolean; + emit(event: 'NodeTracing.dataCollected', message: InspectorNotification): boolean; + emit(event: 'NodeTracing.tracingComplete'): boolean; + emit(event: 'NodeWorker.attachedToWorker', message: InspectorNotification): boolean; + emit(event: 'NodeWorker.detachedFromWorker', message: InspectorNotification): boolean; + emit(event: 'NodeWorker.receivedMessageFromWorker', message: InspectorNotification): boolean; + emit(event: 'NodeRuntime.waitingForDisconnect'): boolean; + on(event: string, listener: (...args: any[]) => void): this; + /** + * Emitted when any notification from the V8 Inspector is received. + */ + on(event: 'inspectorNotification', listener: (message: InspectorNotification<{}>) => void): this; + /** + * Issued when new execution context is created. + */ + on(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; + /** + * Issued when execution context is destroyed. + */ + on(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; + /** + * Issued when all executionContexts were cleared in browser + */ + on(event: 'Runtime.executionContextsCleared', listener: () => void): this; + /** + * Issued when exception was thrown and unhandled. + */ + on(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; + /** + * Issued when unhandled exception was revoked. + */ + on(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; + /** + * Issued when console API was called. + */ + on(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; + /** + * Issued when object should be inspected (for example, as a result of inspect() command line API call). + */ + on(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. + */ + on(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine fails to parse the script. + */ + on(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; + /** + * Fired when breakpoint is resolved to an actual script and location. + */ + on(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. + */ + on(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine resumed execution. + */ + on(event: 'Debugger.resumed', listener: () => void): this; + /** + * Issued when new console message is added. + */ + on(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; + /** + * Sent when new profile recording is started using console.profile() call. + */ + on(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; + on(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; + on(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; + on(event: 'HeapProfiler.resetProfiles', listener: () => void): this; + on(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. + */ + on(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend may send update for one or more fragments + */ + on(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; + /** + * Contains an bucket of collected trace events. + */ + on(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; + /** + * Signals that tracing is stopped and there is no trace buffers pending flush, all data were + * delivered via dataCollected events. + */ + on(event: 'NodeTracing.tracingComplete', listener: () => void): this; + /** + * Issued when attached to a worker. + */ + on(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; + /** + * Issued when detached from the worker. + */ + on(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * Notifies about a new protocol message received from the session + * (session ID is provided in attachedToWorker notification). + */ + on(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * This event is fired instead of `Runtime.executionContextDestroyed` when + * enabled. + * It is fired when the Node process finished all code execution and is + * waiting for all frontends to disconnect. + */ + on(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; + once(event: string, listener: (...args: any[]) => void): this; + /** + * Emitted when any notification from the V8 Inspector is received. + */ + once(event: 'inspectorNotification', listener: (message: InspectorNotification<{}>) => void): this; + /** + * Issued when new execution context is created. + */ + once(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; + /** + * Issued when execution context is destroyed. + */ + once(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; + /** + * Issued when all executionContexts were cleared in browser + */ + once(event: 'Runtime.executionContextsCleared', listener: () => void): this; + /** + * Issued when exception was thrown and unhandled. + */ + once(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; + /** + * Issued when unhandled exception was revoked. + */ + once(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; + /** + * Issued when console API was called. + */ + once(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; + /** + * Issued when object should be inspected (for example, as a result of inspect() command line API call). + */ + once(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. + */ + once(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine fails to parse the script. + */ + once(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; + /** + * Fired when breakpoint is resolved to an actual script and location. + */ + once(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. + */ + once(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine resumed execution. + */ + once(event: 'Debugger.resumed', listener: () => void): this; + /** + * Issued when new console message is added. + */ + once(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; + /** + * Sent when new profile recording is started using console.profile() call. + */ + once(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; + once(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; + once(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; + once(event: 'HeapProfiler.resetProfiles', listener: () => void): this; + once(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. + */ + once(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend may send update for one or more fragments + */ + once(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; + /** + * Contains an bucket of collected trace events. + */ + once(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; + /** + * Signals that tracing is stopped and there is no trace buffers pending flush, all data were + * delivered via dataCollected events. + */ + once(event: 'NodeTracing.tracingComplete', listener: () => void): this; + /** + * Issued when attached to a worker. + */ + once(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; + /** + * Issued when detached from the worker. + */ + once(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * Notifies about a new protocol message received from the session + * (session ID is provided in attachedToWorker notification). + */ + once(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * This event is fired instead of `Runtime.executionContextDestroyed` when + * enabled. + * It is fired when the Node process finished all code execution and is + * waiting for all frontends to disconnect. + */ + once(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + /** + * Emitted when any notification from the V8 Inspector is received. + */ + prependListener(event: 'inspectorNotification', listener: (message: InspectorNotification<{}>) => void): this; + /** + * Issued when new execution context is created. + */ + prependListener(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; + /** + * Issued when execution context is destroyed. + */ + prependListener(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; + /** + * Issued when all executionContexts were cleared in browser + */ + prependListener(event: 'Runtime.executionContextsCleared', listener: () => void): this; + /** + * Issued when exception was thrown and unhandled. + */ + prependListener(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; + /** + * Issued when unhandled exception was revoked. + */ + prependListener(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; + /** + * Issued when console API was called. + */ + prependListener(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; + /** + * Issued when object should be inspected (for example, as a result of inspect() command line API call). + */ + prependListener(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. + */ + prependListener(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine fails to parse the script. + */ + prependListener(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; + /** + * Fired when breakpoint is resolved to an actual script and location. + */ + prependListener(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. + */ + prependListener(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine resumed execution. + */ + prependListener(event: 'Debugger.resumed', listener: () => void): this; + /** + * Issued when new console message is added. + */ + prependListener(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; + /** + * Sent when new profile recording is started using console.profile() call. + */ + prependListener(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; + prependListener(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; + prependListener(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; + prependListener(event: 'HeapProfiler.resetProfiles', listener: () => void): this; + prependListener(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. + */ + prependListener(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend may send update for one or more fragments + */ + prependListener(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; + /** + * Contains an bucket of collected trace events. + */ + prependListener(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; + /** + * Signals that tracing is stopped and there is no trace buffers pending flush, all data were + * delivered via dataCollected events. + */ + prependListener(event: 'NodeTracing.tracingComplete', listener: () => void): this; + /** + * Issued when attached to a worker. + */ + prependListener(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; + /** + * Issued when detached from the worker. + */ + prependListener(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * Notifies about a new protocol message received from the session + * (session ID is provided in attachedToWorker notification). + */ + prependListener(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * This event is fired instead of `Runtime.executionContextDestroyed` when + * enabled. + * It is fired when the Node process finished all code execution and is + * waiting for all frontends to disconnect. + */ + prependListener(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + /** + * Emitted when any notification from the V8 Inspector is received. + */ + prependOnceListener(event: 'inspectorNotification', listener: (message: InspectorNotification<{}>) => void): this; + /** + * Issued when new execution context is created. + */ + prependOnceListener(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; + /** + * Issued when execution context is destroyed. + */ + prependOnceListener(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; + /** + * Issued when all executionContexts were cleared in browser + */ + prependOnceListener(event: 'Runtime.executionContextsCleared', listener: () => void): this; + /** + * Issued when exception was thrown and unhandled. + */ + prependOnceListener(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; + /** + * Issued when unhandled exception was revoked. + */ + prependOnceListener(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; + /** + * Issued when console API was called. + */ + prependOnceListener(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; + /** + * Issued when object should be inspected (for example, as a result of inspect() command line API call). + */ + prependOnceListener(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. + */ + prependOnceListener(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine fails to parse the script. + */ + prependOnceListener(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; + /** + * Fired when breakpoint is resolved to an actual script and location. + */ + prependOnceListener(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. + */ + prependOnceListener(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine resumed execution. + */ + prependOnceListener(event: 'Debugger.resumed', listener: () => void): this; + /** + * Issued when new console message is added. + */ + prependOnceListener(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; + /** + * Sent when new profile recording is started using console.profile() call. + */ + prependOnceListener(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; + prependOnceListener(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; + prependOnceListener(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; + prependOnceListener(event: 'HeapProfiler.resetProfiles', listener: () => void): this; + prependOnceListener(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. + */ + prependOnceListener(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend may send update for one or more fragments + */ + prependOnceListener(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; + /** + * Contains an bucket of collected trace events. + */ + prependOnceListener(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; + /** + * Signals that tracing is stopped and there is no trace buffers pending flush, all data were + * delivered via dataCollected events. + */ + prependOnceListener(event: 'NodeTracing.tracingComplete', listener: () => void): this; + /** + * Issued when attached to a worker. + */ + prependOnceListener(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; + /** + * Issued when detached from the worker. + */ + prependOnceListener(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * Notifies about a new protocol message received from the session + * (session ID is provided in attachedToWorker notification). + */ + prependOnceListener(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * This event is fired instead of `Runtime.executionContextDestroyed` when + * enabled. + * It is fired when the Node process finished all code execution and is + * waiting for all frontends to disconnect. + */ + prependOnceListener(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; + } + /** + * Activate inspector on host and port. Equivalent to`node --inspect=[[host:]port]`, but can be done programmatically after node has + * started. + * + * If wait is `true`, will block until a client has connected to the inspect port + * and flow control has been passed to the debugger client. + * + * See the `security warning` regarding the `host`parameter usage. + * @param [port='what was specified on the CLI'] Port to listen on for inspector connections. Optional. + * @param [host='what was specified on the CLI'] Host to listen on for inspector connections. Optional. + * @param [wait=false] Block until a client has connected. Optional. + * @returns Disposable that calls `inspector.close()`. + */ + function open(port?: number, host?: string, wait?: boolean): Disposable; + /** + * Deactivate the inspector. Blocks until there are no active connections. + */ + function close(): void; + /** + * Return the URL of the active inspector, or `undefined` if there is none. + * + * ```console + * $ node --inspect -p 'inspector.url()' + * Debugger listening on ws://127.0.0.1:9229/166e272e-7a30-4d09-97ce-f1c012b43c34 + * For help, see: https://nodejs.org/en/docs/inspector + * ws://127.0.0.1:9229/166e272e-7a30-4d09-97ce-f1c012b43c34 + * + * $ node --inspect=localhost:3000 -p 'inspector.url()' + * Debugger listening on ws://localhost:3000/51cf8d0e-3c36-4c59-8efd-54519839e56a + * For help, see: https://nodejs.org/en/docs/inspector + * ws://localhost:3000/51cf8d0e-3c36-4c59-8efd-54519839e56a + * + * $ node -p 'inspector.url()' + * undefined + * ``` + */ + function url(): string | undefined; + /** + * Blocks until a client (existing or connected later) has sent`Runtime.runIfWaitingForDebugger` command. + * + * An exception will be thrown if there is no active inspector. + * @since v12.7.0 + */ + function waitForDebugger(): void; +} +/** + * The inspector module provides an API for interacting with the V8 inspector. + */ +declare module 'node:inspector' { + import inspector = require('inspector'); + export = inspector; +} diff --git a/node_modules/@types/node/module.d.ts b/node_modules/@types/node/module.d.ts new file mode 100644 index 00000000..3d04c330 --- /dev/null +++ b/node_modules/@types/node/module.d.ts @@ -0,0 +1,297 @@ +/** + * @since v0.3.7 + * @experimental + */ +declare module "module" { + import { URL } from "node:url"; + import { MessagePort } from "node:worker_threads"; + namespace Module { + /** + * The `module.syncBuiltinESMExports()` method updates all the live bindings for + * builtin `ES Modules` to match the properties of the `CommonJS` exports. It + * does not add or remove exported names from the `ES Modules`. + * + * ```js + * const fs = require('node:fs'); + * const assert = require('node:assert'); + * const { syncBuiltinESMExports } = require('node:module'); + * + * fs.readFile = newAPI; + * + * delete fs.readFileSync; + * + * function newAPI() { + * // ... + * } + * + * fs.newAPI = newAPI; + * + * syncBuiltinESMExports(); + * + * import('node:fs').then((esmFS) => { + * // It syncs the existing readFile property with the new value + * assert.strictEqual(esmFS.readFile, newAPI); + * // readFileSync has been deleted from the required fs + * assert.strictEqual('readFileSync' in fs, false); + * // syncBuiltinESMExports() does not remove readFileSync from esmFS + * assert.strictEqual('readFileSync' in esmFS, true); + * // syncBuiltinESMExports() does not add names + * assert.strictEqual(esmFS.newAPI, undefined); + * }); + * ``` + * @since v12.12.0 + */ + function syncBuiltinESMExports(): void; + /** + * `path` is the resolved path for the file for which a corresponding source map + * should be fetched. + * @since v13.7.0, v12.17.0 + * @return Returns `module.SourceMap` if a source map is found, `undefined` otherwise. + */ + function findSourceMap(path: string, error?: Error): SourceMap; + interface SourceMapPayload { + file: string; + version: number; + sources: string[]; + sourcesContent: string[]; + names: string[]; + mappings: string; + sourceRoot: string; + } + interface SourceMapping { + generatedLine: number; + generatedColumn: number; + originalSource: string; + originalLine: number; + originalColumn: number; + } + interface SourceOrigin { + /** + * The name of the range in the source map, if one was provided + */ + name?: string; + /** + * The file name of the original source, as reported in the SourceMap + */ + fileName: string; + /** + * The 1-indexed lineNumber of the corresponding call site in the original source + */ + lineNumber: number; + /** + * The 1-indexed columnNumber of the corresponding call site in the original source + */ + columnNumber: number; + } + /** + * @since v13.7.0, v12.17.0 + */ + class SourceMap { + /** + * Getter for the payload used to construct the `SourceMap` instance. + */ + readonly payload: SourceMapPayload; + constructor(payload: SourceMapPayload); + /** + * Given a line offset and column offset in the generated source + * file, returns an object representing the SourceMap range in the + * original file if found, or an empty object if not. + * + * The object returned contains the following keys: + * + * The returned value represents the raw range as it appears in the + * SourceMap, based on zero-indexed offsets, _not_ 1-indexed line and + * column numbers as they appear in Error messages and CallSite + * objects. + * + * To get the corresponding 1-indexed line and column numbers from a + * lineNumber and columnNumber as they are reported by Error stacks + * and CallSite objects, use `sourceMap.findOrigin(lineNumber, columnNumber)` + * @param lineOffset The zero-indexed line number offset in the generated source + * @param columnOffset The zero-indexed column number offset in the generated source + */ + findEntry(lineOffset: number, columnOffset: number): SourceMapping; + /** + * Given a 1-indexed `lineNumber` and `columnNumber` from a call site in the generated source, + * find the corresponding call site location in the original source. + * + * If the `lineNumber` and `columnNumber` provided are not found in any source map, + * then an empty object is returned. + * @param lineNumber The 1-indexed line number of the call site in the generated source + * @param columnNumber The 1-indexed column number of the call site in the generated source + */ + findOrigin(lineNumber: number, columnNumber: number): SourceOrigin | {}; + } + interface ImportAssertions extends NodeJS.Dict { + type?: string | undefined; + } + type ModuleFormat = "builtin" | "commonjs" | "json" | "module" | "wasm"; + type ModuleSource = string | ArrayBuffer | NodeJS.TypedArray; + interface GlobalPreloadContext { + port: MessagePort; + } + /** + * @deprecated This hook will be removed in a future version. + * Use `initialize` instead. When a loader has an `initialize` export, `globalPreload` will be ignored. + * + * Sometimes it might be necessary to run some code inside of the same global scope that the application runs in. + * This hook allows the return of a string that is run as a sloppy-mode script on startup. + * + * @param context Information to assist the preload code + * @return Code to run before application startup + */ + type GlobalPreloadHook = (context: GlobalPreloadContext) => string; + /** + * The `initialize` hook provides a way to define a custom function that runs in the hooks thread + * when the hooks module is initialized. Initialization happens when the hooks module is registered via `register`. + * + * This hook can receive data from a `register` invocation, including ports and other transferrable objects. + * The return value of `initialize` can be a `Promise`, in which case it will be awaited before the main application thread execution resumes. + */ + type InitializeHook = (data: Data) => void | Promise; + interface ResolveHookContext { + /** + * Export conditions of the relevant `package.json` + */ + conditions: string[]; + /** + * An object whose key-value pairs represent the assertions for the module to import + */ + importAssertions: ImportAssertions; + /** + * The module importing this one, or undefined if this is the Node.js entry point + */ + parentURL: string | undefined; + } + interface ResolveFnOutput { + /** + * A hint to the load hook (it might be ignored) + */ + format?: ModuleFormat | null | undefined; + /** + * The import assertions to use when caching the module (optional; if excluded the input will be used) + */ + importAssertions?: ImportAssertions | undefined; + /** + * A signal that this hook intends to terminate the chain of `resolve` hooks. + * @default false + */ + shortCircuit?: boolean | undefined; + /** + * The absolute URL to which this input resolves + */ + url: string; + } + /** + * The `resolve` hook chain is responsible for resolving file URL for a given module specifier and parent URL, and optionally its format (such as `'module'`) as a hint to the `load` hook. + * If a format is specified, the load hook is ultimately responsible for providing the final `format` value (and it is free to ignore the hint provided by `resolve`); + * if `resolve` provides a format, a custom `load` hook is required even if only to pass the value to the Node.js default `load` hook. + * + * @param specifier The specified URL path of the module to be resolved + * @param context + * @param nextResolve The subsequent `resolve` hook in the chain, or the Node.js default `resolve` hook after the last user-supplied resolve hook + */ + type ResolveHook = ( + specifier: string, + context: ResolveHookContext, + nextResolve: ( + specifier: string, + context?: ResolveHookContext, + ) => ResolveFnOutput | Promise, + ) => ResolveFnOutput | Promise; + interface LoadHookContext { + /** + * Export conditions of the relevant `package.json` + */ + conditions: string[]; + /** + * The format optionally supplied by the `resolve` hook chain + */ + format: ModuleFormat; + /** + * An object whose key-value pairs represent the assertions for the module to import + */ + importAssertions: ImportAssertions; + } + interface LoadFnOutput { + format: ModuleFormat; + /** + * A signal that this hook intends to terminate the chain of `resolve` hooks. + * @default false + */ + shortCircuit?: boolean | undefined; + /** + * The source for Node.js to evaluate + */ + source?: ModuleSource; + } + /** + * The `load` hook provides a way to define a custom method of determining how a URL should be interpreted, retrieved, and parsed. + * It is also in charge of validating the import assertion. + * + * @param url The URL/path of the module to be loaded + * @param context Metadata about the module + * @param nextLoad The subsequent `load` hook in the chain, or the Node.js default `load` hook after the last user-supplied `load` hook + */ + type LoadHook = ( + url: string, + context: LoadHookContext, + nextLoad: (url: string, context?: LoadHookContext) => LoadFnOutput | Promise, + ) => LoadFnOutput | Promise; + } + interface RegisterOptions { + parentURL: string | URL; + data?: Data | undefined; + transferList?: any[] | undefined; + } + interface Module extends NodeModule {} + class Module { + static runMain(): void; + static wrap(code: string): string; + static createRequire(path: string | URL): NodeRequire; + static builtinModules: string[]; + static isBuiltin(moduleName: string): boolean; + static Module: typeof Module; + static register( + specifier: string | URL, + parentURL?: string | URL, + options?: RegisterOptions, + ): void; + static register(specifier: string | URL, options?: RegisterOptions): void; + constructor(id: string, parent?: Module); + } + global { + interface ImportMeta { + url: string; + /** + * Provides a module-relative resolution function scoped to each module, returning + * the URL string. + * + * @since v20.6.0 + * + * @param specifier The module specifier to resolve relative to the current module. + * @returns The absolute (`file:`) URL string for the resolved module. + */ + resolve(specifier: string): string; + /** + * This `parent` parameter is only used when the `--experimental-import-meta-resolve` + * command flag enabled. + * + * Provides a module-relative resolution function scoped to each module, returning + * the URL string. + * + * @since v20.6.0 + * + * @param specifier The module specifier to resolve relative to `parent`. + * @param parent The absolute parent module URL to resolve from. + * @returns The absolute (`file:`) URL string for the resolved module. + */ + resolve(specifier: string, parent: string | URL): string; + } + } + export = Module; +} +declare module "node:module" { + import module = require("module"); + export = module; +} diff --git a/node_modules/@types/node/net.d.ts b/node_modules/@types/node/net.d.ts new file mode 100644 index 00000000..70789e1b --- /dev/null +++ b/node_modules/@types/node/net.d.ts @@ -0,0 +1,949 @@ +/** + * > Stability: 2 - Stable + * + * The `node:net` module provides an asynchronous network API for creating stream-based + * TCP or `IPC` servers ({@link createServer}) and clients + * ({@link createConnection}). + * + * It can be accessed using: + * + * ```js + * const net = require('node:net'); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/net.js) + */ +declare module "net" { + import * as stream from "node:stream"; + import { Abortable, EventEmitter } from "node:events"; + import * as dns from "node:dns"; + type LookupFunction = ( + hostname: string, + options: dns.LookupAllOptions, + callback: (err: NodeJS.ErrnoException | null, addresses: dns.LookupAddress[]) => void, + ) => void; + interface AddressInfo { + address: string; + family: string; + port: number; + } + interface SocketConstructorOpts { + fd?: number | undefined; + allowHalfOpen?: boolean | undefined; + readable?: boolean | undefined; + writable?: boolean | undefined; + signal?: AbortSignal; + } + interface OnReadOpts { + buffer: Uint8Array | (() => Uint8Array); + /** + * This function is called for every chunk of incoming data. + * Two arguments are passed to it: the number of bytes written to buffer and a reference to buffer. + * Return false from this function to implicitly pause() the socket. + */ + callback(bytesWritten: number, buf: Uint8Array): boolean; + } + interface ConnectOpts { + /** + * If specified, incoming data is stored in a single buffer and passed to the supplied callback when data arrives on the socket. + * Note: this will cause the streaming functionality to not provide any data, however events like 'error', 'end', and 'close' will + * still be emitted as normal and methods like pause() and resume() will also behave as expected. + */ + onread?: OnReadOpts | undefined; + } + interface TcpSocketConnectOpts extends ConnectOpts { + port: number; + host?: string | undefined; + localAddress?: string | undefined; + localPort?: number | undefined; + hints?: number | undefined; + family?: number | undefined; + lookup?: LookupFunction | undefined; + noDelay?: boolean | undefined; + keepAlive?: boolean | undefined; + keepAliveInitialDelay?: number | undefined; + /** + * @since v18.13.0 + */ + autoSelectFamily?: boolean | undefined; + /** + * @since v18.13.0 + */ + autoSelectFamilyAttemptTimeout?: number | undefined; + } + interface IpcSocketConnectOpts extends ConnectOpts { + path: string; + } + type SocketConnectOpts = TcpSocketConnectOpts | IpcSocketConnectOpts; + type SocketReadyState = "opening" | "open" | "readOnly" | "writeOnly" | "closed"; + /** + * This class is an abstraction of a TCP socket or a streaming `IPC` endpoint + * (uses named pipes on Windows, and Unix domain sockets otherwise). It is also + * an `EventEmitter`. + * + * A `net.Socket` can be created by the user and used directly to interact with + * a server. For example, it is returned by {@link createConnection}, + * so the user can use it to talk to the server. + * + * It can also be created by Node.js and passed to the user when a connection + * is received. For example, it is passed to the listeners of a `'connection'` event emitted on a {@link Server}, so the user can use + * it to interact with the client. + * @since v0.3.4 + */ + class Socket extends stream.Duplex { + constructor(options?: SocketConstructorOpts); + /** + * Destroys the socket after all data is written. If the `finish` event was already emitted the socket is destroyed immediately. + * If the socket is still writable it implicitly calls `socket.end()`. + * @since v0.3.4 + */ + destroySoon(): void; + /** + * Sends data on the socket. The second parameter specifies the encoding in the + * case of a string. It defaults to UTF8 encoding. + * + * Returns `true` if the entire data was flushed successfully to the kernel + * buffer. Returns `false` if all or part of the data was queued in user memory.`'drain'` will be emitted when the buffer is again free. + * + * The optional `callback` parameter will be executed when the data is finally + * written out, which may not be immediately. + * + * See `Writable` stream `write()` method for more + * information. + * @since v0.1.90 + * @param [encoding='utf8'] Only used when data is `string`. + */ + write(buffer: Uint8Array | string, cb?: (err?: Error) => void): boolean; + write(str: Uint8Array | string, encoding?: BufferEncoding, cb?: (err?: Error) => void): boolean; + /** + * Initiate a connection on a given socket. + * + * Possible signatures: + * + * * `socket.connect(options[, connectListener])` + * * `socket.connect(path[, connectListener])` for `IPC` connections. + * * `socket.connect(port[, host][, connectListener])` for TCP connections. + * * Returns: `net.Socket` The socket itself. + * + * This function is asynchronous. When the connection is established, the `'connect'` event will be emitted. If there is a problem connecting, + * instead of a `'connect'` event, an `'error'` event will be emitted with + * the error passed to the `'error'` listener. + * The last parameter `connectListener`, if supplied, will be added as a listener + * for the `'connect'` event **once**. + * + * This function should only be used for reconnecting a socket after`'close'` has been emitted or otherwise it may lead to undefined + * behavior. + */ + connect(options: SocketConnectOpts, connectionListener?: () => void): this; + connect(port: number, host: string, connectionListener?: () => void): this; + connect(port: number, connectionListener?: () => void): this; + connect(path: string, connectionListener?: () => void): this; + /** + * Set the encoding for the socket as a `Readable Stream`. See `readable.setEncoding()` for more information. + * @since v0.1.90 + * @return The socket itself. + */ + setEncoding(encoding?: BufferEncoding): this; + /** + * Pauses the reading of data. That is, `'data'` events will not be emitted. + * Useful to throttle back an upload. + * @return The socket itself. + */ + pause(): this; + /** + * Close the TCP connection by sending an RST packet and destroy the stream. + * If this TCP socket is in connecting status, it will send an RST packet and destroy this TCP socket once it is connected. + * Otherwise, it will call `socket.destroy` with an `ERR_SOCKET_CLOSED` Error. + * If this is not a TCP socket (for example, a pipe), calling this method will immediately throw an `ERR_INVALID_HANDLE_TYPE` Error. + * @since v18.3.0, v16.17.0 + */ + resetAndDestroy(): this; + /** + * Resumes reading after a call to `socket.pause()`. + * @return The socket itself. + */ + resume(): this; + /** + * Sets the socket to timeout after `timeout` milliseconds of inactivity on + * the socket. By default `net.Socket` do not have a timeout. + * + * When an idle timeout is triggered the socket will receive a `'timeout'` event but the connection will not be severed. The user must manually call `socket.end()` or `socket.destroy()` to + * end the connection. + * + * ```js + * socket.setTimeout(3000); + * socket.on('timeout', () => { + * console.log('socket timeout'); + * socket.end(); + * }); + * ``` + * + * If `timeout` is 0, then the existing idle timeout is disabled. + * + * The optional `callback` parameter will be added as a one-time listener for the `'timeout'` event. + * @since v0.1.90 + * @return The socket itself. + */ + setTimeout(timeout: number, callback?: () => void): this; + /** + * Enable/disable the use of Nagle's algorithm. + * + * When a TCP connection is created, it will have Nagle's algorithm enabled. + * + * Nagle's algorithm delays data before it is sent via the network. It attempts + * to optimize throughput at the expense of latency. + * + * Passing `true` for `noDelay` or not passing an argument will disable Nagle's + * algorithm for the socket. Passing `false` for `noDelay` will enable Nagle's + * algorithm. + * @since v0.1.90 + * @param [noDelay=true] + * @return The socket itself. + */ + setNoDelay(noDelay?: boolean): this; + /** + * Enable/disable keep-alive functionality, and optionally set the initial + * delay before the first keepalive probe is sent on an idle socket. + * + * Set `initialDelay` (in milliseconds) to set the delay between the last + * data packet received and the first keepalive probe. Setting `0` for`initialDelay` will leave the value unchanged from the default + * (or previous) setting. + * + * Enabling the keep-alive functionality will set the following socket options: + * + * * `SO_KEEPALIVE=1` + * * `TCP_KEEPIDLE=initialDelay` + * * `TCP_KEEPCNT=10` + * * `TCP_KEEPINTVL=1` + * @since v0.1.92 + * @param [enable=false] + * @param [initialDelay=0] + * @return The socket itself. + */ + setKeepAlive(enable?: boolean, initialDelay?: number): this; + /** + * Returns the bound `address`, the address `family` name and `port` of the + * socket as reported by the operating system:`{ port: 12346, family: 'IPv4', address: '127.0.0.1' }` + * @since v0.1.90 + */ + address(): AddressInfo | {}; + /** + * Calling `unref()` on a socket will allow the program to exit if this is the only + * active socket in the event system. If the socket is already `unref`ed calling`unref()` again will have no effect. + * @since v0.9.1 + * @return The socket itself. + */ + unref(): this; + /** + * Opposite of `unref()`, calling `ref()` on a previously `unref`ed socket will _not_ let the program exit if it's the only socket left (the default behavior). + * If the socket is `ref`ed calling `ref` again will have no effect. + * @since v0.9.1 + * @return The socket itself. + */ + ref(): this; + /** + * This property is only present if the family autoselection algorithm is enabled in `socket.connect(options)` + * and it is an array of the addresses that have been attempted. + * + * Each address is a string in the form of `$IP:$PORT`. + * If the connection was successful, then the last address is the one that the socket is currently connected to. + * @since v19.4.0 + */ + readonly autoSelectFamilyAttemptedAddresses: string[]; + /** + * This property shows the number of characters buffered for writing. The buffer + * may contain strings whose length after encoding is not yet known. So this number + * is only an approximation of the number of bytes in the buffer. + * + * `net.Socket` has the property that `socket.write()` always works. This is to + * help users get up and running quickly. The computer cannot always keep up + * with the amount of data that is written to a socket. The network connection + * simply might be too slow. Node.js will internally queue up the data written to a + * socket and send it out over the wire when it is possible. + * + * The consequence of this internal buffering is that memory may grow. + * Users who experience large or growing `bufferSize` should attempt to + * "throttle" the data flows in their program with `socket.pause()` and `socket.resume()`. + * @since v0.3.8 + * @deprecated Since v14.6.0 - Use `writableLength` instead. + */ + readonly bufferSize: number; + /** + * The amount of received bytes. + * @since v0.5.3 + */ + readonly bytesRead: number; + /** + * The amount of bytes sent. + * @since v0.5.3 + */ + readonly bytesWritten: number; + /** + * If `true`,`socket.connect(options[, connectListener])` was + * called and has not yet finished. It will stay `true` until the socket becomes + * connected, then it is set to `false` and the `'connect'` event is emitted. Note + * that the `socket.connect(options[, connectListener])` callback is a listener for the `'connect'` event. + * @since v6.1.0 + */ + readonly connecting: boolean; + /** + * This is `true` if the socket is not connected yet, either because `.connect()`has not yet been called or because it is still in the process of connecting + * (see `socket.connecting`). + * @since v11.2.0, v10.16.0 + */ + readonly pending: boolean; + /** + * See `writable.destroyed` for further details. + */ + readonly destroyed: boolean; + /** + * The string representation of the local IP address the remote client is + * connecting on. For example, in a server listening on `'0.0.0.0'`, if a client + * connects on `'192.168.1.1'`, the value of `socket.localAddress` would be`'192.168.1.1'`. + * @since v0.9.6 + */ + readonly localAddress?: string; + /** + * The numeric representation of the local port. For example, `80` or `21`. + * @since v0.9.6 + */ + readonly localPort?: number; + /** + * The string representation of the local IP family. `'IPv4'` or `'IPv6'`. + * @since v18.8.0, v16.18.0 + */ + readonly localFamily?: string; + /** + * This property represents the state of the connection as a string. + * + * * If the stream is connecting `socket.readyState` is `opening`. + * * If the stream is readable and writable, it is `open`. + * * If the stream is readable and not writable, it is `readOnly`. + * * If the stream is not readable and writable, it is `writeOnly`. + * @since v0.5.0 + */ + readonly readyState: SocketReadyState; + /** + * The string representation of the remote IP address. For example,`'74.125.127.100'` or `'2001:4860:a005::68'`. Value may be `undefined` if + * the socket is destroyed (for example, if the client disconnected). + * @since v0.5.10 + */ + readonly remoteAddress?: string | undefined; + /** + * The string representation of the remote IP family. `'IPv4'` or `'IPv6'`. Value may be `undefined` if + * the socket is destroyed (for example, if the client disconnected). + * @since v0.11.14 + */ + readonly remoteFamily?: string | undefined; + /** + * The numeric representation of the remote port. For example, `80` or `21`. Value may be `undefined` if + * the socket is destroyed (for example, if the client disconnected). + * @since v0.5.10 + */ + readonly remotePort?: number | undefined; + /** + * The socket timeout in milliseconds as set by `socket.setTimeout()`. + * It is `undefined` if a timeout has not been set. + * @since v10.7.0 + */ + readonly timeout?: number | undefined; + /** + * Half-closes the socket. i.e., it sends a FIN packet. It is possible the + * server will still send some data. + * + * See `writable.end()` for further details. + * @since v0.1.90 + * @param [encoding='utf8'] Only used when data is `string`. + * @param callback Optional callback for when the socket is finished. + * @return The socket itself. + */ + end(callback?: () => void): this; + end(buffer: Uint8Array | string, callback?: () => void): this; + end(str: Uint8Array | string, encoding?: BufferEncoding, callback?: () => void): this; + /** + * events.EventEmitter + * 1. close + * 2. connect + * 3. data + * 4. drain + * 5. end + * 6. error + * 7. lookup + * 8. ready + * 9. timeout + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "close", listener: (hadError: boolean) => void): this; + addListener(event: "connect", listener: () => void): this; + addListener(event: "data", listener: (data: Buffer) => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener( + event: "lookup", + listener: (err: Error, address: string, family: string | number, host: string) => void, + ): this; + addListener(event: "ready", listener: () => void): this; + addListener(event: "timeout", listener: () => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close", hadError: boolean): boolean; + emit(event: "connect"): boolean; + emit(event: "data", data: Buffer): boolean; + emit(event: "drain"): boolean; + emit(event: "end"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean; + emit(event: "ready"): boolean; + emit(event: "timeout"): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "close", listener: (hadError: boolean) => void): this; + on(event: "connect", listener: () => void): this; + on(event: "data", listener: (data: Buffer) => void): this; + on(event: "drain", listener: () => void): this; + on(event: "end", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on( + event: "lookup", + listener: (err: Error, address: string, family: string | number, host: string) => void, + ): this; + on(event: "ready", listener: () => void): this; + on(event: "timeout", listener: () => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "close", listener: (hadError: boolean) => void): this; + once(event: "connect", listener: () => void): this; + once(event: "data", listener: (data: Buffer) => void): this; + once(event: "drain", listener: () => void): this; + once(event: "end", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once( + event: "lookup", + listener: (err: Error, address: string, family: string | number, host: string) => void, + ): this; + once(event: "ready", listener: () => void): this; + once(event: "timeout", listener: () => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: (hadError: boolean) => void): this; + prependListener(event: "connect", listener: () => void): this; + prependListener(event: "data", listener: (data: Buffer) => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener( + event: "lookup", + listener: (err: Error, address: string, family: string | number, host: string) => void, + ): this; + prependListener(event: "ready", listener: () => void): this; + prependListener(event: "timeout", listener: () => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: (hadError: boolean) => void): this; + prependOnceListener(event: "connect", listener: () => void): this; + prependOnceListener(event: "data", listener: (data: Buffer) => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener( + event: "lookup", + listener: (err: Error, address: string, family: string | number, host: string) => void, + ): this; + prependOnceListener(event: "ready", listener: () => void): this; + prependOnceListener(event: "timeout", listener: () => void): this; + } + interface ListenOptions extends Abortable { + port?: number | undefined; + host?: string | undefined; + backlog?: number | undefined; + path?: string | undefined; + exclusive?: boolean | undefined; + readableAll?: boolean | undefined; + writableAll?: boolean | undefined; + /** + * @default false + */ + ipv6Only?: boolean | undefined; + } + interface ServerOpts { + /** + * Indicates whether half-opened TCP connections are allowed. + * @default false + */ + allowHalfOpen?: boolean | undefined; + /** + * Indicates whether the socket should be paused on incoming connections. + * @default false + */ + pauseOnConnect?: boolean | undefined; + /** + * If set to `true`, it disables the use of Nagle's algorithm immediately after a new incoming connection is received. + * @default false + * @since v16.5.0 + */ + noDelay?: boolean | undefined; + /** + * If set to `true`, it enables keep-alive functionality on the socket immediately after a new incoming connection is received, + * similarly on what is done in `socket.setKeepAlive([enable][, initialDelay])`. + * @default false + * @since v16.5.0 + */ + keepAlive?: boolean | undefined; + /** + * If set to a positive number, it sets the initial delay before the first keepalive probe is sent on an idle socket. + * @default 0 + * @since v16.5.0 + */ + keepAliveInitialDelay?: number | undefined; + } + interface DropArgument { + localAddress?: string; + localPort?: number; + localFamily?: string; + remoteAddress?: string; + remotePort?: number; + remoteFamily?: string; + } + /** + * This class is used to create a TCP or `IPC` server. + * @since v0.1.90 + */ + class Server extends EventEmitter { + constructor(connectionListener?: (socket: Socket) => void); + constructor(options?: ServerOpts, connectionListener?: (socket: Socket) => void); + /** + * Start a server listening for connections. A `net.Server` can be a TCP or + * an `IPC` server depending on what it listens to. + * + * Possible signatures: + * + * * `server.listen(handle[, backlog][, callback])` + * * `server.listen(options[, callback])` + * * `server.listen(path[, backlog][, callback])` for `IPC` servers + * * `server.listen([port[, host[, backlog]]][, callback])` for TCP servers + * + * This function is asynchronous. When the server starts listening, the `'listening'` event will be emitted. The last parameter `callback`will be added as a listener for the `'listening'` + * event. + * + * All `listen()` methods can take a `backlog` parameter to specify the maximum + * length of the queue of pending connections. The actual length will be determined + * by the OS through sysctl settings such as `tcp_max_syn_backlog` and `somaxconn`on Linux. The default value of this parameter is 511 (not 512). + * + * All {@link Socket} are set to `SO_REUSEADDR` (see [`socket(7)`](https://man7.org/linux/man-pages/man7/socket.7.html) for + * details). + * + * The `server.listen()` method can be called again if and only if there was an + * error during the first `server.listen()` call or `server.close()` has been + * called. Otherwise, an `ERR_SERVER_ALREADY_LISTEN` error will be thrown. + * + * One of the most common errors raised when listening is `EADDRINUSE`. + * This happens when another server is already listening on the requested`port`/`path`/`handle`. One way to handle this would be to retry + * after a certain amount of time: + * + * ```js + * server.on('error', (e) => { + * if (e.code === 'EADDRINUSE') { + * console.error('Address in use, retrying...'); + * setTimeout(() => { + * server.close(); + * server.listen(PORT, HOST); + * }, 1000); + * } + * }); + * ``` + */ + listen(port?: number, hostname?: string, backlog?: number, listeningListener?: () => void): this; + listen(port?: number, hostname?: string, listeningListener?: () => void): this; + listen(port?: number, backlog?: number, listeningListener?: () => void): this; + listen(port?: number, listeningListener?: () => void): this; + listen(path: string, backlog?: number, listeningListener?: () => void): this; + listen(path: string, listeningListener?: () => void): this; + listen(options: ListenOptions, listeningListener?: () => void): this; + listen(handle: any, backlog?: number, listeningListener?: () => void): this; + listen(handle: any, listeningListener?: () => void): this; + /** + * Stops the server from accepting new connections and keeps existing + * connections. This function is asynchronous, the server is finally closed + * when all connections are ended and the server emits a `'close'` event. + * The optional `callback` will be called once the `'close'` event occurs. Unlike + * that event, it will be called with an `Error` as its only argument if the server + * was not open when it was closed. + * @since v0.1.90 + * @param callback Called when the server is closed. + */ + close(callback?: (err?: Error) => void): this; + /** + * Returns the bound `address`, the address `family` name, and `port` of the server + * as reported by the operating system if listening on an IP socket + * (useful to find which port was assigned when getting an OS-assigned address):`{ port: 12346, family: 'IPv4', address: '127.0.0.1' }`. + * + * For a server listening on a pipe or Unix domain socket, the name is returned + * as a string. + * + * ```js + * const server = net.createServer((socket) => { + * socket.end('goodbye\n'); + * }).on('error', (err) => { + * // Handle errors here. + * throw err; + * }); + * + * // Grab an arbitrary unused port. + * server.listen(() => { + * console.log('opened server on', server.address()); + * }); + * ``` + * + * `server.address()` returns `null` before the `'listening'` event has been + * emitted or after calling `server.close()`. + * @since v0.1.90 + */ + address(): AddressInfo | string | null; + /** + * Asynchronously get the number of concurrent connections on the server. Works + * when sockets were sent to forks. + * + * Callback should take two arguments `err` and `count`. + * @since v0.9.7 + */ + getConnections(cb: (error: Error | null, count: number) => void): void; + /** + * Opposite of `unref()`, calling `ref()` on a previously `unref`ed server will _not_ let the program exit if it's the only server left (the default behavior). + * If the server is `ref`ed calling `ref()` again will have no effect. + * @since v0.9.1 + */ + ref(): this; + /** + * Calling `unref()` on a server will allow the program to exit if this is the only + * active server in the event system. If the server is already `unref`ed calling`unref()` again will have no effect. + * @since v0.9.1 + */ + unref(): this; + /** + * Set this property to reject connections when the server's connection count gets + * high. + * + * It is not recommended to use this option once a socket has been sent to a child + * with `child_process.fork()`. + * @since v0.2.0 + */ + maxConnections: number; + connections: number; + /** + * Indicates whether or not the server is listening for connections. + * @since v5.7.0 + */ + listening: boolean; + /** + * events.EventEmitter + * 1. close + * 2. connection + * 3. error + * 4. listening + * 5. drop + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "connection", listener: (socket: Socket) => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "listening", listener: () => void): this; + addListener(event: "drop", listener: (data?: DropArgument) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "connection", socket: Socket): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "listening"): boolean; + emit(event: "drop", data?: DropArgument): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "close", listener: () => void): this; + on(event: "connection", listener: (socket: Socket) => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "listening", listener: () => void): this; + on(event: "drop", listener: (data?: DropArgument) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "connection", listener: (socket: Socket) => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "listening", listener: () => void): this; + once(event: "drop", listener: (data?: DropArgument) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "connection", listener: (socket: Socket) => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "listening", listener: () => void): this; + prependListener(event: "drop", listener: (data?: DropArgument) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "connection", listener: (socket: Socket) => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "listening", listener: () => void): this; + prependOnceListener(event: "drop", listener: (data?: DropArgument) => void): this; + /** + * Calls {@link Server.close()} and returns a promise that fulfills when the server has closed. + * @since v20.5.0 + */ + [Symbol.asyncDispose](): Promise; + } + type IPVersion = "ipv4" | "ipv6"; + /** + * The `BlockList` object can be used with some network APIs to specify rules for + * disabling inbound or outbound access to specific IP addresses, IP ranges, or + * IP subnets. + * @since v15.0.0, v14.18.0 + */ + class BlockList { + /** + * Adds a rule to block the given IP address. + * @since v15.0.0, v14.18.0 + * @param address An IPv4 or IPv6 address. + * @param [type='ipv4'] Either `'ipv4'` or `'ipv6'`. + */ + addAddress(address: string, type?: IPVersion): void; + addAddress(address: SocketAddress): void; + /** + * Adds a rule to block a range of IP addresses from `start` (inclusive) to`end` (inclusive). + * @since v15.0.0, v14.18.0 + * @param start The starting IPv4 or IPv6 address in the range. + * @param end The ending IPv4 or IPv6 address in the range. + * @param [type='ipv4'] Either `'ipv4'` or `'ipv6'`. + */ + addRange(start: string, end: string, type?: IPVersion): void; + addRange(start: SocketAddress, end: SocketAddress): void; + /** + * Adds a rule to block a range of IP addresses specified as a subnet mask. + * @since v15.0.0, v14.18.0 + * @param net The network IPv4 or IPv6 address. + * @param prefix The number of CIDR prefix bits. For IPv4, this must be a value between `0` and `32`. For IPv6, this must be between `0` and `128`. + * @param [type='ipv4'] Either `'ipv4'` or `'ipv6'`. + */ + addSubnet(net: SocketAddress, prefix: number): void; + addSubnet(net: string, prefix: number, type?: IPVersion): void; + /** + * Returns `true` if the given IP address matches any of the rules added to the`BlockList`. + * + * ```js + * const blockList = new net.BlockList(); + * blockList.addAddress('123.123.123.123'); + * blockList.addRange('10.0.0.1', '10.0.0.10'); + * blockList.addSubnet('8592:757c:efae:4e45::', 64, 'ipv6'); + * + * console.log(blockList.check('123.123.123.123')); // Prints: true + * console.log(blockList.check('10.0.0.3')); // Prints: true + * console.log(blockList.check('222.111.111.222')); // Prints: false + * + * // IPv6 notation for IPv4 addresses works: + * console.log(blockList.check('::ffff:7b7b:7b7b', 'ipv6')); // Prints: true + * console.log(blockList.check('::ffff:123.123.123.123', 'ipv6')); // Prints: true + * ``` + * @since v15.0.0, v14.18.0 + * @param address The IP address to check + * @param [type='ipv4'] Either `'ipv4'` or `'ipv6'`. + */ + check(address: SocketAddress): boolean; + check(address: string, type?: IPVersion): boolean; + } + interface TcpNetConnectOpts extends TcpSocketConnectOpts, SocketConstructorOpts { + timeout?: number | undefined; + } + interface IpcNetConnectOpts extends IpcSocketConnectOpts, SocketConstructorOpts { + timeout?: number | undefined; + } + type NetConnectOpts = TcpNetConnectOpts | IpcNetConnectOpts; + /** + * Creates a new TCP or `IPC` server. + * + * If `allowHalfOpen` is set to `true`, when the other end of the socket + * signals the end of transmission, the server will only send back the end of + * transmission when `socket.end()` is explicitly called. For example, in the + * context of TCP, when a FIN packed is received, a FIN packed is sent + * back only when `socket.end()` is explicitly called. Until then the + * connection is half-closed (non-readable but still writable). See `'end'` event and [RFC 1122](https://tools.ietf.org/html/rfc1122) (section 4.2.2.13) for more information. + * + * If `pauseOnConnect` is set to `true`, then the socket associated with each + * incoming connection will be paused, and no data will be read from its handle. + * This allows connections to be passed between processes without any data being + * read by the original process. To begin reading data from a paused socket, call `socket.resume()`. + * + * The server can be a TCP server or an `IPC` server, depending on what it `listen()` to. + * + * Here is an example of a TCP echo server which listens for connections + * on port 8124: + * + * ```js + * const net = require('node:net'); + * const server = net.createServer((c) => { + * // 'connection' listener. + * console.log('client connected'); + * c.on('end', () => { + * console.log('client disconnected'); + * }); + * c.write('hello\r\n'); + * c.pipe(c); + * }); + * server.on('error', (err) => { + * throw err; + * }); + * server.listen(8124, () => { + * console.log('server bound'); + * }); + * ``` + * + * Test this by using `telnet`: + * + * ```bash + * telnet localhost 8124 + * ``` + * + * To listen on the socket `/tmp/echo.sock`: + * + * ```js + * server.listen('/tmp/echo.sock', () => { + * console.log('server bound'); + * }); + * ``` + * + * Use `nc` to connect to a Unix domain socket server: + * + * ```bash + * nc -U /tmp/echo.sock + * ``` + * @since v0.5.0 + * @param connectionListener Automatically set as a listener for the {@link 'connection'} event. + */ + function createServer(connectionListener?: (socket: Socket) => void): Server; + function createServer(options?: ServerOpts, connectionListener?: (socket: Socket) => void): Server; + /** + * Aliases to {@link createConnection}. + * + * Possible signatures: + * + * * {@link connect} + * * {@link connect} for `IPC` connections. + * * {@link connect} for TCP connections. + */ + function connect(options: NetConnectOpts, connectionListener?: () => void): Socket; + function connect(port: number, host?: string, connectionListener?: () => void): Socket; + function connect(path: string, connectionListener?: () => void): Socket; + /** + * A factory function, which creates a new {@link Socket}, + * immediately initiates connection with `socket.connect()`, + * then returns the `net.Socket` that starts the connection. + * + * When the connection is established, a `'connect'` event will be emitted + * on the returned socket. The last parameter `connectListener`, if supplied, + * will be added as a listener for the `'connect'` event **once**. + * + * Possible signatures: + * + * * {@link createConnection} + * * {@link createConnection} for `IPC` connections. + * * {@link createConnection} for TCP connections. + * + * The {@link connect} function is an alias to this function. + */ + function createConnection(options: NetConnectOpts, connectionListener?: () => void): Socket; + function createConnection(port: number, host?: string, connectionListener?: () => void): Socket; + function createConnection(path: string, connectionListener?: () => void): Socket; + /** + * Gets the current default value of the `autoSelectFamily` option of `socket.connect(options)`. + * The initial default value is `true`, unless the command line option`--no-network-family-autoselection` is provided. + * @since v19.4.0 + */ + function getDefaultAutoSelectFamily(): boolean; + /** + * Sets the default value of the `autoSelectFamily` option of `socket.connect(options)`. + * @since v19.4.0 + */ + function setDefaultAutoSelectFamily(value: boolean): void; + /** + * Gets the current default value of the `autoSelectFamilyAttemptTimeout` option of `socket.connect(options)`. + * The initial default value is `250`. + * @since v19.8.0 + */ + function getDefaultAutoSelectFamilyAttemptTimeout(): number; + /** + * Sets the default value of the `autoSelectFamilyAttemptTimeout` option of `socket.connect(options)`. + * @since v19.8.0 + */ + function setDefaultAutoSelectFamilyAttemptTimeout(value: number): void; + /** + * Returns `6` if `input` is an IPv6 address. Returns `4` if `input` is an IPv4 + * address in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) with no leading zeroes. Otherwise, returns`0`. + * + * ```js + * net.isIP('::1'); // returns 6 + * net.isIP('127.0.0.1'); // returns 4 + * net.isIP('127.000.000.001'); // returns 0 + * net.isIP('127.0.0.1/24'); // returns 0 + * net.isIP('fhqwhgads'); // returns 0 + * ``` + * @since v0.3.0 + */ + function isIP(input: string): number; + /** + * Returns `true` if `input` is an IPv4 address in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) with no + * leading zeroes. Otherwise, returns `false`. + * + * ```js + * net.isIPv4('127.0.0.1'); // returns true + * net.isIPv4('127.000.000.001'); // returns false + * net.isIPv4('127.0.0.1/24'); // returns false + * net.isIPv4('fhqwhgads'); // returns false + * ``` + * @since v0.3.0 + */ + function isIPv4(input: string): boolean; + /** + * Returns `true` if `input` is an IPv6 address. Otherwise, returns `false`. + * + * ```js + * net.isIPv6('::1'); // returns true + * net.isIPv6('fhqwhgads'); // returns false + * ``` + * @since v0.3.0 + */ + function isIPv6(input: string): boolean; + interface SocketAddressInitOptions { + /** + * The network address as either an IPv4 or IPv6 string. + * @default 127.0.0.1 + */ + address?: string | undefined; + /** + * @default `'ipv4'` + */ + family?: IPVersion | undefined; + /** + * An IPv6 flow-label used only if `family` is `'ipv6'`. + * @default 0 + */ + flowlabel?: number | undefined; + /** + * An IP port. + * @default 0 + */ + port?: number | undefined; + } + /** + * @since v15.14.0, v14.18.0 + */ + class SocketAddress { + constructor(options: SocketAddressInitOptions); + /** + * Either \`'ipv4'\` or \`'ipv6'\`. + * @since v15.14.0, v14.18.0 + */ + readonly address: string; + /** + * Either \`'ipv4'\` or \`'ipv6'\`. + * @since v15.14.0, v14.18.0 + */ + readonly family: IPVersion; + /** + * @since v15.14.0, v14.18.0 + */ + readonly port: number; + /** + * @since v15.14.0, v14.18.0 + */ + readonly flowlabel: number; + } +} +declare module "node:net" { + export * from "net"; +} diff --git a/node_modules/@types/node/os.d.ts b/node_modules/@types/node/os.d.ts new file mode 100644 index 00000000..4fc733b6 --- /dev/null +++ b/node_modules/@types/node/os.d.ts @@ -0,0 +1,477 @@ +/** + * The `node:os` module provides operating system-related utility methods and + * properties. It can be accessed using: + * + * ```js + * const os = require('node:os'); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/os.js) + */ +declare module "os" { + interface CpuInfo { + model: string; + speed: number; + times: { + user: number; + nice: number; + sys: number; + idle: number; + irq: number; + }; + } + interface NetworkInterfaceBase { + address: string; + netmask: string; + mac: string; + internal: boolean; + cidr: string | null; + } + interface NetworkInterfaceInfoIPv4 extends NetworkInterfaceBase { + family: "IPv4"; + scopeid?: undefined; + } + interface NetworkInterfaceInfoIPv6 extends NetworkInterfaceBase { + family: "IPv6"; + scopeid: number; + } + interface UserInfo { + username: T; + uid: number; + gid: number; + shell: T | null; + homedir: T; + } + type NetworkInterfaceInfo = NetworkInterfaceInfoIPv4 | NetworkInterfaceInfoIPv6; + /** + * Returns the host name of the operating system as a string. + * @since v0.3.3 + */ + function hostname(): string; + /** + * Returns an array containing the 1, 5, and 15 minute load averages. + * + * The load average is a measure of system activity calculated by the operating + * system and expressed as a fractional number. + * + * The load average is a Unix-specific concept. On Windows, the return value is + * always `[0, 0, 0]`. + * @since v0.3.3 + */ + function loadavg(): number[]; + /** + * Returns the system uptime in number of seconds. + * @since v0.3.3 + */ + function uptime(): number; + /** + * Returns the amount of free system memory in bytes as an integer. + * @since v0.3.3 + */ + function freemem(): number; + /** + * Returns the total amount of system memory in bytes as an integer. + * @since v0.3.3 + */ + function totalmem(): number; + /** + * Returns an array of objects containing information about each logical CPU core. + * The array will be empty if no CPU information is available, such as if the`/proc` file system is unavailable. + * + * The properties included on each object include: + * + * ```js + * [ + * { + * model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz', + * speed: 2926, + * times: { + * user: 252020, + * nice: 0, + * sys: 30340, + * idle: 1070356870, + * irq: 0, + * }, + * }, + * { + * model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz', + * speed: 2926, + * times: { + * user: 306960, + * nice: 0, + * sys: 26980, + * idle: 1071569080, + * irq: 0, + * }, + * }, + * { + * model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz', + * speed: 2926, + * times: { + * user: 248450, + * nice: 0, + * sys: 21750, + * idle: 1070919370, + * irq: 0, + * }, + * }, + * { + * model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz', + * speed: 2926, + * times: { + * user: 256880, + * nice: 0, + * sys: 19430, + * idle: 1070905480, + * irq: 20, + * }, + * }, + * ] + * ``` + * + * `nice` values are POSIX-only. On Windows, the `nice` values of all processors + * are always 0. + * + * `os.cpus().length` should not be used to calculate the amount of parallelism + * available to an application. Use {@link availableParallelism} for this purpose. + * @since v0.3.3 + */ + function cpus(): CpuInfo[]; + /** + * Returns an estimate of the default amount of parallelism a program should use. + * Always returns a value greater than zero. + * + * This function is a small wrapper about libuv's [`uv_available_parallelism()`](https://docs.libuv.org/en/v1.x/misc.html#c.uv_available_parallelism). + * @since v19.4.0, v18.14.0 + */ + function availableParallelism(): number; + /** + * Returns the operating system name as returned by [`uname(3)`](https://linux.die.net/man/3/uname). For example, it + * returns `'Linux'` on Linux, `'Darwin'` on macOS, and `'Windows_NT'` on Windows. + * + * See [https://en.wikipedia.org/wiki/Uname#Examples](https://en.wikipedia.org/wiki/Uname#Examples) for additional information + * about the output of running [`uname(3)`](https://linux.die.net/man/3/uname) on various operating systems. + * @since v0.3.3 + */ + function type(): string; + /** + * Returns the operating system as a string. + * + * On POSIX systems, the operating system release is determined by calling [`uname(3)`](https://linux.die.net/man/3/uname). On Windows, `GetVersionExW()` is used. See + * [https://en.wikipedia.org/wiki/Uname#Examples](https://en.wikipedia.org/wiki/Uname#Examples) for more information. + * @since v0.3.3 + */ + function release(): string; + /** + * Returns an object containing network interfaces that have been assigned a + * network address. + * + * Each key on the returned object identifies a network interface. The associated + * value is an array of objects that each describe an assigned network address. + * + * The properties available on the assigned network address object include: + * + * ```js + * { + * lo: [ + * { + * address: '127.0.0.1', + * netmask: '255.0.0.0', + * family: 'IPv4', + * mac: '00:00:00:00:00:00', + * internal: true, + * cidr: '127.0.0.1/8' + * }, + * { + * address: '::1', + * netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', + * family: 'IPv6', + * mac: '00:00:00:00:00:00', + * scopeid: 0, + * internal: true, + * cidr: '::1/128' + * } + * ], + * eth0: [ + * { + * address: '192.168.1.108', + * netmask: '255.255.255.0', + * family: 'IPv4', + * mac: '01:02:03:0a:0b:0c', + * internal: false, + * cidr: '192.168.1.108/24' + * }, + * { + * address: 'fe80::a00:27ff:fe4e:66a1', + * netmask: 'ffff:ffff:ffff:ffff::', + * family: 'IPv6', + * mac: '01:02:03:0a:0b:0c', + * scopeid: 1, + * internal: false, + * cidr: 'fe80::a00:27ff:fe4e:66a1/64' + * } + * ] + * } + * ``` + * @since v0.6.0 + */ + function networkInterfaces(): NodeJS.Dict; + /** + * Returns the string path of the current user's home directory. + * + * On POSIX, it uses the `$HOME` environment variable if defined. Otherwise it + * uses the [effective UID](https://en.wikipedia.org/wiki/User_identifier#Effective_user_ID) to look up the user's home directory. + * + * On Windows, it uses the `USERPROFILE` environment variable if defined. + * Otherwise it uses the path to the profile directory of the current user. + * @since v2.3.0 + */ + function homedir(): string; + /** + * Returns information about the currently effective user. On POSIX platforms, + * this is typically a subset of the password file. The returned object includes + * the `username`, `uid`, `gid`, `shell`, and `homedir`. On Windows, the `uid` and`gid` fields are `-1`, and `shell` is `null`. + * + * The value of `homedir` returned by `os.userInfo()` is provided by the operating + * system. This differs from the result of `os.homedir()`, which queries + * environment variables for the home directory before falling back to the + * operating system response. + * + * Throws a `SystemError` if a user has no `username` or `homedir`. + * @since v6.0.0 + */ + function userInfo(options: { encoding: "buffer" }): UserInfo; + function userInfo(options?: { encoding: BufferEncoding }): UserInfo; + type SignalConstants = { + [key in NodeJS.Signals]: number; + }; + namespace constants { + const UV_UDP_REUSEADDR: number; + namespace signals {} + const signals: SignalConstants; + namespace errno { + const E2BIG: number; + const EACCES: number; + const EADDRINUSE: number; + const EADDRNOTAVAIL: number; + const EAFNOSUPPORT: number; + const EAGAIN: number; + const EALREADY: number; + const EBADF: number; + const EBADMSG: number; + const EBUSY: number; + const ECANCELED: number; + const ECHILD: number; + const ECONNABORTED: number; + const ECONNREFUSED: number; + const ECONNRESET: number; + const EDEADLK: number; + const EDESTADDRREQ: number; + const EDOM: number; + const EDQUOT: number; + const EEXIST: number; + const EFAULT: number; + const EFBIG: number; + const EHOSTUNREACH: number; + const EIDRM: number; + const EILSEQ: number; + const EINPROGRESS: number; + const EINTR: number; + const EINVAL: number; + const EIO: number; + const EISCONN: number; + const EISDIR: number; + const ELOOP: number; + const EMFILE: number; + const EMLINK: number; + const EMSGSIZE: number; + const EMULTIHOP: number; + const ENAMETOOLONG: number; + const ENETDOWN: number; + const ENETRESET: number; + const ENETUNREACH: number; + const ENFILE: number; + const ENOBUFS: number; + const ENODATA: number; + const ENODEV: number; + const ENOENT: number; + const ENOEXEC: number; + const ENOLCK: number; + const ENOLINK: number; + const ENOMEM: number; + const ENOMSG: number; + const ENOPROTOOPT: number; + const ENOSPC: number; + const ENOSR: number; + const ENOSTR: number; + const ENOSYS: number; + const ENOTCONN: number; + const ENOTDIR: number; + const ENOTEMPTY: number; + const ENOTSOCK: number; + const ENOTSUP: number; + const ENOTTY: number; + const ENXIO: number; + const EOPNOTSUPP: number; + const EOVERFLOW: number; + const EPERM: number; + const EPIPE: number; + const EPROTO: number; + const EPROTONOSUPPORT: number; + const EPROTOTYPE: number; + const ERANGE: number; + const EROFS: number; + const ESPIPE: number; + const ESRCH: number; + const ESTALE: number; + const ETIME: number; + const ETIMEDOUT: number; + const ETXTBSY: number; + const EWOULDBLOCK: number; + const EXDEV: number; + const WSAEINTR: number; + const WSAEBADF: number; + const WSAEACCES: number; + const WSAEFAULT: number; + const WSAEINVAL: number; + const WSAEMFILE: number; + const WSAEWOULDBLOCK: number; + const WSAEINPROGRESS: number; + const WSAEALREADY: number; + const WSAENOTSOCK: number; + const WSAEDESTADDRREQ: number; + const WSAEMSGSIZE: number; + const WSAEPROTOTYPE: number; + const WSAENOPROTOOPT: number; + const WSAEPROTONOSUPPORT: number; + const WSAESOCKTNOSUPPORT: number; + const WSAEOPNOTSUPP: number; + const WSAEPFNOSUPPORT: number; + const WSAEAFNOSUPPORT: number; + const WSAEADDRINUSE: number; + const WSAEADDRNOTAVAIL: number; + const WSAENETDOWN: number; + const WSAENETUNREACH: number; + const WSAENETRESET: number; + const WSAECONNABORTED: number; + const WSAECONNRESET: number; + const WSAENOBUFS: number; + const WSAEISCONN: number; + const WSAENOTCONN: number; + const WSAESHUTDOWN: number; + const WSAETOOMANYREFS: number; + const WSAETIMEDOUT: number; + const WSAECONNREFUSED: number; + const WSAELOOP: number; + const WSAENAMETOOLONG: number; + const WSAEHOSTDOWN: number; + const WSAEHOSTUNREACH: number; + const WSAENOTEMPTY: number; + const WSAEPROCLIM: number; + const WSAEUSERS: number; + const WSAEDQUOT: number; + const WSAESTALE: number; + const WSAEREMOTE: number; + const WSASYSNOTREADY: number; + const WSAVERNOTSUPPORTED: number; + const WSANOTINITIALISED: number; + const WSAEDISCON: number; + const WSAENOMORE: number; + const WSAECANCELLED: number; + const WSAEINVALIDPROCTABLE: number; + const WSAEINVALIDPROVIDER: number; + const WSAEPROVIDERFAILEDINIT: number; + const WSASYSCALLFAILURE: number; + const WSASERVICE_NOT_FOUND: number; + const WSATYPE_NOT_FOUND: number; + const WSA_E_NO_MORE: number; + const WSA_E_CANCELLED: number; + const WSAEREFUSED: number; + } + namespace priority { + const PRIORITY_LOW: number; + const PRIORITY_BELOW_NORMAL: number; + const PRIORITY_NORMAL: number; + const PRIORITY_ABOVE_NORMAL: number; + const PRIORITY_HIGH: number; + const PRIORITY_HIGHEST: number; + } + } + const devNull: string; + const EOL: string; + /** + * Returns the operating system CPU architecture for which the Node.js binary was + * compiled. Possible values are `'arm'`, `'arm64'`, `'ia32'`, `'mips'`,`'mipsel'`, `'ppc'`, `'ppc64'`, `'riscv64'`, `'s390'`, `'s390x'`, and `'x64'`. + * + * The return value is equivalent to `process.arch`. + * @since v0.5.0 + */ + function arch(): string; + /** + * Returns a string identifying the kernel version. + * + * On POSIX systems, the operating system release is determined by calling [`uname(3)`](https://linux.die.net/man/3/uname). On Windows, `RtlGetVersion()` is used, and if it is not + * available, `GetVersionExW()` will be used. See [https://en.wikipedia.org/wiki/Uname#Examples](https://en.wikipedia.org/wiki/Uname#Examples) for more information. + * @since v13.11.0, v12.17.0 + */ + function version(): string; + /** + * Returns a string identifying the operating system platform for which + * the Node.js binary was compiled. The value is set at compile time. + * Possible values are `'aix'`, `'darwin'`, `'freebsd'`,`'linux'`,`'openbsd'`, `'sunos'`, and `'win32'`. + * + * The return value is equivalent to `process.platform`. + * + * The value `'android'` may also be returned if Node.js is built on the Android + * operating system. [Android support is experimental](https://github.com/nodejs/node/blob/HEAD/BUILDING.md#androidandroid-based-devices-eg-firefox-os). + * @since v0.5.0 + */ + function platform(): NodeJS.Platform; + /** + * Returns the machine type as a string, such as `arm`, `arm64`, `aarch64`,`mips`, `mips64`, `ppc64`, `ppc64le`, `s390`, `s390x`, `i386`, `i686`, `x86_64`. + * + * On POSIX systems, the machine type is determined by calling [`uname(3)`](https://linux.die.net/man/3/uname). On Windows, `RtlGetVersion()` is used, and if it is not + * available, `GetVersionExW()` will be used. See [https://en.wikipedia.org/wiki/Uname#Examples](https://en.wikipedia.org/wiki/Uname#Examples) for more information. + * @since v18.9.0, v16.18.0 + */ + function machine(): string; + /** + * Returns the operating system's default directory for temporary files as a + * string. + * @since v0.9.9 + */ + function tmpdir(): string; + /** + * Returns a string identifying the endianness of the CPU for which the Node.js + * binary was compiled. + * + * Possible values are `'BE'` for big endian and `'LE'` for little endian. + * @since v0.9.4 + */ + function endianness(): "BE" | "LE"; + /** + * Returns the scheduling priority for the process specified by `pid`. If `pid` is + * not provided or is `0`, the priority of the current process is returned. + * @since v10.10.0 + * @param [pid=0] The process ID to retrieve scheduling priority for. + */ + function getPriority(pid?: number): number; + /** + * Attempts to set the scheduling priority for the process specified by `pid`. If`pid` is not provided or is `0`, the process ID of the current process is used. + * + * The `priority` input must be an integer between `-20` (high priority) and `19`(low priority). Due to differences between Unix priority levels and Windows + * priority classes, `priority` is mapped to one of six priority constants in`os.constants.priority`. When retrieving a process priority level, this range + * mapping may cause the return value to be slightly different on Windows. To avoid + * confusion, set `priority` to one of the priority constants. + * + * On Windows, setting priority to `PRIORITY_HIGHEST` requires elevated user + * privileges. Otherwise the set priority will be silently reduced to`PRIORITY_HIGH`. + * @since v10.10.0 + * @param [pid=0] The process ID to set scheduling priority for. + * @param priority The scheduling priority to assign to the process. + */ + function setPriority(priority: number): void; + function setPriority(pid: number, priority: number): void; +} +declare module "node:os" { + export * from "os"; +} diff --git a/node_modules/@types/node/package.json b/node_modules/@types/node/package.json new file mode 100644 index 00000000..f7875f0c --- /dev/null +++ b/node_modules/@types/node/package.json @@ -0,0 +1,230 @@ +{ + "name": "@types/node", + "version": "20.9.0", + "description": "TypeScript definitions for node", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node", + "license": "MIT", + "contributors": [ + { + "name": "Microsoft TypeScript", + "githubUsername": "Microsoft", + "url": "https://github.com/Microsoft" + }, + { + "name": "Alberto Schiabel", + "githubUsername": "jkomyno", + "url": "https://github.com/jkomyno" + }, + { + "name": "Alvis HT Tang", + "githubUsername": "alvis", + "url": "https://github.com/alvis" + }, + { + "name": "Andrew Makarov", + "githubUsername": "r3nya", + "url": "https://github.com/r3nya" + }, + { + "name": "Benjamin Toueg", + "githubUsername": "btoueg", + "url": "https://github.com/btoueg" + }, + { + "name": "Chigozirim C.", + "githubUsername": "smac89", + "url": "https://github.com/smac89" + }, + { + "name": "David Junger", + "githubUsername": "touffy", + "url": "https://github.com/touffy" + }, + { + "name": "Deividas Bakanas", + "githubUsername": "DeividasBakanas", + "url": "https://github.com/DeividasBakanas" + }, + { + "name": "Eugene Y. Q. Shen", + "githubUsername": "eyqs", + "url": "https://github.com/eyqs" + }, + { + "name": "Hannes Magnusson", + "githubUsername": "Hannes-Magnusson-CK", + "url": "https://github.com/Hannes-Magnusson-CK" + }, + { + "name": "Huw", + "githubUsername": "hoo29", + "url": "https://github.com/hoo29" + }, + { + "name": "Kelvin Jin", + "githubUsername": "kjin", + "url": "https://github.com/kjin" + }, + { + "name": "Klaus Meinhardt", + "githubUsername": "ajafff", + "url": "https://github.com/ajafff" + }, + { + "name": "Lishude", + "githubUsername": "islishude", + "url": "https://github.com/islishude" + }, + { + "name": "Mariusz Wiktorczyk", + "githubUsername": "mwiktorczyk", + "url": "https://github.com/mwiktorczyk" + }, + { + "name": "Mohsen Azimi", + "githubUsername": "mohsen1", + "url": "https://github.com/mohsen1" + }, + { + "name": "Nicolas Even", + "githubUsername": "n-e", + "url": "https://github.com/n-e" + }, + { + "name": "Nikita Galkin", + "githubUsername": "galkin", + "url": "https://github.com/galkin" + }, + { + "name": "Parambir Singh", + "githubUsername": "parambirs", + "url": "https://github.com/parambirs" + }, + { + "name": "Sebastian Silbermann", + "githubUsername": "eps1lon", + "url": "https://github.com/eps1lon" + }, + { + "name": "Thomas den Hollander", + "githubUsername": "ThomasdenH", + "url": "https://github.com/ThomasdenH" + }, + { + "name": "Wilco Bakker", + "githubUsername": "WilcoBakker", + "url": "https://github.com/WilcoBakker" + }, + { + "name": "wwwy3y3", + "githubUsername": "wwwy3y3", + "url": "https://github.com/wwwy3y3" + }, + { + "name": "Samuel Ainsworth", + "githubUsername": "samuela", + "url": "https://github.com/samuela" + }, + { + "name": "Kyle Uehlein", + "githubUsername": "kuehlein", + "url": "https://github.com/kuehlein" + }, + { + "name": "Thanik Bhongbhibhat", + "githubUsername": "bhongy", + "url": "https://github.com/bhongy" + }, + { + "name": "Marcin Kopacz", + "githubUsername": "chyzwar", + "url": "https://github.com/chyzwar" + }, + { + "name": "Trivikram Kamat", + "githubUsername": "trivikr", + "url": "https://github.com/trivikr" + }, + { + "name": "Junxiao Shi", + "githubUsername": "yoursunny", + "url": "https://github.com/yoursunny" + }, + { + "name": "Ilia Baryshnikov", + "githubUsername": "qwelias", + "url": "https://github.com/qwelias" + }, + { + "name": "ExE Boss", + "githubUsername": "ExE-Boss", + "url": "https://github.com/ExE-Boss" + }, + { + "name": "Piotr Błażejewicz", + "githubUsername": "peterblazejewicz", + "url": "https://github.com/peterblazejewicz" + }, + { + "name": "Anna Henningsen", + "githubUsername": "addaleax", + "url": "https://github.com/addaleax" + }, + { + "name": "Victor Perin", + "githubUsername": "victorperin", + "url": "https://github.com/victorperin" + }, + { + "name": "Yongsheng Zhang", + "githubUsername": "ZYSzys", + "url": "https://github.com/ZYSzys" + }, + { + "name": "NodeJS Contributors", + "githubUsername": "NodeJS", + "url": "https://github.com/NodeJS" + }, + { + "name": "Linus Unnebäck", + "githubUsername": "LinusU", + "url": "https://github.com/LinusU" + }, + { + "name": "wafuwafu13", + "githubUsername": "wafuwafu13", + "url": "https://github.com/wafuwafu13" + }, + { + "name": "Matteo Collina", + "githubUsername": "mcollina", + "url": "https://github.com/mcollina" + }, + { + "name": "Dmitry Semigradsky", + "githubUsername": "Semigradsky", + "url": "https://github.com/Semigradsky" + } + ], + "main": "", + "types": "index.d.ts", + "typesVersions": { + "<=4.8": { + "*": [ + "ts4.8/*" + ] + } + }, + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/node" + }, + "scripts": {}, + "dependencies": { + "undici-types": "~5.26.4" + }, + "typesPublisherContentHash": "a1b366d7b3bf1afaa88e038010565763e234c0e5fa8044db8b0d7c44995bfbf8", + "typeScriptVersion": "4.5", + "nonNpm": true +} \ No newline at end of file diff --git a/node_modules/@types/node/path.d.ts b/node_modules/@types/node/path.d.ts new file mode 100644 index 00000000..6f07681a --- /dev/null +++ b/node_modules/@types/node/path.d.ts @@ -0,0 +1,191 @@ +declare module "path/posix" { + import path = require("path"); + export = path; +} +declare module "path/win32" { + import path = require("path"); + export = path; +} +/** + * The `node:path` module provides utilities for working with file and directory + * paths. It can be accessed using: + * + * ```js + * const path = require('node:path'); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/path.js) + */ +declare module "path" { + namespace path { + /** + * A parsed path object generated by path.parse() or consumed by path.format(). + */ + interface ParsedPath { + /** + * The root of the path such as '/' or 'c:\' + */ + root: string; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir: string; + /** + * The file name including extension (if any) such as 'index.html' + */ + base: string; + /** + * The file extension (if any) such as '.html' + */ + ext: string; + /** + * The file name without extension (if any) such as 'index' + */ + name: string; + } + interface FormatInputPathObject { + /** + * The root of the path such as '/' or 'c:\' + */ + root?: string | undefined; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir?: string | undefined; + /** + * The file name including extension (if any) such as 'index.html' + */ + base?: string | undefined; + /** + * The file extension (if any) such as '.html' + */ + ext?: string | undefined; + /** + * The file name without extension (if any) such as 'index' + */ + name?: string | undefined; + } + interface PlatformPath { + /** + * Normalize a string path, reducing '..' and '.' parts. + * When multiple slashes are found, they're replaced by a single one; when the path contains a trailing slash, it is preserved. On Windows backslashes are used. + * + * @param path string path to normalize. + * @throws {TypeError} if `path` is not a string. + */ + normalize(path: string): string; + /** + * Join all arguments together and normalize the resulting path. + * + * @param paths paths to join. + * @throws {TypeError} if any of the path segments is not a string. + */ + join(...paths: string[]): string; + /** + * The right-most parameter is considered {to}. Other parameters are considered an array of {from}. + * + * Starting from leftmost {from} parameter, resolves {to} to an absolute path. + * + * If {to} isn't already absolute, {from} arguments are prepended in right to left order, + * until an absolute path is found. If after using all {from} paths still no absolute path is found, + * the current working directory is used as well. The resulting path is normalized, + * and trailing slashes are removed unless the path gets resolved to the root directory. + * + * @param paths A sequence of paths or path segments. + * @throws {TypeError} if any of the arguments is not a string. + */ + resolve(...paths: string[]): string; + /** + * Determines whether {path} is an absolute path. An absolute path will always resolve to the same location, regardless of the working directory. + * + * If the given {path} is a zero-length string, `false` will be returned. + * + * @param path path to test. + * @throws {TypeError} if `path` is not a string. + */ + isAbsolute(path: string): boolean; + /** + * Solve the relative path from {from} to {to} based on the current working directory. + * At times we have two absolute paths, and we need to derive the relative path from one to the other. This is actually the reverse transform of path.resolve. + * + * @throws {TypeError} if either `from` or `to` is not a string. + */ + relative(from: string, to: string): string; + /** + * Return the directory name of a path. Similar to the Unix dirname command. + * + * @param path the path to evaluate. + * @throws {TypeError} if `path` is not a string. + */ + dirname(path: string): string; + /** + * Return the last portion of a path. Similar to the Unix basename command. + * Often used to extract the file name from a fully qualified path. + * + * @param path the path to evaluate. + * @param suffix optionally, an extension to remove from the result. + * @throws {TypeError} if `path` is not a string or if `ext` is given and is not a string. + */ + basename(path: string, suffix?: string): string; + /** + * Return the extension of the path, from the last '.' to end of string in the last portion of the path. + * If there is no '.' in the last portion of the path or the first character of it is '.', then it returns an empty string. + * + * @param path the path to evaluate. + * @throws {TypeError} if `path` is not a string. + */ + extname(path: string): string; + /** + * The platform-specific file separator. '\\' or '/'. + */ + readonly sep: "\\" | "/"; + /** + * The platform-specific file delimiter. ';' or ':'. + */ + readonly delimiter: ";" | ":"; + /** + * Returns an object from a path string - the opposite of format(). + * + * @param path path to evaluate. + * @throws {TypeError} if `path` is not a string. + */ + parse(path: string): ParsedPath; + /** + * Returns a path string from an object - the opposite of parse(). + * + * @param pathObject path to evaluate. + */ + format(pathObject: FormatInputPathObject): string; + /** + * On Windows systems only, returns an equivalent namespace-prefixed path for the given path. + * If path is not a string, path will be returned without modifications. + * This method is meaningful only on Windows system. + * On POSIX systems, the method is non-operational and always returns path without modifications. + */ + toNamespacedPath(path: string): string; + /** + * Posix specific pathing. + * Same as parent object on posix. + */ + readonly posix: PlatformPath; + /** + * Windows specific pathing. + * Same as parent object on windows + */ + readonly win32: PlatformPath; + } + } + const path: path.PlatformPath; + export = path; +} +declare module "node:path" { + import path = require("path"); + export = path; +} +declare module "node:path/posix" { + import path = require("path/posix"); + export = path; +} +declare module "node:path/win32" { + import path = require("path/win32"); + export = path; +} diff --git a/node_modules/@types/node/perf_hooks.d.ts b/node_modules/@types/node/perf_hooks.d.ts new file mode 100644 index 00000000..7ed1592a --- /dev/null +++ b/node_modules/@types/node/perf_hooks.d.ts @@ -0,0 +1,639 @@ +/** + * This module provides an implementation of a subset of the W3C [Web Performance APIs](https://w3c.github.io/perf-timing-primer/) as well as additional APIs for + * Node.js-specific performance measurements. + * + * Node.js supports the following [Web Performance APIs](https://w3c.github.io/perf-timing-primer/): + * + * * [High Resolution Time](https://www.w3.org/TR/hr-time-2) + * * [Performance Timeline](https://w3c.github.io/performance-timeline/) + * * [User Timing](https://www.w3.org/TR/user-timing/) + * * [Resource Timing](https://www.w3.org/TR/resource-timing-2/) + * + * ```js + * const { PerformanceObserver, performance } = require('node:perf_hooks'); + * + * const obs = new PerformanceObserver((items) => { + * console.log(items.getEntries()[0].duration); + * performance.clearMarks(); + * }); + * obs.observe({ type: 'measure' }); + * performance.measure('Start to Now'); + * + * performance.mark('A'); + * doSomeLongRunningProcess(() => { + * performance.measure('A to Now', 'A'); + * + * performance.mark('B'); + * performance.measure('A to B', 'A', 'B'); + * }); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/perf_hooks.js) + */ +declare module "perf_hooks" { + import { AsyncResource } from "node:async_hooks"; + type EntryType = "node" | "mark" | "measure" | "gc" | "function" | "http2" | "http" | "dns" | "net"; + interface NodeGCPerformanceDetail { + /** + * When `performanceEntry.entryType` is equal to 'gc', `the performance.kind` property identifies + * the type of garbage collection operation that occurred. + * See perf_hooks.constants for valid values. + */ + readonly kind?: number | undefined; + /** + * When `performanceEntry.entryType` is equal to 'gc', the `performance.flags` + * property contains additional information about garbage collection operation. + * See perf_hooks.constants for valid values. + */ + readonly flags?: number | undefined; + } + /** + * The constructor of this class is not exposed to users directly. + * @since v8.5.0 + */ + class PerformanceEntry { + protected constructor(); + /** + * The total number of milliseconds elapsed for this entry. This value will not + * be meaningful for all Performance Entry types. + * @since v8.5.0 + */ + readonly duration: number; + /** + * The name of the performance entry. + * @since v8.5.0 + */ + readonly name: string; + /** + * The high resolution millisecond timestamp marking the starting time of the + * Performance Entry. + * @since v8.5.0 + */ + readonly startTime: number; + /** + * The type of the performance entry. It may be one of: + * + * * `'node'` (Node.js only) + * * `'mark'` (available on the Web) + * * `'measure'` (available on the Web) + * * `'gc'` (Node.js only) + * * `'function'` (Node.js only) + * * `'http2'` (Node.js only) + * * `'http'` (Node.js only) + * @since v8.5.0 + */ + readonly entryType: EntryType; + /** + * Additional detail specific to the `entryType`. + * @since v16.0.0 + */ + readonly detail?: NodeGCPerformanceDetail | unknown | undefined; // TODO: Narrow this based on entry type. + toJSON(): any; + } + /** + * Exposes marks created via the `Performance.mark()` method. + * @since v18.2.0, v16.17.0 + */ + class PerformanceMark extends PerformanceEntry { + readonly duration: 0; + readonly entryType: "mark"; + } + /** + * Exposes measures created via the `Performance.measure()` method. + * + * The constructor of this class is not exposed to users directly. + * @since v18.2.0, v16.17.0 + */ + class PerformanceMeasure extends PerformanceEntry { + readonly entryType: "measure"; + } + /** + * _This property is an extension by Node.js. It is not available in Web browsers._ + * + * Provides timing details for Node.js itself. The constructor of this class + * is not exposed to users. + * @since v8.5.0 + */ + class PerformanceNodeTiming extends PerformanceEntry { + /** + * The high resolution millisecond timestamp at which the Node.js process + * completed bootstrapping. If bootstrapping has not yet finished, the property + * has the value of -1. + * @since v8.5.0 + */ + readonly bootstrapComplete: number; + /** + * The high resolution millisecond timestamp at which the Node.js environment was + * initialized. + * @since v8.5.0 + */ + readonly environment: number; + /** + * The high resolution millisecond timestamp of the amount of time the event loop + * has been idle within the event loop's event provider (e.g. `epoll_wait`). This + * does not take CPU usage into consideration. If the event loop has not yet + * started (e.g., in the first tick of the main script), the property has the + * value of 0. + * @since v14.10.0, v12.19.0 + */ + readonly idleTime: number; + /** + * The high resolution millisecond timestamp at which the Node.js event loop + * exited. If the event loop has not yet exited, the property has the value of -1\. + * It can only have a value of not -1 in a handler of the `'exit'` event. + * @since v8.5.0 + */ + readonly loopExit: number; + /** + * The high resolution millisecond timestamp at which the Node.js event loop + * started. If the event loop has not yet started (e.g., in the first tick of the + * main script), the property has the value of -1. + * @since v8.5.0 + */ + readonly loopStart: number; + /** + * The high resolution millisecond timestamp at which the V8 platform was + * initialized. + * @since v8.5.0 + */ + readonly v8Start: number; + } + interface EventLoopUtilization { + idle: number; + active: number; + utilization: number; + } + /** + * @param util1 The result of a previous call to eventLoopUtilization() + * @param util2 The result of a previous call to eventLoopUtilization() prior to util1 + */ + type EventLoopUtilityFunction = ( + util1?: EventLoopUtilization, + util2?: EventLoopUtilization, + ) => EventLoopUtilization; + interface MarkOptions { + /** + * Additional optional detail to include with the mark. + */ + detail?: unknown | undefined; + /** + * An optional timestamp to be used as the mark time. + * @default `performance.now()`. + */ + startTime?: number | undefined; + } + interface MeasureOptions { + /** + * Additional optional detail to include with the mark. + */ + detail?: unknown | undefined; + /** + * Duration between start and end times. + */ + duration?: number | undefined; + /** + * Timestamp to be used as the end time, or a string identifying a previously recorded mark. + */ + end?: number | string | undefined; + /** + * Timestamp to be used as the start time, or a string identifying a previously recorded mark. + */ + start?: number | string | undefined; + } + interface TimerifyOptions { + /** + * A histogram object created using + * `perf_hooks.createHistogram()` that will record runtime durations in + * nanoseconds. + */ + histogram?: RecordableHistogram | undefined; + } + interface Performance { + /** + * If name is not provided, removes all PerformanceMark objects from the Performance Timeline. + * If name is provided, removes only the named mark. + * @param name + */ + clearMarks(name?: string): void; + /** + * If name is not provided, removes all PerformanceMeasure objects from the Performance Timeline. + * If name is provided, removes only the named measure. + * @param name + * @since v16.7.0 + */ + clearMeasures(name?: string): void; + /** + * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime`. + * If you are only interested in performance entries of certain types or that have certain names, see + * `performance.getEntriesByType()` and `performance.getEntriesByName()`. + * @since v16.7.0 + */ + getEntries(): PerformanceEntry[]; + /** + * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime` + * whose `performanceEntry.name` is equal to `name`, and optionally, whose `performanceEntry.entryType` is equal to `type`. + * @param name + * @param type + * @since v16.7.0 + */ + getEntriesByName(name: string, type?: EntryType): PerformanceEntry[]; + /** + * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime` + * whose `performanceEntry.entryType` is equal to `type`. + * @param type + * @since v16.7.0 + */ + getEntriesByType(type: EntryType): PerformanceEntry[]; + /** + * Creates a new PerformanceMark entry in the Performance Timeline. + * A PerformanceMark is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'mark', + * and whose performanceEntry.duration is always 0. + * Performance marks are used to mark specific significant moments in the Performance Timeline. + * @param name + * @return The PerformanceMark entry that was created + */ + mark(name?: string, options?: MarkOptions): PerformanceMark; + /** + * Creates a new PerformanceMeasure entry in the Performance Timeline. + * A PerformanceMeasure is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'measure', + * and whose performanceEntry.duration measures the number of milliseconds elapsed since startMark and endMark. + * + * The startMark argument may identify any existing PerformanceMark in the the Performance Timeline, or may identify + * any of the timestamp properties provided by the PerformanceNodeTiming class. If the named startMark does not exist, + * then startMark is set to timeOrigin by default. + * + * The endMark argument must identify any existing PerformanceMark in the the Performance Timeline or any of the timestamp + * properties provided by the PerformanceNodeTiming class. If the named endMark does not exist, an error will be thrown. + * @param name + * @param startMark + * @param endMark + * @return The PerformanceMeasure entry that was created + */ + measure(name: string, startMark?: string, endMark?: string): PerformanceMeasure; + measure(name: string, options: MeasureOptions): PerformanceMeasure; + /** + * An instance of the PerformanceNodeTiming class that provides performance metrics for specific Node.js operational milestones. + */ + readonly nodeTiming: PerformanceNodeTiming; + /** + * @return the current high resolution millisecond timestamp + */ + now(): number; + /** + * The timeOrigin specifies the high resolution millisecond timestamp from which all performance metric durations are measured. + */ + readonly timeOrigin: number; + /** + * Wraps a function within a new function that measures the running time of the wrapped function. + * A PerformanceObserver must be subscribed to the 'function' event type in order for the timing details to be accessed. + * @param fn + */ + timerify any>(fn: T, options?: TimerifyOptions): T; + /** + * eventLoopUtilization is similar to CPU utilization except that it is calculated using high precision wall-clock time. + * It represents the percentage of time the event loop has spent outside the event loop's event provider (e.g. epoll_wait). + * No other CPU idle time is taken into consideration. + */ + eventLoopUtilization: EventLoopUtilityFunction; + } + interface PerformanceObserverEntryList { + /** + * Returns a list of `PerformanceEntry` objects in chronological order + * with respect to `performanceEntry.startTime`. + * + * ```js + * const { + * performance, + * PerformanceObserver, + * } = require('node:perf_hooks'); + * + * const obs = new PerformanceObserver((perfObserverList, observer) => { + * console.log(perfObserverList.getEntries()); + * + * * [ + * * PerformanceEntry { + * * name: 'test', + * * entryType: 'mark', + * * startTime: 81.465639, + * * duration: 0 + * * }, + * * PerformanceEntry { + * * name: 'meow', + * * entryType: 'mark', + * * startTime: 81.860064, + * * duration: 0 + * * } + * * ] + * + * performance.clearMarks(); + * performance.clearMeasures(); + * observer.disconnect(); + * }); + * obs.observe({ type: 'mark' }); + * + * performance.mark('test'); + * performance.mark('meow'); + * ``` + * @since v8.5.0 + */ + getEntries(): PerformanceEntry[]; + /** + * Returns a list of `PerformanceEntry` objects in chronological order + * with respect to `performanceEntry.startTime` whose `performanceEntry.name` is + * equal to `name`, and optionally, whose `performanceEntry.entryType` is equal to`type`. + * + * ```js + * const { + * performance, + * PerformanceObserver, + * } = require('node:perf_hooks'); + * + * const obs = new PerformanceObserver((perfObserverList, observer) => { + * console.log(perfObserverList.getEntriesByName('meow')); + * + * * [ + * * PerformanceEntry { + * * name: 'meow', + * * entryType: 'mark', + * * startTime: 98.545991, + * * duration: 0 + * * } + * * ] + * + * console.log(perfObserverList.getEntriesByName('nope')); // [] + * + * console.log(perfObserverList.getEntriesByName('test', 'mark')); + * + * * [ + * * PerformanceEntry { + * * name: 'test', + * * entryType: 'mark', + * * startTime: 63.518931, + * * duration: 0 + * * } + * * ] + * + * console.log(perfObserverList.getEntriesByName('test', 'measure')); // [] + * + * performance.clearMarks(); + * performance.clearMeasures(); + * observer.disconnect(); + * }); + * obs.observe({ entryTypes: ['mark', 'measure'] }); + * + * performance.mark('test'); + * performance.mark('meow'); + * ``` + * @since v8.5.0 + */ + getEntriesByName(name: string, type?: EntryType): PerformanceEntry[]; + /** + * Returns a list of `PerformanceEntry` objects in chronological order + * with respect to `performanceEntry.startTime` whose `performanceEntry.entryType`is equal to `type`. + * + * ```js + * const { + * performance, + * PerformanceObserver, + * } = require('node:perf_hooks'); + * + * const obs = new PerformanceObserver((perfObserverList, observer) => { + * console.log(perfObserverList.getEntriesByType('mark')); + * + * * [ + * * PerformanceEntry { + * * name: 'test', + * * entryType: 'mark', + * * startTime: 55.897834, + * * duration: 0 + * * }, + * * PerformanceEntry { + * * name: 'meow', + * * entryType: 'mark', + * * startTime: 56.350146, + * * duration: 0 + * * } + * * ] + * + * performance.clearMarks(); + * performance.clearMeasures(); + * observer.disconnect(); + * }); + * obs.observe({ type: 'mark' }); + * + * performance.mark('test'); + * performance.mark('meow'); + * ``` + * @since v8.5.0 + */ + getEntriesByType(type: EntryType): PerformanceEntry[]; + } + type PerformanceObserverCallback = (list: PerformanceObserverEntryList, observer: PerformanceObserver) => void; + /** + * @since v8.5.0 + */ + class PerformanceObserver extends AsyncResource { + constructor(callback: PerformanceObserverCallback); + /** + * Disconnects the `PerformanceObserver` instance from all notifications. + * @since v8.5.0 + */ + disconnect(): void; + /** + * Subscribes the `PerformanceObserver` instance to notifications of new `PerformanceEntry` instances identified either by `options.entryTypes`or `options.type`: + * + * ```js + * const { + * performance, + * PerformanceObserver, + * } = require('node:perf_hooks'); + * + * const obs = new PerformanceObserver((list, observer) => { + * // Called once asynchronously. `list` contains three items. + * }); + * obs.observe({ type: 'mark' }); + * + * for (let n = 0; n < 3; n++) + * performance.mark(`test${n}`); + * ``` + * @since v8.5.0 + */ + observe( + options: + | { + entryTypes: ReadonlyArray; + buffered?: boolean | undefined; + } + | { + type: EntryType; + buffered?: boolean | undefined; + }, + ): void; + } + namespace constants { + const NODE_PERFORMANCE_GC_MAJOR: number; + const NODE_PERFORMANCE_GC_MINOR: number; + const NODE_PERFORMANCE_GC_INCREMENTAL: number; + const NODE_PERFORMANCE_GC_WEAKCB: number; + const NODE_PERFORMANCE_GC_FLAGS_NO: number; + const NODE_PERFORMANCE_GC_FLAGS_CONSTRUCT_RETAINED: number; + const NODE_PERFORMANCE_GC_FLAGS_FORCED: number; + const NODE_PERFORMANCE_GC_FLAGS_SYNCHRONOUS_PHANTOM_PROCESSING: number; + const NODE_PERFORMANCE_GC_FLAGS_ALL_AVAILABLE_GARBAGE: number; + const NODE_PERFORMANCE_GC_FLAGS_ALL_EXTERNAL_MEMORY: number; + const NODE_PERFORMANCE_GC_FLAGS_SCHEDULE_IDLE: number; + } + const performance: Performance; + interface EventLoopMonitorOptions { + /** + * The sampling rate in milliseconds. + * Must be greater than zero. + * @default 10 + */ + resolution?: number | undefined; + } + interface Histogram { + /** + * Returns a `Map` object detailing the accumulated percentile distribution. + * @since v11.10.0 + */ + readonly percentiles: Map; + /** + * The number of times the event loop delay exceeded the maximum 1 hour event + * loop delay threshold. + * @since v11.10.0 + */ + readonly exceeds: number; + /** + * The minimum recorded event loop delay. + * @since v11.10.0 + */ + readonly min: number; + /** + * The maximum recorded event loop delay. + * @since v11.10.0 + */ + readonly max: number; + /** + * The mean of the recorded event loop delays. + * @since v11.10.0 + */ + readonly mean: number; + /** + * The standard deviation of the recorded event loop delays. + * @since v11.10.0 + */ + readonly stddev: number; + /** + * Resets the collected histogram data. + * @since v11.10.0 + */ + reset(): void; + /** + * Returns the value at the given percentile. + * @since v11.10.0 + * @param percentile A percentile value in the range (0, 100]. + */ + percentile(percentile: number): number; + } + interface IntervalHistogram extends Histogram { + /** + * Enables the update interval timer. Returns `true` if the timer was + * started, `false` if it was already started. + * @since v11.10.0 + */ + enable(): boolean; + /** + * Disables the update interval timer. Returns `true` if the timer was + * stopped, `false` if it was already stopped. + * @since v11.10.0 + */ + disable(): boolean; + } + interface RecordableHistogram extends Histogram { + /** + * @since v15.9.0, v14.18.0 + * @param val The amount to record in the histogram. + */ + record(val: number | bigint): void; + /** + * Calculates the amount of time (in nanoseconds) that has passed since the + * previous call to `recordDelta()` and records that amount in the histogram. + * + * ## Examples + * @since v15.9.0, v14.18.0 + */ + recordDelta(): void; + /** + * Adds the values from `other` to this histogram. + * @since v17.4.0, v16.14.0 + */ + add(other: RecordableHistogram): void; + } + /** + * _This property is an extension by Node.js. It is not available in Web browsers._ + * + * Creates an `IntervalHistogram` object that samples and reports the event loop + * delay over time. The delays will be reported in nanoseconds. + * + * Using a timer to detect approximate event loop delay works because the + * execution of timers is tied specifically to the lifecycle of the libuv + * event loop. That is, a delay in the loop will cause a delay in the execution + * of the timer, and those delays are specifically what this API is intended to + * detect. + * + * ```js + * const { monitorEventLoopDelay } = require('node:perf_hooks'); + * const h = monitorEventLoopDelay({ resolution: 20 }); + * h.enable(); + * // Do something. + * h.disable(); + * console.log(h.min); + * console.log(h.max); + * console.log(h.mean); + * console.log(h.stddev); + * console.log(h.percentiles); + * console.log(h.percentile(50)); + * console.log(h.percentile(99)); + * ``` + * @since v11.10.0 + */ + function monitorEventLoopDelay(options?: EventLoopMonitorOptions): IntervalHistogram; + interface CreateHistogramOptions { + /** + * The minimum recordable value. Must be an integer value greater than 0. + * @default 1 + */ + min?: number | bigint | undefined; + /** + * The maximum recordable value. Must be an integer value greater than min. + * @default Number.MAX_SAFE_INTEGER + */ + max?: number | bigint | undefined; + /** + * The number of accuracy digits. Must be a number between 1 and 5. + * @default 3 + */ + figures?: number | undefined; + } + /** + * Returns a `RecordableHistogram`. + * @since v15.9.0, v14.18.0 + */ + function createHistogram(options?: CreateHistogramOptions): RecordableHistogram; + import { performance as _performance } from "perf_hooks"; + global { + /** + * `performance` is a global reference for `require('perf_hooks').performance` + * https://nodejs.org/api/globals.html#performance + * @since v16.0.0 + */ + var performance: typeof globalThis extends { + onmessage: any; + performance: infer T; + } ? T + : typeof _performance; + } +} +declare module "node:perf_hooks" { + export * from "perf_hooks"; +} diff --git a/node_modules/@types/node/process.d.ts b/node_modules/@types/node/process.d.ts new file mode 100644 index 00000000..1ec9e83b --- /dev/null +++ b/node_modules/@types/node/process.d.ts @@ -0,0 +1,1532 @@ +declare module "process" { + import * as tty from "node:tty"; + import { Worker } from "node:worker_threads"; + global { + var process: NodeJS.Process; + namespace NodeJS { + // this namespace merge is here because these are specifically used + // as the type for process.stdin, process.stdout, and process.stderr. + // they can't live in tty.d.ts because we need to disambiguate the imported name. + interface ReadStream extends tty.ReadStream {} + interface WriteStream extends tty.WriteStream {} + interface MemoryUsageFn { + /** + * The `process.memoryUsage()` method iterate over each page to gather informations about memory + * usage which can be slow depending on the program memory allocations. + */ + (): MemoryUsage; + /** + * method returns an integer representing the Resident Set Size (RSS) in bytes. + */ + rss(): number; + } + interface MemoryUsage { + rss: number; + heapTotal: number; + heapUsed: number; + external: number; + arrayBuffers: number; + } + interface CpuUsage { + user: number; + system: number; + } + interface ProcessRelease { + name: string; + sourceUrl?: string | undefined; + headersUrl?: string | undefined; + libUrl?: string | undefined; + lts?: string | undefined; + } + interface ProcessVersions extends Dict { + http_parser: string; + node: string; + v8: string; + ares: string; + uv: string; + zlib: string; + modules: string; + openssl: string; + } + type Platform = + | "aix" + | "android" + | "darwin" + | "freebsd" + | "haiku" + | "linux" + | "openbsd" + | "sunos" + | "win32" + | "cygwin" + | "netbsd"; + type Architecture = + | "arm" + | "arm64" + | "ia32" + | "mips" + | "mipsel" + | "ppc" + | "ppc64" + | "riscv64" + | "s390" + | "s390x" + | "x64"; + type Signals = + | "SIGABRT" + | "SIGALRM" + | "SIGBUS" + | "SIGCHLD" + | "SIGCONT" + | "SIGFPE" + | "SIGHUP" + | "SIGILL" + | "SIGINT" + | "SIGIO" + | "SIGIOT" + | "SIGKILL" + | "SIGPIPE" + | "SIGPOLL" + | "SIGPROF" + | "SIGPWR" + | "SIGQUIT" + | "SIGSEGV" + | "SIGSTKFLT" + | "SIGSTOP" + | "SIGSYS" + | "SIGTERM" + | "SIGTRAP" + | "SIGTSTP" + | "SIGTTIN" + | "SIGTTOU" + | "SIGUNUSED" + | "SIGURG" + | "SIGUSR1" + | "SIGUSR2" + | "SIGVTALRM" + | "SIGWINCH" + | "SIGXCPU" + | "SIGXFSZ" + | "SIGBREAK" + | "SIGLOST" + | "SIGINFO"; + type UncaughtExceptionOrigin = "uncaughtException" | "unhandledRejection"; + type MultipleResolveType = "resolve" | "reject"; + type BeforeExitListener = (code: number) => void; + type DisconnectListener = () => void; + type ExitListener = (code: number) => void; + type RejectionHandledListener = (promise: Promise) => void; + type UncaughtExceptionListener = (error: Error, origin: UncaughtExceptionOrigin) => void; + /** + * Most of the time the unhandledRejection will be an Error, but this should not be relied upon + * as *anything* can be thrown/rejected, it is therefore unsafe to assume that the value is an Error. + */ + type UnhandledRejectionListener = (reason: unknown, promise: Promise) => void; + type WarningListener = (warning: Error) => void; + type MessageListener = (message: unknown, sendHandle: unknown) => void; + type SignalsListener = (signal: Signals) => void; + type MultipleResolveListener = ( + type: MultipleResolveType, + promise: Promise, + value: unknown, + ) => void; + type WorkerListener = (worker: Worker) => void; + interface Socket extends ReadWriteStream { + isTTY?: true | undefined; + } + // Alias for compatibility + interface ProcessEnv extends Dict { + /** + * Can be used to change the default timezone at runtime + */ + TZ?: string; + } + interface HRTime { + (time?: [number, number]): [number, number]; + bigint(): bigint; + } + interface ProcessReport { + /** + * Directory where the report is written. + * working directory of the Node.js process. + * @default '' indicating that reports are written to the current + */ + directory: string; + /** + * Filename where the report is written. + * The default value is the empty string. + * @default '' the output filename will be comprised of a timestamp, + * PID, and sequence number. + */ + filename: string; + /** + * Returns a JSON-formatted diagnostic report for the running process. + * The report's JavaScript stack trace is taken from err, if present. + */ + getReport(err?: Error): string; + /** + * If true, a diagnostic report is generated on fatal errors, + * such as out of memory errors or failed C++ assertions. + * @default false + */ + reportOnFatalError: boolean; + /** + * If true, a diagnostic report is generated when the process + * receives the signal specified by process.report.signal. + * @default false + */ + reportOnSignal: boolean; + /** + * If true, a diagnostic report is generated on uncaught exception. + * @default false + */ + reportOnUncaughtException: boolean; + /** + * The signal used to trigger the creation of a diagnostic report. + * @default 'SIGUSR2' + */ + signal: Signals; + /** + * Writes a diagnostic report to a file. If filename is not provided, the default filename + * includes the date, time, PID, and a sequence number. + * The report's JavaScript stack trace is taken from err, if present. + * + * @param fileName Name of the file where the report is written. + * This should be a relative path, that will be appended to the directory specified in + * `process.report.directory`, or the current working directory of the Node.js process, + * if unspecified. + * @param error A custom error used for reporting the JavaScript stack. + * @return Filename of the generated report. + */ + writeReport(fileName?: string): string; + writeReport(error?: Error): string; + writeReport(fileName?: string, err?: Error): string; + } + interface ResourceUsage { + fsRead: number; + fsWrite: number; + involuntaryContextSwitches: number; + ipcReceived: number; + ipcSent: number; + majorPageFault: number; + maxRSS: number; + minorPageFault: number; + sharedMemorySize: number; + signalsCount: number; + swappedOut: number; + systemCPUTime: number; + unsharedDataSize: number; + unsharedStackSize: number; + userCPUTime: number; + voluntaryContextSwitches: number; + } + interface EmitWarningOptions { + /** + * When `warning` is a `string`, `type` is the name to use for the _type_ of warning being emitted. + * + * @default 'Warning' + */ + type?: string | undefined; + /** + * A unique identifier for the warning instance being emitted. + */ + code?: string | undefined; + /** + * When `warning` is a `string`, `ctor` is an optional function used to limit the generated stack trace. + * + * @default process.emitWarning + */ + ctor?: Function | undefined; + /** + * Additional text to include with the error. + */ + detail?: string | undefined; + } + interface ProcessConfig { + readonly target_defaults: { + readonly cflags: any[]; + readonly default_configuration: string; + readonly defines: string[]; + readonly include_dirs: string[]; + readonly libraries: string[]; + }; + readonly variables: { + readonly clang: number; + readonly host_arch: string; + readonly node_install_npm: boolean; + readonly node_install_waf: boolean; + readonly node_prefix: string; + readonly node_shared_openssl: boolean; + readonly node_shared_v8: boolean; + readonly node_shared_zlib: boolean; + readonly node_use_dtrace: boolean; + readonly node_use_etw: boolean; + readonly node_use_openssl: boolean; + readonly target_arch: string; + readonly v8_no_strict_aliasing: number; + readonly v8_use_snapshot: boolean; + readonly visibility: string; + }; + } + interface Process extends EventEmitter { + /** + * The `process.stdout` property returns a stream connected to`stdout` (fd `1`). It is a `net.Socket` (which is a `Duplex` stream) unless fd `1` refers to a file, in which case it is + * a `Writable` stream. + * + * For example, to copy `process.stdin` to `process.stdout`: + * + * ```js + * import { stdin, stdout } from 'node:process'; + * + * stdin.pipe(stdout); + * ``` + * + * `process.stdout` differs from other Node.js streams in important ways. See `note on process I/O` for more information. + */ + stdout: WriteStream & { + fd: 1; + }; + /** + * The `process.stderr` property returns a stream connected to`stderr` (fd `2`). It is a `net.Socket` (which is a `Duplex` stream) unless fd `2` refers to a file, in which case it is + * a `Writable` stream. + * + * `process.stderr` differs from other Node.js streams in important ways. See `note on process I/O` for more information. + */ + stderr: WriteStream & { + fd: 2; + }; + /** + * The `process.stdin` property returns a stream connected to`stdin` (fd `0`). It is a `net.Socket` (which is a `Duplex` stream) unless fd `0` refers to a file, in which case it is + * a `Readable` stream. + * + * For details of how to read from `stdin` see `readable.read()`. + * + * As a `Duplex` stream, `process.stdin` can also be used in "old" mode that + * is compatible with scripts written for Node.js prior to v0.10\. + * For more information see `Stream compatibility`. + * + * In "old" streams mode the `stdin` stream is paused by default, so one + * must call `process.stdin.resume()` to read from it. Note also that calling`process.stdin.resume()` itself would switch stream to "old" mode. + */ + stdin: ReadStream & { + fd: 0; + }; + openStdin(): Socket; + /** + * The `process.argv` property returns an array containing the command-line + * arguments passed when the Node.js process was launched. The first element will + * be {@link execPath}. See `process.argv0` if access to the original value + * of `argv[0]` is needed. The second element will be the path to the JavaScript + * file being executed. The remaining elements will be any additional command-line + * arguments. + * + * For example, assuming the following script for `process-args.js`: + * + * ```js + * import { argv } from 'node:process'; + * + * // print process.argv + * argv.forEach((val, index) => { + * console.log(`${index}: ${val}`); + * }); + * ``` + * + * Launching the Node.js process as: + * + * ```bash + * node process-args.js one two=three four + * ``` + * + * Would generate the output: + * + * ```text + * 0: /usr/local/bin/node + * 1: /Users/mjr/work/node/process-args.js + * 2: one + * 3: two=three + * 4: four + * ``` + * @since v0.1.27 + */ + argv: string[]; + /** + * The `process.argv0` property stores a read-only copy of the original value of`argv[0]` passed when Node.js starts. + * + * ```console + * $ bash -c 'exec -a customArgv0 ./node' + * > process.argv[0] + * '/Volumes/code/external/node/out/Release/node' + * > process.argv0 + * 'customArgv0' + * ``` + * @since v6.4.0 + */ + argv0: string; + /** + * The `process.execArgv` property returns the set of Node.js-specific command-line + * options passed when the Node.js process was launched. These options do not + * appear in the array returned by the {@link argv} property, and do not + * include the Node.js executable, the name of the script, or any options following + * the script name. These options are useful in order to spawn child processes with + * the same execution environment as the parent. + * + * ```bash + * node --harmony script.js --version + * ``` + * + * Results in `process.execArgv`: + * + * ```js + * ['--harmony'] + * ``` + * + * And `process.argv`: + * + * ```js + * ['/usr/local/bin/node', 'script.js', '--version'] + * ``` + * + * Refer to `Worker constructor` for the detailed behavior of worker + * threads with this property. + * @since v0.7.7 + */ + execArgv: string[]; + /** + * The `process.execPath` property returns the absolute pathname of the executable + * that started the Node.js process. Symbolic links, if any, are resolved. + * + * ```js + * '/usr/local/bin/node' + * ``` + * @since v0.1.100 + */ + execPath: string; + /** + * The `process.abort()` method causes the Node.js process to exit immediately and + * generate a core file. + * + * This feature is not available in `Worker` threads. + * @since v0.7.0 + */ + abort(): never; + /** + * The `process.chdir()` method changes the current working directory of the + * Node.js process or throws an exception if doing so fails (for instance, if + * the specified `directory` does not exist). + * + * ```js + * import { chdir, cwd } from 'node:process'; + * + * console.log(`Starting directory: ${cwd()}`); + * try { + * chdir('/tmp'); + * console.log(`New directory: ${cwd()}`); + * } catch (err) { + * console.error(`chdir: ${err}`); + * } + * ``` + * + * This feature is not available in `Worker` threads. + * @since v0.1.17 + */ + chdir(directory: string): void; + /** + * The `process.cwd()` method returns the current working directory of the Node.js + * process. + * + * ```js + * import { cwd } from 'node:process'; + * + * console.log(`Current directory: ${cwd()}`); + * ``` + * @since v0.1.8 + */ + cwd(): string; + /** + * The port used by the Node.js debugger when enabled. + * + * ```js + * import process from 'node:process'; + * + * process.debugPort = 5858; + * ``` + * @since v0.7.2 + */ + debugPort: number; + /** + * The `process.emitWarning()` method can be used to emit custom or application + * specific process warnings. These can be listened for by adding a handler to the `'warning'` event. + * + * ```js + * import { emitWarning } from 'node:process'; + * + * // Emit a warning with a code and additional detail. + * emitWarning('Something happened!', { + * code: 'MY_WARNING', + * detail: 'This is some additional information', + * }); + * // Emits: + * // (node:56338) [MY_WARNING] Warning: Something happened! + * // This is some additional information + * ``` + * + * In this example, an `Error` object is generated internally by`process.emitWarning()` and passed through to the `'warning'` handler. + * + * ```js + * import process from 'node:process'; + * + * process.on('warning', (warning) => { + * console.warn(warning.name); // 'Warning' + * console.warn(warning.message); // 'Something happened!' + * console.warn(warning.code); // 'MY_WARNING' + * console.warn(warning.stack); // Stack trace + * console.warn(warning.detail); // 'This is some additional information' + * }); + * ``` + * + * If `warning` is passed as an `Error` object, the `options` argument is ignored. + * @since v8.0.0 + * @param warning The warning to emit. + */ + emitWarning(warning: string | Error, ctor?: Function): void; + emitWarning(warning: string | Error, type?: string, ctor?: Function): void; + emitWarning(warning: string | Error, type?: string, code?: string, ctor?: Function): void; + emitWarning(warning: string | Error, options?: EmitWarningOptions): void; + /** + * The `process.env` property returns an object containing the user environment. + * See [`environ(7)`](http://man7.org/linux/man-pages/man7/environ.7.html). + * + * An example of this object looks like: + * + * ```js + * { + * TERM: 'xterm-256color', + * SHELL: '/usr/local/bin/bash', + * USER: 'maciej', + * PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin', + * PWD: '/Users/maciej', + * EDITOR: 'vim', + * SHLVL: '1', + * HOME: '/Users/maciej', + * LOGNAME: 'maciej', + * _: '/usr/local/bin/node' + * } + * ``` + * + * It is possible to modify this object, but such modifications will not be + * reflected outside the Node.js process, or (unless explicitly requested) + * to other `Worker` threads. + * In other words, the following example would not work: + * + * ```bash + * node -e 'process.env.foo = "bar"' && echo $foo + * ``` + * + * While the following will: + * + * ```js + * import { env } from 'node:process'; + * + * env.foo = 'bar'; + * console.log(env.foo); + * ``` + * + * Assigning a property on `process.env` will implicitly convert the value + * to a string. **This behavior is deprecated.** Future versions of Node.js may + * throw an error when the value is not a string, number, or boolean. + * + * ```js + * import { env } from 'node:process'; + * + * env.test = null; + * console.log(env.test); + * // => 'null' + * env.test = undefined; + * console.log(env.test); + * // => 'undefined' + * ``` + * + * Use `delete` to delete a property from `process.env`. + * + * ```js + * import { env } from 'node:process'; + * + * env.TEST = 1; + * delete env.TEST; + * console.log(env.TEST); + * // => undefined + * ``` + * + * On Windows operating systems, environment variables are case-insensitive. + * + * ```js + * import { env } from 'node:process'; + * + * env.TEST = 1; + * console.log(env.test); + * // => 1 + * ``` + * + * Unless explicitly specified when creating a `Worker` instance, + * each `Worker` thread has its own copy of `process.env`, based on its + * parent thread's `process.env`, or whatever was specified as the `env` option + * to the `Worker` constructor. Changes to `process.env` will not be visible + * across `Worker` threads, and only the main thread can make changes that + * are visible to the operating system or to native add-ons. On Windows, a copy of`process.env` on a `Worker` instance operates in a case-sensitive manner + * unlike the main thread. + * @since v0.1.27 + */ + env: ProcessEnv; + /** + * The `process.exit()` method instructs Node.js to terminate the process + * synchronously with an exit status of `code`. If `code` is omitted, exit uses + * either the 'success' code `0` or the value of `process.exitCode` if it has been + * set. Node.js will not terminate until all the `'exit'` event listeners are + * called. + * + * To exit with a 'failure' code: + * + * ```js + * import { exit } from 'node:process'; + * + * exit(1); + * ``` + * + * The shell that executed Node.js should see the exit code as `1`. + * + * Calling `process.exit()` will force the process to exit as quickly as possible + * even if there are still asynchronous operations pending that have not yet + * completed fully, including I/O operations to `process.stdout` and`process.stderr`. + * + * In most situations, it is not actually necessary to call `process.exit()`explicitly. The Node.js process will exit on its own _if there is no additional_ + * _work pending_ in the event loop. The `process.exitCode` property can be set to + * tell the process which exit code to use when the process exits gracefully. + * + * For instance, the following example illustrates a _misuse_ of the`process.exit()` method that could lead to data printed to stdout being + * truncated and lost: + * + * ```js + * import { exit } from 'node:process'; + * + * // This is an example of what *not* to do: + * if (someConditionNotMet()) { + * printUsageToStdout(); + * exit(1); + * } + * ``` + * + * The reason this is problematic is because writes to `process.stdout` in Node.js + * are sometimes _asynchronous_ and may occur over multiple ticks of the Node.js + * event loop. Calling `process.exit()`, however, forces the process to exit _before_ those additional writes to `stdout` can be performed. + * + * Rather than calling `process.exit()` directly, the code _should_ set the`process.exitCode` and allow the process to exit naturally by avoiding + * scheduling any additional work for the event loop: + * + * ```js + * import process from 'node:process'; + * + * // How to properly set the exit code while letting + * // the process exit gracefully. + * if (someConditionNotMet()) { + * printUsageToStdout(); + * process.exitCode = 1; + * } + * ``` + * + * If it is necessary to terminate the Node.js process due to an error condition, + * throwing an _uncaught_ error and allowing the process to terminate accordingly + * is safer than calling `process.exit()`. + * + * In `Worker` threads, this function stops the current thread rather + * than the current process. + * @since v0.1.13 + * @param [code=0] The exit code. For string type, only integer strings (e.g.,'1') are allowed. + */ + exit(code?: number): never; + /** + * A number which will be the process exit code, when the process either + * exits gracefully, or is exited via {@link exit} without specifying + * a code. + * + * Specifying a code to {@link exit} will override any + * previous setting of `process.exitCode`. + * @since v0.11.8 + */ + exitCode?: number | undefined; + /** + * The `process.getgid()` method returns the numerical group identity of the + * process. (See [`getgid(2)`](http://man7.org/linux/man-pages/man2/getgid.2.html).) + * + * ```js + * import process from 'process'; + * + * if (process.getgid) { + * console.log(`Current gid: ${process.getgid()}`); + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * @since v0.1.31 + */ + getgid?: () => number; + /** + * The `process.setgid()` method sets the group identity of the process. (See [`setgid(2)`](http://man7.org/linux/man-pages/man2/setgid.2.html).) The `id` can be passed as either a + * numeric ID or a group name + * string. If a group name is specified, this method blocks while resolving the + * associated numeric ID. + * + * ```js + * import process from 'process'; + * + * if (process.getgid && process.setgid) { + * console.log(`Current gid: ${process.getgid()}`); + * try { + * process.setgid(501); + * console.log(`New gid: ${process.getgid()}`); + * } catch (err) { + * console.log(`Failed to set gid: ${err}`); + * } + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * This feature is not available in `Worker` threads. + * @since v0.1.31 + * @param id The group name or ID + */ + setgid?: (id: number | string) => void; + /** + * The `process.getuid()` method returns the numeric user identity of the process. + * (See [`getuid(2)`](http://man7.org/linux/man-pages/man2/getuid.2.html).) + * + * ```js + * import process from 'process'; + * + * if (process.getuid) { + * console.log(`Current uid: ${process.getuid()}`); + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * @since v0.1.28 + */ + getuid?: () => number; + /** + * The `process.setuid(id)` method sets the user identity of the process. (See [`setuid(2)`](http://man7.org/linux/man-pages/man2/setuid.2.html).) The `id` can be passed as either a + * numeric ID or a username string. + * If a username is specified, the method blocks while resolving the associated + * numeric ID. + * + * ```js + * import process from 'process'; + * + * if (process.getuid && process.setuid) { + * console.log(`Current uid: ${process.getuid()}`); + * try { + * process.setuid(501); + * console.log(`New uid: ${process.getuid()}`); + * } catch (err) { + * console.log(`Failed to set uid: ${err}`); + * } + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * This feature is not available in `Worker` threads. + * @since v0.1.28 + */ + setuid?: (id: number | string) => void; + /** + * The `process.geteuid()` method returns the numerical effective user identity of + * the process. (See [`geteuid(2)`](http://man7.org/linux/man-pages/man2/geteuid.2.html).) + * + * ```js + * import process from 'process'; + * + * if (process.geteuid) { + * console.log(`Current uid: ${process.geteuid()}`); + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * @since v2.0.0 + */ + geteuid?: () => number; + /** + * The `process.seteuid()` method sets the effective user identity of the process. + * (See [`seteuid(2)`](http://man7.org/linux/man-pages/man2/seteuid.2.html).) The `id` can be passed as either a numeric ID or a username + * string. If a username is specified, the method blocks while resolving the + * associated numeric ID. + * + * ```js + * import process from 'process'; + * + * if (process.geteuid && process.seteuid) { + * console.log(`Current uid: ${process.geteuid()}`); + * try { + * process.seteuid(501); + * console.log(`New uid: ${process.geteuid()}`); + * } catch (err) { + * console.log(`Failed to set uid: ${err}`); + * } + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * This feature is not available in `Worker` threads. + * @since v2.0.0 + * @param id A user name or ID + */ + seteuid?: (id: number | string) => void; + /** + * The `process.getegid()` method returns the numerical effective group identity + * of the Node.js process. (See [`getegid(2)`](http://man7.org/linux/man-pages/man2/getegid.2.html).) + * + * ```js + * import process from 'process'; + * + * if (process.getegid) { + * console.log(`Current gid: ${process.getegid()}`); + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * @since v2.0.0 + */ + getegid?: () => number; + /** + * The `process.setegid()` method sets the effective group identity of the process. + * (See [`setegid(2)`](http://man7.org/linux/man-pages/man2/setegid.2.html).) The `id` can be passed as either a numeric ID or a group + * name string. If a group name is specified, this method blocks while resolving + * the associated a numeric ID. + * + * ```js + * import process from 'process'; + * + * if (process.getegid && process.setegid) { + * console.log(`Current gid: ${process.getegid()}`); + * try { + * process.setegid(501); + * console.log(`New gid: ${process.getegid()}`); + * } catch (err) { + * console.log(`Failed to set gid: ${err}`); + * } + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * This feature is not available in `Worker` threads. + * @since v2.0.0 + * @param id A group name or ID + */ + setegid?: (id: number | string) => void; + /** + * The `process.getgroups()` method returns an array with the supplementary group + * IDs. POSIX leaves it unspecified if the effective group ID is included but + * Node.js ensures it always is. + * + * ```js + * import process from 'process'; + * + * if (process.getgroups) { + * console.log(process.getgroups()); // [ 16, 21, 297 ] + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * @since v0.9.4 + */ + getgroups?: () => number[]; + /** + * The `process.setgroups()` method sets the supplementary group IDs for the + * Node.js process. This is a privileged operation that requires the Node.js + * process to have `root` or the `CAP_SETGID` capability. + * + * The `groups` array can contain numeric group IDs, group names, or both. + * + * ```js + * import process from 'process'; + * + * if (process.getgroups && process.setgroups) { + * try { + * process.setgroups([501]); + * console.log(process.getgroups()); // new groups + * } catch (err) { + * console.log(`Failed to set groups: ${err}`); + * } + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * This feature is not available in `Worker` threads. + * @since v0.9.4 + */ + setgroups?: (groups: ReadonlyArray) => void; + /** + * The `process.setUncaughtExceptionCaptureCallback()` function sets a function + * that will be invoked when an uncaught exception occurs, which will receive the + * exception value itself as its first argument. + * + * If such a function is set, the `'uncaughtException'` event will + * not be emitted. If `--abort-on-uncaught-exception` was passed from the + * command line or set through `v8.setFlagsFromString()`, the process will + * not abort. Actions configured to take place on exceptions such as report + * generations will be affected too + * + * To unset the capture function,`process.setUncaughtExceptionCaptureCallback(null)` may be used. Calling this + * method with a non-`null` argument while another capture function is set will + * throw an error. + * + * Using this function is mutually exclusive with using the deprecated `domain` built-in module. + * @since v9.3.0 + */ + setUncaughtExceptionCaptureCallback(cb: ((err: Error) => void) | null): void; + /** + * Indicates whether a callback has been set using {@link setUncaughtExceptionCaptureCallback}. + * @since v9.3.0 + */ + hasUncaughtExceptionCaptureCallback(): boolean; + /** + * The `process.sourceMapsEnabled` property returns whether the [Source Map v3](https://sourcemaps.info/spec.html) support for stack traces is enabled. + * @since v20.7.0 + * @experimental + */ + readonly sourceMapsEnabled: boolean; + /** + * The `process.version` property contains the Node.js version string. + * + * ```js + * import { version } from 'node:process'; + * + * console.log(`Version: ${version}`); + * // Version: v14.8.0 + * ``` + * + * To get the version string without the prepended _v_, use`process.versions.node`. + * @since v0.1.3 + */ + readonly version: string; + /** + * The `process.versions` property returns an object listing the version strings of + * Node.js and its dependencies. `process.versions.modules` indicates the current + * ABI version, which is increased whenever a C++ API changes. Node.js will refuse + * to load modules that were compiled against a different module ABI version. + * + * ```js + * import { versions } from 'node:process'; + * + * console.log(versions); + * ``` + * + * Will generate an object similar to: + * + * ```console + * { node: '20.2.0', + * acorn: '8.8.2', + * ada: '2.4.0', + * ares: '1.19.0', + * base64: '0.5.0', + * brotli: '1.0.9', + * cjs_module_lexer: '1.2.2', + * cldr: '43.0', + * icu: '73.1', + * llhttp: '8.1.0', + * modules: '115', + * napi: '8', + * nghttp2: '1.52.0', + * nghttp3: '0.7.0', + * ngtcp2: '0.8.1', + * openssl: '3.0.8+quic', + * simdutf: '3.2.9', + * tz: '2023c', + * undici: '5.22.0', + * unicode: '15.0', + * uv: '1.44.2', + * uvwasi: '0.0.16', + * v8: '11.3.244.8-node.9', + * zlib: '1.2.13' } + * ``` + * @since v0.2.0 + */ + readonly versions: ProcessVersions; + /** + * The `process.config` property returns a frozen `Object` containing the + * JavaScript representation of the configure options used to compile the current + * Node.js executable. This is the same as the `config.gypi` file that was produced + * when running the `./configure` script. + * + * An example of the possible output looks like: + * + * ```js + * { + * target_defaults: + * { cflags: [], + * default_configuration: 'Release', + * defines: [], + * include_dirs: [], + * libraries: [] }, + * variables: + * { + * host_arch: 'x64', + * napi_build_version: 5, + * node_install_npm: 'true', + * node_prefix: '', + * node_shared_cares: 'false', + * node_shared_http_parser: 'false', + * node_shared_libuv: 'false', + * node_shared_zlib: 'false', + * node_use_openssl: 'true', + * node_shared_openssl: 'false', + * strict_aliasing: 'true', + * target_arch: 'x64', + * v8_use_snapshot: 1 + * } + * } + * ``` + * @since v0.7.7 + */ + readonly config: ProcessConfig; + /** + * The `process.kill()` method sends the `signal` to the process identified by`pid`. + * + * Signal names are strings such as `'SIGINT'` or `'SIGHUP'`. See `Signal Events` and [`kill(2)`](http://man7.org/linux/man-pages/man2/kill.2.html) for more information. + * + * This method will throw an error if the target `pid` does not exist. As a special + * case, a signal of `0` can be used to test for the existence of a process. + * Windows platforms will throw an error if the `pid` is used to kill a process + * group. + * + * Even though the name of this function is `process.kill()`, it is really just a + * signal sender, like the `kill` system call. The signal sent may do something + * other than kill the target process. + * + * ```js + * import process, { kill } from 'node:process'; + * + * process.on('SIGHUP', () => { + * console.log('Got SIGHUP signal.'); + * }); + * + * setTimeout(() => { + * console.log('Exiting.'); + * process.exit(0); + * }, 100); + * + * kill(process.pid, 'SIGHUP'); + * ``` + * + * When `SIGUSR1` is received by a Node.js process, Node.js will start the + * debugger. See `Signal Events`. + * @since v0.0.6 + * @param pid A process ID + * @param [signal='SIGTERM'] The signal to send, either as a string or number. + */ + kill(pid: number, signal?: string | number): true; + /** + * The `process.pid` property returns the PID of the process. + * + * ```js + * import { pid } from 'node:process'; + * + * console.log(`This process is pid ${pid}`); + * ``` + * @since v0.1.15 + */ + readonly pid: number; + /** + * The `process.ppid` property returns the PID of the parent of the + * current process. + * + * ```js + * import { ppid } from 'node:process'; + * + * console.log(`The parent process is pid ${ppid}`); + * ``` + * @since v9.2.0, v8.10.0, v6.13.0 + */ + readonly ppid: number; + /** + * The `process.title` property returns the current process title (i.e. returns + * the current value of `ps`). Assigning a new value to `process.title` modifies + * the current value of `ps`. + * + * When a new value is assigned, different platforms will impose different maximum + * length restrictions on the title. Usually such restrictions are quite limited. + * For instance, on Linux and macOS, `process.title` is limited to the size of the + * binary name plus the length of the command-line arguments because setting the`process.title` overwrites the `argv` memory of the process. Node.js v0.8 + * allowed for longer process title strings by also overwriting the `environ`memory but that was potentially insecure and confusing in some (rather obscure) + * cases. + * + * Assigning a value to `process.title` might not result in an accurate label + * within process manager applications such as macOS Activity Monitor or Windows + * Services Manager. + * @since v0.1.104 + */ + title: string; + /** + * The operating system CPU architecture for which the Node.js binary was compiled. + * Possible values are: `'arm'`, `'arm64'`, `'ia32'`, `'mips'`,`'mipsel'`, `'ppc'`,`'ppc64'`, `'riscv64'`, `'s390'`, `'s390x'`, and `'x64'`. + * + * ```js + * import { arch } from 'node:process'; + * + * console.log(`This processor architecture is ${arch}`); + * ``` + * @since v0.5.0 + */ + readonly arch: Architecture; + /** + * The `process.platform` property returns a string identifying the operating + * system platform for which the Node.js binary was compiled. + * + * Currently possible values are: + * + * * `'aix'` + * * `'darwin'` + * * `'freebsd'` + * * `'linux'` + * * `'openbsd'` + * * `'sunos'` + * * `'win32'` + * + * ```js + * import { platform } from 'node:process'; + * + * console.log(`This platform is ${platform}`); + * ``` + * + * The value `'android'` may also be returned if the Node.js is built on the + * Android operating system. However, Android support in Node.js [is experimental](https://github.com/nodejs/node/blob/HEAD/BUILDING.md#androidandroid-based-devices-eg-firefox-os). + * @since v0.1.16 + */ + readonly platform: Platform; + /** + * The `process.mainModule` property provides an alternative way of retrieving `require.main`. The difference is that if the main module changes at + * runtime, `require.main` may still refer to the original main module in + * modules that were required before the change occurred. Generally, it's + * safe to assume that the two refer to the same module. + * + * As with `require.main`, `process.mainModule` will be `undefined` if there + * is no entry script. + * @since v0.1.17 + * @deprecated Since v14.0.0 - Use `main` instead. + */ + mainModule?: Module | undefined; + memoryUsage: MemoryUsageFn; + /** + * Gets the amount of memory available to the process (in bytes) based on + * limits imposed by the OS. If there is no such constraint, or the constraint + * is unknown, `undefined` is returned. + * + * See [`uv_get_constrained_memory`](https://docs.libuv.org/en/v1.x/misc.html#c.uv_get_constrained_memory) for more + * information. + * @since v19.6.0, v18.15.0 + * @experimental + */ + constrainedMemory(): number | undefined; + /** + * The `process.cpuUsage()` method returns the user and system CPU time usage of + * the current process, in an object with properties `user` and `system`, whose + * values are microsecond values (millionth of a second). These values measure time + * spent in user and system code respectively, and may end up being greater than + * actual elapsed time if multiple CPU cores are performing work for this process. + * + * The result of a previous call to `process.cpuUsage()` can be passed as the + * argument to the function, to get a diff reading. + * + * ```js + * import { cpuUsage } from 'node:process'; + * + * const startUsage = cpuUsage(); + * // { user: 38579, system: 6986 } + * + * // spin the CPU for 500 milliseconds + * const now = Date.now(); + * while (Date.now() - now < 500); + * + * console.log(cpuUsage(startUsage)); + * // { user: 514883, system: 11226 } + * ``` + * @since v6.1.0 + * @param previousValue A previous return value from calling `process.cpuUsage()` + */ + cpuUsage(previousValue?: CpuUsage): CpuUsage; + /** + * `process.nextTick()` adds `callback` to the "next tick queue". This queue is + * fully drained after the current operation on the JavaScript stack runs to + * completion and before the event loop is allowed to continue. It's possible to + * create an infinite loop if one were to recursively call `process.nextTick()`. + * See the [Event Loop](https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/#process-nexttick) guide for more background. + * + * ```js + * import { nextTick } from 'node:process'; + * + * console.log('start'); + * nextTick(() => { + * console.log('nextTick callback'); + * }); + * console.log('scheduled'); + * // Output: + * // start + * // scheduled + * // nextTick callback + * ``` + * + * This is important when developing APIs in order to give users the opportunity + * to assign event handlers _after_ an object has been constructed but before any + * I/O has occurred: + * + * ```js + * import { nextTick } from 'node:process'; + * + * function MyThing(options) { + * this.setupOptions(options); + * + * nextTick(() => { + * this.startDoingStuff(); + * }); + * } + * + * const thing = new MyThing(); + * thing.getReadyForStuff(); + * + * // thing.startDoingStuff() gets called now, not before. + * ``` + * + * It is very important for APIs to be either 100% synchronous or 100% + * asynchronous. Consider this example: + * + * ```js + * // WARNING! DO NOT USE! BAD UNSAFE HAZARD! + * function maybeSync(arg, cb) { + * if (arg) { + * cb(); + * return; + * } + * + * fs.stat('file', cb); + * } + * ``` + * + * This API is hazardous because in the following case: + * + * ```js + * const maybeTrue = Math.random() > 0.5; + * + * maybeSync(maybeTrue, () => { + * foo(); + * }); + * + * bar(); + * ``` + * + * It is not clear whether `foo()` or `bar()` will be called first. + * + * The following approach is much better: + * + * ```js + * import { nextTick } from 'node:process'; + * + * function definitelyAsync(arg, cb) { + * if (arg) { + * nextTick(cb); + * return; + * } + * + * fs.stat('file', cb); + * } + * ``` + * @since v0.1.26 + * @param args Additional arguments to pass when invoking the `callback` + */ + nextTick(callback: Function, ...args: any[]): void; + /** + * The `process.release` property returns an `Object` containing metadata related + * to the current release, including URLs for the source tarball and headers-only + * tarball. + * + * `process.release` contains the following properties: + * + * ```js + * { + * name: 'node', + * lts: 'Hydrogen', + * sourceUrl: 'https://nodejs.org/download/release/v18.12.0/node-v18.12.0.tar.gz', + * headersUrl: 'https://nodejs.org/download/release/v18.12.0/node-v18.12.0-headers.tar.gz', + * libUrl: 'https://nodejs.org/download/release/v18.12.0/win-x64/node.lib' + * } + * ``` + * + * In custom builds from non-release versions of the source tree, only the`name` property may be present. The additional properties should not be + * relied upon to exist. + * @since v3.0.0 + */ + readonly release: ProcessRelease; + features: { + inspector: boolean; + debug: boolean; + uv: boolean; + ipv6: boolean; + tls_alpn: boolean; + tls_sni: boolean; + tls_ocsp: boolean; + tls: boolean; + }; + /** + * `process.umask()` returns the Node.js process's file mode creation mask. Child + * processes inherit the mask from the parent process. + * @since v0.1.19 + * @deprecated Calling `process.umask()` with no argument causes the process-wide umask to be written twice. This introduces a race condition between threads, and is a potential * + * security vulnerability. There is no safe, cross-platform alternative API. + */ + umask(): number; + /** + * Can only be set if not in worker thread. + */ + umask(mask: string | number): number; + /** + * The `process.uptime()` method returns the number of seconds the current Node.js + * process has been running. + * + * The return value includes fractions of a second. Use `Math.floor()` to get whole + * seconds. + * @since v0.5.0 + */ + uptime(): number; + hrtime: HRTime; + /** + * If Node.js is spawned with an IPC channel, the `process.send()` method can be + * used to send messages to the parent process. Messages will be received as a `'message'` event on the parent's `ChildProcess` object. + * + * If Node.js was not spawned with an IPC channel, `process.send` will be `undefined`. + * + * The message goes through serialization and parsing. The resulting message might + * not be the same as what is originally sent. + * @since v0.5.9 + * @param options used to parameterize the sending of certain types of handles.`options` supports the following properties: + */ + send?( + message: any, + sendHandle?: any, + options?: { + swallowErrors?: boolean | undefined; + }, + callback?: (error: Error | null) => void, + ): boolean; + /** + * If the Node.js process is spawned with an IPC channel (see the `Child Process` and `Cluster` documentation), the `process.disconnect()` method will close the + * IPC channel to the parent process, allowing the child process to exit gracefully + * once there are no other connections keeping it alive. + * + * The effect of calling `process.disconnect()` is the same as calling `ChildProcess.disconnect()` from the parent process. + * + * If the Node.js process was not spawned with an IPC channel,`process.disconnect()` will be `undefined`. + * @since v0.7.2 + */ + disconnect(): void; + /** + * If the Node.js process is spawned with an IPC channel (see the `Child Process` and `Cluster` documentation), the `process.connected` property will return`true` so long as the IPC + * channel is connected and will return `false` after`process.disconnect()` is called. + * + * Once `process.connected` is `false`, it is no longer possible to send messages + * over the IPC channel using `process.send()`. + * @since v0.7.2 + */ + connected: boolean; + /** + * The `process.allowedNodeEnvironmentFlags` property is a special, + * read-only `Set` of flags allowable within the `NODE_OPTIONS` environment variable. + * + * `process.allowedNodeEnvironmentFlags` extends `Set`, but overrides`Set.prototype.has` to recognize several different possible flag + * representations. `process.allowedNodeEnvironmentFlags.has()` will + * return `true` in the following cases: + * + * * Flags may omit leading single (`-`) or double (`--`) dashes; e.g.,`inspect-brk` for `--inspect-brk`, or `r` for `-r`. + * * Flags passed through to V8 (as listed in `--v8-options`) may replace + * one or more _non-leading_ dashes for an underscore, or vice-versa; + * e.g., `--perf_basic_prof`, `--perf-basic-prof`, `--perf_basic-prof`, + * etc. + * * Flags may contain one or more equals (`=`) characters; all + * characters after and including the first equals will be ignored; + * e.g., `--stack-trace-limit=100`. + * * Flags _must_ be allowable within `NODE_OPTIONS`. + * + * When iterating over `process.allowedNodeEnvironmentFlags`, flags will + * appear only _once_; each will begin with one or more dashes. Flags + * passed through to V8 will contain underscores instead of non-leading + * dashes: + * + * ```js + * import { allowedNodeEnvironmentFlags } from 'node:process'; + * + * allowedNodeEnvironmentFlags.forEach((flag) => { + * // -r + * // --inspect-brk + * // --abort_on_uncaught_exception + * // ... + * }); + * ``` + * + * The methods `add()`, `clear()`, and `delete()` of`process.allowedNodeEnvironmentFlags` do nothing, and will fail + * silently. + * + * If Node.js was compiled _without_ `NODE_OPTIONS` support (shown in {@link config}), `process.allowedNodeEnvironmentFlags` will + * contain what _would have_ been allowable. + * @since v10.10.0 + */ + allowedNodeEnvironmentFlags: ReadonlySet; + /** + * `process.report` is an object whose methods are used to generate diagnostic + * reports for the current process. Additional documentation is available in the `report documentation`. + * @since v11.8.0 + */ + report?: ProcessReport | undefined; + /** + * ```js + * import { resourceUsage } from 'node:process'; + * + * console.log(resourceUsage()); + * /* + * Will output: + * { + * userCPUTime: 82872, + * systemCPUTime: 4143, + * maxRSS: 33164, + * sharedMemorySize: 0, + * unsharedDataSize: 0, + * unsharedStackSize: 0, + * minorPageFault: 2469, + * majorPageFault: 0, + * swappedOut: 0, + * fsRead: 0, + * fsWrite: 8, + * ipcSent: 0, + * ipcReceived: 0, + * signalsCount: 0, + * voluntaryContextSwitches: 79, + * involuntaryContextSwitches: 1 + * } + * + * ``` + * @since v12.6.0 + * @return the resource usage for the current process. All of these values come from the `uv_getrusage` call which returns a [`uv_rusage_t` struct][uv_rusage_t]. + */ + resourceUsage(): ResourceUsage; + /** + * The `process.traceDeprecation` property indicates whether the`--trace-deprecation` flag is set on the current Node.js process. See the + * documentation for the `'warning' event` and the `emitWarning() method` for more information about this + * flag's behavior. + * @since v0.8.0 + */ + traceDeprecation: boolean; + /* EventEmitter */ + addListener(event: "beforeExit", listener: BeforeExitListener): this; + addListener(event: "disconnect", listener: DisconnectListener): this; + addListener(event: "exit", listener: ExitListener): this; + addListener(event: "rejectionHandled", listener: RejectionHandledListener): this; + addListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; + addListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; + addListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; + addListener(event: "warning", listener: WarningListener): this; + addListener(event: "message", listener: MessageListener): this; + addListener(event: Signals, listener: SignalsListener): this; + addListener(event: "multipleResolves", listener: MultipleResolveListener): this; + addListener(event: "worker", listener: WorkerListener): this; + emit(event: "beforeExit", code: number): boolean; + emit(event: "disconnect"): boolean; + emit(event: "exit", code: number): boolean; + emit(event: "rejectionHandled", promise: Promise): boolean; + emit(event: "uncaughtException", error: Error): boolean; + emit(event: "uncaughtExceptionMonitor", error: Error): boolean; + emit(event: "unhandledRejection", reason: unknown, promise: Promise): boolean; + emit(event: "warning", warning: Error): boolean; + emit(event: "message", message: unknown, sendHandle: unknown): this; + emit(event: Signals, signal?: Signals): boolean; + emit( + event: "multipleResolves", + type: MultipleResolveType, + promise: Promise, + value: unknown, + ): this; + emit(event: "worker", listener: WorkerListener): this; + on(event: "beforeExit", listener: BeforeExitListener): this; + on(event: "disconnect", listener: DisconnectListener): this; + on(event: "exit", listener: ExitListener): this; + on(event: "rejectionHandled", listener: RejectionHandledListener): this; + on(event: "uncaughtException", listener: UncaughtExceptionListener): this; + on(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; + on(event: "unhandledRejection", listener: UnhandledRejectionListener): this; + on(event: "warning", listener: WarningListener): this; + on(event: "message", listener: MessageListener): this; + on(event: Signals, listener: SignalsListener): this; + on(event: "multipleResolves", listener: MultipleResolveListener): this; + on(event: "worker", listener: WorkerListener): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "beforeExit", listener: BeforeExitListener): this; + once(event: "disconnect", listener: DisconnectListener): this; + once(event: "exit", listener: ExitListener): this; + once(event: "rejectionHandled", listener: RejectionHandledListener): this; + once(event: "uncaughtException", listener: UncaughtExceptionListener): this; + once(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; + once(event: "unhandledRejection", listener: UnhandledRejectionListener): this; + once(event: "warning", listener: WarningListener): this; + once(event: "message", listener: MessageListener): this; + once(event: Signals, listener: SignalsListener): this; + once(event: "multipleResolves", listener: MultipleResolveListener): this; + once(event: "worker", listener: WorkerListener): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "beforeExit", listener: BeforeExitListener): this; + prependListener(event: "disconnect", listener: DisconnectListener): this; + prependListener(event: "exit", listener: ExitListener): this; + prependListener(event: "rejectionHandled", listener: RejectionHandledListener): this; + prependListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; + prependListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; + prependListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; + prependListener(event: "warning", listener: WarningListener): this; + prependListener(event: "message", listener: MessageListener): this; + prependListener(event: Signals, listener: SignalsListener): this; + prependListener(event: "multipleResolves", listener: MultipleResolveListener): this; + prependListener(event: "worker", listener: WorkerListener): this; + prependOnceListener(event: "beforeExit", listener: BeforeExitListener): this; + prependOnceListener(event: "disconnect", listener: DisconnectListener): this; + prependOnceListener(event: "exit", listener: ExitListener): this; + prependOnceListener(event: "rejectionHandled", listener: RejectionHandledListener): this; + prependOnceListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; + prependOnceListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; + prependOnceListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; + prependOnceListener(event: "warning", listener: WarningListener): this; + prependOnceListener(event: "message", listener: MessageListener): this; + prependOnceListener(event: Signals, listener: SignalsListener): this; + prependOnceListener(event: "multipleResolves", listener: MultipleResolveListener): this; + prependOnceListener(event: "worker", listener: WorkerListener): this; + listeners(event: "beforeExit"): BeforeExitListener[]; + listeners(event: "disconnect"): DisconnectListener[]; + listeners(event: "exit"): ExitListener[]; + listeners(event: "rejectionHandled"): RejectionHandledListener[]; + listeners(event: "uncaughtException"): UncaughtExceptionListener[]; + listeners(event: "uncaughtExceptionMonitor"): UncaughtExceptionListener[]; + listeners(event: "unhandledRejection"): UnhandledRejectionListener[]; + listeners(event: "warning"): WarningListener[]; + listeners(event: "message"): MessageListener[]; + listeners(event: Signals): SignalsListener[]; + listeners(event: "multipleResolves"): MultipleResolveListener[]; + listeners(event: "worker"): WorkerListener[]; + } + } + } + export = process; +} +declare module "node:process" { + import process = require("process"); + export = process; +} diff --git a/node_modules/@types/node/punycode.d.ts b/node_modules/@types/node/punycode.d.ts new file mode 100644 index 00000000..64ddd3e6 --- /dev/null +++ b/node_modules/@types/node/punycode.d.ts @@ -0,0 +1,117 @@ +/** + * **The version of the punycode module bundled in Node.js is being deprecated.**In a future major version of Node.js this module will be removed. Users + * currently depending on the `punycode` module should switch to using the + * userland-provided [Punycode.js](https://github.com/bestiejs/punycode.js) module instead. For punycode-based URL + * encoding, see `url.domainToASCII` or, more generally, the `WHATWG URL API`. + * + * The `punycode` module is a bundled version of the [Punycode.js](https://github.com/bestiejs/punycode.js) module. It + * can be accessed using: + * + * ```js + * const punycode = require('punycode'); + * ``` + * + * [Punycode](https://tools.ietf.org/html/rfc3492) is a character encoding scheme defined by RFC 3492 that is + * primarily intended for use in Internationalized Domain Names. Because host + * names in URLs are limited to ASCII characters only, Domain Names that contain + * non-ASCII characters must be converted into ASCII using the Punycode scheme. + * For instance, the Japanese character that translates into the English word,`'example'` is `'例'`. The Internationalized Domain Name, `'例.com'` (equivalent + * to `'example.com'`) is represented by Punycode as the ASCII string`'xn--fsq.com'`. + * + * The `punycode` module provides a simple implementation of the Punycode standard. + * + * The `punycode` module is a third-party dependency used by Node.js and + * made available to developers as a convenience. Fixes or other modifications to + * the module must be directed to the [Punycode.js](https://github.com/bestiejs/punycode.js) project. + * @deprecated Since v7.0.0 - Deprecated + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/punycode.js) + */ +declare module "punycode" { + /** + * The `punycode.decode()` method converts a [Punycode](https://tools.ietf.org/html/rfc3492) string of ASCII-only + * characters to the equivalent string of Unicode codepoints. + * + * ```js + * punycode.decode('maana-pta'); // 'mañana' + * punycode.decode('--dqo34k'); // '☃-⌘' + * ``` + * @since v0.5.1 + */ + function decode(string: string): string; + /** + * The `punycode.encode()` method converts a string of Unicode codepoints to a [Punycode](https://tools.ietf.org/html/rfc3492) string of ASCII-only characters. + * + * ```js + * punycode.encode('mañana'); // 'maana-pta' + * punycode.encode('☃-⌘'); // '--dqo34k' + * ``` + * @since v0.5.1 + */ + function encode(string: string): string; + /** + * The `punycode.toUnicode()` method converts a string representing a domain name + * containing [Punycode](https://tools.ietf.org/html/rfc3492) encoded characters into Unicode. Only the [Punycode](https://tools.ietf.org/html/rfc3492) encoded parts of the domain name are be + * converted. + * + * ```js + * // decode domain names + * punycode.toUnicode('xn--maana-pta.com'); // 'mañana.com' + * punycode.toUnicode('xn----dqo34k.com'); // '☃-⌘.com' + * punycode.toUnicode('example.com'); // 'example.com' + * ``` + * @since v0.6.1 + */ + function toUnicode(domain: string): string; + /** + * The `punycode.toASCII()` method converts a Unicode string representing an + * Internationalized Domain Name to [Punycode](https://tools.ietf.org/html/rfc3492). Only the non-ASCII parts of the + * domain name will be converted. Calling `punycode.toASCII()` on a string that + * already only contains ASCII characters will have no effect. + * + * ```js + * // encode domain names + * punycode.toASCII('mañana.com'); // 'xn--maana-pta.com' + * punycode.toASCII('☃-⌘.com'); // 'xn----dqo34k.com' + * punycode.toASCII('example.com'); // 'example.com' + * ``` + * @since v0.6.1 + */ + function toASCII(domain: string): string; + /** + * @deprecated since v7.0.0 + * The version of the punycode module bundled in Node.js is being deprecated. + * In a future major version of Node.js this module will be removed. + * Users currently depending on the punycode module should switch to using + * the userland-provided Punycode.js module instead. + */ + const ucs2: ucs2; + interface ucs2 { + /** + * @deprecated since v7.0.0 + * The version of the punycode module bundled in Node.js is being deprecated. + * In a future major version of Node.js this module will be removed. + * Users currently depending on the punycode module should switch to using + * the userland-provided Punycode.js module instead. + */ + decode(string: string): number[]; + /** + * @deprecated since v7.0.0 + * The version of the punycode module bundled in Node.js is being deprecated. + * In a future major version of Node.js this module will be removed. + * Users currently depending on the punycode module should switch to using + * the userland-provided Punycode.js module instead. + */ + encode(codePoints: ReadonlyArray): string; + } + /** + * @deprecated since v7.0.0 + * The version of the punycode module bundled in Node.js is being deprecated. + * In a future major version of Node.js this module will be removed. + * Users currently depending on the punycode module should switch to using + * the userland-provided Punycode.js module instead. + */ + const version: string; +} +declare module "node:punycode" { + export * from "punycode"; +} diff --git a/node_modules/@types/node/querystring.d.ts b/node_modules/@types/node/querystring.d.ts new file mode 100644 index 00000000..388ebc33 --- /dev/null +++ b/node_modules/@types/node/querystring.d.ts @@ -0,0 +1,141 @@ +/** + * The `node:querystring` module provides utilities for parsing and formatting URL + * query strings. It can be accessed using: + * + * ```js + * const querystring = require('node:querystring'); + * ``` + * + * `querystring` is more performant than `URLSearchParams` but is not a + * standardized API. Use `URLSearchParams` when performance is not critical or + * when compatibility with browser code is desirable. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/querystring.js) + */ +declare module "querystring" { + interface StringifyOptions { + encodeURIComponent?: ((str: string) => string) | undefined; + } + interface ParseOptions { + maxKeys?: number | undefined; + decodeURIComponent?: ((str: string) => string) | undefined; + } + interface ParsedUrlQuery extends NodeJS.Dict {} + interface ParsedUrlQueryInput extends + NodeJS.Dict< + | string + | number + | boolean + | ReadonlyArray + | ReadonlyArray + | ReadonlyArray + | null + > + {} + /** + * The `querystring.stringify()` method produces a URL query string from a + * given `obj` by iterating through the object's "own properties". + * + * It serializes the following types of values passed in `obj`:[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | + * [number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) | + * [bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) | + * [boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) | + * [string\[\]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | + * [number\[\]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) | + * [bigint\[\]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) | + * [boolean\[\]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) The numeric values must be finite. Any other input values will be coerced to + * empty strings. + * + * ```js + * querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' }); + * // Returns 'foo=bar&baz=qux&baz=quux&corge=' + * + * querystring.stringify({ foo: 'bar', baz: 'qux' }, ';', ':'); + * // Returns 'foo:bar;baz:qux' + * ``` + * + * By default, characters requiring percent-encoding within the query string will + * be encoded as UTF-8\. If an alternative encoding is required, then an alternative`encodeURIComponent` option will need to be specified: + * + * ```js + * // Assuming gbkEncodeURIComponent function already exists, + * + * querystring.stringify({ w: '中文', foo: 'bar' }, null, null, + * { encodeURIComponent: gbkEncodeURIComponent }); + * ``` + * @since v0.1.25 + * @param obj The object to serialize into a URL query string + * @param [sep='&'] The substring used to delimit key and value pairs in the query string. + * @param [eq='='] . The substring used to delimit keys and values in the query string. + */ + function stringify(obj?: ParsedUrlQueryInput, sep?: string, eq?: string, options?: StringifyOptions): string; + /** + * The `querystring.parse()` method parses a URL query string (`str`) into a + * collection of key and value pairs. + * + * For example, the query string `'foo=bar&abc=xyz&abc=123'` is parsed into: + * + * ```js + * { + * foo: 'bar', + * abc: ['xyz', '123'] + * } + * ``` + * + * The object returned by the `querystring.parse()` method _does not_prototypically inherit from the JavaScript `Object`. This means that typical`Object` methods such as `obj.toString()`, + * `obj.hasOwnProperty()`, and others + * are not defined and _will not work_. + * + * By default, percent-encoded characters within the query string will be assumed + * to use UTF-8 encoding. If an alternative character encoding is used, then an + * alternative `decodeURIComponent` option will need to be specified: + * + * ```js + * // Assuming gbkDecodeURIComponent function already exists... + * + * querystring.parse('w=%D6%D0%CE%C4&foo=bar', null, null, + * { decodeURIComponent: gbkDecodeURIComponent }); + * ``` + * @since v0.1.25 + * @param str The URL query string to parse + * @param [sep='&'] The substring used to delimit key and value pairs in the query string. + * @param [eq='='] . The substring used to delimit keys and values in the query string. + */ + function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): ParsedUrlQuery; + /** + * The querystring.encode() function is an alias for querystring.stringify(). + */ + const encode: typeof stringify; + /** + * The querystring.decode() function is an alias for querystring.parse(). + */ + const decode: typeof parse; + /** + * The `querystring.escape()` method performs URL percent-encoding on the given`str` in a manner that is optimized for the specific requirements of URL + * query strings. + * + * The `querystring.escape()` method is used by `querystring.stringify()` and is + * generally not expected to be used directly. It is exported primarily to allow + * application code to provide a replacement percent-encoding implementation if + * necessary by assigning `querystring.escape` to an alternative function. + * @since v0.1.25 + */ + function escape(str: string): string; + /** + * The `querystring.unescape()` method performs decoding of URL percent-encoded + * characters on the given `str`. + * + * The `querystring.unescape()` method is used by `querystring.parse()` and is + * generally not expected to be used directly. It is exported primarily to allow + * application code to provide a replacement decoding implementation if + * necessary by assigning `querystring.unescape` to an alternative function. + * + * By default, the `querystring.unescape()` method will attempt to use the + * JavaScript built-in `decodeURIComponent()` method to decode. If that fails, + * a safer equivalent that does not throw on malformed URLs will be used. + * @since v0.1.25 + */ + function unescape(str: string): string; +} +declare module "node:querystring" { + export * from "querystring"; +} diff --git a/node_modules/@types/node/readline.d.ts b/node_modules/@types/node/readline.d.ts new file mode 100644 index 00000000..b06d58b8 --- /dev/null +++ b/node_modules/@types/node/readline.d.ts @@ -0,0 +1,539 @@ +/** + * The `node:readline` module provides an interface for reading data from a `Readable` stream (such as `process.stdin`) one line at a time. + * + * To use the promise-based APIs: + * + * ```js + * import * as readline from 'node:readline/promises'; + * ``` + * + * To use the callback and sync APIs: + * + * ```js + * import * as readline from 'node:readline'; + * ``` + * + * The following simple example illustrates the basic use of the `node:readline`module. + * + * ```js + * import * as readline from 'node:readline/promises'; + * import { stdin as input, stdout as output } from 'node:process'; + * + * const rl = readline.createInterface({ input, output }); + * + * const answer = await rl.question('What do you think of Node.js? '); + * + * console.log(`Thank you for your valuable feedback: ${answer}`); + * + * rl.close(); + * ``` + * + * Once this code is invoked, the Node.js application will not terminate until the`readline.Interface` is closed because the interface waits for data to be + * received on the `input` stream. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/readline.js) + */ +declare module "readline" { + import { Abortable, EventEmitter } from "node:events"; + import * as promises from "node:readline/promises"; + export { promises }; + export interface Key { + sequence?: string | undefined; + name?: string | undefined; + ctrl?: boolean | undefined; + meta?: boolean | undefined; + shift?: boolean | undefined; + } + /** + * Instances of the `readline.Interface` class are constructed using the`readline.createInterface()` method. Every instance is associated with a + * single `input` `Readable` stream and a single `output` `Writable` stream. + * The `output` stream is used to print prompts for user input that arrives on, + * and is read from, the `input` stream. + * @since v0.1.104 + */ + export class Interface extends EventEmitter { + readonly terminal: boolean; + /** + * The current input data being processed by node. + * + * This can be used when collecting input from a TTY stream to retrieve the + * current value that has been processed thus far, prior to the `line` event + * being emitted. Once the `line` event has been emitted, this property will + * be an empty string. + * + * Be aware that modifying the value during the instance runtime may have + * unintended consequences if `rl.cursor` is not also controlled. + * + * **If not using a TTY stream for input, use the `'line'` event.** + * + * One possible use case would be as follows: + * + * ```js + * const values = ['lorem ipsum', 'dolor sit amet']; + * const rl = readline.createInterface(process.stdin); + * const showResults = debounce(() => { + * console.log( + * '\n', + * values.filter((val) => val.startsWith(rl.line)).join(' '), + * ); + * }, 300); + * process.stdin.on('keypress', (c, k) => { + * showResults(); + * }); + * ``` + * @since v0.1.98 + */ + readonly line: string; + /** + * The cursor position relative to `rl.line`. + * + * This will track where the current cursor lands in the input string, when + * reading input from a TTY stream. The position of cursor determines the + * portion of the input string that will be modified as input is processed, + * as well as the column where the terminal caret will be rendered. + * @since v0.1.98 + */ + readonly cursor: number; + /** + * NOTE: According to the documentation: + * + * > Instances of the `readline.Interface` class are constructed using the + * > `readline.createInterface()` method. + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/readline.html#class-interfaceconstructor + */ + protected constructor( + input: NodeJS.ReadableStream, + output?: NodeJS.WritableStream, + completer?: Completer | AsyncCompleter, + terminal?: boolean, + ); + /** + * NOTE: According to the documentation: + * + * > Instances of the `readline.Interface` class are constructed using the + * > `readline.createInterface()` method. + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/readline.html#class-interfaceconstructor + */ + protected constructor(options: ReadLineOptions); + /** + * The `rl.getPrompt()` method returns the current prompt used by `rl.prompt()`. + * @since v15.3.0, v14.17.0 + * @return the current prompt string + */ + getPrompt(): string; + /** + * The `rl.setPrompt()` method sets the prompt that will be written to `output`whenever `rl.prompt()` is called. + * @since v0.1.98 + */ + setPrompt(prompt: string): void; + /** + * The `rl.prompt()` method writes the `Interface` instances configured`prompt` to a new line in `output` in order to provide a user with a new + * location at which to provide input. + * + * When called, `rl.prompt()` will resume the `input` stream if it has been + * paused. + * + * If the `Interface` was created with `output` set to `null` or`undefined` the prompt is not written. + * @since v0.1.98 + * @param preserveCursor If `true`, prevents the cursor placement from being reset to `0`. + */ + prompt(preserveCursor?: boolean): void; + /** + * The `rl.question()` method displays the `query` by writing it to the `output`, + * waits for user input to be provided on `input`, then invokes the `callback`function passing the provided input as the first argument. + * + * When called, `rl.question()` will resume the `input` stream if it has been + * paused. + * + * If the `Interface` was created with `output` set to `null` or`undefined` the `query` is not written. + * + * The `callback` function passed to `rl.question()` does not follow the typical + * pattern of accepting an `Error` object or `null` as the first argument. + * The `callback` is called with the provided answer as the only argument. + * + * An error will be thrown if calling `rl.question()` after `rl.close()`. + * + * Example usage: + * + * ```js + * rl.question('What is your favorite food? ', (answer) => { + * console.log(`Oh, so your favorite food is ${answer}`); + * }); + * ``` + * + * Using an `AbortController` to cancel a question. + * + * ```js + * const ac = new AbortController(); + * const signal = ac.signal; + * + * rl.question('What is your favorite food? ', { signal }, (answer) => { + * console.log(`Oh, so your favorite food is ${answer}`); + * }); + * + * signal.addEventListener('abort', () => { + * console.log('The food question timed out'); + * }, { once: true }); + * + * setTimeout(() => ac.abort(), 10000); + * ``` + * @since v0.3.3 + * @param query A statement or query to write to `output`, prepended to the prompt. + * @param callback A callback function that is invoked with the user's input in response to the `query`. + */ + question(query: string, callback: (answer: string) => void): void; + question(query: string, options: Abortable, callback: (answer: string) => void): void; + /** + * The `rl.pause()` method pauses the `input` stream, allowing it to be resumed + * later if necessary. + * + * Calling `rl.pause()` does not immediately pause other events (including`'line'`) from being emitted by the `Interface` instance. + * @since v0.3.4 + */ + pause(): this; + /** + * The `rl.resume()` method resumes the `input` stream if it has been paused. + * @since v0.3.4 + */ + resume(): this; + /** + * The `rl.close()` method closes the `Interface` instance and + * relinquishes control over the `input` and `output` streams. When called, + * the `'close'` event will be emitted. + * + * Calling `rl.close()` does not immediately stop other events (including `'line'`) + * from being emitted by the `Interface` instance. + * @since v0.1.98 + */ + close(): void; + /** + * The `rl.write()` method will write either `data` or a key sequence identified + * by `key` to the `output`. The `key` argument is supported only if `output` is + * a `TTY` text terminal. See `TTY keybindings` for a list of key + * combinations. + * + * If `key` is specified, `data` is ignored. + * + * When called, `rl.write()` will resume the `input` stream if it has been + * paused. + * + * If the `Interface` was created with `output` set to `null` or`undefined` the `data` and `key` are not written. + * + * ```js + * rl.write('Delete this!'); + * // Simulate Ctrl+U to delete the line written previously + * rl.write(null, { ctrl: true, name: 'u' }); + * ``` + * + * The `rl.write()` method will write the data to the `readline` `Interface`'s`input`_as if it were provided by the user_. + * @since v0.1.98 + */ + write(data: string | Buffer, key?: Key): void; + write(data: undefined | null | string | Buffer, key: Key): void; + /** + * Returns the real position of the cursor in relation to the input + * prompt + string. Long input (wrapping) strings, as well as multiple + * line prompts are included in the calculations. + * @since v13.5.0, v12.16.0 + */ + getCursorPos(): CursorPos; + /** + * events.EventEmitter + * 1. close + * 2. line + * 3. pause + * 4. resume + * 5. SIGCONT + * 6. SIGINT + * 7. SIGTSTP + * 8. history + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "line", listener: (input: string) => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: "SIGCONT", listener: () => void): this; + addListener(event: "SIGINT", listener: () => void): this; + addListener(event: "SIGTSTP", listener: () => void): this; + addListener(event: "history", listener: (history: string[]) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "line", input: string): boolean; + emit(event: "pause"): boolean; + emit(event: "resume"): boolean; + emit(event: "SIGCONT"): boolean; + emit(event: "SIGINT"): boolean; + emit(event: "SIGTSTP"): boolean; + emit(event: "history", history: string[]): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "close", listener: () => void): this; + on(event: "line", listener: (input: string) => void): this; + on(event: "pause", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: "SIGCONT", listener: () => void): this; + on(event: "SIGINT", listener: () => void): this; + on(event: "SIGTSTP", listener: () => void): this; + on(event: "history", listener: (history: string[]) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "line", listener: (input: string) => void): this; + once(event: "pause", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: "SIGCONT", listener: () => void): this; + once(event: "SIGINT", listener: () => void): this; + once(event: "SIGTSTP", listener: () => void): this; + once(event: "history", listener: (history: string[]) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "line", listener: (input: string) => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: "SIGCONT", listener: () => void): this; + prependListener(event: "SIGINT", listener: () => void): this; + prependListener(event: "SIGTSTP", listener: () => void): this; + prependListener(event: "history", listener: (history: string[]) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "line", listener: (input: string) => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: "SIGCONT", listener: () => void): this; + prependOnceListener(event: "SIGINT", listener: () => void): this; + prependOnceListener(event: "SIGTSTP", listener: () => void): this; + prependOnceListener(event: "history", listener: (history: string[]) => void): this; + [Symbol.asyncIterator](): AsyncIterableIterator; + } + export type ReadLine = Interface; // type forwarded for backwards compatibility + export type Completer = (line: string) => CompleterResult; + export type AsyncCompleter = ( + line: string, + callback: (err?: null | Error, result?: CompleterResult) => void, + ) => void; + export type CompleterResult = [string[], string]; + export interface ReadLineOptions { + input: NodeJS.ReadableStream; + output?: NodeJS.WritableStream | undefined; + completer?: Completer | AsyncCompleter | undefined; + terminal?: boolean | undefined; + /** + * Initial list of history lines. This option makes sense + * only if `terminal` is set to `true` by the user or by an internal `output` + * check, otherwise the history caching mechanism is not initialized at all. + * @default [] + */ + history?: string[] | undefined; + historySize?: number | undefined; + prompt?: string | undefined; + crlfDelay?: number | undefined; + /** + * If `true`, when a new input line added + * to the history list duplicates an older one, this removes the older line + * from the list. + * @default false + */ + removeHistoryDuplicates?: boolean | undefined; + escapeCodeTimeout?: number | undefined; + tabSize?: number | undefined; + } + /** + * The `readline.createInterface()` method creates a new `readline.Interface`instance. + * + * ```js + * const readline = require('node:readline'); + * const rl = readline.createInterface({ + * input: process.stdin, + * output: process.stdout, + * }); + * ``` + * + * Once the `readline.Interface` instance is created, the most common case is to + * listen for the `'line'` event: + * + * ```js + * rl.on('line', (line) => { + * console.log(`Received: ${line}`); + * }); + * ``` + * + * If `terminal` is `true` for this instance then the `output` stream will get + * the best compatibility if it defines an `output.columns` property and emits + * a `'resize'` event on the `output` if or when the columns ever change + * (`process.stdout` does this automatically when it is a TTY). + * + * When creating a `readline.Interface` using `stdin` as input, the program + * will not terminate until it receives an [EOF character](https://en.wikipedia.org/wiki/End-of-file#EOF_character). To exit without + * waiting for user input, call `process.stdin.unref()`. + * @since v0.1.98 + */ + export function createInterface( + input: NodeJS.ReadableStream, + output?: NodeJS.WritableStream, + completer?: Completer | AsyncCompleter, + terminal?: boolean, + ): Interface; + export function createInterface(options: ReadLineOptions): Interface; + /** + * The `readline.emitKeypressEvents()` method causes the given `Readable` stream to begin emitting `'keypress'` events corresponding to received input. + * + * Optionally, `interface` specifies a `readline.Interface` instance for which + * autocompletion is disabled when copy-pasted input is detected. + * + * If the `stream` is a `TTY`, then it must be in raw mode. + * + * This is automatically called by any readline instance on its `input` if the`input` is a terminal. Closing the `readline` instance does not stop + * the `input` from emitting `'keypress'` events. + * + * ```js + * readline.emitKeypressEvents(process.stdin); + * if (process.stdin.isTTY) + * process.stdin.setRawMode(true); + * ``` + * + * ## Example: Tiny CLI + * + * The following example illustrates the use of `readline.Interface` class to + * implement a small command-line interface: + * + * ```js + * const readline = require('node:readline'); + * const rl = readline.createInterface({ + * input: process.stdin, + * output: process.stdout, + * prompt: 'OHAI> ', + * }); + * + * rl.prompt(); + * + * rl.on('line', (line) => { + * switch (line.trim()) { + * case 'hello': + * console.log('world!'); + * break; + * default: + * console.log(`Say what? I might have heard '${line.trim()}'`); + * break; + * } + * rl.prompt(); + * }).on('close', () => { + * console.log('Have a great day!'); + * process.exit(0); + * }); + * ``` + * + * ## Example: Read file stream line-by-Line + * + * A common use case for `readline` is to consume an input file one line at a + * time. The easiest way to do so is leveraging the `fs.ReadStream` API as + * well as a `for await...of` loop: + * + * ```js + * const fs = require('node:fs'); + * const readline = require('node:readline'); + * + * async function processLineByLine() { + * const fileStream = fs.createReadStream('input.txt'); + * + * const rl = readline.createInterface({ + * input: fileStream, + * crlfDelay: Infinity, + * }); + * // Note: we use the crlfDelay option to recognize all instances of CR LF + * // ('\r\n') in input.txt as a single line break. + * + * for await (const line of rl) { + * // Each line in input.txt will be successively available here as `line`. + * console.log(`Line from file: ${line}`); + * } + * } + * + * processLineByLine(); + * ``` + * + * Alternatively, one could use the `'line'` event: + * + * ```js + * const fs = require('node:fs'); + * const readline = require('node:readline'); + * + * const rl = readline.createInterface({ + * input: fs.createReadStream('sample.txt'), + * crlfDelay: Infinity, + * }); + * + * rl.on('line', (line) => { + * console.log(`Line from file: ${line}`); + * }); + * ``` + * + * Currently, `for await...of` loop can be a bit slower. If `async` / `await`flow and speed are both essential, a mixed approach can be applied: + * + * ```js + * const { once } = require('node:events'); + * const { createReadStream } = require('node:fs'); + * const { createInterface } = require('node:readline'); + * + * (async function processLineByLine() { + * try { + * const rl = createInterface({ + * input: createReadStream('big-file.txt'), + * crlfDelay: Infinity, + * }); + * + * rl.on('line', (line) => { + * // Process the line. + * }); + * + * await once(rl, 'close'); + * + * console.log('File processed.'); + * } catch (err) { + * console.error(err); + * } + * })(); + * ``` + * @since v0.7.7 + */ + export function emitKeypressEvents(stream: NodeJS.ReadableStream, readlineInterface?: Interface): void; + export type Direction = -1 | 0 | 1; + export interface CursorPos { + rows: number; + cols: number; + } + /** + * The `readline.clearLine()` method clears current line of given `TTY` stream + * in a specified direction identified by `dir`. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if `stream` wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + export function clearLine(stream: NodeJS.WritableStream, dir: Direction, callback?: () => void): boolean; + /** + * The `readline.clearScreenDown()` method clears the given `TTY` stream from + * the current position of the cursor down. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if `stream` wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + export function clearScreenDown(stream: NodeJS.WritableStream, callback?: () => void): boolean; + /** + * The `readline.cursorTo()` method moves cursor to the specified position in a + * given `TTY` `stream`. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if `stream` wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + export function cursorTo(stream: NodeJS.WritableStream, x: number, y?: number, callback?: () => void): boolean; + /** + * The `readline.moveCursor()` method moves the cursor _relative_ to its current + * position in a given `TTY` `stream`. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if `stream` wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + export function moveCursor(stream: NodeJS.WritableStream, dx: number, dy: number, callback?: () => void): boolean; +} +declare module "node:readline" { + export * from "readline"; +} diff --git a/node_modules/@types/node/readline/promises.d.ts b/node_modules/@types/node/readline/promises.d.ts new file mode 100644 index 00000000..73fb1115 --- /dev/null +++ b/node_modules/@types/node/readline/promises.d.ts @@ -0,0 +1,150 @@ +/** + * @since v17.0.0 + * @experimental + */ +declare module "readline/promises" { + import { AsyncCompleter, Completer, Direction, Interface as _Interface, ReadLineOptions } from "node:readline"; + import { Abortable } from "node:events"; + /** + * Instances of the `readlinePromises.Interface` class are constructed using the`readlinePromises.createInterface()` method. Every instance is associated with a + * single `input` `Readable` stream and a single `output` `Writable` stream. + * The `output` stream is used to print prompts for user input that arrives on, + * and is read from, the `input` stream. + * @since v17.0.0 + */ + class Interface extends _Interface { + /** + * The `rl.question()` method displays the `query` by writing it to the `output`, + * waits for user input to be provided on `input`, then invokes the `callback`function passing the provided input as the first argument. + * + * When called, `rl.question()` will resume the `input` stream if it has been + * paused. + * + * If the `Interface` was created with `output` set to `null` or`undefined` the `query` is not written. + * + * If the question is called after `rl.close()`, it returns a rejected promise. + * + * Example usage: + * + * ```js + * const answer = await rl.question('What is your favorite food? '); + * console.log(`Oh, so your favorite food is ${answer}`); + * ``` + * + * Using an `AbortSignal` to cancel a question. + * + * ```js + * const signal = AbortSignal.timeout(10_000); + * + * signal.addEventListener('abort', () => { + * console.log('The food question timed out'); + * }, { once: true }); + * + * const answer = await rl.question('What is your favorite food? ', { signal }); + * console.log(`Oh, so your favorite food is ${answer}`); + * ``` + * @since v17.0.0 + * @param query A statement or query to write to `output`, prepended to the prompt. + * @return A promise that is fulfilled with the user's input in response to the `query`. + */ + question(query: string): Promise; + question(query: string, options: Abortable): Promise; + } + /** + * @since v17.0.0 + */ + class Readline { + /** + * @param stream A TTY stream. + */ + constructor( + stream: NodeJS.WritableStream, + options?: { + autoCommit?: boolean; + }, + ); + /** + * The `rl.clearLine()` method adds to the internal list of pending action an + * action that clears current line of the associated `stream` in a specified + * direction identified by `dir`. + * Call `rl.commit()` to see the effect of this method, unless `autoCommit: true`was passed to the constructor. + * @since v17.0.0 + * @return this + */ + clearLine(dir: Direction): this; + /** + * The `rl.clearScreenDown()` method adds to the internal list of pending action an + * action that clears the associated stream from the current position of the + * cursor down. + * Call `rl.commit()` to see the effect of this method, unless `autoCommit: true`was passed to the constructor. + * @since v17.0.0 + * @return this + */ + clearScreenDown(): this; + /** + * The `rl.commit()` method sends all the pending actions to the associated`stream` and clears the internal list of pending actions. + * @since v17.0.0 + */ + commit(): Promise; + /** + * The `rl.cursorTo()` method adds to the internal list of pending action an action + * that moves cursor to the specified position in the associated `stream`. + * Call `rl.commit()` to see the effect of this method, unless `autoCommit: true`was passed to the constructor. + * @since v17.0.0 + * @return this + */ + cursorTo(x: number, y?: number): this; + /** + * The `rl.moveCursor()` method adds to the internal list of pending action an + * action that moves the cursor _relative_ to its current position in the + * associated `stream`. + * Call `rl.commit()` to see the effect of this method, unless `autoCommit: true`was passed to the constructor. + * @since v17.0.0 + * @return this + */ + moveCursor(dx: number, dy: number): this; + /** + * The `rl.rollback` methods clears the internal list of pending actions without + * sending it to the associated `stream`. + * @since v17.0.0 + * @return this + */ + rollback(): this; + } + /** + * The `readlinePromises.createInterface()` method creates a new `readlinePromises.Interface`instance. + * + * ```js + * const readlinePromises = require('node:readline/promises'); + * const rl = readlinePromises.createInterface({ + * input: process.stdin, + * output: process.stdout, + * }); + * ``` + * + * Once the `readlinePromises.Interface` instance is created, the most common case + * is to listen for the `'line'` event: + * + * ```js + * rl.on('line', (line) => { + * console.log(`Received: ${line}`); + * }); + * ``` + * + * If `terminal` is `true` for this instance then the `output` stream will get + * the best compatibility if it defines an `output.columns` property and emits + * a `'resize'` event on the `output` if or when the columns ever change + * (`process.stdout` does this automatically when it is a TTY). + * @since v17.0.0 + */ + function createInterface( + input: NodeJS.ReadableStream, + output?: NodeJS.WritableStream, + completer?: Completer | AsyncCompleter, + terminal?: boolean, + ): Interface; + function createInterface(options: ReadLineOptions): Interface; +} +declare module "node:readline/promises" { + export * from "readline/promises"; +} diff --git a/node_modules/@types/node/repl.d.ts b/node_modules/@types/node/repl.d.ts new file mode 100644 index 00000000..6c5f81b3 --- /dev/null +++ b/node_modules/@types/node/repl.d.ts @@ -0,0 +1,430 @@ +/** + * The `node:repl` module provides a Read-Eval-Print-Loop (REPL) implementation + * that is available both as a standalone program or includible in other + * applications. It can be accessed using: + * + * ```js + * const repl = require('node:repl'); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/repl.js) + */ +declare module "repl" { + import { AsyncCompleter, Completer, Interface } from "node:readline"; + import { Context } from "node:vm"; + import { InspectOptions } from "node:util"; + interface ReplOptions { + /** + * The input prompt to display. + * @default "> " + */ + prompt?: string | undefined; + /** + * The `Readable` stream from which REPL input will be read. + * @default process.stdin + */ + input?: NodeJS.ReadableStream | undefined; + /** + * The `Writable` stream to which REPL output will be written. + * @default process.stdout + */ + output?: NodeJS.WritableStream | undefined; + /** + * If `true`, specifies that the output should be treated as a TTY terminal, and have + * ANSI/VT100 escape codes written to it. + * Default: checking the value of the `isTTY` property on the output stream upon + * instantiation. + */ + terminal?: boolean | undefined; + /** + * The function to be used when evaluating each given line of input. + * Default: an async wrapper for the JavaScript `eval()` function. An `eval` function can + * error with `repl.Recoverable` to indicate the input was incomplete and prompt for + * additional lines. + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_default_evaluation + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_custom_evaluation_functions + */ + eval?: REPLEval | undefined; + /** + * Defines if the repl prints output previews or not. + * @default `true` Always `false` in case `terminal` is falsy. + */ + preview?: boolean | undefined; + /** + * If `true`, specifies that the default `writer` function should include ANSI color + * styling to REPL output. If a custom `writer` function is provided then this has no + * effect. + * Default: the REPL instance's `terminal` value. + */ + useColors?: boolean | undefined; + /** + * If `true`, specifies that the default evaluation function will use the JavaScript + * `global` as the context as opposed to creating a new separate context for the REPL + * instance. The node CLI REPL sets this value to `true`. + * Default: `false`. + */ + useGlobal?: boolean | undefined; + /** + * If `true`, specifies that the default writer will not output the return value of a + * command if it evaluates to `undefined`. + * Default: `false`. + */ + ignoreUndefined?: boolean | undefined; + /** + * The function to invoke to format the output of each command before writing to `output`. + * Default: a wrapper for `util.inspect`. + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_customizing_repl_output + */ + writer?: REPLWriter | undefined; + /** + * An optional function used for custom Tab auto completion. + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/readline.html#readline_use_of_the_completer_function + */ + completer?: Completer | AsyncCompleter | undefined; + /** + * A flag that specifies whether the default evaluator executes all JavaScript commands in + * strict mode or default (sloppy) mode. + * Accepted values are: + * - `repl.REPL_MODE_SLOPPY` - evaluates expressions in sloppy mode. + * - `repl.REPL_MODE_STRICT` - evaluates expressions in strict mode. This is equivalent to + * prefacing every repl statement with `'use strict'`. + */ + replMode?: typeof REPL_MODE_SLOPPY | typeof REPL_MODE_STRICT | undefined; + /** + * Stop evaluating the current piece of code when `SIGINT` is received, i.e. `Ctrl+C` is + * pressed. This cannot be used together with a custom `eval` function. + * Default: `false`. + */ + breakEvalOnSigint?: boolean | undefined; + } + type REPLEval = ( + this: REPLServer, + evalCmd: string, + context: Context, + file: string, + cb: (err: Error | null, result: any) => void, + ) => void; + type REPLWriter = (this: REPLServer, obj: any) => string; + /** + * This is the default "writer" value, if none is passed in the REPL options, + * and it can be overridden by custom print functions. + */ + const writer: REPLWriter & { + options: InspectOptions; + }; + type REPLCommandAction = (this: REPLServer, text: string) => void; + interface REPLCommand { + /** + * Help text to be displayed when `.help` is entered. + */ + help?: string | undefined; + /** + * The function to execute, optionally accepting a single string argument. + */ + action: REPLCommandAction; + } + /** + * Instances of `repl.REPLServer` are created using the {@link start} method + * or directly using the JavaScript `new` keyword. + * + * ```js + * const repl = require('node:repl'); + * + * const options = { useColors: true }; + * + * const firstInstance = repl.start(options); + * const secondInstance = new repl.REPLServer(options); + * ``` + * @since v0.1.91 + */ + class REPLServer extends Interface { + /** + * The `vm.Context` provided to the `eval` function to be used for JavaScript + * evaluation. + */ + readonly context: Context; + /** + * @deprecated since v14.3.0 - Use `input` instead. + */ + readonly inputStream: NodeJS.ReadableStream; + /** + * @deprecated since v14.3.0 - Use `output` instead. + */ + readonly outputStream: NodeJS.WritableStream; + /** + * The `Readable` stream from which REPL input will be read. + */ + readonly input: NodeJS.ReadableStream; + /** + * The `Writable` stream to which REPL output will be written. + */ + readonly output: NodeJS.WritableStream; + /** + * The commands registered via `replServer.defineCommand()`. + */ + readonly commands: NodeJS.ReadOnlyDict; + /** + * A value indicating whether the REPL is currently in "editor mode". + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_commands_and_special_keys + */ + readonly editorMode: boolean; + /** + * A value indicating whether the `_` variable has been assigned. + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable + */ + readonly underscoreAssigned: boolean; + /** + * The last evaluation result from the REPL (assigned to the `_` variable inside of the REPL). + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable + */ + readonly last: any; + /** + * A value indicating whether the `_error` variable has been assigned. + * + * @since v9.8.0 + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable + */ + readonly underscoreErrAssigned: boolean; + /** + * The last error raised inside the REPL (assigned to the `_error` variable inside of the REPL). + * + * @since v9.8.0 + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable + */ + readonly lastError: any; + /** + * Specified in the REPL options, this is the function to be used when evaluating each + * given line of input. If not specified in the REPL options, this is an async wrapper + * for the JavaScript `eval()` function. + */ + readonly eval: REPLEval; + /** + * Specified in the REPL options, this is a value indicating whether the default + * `writer` function should include ANSI color styling to REPL output. + */ + readonly useColors: boolean; + /** + * Specified in the REPL options, this is a value indicating whether the default `eval` + * function will use the JavaScript `global` as the context as opposed to creating a new + * separate context for the REPL instance. + */ + readonly useGlobal: boolean; + /** + * Specified in the REPL options, this is a value indicating whether the default `writer` + * function should output the result of a command if it evaluates to `undefined`. + */ + readonly ignoreUndefined: boolean; + /** + * Specified in the REPL options, this is the function to invoke to format the output of + * each command before writing to `outputStream`. If not specified in the REPL options, + * this will be a wrapper for `util.inspect`. + */ + readonly writer: REPLWriter; + /** + * Specified in the REPL options, this is the function to use for custom Tab auto-completion. + */ + readonly completer: Completer | AsyncCompleter; + /** + * Specified in the REPL options, this is a flag that specifies whether the default `eval` + * function should execute all JavaScript commands in strict mode or default (sloppy) mode. + * Possible values are: + * - `repl.REPL_MODE_SLOPPY` - evaluates expressions in sloppy mode. + * - `repl.REPL_MODE_STRICT` - evaluates expressions in strict mode. This is equivalent to + * prefacing every repl statement with `'use strict'`. + */ + readonly replMode: typeof REPL_MODE_SLOPPY | typeof REPL_MODE_STRICT; + /** + * NOTE: According to the documentation: + * + * > Instances of `repl.REPLServer` are created using the `repl.start()` method and + * > _should not_ be created directly using the JavaScript `new` keyword. + * + * `REPLServer` cannot be subclassed due to implementation specifics in NodeJS. + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_class_replserver + */ + private constructor(); + /** + * The `replServer.defineCommand()` method is used to add new `.`\-prefixed commands + * to the REPL instance. Such commands are invoked by typing a `.` followed by the`keyword`. The `cmd` is either a `Function` or an `Object` with the following + * properties: + * + * The following example shows two new commands added to the REPL instance: + * + * ```js + * const repl = require('node:repl'); + * + * const replServer = repl.start({ prompt: '> ' }); + * replServer.defineCommand('sayhello', { + * help: 'Say hello', + * action(name) { + * this.clearBufferedCommand(); + * console.log(`Hello, ${name}!`); + * this.displayPrompt(); + * }, + * }); + * replServer.defineCommand('saybye', function saybye() { + * console.log('Goodbye!'); + * this.close(); + * }); + * ``` + * + * The new commands can then be used from within the REPL instance: + * + * ```console + * > .sayhello Node.js User + * Hello, Node.js User! + * > .saybye + * Goodbye! + * ``` + * @since v0.3.0 + * @param keyword The command keyword (_without_ a leading `.` character). + * @param cmd The function to invoke when the command is processed. + */ + defineCommand(keyword: string, cmd: REPLCommandAction | REPLCommand): void; + /** + * The `replServer.displayPrompt()` method readies the REPL instance for input + * from the user, printing the configured `prompt` to a new line in the `output`and resuming the `input` to accept new input. + * + * When multi-line input is being entered, an ellipsis is printed rather than the + * 'prompt'. + * + * When `preserveCursor` is `true`, the cursor placement will not be reset to `0`. + * + * The `replServer.displayPrompt` method is primarily intended to be called from + * within the action function for commands registered using the`replServer.defineCommand()` method. + * @since v0.1.91 + */ + displayPrompt(preserveCursor?: boolean): void; + /** + * The `replServer.clearBufferedCommand()` method clears any command that has been + * buffered but not yet executed. This method is primarily intended to be + * called from within the action function for commands registered using the`replServer.defineCommand()` method. + * @since v9.0.0 + */ + clearBufferedCommand(): void; + /** + * Initializes a history log file for the REPL instance. When executing the + * Node.js binary and using the command-line REPL, a history file is initialized + * by default. However, this is not the case when creating a REPL + * programmatically. Use this method to initialize a history log file when working + * with REPL instances programmatically. + * @since v11.10.0 + * @param historyPath the path to the history file + * @param callback called when history writes are ready or upon error + */ + setupHistory(path: string, callback: (err: Error | null, repl: this) => void): void; + /** + * events.EventEmitter + * 1. close - inherited from `readline.Interface` + * 2. line - inherited from `readline.Interface` + * 3. pause - inherited from `readline.Interface` + * 4. resume - inherited from `readline.Interface` + * 5. SIGCONT - inherited from `readline.Interface` + * 6. SIGINT - inherited from `readline.Interface` + * 7. SIGTSTP - inherited from `readline.Interface` + * 8. exit + * 9. reset + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "line", listener: (input: string) => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: "SIGCONT", listener: () => void): this; + addListener(event: "SIGINT", listener: () => void): this; + addListener(event: "SIGTSTP", listener: () => void): this; + addListener(event: "exit", listener: () => void): this; + addListener(event: "reset", listener: (context: Context) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "line", input: string): boolean; + emit(event: "pause"): boolean; + emit(event: "resume"): boolean; + emit(event: "SIGCONT"): boolean; + emit(event: "SIGINT"): boolean; + emit(event: "SIGTSTP"): boolean; + emit(event: "exit"): boolean; + emit(event: "reset", context: Context): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "close", listener: () => void): this; + on(event: "line", listener: (input: string) => void): this; + on(event: "pause", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: "SIGCONT", listener: () => void): this; + on(event: "SIGINT", listener: () => void): this; + on(event: "SIGTSTP", listener: () => void): this; + on(event: "exit", listener: () => void): this; + on(event: "reset", listener: (context: Context) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "line", listener: (input: string) => void): this; + once(event: "pause", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: "SIGCONT", listener: () => void): this; + once(event: "SIGINT", listener: () => void): this; + once(event: "SIGTSTP", listener: () => void): this; + once(event: "exit", listener: () => void): this; + once(event: "reset", listener: (context: Context) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "line", listener: (input: string) => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: "SIGCONT", listener: () => void): this; + prependListener(event: "SIGINT", listener: () => void): this; + prependListener(event: "SIGTSTP", listener: () => void): this; + prependListener(event: "exit", listener: () => void): this; + prependListener(event: "reset", listener: (context: Context) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "line", listener: (input: string) => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: "SIGCONT", listener: () => void): this; + prependOnceListener(event: "SIGINT", listener: () => void): this; + prependOnceListener(event: "SIGTSTP", listener: () => void): this; + prependOnceListener(event: "exit", listener: () => void): this; + prependOnceListener(event: "reset", listener: (context: Context) => void): this; + } + /** + * A flag passed in the REPL options. Evaluates expressions in sloppy mode. + */ + const REPL_MODE_SLOPPY: unique symbol; + /** + * A flag passed in the REPL options. Evaluates expressions in strict mode. + * This is equivalent to prefacing every repl statement with `'use strict'`. + */ + const REPL_MODE_STRICT: unique symbol; + /** + * The `repl.start()` method creates and starts a {@link REPLServer} instance. + * + * If `options` is a string, then it specifies the input prompt: + * + * ```js + * const repl = require('node:repl'); + * + * // a Unix style prompt + * repl.start('$ '); + * ``` + * @since v0.1.91 + */ + function start(options?: string | ReplOptions): REPLServer; + /** + * Indicates a recoverable error that a `REPLServer` can use to support multi-line input. + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_recoverable_errors + */ + class Recoverable extends SyntaxError { + err: Error; + constructor(err: Error); + } +} +declare module "node:repl" { + export * from "repl"; +} diff --git a/node_modules/@types/node/stream.d.ts b/node_modules/@types/node/stream.d.ts new file mode 100644 index 00000000..15c633fc --- /dev/null +++ b/node_modules/@types/node/stream.d.ts @@ -0,0 +1,1701 @@ +/** + * A stream is an abstract interface for working with streaming data in Node.js. + * The `node:stream` module provides an API for implementing the stream interface. + * + * There are many stream objects provided by Node.js. For instance, a `request to an HTTP server` and `process.stdout` are both stream instances. + * + * Streams can be readable, writable, or both. All streams are instances of `EventEmitter`. + * + * To access the `node:stream` module: + * + * ```js + * const stream = require('node:stream'); + * ``` + * + * The `node:stream` module is useful for creating new types of stream instances. + * It is usually not necessary to use the `node:stream` module to consume streams. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/stream.js) + */ +declare module "stream" { + import { Abortable, EventEmitter } from "node:events"; + import { Blob as NodeBlob } from "node:buffer"; + import * as streamPromises from "node:stream/promises"; + import * as streamConsumers from "node:stream/consumers"; + import * as streamWeb from "node:stream/web"; + + type ComposeFnParam = (source: any) => void; + + class internal extends EventEmitter { + pipe( + destination: T, + options?: { + end?: boolean | undefined; + }, + ): T; + compose( + stream: T | ComposeFnParam | Iterable | AsyncIterable, + options?: { signal: AbortSignal }, + ): T; + } + import Stream = internal.Stream; + import Readable = internal.Readable; + import ReadableOptions = internal.ReadableOptions; + interface ArrayOptions { + /** the maximum concurrent invocations of `fn` to call on the stream at once. **Default: 1**. */ + concurrency?: number; + /** allows destroying the stream if the signal is aborted. */ + signal?: AbortSignal; + } + class ReadableBase extends Stream implements NodeJS.ReadableStream { + /** + * A utility method for creating Readable Streams out of iterators. + */ + static from(iterable: Iterable | AsyncIterable, options?: ReadableOptions): Readable; + /** + * Returns whether the stream has been read from or cancelled. + * @since v16.8.0 + */ + static isDisturbed(stream: Readable | NodeJS.ReadableStream): boolean; + /** + * Returns whether the stream was destroyed or errored before emitting `'end'`. + * @since v16.8.0 + * @experimental + */ + readonly readableAborted: boolean; + /** + * Is `true` if it is safe to call `readable.read()`, which means + * the stream has not been destroyed or emitted `'error'` or `'end'`. + * @since v11.4.0 + */ + readable: boolean; + /** + * Returns whether `'data'` has been emitted. + * @since v16.7.0, v14.18.0 + * @experimental + */ + readonly readableDidRead: boolean; + /** + * Getter for the property `encoding` of a given `Readable` stream. The `encoding`property can be set using the `readable.setEncoding()` method. + * @since v12.7.0 + */ + readonly readableEncoding: BufferEncoding | null; + /** + * Becomes `true` when `'end'` event is emitted. + * @since v12.9.0 + */ + readonly readableEnded: boolean; + /** + * This property reflects the current state of a `Readable` stream as described + * in the `Three states` section. + * @since v9.4.0 + */ + readonly readableFlowing: boolean | null; + /** + * Returns the value of `highWaterMark` passed when creating this `Readable`. + * @since v9.3.0 + */ + readonly readableHighWaterMark: number; + /** + * This property contains the number of bytes (or objects) in the queue + * ready to be read. The value provides introspection data regarding + * the status of the `highWaterMark`. + * @since v9.4.0 + */ + readonly readableLength: number; + /** + * Getter for the property `objectMode` of a given `Readable` stream. + * @since v12.3.0 + */ + readonly readableObjectMode: boolean; + /** + * Is `true` after `readable.destroy()` has been called. + * @since v8.0.0 + */ + destroyed: boolean; + /** + * Is `true` after `'close'` has been emitted. + * @since v18.0.0 + */ + readonly closed: boolean; + /** + * Returns error if the stream has been destroyed with an error. + * @since v18.0.0 + */ + readonly errored: Error | null; + constructor(opts?: ReadableOptions); + _construct?(callback: (error?: Error | null) => void): void; + _read(size: number): void; + /** + * The `readable.read()` method reads data out of the internal buffer and + * returns it. If no data is available to be read, `null` is returned. By default, + * the data is returned as a `Buffer` object unless an encoding has been + * specified using the `readable.setEncoding()` method or the stream is operating + * in object mode. + * + * The optional `size` argument specifies a specific number of bytes to read. If`size` bytes are not available to be read, `null` will be returned _unless_the stream has ended, in which + * case all of the data remaining in the internal + * buffer will be returned. + * + * If the `size` argument is not specified, all of the data contained in the + * internal buffer will be returned. + * + * The `size` argument must be less than or equal to 1 GiB. + * + * The `readable.read()` method should only be called on `Readable` streams + * operating in paused mode. In flowing mode, `readable.read()` is called + * automatically until the internal buffer is fully drained. + * + * ```js + * const readable = getReadableStreamSomehow(); + * + * // 'readable' may be triggered multiple times as data is buffered in + * readable.on('readable', () => { + * let chunk; + * console.log('Stream is readable (new data received in buffer)'); + * // Use a loop to make sure we read all currently available data + * while (null !== (chunk = readable.read())) { + * console.log(`Read ${chunk.length} bytes of data...`); + * } + * }); + * + * // 'end' will be triggered once when there is no more data available + * readable.on('end', () => { + * console.log('Reached end of stream.'); + * }); + * ``` + * + * Each call to `readable.read()` returns a chunk of data, or `null`. The chunks + * are not concatenated. A `while` loop is necessary to consume all data + * currently in the buffer. When reading a large file `.read()` may return `null`, + * having consumed all buffered content so far, but there is still more data to + * come not yet buffered. In this case a new `'readable'` event will be emitted + * when there is more data in the buffer. Finally the `'end'` event will be + * emitted when there is no more data to come. + * + * Therefore to read a file's whole contents from a `readable`, it is necessary + * to collect chunks across multiple `'readable'` events: + * + * ```js + * const chunks = []; + * + * readable.on('readable', () => { + * let chunk; + * while (null !== (chunk = readable.read())) { + * chunks.push(chunk); + * } + * }); + * + * readable.on('end', () => { + * const content = chunks.join(''); + * }); + * ``` + * + * A `Readable` stream in object mode will always return a single item from + * a call to `readable.read(size)`, regardless of the value of the`size` argument. + * + * If the `readable.read()` method returns a chunk of data, a `'data'` event will + * also be emitted. + * + * Calling {@link read} after the `'end'` event has + * been emitted will return `null`. No runtime error will be raised. + * @since v0.9.4 + * @param size Optional argument to specify how much data to read. + */ + read(size?: number): any; + /** + * The `readable.setEncoding()` method sets the character encoding for + * data read from the `Readable` stream. + * + * By default, no encoding is assigned and stream data will be returned as`Buffer` objects. Setting an encoding causes the stream data + * to be returned as strings of the specified encoding rather than as `Buffer`objects. For instance, calling `readable.setEncoding('utf8')` will cause the + * output data to be interpreted as UTF-8 data, and passed as strings. Calling`readable.setEncoding('hex')` will cause the data to be encoded in hexadecimal + * string format. + * + * The `Readable` stream will properly handle multi-byte characters delivered + * through the stream that would otherwise become improperly decoded if simply + * pulled from the stream as `Buffer` objects. + * + * ```js + * const readable = getReadableStreamSomehow(); + * readable.setEncoding('utf8'); + * readable.on('data', (chunk) => { + * assert.equal(typeof chunk, 'string'); + * console.log('Got %d characters of string data:', chunk.length); + * }); + * ``` + * @since v0.9.4 + * @param encoding The encoding to use. + */ + setEncoding(encoding: BufferEncoding): this; + /** + * The `readable.pause()` method will cause a stream in flowing mode to stop + * emitting `'data'` events, switching out of flowing mode. Any data that + * becomes available will remain in the internal buffer. + * + * ```js + * const readable = getReadableStreamSomehow(); + * readable.on('data', (chunk) => { + * console.log(`Received ${chunk.length} bytes of data.`); + * readable.pause(); + * console.log('There will be no additional data for 1 second.'); + * setTimeout(() => { + * console.log('Now data will start flowing again.'); + * readable.resume(); + * }, 1000); + * }); + * ``` + * + * The `readable.pause()` method has no effect if there is a `'readable'`event listener. + * @since v0.9.4 + */ + pause(): this; + /** + * The `readable.resume()` method causes an explicitly paused `Readable` stream to + * resume emitting `'data'` events, switching the stream into flowing mode. + * + * The `readable.resume()` method can be used to fully consume the data from a + * stream without actually processing any of that data: + * + * ```js + * getReadableStreamSomehow() + * .resume() + * .on('end', () => { + * console.log('Reached the end, but did not read anything.'); + * }); + * ``` + * + * The `readable.resume()` method has no effect if there is a `'readable'`event listener. + * @since v0.9.4 + */ + resume(): this; + /** + * The `readable.isPaused()` method returns the current operating state of the`Readable`. This is used primarily by the mechanism that underlies the`readable.pipe()` method. In most + * typical cases, there will be no reason to + * use this method directly. + * + * ```js + * const readable = new stream.Readable(); + * + * readable.isPaused(); // === false + * readable.pause(); + * readable.isPaused(); // === true + * readable.resume(); + * readable.isPaused(); // === false + * ``` + * @since v0.11.14 + */ + isPaused(): boolean; + /** + * The `readable.unpipe()` method detaches a `Writable` stream previously attached + * using the {@link pipe} method. + * + * If the `destination` is not specified, then _all_ pipes are detached. + * + * If the `destination` is specified, but no pipe is set up for it, then + * the method does nothing. + * + * ```js + * const fs = require('node:fs'); + * const readable = getReadableStreamSomehow(); + * const writable = fs.createWriteStream('file.txt'); + * // All the data from readable goes into 'file.txt', + * // but only for the first second. + * readable.pipe(writable); + * setTimeout(() => { + * console.log('Stop writing to file.txt.'); + * readable.unpipe(writable); + * console.log('Manually close the file stream.'); + * writable.end(); + * }, 1000); + * ``` + * @since v0.9.4 + * @param destination Optional specific stream to unpipe + */ + unpipe(destination?: NodeJS.WritableStream): this; + /** + * Passing `chunk` as `null` signals the end of the stream (EOF) and behaves the + * same as `readable.push(null)`, after which no more data can be written. The EOF + * signal is put at the end of the buffer and any buffered data will still be + * flushed. + * + * The `readable.unshift()` method pushes a chunk of data back into the internal + * buffer. This is useful in certain situations where a stream is being consumed by + * code that needs to "un-consume" some amount of data that it has optimistically + * pulled out of the source, so that the data can be passed on to some other party. + * + * The `stream.unshift(chunk)` method cannot be called after the `'end'` event + * has been emitted or a runtime error will be thrown. + * + * Developers using `stream.unshift()` often should consider switching to + * use of a `Transform` stream instead. See the `API for stream implementers` section for more information. + * + * ```js + * // Pull off a header delimited by \n\n. + * // Use unshift() if we get too much. + * // Call the callback with (error, header, stream). + * const { StringDecoder } = require('node:string_decoder'); + * function parseHeader(stream, callback) { + * stream.on('error', callback); + * stream.on('readable', onReadable); + * const decoder = new StringDecoder('utf8'); + * let header = ''; + * function onReadable() { + * let chunk; + * while (null !== (chunk = stream.read())) { + * const str = decoder.write(chunk); + * if (str.includes('\n\n')) { + * // Found the header boundary. + * const split = str.split(/\n\n/); + * header += split.shift(); + * const remaining = split.join('\n\n'); + * const buf = Buffer.from(remaining, 'utf8'); + * stream.removeListener('error', callback); + * // Remove the 'readable' listener before unshifting. + * stream.removeListener('readable', onReadable); + * if (buf.length) + * stream.unshift(buf); + * // Now the body of the message can be read from the stream. + * callback(null, header, stream); + * return; + * } + * // Still reading the header. + * header += str; + * } + * } + * } + * ``` + * + * Unlike {@link push}, `stream.unshift(chunk)` will not + * end the reading process by resetting the internal reading state of the stream. + * This can cause unexpected results if `readable.unshift()` is called during a + * read (i.e. from within a {@link _read} implementation on a + * custom stream). Following the call to `readable.unshift()` with an immediate {@link push} will reset the reading state appropriately, + * however it is best to simply avoid calling `readable.unshift()` while in the + * process of performing a read. + * @since v0.9.11 + * @param chunk Chunk of data to unshift onto the read queue. For streams not operating in object mode, `chunk` must be a string, `Buffer`, `Uint8Array`, or `null`. For object mode + * streams, `chunk` may be any JavaScript value. + * @param encoding Encoding of string chunks. Must be a valid `Buffer` encoding, such as `'utf8'` or `'ascii'`. + */ + unshift(chunk: any, encoding?: BufferEncoding): void; + /** + * Prior to Node.js 0.10, streams did not implement the entire `node:stream`module API as it is currently defined. (See `Compatibility` for more + * information.) + * + * When using an older Node.js library that emits `'data'` events and has a {@link pause} method that is advisory only, the`readable.wrap()` method can be used to create a `Readable` + * stream that uses + * the old stream as its data source. + * + * It will rarely be necessary to use `readable.wrap()` but the method has been + * provided as a convenience for interacting with older Node.js applications and + * libraries. + * + * ```js + * const { OldReader } = require('./old-api-module.js'); + * const { Readable } = require('node:stream'); + * const oreader = new OldReader(); + * const myReader = new Readable().wrap(oreader); + * + * myReader.on('readable', () => { + * myReader.read(); // etc. + * }); + * ``` + * @since v0.9.4 + * @param stream An "old style" readable stream + */ + wrap(stream: NodeJS.ReadableStream): this; + push(chunk: any, encoding?: BufferEncoding): boolean; + /** + * The iterator created by this method gives users the option to cancel the destruction + * of the stream if the `for await...of` loop is exited by `return`, `break`, or `throw`, + * or if the iterator should destroy the stream if the stream emitted an error during iteration. + * @since v16.3.0 + * @param options.destroyOnReturn When set to `false`, calling `return` on the async iterator, + * or exiting a `for await...of` iteration using a `break`, `return`, or `throw` will not destroy the stream. + * **Default: `true`**. + */ + iterator(options?: { destroyOnReturn?: boolean }): AsyncIterableIterator; + /** + * This method allows mapping over the stream. The *fn* function will be called for every chunk in the stream. + * If the *fn* function returns a promise - that promise will be `await`ed before being passed to the result stream. + * @since v17.4.0, v16.14.0 + * @param fn a function to map over every chunk in the stream. Async or not. + * @returns a stream mapped with the function *fn*. + */ + map(fn: (data: any, options?: Pick) => any, options?: ArrayOptions): Readable; + /** + * This method allows filtering the stream. For each chunk in the stream the *fn* function will be called + * and if it returns a truthy value, the chunk will be passed to the result stream. + * If the *fn* function returns a promise - that promise will be `await`ed. + * @since v17.4.0, v16.14.0 + * @param fn a function to filter chunks from the stream. Async or not. + * @returns a stream filtered with the predicate *fn*. + */ + filter( + fn: (data: any, options?: Pick) => boolean | Promise, + options?: ArrayOptions, + ): Readable; + /** + * This method allows iterating a stream. For each chunk in the stream the *fn* function will be called. + * If the *fn* function returns a promise - that promise will be `await`ed. + * + * This method is different from `for await...of` loops in that it can optionally process chunks concurrently. + * In addition, a `forEach` iteration can only be stopped by having passed a `signal` option + * and aborting the related AbortController while `for await...of` can be stopped with `break` or `return`. + * In either case the stream will be destroyed. + * + * This method is different from listening to the `'data'` event in that it uses the `readable` event + * in the underlying machinary and can limit the number of concurrent *fn* calls. + * @since v17.5.0 + * @param fn a function to call on each chunk of the stream. Async or not. + * @returns a promise for when the stream has finished. + */ + forEach( + fn: (data: any, options?: Pick) => void | Promise, + options?: ArrayOptions, + ): Promise; + /** + * This method allows easily obtaining the contents of a stream. + * + * As this method reads the entire stream into memory, it negates the benefits of streams. It's intended + * for interoperability and convenience, not as the primary way to consume streams. + * @since v17.5.0 + * @returns a promise containing an array with the contents of the stream. + */ + toArray(options?: Pick): Promise; + /** + * This method is similar to `Array.prototype.some` and calls *fn* on each chunk in the stream + * until the awaited return value is `true` (or any truthy value). Once an *fn* call on a chunk + * `await`ed return value is truthy, the stream is destroyed and the promise is fulfilled with `true`. + * If none of the *fn* calls on the chunks return a truthy value, the promise is fulfilled with `false`. + * @since v17.5.0 + * @param fn a function to call on each chunk of the stream. Async or not. + * @returns a promise evaluating to `true` if *fn* returned a truthy value for at least one of the chunks. + */ + some( + fn: (data: any, options?: Pick) => boolean | Promise, + options?: ArrayOptions, + ): Promise; + /** + * This method is similar to `Array.prototype.find` and calls *fn* on each chunk in the stream + * to find a chunk with a truthy value for *fn*. Once an *fn* call's awaited return value is truthy, + * the stream is destroyed and the promise is fulfilled with value for which *fn* returned a truthy value. + * If all of the *fn* calls on the chunks return a falsy value, the promise is fulfilled with `undefined`. + * @since v17.5.0 + * @param fn a function to call on each chunk of the stream. Async or not. + * @returns a promise evaluating to the first chunk for which *fn* evaluated with a truthy value, + * or `undefined` if no element was found. + */ + find( + fn: (data: any, options?: Pick) => data is T, + options?: ArrayOptions, + ): Promise; + find( + fn: (data: any, options?: Pick) => boolean | Promise, + options?: ArrayOptions, + ): Promise; + /** + * This method is similar to `Array.prototype.every` and calls *fn* on each chunk in the stream + * to check if all awaited return values are truthy value for *fn*. Once an *fn* call on a chunk + * `await`ed return value is falsy, the stream is destroyed and the promise is fulfilled with `false`. + * If all of the *fn* calls on the chunks return a truthy value, the promise is fulfilled with `true`. + * @since v17.5.0 + * @param fn a function to call on each chunk of the stream. Async or not. + * @returns a promise evaluating to `true` if *fn* returned a truthy value for every one of the chunks. + */ + every( + fn: (data: any, options?: Pick) => boolean | Promise, + options?: ArrayOptions, + ): Promise; + /** + * This method returns a new stream by applying the given callback to each chunk of the stream + * and then flattening the result. + * + * It is possible to return a stream or another iterable or async iterable from *fn* and the result streams + * will be merged (flattened) into the returned stream. + * @since v17.5.0 + * @param fn a function to map over every chunk in the stream. May be async. May be a stream or generator. + * @returns a stream flat-mapped with the function *fn*. + */ + flatMap(fn: (data: any, options?: Pick) => any, options?: ArrayOptions): Readable; + /** + * This method returns a new stream with the first *limit* chunks dropped from the start. + * @since v17.5.0 + * @param limit the number of chunks to drop from the readable. + * @returns a stream with *limit* chunks dropped from the start. + */ + drop(limit: number, options?: Pick): Readable; + /** + * This method returns a new stream with the first *limit* chunks. + * @since v17.5.0 + * @param limit the number of chunks to take from the readable. + * @returns a stream with *limit* chunks taken. + */ + take(limit: number, options?: Pick): Readable; + /** + * This method returns a new stream with chunks of the underlying stream paired with a counter + * in the form `[index, chunk]`. The first index value is `0` and it increases by 1 for each chunk produced. + * @since v17.5.0 + * @returns a stream of indexed pairs. + */ + asIndexedPairs(options?: Pick): Readable; + /** + * This method calls *fn* on each chunk of the stream in order, passing it the result from the calculation + * on the previous element. It returns a promise for the final value of the reduction. + * + * If no *initial* value is supplied the first chunk of the stream is used as the initial value. + * If the stream is empty, the promise is rejected with a `TypeError` with the `ERR_INVALID_ARGS` code property. + * + * The reducer function iterates the stream element-by-element which means that there is no *concurrency* parameter + * or parallelism. To perform a reduce concurrently, you can extract the async function to `readable.map` method. + * @since v17.5.0 + * @param fn a reducer function to call over every chunk in the stream. Async or not. + * @param initial the initial value to use in the reduction. + * @returns a promise for the final value of the reduction. + */ + reduce( + fn: (previous: any, data: any, options?: Pick) => T, + initial?: undefined, + options?: Pick, + ): Promise; + reduce( + fn: (previous: T, data: any, options?: Pick) => T, + initial: T, + options?: Pick, + ): Promise; + _destroy(error: Error | null, callback: (error?: Error | null) => void): void; + /** + * Destroy the stream. Optionally emit an `'error'` event, and emit a `'close'`event (unless `emitClose` is set to `false`). After this call, the readable + * stream will release any internal resources and subsequent calls to `push()`will be ignored. + * + * Once `destroy()` has been called any further calls will be a no-op and no + * further errors except from `_destroy()` may be emitted as `'error'`. + * + * Implementors should not override this method, but instead implement `readable._destroy()`. + * @since v8.0.0 + * @param error Error which will be passed as payload in `'error'` event + */ + destroy(error?: Error): this; + /** + * Event emitter + * The defined events on documents including: + * 1. close + * 2. data + * 3. end + * 4. error + * 5. pause + * 6. readable + * 7. resume + */ + addListener(event: "close", listener: () => void): this; + addListener(event: "data", listener: (chunk: any) => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "readable", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "close"): boolean; + emit(event: "data", chunk: any): boolean; + emit(event: "end"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "pause"): boolean; + emit(event: "readable"): boolean; + emit(event: "resume"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "close", listener: () => void): this; + on(event: "data", listener: (chunk: any) => void): this; + on(event: "end", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "pause", listener: () => void): this; + on(event: "readable", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "data", listener: (chunk: any) => void): this; + once(event: "end", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "pause", listener: () => void): this; + once(event: "readable", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "data", listener: (chunk: any) => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "readable", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "data", listener: (chunk: any) => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "readable", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + removeListener(event: "close", listener: () => void): this; + removeListener(event: "data", listener: (chunk: any) => void): this; + removeListener(event: "end", listener: () => void): this; + removeListener(event: "error", listener: (err: Error) => void): this; + removeListener(event: "pause", listener: () => void): this; + removeListener(event: "readable", listener: () => void): this; + removeListener(event: "resume", listener: () => void): this; + removeListener(event: string | symbol, listener: (...args: any[]) => void): this; + [Symbol.asyncIterator](): AsyncIterableIterator; + /** + * Calls `readable.destroy()` with an `AbortError` and returns a promise that fulfills when the stream is finished. + * @since v20.4.0 + */ + [Symbol.asyncDispose](): Promise; + } + import WritableOptions = internal.WritableOptions; + class WritableBase extends Stream implements NodeJS.WritableStream { + /** + * Is `true` if it is safe to call `writable.write()`, which means + * the stream has not been destroyed, errored, or ended. + * @since v11.4.0 + */ + readonly writable: boolean; + /** + * Is `true` after `writable.end()` has been called. This property + * does not indicate whether the data has been flushed, for this use `writable.writableFinished` instead. + * @since v12.9.0 + */ + readonly writableEnded: boolean; + /** + * Is set to `true` immediately before the `'finish'` event is emitted. + * @since v12.6.0 + */ + readonly writableFinished: boolean; + /** + * Return the value of `highWaterMark` passed when creating this `Writable`. + * @since v9.3.0 + */ + readonly writableHighWaterMark: number; + /** + * This property contains the number of bytes (or objects) in the queue + * ready to be written. The value provides introspection data regarding + * the status of the `highWaterMark`. + * @since v9.4.0 + */ + readonly writableLength: number; + /** + * Getter for the property `objectMode` of a given `Writable` stream. + * @since v12.3.0 + */ + readonly writableObjectMode: boolean; + /** + * Number of times `writable.uncork()` needs to be + * called in order to fully uncork the stream. + * @since v13.2.0, v12.16.0 + */ + readonly writableCorked: number; + /** + * Is `true` after `writable.destroy()` has been called. + * @since v8.0.0 + */ + destroyed: boolean; + /** + * Is `true` after `'close'` has been emitted. + * @since v18.0.0 + */ + readonly closed: boolean; + /** + * Returns error if the stream has been destroyed with an error. + * @since v18.0.0 + */ + readonly errored: Error | null; + /** + * Is `true` if the stream's buffer has been full and stream will emit `'drain'`. + * @since v15.2.0, v14.17.0 + */ + readonly writableNeedDrain: boolean; + constructor(opts?: WritableOptions); + _write(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; + _writev?( + chunks: Array<{ + chunk: any; + encoding: BufferEncoding; + }>, + callback: (error?: Error | null) => void, + ): void; + _construct?(callback: (error?: Error | null) => void): void; + _destroy(error: Error | null, callback: (error?: Error | null) => void): void; + _final(callback: (error?: Error | null) => void): void; + /** + * The `writable.write()` method writes some data to the stream, and calls the + * supplied `callback` once the data has been fully handled. If an error + * occurs, the `callback` will be called with the error as its + * first argument. The `callback` is called asynchronously and before `'error'` is + * emitted. + * + * The return value is `true` if the internal buffer is less than the`highWaterMark` configured when the stream was created after admitting `chunk`. + * If `false` is returned, further attempts to write data to the stream should + * stop until the `'drain'` event is emitted. + * + * While a stream is not draining, calls to `write()` will buffer `chunk`, and + * return false. Once all currently buffered chunks are drained (accepted for + * delivery by the operating system), the `'drain'` event will be emitted. + * Once `write()` returns false, do not write more chunks + * until the `'drain'` event is emitted. While calling `write()` on a stream that + * is not draining is allowed, Node.js will buffer all written chunks until + * maximum memory usage occurs, at which point it will abort unconditionally. + * Even before it aborts, high memory usage will cause poor garbage collector + * performance and high RSS (which is not typically released back to the system, + * even after the memory is no longer required). Since TCP sockets may never + * drain if the remote peer does not read the data, writing a socket that is + * not draining may lead to a remotely exploitable vulnerability. + * + * Writing data while the stream is not draining is particularly + * problematic for a `Transform`, because the `Transform` streams are paused + * by default until they are piped or a `'data'` or `'readable'` event handler + * is added. + * + * If the data to be written can be generated or fetched on demand, it is + * recommended to encapsulate the logic into a `Readable` and use {@link pipe}. However, if calling `write()` is preferred, it is + * possible to respect backpressure and avoid memory issues using the `'drain'` event: + * + * ```js + * function write(data, cb) { + * if (!stream.write(data)) { + * stream.once('drain', cb); + * } else { + * process.nextTick(cb); + * } + * } + * + * // Wait for cb to be called before doing any other write. + * write('hello', () => { + * console.log('Write completed, do more writes now.'); + * }); + * ``` + * + * A `Writable` stream in object mode will always ignore the `encoding` argument. + * @since v0.9.4 + * @param chunk Optional data to write. For streams not operating in object mode, `chunk` must be a string, `Buffer` or `Uint8Array`. For object mode streams, `chunk` may be any + * JavaScript value other than `null`. + * @param [encoding='utf8'] The encoding, if `chunk` is a string. + * @param callback Callback for when this chunk of data is flushed. + * @return `false` if the stream wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + write(chunk: any, callback?: (error: Error | null | undefined) => void): boolean; + write(chunk: any, encoding: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean; + /** + * The `writable.setDefaultEncoding()` method sets the default `encoding` for a `Writable` stream. + * @since v0.11.15 + * @param encoding The new default encoding + */ + setDefaultEncoding(encoding: BufferEncoding): this; + /** + * Calling the `writable.end()` method signals that no more data will be written + * to the `Writable`. The optional `chunk` and `encoding` arguments allow one + * final additional chunk of data to be written immediately before closing the + * stream. + * + * Calling the {@link write} method after calling {@link end} will raise an error. + * + * ```js + * // Write 'hello, ' and then end with 'world!'. + * const fs = require('node:fs'); + * const file = fs.createWriteStream('example.txt'); + * file.write('hello, '); + * file.end('world!'); + * // Writing more now is not allowed! + * ``` + * @since v0.9.4 + * @param chunk Optional data to write. For streams not operating in object mode, `chunk` must be a string, `Buffer` or `Uint8Array`. For object mode streams, `chunk` may be any + * JavaScript value other than `null`. + * @param encoding The encoding if `chunk` is a string + * @param callback Callback for when the stream is finished. + */ + end(cb?: () => void): this; + end(chunk: any, cb?: () => void): this; + end(chunk: any, encoding: BufferEncoding, cb?: () => void): this; + /** + * The `writable.cork()` method forces all written data to be buffered in memory. + * The buffered data will be flushed when either the {@link uncork} or {@link end} methods are called. + * + * The primary intent of `writable.cork()` is to accommodate a situation in which + * several small chunks are written to the stream in rapid succession. Instead of + * immediately forwarding them to the underlying destination, `writable.cork()`buffers all the chunks until `writable.uncork()` is called, which will pass them + * all to `writable._writev()`, if present. This prevents a head-of-line blocking + * situation where data is being buffered while waiting for the first small chunk + * to be processed. However, use of `writable.cork()` without implementing`writable._writev()` may have an adverse effect on throughput. + * + * See also: `writable.uncork()`, `writable._writev()`. + * @since v0.11.2 + */ + cork(): void; + /** + * The `writable.uncork()` method flushes all data buffered since {@link cork} was called. + * + * When using `writable.cork()` and `writable.uncork()` to manage the buffering + * of writes to a stream, defer calls to `writable.uncork()` using`process.nextTick()`. Doing so allows batching of all`writable.write()` calls that occur within a given Node.js event + * loop phase. + * + * ```js + * stream.cork(); + * stream.write('some '); + * stream.write('data '); + * process.nextTick(() => stream.uncork()); + * ``` + * + * If the `writable.cork()` method is called multiple times on a stream, the + * same number of calls to `writable.uncork()` must be called to flush the buffered + * data. + * + * ```js + * stream.cork(); + * stream.write('some '); + * stream.cork(); + * stream.write('data '); + * process.nextTick(() => { + * stream.uncork(); + * // The data will not be flushed until uncork() is called a second time. + * stream.uncork(); + * }); + * ``` + * + * See also: `writable.cork()`. + * @since v0.11.2 + */ + uncork(): void; + /** + * Destroy the stream. Optionally emit an `'error'` event, and emit a `'close'`event (unless `emitClose` is set to `false`). After this call, the writable + * stream has ended and subsequent calls to `write()` or `end()` will result in + * an `ERR_STREAM_DESTROYED` error. + * This is a destructive and immediate way to destroy a stream. Previous calls to`write()` may not have drained, and may trigger an `ERR_STREAM_DESTROYED` error. + * Use `end()` instead of destroy if data should flush before close, or wait for + * the `'drain'` event before destroying the stream. + * + * Once `destroy()` has been called any further calls will be a no-op and no + * further errors except from `_destroy()` may be emitted as `'error'`. + * + * Implementors should not override this method, + * but instead implement `writable._destroy()`. + * @since v8.0.0 + * @param error Optional, an error to emit with `'error'` event. + */ + destroy(error?: Error): this; + /** + * Event emitter + * The defined events on documents including: + * 1. close + * 2. drain + * 3. error + * 4. finish + * 5. pipe + * 6. unpipe + */ + addListener(event: "close", listener: () => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "pipe", listener: (src: Readable) => void): this; + addListener(event: "unpipe", listener: (src: Readable) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "close"): boolean; + emit(event: "drain"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "finish"): boolean; + emit(event: "pipe", src: Readable): boolean; + emit(event: "unpipe", src: Readable): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "close", listener: () => void): this; + on(event: "drain", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "pipe", listener: (src: Readable) => void): this; + on(event: "unpipe", listener: (src: Readable) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "drain", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "pipe", listener: (src: Readable) => void): this; + once(event: "unpipe", listener: (src: Readable) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "pipe", listener: (src: Readable) => void): this; + prependListener(event: "unpipe", listener: (src: Readable) => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; + prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + removeListener(event: "close", listener: () => void): this; + removeListener(event: "drain", listener: () => void): this; + removeListener(event: "error", listener: (err: Error) => void): this; + removeListener(event: "finish", listener: () => void): this; + removeListener(event: "pipe", listener: (src: Readable) => void): this; + removeListener(event: "unpipe", listener: (src: Readable) => void): this; + removeListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + namespace internal { + class Stream extends internal { + constructor(opts?: ReadableOptions); + } + interface StreamOptions extends Abortable { + emitClose?: boolean | undefined; + highWaterMark?: number | undefined; + objectMode?: boolean | undefined; + construct?(this: T, callback: (error?: Error | null) => void): void; + destroy?(this: T, error: Error | null, callback: (error: Error | null) => void): void; + autoDestroy?: boolean | undefined; + } + interface ReadableOptions extends StreamOptions { + encoding?: BufferEncoding | undefined; + read?(this: Readable, size: number): void; + } + /** + * @since v0.9.4 + */ + class Readable extends ReadableBase { + /** + * A utility method for creating a `Readable` from a web `ReadableStream`. + * @since v17.0.0 + * @experimental + */ + static fromWeb( + readableStream: streamWeb.ReadableStream, + options?: Pick, + ): Readable; + /** + * A utility method for creating a web `ReadableStream` from a `Readable`. + * @since v17.0.0 + * @experimental + */ + static toWeb(streamReadable: Readable): streamWeb.ReadableStream; + } + interface WritableOptions extends StreamOptions { + decodeStrings?: boolean | undefined; + defaultEncoding?: BufferEncoding | undefined; + write?( + this: Writable, + chunk: any, + encoding: BufferEncoding, + callback: (error?: Error | null) => void, + ): void; + writev?( + this: Writable, + chunks: Array<{ + chunk: any; + encoding: BufferEncoding; + }>, + callback: (error?: Error | null) => void, + ): void; + final?(this: Writable, callback: (error?: Error | null) => void): void; + } + /** + * @since v0.9.4 + */ + class Writable extends WritableBase { + /** + * A utility method for creating a `Writable` from a web `WritableStream`. + * @since v17.0.0 + * @experimental + */ + static fromWeb( + writableStream: streamWeb.WritableStream, + options?: Pick, + ): Writable; + /** + * A utility method for creating a web `WritableStream` from a `Writable`. + * @since v17.0.0 + * @experimental + */ + static toWeb(streamWritable: Writable): streamWeb.WritableStream; + } + interface DuplexOptions extends ReadableOptions, WritableOptions { + allowHalfOpen?: boolean | undefined; + readableObjectMode?: boolean | undefined; + writableObjectMode?: boolean | undefined; + readableHighWaterMark?: number | undefined; + writableHighWaterMark?: number | undefined; + writableCorked?: number | undefined; + construct?(this: Duplex, callback: (error?: Error | null) => void): void; + read?(this: Duplex, size: number): void; + write?(this: Duplex, chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; + writev?( + this: Duplex, + chunks: Array<{ + chunk: any; + encoding: BufferEncoding; + }>, + callback: (error?: Error | null) => void, + ): void; + final?(this: Duplex, callback: (error?: Error | null) => void): void; + destroy?(this: Duplex, error: Error | null, callback: (error: Error | null) => void): void; + } + /** + * Duplex streams are streams that implement both the `Readable` and `Writable` interfaces. + * + * Examples of `Duplex` streams include: + * + * * `TCP sockets` + * * `zlib streams` + * * `crypto streams` + * @since v0.9.4 + */ + class Duplex extends ReadableBase implements WritableBase { + readonly writable: boolean; + readonly writableEnded: boolean; + readonly writableFinished: boolean; + readonly writableHighWaterMark: number; + readonly writableLength: number; + readonly writableObjectMode: boolean; + readonly writableCorked: number; + readonly writableNeedDrain: boolean; + readonly closed: boolean; + readonly errored: Error | null; + /** + * If `false` then the stream will automatically end the writable side when the + * readable side ends. Set initially by the `allowHalfOpen` constructor option, + * which defaults to `true`. + * + * This can be changed manually to change the half-open behavior of an existing`Duplex` stream instance, but must be changed before the `'end'` event is + * emitted. + * @since v0.9.4 + */ + allowHalfOpen: boolean; + constructor(opts?: DuplexOptions); + /** + * A utility method for creating duplex streams. + * + * - `Stream` converts writable stream into writable `Duplex` and readable stream + * to `Duplex`. + * - `Blob` converts into readable `Duplex`. + * - `string` converts into readable `Duplex`. + * - `ArrayBuffer` converts into readable `Duplex`. + * - `AsyncIterable` converts into a readable `Duplex`. Cannot yield `null`. + * - `AsyncGeneratorFunction` converts into a readable/writable transform + * `Duplex`. Must take a source `AsyncIterable` as first parameter. Cannot yield + * `null`. + * - `AsyncFunction` converts into a writable `Duplex`. Must return + * either `null` or `undefined` + * - `Object ({ writable, readable })` converts `readable` and + * `writable` into `Stream` and then combines them into `Duplex` where the + * `Duplex` will write to the `writable` and read from the `readable`. + * - `Promise` converts into readable `Duplex`. Value `null` is ignored. + * + * @since v16.8.0 + */ + static from( + src: + | Stream + | NodeBlob + | ArrayBuffer + | string + | Iterable + | AsyncIterable + | AsyncGeneratorFunction + | Promise + | Object, + ): Duplex; + _write(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; + _writev?( + chunks: Array<{ + chunk: any; + encoding: BufferEncoding; + }>, + callback: (error?: Error | null) => void, + ): void; + _destroy(error: Error | null, callback: (error: Error | null) => void): void; + _final(callback: (error?: Error | null) => void): void; + write(chunk: any, encoding?: BufferEncoding, cb?: (error: Error | null | undefined) => void): boolean; + write(chunk: any, cb?: (error: Error | null | undefined) => void): boolean; + setDefaultEncoding(encoding: BufferEncoding): this; + end(cb?: () => void): this; + end(chunk: any, cb?: () => void): this; + end(chunk: any, encoding?: BufferEncoding, cb?: () => void): this; + cork(): void; + uncork(): void; + /** + * A utility method for creating a web `ReadableStream` and `WritableStream` from a `Duplex`. + * @since v17.0.0 + * @experimental + */ + static toWeb(streamDuplex: Duplex): { + readable: streamWeb.ReadableStream; + writable: streamWeb.WritableStream; + }; + /** + * A utility method for creating a `Duplex` from a web `ReadableStream` and `WritableStream`. + * @since v17.0.0 + * @experimental + */ + static fromWeb( + duplexStream: { + readable: streamWeb.ReadableStream; + writable: streamWeb.WritableStream; + }, + options?: Pick< + DuplexOptions, + "allowHalfOpen" | "decodeStrings" | "encoding" | "highWaterMark" | "objectMode" | "signal" + >, + ): Duplex; + /** + * Event emitter + * The defined events on documents including: + * 1. close + * 2. data + * 3. drain + * 4. end + * 5. error + * 6. finish + * 7. pause + * 8. pipe + * 9. readable + * 10. resume + * 11. unpipe + */ + addListener(event: "close", listener: () => void): this; + addListener(event: "data", listener: (chunk: any) => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "pipe", listener: (src: Readable) => void): this; + addListener(event: "readable", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: "unpipe", listener: (src: Readable) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "close"): boolean; + emit(event: "data", chunk: any): boolean; + emit(event: "drain"): boolean; + emit(event: "end"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "finish"): boolean; + emit(event: "pause"): boolean; + emit(event: "pipe", src: Readable): boolean; + emit(event: "readable"): boolean; + emit(event: "resume"): boolean; + emit(event: "unpipe", src: Readable): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "close", listener: () => void): this; + on(event: "data", listener: (chunk: any) => void): this; + on(event: "drain", listener: () => void): this; + on(event: "end", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "pause", listener: () => void): this; + on(event: "pipe", listener: (src: Readable) => void): this; + on(event: "readable", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: "unpipe", listener: (src: Readable) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "data", listener: (chunk: any) => void): this; + once(event: "drain", listener: () => void): this; + once(event: "end", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "pause", listener: () => void): this; + once(event: "pipe", listener: (src: Readable) => void): this; + once(event: "readable", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: "unpipe", listener: (src: Readable) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "data", listener: (chunk: any) => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "pipe", listener: (src: Readable) => void): this; + prependListener(event: "readable", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: "unpipe", listener: (src: Readable) => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "data", listener: (chunk: any) => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; + prependOnceListener(event: "readable", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + removeListener(event: "close", listener: () => void): this; + removeListener(event: "data", listener: (chunk: any) => void): this; + removeListener(event: "drain", listener: () => void): this; + removeListener(event: "end", listener: () => void): this; + removeListener(event: "error", listener: (err: Error) => void): this; + removeListener(event: "finish", listener: () => void): this; + removeListener(event: "pause", listener: () => void): this; + removeListener(event: "pipe", listener: (src: Readable) => void): this; + removeListener(event: "readable", listener: () => void): this; + removeListener(event: "resume", listener: () => void): this; + removeListener(event: "unpipe", listener: (src: Readable) => void): this; + removeListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + type TransformCallback = (error?: Error | null, data?: any) => void; + interface TransformOptions extends DuplexOptions { + construct?(this: Transform, callback: (error?: Error | null) => void): void; + read?(this: Transform, size: number): void; + write?( + this: Transform, + chunk: any, + encoding: BufferEncoding, + callback: (error?: Error | null) => void, + ): void; + writev?( + this: Transform, + chunks: Array<{ + chunk: any; + encoding: BufferEncoding; + }>, + callback: (error?: Error | null) => void, + ): void; + final?(this: Transform, callback: (error?: Error | null) => void): void; + destroy?(this: Transform, error: Error | null, callback: (error: Error | null) => void): void; + transform?(this: Transform, chunk: any, encoding: BufferEncoding, callback: TransformCallback): void; + flush?(this: Transform, callback: TransformCallback): void; + } + /** + * Transform streams are `Duplex` streams where the output is in some way + * related to the input. Like all `Duplex` streams, `Transform` streams + * implement both the `Readable` and `Writable` interfaces. + * + * Examples of `Transform` streams include: + * + * * `zlib streams` + * * `crypto streams` + * @since v0.9.4 + */ + class Transform extends Duplex { + constructor(opts?: TransformOptions); + _transform(chunk: any, encoding: BufferEncoding, callback: TransformCallback): void; + _flush(callback: TransformCallback): void; + } + /** + * The `stream.PassThrough` class is a trivial implementation of a `Transform` stream that simply passes the input bytes across to the output. Its purpose is + * primarily for examples and testing, but there are some use cases where`stream.PassThrough` is useful as a building block for novel sorts of streams. + */ + class PassThrough extends Transform {} + /** + * A stream to attach a signal to. + * + * Attaches an AbortSignal to a readable or writeable stream. This lets code + * control stream destruction using an `AbortController`. + * + * Calling `abort` on the `AbortController` corresponding to the passed`AbortSignal` will behave the same way as calling `.destroy(new AbortError())`on the stream, and `controller.error(new + * AbortError())` for webstreams. + * + * ```js + * const fs = require('node:fs'); + * + * const controller = new AbortController(); + * const read = addAbortSignal( + * controller.signal, + * fs.createReadStream(('object.json')), + * ); + * // Later, abort the operation closing the stream + * controller.abort(); + * ``` + * + * Or using an `AbortSignal` with a readable stream as an async iterable: + * + * ```js + * const controller = new AbortController(); + * setTimeout(() => controller.abort(), 10_000); // set a timeout + * const stream = addAbortSignal( + * controller.signal, + * fs.createReadStream(('object.json')), + * ); + * (async () => { + * try { + * for await (const chunk of stream) { + * await process(chunk); + * } + * } catch (e) { + * if (e.name === 'AbortError') { + * // The operation was cancelled + * } else { + * throw e; + * } + * } + * })(); + * ``` + * + * Or using an `AbortSignal` with a ReadableStream: + * + * ```js + * const controller = new AbortController(); + * const rs = new ReadableStream({ + * start(controller) { + * controller.enqueue('hello'); + * controller.enqueue('world'); + * controller.close(); + * }, + * }); + * + * addAbortSignal(controller.signal, rs); + * + * finished(rs, (err) => { + * if (err) { + * if (err.name === 'AbortError') { + * // The operation was cancelled + * } + * } + * }); + * + * const reader = rs.getReader(); + * + * reader.read().then(({ value, done }) => { + * console.log(value); // hello + * console.log(done); // false + * controller.abort(); + * }); + * ``` + * @since v15.4.0 + * @param signal A signal representing possible cancellation + * @param stream a stream to attach a signal to + */ + function addAbortSignal(signal: AbortSignal, stream: T): T; + /** + * Returns the default highWaterMark used by streams. + * Defaults to `16384` (16 KiB), or `16` for `objectMode`. + * @since v19.9.0 + * @param objectMode + */ + function getDefaultHighWaterMark(objectMode: boolean): number; + /** + * Sets the default highWaterMark used by streams. + * @since v19.9.0 + * @param objectMode + * @param value highWaterMark value + */ + function setDefaultHighWaterMark(objectMode: boolean, value: number): void; + interface FinishedOptions extends Abortable { + error?: boolean | undefined; + readable?: boolean | undefined; + writable?: boolean | undefined; + } + /** + * A readable and/or writable stream/webstream. + * + * A function to get notified when a stream is no longer readable, writable + * or has experienced an error or a premature close event. + * + * ```js + * const { finished } = require('node:stream'); + * const fs = require('node:fs'); + * + * const rs = fs.createReadStream('archive.tar'); + * + * finished(rs, (err) => { + * if (err) { + * console.error('Stream failed.', err); + * } else { + * console.log('Stream is done reading.'); + * } + * }); + * + * rs.resume(); // Drain the stream. + * ``` + * + * Especially useful in error handling scenarios where a stream is destroyed + * prematurely (like an aborted HTTP request), and will not emit `'end'`or `'finish'`. + * + * The `finished` API provides `promise version`. + * + * `stream.finished()` leaves dangling event listeners (in particular`'error'`, `'end'`, `'finish'` and `'close'`) after `callback` has been + * invoked. The reason for this is so that unexpected `'error'` events (due to + * incorrect stream implementations) do not cause unexpected crashes. + * If this is unwanted behavior then the returned cleanup function needs to be + * invoked in the callback: + * + * ```js + * const cleanup = finished(rs, (err) => { + * cleanup(); + * // ... + * }); + * ``` + * @since v10.0.0 + * @param stream A readable and/or writable stream. + * @param callback A callback function that takes an optional error argument. + * @return A cleanup function which removes all registered listeners. + */ + function finished( + stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, + options: FinishedOptions, + callback: (err?: NodeJS.ErrnoException | null) => void, + ): () => void; + function finished( + stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, + callback: (err?: NodeJS.ErrnoException | null) => void, + ): () => void; + namespace finished { + function __promisify__( + stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, + options?: FinishedOptions, + ): Promise; + } + type PipelineSourceFunction = () => Iterable | AsyncIterable; + type PipelineSource = Iterable | AsyncIterable | NodeJS.ReadableStream | PipelineSourceFunction; + type PipelineTransform, U> = + | NodeJS.ReadWriteStream + | (( + source: S extends (...args: any[]) => Iterable | AsyncIterable ? AsyncIterable + : S, + ) => AsyncIterable); + type PipelineTransformSource = PipelineSource | PipelineTransform; + type PipelineDestinationIterableFunction = (source: AsyncIterable) => AsyncIterable; + type PipelineDestinationPromiseFunction = (source: AsyncIterable) => Promise

; + type PipelineDestination, P> = S extends + PipelineTransformSource ? + | NodeJS.WritableStream + | PipelineDestinationIterableFunction + | PipelineDestinationPromiseFunction + : never; + type PipelineCallback> = S extends + PipelineDestinationPromiseFunction ? (err: NodeJS.ErrnoException | null, value: P) => void + : (err: NodeJS.ErrnoException | null) => void; + type PipelinePromise> = S extends + PipelineDestinationPromiseFunction ? Promise

: Promise; + interface PipelineOptions { + signal?: AbortSignal | undefined; + end?: boolean | undefined; + } + /** + * A module method to pipe between streams and generators forwarding errors and + * properly cleaning up and provide a callback when the pipeline is complete. + * + * ```js + * const { pipeline } = require('node:stream'); + * const fs = require('node:fs'); + * const zlib = require('node:zlib'); + * + * // Use the pipeline API to easily pipe a series of streams + * // together and get notified when the pipeline is fully done. + * + * // A pipeline to gzip a potentially huge tar file efficiently: + * + * pipeline( + * fs.createReadStream('archive.tar'), + * zlib.createGzip(), + * fs.createWriteStream('archive.tar.gz'), + * (err) => { + * if (err) { + * console.error('Pipeline failed.', err); + * } else { + * console.log('Pipeline succeeded.'); + * } + * }, + * ); + * ``` + * + * The `pipeline` API provides a `promise version`. + * + * `stream.pipeline()` will call `stream.destroy(err)` on all streams except: + * + * * `Readable` streams which have emitted `'end'` or `'close'`. + * * `Writable` streams which have emitted `'finish'` or `'close'`. + * + * `stream.pipeline()` leaves dangling event listeners on the streams + * after the `callback` has been invoked. In the case of reuse of streams after + * failure, this can cause event listener leaks and swallowed errors. If the last + * stream is readable, dangling event listeners will be removed so that the last + * stream can be consumed later. + * + * `stream.pipeline()` closes all the streams when an error is raised. + * The `IncomingRequest` usage with `pipeline` could lead to an unexpected behavior + * once it would destroy the socket without sending the expected response. + * See the example below: + * + * ```js + * const fs = require('node:fs'); + * const http = require('node:http'); + * const { pipeline } = require('node:stream'); + * + * const server = http.createServer((req, res) => { + * const fileStream = fs.createReadStream('./fileNotExist.txt'); + * pipeline(fileStream, res, (err) => { + * if (err) { + * console.log(err); // No such file + * // this message can't be sent once `pipeline` already destroyed the socket + * return res.end('error!!!'); + * } + * }); + * }); + * ``` + * @since v10.0.0 + * @param callback Called when the pipeline is fully done. + */ + function pipeline, B extends PipelineDestination>( + source: A, + destination: B, + callback?: PipelineCallback, + ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + destination: B, + callback?: PipelineCallback, + ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + destination: B, + callback?: PipelineCallback, + ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + T3 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + transform3: T3, + destination: B, + callback?: PipelineCallback, + ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + T3 extends PipelineTransform, + T4 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + transform3: T3, + transform4: T4, + destination: B, + callback?: PipelineCallback, + ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; + function pipeline( + streams: ReadonlyArray, + callback?: (err: NodeJS.ErrnoException | null) => void, + ): NodeJS.WritableStream; + function pipeline( + stream1: NodeJS.ReadableStream, + stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream, + ...streams: Array< + NodeJS.ReadWriteStream | NodeJS.WritableStream | ((err: NodeJS.ErrnoException | null) => void) + > + ): NodeJS.WritableStream; + namespace pipeline { + function __promisify__, B extends PipelineDestination>( + source: A, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function __promisify__< + A extends PipelineSource, + T1 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function __promisify__< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function __promisify__< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + T3 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + transform3: T3, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function __promisify__< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + T3 extends PipelineTransform, + T4 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + transform3: T3, + transform4: T4, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function __promisify__( + streams: ReadonlyArray, + options?: PipelineOptions, + ): Promise; + function __promisify__( + stream1: NodeJS.ReadableStream, + stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream, + ...streams: Array + ): Promise; + } + interface Pipe { + close(): void; + hasRef(): boolean; + ref(): void; + unref(): void; + } + /** + * Returns whether the stream has encountered an error. + * @since v17.3.0, v16.14.0 + * @experimental + */ + function isErrored(stream: Readable | Writable | NodeJS.ReadableStream | NodeJS.WritableStream): boolean; + /** + * Returns whether the stream is readable. + * @since v17.4.0, v16.14.0 + * @experimental + */ + function isReadable(stream: Readable | NodeJS.ReadableStream): boolean; + const promises: typeof streamPromises; + const consumers: typeof streamConsumers; + } + export = internal; +} +declare module "node:stream" { + import stream = require("stream"); + export = stream; +} diff --git a/node_modules/@types/node/stream/consumers.d.ts b/node_modules/@types/node/stream/consumers.d.ts new file mode 100644 index 00000000..5ad9cbab --- /dev/null +++ b/node_modules/@types/node/stream/consumers.d.ts @@ -0,0 +1,12 @@ +declare module "stream/consumers" { + import { Blob as NodeBlob } from "node:buffer"; + import { Readable } from "node:stream"; + function buffer(stream: NodeJS.ReadableStream | Readable | AsyncIterable): Promise; + function text(stream: NodeJS.ReadableStream | Readable | AsyncIterable): Promise; + function arrayBuffer(stream: NodeJS.ReadableStream | Readable | AsyncIterable): Promise; + function blob(stream: NodeJS.ReadableStream | Readable | AsyncIterable): Promise; + function json(stream: NodeJS.ReadableStream | Readable | AsyncIterable): Promise; +} +declare module "node:stream/consumers" { + export * from "stream/consumers"; +} diff --git a/node_modules/@types/node/stream/promises.d.ts b/node_modules/@types/node/stream/promises.d.ts new file mode 100644 index 00000000..6eac5b71 --- /dev/null +++ b/node_modules/@types/node/stream/promises.d.ts @@ -0,0 +1,83 @@ +declare module "stream/promises" { + import { + FinishedOptions, + PipelineDestination, + PipelineOptions, + PipelinePromise, + PipelineSource, + PipelineTransform, + } from "node:stream"; + function finished( + stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, + options?: FinishedOptions, + ): Promise; + function pipeline, B extends PipelineDestination>( + source: A, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + T3 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + transform3: T3, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + T3 extends PipelineTransform, + T4 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + transform3: T3, + transform4: T4, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function pipeline( + streams: ReadonlyArray, + options?: PipelineOptions, + ): Promise; + function pipeline( + stream1: NodeJS.ReadableStream, + stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream, + ...streams: Array + ): Promise; +} +declare module "node:stream/promises" { + export * from "stream/promises"; +} diff --git a/node_modules/@types/node/stream/web.d.ts b/node_modules/@types/node/stream/web.d.ts new file mode 100644 index 00000000..0d916137 --- /dev/null +++ b/node_modules/@types/node/stream/web.d.ts @@ -0,0 +1,350 @@ +declare module "stream/web" { + // stub module, pending copy&paste from .d.ts or manual impl + // copy from lib.dom.d.ts + interface ReadableWritablePair { + readable: ReadableStream; + /** + * Provides a convenient, chainable way of piping this readable stream + * through a transform stream (or any other { writable, readable } + * pair). It simply pipes the stream into the writable side of the + * supplied pair, and returns the readable side for further use. + * + * Piping a stream will lock it for the duration of the pipe, preventing + * any other consumer from acquiring a reader. + */ + writable: WritableStream; + } + interface StreamPipeOptions { + preventAbort?: boolean; + preventCancel?: boolean; + /** + * Pipes this readable stream to a given writable stream destination. + * The way in which the piping process behaves under various error + * conditions can be customized with a number of passed options. It + * returns a promise that fulfills when the piping process completes + * successfully, or rejects if any errors were encountered. + * + * Piping a stream will lock it for the duration of the pipe, preventing + * any other consumer from acquiring a reader. + * + * Errors and closures of the source and destination streams propagate + * as follows: + * + * An error in this source readable stream will abort destination, + * unless preventAbort is truthy. The returned promise will be rejected + * with the source's error, or with any error that occurs during + * aborting the destination. + * + * An error in destination will cancel this source readable stream, + * unless preventCancel is truthy. The returned promise will be rejected + * with the destination's error, or with any error that occurs during + * canceling the source. + * + * When this source readable stream closes, destination will be closed, + * unless preventClose is truthy. The returned promise will be fulfilled + * once this process completes, unless an error is encountered while + * closing the destination, in which case it will be rejected with that + * error. + * + * If destination starts out closed or closing, this source readable + * stream will be canceled, unless preventCancel is true. The returned + * promise will be rejected with an error indicating piping to a closed + * stream failed, or with any error that occurs during canceling the + * source. + * + * The signal option can be set to an AbortSignal to allow aborting an + * ongoing pipe operation via the corresponding AbortController. In this + * case, this source readable stream will be canceled, and destination + * aborted, unless the respective options preventCancel or preventAbort + * are set. + */ + preventClose?: boolean; + signal?: AbortSignal; + } + interface ReadableStreamGenericReader { + readonly closed: Promise; + cancel(reason?: any): Promise; + } + interface ReadableStreamDefaultReadValueResult { + done: false; + value: T; + } + interface ReadableStreamDefaultReadDoneResult { + done: true; + value?: undefined; + } + type ReadableStreamController = ReadableStreamDefaultController; + type ReadableStreamDefaultReadResult = + | ReadableStreamDefaultReadValueResult + | ReadableStreamDefaultReadDoneResult; + interface ReadableStreamReadValueResult { + done: false; + value: T; + } + interface ReadableStreamReadDoneResult { + done: true; + value?: T; + } + type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; + interface ReadableByteStreamControllerCallback { + (controller: ReadableByteStreamController): void | PromiseLike; + } + interface UnderlyingSinkAbortCallback { + (reason?: any): void | PromiseLike; + } + interface UnderlyingSinkCloseCallback { + (): void | PromiseLike; + } + interface UnderlyingSinkStartCallback { + (controller: WritableStreamDefaultController): any; + } + interface UnderlyingSinkWriteCallback { + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + } + interface UnderlyingSourceCancelCallback { + (reason?: any): void | PromiseLike; + } + interface UnderlyingSourcePullCallback { + (controller: ReadableStreamController): void | PromiseLike; + } + interface UnderlyingSourceStartCallback { + (controller: ReadableStreamController): any; + } + interface TransformerFlushCallback { + (controller: TransformStreamDefaultController): void | PromiseLike; + } + interface TransformerStartCallback { + (controller: TransformStreamDefaultController): any; + } + interface TransformerTransformCallback { + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + } + interface UnderlyingByteSource { + autoAllocateChunkSize?: number; + cancel?: ReadableStreamErrorCallback; + pull?: ReadableByteStreamControllerCallback; + start?: ReadableByteStreamControllerCallback; + type: "bytes"; + } + interface UnderlyingSource { + cancel?: UnderlyingSourceCancelCallback; + pull?: UnderlyingSourcePullCallback; + start?: UnderlyingSourceStartCallback; + type?: undefined; + } + interface UnderlyingSink { + abort?: UnderlyingSinkAbortCallback; + close?: UnderlyingSinkCloseCallback; + start?: UnderlyingSinkStartCallback; + type?: undefined; + write?: UnderlyingSinkWriteCallback; + } + interface ReadableStreamErrorCallback { + (reason: any): void | PromiseLike; + } + /** This Streams API interface represents a readable stream of byte data. */ + interface ReadableStream { + readonly locked: boolean; + cancel(reason?: any): Promise; + getReader(): ReadableStreamDefaultReader; + getReader(options: { mode: "byob" }): ReadableStreamBYOBReader; + pipeThrough(transform: ReadableWritablePair, options?: StreamPipeOptions): ReadableStream; + pipeTo(destination: WritableStream, options?: StreamPipeOptions): Promise; + tee(): [ReadableStream, ReadableStream]; + values(options?: { preventCancel?: boolean }): AsyncIterableIterator; + [Symbol.asyncIterator](): AsyncIterableIterator; + } + const ReadableStream: { + prototype: ReadableStream; + new(underlyingSource: UnderlyingByteSource, strategy?: QueuingStrategy): ReadableStream; + new(underlyingSource?: UnderlyingSource, strategy?: QueuingStrategy): ReadableStream; + }; + interface ReadableStreamDefaultReader extends ReadableStreamGenericReader { + read(): Promise>; + releaseLock(): void; + } + interface ReadableStreamBYOBReader extends ReadableStreamGenericReader { + read(view: T): Promise>; + releaseLock(): void; + } + const ReadableStreamDefaultReader: { + prototype: ReadableStreamDefaultReader; + new(stream: ReadableStream): ReadableStreamDefaultReader; + }; + const ReadableStreamBYOBReader: any; + const ReadableStreamBYOBRequest: any; + interface ReadableByteStreamController { + readonly byobRequest: undefined; + readonly desiredSize: number | null; + close(): void; + enqueue(chunk: ArrayBufferView): void; + error(error?: any): void; + } + const ReadableByteStreamController: { + prototype: ReadableByteStreamController; + new(): ReadableByteStreamController; + }; + interface ReadableStreamDefaultController { + readonly desiredSize: number | null; + close(): void; + enqueue(chunk?: R): void; + error(e?: any): void; + } + const ReadableStreamDefaultController: { + prototype: ReadableStreamDefaultController; + new(): ReadableStreamDefaultController; + }; + interface Transformer { + flush?: TransformerFlushCallback; + readableType?: undefined; + start?: TransformerStartCallback; + transform?: TransformerTransformCallback; + writableType?: undefined; + } + interface TransformStream { + readonly readable: ReadableStream; + readonly writable: WritableStream; + } + const TransformStream: { + prototype: TransformStream; + new( + transformer?: Transformer, + writableStrategy?: QueuingStrategy, + readableStrategy?: QueuingStrategy, + ): TransformStream; + }; + interface TransformStreamDefaultController { + readonly desiredSize: number | null; + enqueue(chunk?: O): void; + error(reason?: any): void; + terminate(): void; + } + const TransformStreamDefaultController: { + prototype: TransformStreamDefaultController; + new(): TransformStreamDefaultController; + }; + /** + * This Streams API interface provides a standard abstraction for writing + * streaming data to a destination, known as a sink. This object comes with + * built-in back pressure and queuing. + */ + interface WritableStream { + readonly locked: boolean; + abort(reason?: any): Promise; + close(): Promise; + getWriter(): WritableStreamDefaultWriter; + } + const WritableStream: { + prototype: WritableStream; + new(underlyingSink?: UnderlyingSink, strategy?: QueuingStrategy): WritableStream; + }; + /** + * This Streams API interface is the object returned by + * WritableStream.getWriter() and once created locks the < writer to the + * WritableStream ensuring that no other streams can write to the underlying + * sink. + */ + interface WritableStreamDefaultWriter { + readonly closed: Promise; + readonly desiredSize: number | null; + readonly ready: Promise; + abort(reason?: any): Promise; + close(): Promise; + releaseLock(): void; + write(chunk?: W): Promise; + } + const WritableStreamDefaultWriter: { + prototype: WritableStreamDefaultWriter; + new(stream: WritableStream): WritableStreamDefaultWriter; + }; + /** + * This Streams API interface represents a controller allowing control of a + * WritableStream's state. When constructing a WritableStream, the + * underlying sink is given a corresponding WritableStreamDefaultController + * instance to manipulate. + */ + interface WritableStreamDefaultController { + error(e?: any): void; + } + const WritableStreamDefaultController: { + prototype: WritableStreamDefaultController; + new(): WritableStreamDefaultController; + }; + interface QueuingStrategy { + highWaterMark?: number; + size?: QueuingStrategySize; + } + interface QueuingStrategySize { + (chunk?: T): number; + } + interface QueuingStrategyInit { + /** + * Creates a new ByteLengthQueuingStrategy with the provided high water + * mark. + * + * Note that the provided high water mark will not be validated ahead of + * time. Instead, if it is negative, NaN, or not a number, the resulting + * ByteLengthQueuingStrategy will cause the corresponding stream + * constructor to throw. + */ + highWaterMark: number; + } + /** + * This Streams API interface provides a built-in byte length queuing + * strategy that can be used when constructing streams. + */ + interface ByteLengthQueuingStrategy extends QueuingStrategy { + readonly highWaterMark: number; + readonly size: QueuingStrategySize; + } + const ByteLengthQueuingStrategy: { + prototype: ByteLengthQueuingStrategy; + new(init: QueuingStrategyInit): ByteLengthQueuingStrategy; + }; + /** + * This Streams API interface provides a built-in byte length queuing + * strategy that can be used when constructing streams. + */ + interface CountQueuingStrategy extends QueuingStrategy { + readonly highWaterMark: number; + readonly size: QueuingStrategySize; + } + const CountQueuingStrategy: { + prototype: CountQueuingStrategy; + new(init: QueuingStrategyInit): CountQueuingStrategy; + }; + interface TextEncoderStream { + /** Returns "utf-8". */ + readonly encoding: "utf-8"; + readonly readable: ReadableStream; + readonly writable: WritableStream; + readonly [Symbol.toStringTag]: string; + } + const TextEncoderStream: { + prototype: TextEncoderStream; + new(): TextEncoderStream; + }; + interface TextDecoderOptions { + fatal?: boolean; + ignoreBOM?: boolean; + } + type BufferSource = ArrayBufferView | ArrayBuffer; + interface TextDecoderStream { + /** Returns encoding's name, lower cased. */ + readonly encoding: string; + /** Returns `true` if error mode is "fatal", and `false` otherwise. */ + readonly fatal: boolean; + /** Returns `true` if ignore BOM flag is set, and `false` otherwise. */ + readonly ignoreBOM: boolean; + readonly readable: ReadableStream; + readonly writable: WritableStream; + readonly [Symbol.toStringTag]: string; + } + const TextDecoderStream: { + prototype: TextDecoderStream; + new(label?: string, options?: TextDecoderOptions): TextDecoderStream; + }; +} +declare module "node:stream/web" { + export * from "stream/web"; +} diff --git a/node_modules/@types/node/string_decoder.d.ts b/node_modules/@types/node/string_decoder.d.ts new file mode 100644 index 00000000..b8691e1f --- /dev/null +++ b/node_modules/@types/node/string_decoder.d.ts @@ -0,0 +1,67 @@ +/** + * The `node:string_decoder` module provides an API for decoding `Buffer` objects + * into strings in a manner that preserves encoded multi-byte UTF-8 and UTF-16 + * characters. It can be accessed using: + * + * ```js + * const { StringDecoder } = require('node:string_decoder'); + * ``` + * + * The following example shows the basic use of the `StringDecoder` class. + * + * ```js + * const { StringDecoder } = require('node:string_decoder'); + * const decoder = new StringDecoder('utf8'); + * + * const cent = Buffer.from([0xC2, 0xA2]); + * console.log(decoder.write(cent)); // Prints: ¢ + * + * const euro = Buffer.from([0xE2, 0x82, 0xAC]); + * console.log(decoder.write(euro)); // Prints: € + * ``` + * + * When a `Buffer` instance is written to the `StringDecoder` instance, an + * internal buffer is used to ensure that the decoded string does not contain + * any incomplete multibyte characters. These are held in the buffer until the + * next call to `stringDecoder.write()` or until `stringDecoder.end()` is called. + * + * In the following example, the three UTF-8 encoded bytes of the European Euro + * symbol (`€`) are written over three separate operations: + * + * ```js + * const { StringDecoder } = require('node:string_decoder'); + * const decoder = new StringDecoder('utf8'); + * + * decoder.write(Buffer.from([0xE2])); + * decoder.write(Buffer.from([0x82])); + * console.log(decoder.end(Buffer.from([0xAC]))); // Prints: € + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/string_decoder.js) + */ +declare module "string_decoder" { + class StringDecoder { + constructor(encoding?: BufferEncoding); + /** + * Returns a decoded string, ensuring that any incomplete multibyte characters at + * the end of the `Buffer`, or `TypedArray`, or `DataView` are omitted from the + * returned string and stored in an internal buffer for the next call to`stringDecoder.write()` or `stringDecoder.end()`. + * @since v0.1.99 + * @param buffer The bytes to decode. + */ + write(buffer: Buffer): string; + /** + * Returns any remaining input stored in the internal buffer as a string. Bytes + * representing incomplete UTF-8 and UTF-16 characters will be replaced with + * substitution characters appropriate for the character encoding. + * + * If the `buffer` argument is provided, one final call to `stringDecoder.write()`is performed before returning the remaining input. + * After `end()` is called, the `stringDecoder` object can be reused for new input. + * @since v0.9.3 + * @param buffer The bytes to decode. + */ + end(buffer?: Buffer): string; + } +} +declare module "node:string_decoder" { + export * from "string_decoder"; +} diff --git a/node_modules/@types/node/test.d.ts b/node_modules/@types/node/test.d.ts new file mode 100644 index 00000000..04504fdf --- /dev/null +++ b/node_modules/@types/node/test.d.ts @@ -0,0 +1,1382 @@ +/** + * The `node:test` module facilitates the creation of JavaScript tests. + * To access it: + * + * ```js + * import test from 'node:test'; + * ``` + * + * This module is only available under the `node:` scheme. The following will not + * work: + * + * ```js + * import test from 'test'; + * ``` + * + * Tests created via the `test` module consist of a single function that is + * processed in one of three ways: + * + * 1. A synchronous function that is considered failing if it throws an exception, + * and is considered passing otherwise. + * 2. A function that returns a `Promise` that is considered failing if the`Promise` rejects, and is considered passing if the `Promise` resolves. + * 3. A function that receives a callback function. If the callback receives any + * truthy value as its first argument, the test is considered failing. If a + * falsy value is passed as the first argument to the callback, the test is + * considered passing. If the test function receives a callback function and + * also returns a `Promise`, the test will fail. + * + * The following example illustrates how tests are written using the`test` module. + * + * ```js + * test('synchronous passing test', (t) => { + * // This test passes because it does not throw an exception. + * assert.strictEqual(1, 1); + * }); + * + * test('synchronous failing test', (t) => { + * // This test fails because it throws an exception. + * assert.strictEqual(1, 2); + * }); + * + * test('asynchronous passing test', async (t) => { + * // This test passes because the Promise returned by the async + * // function is not rejected. + * assert.strictEqual(1, 1); + * }); + * + * test('asynchronous failing test', async (t) => { + * // This test fails because the Promise returned by the async + * // function is rejected. + * assert.strictEqual(1, 2); + * }); + * + * test('failing test using Promises', (t) => { + * // Promises can be used directly as well. + * return new Promise((resolve, reject) => { + * setImmediate(() => { + * reject(new Error('this will cause the test to fail')); + * }); + * }); + * }); + * + * test('callback passing test', (t, done) => { + * // done() is the callback function. When the setImmediate() runs, it invokes + * // done() with no arguments. + * setImmediate(done); + * }); + * + * test('callback failing test', (t, done) => { + * // When the setImmediate() runs, done() is invoked with an Error object and + * // the test fails. + * setImmediate(() => { + * done(new Error('callback failure')); + * }); + * }); + * ``` + * + * If any tests fail, the process exit code is set to `1`. + * @since v18.0.0, v16.17.0 + * @see [source](https://github.com/nodejs/node/blob/v20.4.0/lib/test.js) + */ +declare module "node:test" { + import { Readable } from "node:stream"; + import { AsyncResource } from "node:async_hooks"; + /** + * ```js + * import { tap } from 'node:test/reporters'; + * import { run } from 'node:test'; + * import process from 'node:process'; + * import path from 'node:path'; + * + * run({ files: [path.resolve('./tests/test.js')] }) + * .compose(tap) + * .pipe(process.stdout); + * ``` + * @since v18.9.0, v16.19.0 + * @param options Configuration options for running tests. The following properties are supported: + */ + function run(options?: RunOptions): TestsStream; + /** + * The `test()` function is the value imported from the `test` module. Each + * invocation of this function results in reporting the test to the `TestsStream`. + * + * The `TestContext` object passed to the `fn` argument can be used to perform + * actions related to the current test. Examples include skipping the test, adding + * additional diagnostic information, or creating subtests. + * + * `test()` returns a `Promise` that resolves once the test completes. + * if `test()` is called within a `describe()` block, it resolve immediately. + * The return value can usually be discarded for top level tests. + * However, the return value from subtests should be used to prevent the parent + * test from finishing first and cancelling the subtest + * as shown in the following example. + * + * ```js + * test('top level test', async (t) => { + * // The setTimeout() in the following subtest would cause it to outlive its + * // parent test if 'await' is removed on the next line. Once the parent test + * // completes, it will cancel any outstanding subtests. + * await t.test('longer running subtest', async (t) => { + * return new Promise((resolve, reject) => { + * setTimeout(resolve, 1000); + * }); + * }); + * }); + * ``` + * + * The `timeout` option can be used to fail the test if it takes longer than`timeout` milliseconds to complete. However, it is not a reliable mechanism for + * canceling tests because a running test might block the application thread and + * thus prevent the scheduled cancellation. + * @since v18.0.0, v16.17.0 + * @param [name='The name'] The name of the test, which is displayed when reporting test results. + * @param options Configuration options for the test. The following properties are supported: + * @param [fn='A no-op function'] The function under test. The first argument to this function is a {@link TestContext} object. If the test uses callbacks, the callback function is passed as the + * second argument. + * @return Resolved with `undefined` once the test completes, or immediately if the test runs within {@link describe}. + */ + function test(name?: string, fn?: TestFn): Promise; + function test(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function test(options?: TestOptions, fn?: TestFn): Promise; + function test(fn?: TestFn): Promise; + namespace test { + export { after, afterEach, before, beforeEach, describe, it, mock, only, run, skip, test, todo }; + } + /** + * The `describe()` function imported from the `node:test` module. Each + * invocation of this function results in the creation of a Subtest. + * After invocation of top level `describe` functions, + * all top level tests and suites will execute. + * @param [name='The name'] The name of the suite, which is displayed when reporting test results. + * @param options Configuration options for the suite. supports the same options as `test([name][, options][, fn])`. + * @param [fn='A no-op function'] The function under suite declaring all subtests and subsuites. The first argument to this function is a {@link SuiteContext} object. + * @return Immediately fulfilled with `undefined`. + */ + function describe(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; + function describe(name?: string, fn?: SuiteFn): Promise; + function describe(options?: TestOptions, fn?: SuiteFn): Promise; + function describe(fn?: SuiteFn): Promise; + namespace describe { + /** + * Shorthand for skipping a suite, same as `describe([name], { skip: true }[, fn])`. + */ + function skip(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; + function skip(name?: string, fn?: SuiteFn): Promise; + function skip(options?: TestOptions, fn?: SuiteFn): Promise; + function skip(fn?: SuiteFn): Promise; + /** + * Shorthand for marking a suite as `TODO`, same as `describe([name], { todo: true }[, fn])`. + */ + function todo(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; + function todo(name?: string, fn?: SuiteFn): Promise; + function todo(options?: TestOptions, fn?: SuiteFn): Promise; + function todo(fn?: SuiteFn): Promise; + /** + * Shorthand for marking a suite as `only`, same as `describe([name], { only: true }[, fn])`. + * @since v18.15.0 + */ + function only(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; + function only(name?: string, fn?: SuiteFn): Promise; + function only(options?: TestOptions, fn?: SuiteFn): Promise; + function only(fn?: SuiteFn): Promise; + } + /** + * Shorthand for `test()`. + * + * The `it()` function is imported from the `node:test` module. + * @since v18.6.0, v16.17.0 + */ + function it(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function it(name?: string, fn?: TestFn): Promise; + function it(options?: TestOptions, fn?: TestFn): Promise; + function it(fn?: TestFn): Promise; + namespace it { + /** + * Shorthand for skipping a test, same as `it([name], { skip: true }[, fn])`. + */ + function skip(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function skip(name?: string, fn?: TestFn): Promise; + function skip(options?: TestOptions, fn?: TestFn): Promise; + function skip(fn?: TestFn): Promise; + /** + * Shorthand for marking a test as `TODO`, same as `it([name], { todo: true }[, fn])`. + */ + function todo(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function todo(name?: string, fn?: TestFn): Promise; + function todo(options?: TestOptions, fn?: TestFn): Promise; + function todo(fn?: TestFn): Promise; + /** + * Shorthand for marking a test as `only`, same as `it([name], { only: true }[, fn])`. + * @since v18.15.0 + */ + function only(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function only(name?: string, fn?: TestFn): Promise; + function only(options?: TestOptions, fn?: TestFn): Promise; + function only(fn?: TestFn): Promise; + } + /** + * Shorthand for skipping a test, same as `test([name], { skip: true }[, fn])`. + * @since v20.2.0 + */ + function skip(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function skip(name?: string, fn?: TestFn): Promise; + function skip(options?: TestOptions, fn?: TestFn): Promise; + function skip(fn?: TestFn): Promise; + /** + * Shorthand for marking a test as `TODO`, same as `test([name], { todo: true }[, fn])`. + * @since v20.2.0 + */ + function todo(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function todo(name?: string, fn?: TestFn): Promise; + function todo(options?: TestOptions, fn?: TestFn): Promise; + function todo(fn?: TestFn): Promise; + /** + * Shorthand for marking a test as `only`, same as `test([name], { only: true }[, fn])`. + * @since v20.2.0 + */ + function only(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function only(name?: string, fn?: TestFn): Promise; + function only(options?: TestOptions, fn?: TestFn): Promise; + function only(fn?: TestFn): Promise; + /** + * The type of a function under test. The first argument to this function is a + * {@link TestContext} object. If the test uses callbacks, the callback function is passed as + * the second argument. + */ + type TestFn = (t: TestContext, done: (result?: any) => void) => void | Promise; + /** + * The type of a function under Suite. + */ + type SuiteFn = (s: SuiteContext) => void | Promise; + interface TestShard { + /** + * A positive integer between 1 and `` that specifies the index of the shard to run. + */ + index: number; + /** + * A positive integer that specifies the total number of shards to split the test files to. + */ + total: number; + } + interface RunOptions { + /** + * If a number is provided, then that many files would run in parallel. + * If truthy, it would run (number of cpu cores - 1) files in parallel. + * If falsy, it would only run one file at a time. + * If unspecified, subtests inherit this value from their parent. + * @default true + */ + concurrency?: number | boolean | undefined; + /** + * An array containing the list of files to run. + * If unspecified, the test runner execution model will be used. + */ + files?: readonly string[] | undefined; + /** + * Allows aborting an in-progress test execution. + * @default undefined + */ + signal?: AbortSignal | undefined; + /** + * A number of milliseconds the test will fail after. + * If unspecified, subtests inherit this value from their parent. + * @default Infinity + */ + timeout?: number | undefined; + /** + * Sets inspector port of test child process. + * If a nullish value is provided, each process gets its own port, + * incremented from the primary's `process.debugPort`. + */ + inspectPort?: number | (() => number) | undefined; + /** + * That can be used to only run tests whose name matches the provided pattern. + * Test name patterns are interpreted as JavaScript regular expressions. + * For each test that is executed, any corresponding test hooks, such as `beforeEach()`, are also run. + */ + testNamePatterns?: string | RegExp | string[] | RegExp[]; + /** + * If truthy, the test context will only run tests that have the `only` option set + */ + only?: boolean; + /** + * A function that accepts the TestsStream instance and can be used to setup listeners before any tests are run. + */ + setup?: (root: Test) => void | Promise; + /** + * Whether to run in watch mode or not. + * @default false + */ + watch?: boolean | undefined; + /** + * Running tests in a specific shard. + * @default undefined + */ + shard?: TestShard | undefined; + } + class Test extends AsyncResource { + concurrency: number; + nesting: number; + only: boolean; + reporter: TestsStream; + runOnlySubtests: boolean; + testNumber: number; + timeout: number | null; + } + /** + * A successful call to `run()` method will return a new `TestsStream` object, streaming a series of events representing the execution of the tests.`TestsStream` will emit events, in the + * order of the tests definition + * @since v18.9.0, v16.19.0 + */ + class TestsStream extends Readable implements NodeJS.ReadableStream { + addListener(event: "test:diagnostic", listener: (data: DiagnosticData) => void): this; + addListener(event: "test:fail", listener: (data: TestFail) => void): this; + addListener(event: "test:pass", listener: (data: TestPass) => void): this; + addListener(event: "test:plan", listener: (data: TestPlan) => void): this; + addListener(event: "test:start", listener: (data: TestStart) => void): this; + addListener(event: "test:stderr", listener: (data: TestStderr) => void): this; + addListener(event: "test:stdout", listener: (data: TestStdout) => void): this; + addListener(event: string, listener: (...args: any[]) => void): this; + emit(event: "test:diagnostic", data: DiagnosticData): boolean; + emit(event: "test:fail", data: TestFail): boolean; + emit(event: "test:pass", data: TestPass): boolean; + emit(event: "test:plan", data: TestPlan): boolean; + emit(event: "test:start", data: TestStart): boolean; + emit(event: "test:stderr", data: TestStderr): boolean; + emit(event: "test:stdout", data: TestStdout): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "test:diagnostic", listener: (data: DiagnosticData) => void): this; + on(event: "test:fail", listener: (data: TestFail) => void): this; + on(event: "test:pass", listener: (data: TestPass) => void): this; + on(event: "test:plan", listener: (data: TestPlan) => void): this; + on(event: "test:start", listener: (data: TestStart) => void): this; + on(event: "test:stderr", listener: (data: TestStderr) => void): this; + on(event: "test:stdout", listener: (data: TestStdout) => void): this; + on(event: string, listener: (...args: any[]) => void): this; + once(event: "test:diagnostic", listener: (data: DiagnosticData) => void): this; + once(event: "test:fail", listener: (data: TestFail) => void): this; + once(event: "test:pass", listener: (data: TestPass) => void): this; + once(event: "test:plan", listener: (data: TestPlan) => void): this; + once(event: "test:start", listener: (data: TestStart) => void): this; + once(event: "test:stderr", listener: (data: TestStderr) => void): this; + once(event: "test:stdout", listener: (data: TestStdout) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "test:diagnostic", listener: (data: DiagnosticData) => void): this; + prependListener(event: "test:fail", listener: (data: TestFail) => void): this; + prependListener(event: "test:pass", listener: (data: TestPass) => void): this; + prependListener(event: "test:plan", listener: (data: TestPlan) => void): this; + prependListener(event: "test:start", listener: (data: TestStart) => void): this; + prependListener(event: "test:stderr", listener: (data: TestStderr) => void): this; + prependListener(event: "test:stdout", listener: (data: TestStdout) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "test:diagnostic", listener: (data: DiagnosticData) => void): this; + prependOnceListener(event: "test:fail", listener: (data: TestFail) => void): this; + prependOnceListener(event: "test:pass", listener: (data: TestPass) => void): this; + prependOnceListener(event: "test:plan", listener: (data: TestPlan) => void): this; + prependOnceListener(event: "test:start", listener: (data: TestStart) => void): this; + prependOnceListener(event: "test:stderr", listener: (data: TestStderr) => void): this; + prependOnceListener(event: "test:stdout", listener: (data: TestStdout) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + } + /** + * An instance of `TestContext` is passed to each test function in order to + * interact with the test runner. However, the `TestContext` constructor is not + * exposed as part of the API. + * @since v18.0.0, v16.17.0 + */ + class TestContext { + /** + * This function is used to create a hook running before subtest of the current test. + * @param fn The hook function. If the hook uses callbacks, the callback function is passed as + * the second argument. Default: A no-op function. + * @param options Configuration options for the hook. + * @since v20.1.0 + */ + before: typeof before; + /** + * This function is used to create a hook running before each subtest of the current test. + * @param fn The hook function. If the hook uses callbacks, the callback function is passed as + * the second argument. Default: A no-op function. + * @param options Configuration options for the hook. + * @since v18.8.0 + */ + beforeEach: typeof beforeEach; + /** + * This function is used to create a hook that runs after the current test finishes. + * @param fn The hook function. If the hook uses callbacks, the callback function is passed as + * the second argument. Default: A no-op function. + * @param options Configuration options for the hook. + * @since v18.13.0 + */ + after: typeof after; + /** + * This function is used to create a hook running after each subtest of the current test. + * @param fn The hook function. If the hook uses callbacks, the callback function is passed as + * the second argument. Default: A no-op function. + * @param options Configuration options for the hook. + * @since v18.8.0 + */ + afterEach: typeof afterEach; + /** + * This function is used to write diagnostics to the output. Any diagnostic + * information is included at the end of the test's results. This function does + * not return a value. + * + * ```js + * test('top level test', (t) => { + * t.diagnostic('A diagnostic message'); + * }); + * ``` + * @since v18.0.0, v16.17.0 + * @param message Message to be reported. + */ + diagnostic(message: string): void; + /** + * The name of the test. + * @since v18.8.0, v16.18.0 + */ + readonly name: string; + /** + * If `shouldRunOnlyTests` is truthy, the test context will only run tests that + * have the `only` option set. Otherwise, all tests are run. If Node.js was not + * started with the `--test-only` command-line option, this function is a + * no-op. + * + * ```js + * test('top level test', (t) => { + * // The test context can be set to run subtests with the 'only' option. + * t.runOnly(true); + * return Promise.all([ + * t.test('this subtest is now skipped'), + * t.test('this subtest is run', { only: true }), + * ]); + * }); + * ``` + * @since v18.0.0, v16.17.0 + * @param shouldRunOnlyTests Whether or not to run `only` tests. + */ + runOnly(shouldRunOnlyTests: boolean): void; + /** + * ```js + * test('top level test', async (t) => { + * await fetch('some/uri', { signal: t.signal }); + * }); + * ``` + * @since v18.7.0, v16.17.0 + */ + readonly signal: AbortSignal; + /** + * This function causes the test's output to indicate the test as skipped. If`message` is provided, it is included in the output. Calling `skip()` does + * not terminate execution of the test function. This function does not return a + * value. + * + * ```js + * test('top level test', (t) => { + * // Make sure to return here as well if the test contains additional logic. + * t.skip('this is skipped'); + * }); + * ``` + * @since v18.0.0, v16.17.0 + * @param message Optional skip message. + */ + skip(message?: string): void; + /** + * This function adds a `TODO` directive to the test's output. If `message` is + * provided, it is included in the output. Calling `todo()` does not terminate + * execution of the test function. This function does not return a value. + * + * ```js + * test('top level test', (t) => { + * // This test is marked as `TODO` + * t.todo('this is a todo'); + * }); + * ``` + * @since v18.0.0, v16.17.0 + * @param message Optional `TODO` message. + */ + todo(message?: string): void; + /** + * This function is used to create subtests under the current test. This function behaves in + * the same fashion as the top level {@link test} function. + * @since v18.0.0 + * @param name The name of the test, which is displayed when reporting test results. + * Default: The `name` property of fn, or `''` if `fn` does not have a name. + * @param options Configuration options for the test + * @param fn The function under test. This first argument to this function is a + * {@link TestContext} object. If the test uses callbacks, the callback function is + * passed as the second argument. Default: A no-op function. + * @returns A {@link Promise} resolved with `undefined` once the test completes. + */ + test: typeof test; + /** + * Each test provides its own MockTracker instance. + */ + readonly mock: MockTracker; + } + /** + * An instance of `SuiteContext` is passed to each suite function in order to + * interact with the test runner. However, the `SuiteContext` constructor is not + * exposed as part of the API. + * @since v18.7.0, v16.17.0 + */ + class SuiteContext { + /** + * The name of the suite. + * @since v18.8.0, v16.18.0 + */ + readonly name: string; + /** + * Can be used to abort test subtasks when the test has been aborted. + * @since v18.7.0, v16.17.0 + */ + readonly signal: AbortSignal; + } + interface TestOptions { + /** + * If a number is provided, then that many tests would run in parallel. + * If truthy, it would run (number of cpu cores - 1) tests in parallel. + * For subtests, it will be `Infinity` tests in parallel. + * If falsy, it would only run one test at a time. + * If unspecified, subtests inherit this value from their parent. + * @default false + */ + concurrency?: number | boolean | undefined; + /** + * If truthy, and the test context is configured to run `only` tests, then this test will be + * run. Otherwise, the test is skipped. + * @default false + */ + only?: boolean | undefined; + /** + * Allows aborting an in-progress test. + * @since v18.8.0 + */ + signal?: AbortSignal | undefined; + /** + * If truthy, the test is skipped. If a string is provided, that string is displayed in the + * test results as the reason for skipping the test. + * @default false + */ + skip?: boolean | string | undefined; + /** + * A number of milliseconds the test will fail after. If unspecified, subtests inherit this + * value from their parent. + * @default Infinity + * @since v18.7.0 + */ + timeout?: number | undefined; + /** + * If truthy, the test marked as `TODO`. If a string is provided, that string is displayed in + * the test results as the reason why the test is `TODO`. + * @default false + */ + todo?: boolean | string | undefined; + } + /** + * This function is used to create a hook running before running a suite. + * + * ```js + * describe('tests', async () => { + * before(() => console.log('about to run some test')); + * it('is a subtest', () => { + * assert.ok('some relevant assertion here'); + * }); + * }); + * ``` + * @since v18.8.0, v16.18.0 + * @param [fn='A no-op function'] The hook function. If the hook uses callbacks, the callback function is passed as the second argument. + * @param options Configuration options for the hook. The following properties are supported: + */ + function before(fn?: HookFn, options?: HookOptions): void; + /** + * This function is used to create a hook running after running a suite. + * + * ```js + * describe('tests', async () => { + * after(() => console.log('finished running tests')); + * it('is a subtest', () => { + * assert.ok('some relevant assertion here'); + * }); + * }); + * ``` + * @since v18.8.0, v16.18.0 + * @param [fn='A no-op function'] The hook function. If the hook uses callbacks, the callback function is passed as the second argument. + * @param options Configuration options for the hook. The following properties are supported: + */ + function after(fn?: HookFn, options?: HookOptions): void; + /** + * This function is used to create a hook running + * before each subtest of the current suite. + * + * ```js + * describe('tests', async () => { + * beforeEach(() => console.log('about to run a test')); + * it('is a subtest', () => { + * assert.ok('some relevant assertion here'); + * }); + * }); + * ``` + * @since v18.8.0, v16.18.0 + * @param [fn='A no-op function'] The hook function. If the hook uses callbacks, the callback function is passed as the second argument. + * @param options Configuration options for the hook. The following properties are supported: + */ + function beforeEach(fn?: HookFn, options?: HookOptions): void; + /** + * This function is used to create a hook running + * after each subtest of the current test. + * + * ```js + * describe('tests', async () => { + * afterEach(() => console.log('finished running a test')); + * it('is a subtest', () => { + * assert.ok('some relevant assertion here'); + * }); + * }); + * ``` + * @since v18.8.0, v16.18.0 + * @param [fn='A no-op function'] The hook function. If the hook uses callbacks, the callback function is passed as the second argument. + * @param options Configuration options for the hook. The following properties are supported: + */ + function afterEach(fn?: HookFn, options?: HookOptions): void; + /** + * The hook function. If the hook uses callbacks, the callback function is passed as the + * second argument. + */ + type HookFn = (s: SuiteContext, done: (result?: any) => void) => any; + /** + * Configuration options for hooks. + * @since v18.8.0 + */ + interface HookOptions { + /** + * Allows aborting an in-progress hook. + */ + signal?: AbortSignal | undefined; + /** + * A number of milliseconds the hook will fail after. If unspecified, subtests inherit this + * value from their parent. + * @default Infinity + */ + timeout?: number | undefined; + } + interface MockFunctionOptions { + /** + * The number of times that the mock will use the behavior of `implementation`. + * Once the mock function has been called `times` times, + * it will automatically restore the behavior of `original`. + * This value must be an integer greater than zero. + * @default Infinity + */ + times?: number | undefined; + } + interface MockMethodOptions extends MockFunctionOptions { + /** + * If `true`, `object[methodName]` is treated as a getter. + * This option cannot be used with the `setter` option. + */ + getter?: boolean | undefined; + /** + * If `true`, `object[methodName]` is treated as a setter. + * This option cannot be used with the `getter` option. + */ + setter?: boolean | undefined; + } + type Mock = F & { + mock: MockFunctionContext; + }; + type NoOpFunction = (...args: any[]) => undefined; + type FunctionPropertyNames = { + [K in keyof T]: T[K] extends Function ? K : never; + }[keyof T]; + /** + * The `MockTracker` class is used to manage mocking functionality. The test runner + * module provides a top level `mock` export which is a `MockTracker` instance. + * Each test also provides its own `MockTracker` instance via the test context's`mock` property. + * @since v19.1.0, v18.13.0 + */ + class MockTracker { + /** + * This function is used to create a mock function. + * + * The following example creates a mock function that increments a counter by one + * on each invocation. The `times` option is used to modify the mock behavior such + * that the first two invocations add two to the counter instead of one. + * + * ```js + * test('mocks a counting function', (t) => { + * let cnt = 0; + * + * function addOne() { + * cnt++; + * return cnt; + * } + * + * function addTwo() { + * cnt += 2; + * return cnt; + * } + * + * const fn = t.mock.fn(addOne, addTwo, { times: 2 }); + * + * assert.strictEqual(fn(), 2); + * assert.strictEqual(fn(), 4); + * assert.strictEqual(fn(), 5); + * assert.strictEqual(fn(), 6); + * }); + * ``` + * @since v19.1.0, v18.13.0 + * @param [original='A no-op function'] An optional function to create a mock on. + * @param implementation An optional function used as the mock implementation for `original`. This is useful for creating mocks that exhibit one behavior for a specified number of calls and + * then restore the behavior of `original`. + * @param options Optional configuration options for the mock function. The following properties are supported: + * @return The mocked function. The mocked function contains a special `mock` property, which is an instance of {@link MockFunctionContext}, and can be used for inspecting and changing the + * behavior of the mocked function. + */ + fn(original?: F, options?: MockFunctionOptions): Mock; + fn( + original?: F, + implementation?: Implementation, + options?: MockFunctionOptions, + ): Mock; + /** + * This function is used to create a mock on an existing object method. The + * following example demonstrates how a mock is created on an existing object + * method. + * + * ```js + * test('spies on an object method', (t) => { + * const number = { + * value: 5, + * subtract(a) { + * return this.value - a; + * }, + * }; + * + * t.mock.method(number, 'subtract'); + * assert.strictEqual(number.subtract.mock.calls.length, 0); + * assert.strictEqual(number.subtract(3), 2); + * assert.strictEqual(number.subtract.mock.calls.length, 1); + * + * const call = number.subtract.mock.calls[0]; + * + * assert.deepStrictEqual(call.arguments, [3]); + * assert.strictEqual(call.result, 2); + * assert.strictEqual(call.error, undefined); + * assert.strictEqual(call.target, undefined); + * assert.strictEqual(call.this, number); + * }); + * ``` + * @since v19.1.0, v18.13.0 + * @param object The object whose method is being mocked. + * @param methodName The identifier of the method on `object` to mock. If `object[methodName]` is not a function, an error is thrown. + * @param implementation An optional function used as the mock implementation for `object[methodName]`. + * @param options Optional configuration options for the mock method. The following properties are supported: + * @return The mocked method. The mocked method contains a special `mock` property, which is an instance of {@link MockFunctionContext}, and can be used for inspecting and changing the + * behavior of the mocked method. + */ + method< + MockedObject extends object, + MethodName extends FunctionPropertyNames, + >( + object: MockedObject, + methodName: MethodName, + options?: MockFunctionOptions, + ): MockedObject[MethodName] extends Function ? Mock + : never; + method< + MockedObject extends object, + MethodName extends FunctionPropertyNames, + Implementation extends Function, + >( + object: MockedObject, + methodName: MethodName, + implementation: Implementation, + options?: MockFunctionOptions, + ): MockedObject[MethodName] extends Function ? Mock + : never; + method( + object: MockedObject, + methodName: keyof MockedObject, + options: MockMethodOptions, + ): Mock; + method( + object: MockedObject, + methodName: keyof MockedObject, + implementation: Function, + options: MockMethodOptions, + ): Mock; + + /** + * This function is syntax sugar for `MockTracker.method` with `options.getter`set to `true`. + * @since v19.3.0, v18.13.0 + */ + getter< + MockedObject extends object, + MethodName extends keyof MockedObject, + >( + object: MockedObject, + methodName: MethodName, + options?: MockFunctionOptions, + ): Mock<() => MockedObject[MethodName]>; + getter< + MockedObject extends object, + MethodName extends keyof MockedObject, + Implementation extends Function, + >( + object: MockedObject, + methodName: MethodName, + implementation?: Implementation, + options?: MockFunctionOptions, + ): Mock<(() => MockedObject[MethodName]) | Implementation>; + /** + * This function is syntax sugar for `MockTracker.method` with `options.setter`set to `true`. + * @since v19.3.0, v18.13.0 + */ + setter< + MockedObject extends object, + MethodName extends keyof MockedObject, + >( + object: MockedObject, + methodName: MethodName, + options?: MockFunctionOptions, + ): Mock<(value: MockedObject[MethodName]) => void>; + setter< + MockedObject extends object, + MethodName extends keyof MockedObject, + Implementation extends Function, + >( + object: MockedObject, + methodName: MethodName, + implementation?: Implementation, + options?: MockFunctionOptions, + ): Mock<((value: MockedObject[MethodName]) => void) | Implementation>; + /** + * This function restores the default behavior of all mocks that were previously + * created by this `MockTracker` and disassociates the mocks from the`MockTracker` instance. Once disassociated, the mocks can still be used, but the`MockTracker` instance can no longer be + * used to reset their behavior or + * otherwise interact with them. + * + * After each test completes, this function is called on the test context's`MockTracker`. If the global `MockTracker` is used extensively, calling this + * function manually is recommended. + * @since v19.1.0, v18.13.0 + */ + reset(): void; + /** + * This function restores the default behavior of all mocks that were previously + * created by this `MockTracker`. Unlike `mock.reset()`, `mock.restoreAll()` does + * not disassociate the mocks from the `MockTracker` instance. + * @since v19.1.0, v18.13.0 + */ + restoreAll(): void; + timers: MockTimers; + } + const mock: MockTracker; + interface MockFunctionCall< + F extends Function, + ReturnType = F extends (...args: any) => infer T ? T + : F extends abstract new(...args: any) => infer T ? T + : unknown, + Args = F extends (...args: infer Y) => any ? Y + : F extends abstract new(...args: infer Y) => any ? Y + : unknown[], + > { + /** + * An array of the arguments passed to the mock function. + */ + arguments: Args; + /** + * If the mocked function threw then this property contains the thrown value. + */ + error: unknown | undefined; + /** + * The value returned by the mocked function. + * + * If the mocked function threw, it will be `undefined`. + */ + result: ReturnType | undefined; + /** + * An `Error` object whose stack can be used to determine the callsite of the mocked function invocation. + */ + stack: Error; + /** + * If the mocked function is a constructor, this field contains the class being constructed. + * Otherwise this will be `undefined`. + */ + target: F extends abstract new(...args: any) => any ? F : undefined; + /** + * The mocked function's `this` value. + */ + this: unknown; + } + /** + * The `MockFunctionContext` class is used to inspect or manipulate the behavior of + * mocks created via the `MockTracker` APIs. + * @since v19.1.0, v18.13.0 + */ + class MockFunctionContext { + /** + * A getter that returns a copy of the internal array used to track calls to the + * mock. Each entry in the array is an object with the following properties. + * @since v19.1.0, v18.13.0 + */ + readonly calls: Array>; + /** + * This function returns the number of times that this mock has been invoked. This + * function is more efficient than checking `ctx.calls.length` because `ctx.calls`is a getter that creates a copy of the internal call tracking array. + * @since v19.1.0, v18.13.0 + * @return The number of times that this mock has been invoked. + */ + callCount(): number; + /** + * This function is used to change the behavior of an existing mock. + * + * The following example creates a mock function using `t.mock.fn()`, calls the + * mock function, and then changes the mock implementation to a different function. + * + * ```js + * test('changes a mock behavior', (t) => { + * let cnt = 0; + * + * function addOne() { + * cnt++; + * return cnt; + * } + * + * function addTwo() { + * cnt += 2; + * return cnt; + * } + * + * const fn = t.mock.fn(addOne); + * + * assert.strictEqual(fn(), 1); + * fn.mock.mockImplementation(addTwo); + * assert.strictEqual(fn(), 3); + * assert.strictEqual(fn(), 5); + * }); + * ``` + * @since v19.1.0, v18.13.0 + * @param implementation The function to be used as the mock's new implementation. + */ + mockImplementation(implementation: Function): void; + /** + * This function is used to change the behavior of an existing mock for a single + * invocation. Once invocation `onCall` has occurred, the mock will revert to + * whatever behavior it would have used had `mockImplementationOnce()` not been + * called. + * + * The following example creates a mock function using `t.mock.fn()`, calls the + * mock function, changes the mock implementation to a different function for the + * next invocation, and then resumes its previous behavior. + * + * ```js + * test('changes a mock behavior once', (t) => { + * let cnt = 0; + * + * function addOne() { + * cnt++; + * return cnt; + * } + * + * function addTwo() { + * cnt += 2; + * return cnt; + * } + * + * const fn = t.mock.fn(addOne); + * + * assert.strictEqual(fn(), 1); + * fn.mock.mockImplementationOnce(addTwo); + * assert.strictEqual(fn(), 3); + * assert.strictEqual(fn(), 4); + * }); + * ``` + * @since v19.1.0, v18.13.0 + * @param implementation The function to be used as the mock's implementation for the invocation number specified by `onCall`. + * @param onCall The invocation number that will use `implementation`. If the specified invocation has already occurred then an exception is thrown. + */ + mockImplementationOnce(implementation: Function, onCall?: number): void; + /** + * Resets the call history of the mock function. + * @since v19.3.0, v18.13.0 + */ + resetCalls(): void; + /** + * Resets the implementation of the mock function to its original behavior. The + * mock can still be used after calling this function. + * @since v19.1.0, v18.13.0 + */ + restore(): void; + } + type Timer = "setInterval" | "clearInterval" | "setTimeout" | "clearTimeout"; + /** + * Mocking timers is a technique commonly used in software testing to simulate and + * control the behavior of timers, such as `setInterval` and `setTimeout`, + * without actually waiting for the specified time intervals. + * + * The `MockTracker` provides a top-level `timers` export + * which is a `MockTimers` instance. + * @since v20.4.0 + * @experimental + */ + class MockTimers { + /** + * Enables timer mocking for the specified timers. + * + * **Note:** When you enable mocking for a specific timer, its associated + * clear function will also be implicitly mocked. + * + * Example usage: + * + * ```js + * import { mock } from 'node:test'; + * mock.timers.enable(['setInterval']); + * ``` + * + * The above example enables mocking for the `setInterval` timer and + * implicitly mocks the `clearInterval` function. Only the `setInterval`and `clearInterval` functions from `node:timers`,`node:timers/promises`, and`globalThis` will be mocked. + * + * Alternatively, if you call `mock.timers.enable()` without any parameters: + * + * All timers (`'setInterval'`, `'clearInterval'`, `'setTimeout'`, and `'clearTimeout'`) + * will be mocked. The `setInterval`, `clearInterval`, `setTimeout`, and `clearTimeout`functions from `node:timers`, `node:timers/promises`, + * and `globalThis` will be mocked. + * @since v20.4.0 + */ + enable(timers?: Timer[]): void; + /** + * This function restores the default behavior of all mocks that were previously + * created by this `MockTimers` instance and disassociates the mocks + * from the `MockTracker` instance. + * + * **Note:** After each test completes, this function is called on + * the test context's `MockTracker`. + * + * ```js + * import { mock } from 'node:test'; + * mock.timers.reset(); + * ``` + * @since v20.4.0 + */ + reset(): void; + /** + * Advances time for all mocked timers. + * + * **Note:** This diverges from how `setTimeout` in Node.js behaves and accepts + * only positive numbers. In Node.js, `setTimeout` with negative numbers is + * only supported for web compatibility reasons. + * + * The following example mocks a `setTimeout` function and + * by using `.tick` advances in + * time triggering all pending timers. + * + * ```js + * import assert from 'node:assert'; + * import { test } from 'node:test'; + * + * test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => { + * const fn = context.mock.fn(); + * + * context.mock.timers.enable(['setTimeout']); + * + * setTimeout(fn, 9999); + * + * assert.strictEqual(fn.mock.callCount(), 0); + * + * // Advance in time + * context.mock.timers.tick(9999); + * + * assert.strictEqual(fn.mock.callCount(), 1); + * }); + * ``` + * + * Alternativelly, the `.tick` function can be called many times + * + * ```js + * import assert from 'node:assert'; + * import { test } from 'node:test'; + * + * test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => { + * const fn = context.mock.fn(); + * context.mock.timers.enable(['setTimeout']); + * const nineSecs = 9000; + * setTimeout(fn, nineSecs); + * + * const twoSeconds = 3000; + * context.mock.timers.tick(twoSeconds); + * context.mock.timers.tick(twoSeconds); + * context.mock.timers.tick(twoSeconds); + * + * assert.strictEqual(fn.mock.callCount(), 1); + * }); + * ``` + * @since v20.4.0 + */ + tick(milliseconds: number): void; + /** + * Triggers all pending mocked timers immediately. + * + * The example below triggers all pending timers immediately, + * causing them to execute without any delay. + * + * ```js + * import assert from 'node:assert'; + * import { test } from 'node:test'; + * + * test('runAll functions following the given order', (context) => { + * context.mock.timers.enable(['setTimeout']); + * const results = []; + * setTimeout(() => results.push(1), 9999); + * + * // Notice that if both timers have the same timeout, + * // the order of execution is guaranteed + * setTimeout(() => results.push(3), 8888); + * setTimeout(() => results.push(2), 8888); + * + * assert.deepStrictEqual(results, []); + * + * context.mock.timers.runAll(); + * + * assert.deepStrictEqual(results, [3, 2, 1]); + * }); + * ``` + * + * **Note:** The `runAll()` function is specifically designed for + * triggering timers in the context of timer mocking. + * It does not have any effect on real-time system + * clocks or actual timers outside of the mocking environment. + * @since v20.4.0 + */ + runAll(): void; + /** + * Calls {@link MockTimers.reset()}. + */ + [Symbol.dispose](): void; + } + export { + after, + afterEach, + before, + beforeEach, + describe, + it, + Mock, + mock, + only, + run, + skip, + test, + test as default, + todo, + }; +} + +interface TestLocationInfo { + /** + * The column number where the test is defined, or + * `undefined` if the test was run through the REPL. + */ + column?: number; + /** + * The path of the test file, `undefined` if test is not ran through a file. + */ + file?: string; + /** + * The line number where the test is defined, or + * `undefined` if the test was run through the REPL. + */ + line?: number; +} +interface DiagnosticData extends TestLocationInfo { + /** + * The diagnostic message. + */ + message: string; + /** + * The nesting level of the test. + */ + nesting: number; +} +interface TestFail extends TestLocationInfo { + /** + * Additional execution metadata. + */ + details: { + /** + * The duration of the test in milliseconds. + */ + duration_ms: number; + /** + * The error thrown by the test. + */ + error: Error; + /** + * The type of the test, used to denote whether this is a suite. + * @since 20.0.0, 19.9.0, 18.17.0 + */ + type?: "suite"; + }; + /** + * The test name. + */ + name: string; + /** + * The nesting level of the test. + */ + nesting: number; + /** + * The ordinal number of the test. + */ + testNumber: number; + /** + * Present if `context.todo` is called. + */ + todo?: string | boolean; + /** + * Present if `context.skip` is called. + */ + skip?: string | boolean; +} +interface TestPass extends TestLocationInfo { + /** + * Additional execution metadata. + */ + details: { + /** + * The duration of the test in milliseconds. + */ + duration_ms: number; + /** + * The type of the test, used to denote whether this is a suite. + * @since 20.0.0, 19.9.0, 18.17.0 + */ + type?: "suite"; + }; + /** + * The test name. + */ + name: string; + /** + * The nesting level of the test. + */ + nesting: number; + /** + * The ordinal number of the test. + */ + testNumber: number; + /** + * Present if `context.todo` is called. + */ + todo?: string | boolean; + /** + * Present if `context.skip` is called. + */ + skip?: string | boolean; +} +interface TestPlan extends TestLocationInfo { + /** + * The nesting level of the test. + */ + nesting: number; + /** + * The number of subtests that have ran. + */ + count: number; +} +interface TestStart extends TestLocationInfo { + /** + * The test name. + */ + name: string; + /** + * The nesting level of the test. + */ + nesting: number; +} +interface TestStderr extends TestLocationInfo { + /** + * The message written to `stderr` + */ + message: string; +} +interface TestStdout extends TestLocationInfo { + /** + * The message written to `stdout` + */ + message: string; +} +interface TestEnqueue extends TestLocationInfo { + /** + * The test name + */ + name: string; + /** + * The nesting level of the test. + */ + nesting: number; +} +interface TestDequeue extends TestLocationInfo { + /** + * The test name + */ + name: string; + /** + * The nesting level of the test. + */ + nesting: number; +} + +/** + * The `node:test/reporters` module exposes the builtin-reporters for `node:test`. + * To access it: + * + * ```js + * import test from 'node:test/reporters'; + * ``` + * + * This module is only available under the `node:` scheme. The following will not + * work: + * + * ```js + * import test from 'test/reporters'; + * ``` + * @since v19.9.0 + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/test/reporters.js) + */ +declare module "node:test/reporters" { + import { Transform } from "node:stream"; + + type TestEvent = + | { type: "test:diagnostic"; data: DiagnosticData } + | { type: "test:fail"; data: TestFail } + | { type: "test:pass"; data: TestPass } + | { type: "test:plan"; data: TestPlan } + | { type: "test:start"; data: TestStart } + | { type: "test:stderr"; data: TestStderr } + | { type: "test:stdout"; data: TestStdout } + | { type: "test:enqueue"; data: TestEnqueue } + | { type: "test:dequeue"; data: TestDequeue } + | { type: "test:watch:drained" }; + type TestEventGenerator = AsyncGenerator; + + /** + * The `dot` reporter outputs the test results in a compact format, + * where each passing test is represented by a `.`, + * and each failing test is represented by a `X`. + */ + function dot(source: TestEventGenerator): AsyncGenerator<"\n" | "." | "X", void>; + /** + * The `tap` reporter outputs the test results in the [TAP](https://testanything.org/) format. + */ + function tap(source: TestEventGenerator): AsyncGenerator; + /** + * The `spec` reporter outputs the test results in a human-readable format. + */ + class Spec extends Transform { + constructor(); + } + /** + * The `junit` reporter outputs test results in a jUnit XML format + */ + function junit(source: TestEventGenerator): AsyncGenerator; + export { dot, junit, Spec as spec, tap, TestEvent }; +} diff --git a/node_modules/@types/node/timers.d.ts b/node_modules/@types/node/timers.d.ts new file mode 100644 index 00000000..1434e7dd --- /dev/null +++ b/node_modules/@types/node/timers.d.ts @@ -0,0 +1,240 @@ +/** + * The `timer` module exposes a global API for scheduling functions to + * be called at some future period of time. Because the timer functions are + * globals, there is no need to call `require('node:timers')` to use the API. + * + * The timer functions within Node.js implement a similar API as the timers API + * provided by Web Browsers but use a different internal implementation that is + * built around the Node.js [Event Loop](https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/#setimmediate-vs-settimeout). + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/timers.js) + */ +declare module "timers" { + import { Abortable } from "node:events"; + import { + setImmediate as setImmediatePromise, + setInterval as setIntervalPromise, + setTimeout as setTimeoutPromise, + } from "node:timers/promises"; + interface TimerOptions extends Abortable { + /** + * Set to `false` to indicate that the scheduled `Timeout` + * should not require the Node.js event loop to remain active. + * @default true + */ + ref?: boolean | undefined; + } + let setTimeout: typeof global.setTimeout; + let clearTimeout: typeof global.clearTimeout; + let setInterval: typeof global.setInterval; + let clearInterval: typeof global.clearInterval; + let setImmediate: typeof global.setImmediate; + let clearImmediate: typeof global.clearImmediate; + global { + namespace NodeJS { + // compatibility with older typings + interface Timer extends RefCounted { + hasRef(): boolean; + refresh(): this; + [Symbol.toPrimitive](): number; + } + /** + * This object is created internally and is returned from `setImmediate()`. It + * can be passed to `clearImmediate()` in order to cancel the scheduled + * actions. + * + * By default, when an immediate is scheduled, the Node.js event loop will continue + * running as long as the immediate is active. The `Immediate` object returned by `setImmediate()` exports both `immediate.ref()` and `immediate.unref()`functions that can be used to + * control this default behavior. + */ + class Immediate implements RefCounted { + /** + * When called, requests that the Node.js event loop _not_ exit so long as the`Immediate` is active. Calling `immediate.ref()` multiple times will have no + * effect. + * + * By default, all `Immediate` objects are "ref'ed", making it normally unnecessary + * to call `immediate.ref()` unless `immediate.unref()` had been called previously. + * @since v9.7.0 + * @return a reference to `immediate` + */ + ref(): this; + /** + * When called, the active `Immediate` object will not require the Node.js event + * loop to remain active. If there is no other activity keeping the event loop + * running, the process may exit before the `Immediate` object's callback is + * invoked. Calling `immediate.unref()` multiple times will have no effect. + * @since v9.7.0 + * @return a reference to `immediate` + */ + unref(): this; + /** + * If true, the `Immediate` object will keep the Node.js event loop active. + * @since v11.0.0 + */ + hasRef(): boolean; + _onImmediate: Function; // to distinguish it from the Timeout class + /** + * Cancels the immediate. This is similar to calling `clearImmediate()`. + * @since v20.5.0 + */ + [Symbol.dispose](): void; + } + /** + * This object is created internally and is returned from `setTimeout()` and `setInterval()`. It can be passed to either `clearTimeout()` or `clearInterval()` in order to cancel the + * scheduled actions. + * + * By default, when a timer is scheduled using either `setTimeout()` or `setInterval()`, the Node.js event loop will continue running as long as the + * timer is active. Each of the `Timeout` objects returned by these functions + * export both `timeout.ref()` and `timeout.unref()` functions that can be used to + * control this default behavior. + */ + class Timeout implements Timer { + /** + * When called, requests that the Node.js event loop _not_ exit so long as the`Timeout` is active. Calling `timeout.ref()` multiple times will have no effect. + * + * By default, all `Timeout` objects are "ref'ed", making it normally unnecessary + * to call `timeout.ref()` unless `timeout.unref()` had been called previously. + * @since v0.9.1 + * @return a reference to `timeout` + */ + ref(): this; + /** + * When called, the active `Timeout` object will not require the Node.js event loop + * to remain active. If there is no other activity keeping the event loop running, + * the process may exit before the `Timeout` object's callback is invoked. Calling`timeout.unref()` multiple times will have no effect. + * @since v0.9.1 + * @return a reference to `timeout` + */ + unref(): this; + /** + * If true, the `Timeout` object will keep the Node.js event loop active. + * @since v11.0.0 + */ + hasRef(): boolean; + /** + * Sets the timer's start time to the current time, and reschedules the timer to + * call its callback at the previously specified duration adjusted to the current + * time. This is useful for refreshing a timer without allocating a new + * JavaScript object. + * + * Using this on a timer that has already called its callback will reactivate the + * timer. + * @since v10.2.0 + * @return a reference to `timeout` + */ + refresh(): this; + [Symbol.toPrimitive](): number; + /** + * Cancels the timeout. + * @since v20.5.0 + */ + [Symbol.dispose](): void; + } + } + /** + * Schedules execution of a one-time `callback` after `delay` milliseconds. + * + * The `callback` will likely not be invoked in precisely `delay` milliseconds. + * Node.js makes no guarantees about the exact timing of when callbacks will fire, + * nor of their ordering. The callback will be called as close as possible to the + * time specified. + * + * When `delay` is larger than `2147483647` or less than `1`, the `delay`will be set to `1`. Non-integer delays are truncated to an integer. + * + * If `callback` is not a function, a `TypeError` will be thrown. + * + * This method has a custom variant for promises that is available using `timersPromises.setTimeout()`. + * @since v0.0.1 + * @param callback The function to call when the timer elapses. + * @param [delay=1] The number of milliseconds to wait before calling the `callback`. + * @param args Optional arguments to pass when the `callback` is called. + * @return for use with {@link clearTimeout} + */ + function setTimeout( + callback: (...args: TArgs) => void, + ms?: number, + ...args: TArgs + ): NodeJS.Timeout; + // util.promisify no rest args compability + // tslint:disable-next-line void-return + function setTimeout(callback: (args: void) => void, ms?: number): NodeJS.Timeout; + namespace setTimeout { + const __promisify__: typeof setTimeoutPromise; + } + /** + * Cancels a `Timeout` object created by `setTimeout()`. + * @since v0.0.1 + * @param timeout A `Timeout` object as returned by {@link setTimeout} or the `primitive` of the `Timeout` object as a string or a number. + */ + function clearTimeout(timeoutId: NodeJS.Timeout | string | number | undefined): void; + /** + * Schedules repeated execution of `callback` every `delay` milliseconds. + * + * When `delay` is larger than `2147483647` or less than `1`, the `delay` will be + * set to `1`. Non-integer delays are truncated to an integer. + * + * If `callback` is not a function, a `TypeError` will be thrown. + * + * This method has a custom variant for promises that is available using `timersPromises.setInterval()`. + * @since v0.0.1 + * @param callback The function to call when the timer elapses. + * @param [delay=1] The number of milliseconds to wait before calling the `callback`. + * @param args Optional arguments to pass when the `callback` is called. + * @return for use with {@link clearInterval} + */ + function setInterval( + callback: (...args: TArgs) => void, + ms?: number, + ...args: TArgs + ): NodeJS.Timeout; + // util.promisify no rest args compability + // tslint:disable-next-line void-return + function setInterval(callback: (args: void) => void, ms?: number): NodeJS.Timeout; + namespace setInterval { + const __promisify__: typeof setIntervalPromise; + } + /** + * Cancels a `Timeout` object created by `setInterval()`. + * @since v0.0.1 + * @param timeout A `Timeout` object as returned by {@link setInterval} or the `primitive` of the `Timeout` object as a string or a number. + */ + function clearInterval(intervalId: NodeJS.Timeout | string | number | undefined): void; + /** + * Schedules the "immediate" execution of the `callback` after I/O events' + * callbacks. + * + * When multiple calls to `setImmediate()` are made, the `callback` functions are + * queued for execution in the order in which they are created. The entire callback + * queue is processed every event loop iteration. If an immediate timer is queued + * from inside an executing callback, that timer will not be triggered until the + * next event loop iteration. + * + * If `callback` is not a function, a `TypeError` will be thrown. + * + * This method has a custom variant for promises that is available using `timersPromises.setImmediate()`. + * @since v0.9.1 + * @param callback The function to call at the end of this turn of the Node.js `Event Loop` + * @param args Optional arguments to pass when the `callback` is called. + * @return for use with {@link clearImmediate} + */ + function setImmediate( + callback: (...args: TArgs) => void, + ...args: TArgs + ): NodeJS.Immediate; + // util.promisify no rest args compability + // tslint:disable-next-line void-return + function setImmediate(callback: (args: void) => void): NodeJS.Immediate; + namespace setImmediate { + const __promisify__: typeof setImmediatePromise; + } + /** + * Cancels an `Immediate` object created by `setImmediate()`. + * @since v0.9.1 + * @param immediate An `Immediate` object as returned by {@link setImmediate}. + */ + function clearImmediate(immediateId: NodeJS.Immediate | undefined): void; + function queueMicrotask(callback: () => void): void; + } +} +declare module "node:timers" { + export * from "timers"; +} diff --git a/node_modules/@types/node/timers/promises.d.ts b/node_modules/@types/node/timers/promises.d.ts new file mode 100644 index 00000000..5a54dc77 --- /dev/null +++ b/node_modules/@types/node/timers/promises.d.ts @@ -0,0 +1,93 @@ +/** + * The `timers/promises` API provides an alternative set of timer functions + * that return `Promise` objects. The API is accessible via`require('node:timers/promises')`. + * + * ```js + * import { + * setTimeout, + * setImmediate, + * setInterval, + * } from 'timers/promises'; + * ``` + * @since v15.0.0 + */ +declare module "timers/promises" { + import { TimerOptions } from "node:timers"; + /** + * ```js + * import { + * setTimeout, + * } from 'timers/promises'; + * + * const res = await setTimeout(100, 'result'); + * + * console.log(res); // Prints 'result' + * ``` + * @since v15.0.0 + * @param [delay=1] The number of milliseconds to wait before fulfilling the promise. + * @param value A value with which the promise is fulfilled. + */ + function setTimeout(delay?: number, value?: T, options?: TimerOptions): Promise; + /** + * ```js + * import { + * setImmediate, + * } from 'timers/promises'; + * + * const res = await setImmediate('result'); + * + * console.log(res); // Prints 'result' + * ``` + * @since v15.0.0 + * @param value A value with which the promise is fulfilled. + */ + function setImmediate(value?: T, options?: TimerOptions): Promise; + /** + * Returns an async iterator that generates values in an interval of `delay` ms. + * If `ref` is `true`, you need to call `next()` of async iterator explicitly + * or implicitly to keep the event loop alive. + * + * ```js + * import { + * setInterval, + * } from 'timers/promises'; + * + * const interval = 100; + * for await (const startTime of setInterval(interval, Date.now())) { + * const now = Date.now(); + * console.log(now); + * if ((now - startTime) > 1000) + * break; + * } + * console.log(Date.now()); + * ``` + * @since v15.9.0 + */ + function setInterval(delay?: number, value?: T, options?: TimerOptions): AsyncIterable; + interface Scheduler { + /** + * ```js + * import { scheduler } from 'node:timers/promises'; + * + * await scheduler.wait(1000); // Wait one second before continuing + * ``` + * An experimental API defined by the Scheduling APIs draft specification being developed as a standard Web Platform API. + * Calling timersPromises.scheduler.wait(delay, options) is roughly equivalent to calling timersPromises.setTimeout(delay, undefined, options) except that the ref option is not supported. + * @since v16.14.0 + * @experimental + * @param [delay=1] The number of milliseconds to wait before fulfilling the promise. + */ + wait: (delay?: number, options?: TimerOptions) => Promise; + /** + * An experimental API defined by the Scheduling APIs draft specification being developed as a standard Web Platform API. + * Calling timersPromises.scheduler.yield() is equivalent to calling timersPromises.setImmediate() with no arguments. + * @since v16.14.0 + * @experimental + */ + yield: () => Promise; + } + const scheduler: Scheduler; +} +declare module "node:timers/promises" { + export * from "timers/promises"; +} diff --git a/node_modules/@types/node/tls.d.ts b/node_modules/@types/node/tls.d.ts new file mode 100644 index 00000000..141af8e1 --- /dev/null +++ b/node_modules/@types/node/tls.d.ts @@ -0,0 +1,1210 @@ +/** + * The `node:tls` module provides an implementation of the Transport Layer Security + * (TLS) and Secure Socket Layer (SSL) protocols that is built on top of OpenSSL. + * The module can be accessed using: + * + * ```js + * const tls = require('node:tls'); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/tls.js) + */ +declare module "tls" { + import { X509Certificate } from "node:crypto"; + import * as net from "node:net"; + import * as stream from "stream"; + const CLIENT_RENEG_LIMIT: number; + const CLIENT_RENEG_WINDOW: number; + interface Certificate { + /** + * Country code. + */ + C: string; + /** + * Street. + */ + ST: string; + /** + * Locality. + */ + L: string; + /** + * Organization. + */ + O: string; + /** + * Organizational unit. + */ + OU: string; + /** + * Common name. + */ + CN: string; + } + interface PeerCertificate { + /** + * `true` if a Certificate Authority (CA), `false` otherwise. + * @since v18.13.0 + */ + ca: boolean; + /** + * The DER encoded X.509 certificate data. + */ + raw: Buffer; + /** + * The certificate subject. + */ + subject: Certificate; + /** + * The certificate issuer, described in the same terms as the `subject`. + */ + issuer: Certificate; + /** + * The date-time the certificate is valid from. + */ + valid_from: string; + /** + * The date-time the certificate is valid to. + */ + valid_to: string; + /** + * The certificate serial number, as a hex string. + */ + serialNumber: string; + /** + * The SHA-1 digest of the DER encoded certificate. + * It is returned as a `:` separated hexadecimal string. + */ + fingerprint: string; + /** + * The SHA-256 digest of the DER encoded certificate. + * It is returned as a `:` separated hexadecimal string. + */ + fingerprint256: string; + /** + * The SHA-512 digest of the DER encoded certificate. + * It is returned as a `:` separated hexadecimal string. + */ + fingerprint512: string; + /** + * The extended key usage, a set of OIDs. + */ + ext_key_usage?: string[]; + /** + * A string containing concatenated names for the subject, + * an alternative to the `subject` names. + */ + subjectaltname?: string; + /** + * An array describing the AuthorityInfoAccess, used with OCSP. + */ + infoAccess?: NodeJS.Dict; + /** + * For RSA keys: The RSA bit size. + * + * For EC keys: The key size in bits. + */ + bits?: number; + /** + * The RSA exponent, as a string in hexadecimal number notation. + */ + exponent?: string; + /** + * The RSA modulus, as a hexadecimal string. + */ + modulus?: string; + /** + * The public key. + */ + pubkey?: Buffer; + /** + * The ASN.1 name of the OID of the elliptic curve. + * Well-known curves are identified by an OID. + * While it is unusual, it is possible that the curve + * is identified by its mathematical properties, + * in which case it will not have an OID. + */ + asn1Curve?: string; + /** + * The NIST name for the elliptic curve,if it has one + * (not all well-known curves have been assigned names by NIST). + */ + nistCurve?: string; + } + interface DetailedPeerCertificate extends PeerCertificate { + /** + * The issuer certificate object. + * For self-signed certificates, this may be a circular reference. + */ + issuerCertificate: DetailedPeerCertificate; + } + interface CipherNameAndProtocol { + /** + * The cipher name. + */ + name: string; + /** + * SSL/TLS protocol version. + */ + version: string; + /** + * IETF name for the cipher suite. + */ + standardName: string; + } + interface EphemeralKeyInfo { + /** + * The supported types are 'DH' and 'ECDH'. + */ + type: string; + /** + * The name property is available only when type is 'ECDH'. + */ + name?: string | undefined; + /** + * The size of parameter of an ephemeral key exchange. + */ + size: number; + } + interface KeyObject { + /** + * Private keys in PEM format. + */ + pem: string | Buffer; + /** + * Optional passphrase. + */ + passphrase?: string | undefined; + } + interface PxfObject { + /** + * PFX or PKCS12 encoded private key and certificate chain. + */ + buf: string | Buffer; + /** + * Optional passphrase. + */ + passphrase?: string | undefined; + } + interface TLSSocketOptions extends SecureContextOptions, CommonConnectionOptions { + /** + * If true the TLS socket will be instantiated in server-mode. + * Defaults to false. + */ + isServer?: boolean | undefined; + /** + * An optional net.Server instance. + */ + server?: net.Server | undefined; + /** + * An optional Buffer instance containing a TLS session. + */ + session?: Buffer | undefined; + /** + * If true, specifies that the OCSP status request extension will be + * added to the client hello and an 'OCSPResponse' event will be + * emitted on the socket before establishing a secure communication + */ + requestOCSP?: boolean | undefined; + } + /** + * Performs transparent encryption of written data and all required TLS + * negotiation. + * + * Instances of `tls.TLSSocket` implement the duplex `Stream` interface. + * + * Methods that return TLS connection metadata (e.g.{@link TLSSocket.getPeerCertificate}) will only return data while the + * connection is open. + * @since v0.11.4 + */ + class TLSSocket extends net.Socket { + /** + * Construct a new tls.TLSSocket object from an existing TCP socket. + */ + constructor(socket: net.Socket, options?: TLSSocketOptions); + /** + * This property is `true` if the peer certificate was signed by one of the CAs + * specified when creating the `tls.TLSSocket` instance, otherwise `false`. + * @since v0.11.4 + */ + authorized: boolean; + /** + * Returns the reason why the peer's certificate was not been verified. This + * property is set only when `tlsSocket.authorized === false`. + * @since v0.11.4 + */ + authorizationError: Error; + /** + * Always returns `true`. This may be used to distinguish TLS sockets from regular`net.Socket` instances. + * @since v0.11.4 + */ + encrypted: true; + /** + * String containing the selected ALPN protocol. + * Before a handshake has completed, this value is always null. + * When a handshake is completed but not ALPN protocol was selected, tlsSocket.alpnProtocol equals false. + */ + alpnProtocol: string | false | null; + /** + * Returns an object representing the local certificate. The returned object has + * some properties corresponding to the fields of the certificate. + * + * See {@link TLSSocket.getPeerCertificate} for an example of the certificate + * structure. + * + * If there is no local certificate, an empty object will be returned. If the + * socket has been destroyed, `null` will be returned. + * @since v11.2.0 + */ + getCertificate(): PeerCertificate | object | null; + /** + * Returns an object containing information on the negotiated cipher suite. + * + * For example, a TLSv1.2 protocol with AES256-SHA cipher: + * + * ```json + * { + * "name": "AES256-SHA", + * "standardName": "TLS_RSA_WITH_AES_256_CBC_SHA", + * "version": "SSLv3" + * } + * ``` + * + * See [SSL\_CIPHER\_get\_name](https://www.openssl.org/docs/man1.1.1/man3/SSL_CIPHER_get_name.html) for more information. + * @since v0.11.4 + */ + getCipher(): CipherNameAndProtocol; + /** + * Returns an object representing the type, name, and size of parameter of + * an ephemeral key exchange in `perfect forward secrecy` on a client + * connection. It returns an empty object when the key exchange is not + * ephemeral. As this is only supported on a client socket; `null` is returned + * if called on a server socket. The supported types are `'DH'` and `'ECDH'`. The`name` property is available only when type is `'ECDH'`. + * + * For example: `{ type: 'ECDH', name: 'prime256v1', size: 256 }`. + * @since v5.0.0 + */ + getEphemeralKeyInfo(): EphemeralKeyInfo | object | null; + /** + * As the `Finished` messages are message digests of the complete handshake + * (with a total of 192 bits for TLS 1.0 and more for SSL 3.0), they can + * be used for external authentication procedures when the authentication + * provided by SSL/TLS is not desired or is not enough. + * + * Corresponds to the `SSL_get_finished` routine in OpenSSL and may be used + * to implement the `tls-unique` channel binding from [RFC 5929](https://tools.ietf.org/html/rfc5929). + * @since v9.9.0 + * @return The latest `Finished` message that has been sent to the socket as part of a SSL/TLS handshake, or `undefined` if no `Finished` message has been sent yet. + */ + getFinished(): Buffer | undefined; + /** + * Returns an object representing the peer's certificate. If the peer does not + * provide a certificate, an empty object will be returned. If the socket has been + * destroyed, `null` will be returned. + * + * If the full certificate chain was requested, each certificate will include an`issuerCertificate` property containing an object representing its issuer's + * certificate. + * @since v0.11.4 + * @param detailed Include the full certificate chain if `true`, otherwise include just the peer's certificate. + * @return A certificate object. + */ + getPeerCertificate(detailed: true): DetailedPeerCertificate; + getPeerCertificate(detailed?: false): PeerCertificate; + getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate; + /** + * As the `Finished` messages are message digests of the complete handshake + * (with a total of 192 bits for TLS 1.0 and more for SSL 3.0), they can + * be used for external authentication procedures when the authentication + * provided by SSL/TLS is not desired or is not enough. + * + * Corresponds to the `SSL_get_peer_finished` routine in OpenSSL and may be used + * to implement the `tls-unique` channel binding from [RFC 5929](https://tools.ietf.org/html/rfc5929). + * @since v9.9.0 + * @return The latest `Finished` message that is expected or has actually been received from the socket as part of a SSL/TLS handshake, or `undefined` if there is no `Finished` message so + * far. + */ + getPeerFinished(): Buffer | undefined; + /** + * Returns a string containing the negotiated SSL/TLS protocol version of the + * current connection. The value `'unknown'` will be returned for connected + * sockets that have not completed the handshaking process. The value `null` will + * be returned for server sockets or disconnected client sockets. + * + * Protocol versions are: + * + * * `'SSLv3'` + * * `'TLSv1'` + * * `'TLSv1.1'` + * * `'TLSv1.2'` + * * `'TLSv1.3'` + * + * See the OpenSSL [`SSL_get_version`](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html) documentation for more information. + * @since v5.7.0 + */ + getProtocol(): string | null; + /** + * Returns the TLS session data or `undefined` if no session was + * negotiated. On the client, the data can be provided to the `session` option of {@link connect} to resume the connection. On the server, it may be useful + * for debugging. + * + * See `Session Resumption` for more information. + * + * Note: `getSession()` works only for TLSv1.2 and below. For TLSv1.3, applications + * must use the `'session'` event (it also works for TLSv1.2 and below). + * @since v0.11.4 + */ + getSession(): Buffer | undefined; + /** + * See [SSL\_get\_shared\_sigalgs](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_shared_sigalgs.html) for more information. + * @since v12.11.0 + * @return List of signature algorithms shared between the server and the client in the order of decreasing preference. + */ + getSharedSigalgs(): string[]; + /** + * For a client, returns the TLS session ticket if one is available, or`undefined`. For a server, always returns `undefined`. + * + * It may be useful for debugging. + * + * See `Session Resumption` for more information. + * @since v0.11.4 + */ + getTLSTicket(): Buffer | undefined; + /** + * See `Session Resumption` for more information. + * @since v0.5.6 + * @return `true` if the session was reused, `false` otherwise. + */ + isSessionReused(): boolean; + /** + * The `tlsSocket.renegotiate()` method initiates a TLS renegotiation process. + * Upon completion, the `callback` function will be passed a single argument + * that is either an `Error` (if the request failed) or `null`. + * + * This method can be used to request a peer's certificate after the secure + * connection has been established. + * + * When running as the server, the socket will be destroyed with an error after`handshakeTimeout` timeout. + * + * For TLSv1.3, renegotiation cannot be initiated, it is not supported by the + * protocol. + * @since v0.11.8 + * @param callback If `renegotiate()` returned `true`, callback is attached once to the `'secure'` event. If `renegotiate()` returned `false`, `callback` will be called in the next tick with + * an error, unless the `tlsSocket` has been destroyed, in which case `callback` will not be called at all. + * @return `true` if renegotiation was initiated, `false` otherwise. + */ + renegotiate( + options: { + rejectUnauthorized?: boolean | undefined; + requestCert?: boolean | undefined; + }, + callback: (err: Error | null) => void, + ): undefined | boolean; + /** + * The `tlsSocket.setMaxSendFragment()` method sets the maximum TLS fragment size. + * Returns `true` if setting the limit succeeded; `false` otherwise. + * + * Smaller fragment sizes decrease the buffering latency on the client: larger + * fragments are buffered by the TLS layer until the entire fragment is received + * and its integrity is verified; large fragments can span multiple roundtrips + * and their processing can be delayed due to packet loss or reordering. However, + * smaller fragments add extra TLS framing bytes and CPU overhead, which may + * decrease overall server throughput. + * @since v0.11.11 + * @param [size=16384] The maximum TLS fragment size. The maximum value is `16384`. + */ + setMaxSendFragment(size: number): boolean; + /** + * Disables TLS renegotiation for this `TLSSocket` instance. Once called, attempts + * to renegotiate will trigger an `'error'` event on the `TLSSocket`. + * @since v8.4.0 + */ + disableRenegotiation(): void; + /** + * When enabled, TLS packet trace information is written to `stderr`. This can be + * used to debug TLS connection problems. + * + * The format of the output is identical to the output of`openssl s_client -trace` or `openssl s_server -trace`. While it is produced by + * OpenSSL's `SSL_trace()` function, the format is undocumented, can change + * without notice, and should not be relied on. + * @since v12.2.0 + */ + enableTrace(): void; + /** + * Returns the peer certificate as an `X509Certificate` object. + * + * If there is no peer certificate, or the socket has been destroyed,`undefined` will be returned. + * @since v15.9.0 + */ + getPeerX509Certificate(): X509Certificate | undefined; + /** + * Returns the local certificate as an `X509Certificate` object. + * + * If there is no local certificate, or the socket has been destroyed,`undefined` will be returned. + * @since v15.9.0 + */ + getX509Certificate(): X509Certificate | undefined; + /** + * Keying material is used for validations to prevent different kind of attacks in + * network protocols, for example in the specifications of IEEE 802.1X. + * + * Example + * + * ```js + * const keyingMaterial = tlsSocket.exportKeyingMaterial( + * 128, + * 'client finished'); + * + * /* + * Example return value of keyingMaterial: + * + * + * ``` + * + * See the OpenSSL [`SSL_export_keying_material`](https://www.openssl.org/docs/man1.1.1/man3/SSL_export_keying_material.html) documentation for more + * information. + * @since v13.10.0, v12.17.0 + * @param length number of bytes to retrieve from keying material + * @param label an application specific label, typically this will be a value from the [IANA Exporter Label + * Registry](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#exporter-labels). + * @param context Optionally provide a context. + * @return requested bytes of the keying material + */ + exportKeyingMaterial(length: number, label: string, context: Buffer): Buffer; + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + addListener(event: "secureConnect", listener: () => void): this; + addListener(event: "session", listener: (session: Buffer) => void): this; + addListener(event: "keylog", listener: (line: Buffer) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "OCSPResponse", response: Buffer): boolean; + emit(event: "secureConnect"): boolean; + emit(event: "session", session: Buffer): boolean; + emit(event: "keylog", line: Buffer): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "OCSPResponse", listener: (response: Buffer) => void): this; + on(event: "secureConnect", listener: () => void): this; + on(event: "session", listener: (session: Buffer) => void): this; + on(event: "keylog", listener: (line: Buffer) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "OCSPResponse", listener: (response: Buffer) => void): this; + once(event: "secureConnect", listener: () => void): this; + once(event: "session", listener: (session: Buffer) => void): this; + once(event: "keylog", listener: (line: Buffer) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + prependListener(event: "secureConnect", listener: () => void): this; + prependListener(event: "session", listener: (session: Buffer) => void): this; + prependListener(event: "keylog", listener: (line: Buffer) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + prependOnceListener(event: "secureConnect", listener: () => void): this; + prependOnceListener(event: "session", listener: (session: Buffer) => void): this; + prependOnceListener(event: "keylog", listener: (line: Buffer) => void): this; + } + interface CommonConnectionOptions { + /** + * An optional TLS context object from tls.createSecureContext() + */ + secureContext?: SecureContext | undefined; + /** + * When enabled, TLS packet trace information is written to `stderr`. This can be + * used to debug TLS connection problems. + * @default false + */ + enableTrace?: boolean | undefined; + /** + * If true the server will request a certificate from clients that + * connect and attempt to verify that certificate. Defaults to + * false. + */ + requestCert?: boolean | undefined; + /** + * An array of strings or a Buffer naming possible ALPN protocols. + * (Protocols should be ordered by their priority.) + */ + ALPNProtocols?: string[] | Uint8Array[] | Uint8Array | undefined; + /** + * SNICallback(servername, cb) A function that will be + * called if the client supports SNI TLS extension. Two arguments + * will be passed when called: servername and cb. SNICallback should + * invoke cb(null, ctx), where ctx is a SecureContext instance. + * (tls.createSecureContext(...) can be used to get a proper + * SecureContext.) If SNICallback wasn't provided the default callback + * with high-level API will be used (see below). + */ + SNICallback?: ((servername: string, cb: (err: Error | null, ctx?: SecureContext) => void) => void) | undefined; + /** + * If true the server will reject any connection which is not + * authorized with the list of supplied CAs. This option only has an + * effect if requestCert is true. + * @default true + */ + rejectUnauthorized?: boolean | undefined; + } + interface TlsOptions extends SecureContextOptions, CommonConnectionOptions, net.ServerOpts { + /** + * Abort the connection if the SSL/TLS handshake does not finish in the + * specified number of milliseconds. A 'tlsClientError' is emitted on + * the tls.Server object whenever a handshake times out. Default: + * 120000 (120 seconds). + */ + handshakeTimeout?: number | undefined; + /** + * The number of seconds after which a TLS session created by the + * server will no longer be resumable. See Session Resumption for more + * information. Default: 300. + */ + sessionTimeout?: number | undefined; + /** + * 48-bytes of cryptographically strong pseudo-random data. + */ + ticketKeys?: Buffer | undefined; + /** + * @param socket + * @param identity identity parameter sent from the client. + * @return pre-shared key that must either be + * a buffer or `null` to stop the negotiation process. Returned PSK must be + * compatible with the selected cipher's digest. + * + * When negotiating TLS-PSK (pre-shared keys), this function is called + * with the identity provided by the client. + * If the return value is `null` the negotiation process will stop and an + * "unknown_psk_identity" alert message will be sent to the other party. + * If the server wishes to hide the fact that the PSK identity was not known, + * the callback must provide some random data as `psk` to make the connection + * fail with "decrypt_error" before negotiation is finished. + * PSK ciphers are disabled by default, and using TLS-PSK thus + * requires explicitly specifying a cipher suite with the `ciphers` option. + * More information can be found in the RFC 4279. + */ + pskCallback?(socket: TLSSocket, identity: string): DataView | NodeJS.TypedArray | null; + /** + * hint to send to a client to help + * with selecting the identity during TLS-PSK negotiation. Will be ignored + * in TLS 1.3. Upon failing to set pskIdentityHint `tlsClientError` will be + * emitted with `ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED` code. + */ + pskIdentityHint?: string | undefined; + } + interface PSKCallbackNegotation { + psk: DataView | NodeJS.TypedArray; + identity: string; + } + interface ConnectionOptions extends SecureContextOptions, CommonConnectionOptions { + host?: string | undefined; + port?: number | undefined; + path?: string | undefined; // Creates unix socket connection to path. If this option is specified, `host` and `port` are ignored. + socket?: stream.Duplex | undefined; // Establish secure connection on a given socket rather than creating a new socket + checkServerIdentity?: typeof checkServerIdentity | undefined; + servername?: string | undefined; // SNI TLS Extension + session?: Buffer | undefined; + minDHSize?: number | undefined; + lookup?: net.LookupFunction | undefined; + timeout?: number | undefined; + /** + * When negotiating TLS-PSK (pre-shared keys), this function is called + * with optional identity `hint` provided by the server or `null` + * in case of TLS 1.3 where `hint` was removed. + * It will be necessary to provide a custom `tls.checkServerIdentity()` + * for the connection as the default one will try to check hostname/IP + * of the server against the certificate but that's not applicable for PSK + * because there won't be a certificate present. + * More information can be found in the RFC 4279. + * + * @param hint message sent from the server to help client + * decide which identity to use during negotiation. + * Always `null` if TLS 1.3 is used. + * @returns Return `null` to stop the negotiation process. `psk` must be + * compatible with the selected cipher's digest. + * `identity` must use UTF-8 encoding. + */ + pskCallback?(hint: string | null): PSKCallbackNegotation | null; + } + /** + * Accepts encrypted connections using TLS or SSL. + * @since v0.3.2 + */ + class Server extends net.Server { + constructor(secureConnectionListener?: (socket: TLSSocket) => void); + constructor(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void); + /** + * The `server.addContext()` method adds a secure context that will be used if + * the client request's SNI name matches the supplied `hostname` (or wildcard). + * + * When there are multiple matching contexts, the most recently added one is + * used. + * @since v0.5.3 + * @param hostname A SNI host name or wildcard (e.g. `'*'`) + * @param context An object containing any of the possible properties from the {@link createSecureContext} `options` arguments (e.g. `key`, `cert`, `ca`, etc), or a TLS context object created + * with {@link createSecureContext} itself. + */ + addContext(hostname: string, context: SecureContextOptions): void; + /** + * Returns the session ticket keys. + * + * See `Session Resumption` for more information. + * @since v3.0.0 + * @return A 48-byte buffer containing the session ticket keys. + */ + getTicketKeys(): Buffer; + /** + * The `server.setSecureContext()` method replaces the secure context of an + * existing server. Existing connections to the server are not interrupted. + * @since v11.0.0 + * @param options An object containing any of the possible properties from the {@link createSecureContext} `options` arguments (e.g. `key`, `cert`, `ca`, etc). + */ + setSecureContext(options: SecureContextOptions): void; + /** + * Sets the session ticket keys. + * + * Changes to the ticket keys are effective only for future server connections. + * Existing or currently pending server connections will use the previous keys. + * + * See `Session Resumption` for more information. + * @since v3.0.0 + * @param keys A 48-byte buffer containing the session ticket keys. + */ + setTicketKeys(keys: Buffer): void; + /** + * events.EventEmitter + * 1. tlsClientError + * 2. newSession + * 3. OCSPRequest + * 4. resumeSession + * 5. secureConnection + * 6. keylog + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + addListener( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void, + ): this; + addListener( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + addListener( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, + ): this; + addListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + addListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "tlsClientError", err: Error, tlsSocket: TLSSocket): boolean; + emit(event: "newSession", sessionId: Buffer, sessionData: Buffer, callback: () => void): boolean; + emit( + event: "OCSPRequest", + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ): boolean; + emit( + event: "resumeSession", + sessionId: Buffer, + callback: (err: Error | null, sessionData: Buffer | null) => void, + ): boolean; + emit(event: "secureConnection", tlsSocket: TLSSocket): boolean; + emit(event: "keylog", line: Buffer, tlsSocket: TLSSocket): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + on(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void): this; + on( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + on( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, + ): this; + on(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + on(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + once( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void, + ): this; + once( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + once( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, + ): this; + once(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + once(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + prependListener( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void, + ): this; + prependListener( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + prependListener( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, + ): this; + prependListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + prependListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + prependOnceListener( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void, + ): this; + prependOnceListener( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + prependOnceListener( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, + ): this; + prependOnceListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + prependOnceListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; + } + /** + * @deprecated since v0.11.3 Use `tls.TLSSocket` instead. + */ + interface SecurePair { + encrypted: TLSSocket; + cleartext: TLSSocket; + } + type SecureVersion = "TLSv1.3" | "TLSv1.2" | "TLSv1.1" | "TLSv1"; + interface SecureContextOptions { + /** + * If set, this will be called when a client opens a connection using the ALPN extension. + * One argument will be passed to the callback: an object containing `servername` and `protocols` fields, + * respectively containing the server name from the SNI extension (if any) and an array of + * ALPN protocol name strings. The callback must return either one of the strings listed in `protocols`, + * which will be returned to the client as the selected ALPN protocol, or `undefined`, + * to reject the connection with a fatal alert. If a string is returned that does not match one of + * the client's ALPN protocols, an error will be thrown. + * This option cannot be used with the `ALPNProtocols` option, and setting both options will throw an error. + */ + ALPNCallback?: ((arg: { servername: string; protocols: string[] }) => string | undefined) | undefined; + /** + * Optionally override the trusted CA certificates. Default is to trust + * the well-known CAs curated by Mozilla. Mozilla's CAs are completely + * replaced when CAs are explicitly specified using this option. + */ + ca?: string | Buffer | Array | undefined; + /** + * Cert chains in PEM format. One cert chain should be provided per + * private key. Each cert chain should consist of the PEM formatted + * certificate for a provided private key, followed by the PEM + * formatted intermediate certificates (if any), in order, and not + * including the root CA (the root CA must be pre-known to the peer, + * see ca). When providing multiple cert chains, they do not have to + * be in the same order as their private keys in key. If the + * intermediate certificates are not provided, the peer will not be + * able to validate the certificate, and the handshake will fail. + */ + cert?: string | Buffer | Array | undefined; + /** + * Colon-separated list of supported signature algorithms. The list + * can contain digest algorithms (SHA256, MD5 etc.), public key + * algorithms (RSA-PSS, ECDSA etc.), combination of both (e.g + * 'RSA+SHA384') or TLS v1.3 scheme names (e.g. rsa_pss_pss_sha512). + */ + sigalgs?: string | undefined; + /** + * Cipher suite specification, replacing the default. For more + * information, see modifying the default cipher suite. Permitted + * ciphers can be obtained via tls.getCiphers(). Cipher names must be + * uppercased in order for OpenSSL to accept them. + */ + ciphers?: string | undefined; + /** + * Name of an OpenSSL engine which can provide the client certificate. + */ + clientCertEngine?: string | undefined; + /** + * PEM formatted CRLs (Certificate Revocation Lists). + */ + crl?: string | Buffer | Array | undefined; + /** + * `'auto'` or custom Diffie-Hellman parameters, required for non-ECDHE perfect forward secrecy. + * If omitted or invalid, the parameters are silently discarded and DHE ciphers will not be available. + * ECDHE-based perfect forward secrecy will still be available. + */ + dhparam?: string | Buffer | undefined; + /** + * A string describing a named curve or a colon separated list of curve + * NIDs or names, for example P-521:P-384:P-256, to use for ECDH key + * agreement. Set to auto to select the curve automatically. Use + * crypto.getCurves() to obtain a list of available curve names. On + * recent releases, openssl ecparam -list_curves will also display the + * name and description of each available elliptic curve. Default: + * tls.DEFAULT_ECDH_CURVE. + */ + ecdhCurve?: string | undefined; + /** + * Attempt to use the server's cipher suite preferences instead of the + * client's. When true, causes SSL_OP_CIPHER_SERVER_PREFERENCE to be + * set in secureOptions + */ + honorCipherOrder?: boolean | undefined; + /** + * Private keys in PEM format. PEM allows the option of private keys + * being encrypted. Encrypted keys will be decrypted with + * options.passphrase. Multiple keys using different algorithms can be + * provided either as an array of unencrypted key strings or buffers, + * or an array of objects in the form {pem: [, + * passphrase: ]}. The object form can only occur in an array. + * object.passphrase is optional. Encrypted keys will be decrypted with + * object.passphrase if provided, or options.passphrase if it is not. + */ + key?: string | Buffer | Array | undefined; + /** + * Name of an OpenSSL engine to get private key from. Should be used + * together with privateKeyIdentifier. + */ + privateKeyEngine?: string | undefined; + /** + * Identifier of a private key managed by an OpenSSL engine. Should be + * used together with privateKeyEngine. Should not be set together with + * key, because both options define a private key in different ways. + */ + privateKeyIdentifier?: string | undefined; + /** + * Optionally set the maximum TLS version to allow. One + * of `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the + * `secureProtocol` option, use one or the other. + * **Default:** `'TLSv1.3'`, unless changed using CLI options. Using + * `--tls-max-v1.2` sets the default to `'TLSv1.2'`. Using `--tls-max-v1.3` sets the default to + * `'TLSv1.3'`. If multiple of the options are provided, the highest maximum is used. + */ + maxVersion?: SecureVersion | undefined; + /** + * Optionally set the minimum TLS version to allow. One + * of `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the + * `secureProtocol` option, use one or the other. It is not recommended to use + * less than TLSv1.2, but it may be required for interoperability. + * **Default:** `'TLSv1.2'`, unless changed using CLI options. Using + * `--tls-v1.0` sets the default to `'TLSv1'`. Using `--tls-v1.1` sets the default to + * `'TLSv1.1'`. Using `--tls-min-v1.3` sets the default to + * 'TLSv1.3'. If multiple of the options are provided, the lowest minimum is used. + */ + minVersion?: SecureVersion | undefined; + /** + * Shared passphrase used for a single private key and/or a PFX. + */ + passphrase?: string | undefined; + /** + * PFX or PKCS12 encoded private key and certificate chain. pfx is an + * alternative to providing key and cert individually. PFX is usually + * encrypted, if it is, passphrase will be used to decrypt it. Multiple + * PFX can be provided either as an array of unencrypted PFX buffers, + * or an array of objects in the form {buf: [, + * passphrase: ]}. The object form can only occur in an array. + * object.passphrase is optional. Encrypted PFX will be decrypted with + * object.passphrase if provided, or options.passphrase if it is not. + */ + pfx?: string | Buffer | Array | undefined; + /** + * Optionally affect the OpenSSL protocol behavior, which is not + * usually necessary. This should be used carefully if at all! Value is + * a numeric bitmask of the SSL_OP_* options from OpenSSL Options + */ + secureOptions?: number | undefined; // Value is a numeric bitmask of the `SSL_OP_*` options + /** + * Legacy mechanism to select the TLS protocol version to use, it does + * not support independent control of the minimum and maximum version, + * and does not support limiting the protocol to TLSv1.3. Use + * minVersion and maxVersion instead. The possible values are listed as + * SSL_METHODS, use the function names as strings. For example, use + * 'TLSv1_1_method' to force TLS version 1.1, or 'TLS_method' to allow + * any TLS protocol version up to TLSv1.3. It is not recommended to use + * TLS versions less than 1.2, but it may be required for + * interoperability. Default: none, see minVersion. + */ + secureProtocol?: string | undefined; + /** + * Opaque identifier used by servers to ensure session state is not + * shared between applications. Unused by clients. + */ + sessionIdContext?: string | undefined; + /** + * 48-bytes of cryptographically strong pseudo-random data. + * See Session Resumption for more information. + */ + ticketKeys?: Buffer | undefined; + /** + * The number of seconds after which a TLS session created by the + * server will no longer be resumable. See Session Resumption for more + * information. Default: 300. + */ + sessionTimeout?: number | undefined; + } + interface SecureContext { + context: any; + } + /** + * Verifies the certificate `cert` is issued to `hostname`. + * + * Returns [Error](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) object, populating it with `reason`, `host`, and `cert` on + * failure. On success, returns [undefined](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Undefined_type). + * + * This function is intended to be used in combination with the`checkServerIdentity` option that can be passed to {@link connect} and as + * such operates on a `certificate object`. For other purposes, consider using `x509.checkHost()` instead. + * + * This function can be overwritten by providing an alternative function as the`options.checkServerIdentity` option that is passed to `tls.connect()`. The + * overwriting function can call `tls.checkServerIdentity()` of course, to augment + * the checks done with additional verification. + * + * This function is only called if the certificate passed all other checks, such as + * being issued by trusted CA (`options.ca`). + * + * Earlier versions of Node.js incorrectly accepted certificates for a given`hostname` if a matching `uniformResourceIdentifier` subject alternative name + * was present (see [CVE-2021-44531](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44531)). Applications that wish to accept`uniformResourceIdentifier` subject alternative names can use + * a custom`options.checkServerIdentity` function that implements the desired behavior. + * @since v0.8.4 + * @param hostname The host name or IP address to verify the certificate against. + * @param cert A `certificate object` representing the peer's certificate. + */ + function checkServerIdentity(hostname: string, cert: PeerCertificate): Error | undefined; + /** + * Creates a new {@link Server}. The `secureConnectionListener`, if provided, is + * automatically set as a listener for the `'secureConnection'` event. + * + * The `ticketKeys` options is automatically shared between `node:cluster` module + * workers. + * + * The following illustrates a simple echo server: + * + * ```js + * const tls = require('node:tls'); + * const fs = require('node:fs'); + * + * const options = { + * key: fs.readFileSync('server-key.pem'), + * cert: fs.readFileSync('server-cert.pem'), + * + * // This is necessary only if using client certificate authentication. + * requestCert: true, + * + * // This is necessary only if the client uses a self-signed certificate. + * ca: [ fs.readFileSync('client-cert.pem') ], + * }; + * + * const server = tls.createServer(options, (socket) => { + * console.log('server connected', + * socket.authorized ? 'authorized' : 'unauthorized'); + * socket.write('welcome!\n'); + * socket.setEncoding('utf8'); + * socket.pipe(socket); + * }); + * server.listen(8000, () => { + * console.log('server bound'); + * }); + * ``` + * + * The server can be tested by connecting to it using the example client from {@link connect}. + * @since v0.3.2 + */ + function createServer(secureConnectionListener?: (socket: TLSSocket) => void): Server; + function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server; + /** + * The `callback` function, if specified, will be added as a listener for the `'secureConnect'` event. + * + * `tls.connect()` returns a {@link TLSSocket} object. + * + * Unlike the `https` API, `tls.connect()` does not enable the + * SNI (Server Name Indication) extension by default, which may cause some + * servers to return an incorrect certificate or reject the connection + * altogether. To enable SNI, set the `servername` option in addition + * to `host`. + * + * The following illustrates a client for the echo server example from {@link createServer}: + * + * ```js + * // Assumes an echo server that is listening on port 8000. + * const tls = require('node:tls'); + * const fs = require('node:fs'); + * + * const options = { + * // Necessary only if the server requires client certificate authentication. + * key: fs.readFileSync('client-key.pem'), + * cert: fs.readFileSync('client-cert.pem'), + * + * // Necessary only if the server uses a self-signed certificate. + * ca: [ fs.readFileSync('server-cert.pem') ], + * + * // Necessary only if the server's cert isn't for "localhost". + * checkServerIdentity: () => { return null; }, + * }; + * + * const socket = tls.connect(8000, options, () => { + * console.log('client connected', + * socket.authorized ? 'authorized' : 'unauthorized'); + * process.stdin.pipe(socket); + * process.stdin.resume(); + * }); + * socket.setEncoding('utf8'); + * socket.on('data', (data) => { + * console.log(data); + * }); + * socket.on('end', () => { + * console.log('server ends connection'); + * }); + * ``` + * @since v0.11.3 + */ + function connect(options: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; + function connect( + port: number, + host?: string, + options?: ConnectionOptions, + secureConnectListener?: () => void, + ): TLSSocket; + function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; + /** + * Creates a new secure pair object with two streams, one of which reads and writes + * the encrypted data and the other of which reads and writes the cleartext data. + * Generally, the encrypted stream is piped to/from an incoming encrypted data + * stream and the cleartext one is used as a replacement for the initial encrypted + * stream. + * + * `tls.createSecurePair()` returns a `tls.SecurePair` object with `cleartext` and`encrypted` stream properties. + * + * Using `cleartext` has the same API as {@link TLSSocket}. + * + * The `tls.createSecurePair()` method is now deprecated in favor of`tls.TLSSocket()`. For example, the code: + * + * ```js + * pair = tls.createSecurePair(// ... ); + * pair.encrypted.pipe(socket); + * socket.pipe(pair.encrypted); + * ``` + * + * can be replaced by: + * + * ```js + * secureSocket = tls.TLSSocket(socket, options); + * ``` + * + * where `secureSocket` has the same API as `pair.cleartext`. + * @since v0.3.2 + * @deprecated Since v0.11.3 - Use {@link TLSSocket} instead. + * @param context A secure context object as returned by `tls.createSecureContext()` + * @param isServer `true` to specify that this TLS connection should be opened as a server. + * @param requestCert `true` to specify whether a server should request a certificate from a connecting client. Only applies when `isServer` is `true`. + * @param rejectUnauthorized If not `false` a server automatically reject clients with invalid certificates. Only applies when `isServer` is `true`. + */ + function createSecurePair( + context?: SecureContext, + isServer?: boolean, + requestCert?: boolean, + rejectUnauthorized?: boolean, + ): SecurePair; + /** + * {@link createServer} sets the default value of the `honorCipherOrder` option + * to `true`, other APIs that create secure contexts leave it unset. + * + * {@link createServer} uses a 128 bit truncated SHA1 hash value generated + * from `process.argv` as the default value of the `sessionIdContext` option, other + * APIs that create secure contexts have no default value. + * + * The `tls.createSecureContext()` method creates a `SecureContext` object. It is + * usable as an argument to several `tls` APIs, such as `server.addContext()`, + * but has no public methods. The {@link Server} constructor and the {@link createServer} method do not support the `secureContext` option. + * + * A key is _required_ for ciphers that use certificates. Either `key` or`pfx` can be used to provide it. + * + * If the `ca` option is not given, then Node.js will default to using [Mozilla's publicly trusted list of + * CAs](https://hg.mozilla.org/mozilla-central/raw-file/tip/security/nss/lib/ckfw/builtins/certdata.txt). + * + * Custom DHE parameters are discouraged in favor of the new `dhparam: 'auto'`option. When set to `'auto'`, well-known DHE parameters of sufficient strength + * will be selected automatically. Otherwise, if necessary, `openssl dhparam` can + * be used to create custom parameters. The key length must be greater than or + * equal to 1024 bits or else an error will be thrown. Although 1024 bits is + * permissible, use 2048 bits or larger for stronger security. + * @since v0.11.13 + */ + function createSecureContext(options?: SecureContextOptions): SecureContext; + /** + * Returns an array with the names of the supported TLS ciphers. The names are + * lower-case for historical reasons, but must be uppercased to be used in + * the `ciphers` option of {@link createSecureContext}. + * + * Not all supported ciphers are enabled by default. See `Modifying the default TLS cipher suite`. + * + * Cipher names that start with `'tls_'` are for TLSv1.3, all the others are for + * TLSv1.2 and below. + * + * ```js + * console.log(tls.getCiphers()); // ['aes128-gcm-sha256', 'aes128-sha', ...] + * ``` + * @since v0.10.2 + */ + function getCiphers(): string[]; + /** + * The default curve name to use for ECDH key agreement in a tls server. + * The default value is 'auto'. See tls.createSecureContext() for further + * information. + */ + let DEFAULT_ECDH_CURVE: string; + /** + * The default value of the maxVersion option of + * tls.createSecureContext(). It can be assigned any of the supported TLS + * protocol versions, 'TLSv1.3', 'TLSv1.2', 'TLSv1.1', or 'TLSv1'. Default: + * 'TLSv1.3', unless changed using CLI options. Using --tls-max-v1.2 sets + * the default to 'TLSv1.2'. Using --tls-max-v1.3 sets the default to + * 'TLSv1.3'. If multiple of the options are provided, the highest maximum + * is used. + */ + let DEFAULT_MAX_VERSION: SecureVersion; + /** + * The default value of the minVersion option of tls.createSecureContext(). + * It can be assigned any of the supported TLS protocol versions, + * 'TLSv1.3', 'TLSv1.2', 'TLSv1.1', or 'TLSv1'. Default: 'TLSv1.2', unless + * changed using CLI options. Using --tls-min-v1.0 sets the default to + * 'TLSv1'. Using --tls-min-v1.1 sets the default to 'TLSv1.1'. Using + * --tls-min-v1.3 sets the default to 'TLSv1.3'. If multiple of the options + * are provided, the lowest minimum is used. + */ + let DEFAULT_MIN_VERSION: SecureVersion; + /** + * The default value of the ciphers option of tls.createSecureContext(). + * It can be assigned any of the supported OpenSSL ciphers. + * Defaults to the content of crypto.constants.defaultCoreCipherList, unless + * changed using CLI options using --tls-default-ciphers. + */ + let DEFAULT_CIPHERS: string; + /** + * An immutable array of strings representing the root certificates (in PEM + * format) used for verifying peer certificates. This is the default value + * of the ca option to tls.createSecureContext(). + */ + const rootCertificates: ReadonlyArray; +} +declare module "node:tls" { + export * from "tls"; +} diff --git a/node_modules/@types/node/trace_events.d.ts b/node_modules/@types/node/trace_events.d.ts new file mode 100644 index 00000000..33613595 --- /dev/null +++ b/node_modules/@types/node/trace_events.d.ts @@ -0,0 +1,182 @@ +/** + * The `node:trace_events` module provides a mechanism to centralize tracing + * information generated by V8, Node.js core, and userspace code. + * + * Tracing can be enabled with the `--trace-event-categories` command-line flag + * or by using the `node:trace_events` module. The `--trace-event-categories` flag + * accepts a list of comma-separated category names. + * + * The available categories are: + * + * * `node`: An empty placeholder. + * * `node.async_hooks`: Enables capture of detailed `async_hooks` trace data. + * The `async_hooks` events have a unique `asyncId` and a special `triggerId` `triggerAsyncId` property. + * * `node.bootstrap`: Enables capture of Node.js bootstrap milestones. + * * `node.console`: Enables capture of `console.time()` and `console.count()`output. + * * `node.threadpoolwork.sync`: Enables capture of trace data for threadpool + * synchronous operations, such as `blob`, `zlib`, `crypto` and `node_api`. + * * `node.threadpoolwork.async`: Enables capture of trace data for threadpool + * asynchronous operations, such as `blob`, `zlib`, `crypto` and `node_api`. + * * `node.dns.native`: Enables capture of trace data for DNS queries. + * * `node.net.native`: Enables capture of trace data for network. + * * `node.environment`: Enables capture of Node.js Environment milestones. + * * `node.fs.sync`: Enables capture of trace data for file system sync methods. + * * `node.fs_dir.sync`: Enables capture of trace data for file system sync + * directory methods. + * * `node.fs.async`: Enables capture of trace data for file system async methods. + * * `node.fs_dir.async`: Enables capture of trace data for file system async + * directory methods. + * * `node.perf`: Enables capture of `Performance API` measurements. + * * `node.perf.usertiming`: Enables capture of only Performance API User Timing + * measures and marks. + * * `node.perf.timerify`: Enables capture of only Performance API timerify + * measurements. + * * `node.promises.rejections`: Enables capture of trace data tracking the number + * of unhandled Promise rejections and handled-after-rejections. + * * `node.vm.script`: Enables capture of trace data for the `node:vm` module's`runInNewContext()`, `runInContext()`, and `runInThisContext()` methods. + * * `v8`: The `V8` events are GC, compiling, and execution related. + * * `node.http`: Enables capture of trace data for http request / response. + * + * By default the `node`, `node.async_hooks`, and `v8` categories are enabled. + * + * ```bash + * node --trace-event-categories v8,node,node.async_hooks server.js + * ``` + * + * Prior versions of Node.js required the use of the `--trace-events-enabled`flag to enable trace events. This requirement has been removed. However, the`--trace-events-enabled` flag _may_ still be + * used and will enable the`node`, `node.async_hooks`, and `v8` trace event categories by default. + * + * ```bash + * node --trace-events-enabled + * + * # is equivalent to + * + * node --trace-event-categories v8,node,node.async_hooks + * ``` + * + * Alternatively, trace events may be enabled using the `node:trace_events` module: + * + * ```js + * const trace_events = require('node:trace_events'); + * const tracing = trace_events.createTracing({ categories: ['node.perf'] }); + * tracing.enable(); // Enable trace event capture for the 'node.perf' category + * + * // do work + * + * tracing.disable(); // Disable trace event capture for the 'node.perf' category + * ``` + * + * Running Node.js with tracing enabled will produce log files that can be opened + * in the [`chrome://tracing`](https://www.chromium.org/developers/how-tos/trace-event-profiling-tool) tab of Chrome. + * + * The logging file is by default called `node_trace.${rotation}.log`, where`${rotation}` is an incrementing log-rotation id. The filepath pattern can + * be specified with `--trace-event-file-pattern` that accepts a template + * string that supports `${rotation}` and `${pid}`: + * + * ```bash + * node --trace-event-categories v8 --trace-event-file-pattern '${pid}-${rotation}.log' server.js + * ``` + * + * To guarantee that the log file is properly generated after signal events like`SIGINT`, `SIGTERM`, or `SIGBREAK`, make sure to have the appropriate handlers + * in your code, such as: + * + * ```js + * process.on('SIGINT', function onSigint() { + * console.info('Received SIGINT.'); + * process.exit(130); // Or applicable exit code depending on OS and signal + * }); + * ``` + * + * The tracing system uses the same time source + * as the one used by `process.hrtime()`. + * However the trace-event timestamps are expressed in microseconds, + * unlike `process.hrtime()` which returns nanoseconds. + * + * The features from this module are not available in `Worker` threads. + * @experimental + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/trace_events.js) + */ +declare module "trace_events" { + /** + * The `Tracing` object is used to enable or disable tracing for sets of + * categories. Instances are created using the + * `trace_events.createTracing()` method. + * + * When created, the `Tracing` object is disabled. Calling the + * `tracing.enable()` method adds the categories to the set of enabled trace + * event categories. Calling `tracing.disable()` will remove the categories + * from the set of enabled trace event categories. + */ + interface Tracing { + /** + * A comma-separated list of the trace event categories covered by this + * `Tracing` object. + */ + readonly categories: string; + /** + * Disables this `Tracing` object. + * + * Only trace event categories _not_ covered by other enabled `Tracing` + * objects and _not_ specified by the `--trace-event-categories` flag + * will be disabled. + */ + disable(): void; + /** + * Enables this `Tracing` object for the set of categories covered by + * the `Tracing` object. + */ + enable(): void; + /** + * `true` only if the `Tracing` object has been enabled. + */ + readonly enabled: boolean; + } + interface CreateTracingOptions { + /** + * An array of trace category names. Values included in the array are + * coerced to a string when possible. An error will be thrown if the + * value cannot be coerced. + */ + categories: string[]; + } + /** + * Creates and returns a `Tracing` object for the given set of `categories`. + * + * ```js + * const trace_events = require('node:trace_events'); + * const categories = ['node.perf', 'node.async_hooks']; + * const tracing = trace_events.createTracing({ categories }); + * tracing.enable(); + * // do stuff + * tracing.disable(); + * ``` + * @since v10.0.0 + * @return . + */ + function createTracing(options: CreateTracingOptions): Tracing; + /** + * Returns a comma-separated list of all currently-enabled trace event + * categories. The current set of enabled trace event categories is determined + * by the _union_ of all currently-enabled `Tracing` objects and any categories + * enabled using the `--trace-event-categories` flag. + * + * Given the file `test.js` below, the command`node --trace-event-categories node.perf test.js` will print`'node.async_hooks,node.perf'` to the console. + * + * ```js + * const trace_events = require('node:trace_events'); + * const t1 = trace_events.createTracing({ categories: ['node.async_hooks'] }); + * const t2 = trace_events.createTracing({ categories: ['node.perf'] }); + * const t3 = trace_events.createTracing({ categories: ['v8'] }); + * + * t1.enable(); + * t2.enable(); + * + * console.log(trace_events.getEnabledCategories()); + * ``` + * @since v10.0.0 + */ + function getEnabledCategories(): string | undefined; +} +declare module "node:trace_events" { + export * from "trace_events"; +} diff --git a/node_modules/@types/node/ts4.8/assert.d.ts b/node_modules/@types/node/ts4.8/assert.d.ts new file mode 100644 index 00000000..e237c56c --- /dev/null +++ b/node_modules/@types/node/ts4.8/assert.d.ts @@ -0,0 +1,996 @@ +/** + * The `node:assert` module provides a set of assertion functions for verifying + * invariants. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/assert.js) + */ +declare module "assert" { + /** + * An alias of {@link ok}. + * @since v0.5.9 + * @param value The input that is checked for being truthy. + */ + function assert(value: unknown, message?: string | Error): asserts value; + namespace assert { + /** + * Indicates the failure of an assertion. All errors thrown by the `node:assert`module will be instances of the `AssertionError` class. + */ + class AssertionError extends Error { + /** + * Set to the `actual` argument for methods such as {@link assert.strictEqual()}. + */ + actual: unknown; + /** + * Set to the `expected` argument for methods such as {@link assert.strictEqual()}. + */ + expected: unknown; + /** + * Set to the passed in operator value. + */ + operator: string; + /** + * Indicates if the message was auto-generated (`true`) or not. + */ + generatedMessage: boolean; + /** + * Value is always `ERR_ASSERTION` to show that the error is an assertion error. + */ + code: "ERR_ASSERTION"; + constructor(options?: { + /** If provided, the error message is set to this value. */ + message?: string | undefined; + /** The `actual` property on the error instance. */ + actual?: unknown | undefined; + /** The `expected` property on the error instance. */ + expected?: unknown | undefined; + /** The `operator` property on the error instance. */ + operator?: string | undefined; + /** If provided, the generated stack trace omits frames before this function. */ + // tslint:disable-next-line:ban-types + stackStartFn?: Function | undefined; + }); + } + /** + * This feature is deprecated and will be removed in a future version. + * Please consider using alternatives such as the `mock` helper function. + * @since v14.2.0, v12.19.0 + * @deprecated Deprecated + */ + class CallTracker { + /** + * The wrapper function is expected to be called exactly `exact` times. If the + * function has not been called exactly `exact` times when `tracker.verify()` is called, then `tracker.verify()` will throw an + * error. + * + * ```js + * import assert from 'node:assert'; + * + * // Creates call tracker. + * const tracker = new assert.CallTracker(); + * + * function func() {} + * + * // Returns a function that wraps func() that must be called exact times + * // before tracker.verify(). + * const callsfunc = tracker.calls(func); + * ``` + * @since v14.2.0, v12.19.0 + * @param [fn='A no-op function'] + * @param [exact=1] + * @return that wraps `fn`. + */ + calls(exact?: number): () => void; + calls any>(fn?: Func, exact?: number): Func; + /** + * Example: + * + * ```js + * import assert from 'node:assert'; + * + * const tracker = new assert.CallTracker(); + * + * function func() {} + * const callsfunc = tracker.calls(func); + * callsfunc(1, 2, 3); + * + * assert.deepStrictEqual(tracker.getCalls(callsfunc), + * [{ thisArg: undefined, arguments: [1, 2, 3] }]); + * ``` + * @since v18.8.0, v16.18.0 + * @param fn + * @return An Array with all the calls to a tracked function. + */ + getCalls(fn: Function): CallTrackerCall[]; + /** + * The arrays contains information about the expected and actual number of calls of + * the functions that have not been called the expected number of times. + * + * ```js + * import assert from 'node:assert'; + * + * // Creates call tracker. + * const tracker = new assert.CallTracker(); + * + * function func() {} + * + * // Returns a function that wraps func() that must be called exact times + * // before tracker.verify(). + * const callsfunc = tracker.calls(func, 2); + * + * // Returns an array containing information on callsfunc() + * console.log(tracker.report()); + * // [ + * // { + * // message: 'Expected the func function to be executed 2 time(s) but was + * // executed 0 time(s).', + * // actual: 0, + * // expected: 2, + * // operator: 'func', + * // stack: stack trace + * // } + * // ] + * ``` + * @since v14.2.0, v12.19.0 + * @return An Array of objects containing information about the wrapper functions returned by `calls`. + */ + report(): CallTrackerReportInformation[]; + /** + * Reset calls of the call tracker. + * If a tracked function is passed as an argument, the calls will be reset for it. + * If no arguments are passed, all tracked functions will be reset. + * + * ```js + * import assert from 'node:assert'; + * + * const tracker = new assert.CallTracker(); + * + * function func() {} + * const callsfunc = tracker.calls(func); + * + * callsfunc(); + * // Tracker was called once + * assert.strictEqual(tracker.getCalls(callsfunc).length, 1); + * + * tracker.reset(callsfunc); + * assert.strictEqual(tracker.getCalls(callsfunc).length, 0); + * ``` + * @since v18.8.0, v16.18.0 + * @param fn a tracked function to reset. + */ + reset(fn?: Function): void; + /** + * Iterates through the list of functions passed to `tracker.calls()` and will throw an error for functions that + * have not been called the expected number of times. + * + * ```js + * import assert from 'node:assert'; + * + * // Creates call tracker. + * const tracker = new assert.CallTracker(); + * + * function func() {} + * + * // Returns a function that wraps func() that must be called exact times + * // before tracker.verify(). + * const callsfunc = tracker.calls(func, 2); + * + * callsfunc(); + * + * // Will throw an error since callsfunc() was only called once. + * tracker.verify(); + * ``` + * @since v14.2.0, v12.19.0 + */ + verify(): void; + } + interface CallTrackerCall { + thisArg: object; + arguments: unknown[]; + } + interface CallTrackerReportInformation { + message: string; + /** The actual number of times the function was called. */ + actual: number; + /** The number of times the function was expected to be called. */ + expected: number; + /** The name of the function that is wrapped. */ + operator: string; + /** A stack trace of the function. */ + stack: object; + } + type AssertPredicate = RegExp | (new() => object) | ((thrown: unknown) => boolean) | object | Error; + /** + * Throws an `AssertionError` with the provided error message or a default + * error message. If the `message` parameter is an instance of an `Error` then + * it will be thrown instead of the `AssertionError`. + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.fail(); + * // AssertionError [ERR_ASSERTION]: Failed + * + * assert.fail('boom'); + * // AssertionError [ERR_ASSERTION]: boom + * + * assert.fail(new TypeError('need array')); + * // TypeError: need array + * ``` + * + * Using `assert.fail()` with more than two arguments is possible but deprecated. + * See below for further details. + * @since v0.1.21 + * @param [message='Failed'] + */ + function fail(message?: string | Error): never; + /** @deprecated since v10.0.0 - use fail([message]) or other assert functions instead. */ + function fail( + actual: unknown, + expected: unknown, + message?: string | Error, + operator?: string, + // tslint:disable-next-line:ban-types + stackStartFn?: Function, + ): never; + /** + * Tests if `value` is truthy. It is equivalent to`assert.equal(!!value, true, message)`. + * + * If `value` is not truthy, an `AssertionError` is thrown with a `message`property set equal to the value of the `message` parameter. If the `message`parameter is `undefined`, a default + * error message is assigned. If the `message`parameter is an instance of an `Error` then it will be thrown instead of the`AssertionError`. + * If no arguments are passed in at all `message` will be set to the string:`` 'No value argument passed to `assert.ok()`' ``. + * + * Be aware that in the `repl` the error message will be different to the one + * thrown in a file! See below for further details. + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.ok(true); + * // OK + * assert.ok(1); + * // OK + * + * assert.ok(); + * // AssertionError: No value argument passed to `assert.ok()` + * + * assert.ok(false, 'it\'s false'); + * // AssertionError: it's false + * + * // In the repl: + * assert.ok(typeof 123 === 'string'); + * // AssertionError: false == true + * + * // In a file (e.g. test.js): + * assert.ok(typeof 123 === 'string'); + * // AssertionError: The expression evaluated to a falsy value: + * // + * // assert.ok(typeof 123 === 'string') + * + * assert.ok(false); + * // AssertionError: The expression evaluated to a falsy value: + * // + * // assert.ok(false) + * + * assert.ok(0); + * // AssertionError: The expression evaluated to a falsy value: + * // + * // assert.ok(0) + * ``` + * + * ```js + * import assert from 'node:assert/strict'; + * + * // Using `assert()` works the same: + * assert(0); + * // AssertionError: The expression evaluated to a falsy value: + * // + * // assert(0) + * ``` + * @since v0.1.21 + */ + function ok(value: unknown, message?: string | Error): asserts value; + /** + * **Strict assertion mode** + * + * An alias of {@link strictEqual}. + * + * **Legacy assertion mode** + * + * > Stability: 3 - Legacy: Use {@link strictEqual} instead. + * + * Tests shallow, coercive equality between the `actual` and `expected` parameters + * using the [`==` operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Equality). `NaN` is specially handled + * and treated as being identical if both sides are `NaN`. + * + * ```js + * import assert from 'node:assert'; + * + * assert.equal(1, 1); + * // OK, 1 == 1 + * assert.equal(1, '1'); + * // OK, 1 == '1' + * assert.equal(NaN, NaN); + * // OK + * + * assert.equal(1, 2); + * // AssertionError: 1 == 2 + * assert.equal({ a: { b: 1 } }, { a: { b: 1 } }); + * // AssertionError: { a: { b: 1 } } == { a: { b: 1 } } + * ``` + * + * If the values are not equal, an `AssertionError` is thrown with a `message`property set equal to the value of the `message` parameter. If the `message`parameter is undefined, a default + * error message is assigned. If the `message`parameter is an instance of an `Error` then it will be thrown instead of the`AssertionError`. + * @since v0.1.21 + */ + function equal(actual: unknown, expected: unknown, message?: string | Error): void; + /** + * **Strict assertion mode** + * + * An alias of {@link notStrictEqual}. + * + * **Legacy assertion mode** + * + * > Stability: 3 - Legacy: Use {@link notStrictEqual} instead. + * + * Tests shallow, coercive inequality with the [`!=` operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Inequality). `NaN` is + * specially handled and treated as being identical if both sides are `NaN`. + * + * ```js + * import assert from 'node:assert'; + * + * assert.notEqual(1, 2); + * // OK + * + * assert.notEqual(1, 1); + * // AssertionError: 1 != 1 + * + * assert.notEqual(1, '1'); + * // AssertionError: 1 != '1' + * ``` + * + * If the values are equal, an `AssertionError` is thrown with a `message`property set equal to the value of the `message` parameter. If the `message`parameter is undefined, a default error + * message is assigned. If the `message`parameter is an instance of an `Error` then it will be thrown instead of the`AssertionError`. + * @since v0.1.21 + */ + function notEqual(actual: unknown, expected: unknown, message?: string | Error): void; + /** + * **Strict assertion mode** + * + * An alias of {@link deepStrictEqual}. + * + * **Legacy assertion mode** + * + * > Stability: 3 - Legacy: Use {@link deepStrictEqual} instead. + * + * Tests for deep equality between the `actual` and `expected` parameters. Consider + * using {@link deepStrictEqual} instead. {@link deepEqual} can have + * surprising results. + * + * _Deep equality_ means that the enumerable "own" properties of child objects + * are also recursively evaluated by the following rules. + * @since v0.1.21 + */ + function deepEqual(actual: unknown, expected: unknown, message?: string | Error): void; + /** + * **Strict assertion mode** + * + * An alias of {@link notDeepStrictEqual}. + * + * **Legacy assertion mode** + * + * > Stability: 3 - Legacy: Use {@link notDeepStrictEqual} instead. + * + * Tests for any deep inequality. Opposite of {@link deepEqual}. + * + * ```js + * import assert from 'node:assert'; + * + * const obj1 = { + * a: { + * b: 1, + * }, + * }; + * const obj2 = { + * a: { + * b: 2, + * }, + * }; + * const obj3 = { + * a: { + * b: 1, + * }, + * }; + * const obj4 = { __proto__: obj1 }; + * + * assert.notDeepEqual(obj1, obj1); + * // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } } + * + * assert.notDeepEqual(obj1, obj2); + * // OK + * + * assert.notDeepEqual(obj1, obj3); + * // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } } + * + * assert.notDeepEqual(obj1, obj4); + * // OK + * ``` + * + * If the values are deeply equal, an `AssertionError` is thrown with a`message` property set equal to the value of the `message` parameter. If the`message` parameter is undefined, a default + * error message is assigned. If the`message` parameter is an instance of an `Error` then it will be thrown + * instead of the `AssertionError`. + * @since v0.1.21 + */ + function notDeepEqual(actual: unknown, expected: unknown, message?: string | Error): void; + /** + * Tests strict equality between the `actual` and `expected` parameters as + * determined by [`Object.is()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is). + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.strictEqual(1, 2); + * // AssertionError [ERR_ASSERTION]: Expected inputs to be strictly equal: + * // + * // 1 !== 2 + * + * assert.strictEqual(1, 1); + * // OK + * + * assert.strictEqual('Hello foobar', 'Hello World!'); + * // AssertionError [ERR_ASSERTION]: Expected inputs to be strictly equal: + * // + actual - expected + * // + * // + 'Hello foobar' + * // - 'Hello World!' + * // ^ + * + * const apples = 1; + * const oranges = 2; + * assert.strictEqual(apples, oranges, `apples ${apples} !== oranges ${oranges}`); + * // AssertionError [ERR_ASSERTION]: apples 1 !== oranges 2 + * + * assert.strictEqual(1, '1', new TypeError('Inputs are not identical')); + * // TypeError: Inputs are not identical + * ``` + * + * If the values are not strictly equal, an `AssertionError` is thrown with a`message` property set equal to the value of the `message` parameter. If the`message` parameter is undefined, a + * default error message is assigned. If the`message` parameter is an instance of an `Error` then it will be thrown + * instead of the `AssertionError`. + * @since v0.1.21 + */ + function strictEqual(actual: unknown, expected: T, message?: string | Error): asserts actual is T; + /** + * Tests strict inequality between the `actual` and `expected` parameters as + * determined by [`Object.is()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is). + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.notStrictEqual(1, 2); + * // OK + * + * assert.notStrictEqual(1, 1); + * // AssertionError [ERR_ASSERTION]: Expected "actual" to be strictly unequal to: + * // + * // 1 + * + * assert.notStrictEqual(1, '1'); + * // OK + * ``` + * + * If the values are strictly equal, an `AssertionError` is thrown with a`message` property set equal to the value of the `message` parameter. If the`message` parameter is undefined, a + * default error message is assigned. If the`message` parameter is an instance of an `Error` then it will be thrown + * instead of the `AssertionError`. + * @since v0.1.21 + */ + function notStrictEqual(actual: unknown, expected: unknown, message?: string | Error): void; + /** + * Tests for deep equality between the `actual` and `expected` parameters. + * "Deep" equality means that the enumerable "own" properties of child objects + * are recursively evaluated also by the following rules. + * @since v1.2.0 + */ + function deepStrictEqual(actual: unknown, expected: T, message?: string | Error): asserts actual is T; + /** + * Tests for deep strict inequality. Opposite of {@link deepStrictEqual}. + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.notDeepStrictEqual({ a: 1 }, { a: '1' }); + * // OK + * ``` + * + * If the values are deeply and strictly equal, an `AssertionError` is thrown + * with a `message` property set equal to the value of the `message` parameter. If + * the `message` parameter is undefined, a default error message is assigned. If + * the `message` parameter is an instance of an `Error` then it will be thrown + * instead of the `AssertionError`. + * @since v1.2.0 + */ + function notDeepStrictEqual(actual: unknown, expected: unknown, message?: string | Error): void; + /** + * Expects the function `fn` to throw an error. + * + * If specified, `error` can be a [`Class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes), + * [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions), a validation function, + * a validation object where each property will be tested for strict deep equality, + * or an instance of error where each property will be tested for strict deep + * equality including the non-enumerable `message` and `name` properties. When + * using an object, it is also possible to use a regular expression, when + * validating against a string property. See below for examples. + * + * If specified, `message` will be appended to the message provided by the`AssertionError` if the `fn` call fails to throw or in case the error validation + * fails. + * + * Custom validation object/error instance: + * + * ```js + * import assert from 'node:assert/strict'; + * + * const err = new TypeError('Wrong value'); + * err.code = 404; + * err.foo = 'bar'; + * err.info = { + * nested: true, + * baz: 'text', + * }; + * err.reg = /abc/i; + * + * assert.throws( + * () => { + * throw err; + * }, + * { + * name: 'TypeError', + * message: 'Wrong value', + * info: { + * nested: true, + * baz: 'text', + * }, + * // Only properties on the validation object will be tested for. + * // Using nested objects requires all properties to be present. Otherwise + * // the validation is going to fail. + * }, + * ); + * + * // Using regular expressions to validate error properties: + * assert.throws( + * () => { + * throw err; + * }, + * { + * // The `name` and `message` properties are strings and using regular + * // expressions on those will match against the string. If they fail, an + * // error is thrown. + * name: /^TypeError$/, + * message: /Wrong/, + * foo: 'bar', + * info: { + * nested: true, + * // It is not possible to use regular expressions for nested properties! + * baz: 'text', + * }, + * // The `reg` property contains a regular expression and only if the + * // validation object contains an identical regular expression, it is going + * // to pass. + * reg: /abc/i, + * }, + * ); + * + * // Fails due to the different `message` and `name` properties: + * assert.throws( + * () => { + * const otherErr = new Error('Not found'); + * // Copy all enumerable properties from `err` to `otherErr`. + * for (const [key, value] of Object.entries(err)) { + * otherErr[key] = value; + * } + * throw otherErr; + * }, + * // The error's `message` and `name` properties will also be checked when using + * // an error as validation object. + * err, + * ); + * ``` + * + * Validate instanceof using constructor: + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.throws( + * () => { + * throw new Error('Wrong value'); + * }, + * Error, + * ); + * ``` + * + * Validate error message using [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions): + * + * Using a regular expression runs `.toString` on the error object, and will + * therefore also include the error name. + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.throws( + * () => { + * throw new Error('Wrong value'); + * }, + * /^Error: Wrong value$/, + * ); + * ``` + * + * Custom error validation: + * + * The function must return `true` to indicate all internal validations passed. + * It will otherwise fail with an `AssertionError`. + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.throws( + * () => { + * throw new Error('Wrong value'); + * }, + * (err) => { + * assert(err instanceof Error); + * assert(/value/.test(err)); + * // Avoid returning anything from validation functions besides `true`. + * // Otherwise, it's not clear what part of the validation failed. Instead, + * // throw an error about the specific validation that failed (as done in this + * // example) and add as much helpful debugging information to that error as + * // possible. + * return true; + * }, + * 'unexpected error', + * ); + * ``` + * + * `error` cannot be a string. If a string is provided as the second + * argument, then `error` is assumed to be omitted and the string will be used for`message` instead. This can lead to easy-to-miss mistakes. Using the same + * message as the thrown error message is going to result in an`ERR_AMBIGUOUS_ARGUMENT` error. Please read the example below carefully if using + * a string as the second argument gets considered: + * + * ```js + * import assert from 'node:assert/strict'; + * + * function throwingFirst() { + * throw new Error('First'); + * } + * + * function throwingSecond() { + * throw new Error('Second'); + * } + * + * function notThrowing() {} + * + * // The second argument is a string and the input function threw an Error. + * // The first case will not throw as it does not match for the error message + * // thrown by the input function! + * assert.throws(throwingFirst, 'Second'); + * // In the next example the message has no benefit over the message from the + * // error and since it is not clear if the user intended to actually match + * // against the error message, Node.js throws an `ERR_AMBIGUOUS_ARGUMENT` error. + * assert.throws(throwingSecond, 'Second'); + * // TypeError [ERR_AMBIGUOUS_ARGUMENT] + * + * // The string is only used (as message) in case the function does not throw: + * assert.throws(notThrowing, 'Second'); + * // AssertionError [ERR_ASSERTION]: Missing expected exception: Second + * + * // If it was intended to match for the error message do this instead: + * // It does not throw because the error messages match. + * assert.throws(throwingSecond, /Second$/); + * + * // If the error message does not match, an AssertionError is thrown. + * assert.throws(throwingFirst, /Second$/); + * // AssertionError [ERR_ASSERTION] + * ``` + * + * Due to the confusing error-prone notation, avoid a string as the second + * argument. + * @since v0.1.21 + */ + function throws(block: () => unknown, message?: string | Error): void; + function throws(block: () => unknown, error: AssertPredicate, message?: string | Error): void; + /** + * Asserts that the function `fn` does not throw an error. + * + * Using `assert.doesNotThrow()` is actually not useful because there + * is no benefit in catching an error and then rethrowing it. Instead, consider + * adding a comment next to the specific code path that should not throw and keep + * error messages as expressive as possible. + * + * When `assert.doesNotThrow()` is called, it will immediately call the `fn`function. + * + * If an error is thrown and it is the same type as that specified by the `error`parameter, then an `AssertionError` is thrown. If the error is of a + * different type, or if the `error` parameter is undefined, the error is + * propagated back to the caller. + * + * If specified, `error` can be a [`Class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes), + * [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions), or a validation + * function. See {@link throws} for more details. + * + * The following, for instance, will throw the `TypeError` because there is no + * matching error type in the assertion: + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.doesNotThrow( + * () => { + * throw new TypeError('Wrong value'); + * }, + * SyntaxError, + * ); + * ``` + * + * However, the following will result in an `AssertionError` with the message + * 'Got unwanted exception...': + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.doesNotThrow( + * () => { + * throw new TypeError('Wrong value'); + * }, + * TypeError, + * ); + * ``` + * + * If an `AssertionError` is thrown and a value is provided for the `message`parameter, the value of `message` will be appended to the `AssertionError` message: + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.doesNotThrow( + * () => { + * throw new TypeError('Wrong value'); + * }, + * /Wrong value/, + * 'Whoops', + * ); + * // Throws: AssertionError: Got unwanted exception: Whoops + * ``` + * @since v0.1.21 + */ + function doesNotThrow(block: () => unknown, message?: string | Error): void; + function doesNotThrow(block: () => unknown, error: AssertPredicate, message?: string | Error): void; + /** + * Throws `value` if `value` is not `undefined` or `null`. This is useful when + * testing the `error` argument in callbacks. The stack trace contains all frames + * from the error passed to `ifError()` including the potential new frames for`ifError()` itself. + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.ifError(null); + * // OK + * assert.ifError(0); + * // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: 0 + * assert.ifError('error'); + * // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: 'error' + * assert.ifError(new Error()); + * // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: Error + * + * // Create some random error frames. + * let err; + * (function errorFrame() { + * err = new Error('test error'); + * })(); + * + * (function ifErrorFrame() { + * assert.ifError(err); + * })(); + * // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: test error + * // at ifErrorFrame + * // at errorFrame + * ``` + * @since v0.1.97 + */ + function ifError(value: unknown): asserts value is null | undefined; + /** + * Awaits the `asyncFn` promise or, if `asyncFn` is a function, immediately + * calls the function and awaits the returned promise to complete. It will then + * check that the promise is rejected. + * + * If `asyncFn` is a function and it throws an error synchronously,`assert.rejects()` will return a rejected `Promise` with that error. If the + * function does not return a promise, `assert.rejects()` will return a rejected`Promise` with an `ERR_INVALID_RETURN_VALUE` error. In both cases the error + * handler is skipped. + * + * Besides the async nature to await the completion behaves identically to {@link throws}. + * + * If specified, `error` can be a [`Class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes), + * [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions), a validation function, + * an object where each property will be tested for, or an instance of error where + * each property will be tested for including the non-enumerable `message` and`name` properties. + * + * If specified, `message` will be the message provided by the `AssertionError` if the `asyncFn` fails to reject. + * + * ```js + * import assert from 'node:assert/strict'; + * + * await assert.rejects( + * async () => { + * throw new TypeError('Wrong value'); + * }, + * { + * name: 'TypeError', + * message: 'Wrong value', + * }, + * ); + * ``` + * + * ```js + * import assert from 'node:assert/strict'; + * + * await assert.rejects( + * async () => { + * throw new TypeError('Wrong value'); + * }, + * (err) => { + * assert.strictEqual(err.name, 'TypeError'); + * assert.strictEqual(err.message, 'Wrong value'); + * return true; + * }, + * ); + * ``` + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.rejects( + * Promise.reject(new Error('Wrong value')), + * Error, + * ).then(() => { + * // ... + * }); + * ``` + * + * `error` cannot be a string. If a string is provided as the second + * argument, then `error` is assumed to be omitted and the string will be used for`message` instead. This can lead to easy-to-miss mistakes. Please read the + * example in {@link throws} carefully if using a string as the second + * argument gets considered. + * @since v10.0.0 + */ + function rejects(block: (() => Promise) | Promise, message?: string | Error): Promise; + function rejects( + block: (() => Promise) | Promise, + error: AssertPredicate, + message?: string | Error, + ): Promise; + /** + * Awaits the `asyncFn` promise or, if `asyncFn` is a function, immediately + * calls the function and awaits the returned promise to complete. It will then + * check that the promise is not rejected. + * + * If `asyncFn` is a function and it throws an error synchronously,`assert.doesNotReject()` will return a rejected `Promise` with that error. If + * the function does not return a promise, `assert.doesNotReject()` will return a + * rejected `Promise` with an `ERR_INVALID_RETURN_VALUE` error. In both cases + * the error handler is skipped. + * + * Using `assert.doesNotReject()` is actually not useful because there is little + * benefit in catching a rejection and then rejecting it again. Instead, consider + * adding a comment next to the specific code path that should not reject and keep + * error messages as expressive as possible. + * + * If specified, `error` can be a [`Class`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes), + * [`RegExp`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions), or a validation + * function. See {@link throws} for more details. + * + * Besides the async nature to await the completion behaves identically to {@link doesNotThrow}. + * + * ```js + * import assert from 'node:assert/strict'; + * + * await assert.doesNotReject( + * async () => { + * throw new TypeError('Wrong value'); + * }, + * SyntaxError, + * ); + * ``` + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.doesNotReject(Promise.reject(new TypeError('Wrong value'))) + * .then(() => { + * // ... + * }); + * ``` + * @since v10.0.0 + */ + function doesNotReject( + block: (() => Promise) | Promise, + message?: string | Error, + ): Promise; + function doesNotReject( + block: (() => Promise) | Promise, + error: AssertPredicate, + message?: string | Error, + ): Promise; + /** + * Expects the `string` input to match the regular expression. + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.match('I will fail', /pass/); + * // AssertionError [ERR_ASSERTION]: The input did not match the regular ... + * + * assert.match(123, /pass/); + * // AssertionError [ERR_ASSERTION]: The "string" argument must be of type string. + * + * assert.match('I will pass', /pass/); + * // OK + * ``` + * + * If the values do not match, or if the `string` argument is of another type than`string`, an `AssertionError` is thrown with a `message` property set equal + * to the value of the `message` parameter. If the `message` parameter is + * undefined, a default error message is assigned. If the `message` parameter is an + * instance of an `Error` then it will be thrown instead of the `AssertionError`. + * @since v13.6.0, v12.16.0 + */ + function match(value: string, regExp: RegExp, message?: string | Error): void; + /** + * Expects the `string` input not to match the regular expression. + * + * ```js + * import assert from 'node:assert/strict'; + * + * assert.doesNotMatch('I will fail', /fail/); + * // AssertionError [ERR_ASSERTION]: The input was expected to not match the ... + * + * assert.doesNotMatch(123, /pass/); + * // AssertionError [ERR_ASSERTION]: The "string" argument must be of type string. + * + * assert.doesNotMatch('I will pass', /different/); + * // OK + * ``` + * + * If the values do match, or if the `string` argument is of another type than`string`, an `AssertionError` is thrown with a `message` property set equal + * to the value of the `message` parameter. If the `message` parameter is + * undefined, a default error message is assigned. If the `message` parameter is an + * instance of an `Error` then it will be thrown instead of the `AssertionError`. + * @since v13.6.0, v12.16.0 + */ + function doesNotMatch(value: string, regExp: RegExp, message?: string | Error): void; + const strict: + & Omit< + typeof assert, + | "equal" + | "notEqual" + | "deepEqual" + | "notDeepEqual" + | "ok" + | "strictEqual" + | "deepStrictEqual" + | "ifError" + | "strict" + > + & { + (value: unknown, message?: string | Error): asserts value; + equal: typeof strictEqual; + notEqual: typeof notStrictEqual; + deepEqual: typeof deepStrictEqual; + notDeepEqual: typeof notDeepStrictEqual; + // Mapped types and assertion functions are incompatible? + // TS2775: Assertions require every name in the call target + // to be declared with an explicit type annotation. + ok: typeof ok; + strictEqual: typeof strictEqual; + deepStrictEqual: typeof deepStrictEqual; + ifError: typeof ifError; + strict: typeof strict; + }; + } + export = assert; +} +declare module "node:assert" { + import assert = require("assert"); + export = assert; +} diff --git a/node_modules/@types/node/ts4.8/assert/strict.d.ts b/node_modules/@types/node/ts4.8/assert/strict.d.ts new file mode 100644 index 00000000..f333913a --- /dev/null +++ b/node_modules/@types/node/ts4.8/assert/strict.d.ts @@ -0,0 +1,8 @@ +declare module "assert/strict" { + import { strict } from "node:assert"; + export = strict; +} +declare module "node:assert/strict" { + import { strict } from "node:assert"; + export = strict; +} diff --git a/node_modules/@types/node/ts4.8/async_hooks.d.ts b/node_modules/@types/node/ts4.8/async_hooks.d.ts new file mode 100644 index 00000000..0667a615 --- /dev/null +++ b/node_modules/@types/node/ts4.8/async_hooks.d.ts @@ -0,0 +1,539 @@ +/** + * We strongly discourage the use of the `async_hooks` API. + * Other APIs that can cover most of its use cases include: + * + * * `AsyncLocalStorage` tracks async context + * * `process.getActiveResourcesInfo()` tracks active resources + * + * The `node:async_hooks` module provides an API to track asynchronous resources. + * It can be accessed using: + * + * ```js + * import async_hooks from 'node:async_hooks'; + * ``` + * @experimental + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/async_hooks.js) + */ +declare module "async_hooks" { + /** + * ```js + * import { executionAsyncId } from 'node:async_hooks'; + * import fs from 'node:fs'; + * + * console.log(executionAsyncId()); // 1 - bootstrap + * const path = '.'; + * fs.open(path, 'r', (err, fd) => { + * console.log(executionAsyncId()); // 6 - open() + * }); + * ``` + * + * The ID returned from `executionAsyncId()` is related to execution timing, not + * causality (which is covered by `triggerAsyncId()`): + * + * ```js + * const server = net.createServer((conn) => { + * // Returns the ID of the server, not of the new connection, because the + * // callback runs in the execution scope of the server's MakeCallback(). + * async_hooks.executionAsyncId(); + * + * }).listen(port, () => { + * // Returns the ID of a TickObject (process.nextTick()) because all + * // callbacks passed to .listen() are wrapped in a nextTick(). + * async_hooks.executionAsyncId(); + * }); + * ``` + * + * Promise contexts may not get precise `executionAsyncIds` by default. + * See the section on `promise execution tracking`. + * @since v8.1.0 + * @return The `asyncId` of the current execution context. Useful to track when something calls. + */ + function executionAsyncId(): number; + /** + * Resource objects returned by `executionAsyncResource()` are most often internal + * Node.js handle objects with undocumented APIs. Using any functions or properties + * on the object is likely to crash your application and should be avoided. + * + * Using `executionAsyncResource()` in the top-level execution context will + * return an empty object as there is no handle or request object to use, + * but having an object representing the top-level can be helpful. + * + * ```js + * import { open } from 'node:fs'; + * import { executionAsyncId, executionAsyncResource } from 'node:async_hooks'; + * + * console.log(executionAsyncId(), executionAsyncResource()); // 1 {} + * open(new URL(import.meta.url), 'r', (err, fd) => { + * console.log(executionAsyncId(), executionAsyncResource()); // 7 FSReqWrap + * }); + * ``` + * + * This can be used to implement continuation local storage without the + * use of a tracking `Map` to store the metadata: + * + * ```js + * import { createServer } from 'node:http'; + * import { + * executionAsyncId, + * executionAsyncResource, + * createHook, + * } from 'async_hooks'; + * const sym = Symbol('state'); // Private symbol to avoid pollution + * + * createHook({ + * init(asyncId, type, triggerAsyncId, resource) { + * const cr = executionAsyncResource(); + * if (cr) { + * resource[sym] = cr[sym]; + * } + * }, + * }).enable(); + * + * const server = createServer((req, res) => { + * executionAsyncResource()[sym] = { state: req.url }; + * setTimeout(function() { + * res.end(JSON.stringify(executionAsyncResource()[sym])); + * }, 100); + * }).listen(3000); + * ``` + * @since v13.9.0, v12.17.0 + * @return The resource representing the current execution. Useful to store data within the resource. + */ + function executionAsyncResource(): object; + /** + * ```js + * const server = net.createServer((conn) => { + * // The resource that caused (or triggered) this callback to be called + * // was that of the new connection. Thus the return value of triggerAsyncId() + * // is the asyncId of "conn". + * async_hooks.triggerAsyncId(); + * + * }).listen(port, () => { + * // Even though all callbacks passed to .listen() are wrapped in a nextTick() + * // the callback itself exists because the call to the server's .listen() + * // was made. So the return value would be the ID of the server. + * async_hooks.triggerAsyncId(); + * }); + * ``` + * + * Promise contexts may not get valid `triggerAsyncId`s by default. See + * the section on `promise execution tracking`. + * @return The ID of the resource responsible for calling the callback that is currently being executed. + */ + function triggerAsyncId(): number; + interface HookCallbacks { + /** + * Called when a class is constructed that has the possibility to emit an asynchronous event. + * @param asyncId a unique ID for the async resource + * @param type the type of the async resource + * @param triggerAsyncId the unique ID of the async resource in whose execution context this async resource was created + * @param resource reference to the resource representing the async operation, needs to be released during destroy + */ + init?(asyncId: number, type: string, triggerAsyncId: number, resource: object): void; + /** + * When an asynchronous operation is initiated or completes a callback is called to notify the user. + * The before callback is called just before said callback is executed. + * @param asyncId the unique identifier assigned to the resource about to execute the callback. + */ + before?(asyncId: number): void; + /** + * Called immediately after the callback specified in before is completed. + * @param asyncId the unique identifier assigned to the resource which has executed the callback. + */ + after?(asyncId: number): void; + /** + * Called when a promise has resolve() called. This may not be in the same execution id + * as the promise itself. + * @param asyncId the unique id for the promise that was resolve()d. + */ + promiseResolve?(asyncId: number): void; + /** + * Called after the resource corresponding to asyncId is destroyed + * @param asyncId a unique ID for the async resource + */ + destroy?(asyncId: number): void; + } + interface AsyncHook { + /** + * Enable the callbacks for a given AsyncHook instance. If no callbacks are provided enabling is a noop. + */ + enable(): this; + /** + * Disable the callbacks for a given AsyncHook instance from the global pool of AsyncHook callbacks to be executed. Once a hook has been disabled it will not be called again until enabled. + */ + disable(): this; + } + /** + * Registers functions to be called for different lifetime events of each async + * operation. + * + * The callbacks `init()`/`before()`/`after()`/`destroy()` are called for the + * respective asynchronous event during a resource's lifetime. + * + * All callbacks are optional. For example, if only resource cleanup needs to + * be tracked, then only the `destroy` callback needs to be passed. The + * specifics of all functions that can be passed to `callbacks` is in the `Hook Callbacks` section. + * + * ```js + * import { createHook } from 'node:async_hooks'; + * + * const asyncHook = createHook({ + * init(asyncId, type, triggerAsyncId, resource) { }, + * destroy(asyncId) { }, + * }); + * ``` + * + * The callbacks will be inherited via the prototype chain: + * + * ```js + * class MyAsyncCallbacks { + * init(asyncId, type, triggerAsyncId, resource) { } + * destroy(asyncId) {} + * } + * + * class MyAddedCallbacks extends MyAsyncCallbacks { + * before(asyncId) { } + * after(asyncId) { } + * } + * + * const asyncHook = async_hooks.createHook(new MyAddedCallbacks()); + * ``` + * + * Because promises are asynchronous resources whose lifecycle is tracked + * via the async hooks mechanism, the `init()`, `before()`, `after()`, and`destroy()` callbacks _must not_ be async functions that return promises. + * @since v8.1.0 + * @param callbacks The `Hook Callbacks` to register + * @return Instance used for disabling and enabling hooks + */ + function createHook(callbacks: HookCallbacks): AsyncHook; + interface AsyncResourceOptions { + /** + * The ID of the execution context that created this async event. + * @default executionAsyncId() + */ + triggerAsyncId?: number | undefined; + /** + * Disables automatic `emitDestroy` when the object is garbage collected. + * This usually does not need to be set (even if `emitDestroy` is called + * manually), unless the resource's `asyncId` is retrieved and the + * sensitive API's `emitDestroy` is called with it. + * @default false + */ + requireManualDestroy?: boolean | undefined; + } + /** + * The class `AsyncResource` is designed to be extended by the embedder's async + * resources. Using this, users can easily trigger the lifetime events of their + * own resources. + * + * The `init` hook will trigger when an `AsyncResource` is instantiated. + * + * The following is an overview of the `AsyncResource` API. + * + * ```js + * import { AsyncResource, executionAsyncId } from 'node:async_hooks'; + * + * // AsyncResource() is meant to be extended. Instantiating a + * // new AsyncResource() also triggers init. If triggerAsyncId is omitted then + * // async_hook.executionAsyncId() is used. + * const asyncResource = new AsyncResource( + * type, { triggerAsyncId: executionAsyncId(), requireManualDestroy: false }, + * ); + * + * // Run a function in the execution context of the resource. This will + * // * establish the context of the resource + * // * trigger the AsyncHooks before callbacks + * // * call the provided function `fn` with the supplied arguments + * // * trigger the AsyncHooks after callbacks + * // * restore the original execution context + * asyncResource.runInAsyncScope(fn, thisArg, ...args); + * + * // Call AsyncHooks destroy callbacks. + * asyncResource.emitDestroy(); + * + * // Return the unique ID assigned to the AsyncResource instance. + * asyncResource.asyncId(); + * + * // Return the trigger ID for the AsyncResource instance. + * asyncResource.triggerAsyncId(); + * ``` + */ + class AsyncResource { + /** + * AsyncResource() is meant to be extended. Instantiating a + * new AsyncResource() also triggers init. If triggerAsyncId is omitted then + * async_hook.executionAsyncId() is used. + * @param type The type of async event. + * @param triggerAsyncId The ID of the execution context that created + * this async event (default: `executionAsyncId()`), or an + * AsyncResourceOptions object (since v9.3.0) + */ + constructor(type: string, triggerAsyncId?: number | AsyncResourceOptions); + /** + * Binds the given function to the current execution context. + * @since v14.8.0, v12.19.0 + * @param fn The function to bind to the current execution context. + * @param type An optional name to associate with the underlying `AsyncResource`. + */ + static bind any, ThisArg>( + fn: Func, + type?: string, + thisArg?: ThisArg, + ): Func; + /** + * Binds the given function to execute to this `AsyncResource`'s scope. + * @since v14.8.0, v12.19.0 + * @param fn The function to bind to the current `AsyncResource`. + */ + bind any>(fn: Func): Func; + /** + * Call the provided function with the provided arguments in the execution context + * of the async resource. This will establish the context, trigger the AsyncHooks + * before callbacks, call the function, trigger the AsyncHooks after callbacks, and + * then restore the original execution context. + * @since v9.6.0 + * @param fn The function to call in the execution context of this async resource. + * @param thisArg The receiver to be used for the function call. + * @param args Optional arguments to pass to the function. + */ + runInAsyncScope( + fn: (this: This, ...args: any[]) => Result, + thisArg?: This, + ...args: any[] + ): Result; + /** + * Call all `destroy` hooks. This should only ever be called once. An error will + * be thrown if it is called more than once. This **must** be manually called. If + * the resource is left to be collected by the GC then the `destroy` hooks will + * never be called. + * @return A reference to `asyncResource`. + */ + emitDestroy(): this; + /** + * @return The unique `asyncId` assigned to the resource. + */ + asyncId(): number; + /** + * @return The same `triggerAsyncId` that is passed to the `AsyncResource` constructor. + */ + triggerAsyncId(): number; + } + /** + * This class creates stores that stay coherent through asynchronous operations. + * + * While you can create your own implementation on top of the `node:async_hooks`module, `AsyncLocalStorage` should be preferred as it is a performant and memory + * safe implementation that involves significant optimizations that are non-obvious + * to implement. + * + * The following example uses `AsyncLocalStorage` to build a simple logger + * that assigns IDs to incoming HTTP requests and includes them in messages + * logged within each request. + * + * ```js + * import http from 'node:http'; + * import { AsyncLocalStorage } from 'node:async_hooks'; + * + * const asyncLocalStorage = new AsyncLocalStorage(); + * + * function logWithId(msg) { + * const id = asyncLocalStorage.getStore(); + * console.log(`${id !== undefined ? id : '-'}:`, msg); + * } + * + * let idSeq = 0; + * http.createServer((req, res) => { + * asyncLocalStorage.run(idSeq++, () => { + * logWithId('start'); + * // Imagine any chain of async operations here + * setImmediate(() => { + * logWithId('finish'); + * res.end(); + * }); + * }); + * }).listen(8080); + * + * http.get('http://localhost:8080'); + * http.get('http://localhost:8080'); + * // Prints: + * // 0: start + * // 1: start + * // 0: finish + * // 1: finish + * ``` + * + * Each instance of `AsyncLocalStorage` maintains an independent storage context. + * Multiple instances can safely exist simultaneously without risk of interfering + * with each other's data. + * @since v13.10.0, v12.17.0 + */ + class AsyncLocalStorage { + /** + * Binds the given function to the current execution context. + * @since v19.8.0 + * @experimental + * @param fn The function to bind to the current execution context. + * @return A new function that calls `fn` within the captured execution context. + */ + static bind any>(fn: Func): Func; + /** + * Captures the current execution context and returns a function that accepts a + * function as an argument. Whenever the returned function is called, it + * calls the function passed to it within the captured context. + * + * ```js + * const asyncLocalStorage = new AsyncLocalStorage(); + * const runInAsyncScope = asyncLocalStorage.run(123, () => AsyncLocalStorage.snapshot()); + * const result = asyncLocalStorage.run(321, () => runInAsyncScope(() => asyncLocalStorage.getStore())); + * console.log(result); // returns 123 + * ``` + * + * AsyncLocalStorage.snapshot() can replace the use of AsyncResource for simple + * async context tracking purposes, for example: + * + * ```js + * class Foo { + * #runInAsyncScope = AsyncLocalStorage.snapshot(); + * + * get() { return this.#runInAsyncScope(() => asyncLocalStorage.getStore()); } + * } + * + * const foo = asyncLocalStorage.run(123, () => new Foo()); + * console.log(asyncLocalStorage.run(321, () => foo.get())); // returns 123 + * ``` + * @since v19.8.0 + * @experimental + * @return A new function with the signature `(fn: (...args) : R, ...args) : R`. + */ + static snapshot(): (fn: (...args: TArgs) => R, ...args: TArgs) => R; + /** + * Disables the instance of `AsyncLocalStorage`. All subsequent calls + * to `asyncLocalStorage.getStore()` will return `undefined` until`asyncLocalStorage.run()` or `asyncLocalStorage.enterWith()` is called again. + * + * When calling `asyncLocalStorage.disable()`, all current contexts linked to the + * instance will be exited. + * + * Calling `asyncLocalStorage.disable()` is required before the`asyncLocalStorage` can be garbage collected. This does not apply to stores + * provided by the `asyncLocalStorage`, as those objects are garbage collected + * along with the corresponding async resources. + * + * Use this method when the `asyncLocalStorage` is not in use anymore + * in the current process. + * @since v13.10.0, v12.17.0 + * @experimental + */ + disable(): void; + /** + * Returns the current store. + * If called outside of an asynchronous context initialized by + * calling `asyncLocalStorage.run()` or `asyncLocalStorage.enterWith()`, it + * returns `undefined`. + * @since v13.10.0, v12.17.0 + */ + getStore(): T | undefined; + /** + * Runs a function synchronously within a context and returns its + * return value. The store is not accessible outside of the callback function. + * The store is accessible to any asynchronous operations created within the + * callback. + * + * The optional `args` are passed to the callback function. + * + * If the callback function throws an error, the error is thrown by `run()` too. + * The stacktrace is not impacted by this call and the context is exited. + * + * Example: + * + * ```js + * const store = { id: 2 }; + * try { + * asyncLocalStorage.run(store, () => { + * asyncLocalStorage.getStore(); // Returns the store object + * setTimeout(() => { + * asyncLocalStorage.getStore(); // Returns the store object + * }, 200); + * throw new Error(); + * }); + * } catch (e) { + * asyncLocalStorage.getStore(); // Returns undefined + * // The error will be caught here + * } + * ``` + * @since v13.10.0, v12.17.0 + */ + run(store: T, callback: () => R): R; + run(store: T, callback: (...args: TArgs) => R, ...args: TArgs): R; + /** + * Runs a function synchronously outside of a context and returns its + * return value. The store is not accessible within the callback function or + * the asynchronous operations created within the callback. Any `getStore()`call done within the callback function will always return `undefined`. + * + * The optional `args` are passed to the callback function. + * + * If the callback function throws an error, the error is thrown by `exit()` too. + * The stacktrace is not impacted by this call and the context is re-entered. + * + * Example: + * + * ```js + * // Within a call to run + * try { + * asyncLocalStorage.getStore(); // Returns the store object or value + * asyncLocalStorage.exit(() => { + * asyncLocalStorage.getStore(); // Returns undefined + * throw new Error(); + * }); + * } catch (e) { + * asyncLocalStorage.getStore(); // Returns the same object or value + * // The error will be caught here + * } + * ``` + * @since v13.10.0, v12.17.0 + * @experimental + */ + exit(callback: (...args: TArgs) => R, ...args: TArgs): R; + /** + * Transitions into the context for the remainder of the current + * synchronous execution and then persists the store through any following + * asynchronous calls. + * + * Example: + * + * ```js + * const store = { id: 1 }; + * // Replaces previous store with the given store object + * asyncLocalStorage.enterWith(store); + * asyncLocalStorage.getStore(); // Returns the store object + * someAsyncOperation(() => { + * asyncLocalStorage.getStore(); // Returns the same object + * }); + * ``` + * + * This transition will continue for the _entire_ synchronous execution. + * This means that if, for example, the context is entered within an event + * handler subsequent event handlers will also run within that context unless + * specifically bound to another context with an `AsyncResource`. That is why`run()` should be preferred over `enterWith()` unless there are strong reasons + * to use the latter method. + * + * ```js + * const store = { id: 1 }; + * + * emitter.on('my-event', () => { + * asyncLocalStorage.enterWith(store); + * }); + * emitter.on('my-event', () => { + * asyncLocalStorage.getStore(); // Returns the same object + * }); + * + * asyncLocalStorage.getStore(); // Returns undefined + * emitter.emit('my-event'); + * asyncLocalStorage.getStore(); // Returns the same object + * ``` + * @since v13.11.0, v12.17.0 + * @experimental + */ + enterWith(store: T): void; + } +} +declare module "node:async_hooks" { + export * from "async_hooks"; +} diff --git a/node_modules/@types/node/ts4.8/buffer.d.ts b/node_modules/@types/node/ts4.8/buffer.d.ts new file mode 100644 index 00000000..a2dbc718 --- /dev/null +++ b/node_modules/@types/node/ts4.8/buffer.d.ts @@ -0,0 +1,2362 @@ +/** + * `Buffer` objects are used to represent a fixed-length sequence of bytes. Many + * Node.js APIs support `Buffer`s. + * + * The `Buffer` class is a subclass of JavaScript's [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) class and + * extends it with methods that cover additional use cases. Node.js APIs accept + * plain [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) s wherever `Buffer`s are supported as well. + * + * While the `Buffer` class is available within the global scope, it is still + * recommended to explicitly reference it via an import or require statement. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Creates a zero-filled Buffer of length 10. + * const buf1 = Buffer.alloc(10); + * + * // Creates a Buffer of length 10, + * // filled with bytes which all have the value `1`. + * const buf2 = Buffer.alloc(10, 1); + * + * // Creates an uninitialized buffer of length 10. + * // This is faster than calling Buffer.alloc() but the returned + * // Buffer instance might contain old data that needs to be + * // overwritten using fill(), write(), or other functions that fill the Buffer's + * // contents. + * const buf3 = Buffer.allocUnsafe(10); + * + * // Creates a Buffer containing the bytes [1, 2, 3]. + * const buf4 = Buffer.from([1, 2, 3]); + * + * // Creates a Buffer containing the bytes [1, 1, 1, 1] – the entries + * // are all truncated using `(value & 255)` to fit into the range 0–255. + * const buf5 = Buffer.from([257, 257.5, -255, '1']); + * + * // Creates a Buffer containing the UTF-8-encoded bytes for the string 'tést': + * // [0x74, 0xc3, 0xa9, 0x73, 0x74] (in hexadecimal notation) + * // [116, 195, 169, 115, 116] (in decimal notation) + * const buf6 = Buffer.from('tést'); + * + * // Creates a Buffer containing the Latin-1 bytes [0x74, 0xe9, 0x73, 0x74]. + * const buf7 = Buffer.from('tést', 'latin1'); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/buffer.js) + */ +declare module "buffer" { + import { BinaryLike } from "node:crypto"; + import { ReadableStream as WebReadableStream } from "node:stream/web"; + /** + * This function returns `true` if `input` contains only valid UTF-8-encoded data, + * including the case in which `input` is empty. + * + * Throws if the `input` is a detached array buffer. + * @since v19.4.0, v18.14.0 + * @param input The input to validate. + */ + export function isUtf8(input: Buffer | ArrayBuffer | NodeJS.TypedArray): boolean; + /** + * This function returns `true` if `input` contains only valid ASCII-encoded data, + * including the case in which `input` is empty. + * + * Throws if the `input` is a detached array buffer. + * @since v19.6.0, v18.15.0 + * @param input The input to validate. + */ + export function isAscii(input: Buffer | ArrayBuffer | NodeJS.TypedArray): boolean; + export const INSPECT_MAX_BYTES: number; + export const kMaxLength: number; + export const kStringMaxLength: number; + export const constants: { + MAX_LENGTH: number; + MAX_STRING_LENGTH: number; + }; + export type TranscodeEncoding = + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "latin1" + | "binary"; + /** + * Re-encodes the given `Buffer` or `Uint8Array` instance from one character + * encoding to another. Returns a new `Buffer` instance. + * + * Throws if the `fromEnc` or `toEnc` specify invalid character encodings or if + * conversion from `fromEnc` to `toEnc` is not permitted. + * + * Encodings supported by `buffer.transcode()` are: `'ascii'`, `'utf8'`,`'utf16le'`, `'ucs2'`, `'latin1'`, and `'binary'`. + * + * The transcoding process will use substitution characters if a given byte + * sequence cannot be adequately represented in the target encoding. For instance: + * + * ```js + * import { Buffer, transcode } from 'node:buffer'; + * + * const newBuf = transcode(Buffer.from('€'), 'utf8', 'ascii'); + * console.log(newBuf.toString('ascii')); + * // Prints: '?' + * ``` + * + * Because the Euro (`€`) sign is not representable in US-ASCII, it is replaced + * with `?` in the transcoded `Buffer`. + * @since v7.1.0 + * @param source A `Buffer` or `Uint8Array` instance. + * @param fromEnc The current encoding. + * @param toEnc To target encoding. + */ + export function transcode(source: Uint8Array, fromEnc: TranscodeEncoding, toEnc: TranscodeEncoding): Buffer; + export const SlowBuffer: { + /** @deprecated since v6.0.0, use `Buffer.allocUnsafeSlow()` */ + new(size: number): Buffer; + prototype: Buffer; + }; + /** + * Resolves a `'blob:nodedata:...'` an associated `Blob` object registered using + * a prior call to `URL.createObjectURL()`. + * @since v16.7.0 + * @experimental + * @param id A `'blob:nodedata:...` URL string returned by a prior call to `URL.createObjectURL()`. + */ + export function resolveObjectURL(id: string): Blob | undefined; + export { Buffer }; + /** + * @experimental + */ + export interface BlobOptions { + /** + * @default 'utf8' + */ + encoding?: BufferEncoding | undefined; + /** + * The Blob content-type. The intent is for `type` to convey + * the MIME media type of the data, however no validation of the type format + * is performed. + */ + type?: string | undefined; + } + /** + * A [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) encapsulates immutable, raw data that can be safely shared across + * multiple worker threads. + * @since v15.7.0, v14.18.0 + */ + export class Blob { + /** + * The total size of the `Blob` in bytes. + * @since v15.7.0, v14.18.0 + */ + readonly size: number; + /** + * The content-type of the `Blob`. + * @since v15.7.0, v14.18.0 + */ + readonly type: string; + /** + * Creates a new `Blob` object containing a concatenation of the given sources. + * + * {ArrayBuffer}, {TypedArray}, {DataView}, and {Buffer} sources are copied into + * the 'Blob' and can therefore be safely modified after the 'Blob' is created. + * + * String sources are also copied into the `Blob`. + */ + constructor(sources: Array, options?: BlobOptions); + /** + * Returns a promise that fulfills with an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) containing a copy of + * the `Blob` data. + * @since v15.7.0, v14.18.0 + */ + arrayBuffer(): Promise; + /** + * Creates and returns a new `Blob` containing a subset of this `Blob` objects + * data. The original `Blob` is not altered. + * @since v15.7.0, v14.18.0 + * @param start The starting index. + * @param end The ending index. + * @param type The content-type for the new `Blob` + */ + slice(start?: number, end?: number, type?: string): Blob; + /** + * Returns a promise that fulfills with the contents of the `Blob` decoded as a + * UTF-8 string. + * @since v15.7.0, v14.18.0 + */ + text(): Promise; + /** + * Returns a new `ReadableStream` that allows the content of the `Blob` to be read. + * @since v16.7.0 + */ + stream(): WebReadableStream; + } + export interface FileOptions { + /** + * One of either `'transparent'` or `'native'`. When set to `'native'`, line endings in string source parts will be + * converted to the platform native line-ending as specified by `require('node:os').EOL`. + */ + endings?: "native" | "transparent"; + /** The File content-type. */ + type?: string; + /** The last modified date of the file. `Default`: Date.now(). */ + lastModified?: number; + } + /** + * A [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File) provides information about files. + * @since v19.2.0, v18.13.0 + */ + export class File extends Blob { + constructor(sources: Array, fileName: string, options?: FileOptions); + /** + * The name of the `File`. + * @since v19.2.0, v18.13.0 + */ + readonly name: string; + /** + * The last modified date of the `File`. + * @since v19.2.0, v18.13.0 + */ + readonly lastModified: number; + } + export import atob = globalThis.atob; + export import btoa = globalThis.btoa; + import { Blob as NodeBlob } from "buffer"; + // This conditional type will be the existing global Blob in a browser, or + // the copy below in a Node environment. + type __Blob = typeof globalThis extends { onmessage: any; Blob: any } ? {} : NodeBlob; + global { + namespace NodeJS { + export { BufferEncoding }; + } + // Buffer class + type BufferEncoding = + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "base64" + | "base64url" + | "latin1" + | "binary" + | "hex"; + type WithImplicitCoercion = + | T + | { + valueOf(): T; + }; + /** + * Raw data is stored in instances of the Buffer class. + * A Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized. + * Valid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'base64url'|'binary'(deprecated)|'hex' + */ + interface BufferConstructor { + /** + * Allocates a new buffer containing the given {str}. + * + * @param str String to store in buffer. + * @param encoding encoding to use, optional. Default is 'utf8' + * @deprecated since v10.0.0 - Use `Buffer.from(string[, encoding])` instead. + */ + new(str: string, encoding?: BufferEncoding): Buffer; + /** + * Allocates a new buffer of {size} octets. + * + * @param size count of octets to allocate. + * @deprecated since v10.0.0 - Use `Buffer.alloc()` instead (also see `Buffer.allocUnsafe()`). + */ + new(size: number): Buffer; + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + * @deprecated since v10.0.0 - Use `Buffer.from(array)` instead. + */ + new(array: Uint8Array): Buffer; + /** + * Produces a Buffer backed by the same allocated memory as + * the given {ArrayBuffer}/{SharedArrayBuffer}. + * + * @param arrayBuffer The ArrayBuffer with which to share memory. + * @deprecated since v10.0.0 - Use `Buffer.from(arrayBuffer[, byteOffset[, length]])` instead. + */ + new(arrayBuffer: ArrayBuffer | SharedArrayBuffer): Buffer; + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + * @deprecated since v10.0.0 - Use `Buffer.from(array)` instead. + */ + new(array: ReadonlyArray): Buffer; + /** + * Copies the passed {buffer} data onto a new {Buffer} instance. + * + * @param buffer The buffer to copy. + * @deprecated since v10.0.0 - Use `Buffer.from(buffer)` instead. + */ + new(buffer: Buffer): Buffer; + /** + * Allocates a new `Buffer` using an `array` of bytes in the range `0` – `255`. + * Array entries outside that range will be truncated to fit into it. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Creates a new Buffer containing the UTF-8 bytes of the string 'buffer'. + * const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]); + * ``` + * + * If `array` is an `Array`\-like object (that is, one with a `length` property of + * type `number`), it is treated as if it is an array, unless it is a `Buffer` or + * a `Uint8Array`. This means all other `TypedArray` variants get treated as an`Array`. To create a `Buffer` from the bytes backing a `TypedArray`, use `Buffer.copyBytesFrom()`. + * + * A `TypeError` will be thrown if `array` is not an `Array` or another type + * appropriate for `Buffer.from()` variants. + * + * `Buffer.from(array)` and `Buffer.from(string)` may also use the internal`Buffer` pool like `Buffer.allocUnsafe()` does. + * @since v5.10.0 + */ + from( + arrayBuffer: WithImplicitCoercion, + byteOffset?: number, + length?: number, + ): Buffer; + /** + * Creates a new Buffer using the passed {data} + * @param data data to create a new Buffer + */ + from(data: Uint8Array | ReadonlyArray): Buffer; + from(data: WithImplicitCoercion | string>): Buffer; + /** + * Creates a new Buffer containing the given JavaScript string {str}. + * If provided, the {encoding} parameter identifies the character encoding. + * If not provided, {encoding} defaults to 'utf8'. + */ + from( + str: + | WithImplicitCoercion + | { + [Symbol.toPrimitive](hint: "string"): string; + }, + encoding?: BufferEncoding, + ): Buffer; + /** + * Creates a new Buffer using the passed {data} + * @param values to create a new Buffer + */ + of(...items: number[]): Buffer; + /** + * Returns `true` if `obj` is a `Buffer`, `false` otherwise. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * Buffer.isBuffer(Buffer.alloc(10)); // true + * Buffer.isBuffer(Buffer.from('foo')); // true + * Buffer.isBuffer('a string'); // false + * Buffer.isBuffer([]); // false + * Buffer.isBuffer(new Uint8Array(1024)); // false + * ``` + * @since v0.1.101 + */ + isBuffer(obj: any): obj is Buffer; + /** + * Returns `true` if `encoding` is the name of a supported character encoding, + * or `false` otherwise. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * console.log(Buffer.isEncoding('utf8')); + * // Prints: true + * + * console.log(Buffer.isEncoding('hex')); + * // Prints: true + * + * console.log(Buffer.isEncoding('utf/8')); + * // Prints: false + * + * console.log(Buffer.isEncoding('')); + * // Prints: false + * ``` + * @since v0.9.1 + * @param encoding A character encoding name to check. + */ + isEncoding(encoding: string): encoding is BufferEncoding; + /** + * Returns the byte length of a string when encoded using `encoding`. + * This is not the same as [`String.prototype.length`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length), which does not account + * for the encoding that is used to convert the string into bytes. + * + * For `'base64'`, `'base64url'`, and `'hex'`, this function assumes valid input. + * For strings that contain non-base64/hex-encoded data (e.g. whitespace), the + * return value might be greater than the length of a `Buffer` created from the + * string. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const str = '\u00bd + \u00bc = \u00be'; + * + * console.log(`${str}: ${str.length} characters, ` + + * `${Buffer.byteLength(str, 'utf8')} bytes`); + * // Prints: ½ + ¼ = ¾: 9 characters, 12 bytes + * ``` + * + * When `string` is a + * `Buffer`/[`DataView`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView)/[`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/- + * Reference/Global_Objects/TypedArray)/[`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)/[`SharedArrayBuffer`](https://develop- + * er.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer), the byte length as reported by `.byteLength`is returned. + * @since v0.1.90 + * @param string A value to calculate the length of. + * @param [encoding='utf8'] If `string` is a string, this is its encoding. + * @return The number of bytes contained within `string`. + */ + byteLength( + string: string | NodeJS.ArrayBufferView | ArrayBuffer | SharedArrayBuffer, + encoding?: BufferEncoding, + ): number; + /** + * Returns a new `Buffer` which is the result of concatenating all the `Buffer`instances in the `list` together. + * + * If the list has no items, or if the `totalLength` is 0, then a new zero-length`Buffer` is returned. + * + * If `totalLength` is not provided, it is calculated from the `Buffer` instances + * in `list` by adding their lengths. + * + * If `totalLength` is provided, it is coerced to an unsigned integer. If the + * combined length of the `Buffer`s in `list` exceeds `totalLength`, the result is + * truncated to `totalLength`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Create a single `Buffer` from a list of three `Buffer` instances. + * + * const buf1 = Buffer.alloc(10); + * const buf2 = Buffer.alloc(14); + * const buf3 = Buffer.alloc(18); + * const totalLength = buf1.length + buf2.length + buf3.length; + * + * console.log(totalLength); + * // Prints: 42 + * + * const bufA = Buffer.concat([buf1, buf2, buf3], totalLength); + * + * console.log(bufA); + * // Prints: + * console.log(bufA.length); + * // Prints: 42 + * ``` + * + * `Buffer.concat()` may also use the internal `Buffer` pool like `Buffer.allocUnsafe()` does. + * @since v0.7.11 + * @param list List of `Buffer` or {@link Uint8Array} instances to concatenate. + * @param totalLength Total length of the `Buffer` instances in `list` when concatenated. + */ + concat(list: ReadonlyArray, totalLength?: number): Buffer; + /** + * Copies the underlying memory of `view` into a new `Buffer`. + * + * ```js + * const u16 = new Uint16Array([0, 0xffff]); + * const buf = Buffer.copyBytesFrom(u16, 1, 1); + * u16[1] = 0; + * console.log(buf.length); // 2 + * console.log(buf[0]); // 255 + * console.log(buf[1]); // 255 + * ``` + * @since v19.8.0 + * @param view The {TypedArray} to copy. + * @param [offset=': 0'] The starting offset within `view`. + * @param [length=view.length - offset] The number of elements from `view` to copy. + */ + copyBytesFrom(view: NodeJS.TypedArray, offset?: number, length?: number): Buffer; + /** + * Compares `buf1` to `buf2`, typically for the purpose of sorting arrays of`Buffer` instances. This is equivalent to calling `buf1.compare(buf2)`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.from('1234'); + * const buf2 = Buffer.from('0123'); + * const arr = [buf1, buf2]; + * + * console.log(arr.sort(Buffer.compare)); + * // Prints: [ , ] + * // (This result is equal to: [buf2, buf1].) + * ``` + * @since v0.11.13 + * @return Either `-1`, `0`, or `1`, depending on the result of the comparison. See `compare` for details. + */ + compare(buf1: Uint8Array, buf2: Uint8Array): -1 | 0 | 1; + /** + * Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the`Buffer` will be zero-filled. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.alloc(5); + * + * console.log(buf); + * // Prints: + * ``` + * + * If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_OUT_OF_RANGE` is thrown. + * + * If `fill` is specified, the allocated `Buffer` will be initialized by calling `buf.fill(fill)`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.alloc(5, 'a'); + * + * console.log(buf); + * // Prints: + * ``` + * + * If both `fill` and `encoding` are specified, the allocated `Buffer` will be + * initialized by calling `buf.fill(fill, encoding)`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64'); + * + * console.log(buf); + * // Prints: + * ``` + * + * Calling `Buffer.alloc()` can be measurably slower than the alternative `Buffer.allocUnsafe()` but ensures that the newly created `Buffer` instance + * contents will never contain sensitive data from previous allocations, including + * data that might not have been allocated for `Buffer`s. + * + * A `TypeError` will be thrown if `size` is not a number. + * @since v5.10.0 + * @param size The desired length of the new `Buffer`. + * @param [fill=0] A value to pre-fill the new `Buffer` with. + * @param [encoding='utf8'] If `fill` is a string, this is its encoding. + */ + alloc(size: number, fill?: string | Uint8Array | number, encoding?: BufferEncoding): Buffer; + /** + * Allocates a new `Buffer` of `size` bytes. If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_OUT_OF_RANGE` is thrown. + * + * The underlying memory for `Buffer` instances created in this way is _not_ + * _initialized_. The contents of the newly created `Buffer` are unknown and _may contain sensitive data_. Use `Buffer.alloc()` instead to initialize`Buffer` instances with zeroes. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(10); + * + * console.log(buf); + * // Prints (contents may vary): + * + * buf.fill(0); + * + * console.log(buf); + * // Prints: + * ``` + * + * A `TypeError` will be thrown if `size` is not a number. + * + * The `Buffer` module pre-allocates an internal `Buffer` instance of + * size `Buffer.poolSize` that is used as a pool for the fast allocation of new`Buffer` instances created using `Buffer.allocUnsafe()`, `Buffer.from(array)`, + * and `Buffer.concat()` only when `size` is less than or equal to`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). + * + * Use of this pre-allocated internal memory pool is a key difference between + * calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`. + * Specifically, `Buffer.alloc(size, fill)` will _never_ use the internal `Buffer`pool, while `Buffer.allocUnsafe(size).fill(fill)`_will_ use the internal`Buffer` pool if `size` is less + * than or equal to half `Buffer.poolSize`. The + * difference is subtle but can be important when an application requires the + * additional performance that `Buffer.allocUnsafe()` provides. + * @since v5.10.0 + * @param size The desired length of the new `Buffer`. + */ + allocUnsafe(size: number): Buffer; + /** + * Allocates a new `Buffer` of `size` bytes. If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_OUT_OF_RANGE` is thrown. A zero-length `Buffer` is created if + * `size` is 0. + * + * The underlying memory for `Buffer` instances created in this way is _not_ + * _initialized_. The contents of the newly created `Buffer` are unknown and _may contain sensitive data_. Use `buf.fill(0)` to initialize + * such `Buffer` instances with zeroes. + * + * When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances, + * allocations under 4 KiB are sliced from a single pre-allocated `Buffer`. This + * allows applications to avoid the garbage collection overhead of creating many + * individually allocated `Buffer` instances. This approach improves both + * performance and memory usage by eliminating the need to track and clean up as + * many individual `ArrayBuffer` objects. + * + * However, in the case where a developer may need to retain a small chunk of + * memory from a pool for an indeterminate amount of time, it may be appropriate + * to create an un-pooled `Buffer` instance using `Buffer.allocUnsafeSlow()` and + * then copying out the relevant bits. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Need to keep around a few small chunks of memory. + * const store = []; + * + * socket.on('readable', () => { + * let data; + * while (null !== (data = readable.read())) { + * // Allocate for retained data. + * const sb = Buffer.allocUnsafeSlow(10); + * + * // Copy the data into the new allocation. + * data.copy(sb, 0, 0, 10); + * + * store.push(sb); + * } + * }); + * ``` + * + * A `TypeError` will be thrown if `size` is not a number. + * @since v5.12.0 + * @param size The desired length of the new `Buffer`. + */ + allocUnsafeSlow(size: number): Buffer; + /** + * This is the size (in bytes) of pre-allocated internal `Buffer` instances used + * for pooling. This value may be modified. + * @since v0.11.3 + */ + poolSize: number; + } + interface Buffer extends Uint8Array { + /** + * Writes `string` to `buf` at `offset` according to the character encoding in`encoding`. The `length` parameter is the number of bytes to write. If `buf` did + * not contain enough space to fit the entire string, only part of `string` will be + * written. However, partially encoded characters will not be written. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.alloc(256); + * + * const len = buf.write('\u00bd + \u00bc = \u00be', 0); + * + * console.log(`${len} bytes: ${buf.toString('utf8', 0, len)}`); + * // Prints: 12 bytes: ½ + ¼ = ¾ + * + * const buffer = Buffer.alloc(10); + * + * const length = buffer.write('abcd', 8); + * + * console.log(`${length} bytes: ${buffer.toString('utf8', 8, 10)}`); + * // Prints: 2 bytes : ab + * ``` + * @since v0.1.90 + * @param string String to write to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write `string`. + * @param [length=buf.length - offset] Maximum number of bytes to write (written bytes will not exceed `buf.length - offset`). + * @param [encoding='utf8'] The character encoding of `string`. + * @return Number of bytes written. + */ + write(string: string, encoding?: BufferEncoding): number; + write(string: string, offset: number, encoding?: BufferEncoding): number; + write(string: string, offset: number, length: number, encoding?: BufferEncoding): number; + /** + * Decodes `buf` to a string according to the specified character encoding in`encoding`. `start` and `end` may be passed to decode only a subset of `buf`. + * + * If `encoding` is `'utf8'` and a byte sequence in the input is not valid UTF-8, + * then each invalid byte is replaced with the replacement character `U+FFFD`. + * + * The maximum length of a string instance (in UTF-16 code units) is available + * as {@link constants.MAX_STRING_LENGTH}. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.allocUnsafe(26); + * + * for (let i = 0; i < 26; i++) { + * // 97 is the decimal ASCII value for 'a'. + * buf1[i] = i + 97; + * } + * + * console.log(buf1.toString('utf8')); + * // Prints: abcdefghijklmnopqrstuvwxyz + * console.log(buf1.toString('utf8', 0, 5)); + * // Prints: abcde + * + * const buf2 = Buffer.from('tést'); + * + * console.log(buf2.toString('hex')); + * // Prints: 74c3a97374 + * console.log(buf2.toString('utf8', 0, 3)); + * // Prints: té + * console.log(buf2.toString(undefined, 0, 3)); + * // Prints: té + * ``` + * @since v0.1.90 + * @param [encoding='utf8'] The character encoding to use. + * @param [start=0] The byte offset to start decoding at. + * @param [end=buf.length] The byte offset to stop decoding at (not inclusive). + */ + toString(encoding?: BufferEncoding, start?: number, end?: number): string; + /** + * Returns a JSON representation of `buf`. [`JSON.stringify()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) implicitly calls + * this function when stringifying a `Buffer` instance. + * + * `Buffer.from()` accepts objects in the format returned from this method. + * In particular, `Buffer.from(buf.toJSON())` works like `Buffer.from(buf)`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]); + * const json = JSON.stringify(buf); + * + * console.log(json); + * // Prints: {"type":"Buffer","data":[1,2,3,4,5]} + * + * const copy = JSON.parse(json, (key, value) => { + * return value && value.type === 'Buffer' ? + * Buffer.from(value) : + * value; + * }); + * + * console.log(copy); + * // Prints: + * ``` + * @since v0.9.2 + */ + toJSON(): { + type: "Buffer"; + data: number[]; + }; + /** + * Returns `true` if both `buf` and `otherBuffer` have exactly the same bytes,`false` otherwise. Equivalent to `buf.compare(otherBuffer) === 0`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.from('ABC'); + * const buf2 = Buffer.from('414243', 'hex'); + * const buf3 = Buffer.from('ABCD'); + * + * console.log(buf1.equals(buf2)); + * // Prints: true + * console.log(buf1.equals(buf3)); + * // Prints: false + * ``` + * @since v0.11.13 + * @param otherBuffer A `Buffer` or {@link Uint8Array} with which to compare `buf`. + */ + equals(otherBuffer: Uint8Array): boolean; + /** + * Compares `buf` with `target` and returns a number indicating whether `buf`comes before, after, or is the same as `target` in sort order. + * Comparison is based on the actual sequence of bytes in each `Buffer`. + * + * * `0` is returned if `target` is the same as `buf` + * * `1` is returned if `target` should come _before_`buf` when sorted. + * * `-1` is returned if `target` should come _after_`buf` when sorted. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.from('ABC'); + * const buf2 = Buffer.from('BCD'); + * const buf3 = Buffer.from('ABCD'); + * + * console.log(buf1.compare(buf1)); + * // Prints: 0 + * console.log(buf1.compare(buf2)); + * // Prints: -1 + * console.log(buf1.compare(buf3)); + * // Prints: -1 + * console.log(buf2.compare(buf1)); + * // Prints: 1 + * console.log(buf2.compare(buf3)); + * // Prints: 1 + * console.log([buf1, buf2, buf3].sort(Buffer.compare)); + * // Prints: [ , , ] + * // (This result is equal to: [buf1, buf3, buf2].) + * ``` + * + * The optional `targetStart`, `targetEnd`, `sourceStart`, and `sourceEnd`arguments can be used to limit the comparison to specific ranges within `target`and `buf` respectively. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9]); + * const buf2 = Buffer.from([5, 6, 7, 8, 9, 1, 2, 3, 4]); + * + * console.log(buf1.compare(buf2, 5, 9, 0, 4)); + * // Prints: 0 + * console.log(buf1.compare(buf2, 0, 6, 4)); + * // Prints: -1 + * console.log(buf1.compare(buf2, 5, 6, 5)); + * // Prints: 1 + * ``` + * + * `ERR_OUT_OF_RANGE` is thrown if `targetStart < 0`, `sourceStart < 0`,`targetEnd > target.byteLength`, or `sourceEnd > source.byteLength`. + * @since v0.11.13 + * @param target A `Buffer` or {@link Uint8Array} with which to compare `buf`. + * @param [targetStart=0] The offset within `target` at which to begin comparison. + * @param [targetEnd=target.length] The offset within `target` at which to end comparison (not inclusive). + * @param [sourceStart=0] The offset within `buf` at which to begin comparison. + * @param [sourceEnd=buf.length] The offset within `buf` at which to end comparison (not inclusive). + */ + compare( + target: Uint8Array, + targetStart?: number, + targetEnd?: number, + sourceStart?: number, + sourceEnd?: number, + ): -1 | 0 | 1; + /** + * Copies data from a region of `buf` to a region in `target`, even if the `target`memory region overlaps with `buf`. + * + * [`TypedArray.prototype.set()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/set) performs the same operation, and is available + * for all TypedArrays, including Node.js `Buffer`s, although it takes + * different function arguments. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Create two `Buffer` instances. + * const buf1 = Buffer.allocUnsafe(26); + * const buf2 = Buffer.allocUnsafe(26).fill('!'); + * + * for (let i = 0; i < 26; i++) { + * // 97 is the decimal ASCII value for 'a'. + * buf1[i] = i + 97; + * } + * + * // Copy `buf1` bytes 16 through 19 into `buf2` starting at byte 8 of `buf2`. + * buf1.copy(buf2, 8, 16, 20); + * // This is equivalent to: + * // buf2.set(buf1.subarray(16, 20), 8); + * + * console.log(buf2.toString('ascii', 0, 25)); + * // Prints: !!!!!!!!qrst!!!!!!!!!!!!! + * ``` + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Create a `Buffer` and copy data from one region to an overlapping region + * // within the same `Buffer`. + * + * const buf = Buffer.allocUnsafe(26); + * + * for (let i = 0; i < 26; i++) { + * // 97 is the decimal ASCII value for 'a'. + * buf[i] = i + 97; + * } + * + * buf.copy(buf, 0, 4, 10); + * + * console.log(buf.toString()); + * // Prints: efghijghijklmnopqrstuvwxyz + * ``` + * @since v0.1.90 + * @param target A `Buffer` or {@link Uint8Array} to copy into. + * @param [targetStart=0] The offset within `target` at which to begin writing. + * @param [sourceStart=0] The offset within `buf` from which to begin copying. + * @param [sourceEnd=buf.length] The offset within `buf` at which to stop copying (not inclusive). + * @return The number of bytes copied. + */ + copy(target: Uint8Array, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; + /** + * Returns a new `Buffer` that references the same memory as the original, but + * offset and cropped by the `start` and `end` indices. + * + * This method is not compatible with the `Uint8Array.prototype.slice()`, + * which is a superclass of `Buffer`. To copy the slice, use`Uint8Array.prototype.slice()`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from('buffer'); + * + * const copiedBuf = Uint8Array.prototype.slice.call(buf); + * copiedBuf[0]++; + * console.log(copiedBuf.toString()); + * // Prints: cuffer + * + * console.log(buf.toString()); + * // Prints: buffer + * + * // With buf.slice(), the original buffer is modified. + * const notReallyCopiedBuf = buf.slice(); + * notReallyCopiedBuf[0]++; + * console.log(notReallyCopiedBuf.toString()); + * // Prints: cuffer + * console.log(buf.toString()); + * // Also prints: cuffer (!) + * ``` + * @since v0.3.0 + * @deprecated Use `subarray` instead. + * @param [start=0] Where the new `Buffer` will start. + * @param [end=buf.length] Where the new `Buffer` will end (not inclusive). + */ + slice(start?: number, end?: number): Buffer; + /** + * Returns a new `Buffer` that references the same memory as the original, but + * offset and cropped by the `start` and `end` indices. + * + * Specifying `end` greater than `buf.length` will return the same result as + * that of `end` equal to `buf.length`. + * + * This method is inherited from [`TypedArray.prototype.subarray()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/subarray). + * + * Modifying the new `Buffer` slice will modify the memory in the original `Buffer`because the allocated memory of the two objects overlap. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Create a `Buffer` with the ASCII alphabet, take a slice, and modify one byte + * // from the original `Buffer`. + * + * const buf1 = Buffer.allocUnsafe(26); + * + * for (let i = 0; i < 26; i++) { + * // 97 is the decimal ASCII value for 'a'. + * buf1[i] = i + 97; + * } + * + * const buf2 = buf1.subarray(0, 3); + * + * console.log(buf2.toString('ascii', 0, buf2.length)); + * // Prints: abc + * + * buf1[0] = 33; + * + * console.log(buf2.toString('ascii', 0, buf2.length)); + * // Prints: !bc + * ``` + * + * Specifying negative indexes causes the slice to be generated relative to the + * end of `buf` rather than the beginning. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from('buffer'); + * + * console.log(buf.subarray(-6, -1).toString()); + * // Prints: buffe + * // (Equivalent to buf.subarray(0, 5).) + * + * console.log(buf.subarray(-6, -2).toString()); + * // Prints: buff + * // (Equivalent to buf.subarray(0, 4).) + * + * console.log(buf.subarray(-5, -2).toString()); + * // Prints: uff + * // (Equivalent to buf.subarray(1, 4).) + * ``` + * @since v3.0.0 + * @param [start=0] Where the new `Buffer` will start. + * @param [end=buf.length] Where the new `Buffer` will end (not inclusive). + */ + subarray(start?: number, end?: number): Buffer; + /** + * Writes `value` to `buf` at the specified `offset` as big-endian. + * + * `value` is interpreted and written as a two's complement signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(8); + * + * buf.writeBigInt64BE(0x0102030405060708n, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v12.0.0, v10.20.0 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy: `0 <= offset <= buf.length - 8`. + * @return `offset` plus the number of bytes written. + */ + writeBigInt64BE(value: bigint, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as little-endian. + * + * `value` is interpreted and written as a two's complement signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(8); + * + * buf.writeBigInt64LE(0x0102030405060708n, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v12.0.0, v10.20.0 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy: `0 <= offset <= buf.length - 8`. + * @return `offset` plus the number of bytes written. + */ + writeBigInt64LE(value: bigint, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as big-endian. + * + * This function is also available under the `writeBigUint64BE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(8); + * + * buf.writeBigUInt64BE(0xdecafafecacefaden, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v12.0.0, v10.20.0 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy: `0 <= offset <= buf.length - 8`. + * @return `offset` plus the number of bytes written. + */ + writeBigUInt64BE(value: bigint, offset?: number): number; + /** + * @alias Buffer.writeBigUInt64BE + * @since v14.10.0, v12.19.0 + */ + writeBigUint64BE(value: bigint, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as little-endian + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(8); + * + * buf.writeBigUInt64LE(0xdecafafecacefaden, 0); + * + * console.log(buf); + * // Prints: + * ``` + * + * This function is also available under the `writeBigUint64LE` alias. + * @since v12.0.0, v10.20.0 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy: `0 <= offset <= buf.length - 8`. + * @return `offset` plus the number of bytes written. + */ + writeBigUInt64LE(value: bigint, offset?: number): number; + /** + * @alias Buffer.writeBigUInt64LE + * @since v14.10.0, v12.19.0 + */ + writeBigUint64LE(value: bigint, offset?: number): number; + /** + * Writes `byteLength` bytes of `value` to `buf` at the specified `offset`as little-endian. Supports up to 48 bits of accuracy. Behavior is undefined + * when `value` is anything other than an unsigned integer. + * + * This function is also available under the `writeUintLE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(6); + * + * buf.writeUIntLE(0x1234567890ab, 0, 6); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param offset Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - byteLength`. + * @param byteLength Number of bytes to write. Must satisfy `0 < byteLength <= 6`. + * @return `offset` plus the number of bytes written. + */ + writeUIntLE(value: number, offset: number, byteLength: number): number; + /** + * @alias Buffer.writeUIntLE + * @since v14.9.0, v12.19.0 + */ + writeUintLE(value: number, offset: number, byteLength: number): number; + /** + * Writes `byteLength` bytes of `value` to `buf` at the specified `offset`as big-endian. Supports up to 48 bits of accuracy. Behavior is undefined + * when `value` is anything other than an unsigned integer. + * + * This function is also available under the `writeUintBE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(6); + * + * buf.writeUIntBE(0x1234567890ab, 0, 6); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param offset Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - byteLength`. + * @param byteLength Number of bytes to write. Must satisfy `0 < byteLength <= 6`. + * @return `offset` plus the number of bytes written. + */ + writeUIntBE(value: number, offset: number, byteLength: number): number; + /** + * @alias Buffer.writeUIntBE + * @since v14.9.0, v12.19.0 + */ + writeUintBE(value: number, offset: number, byteLength: number): number; + /** + * Writes `byteLength` bytes of `value` to `buf` at the specified `offset`as little-endian. Supports up to 48 bits of accuracy. Behavior is undefined + * when `value` is anything other than a signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(6); + * + * buf.writeIntLE(0x1234567890ab, 0, 6); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.11.15 + * @param value Number to be written to `buf`. + * @param offset Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - byteLength`. + * @param byteLength Number of bytes to write. Must satisfy `0 < byteLength <= 6`. + * @return `offset` plus the number of bytes written. + */ + writeIntLE(value: number, offset: number, byteLength: number): number; + /** + * Writes `byteLength` bytes of `value` to `buf` at the specified `offset`as big-endian. Supports up to 48 bits of accuracy. Behavior is undefined when`value` is anything other than a + * signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(6); + * + * buf.writeIntBE(0x1234567890ab, 0, 6); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.11.15 + * @param value Number to be written to `buf`. + * @param offset Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - byteLength`. + * @param byteLength Number of bytes to write. Must satisfy `0 < byteLength <= 6`. + * @return `offset` plus the number of bytes written. + */ + writeIntBE(value: number, offset: number, byteLength: number): number; + /** + * Reads an unsigned, big-endian 64-bit integer from `buf` at the specified`offset`. + * + * This function is also available under the `readBigUint64BE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff]); + * + * console.log(buf.readBigUInt64BE(0)); + * // Prints: 4294967295n + * ``` + * @since v12.0.0, v10.20.0 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy: `0 <= offset <= buf.length - 8`. + */ + readBigUInt64BE(offset?: number): bigint; + /** + * @alias Buffer.readBigUInt64BE + * @since v14.10.0, v12.19.0 + */ + readBigUint64BE(offset?: number): bigint; + /** + * Reads an unsigned, little-endian 64-bit integer from `buf` at the specified`offset`. + * + * This function is also available under the `readBigUint64LE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff]); + * + * console.log(buf.readBigUInt64LE(0)); + * // Prints: 18446744069414584320n + * ``` + * @since v12.0.0, v10.20.0 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy: `0 <= offset <= buf.length - 8`. + */ + readBigUInt64LE(offset?: number): bigint; + /** + * @alias Buffer.readBigUInt64LE + * @since v14.10.0, v12.19.0 + */ + readBigUint64LE(offset?: number): bigint; + /** + * Reads a signed, big-endian 64-bit integer from `buf` at the specified `offset`. + * + * Integers read from a `Buffer` are interpreted as two's complement signed + * values. + * @since v12.0.0, v10.20.0 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy: `0 <= offset <= buf.length - 8`. + */ + readBigInt64BE(offset?: number): bigint; + /** + * Reads a signed, little-endian 64-bit integer from `buf` at the specified`offset`. + * + * Integers read from a `Buffer` are interpreted as two's complement signed + * values. + * @since v12.0.0, v10.20.0 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy: `0 <= offset <= buf.length - 8`. + */ + readBigInt64LE(offset?: number): bigint; + /** + * Reads `byteLength` number of bytes from `buf` at the specified `offset`and interprets the result as an unsigned, little-endian integer supporting + * up to 48 bits of accuracy. + * + * This function is also available under the `readUintLE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]); + * + * console.log(buf.readUIntLE(0, 6).toString(16)); + * // Prints: ab9078563412 + * ``` + * @since v0.11.15 + * @param offset Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - byteLength`. + * @param byteLength Number of bytes to read. Must satisfy `0 < byteLength <= 6`. + */ + readUIntLE(offset: number, byteLength: number): number; + /** + * @alias Buffer.readUIntLE + * @since v14.9.0, v12.19.0 + */ + readUintLE(offset: number, byteLength: number): number; + /** + * Reads `byteLength` number of bytes from `buf` at the specified `offset`and interprets the result as an unsigned big-endian integer supporting + * up to 48 bits of accuracy. + * + * This function is also available under the `readUintBE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]); + * + * console.log(buf.readUIntBE(0, 6).toString(16)); + * // Prints: 1234567890ab + * console.log(buf.readUIntBE(1, 6).toString(16)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.11.15 + * @param offset Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - byteLength`. + * @param byteLength Number of bytes to read. Must satisfy `0 < byteLength <= 6`. + */ + readUIntBE(offset: number, byteLength: number): number; + /** + * @alias Buffer.readUIntBE + * @since v14.9.0, v12.19.0 + */ + readUintBE(offset: number, byteLength: number): number; + /** + * Reads `byteLength` number of bytes from `buf` at the specified `offset`and interprets the result as a little-endian, two's complement signed value + * supporting up to 48 bits of accuracy. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]); + * + * console.log(buf.readIntLE(0, 6).toString(16)); + * // Prints: -546f87a9cbee + * ``` + * @since v0.11.15 + * @param offset Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - byteLength`. + * @param byteLength Number of bytes to read. Must satisfy `0 < byteLength <= 6`. + */ + readIntLE(offset: number, byteLength: number): number; + /** + * Reads `byteLength` number of bytes from `buf` at the specified `offset`and interprets the result as a big-endian, two's complement signed value + * supporting up to 48 bits of accuracy. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]); + * + * console.log(buf.readIntBE(0, 6).toString(16)); + * // Prints: 1234567890ab + * console.log(buf.readIntBE(1, 6).toString(16)); + * // Throws ERR_OUT_OF_RANGE. + * console.log(buf.readIntBE(1, 0).toString(16)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.11.15 + * @param offset Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - byteLength`. + * @param byteLength Number of bytes to read. Must satisfy `0 < byteLength <= 6`. + */ + readIntBE(offset: number, byteLength: number): number; + /** + * Reads an unsigned 8-bit integer from `buf` at the specified `offset`. + * + * This function is also available under the `readUint8` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([1, -2]); + * + * console.log(buf.readUInt8(0)); + * // Prints: 1 + * console.log(buf.readUInt8(1)); + * // Prints: 254 + * console.log(buf.readUInt8(2)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.5.0 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 1`. + */ + readUInt8(offset?: number): number; + /** + * @alias Buffer.readUInt8 + * @since v14.9.0, v12.19.0 + */ + readUint8(offset?: number): number; + /** + * Reads an unsigned, little-endian 16-bit integer from `buf` at the specified`offset`. + * + * This function is also available under the `readUint16LE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x12, 0x34, 0x56]); + * + * console.log(buf.readUInt16LE(0).toString(16)); + * // Prints: 3412 + * console.log(buf.readUInt16LE(1).toString(16)); + * // Prints: 5634 + * console.log(buf.readUInt16LE(2).toString(16)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.5.5 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 2`. + */ + readUInt16LE(offset?: number): number; + /** + * @alias Buffer.readUInt16LE + * @since v14.9.0, v12.19.0 + */ + readUint16LE(offset?: number): number; + /** + * Reads an unsigned, big-endian 16-bit integer from `buf` at the specified`offset`. + * + * This function is also available under the `readUint16BE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x12, 0x34, 0x56]); + * + * console.log(buf.readUInt16BE(0).toString(16)); + * // Prints: 1234 + * console.log(buf.readUInt16BE(1).toString(16)); + * // Prints: 3456 + * ``` + * @since v0.5.5 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 2`. + */ + readUInt16BE(offset?: number): number; + /** + * @alias Buffer.readUInt16BE + * @since v14.9.0, v12.19.0 + */ + readUint16BE(offset?: number): number; + /** + * Reads an unsigned, little-endian 32-bit integer from `buf` at the specified`offset`. + * + * This function is also available under the `readUint32LE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]); + * + * console.log(buf.readUInt32LE(0).toString(16)); + * // Prints: 78563412 + * console.log(buf.readUInt32LE(1).toString(16)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.5.5 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. + */ + readUInt32LE(offset?: number): number; + /** + * @alias Buffer.readUInt32LE + * @since v14.9.0, v12.19.0 + */ + readUint32LE(offset?: number): number; + /** + * Reads an unsigned, big-endian 32-bit integer from `buf` at the specified`offset`. + * + * This function is also available under the `readUint32BE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]); + * + * console.log(buf.readUInt32BE(0).toString(16)); + * // Prints: 12345678 + * ``` + * @since v0.5.5 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. + */ + readUInt32BE(offset?: number): number; + /** + * @alias Buffer.readUInt32BE + * @since v14.9.0, v12.19.0 + */ + readUint32BE(offset?: number): number; + /** + * Reads a signed 8-bit integer from `buf` at the specified `offset`. + * + * Integers read from a `Buffer` are interpreted as two's complement signed values. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([-1, 5]); + * + * console.log(buf.readInt8(0)); + * // Prints: -1 + * console.log(buf.readInt8(1)); + * // Prints: 5 + * console.log(buf.readInt8(2)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.5.0 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 1`. + */ + readInt8(offset?: number): number; + /** + * Reads a signed, little-endian 16-bit integer from `buf` at the specified`offset`. + * + * Integers read from a `Buffer` are interpreted as two's complement signed values. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0, 5]); + * + * console.log(buf.readInt16LE(0)); + * // Prints: 1280 + * console.log(buf.readInt16LE(1)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.5.5 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 2`. + */ + readInt16LE(offset?: number): number; + /** + * Reads a signed, big-endian 16-bit integer from `buf` at the specified `offset`. + * + * Integers read from a `Buffer` are interpreted as two's complement signed values. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0, 5]); + * + * console.log(buf.readInt16BE(0)); + * // Prints: 5 + * ``` + * @since v0.5.5 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 2`. + */ + readInt16BE(offset?: number): number; + /** + * Reads a signed, little-endian 32-bit integer from `buf` at the specified`offset`. + * + * Integers read from a `Buffer` are interpreted as two's complement signed values. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0, 0, 0, 5]); + * + * console.log(buf.readInt32LE(0)); + * // Prints: 83886080 + * console.log(buf.readInt32LE(1)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.5.5 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. + */ + readInt32LE(offset?: number): number; + /** + * Reads a signed, big-endian 32-bit integer from `buf` at the specified `offset`. + * + * Integers read from a `Buffer` are interpreted as two's complement signed values. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([0, 0, 0, 5]); + * + * console.log(buf.readInt32BE(0)); + * // Prints: 5 + * ``` + * @since v0.5.5 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. + */ + readInt32BE(offset?: number): number; + /** + * Reads a 32-bit, little-endian float from `buf` at the specified `offset`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([1, 2, 3, 4]); + * + * console.log(buf.readFloatLE(0)); + * // Prints: 1.539989614439558e-36 + * console.log(buf.readFloatLE(1)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.11.15 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. + */ + readFloatLE(offset?: number): number; + /** + * Reads a 32-bit, big-endian float from `buf` at the specified `offset`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([1, 2, 3, 4]); + * + * console.log(buf.readFloatBE(0)); + * // Prints: 2.387939260590663e-38 + * ``` + * @since v0.11.15 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 4`. + */ + readFloatBE(offset?: number): number; + /** + * Reads a 64-bit, little-endian double from `buf` at the specified `offset`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]); + * + * console.log(buf.readDoubleLE(0)); + * // Prints: 5.447603722011605e-270 + * console.log(buf.readDoubleLE(1)); + * // Throws ERR_OUT_OF_RANGE. + * ``` + * @since v0.11.15 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 8`. + */ + readDoubleLE(offset?: number): number; + /** + * Reads a 64-bit, big-endian double from `buf` at the specified `offset`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]); + * + * console.log(buf.readDoubleBE(0)); + * // Prints: 8.20788039913184e-304 + * ``` + * @since v0.11.15 + * @param [offset=0] Number of bytes to skip before starting to read. Must satisfy `0 <= offset <= buf.length - 8`. + */ + readDoubleBE(offset?: number): number; + reverse(): this; + /** + * Interprets `buf` as an array of unsigned 16-bit integers and swaps the + * byte order _in-place_. Throws `ERR_INVALID_BUFFER_SIZE` if `buf.length` is not a multiple of 2. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); + * + * console.log(buf1); + * // Prints: + * + * buf1.swap16(); + * + * console.log(buf1); + * // Prints: + * + * const buf2 = Buffer.from([0x1, 0x2, 0x3]); + * + * buf2.swap16(); + * // Throws ERR_INVALID_BUFFER_SIZE. + * ``` + * + * One convenient use of `buf.swap16()` is to perform a fast in-place conversion + * between UTF-16 little-endian and UTF-16 big-endian: + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from('This is little-endian UTF-16', 'utf16le'); + * buf.swap16(); // Convert to big-endian UTF-16 text. + * ``` + * @since v5.10.0 + * @return A reference to `buf`. + */ + swap16(): Buffer; + /** + * Interprets `buf` as an array of unsigned 32-bit integers and swaps the + * byte order _in-place_. Throws `ERR_INVALID_BUFFER_SIZE` if `buf.length` is not a multiple of 4. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); + * + * console.log(buf1); + * // Prints: + * + * buf1.swap32(); + * + * console.log(buf1); + * // Prints: + * + * const buf2 = Buffer.from([0x1, 0x2, 0x3]); + * + * buf2.swap32(); + * // Throws ERR_INVALID_BUFFER_SIZE. + * ``` + * @since v5.10.0 + * @return A reference to `buf`. + */ + swap32(): Buffer; + /** + * Interprets `buf` as an array of 64-bit numbers and swaps byte order _in-place_. + * Throws `ERR_INVALID_BUFFER_SIZE` if `buf.length` is not a multiple of 8. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); + * + * console.log(buf1); + * // Prints: + * + * buf1.swap64(); + * + * console.log(buf1); + * // Prints: + * + * const buf2 = Buffer.from([0x1, 0x2, 0x3]); + * + * buf2.swap64(); + * // Throws ERR_INVALID_BUFFER_SIZE. + * ``` + * @since v6.3.0 + * @return A reference to `buf`. + */ + swap64(): Buffer; + /** + * Writes `value` to `buf` at the specified `offset`. `value` must be a + * valid unsigned 8-bit integer. Behavior is undefined when `value` is anything + * other than an unsigned 8-bit integer. + * + * This function is also available under the `writeUint8` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeUInt8(0x3, 0); + * buf.writeUInt8(0x4, 1); + * buf.writeUInt8(0x23, 2); + * buf.writeUInt8(0x42, 3); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.0 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 1`. + * @return `offset` plus the number of bytes written. + */ + writeUInt8(value: number, offset?: number): number; + /** + * @alias Buffer.writeUInt8 + * @since v14.9.0, v12.19.0 + */ + writeUint8(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as little-endian. The `value`must be a valid unsigned 16-bit integer. Behavior is undefined when `value` is + * anything other than an unsigned 16-bit integer. + * + * This function is also available under the `writeUint16LE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeUInt16LE(0xdead, 0); + * buf.writeUInt16LE(0xbeef, 2); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 2`. + * @return `offset` plus the number of bytes written. + */ + writeUInt16LE(value: number, offset?: number): number; + /** + * @alias Buffer.writeUInt16LE + * @since v14.9.0, v12.19.0 + */ + writeUint16LE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as big-endian. The `value`must be a valid unsigned 16-bit integer. Behavior is undefined when `value`is anything other than an + * unsigned 16-bit integer. + * + * This function is also available under the `writeUint16BE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeUInt16BE(0xdead, 0); + * buf.writeUInt16BE(0xbeef, 2); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 2`. + * @return `offset` plus the number of bytes written. + */ + writeUInt16BE(value: number, offset?: number): number; + /** + * @alias Buffer.writeUInt16BE + * @since v14.9.0, v12.19.0 + */ + writeUint16BE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as little-endian. The `value`must be a valid unsigned 32-bit integer. Behavior is undefined when `value` is + * anything other than an unsigned 32-bit integer. + * + * This function is also available under the `writeUint32LE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeUInt32LE(0xfeedface, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. + * @return `offset` plus the number of bytes written. + */ + writeUInt32LE(value: number, offset?: number): number; + /** + * @alias Buffer.writeUInt32LE + * @since v14.9.0, v12.19.0 + */ + writeUint32LE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as big-endian. The `value`must be a valid unsigned 32-bit integer. Behavior is undefined when `value`is anything other than an + * unsigned 32-bit integer. + * + * This function is also available under the `writeUint32BE` alias. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeUInt32BE(0xfeedface, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. + * @return `offset` plus the number of bytes written. + */ + writeUInt32BE(value: number, offset?: number): number; + /** + * @alias Buffer.writeUInt32BE + * @since v14.9.0, v12.19.0 + */ + writeUint32BE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset`. `value` must be a valid + * signed 8-bit integer. Behavior is undefined when `value` is anything other than + * a signed 8-bit integer. + * + * `value` is interpreted and written as a two's complement signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(2); + * + * buf.writeInt8(2, 0); + * buf.writeInt8(-2, 1); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.0 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 1`. + * @return `offset` plus the number of bytes written. + */ + writeInt8(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as little-endian. The `value`must be a valid signed 16-bit integer. Behavior is undefined when `value` is + * anything other than a signed 16-bit integer. + * + * The `value` is interpreted and written as a two's complement signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(2); + * + * buf.writeInt16LE(0x0304, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 2`. + * @return `offset` plus the number of bytes written. + */ + writeInt16LE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as big-endian. The `value`must be a valid signed 16-bit integer. Behavior is undefined when `value` is + * anything other than a signed 16-bit integer. + * + * The `value` is interpreted and written as a two's complement signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(2); + * + * buf.writeInt16BE(0x0102, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 2`. + * @return `offset` plus the number of bytes written. + */ + writeInt16BE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as little-endian. The `value`must be a valid signed 32-bit integer. Behavior is undefined when `value` is + * anything other than a signed 32-bit integer. + * + * The `value` is interpreted and written as a two's complement signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeInt32LE(0x05060708, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. + * @return `offset` plus the number of bytes written. + */ + writeInt32LE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as big-endian. The `value`must be a valid signed 32-bit integer. Behavior is undefined when `value` is + * anything other than a signed 32-bit integer. + * + * The `value` is interpreted and written as a two's complement signed integer. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeInt32BE(0x01020304, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.5.5 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. + * @return `offset` plus the number of bytes written. + */ + writeInt32BE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as little-endian. Behavior is + * undefined when `value` is anything other than a JavaScript number. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeFloatLE(0xcafebabe, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.11.15 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. + * @return `offset` plus the number of bytes written. + */ + writeFloatLE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as big-endian. Behavior is + * undefined when `value` is anything other than a JavaScript number. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(4); + * + * buf.writeFloatBE(0xcafebabe, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.11.15 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 4`. + * @return `offset` plus the number of bytes written. + */ + writeFloatBE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as little-endian. The `value`must be a JavaScript number. Behavior is undefined when `value` is anything + * other than a JavaScript number. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(8); + * + * buf.writeDoubleLE(123.456, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.11.15 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 8`. + * @return `offset` plus the number of bytes written. + */ + writeDoubleLE(value: number, offset?: number): number; + /** + * Writes `value` to `buf` at the specified `offset` as big-endian. The `value`must be a JavaScript number. Behavior is undefined when `value` is anything + * other than a JavaScript number. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(8); + * + * buf.writeDoubleBE(123.456, 0); + * + * console.log(buf); + * // Prints: + * ``` + * @since v0.11.15 + * @param value Number to be written to `buf`. + * @param [offset=0] Number of bytes to skip before starting to write. Must satisfy `0 <= offset <= buf.length - 8`. + * @return `offset` plus the number of bytes written. + */ + writeDoubleBE(value: number, offset?: number): number; + /** + * Fills `buf` with the specified `value`. If the `offset` and `end` are not given, + * the entire `buf` will be filled: + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Fill a `Buffer` with the ASCII character 'h'. + * + * const b = Buffer.allocUnsafe(50).fill('h'); + * + * console.log(b.toString()); + * // Prints: hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh + * + * // Fill a buffer with empty string + * const c = Buffer.allocUnsafe(5).fill(''); + * + * console.log(c.fill('')); + * // Prints: + * ``` + * + * `value` is coerced to a `uint32` value if it is not a string, `Buffer`, or + * integer. If the resulting integer is greater than `255` (decimal), `buf` will be + * filled with `value & 255`. + * + * If the final write of a `fill()` operation falls on a multi-byte character, + * then only the bytes of that character that fit into `buf` are written: + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Fill a `Buffer` with character that takes up two bytes in UTF-8. + * + * console.log(Buffer.allocUnsafe(5).fill('\u0222')); + * // Prints: + * ``` + * + * If `value` contains invalid characters, it is truncated; if no valid + * fill data remains, an exception is thrown: + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.allocUnsafe(5); + * + * console.log(buf.fill('a')); + * // Prints: + * console.log(buf.fill('aazz', 'hex')); + * // Prints: + * console.log(buf.fill('zz', 'hex')); + * // Throws an exception. + * ``` + * @since v0.5.0 + * @param value The value with which to fill `buf`. Empty value (string, Uint8Array, Buffer) is coerced to `0`. + * @param [offset=0] Number of bytes to skip before starting to fill `buf`. + * @param [end=buf.length] Where to stop filling `buf` (not inclusive). + * @param [encoding='utf8'] The encoding for `value` if `value` is a string. + * @return A reference to `buf`. + */ + fill(value: string | Uint8Array | number, offset?: number, end?: number, encoding?: BufferEncoding): this; + /** + * If `value` is: + * + * * a string, `value` is interpreted according to the character encoding in`encoding`. + * * a `Buffer` or [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array), `value` will be used in its entirety. + * To compare a partial `Buffer`, use `buf.subarray`. + * * a number, `value` will be interpreted as an unsigned 8-bit integer + * value between `0` and `255`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from('this is a buffer'); + * + * console.log(buf.indexOf('this')); + * // Prints: 0 + * console.log(buf.indexOf('is')); + * // Prints: 2 + * console.log(buf.indexOf(Buffer.from('a buffer'))); + * // Prints: 8 + * console.log(buf.indexOf(97)); + * // Prints: 8 (97 is the decimal ASCII value for 'a') + * console.log(buf.indexOf(Buffer.from('a buffer example'))); + * // Prints: -1 + * console.log(buf.indexOf(Buffer.from('a buffer example').slice(0, 8))); + * // Prints: 8 + * + * const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le'); + * + * console.log(utf16Buffer.indexOf('\u03a3', 0, 'utf16le')); + * // Prints: 4 + * console.log(utf16Buffer.indexOf('\u03a3', -4, 'utf16le')); + * // Prints: 6 + * ``` + * + * If `value` is not a string, number, or `Buffer`, this method will throw a`TypeError`. If `value` is a number, it will be coerced to a valid byte value, + * an integer between 0 and 255. + * + * If `byteOffset` is not a number, it will be coerced to a number. If the result + * of coercion is `NaN` or `0`, then the entire buffer will be searched. This + * behavior matches [`String.prototype.indexOf()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf). + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const b = Buffer.from('abcdef'); + * + * // Passing a value that's a number, but not a valid byte. + * // Prints: 2, equivalent to searching for 99 or 'c'. + * console.log(b.indexOf(99.9)); + * console.log(b.indexOf(256 + 99)); + * + * // Passing a byteOffset that coerces to NaN or 0. + * // Prints: 1, searching the whole buffer. + * console.log(b.indexOf('b', undefined)); + * console.log(b.indexOf('b', {})); + * console.log(b.indexOf('b', null)); + * console.log(b.indexOf('b', [])); + * ``` + * + * If `value` is an empty string or empty `Buffer` and `byteOffset` is less + * than `buf.length`, `byteOffset` will be returned. If `value` is empty and`byteOffset` is at least `buf.length`, `buf.length` will be returned. + * @since v1.5.0 + * @param value What to search for. + * @param [byteOffset=0] Where to begin searching in `buf`. If negative, then offset is calculated from the end of `buf`. + * @param [encoding='utf8'] If `value` is a string, this is the encoding used to determine the binary representation of the string that will be searched for in `buf`. + * @return The index of the first occurrence of `value` in `buf`, or `-1` if `buf` does not contain `value`. + */ + indexOf(value: string | number | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number; + /** + * Identical to `buf.indexOf()`, except the last occurrence of `value` is found + * rather than the first occurrence. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from('this buffer is a buffer'); + * + * console.log(buf.lastIndexOf('this')); + * // Prints: 0 + * console.log(buf.lastIndexOf('buffer')); + * // Prints: 17 + * console.log(buf.lastIndexOf(Buffer.from('buffer'))); + * // Prints: 17 + * console.log(buf.lastIndexOf(97)); + * // Prints: 15 (97 is the decimal ASCII value for 'a') + * console.log(buf.lastIndexOf(Buffer.from('yolo'))); + * // Prints: -1 + * console.log(buf.lastIndexOf('buffer', 5)); + * // Prints: 5 + * console.log(buf.lastIndexOf('buffer', 4)); + * // Prints: -1 + * + * const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le'); + * + * console.log(utf16Buffer.lastIndexOf('\u03a3', undefined, 'utf16le')); + * // Prints: 6 + * console.log(utf16Buffer.lastIndexOf('\u03a3', -5, 'utf16le')); + * // Prints: 4 + * ``` + * + * If `value` is not a string, number, or `Buffer`, this method will throw a`TypeError`. If `value` is a number, it will be coerced to a valid byte value, + * an integer between 0 and 255. + * + * If `byteOffset` is not a number, it will be coerced to a number. Any arguments + * that coerce to `NaN`, like `{}` or `undefined`, will search the whole buffer. + * This behavior matches [`String.prototype.lastIndexOf()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf). + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const b = Buffer.from('abcdef'); + * + * // Passing a value that's a number, but not a valid byte. + * // Prints: 2, equivalent to searching for 99 or 'c'. + * console.log(b.lastIndexOf(99.9)); + * console.log(b.lastIndexOf(256 + 99)); + * + * // Passing a byteOffset that coerces to NaN. + * // Prints: 1, searching the whole buffer. + * console.log(b.lastIndexOf('b', undefined)); + * console.log(b.lastIndexOf('b', {})); + * + * // Passing a byteOffset that coerces to 0. + * // Prints: -1, equivalent to passing 0. + * console.log(b.lastIndexOf('b', null)); + * console.log(b.lastIndexOf('b', [])); + * ``` + * + * If `value` is an empty string or empty `Buffer`, `byteOffset` will be returned. + * @since v6.0.0 + * @param value What to search for. + * @param [byteOffset=buf.length - 1] Where to begin searching in `buf`. If negative, then offset is calculated from the end of `buf`. + * @param [encoding='utf8'] If `value` is a string, this is the encoding used to determine the binary representation of the string that will be searched for in `buf`. + * @return The index of the last occurrence of `value` in `buf`, or `-1` if `buf` does not contain `value`. + */ + lastIndexOf(value: string | number | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number; + /** + * Creates and returns an [iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) of `[index, byte]` pairs from the contents + * of `buf`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * // Log the entire contents of a `Buffer`. + * + * const buf = Buffer.from('buffer'); + * + * for (const pair of buf.entries()) { + * console.log(pair); + * } + * // Prints: + * // [0, 98] + * // [1, 117] + * // [2, 102] + * // [3, 102] + * // [4, 101] + * // [5, 114] + * ``` + * @since v1.1.0 + */ + entries(): IterableIterator<[number, number]>; + /** + * Equivalent to `buf.indexOf() !== -1`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from('this is a buffer'); + * + * console.log(buf.includes('this')); + * // Prints: true + * console.log(buf.includes('is')); + * // Prints: true + * console.log(buf.includes(Buffer.from('a buffer'))); + * // Prints: true + * console.log(buf.includes(97)); + * // Prints: true (97 is the decimal ASCII value for 'a') + * console.log(buf.includes(Buffer.from('a buffer example'))); + * // Prints: false + * console.log(buf.includes(Buffer.from('a buffer example').slice(0, 8))); + * // Prints: true + * console.log(buf.includes('this', 4)); + * // Prints: false + * ``` + * @since v5.3.0 + * @param value What to search for. + * @param [byteOffset=0] Where to begin searching in `buf`. If negative, then offset is calculated from the end of `buf`. + * @param [encoding='utf8'] If `value` is a string, this is its encoding. + * @return `true` if `value` was found in `buf`, `false` otherwise. + */ + includes(value: string | number | Buffer, byteOffset?: number, encoding?: BufferEncoding): boolean; + /** + * Creates and returns an [iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) of `buf` keys (indices). + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from('buffer'); + * + * for (const key of buf.keys()) { + * console.log(key); + * } + * // Prints: + * // 0 + * // 1 + * // 2 + * // 3 + * // 4 + * // 5 + * ``` + * @since v1.1.0 + */ + keys(): IterableIterator; + /** + * Creates and returns an [iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) for `buf` values (bytes). This function is + * called automatically when a `Buffer` is used in a `for..of` statement. + * + * ```js + * import { Buffer } from 'node:buffer'; + * + * const buf = Buffer.from('buffer'); + * + * for (const value of buf.values()) { + * console.log(value); + * } + * // Prints: + * // 98 + * // 117 + * // 102 + * // 102 + * // 101 + * // 114 + * + * for (const value of buf) { + * console.log(value); + * } + * // Prints: + * // 98 + * // 117 + * // 102 + * // 102 + * // 101 + * // 114 + * ``` + * @since v1.1.0 + */ + values(): IterableIterator; + } + var Buffer: BufferConstructor; + /** + * Decodes a string of Base64-encoded data into bytes, and encodes those bytes + * into a string using Latin-1 (ISO-8859-1). + * + * The `data` may be any JavaScript-value that can be coerced into a string. + * + * **This function is only provided for compatibility with legacy web platform APIs** + * **and should never be used in new code, because they use strings to represent** + * **binary data and predate the introduction of typed arrays in JavaScript.** + * **For code running using Node.js APIs, converting between base64-encoded strings** + * **and binary data should be performed using `Buffer.from(str, 'base64')` and`buf.toString('base64')`.** + * @since v15.13.0, v14.17.0 + * @legacy Use `Buffer.from(data, 'base64')` instead. + * @param data The Base64-encoded input string. + */ + function atob(data: string): string; + /** + * Decodes a string into bytes using Latin-1 (ISO-8859), and encodes those bytes + * into a string using Base64. + * + * The `data` may be any JavaScript-value that can be coerced into a string. + * + * **This function is only provided for compatibility with legacy web platform APIs** + * **and should never be used in new code, because they use strings to represent** + * **binary data and predate the introduction of typed arrays in JavaScript.** + * **For code running using Node.js APIs, converting between base64-encoded strings** + * **and binary data should be performed using `Buffer.from(str, 'base64')` and`buf.toString('base64')`.** + * @since v15.13.0, v14.17.0 + * @legacy Use `buf.toString('base64')` instead. + * @param data An ASCII (Latin1) string. + */ + function btoa(data: string): string; + interface Blob extends __Blob {} + /** + * `Blob` class is a global reference for `require('node:buffer').Blob` + * https://nodejs.org/api/buffer.html#class-blob + * @since v18.0.0 + */ + var Blob: typeof globalThis extends { + onmessage: any; + Blob: infer T; + } ? T + : typeof NodeBlob; + } +} +declare module "node:buffer" { + export * from "buffer"; +} diff --git a/node_modules/@types/node/ts4.8/child_process.d.ts b/node_modules/@types/node/ts4.8/child_process.d.ts new file mode 100644 index 00000000..9f1a38a7 --- /dev/null +++ b/node_modules/@types/node/ts4.8/child_process.d.ts @@ -0,0 +1,1540 @@ +/** + * The `node:child_process` module provides the ability to spawn subprocesses in + * a manner that is similar, but not identical, to [`popen(3)`](http://man7.org/linux/man-pages/man3/popen.3.html). This capability + * is primarily provided by the {@link spawn} function: + * + * ```js + * const { spawn } = require('node:child_process'); + * const ls = spawn('ls', ['-lh', '/usr']); + * + * ls.stdout.on('data', (data) => { + * console.log(`stdout: ${data}`); + * }); + * + * ls.stderr.on('data', (data) => { + * console.error(`stderr: ${data}`); + * }); + * + * ls.on('close', (code) => { + * console.log(`child process exited with code ${code}`); + * }); + * ``` + * + * By default, pipes for `stdin`, `stdout`, and `stderr` are established between + * the parent Node.js process and the spawned subprocess. These pipes have + * limited (and platform-specific) capacity. If the subprocess writes to + * stdout in excess of that limit without the output being captured, the + * subprocess blocks waiting for the pipe buffer to accept more data. This is + * identical to the behavior of pipes in the shell. Use the `{ stdio: 'ignore' }`option if the output will not be consumed. + * + * The command lookup is performed using the `options.env.PATH` environment + * variable if `env` is in the `options` object. Otherwise, `process.env.PATH` is + * used. If `options.env` is set without `PATH`, lookup on Unix is performed + * on a default search path search of `/usr/bin:/bin` (see your operating system's + * manual for execvpe/execvp), on Windows the current processes environment + * variable `PATH` is used. + * + * On Windows, environment variables are case-insensitive. Node.js + * lexicographically sorts the `env` keys and uses the first one that + * case-insensitively matches. Only first (in lexicographic order) entry will be + * passed to the subprocess. This might lead to issues on Windows when passing + * objects to the `env` option that have multiple variants of the same key, such as`PATH` and `Path`. + * + * The {@link spawn} method spawns the child process asynchronously, + * without blocking the Node.js event loop. The {@link spawnSync} function provides equivalent functionality in a synchronous manner that blocks + * the event loop until the spawned process either exits or is terminated. + * + * For convenience, the `node:child_process` module provides a handful of + * synchronous and asynchronous alternatives to {@link spawn} and {@link spawnSync}. Each of these alternatives are implemented on + * top of {@link spawn} or {@link spawnSync}. + * + * * {@link exec}: spawns a shell and runs a command within that + * shell, passing the `stdout` and `stderr` to a callback function when + * complete. + * * {@link execFile}: similar to {@link exec} except + * that it spawns the command directly without first spawning a shell by + * default. + * * {@link fork}: spawns a new Node.js process and invokes a + * specified module with an IPC communication channel established that allows + * sending messages between parent and child. + * * {@link execSync}: a synchronous version of {@link exec} that will block the Node.js event loop. + * * {@link execFileSync}: a synchronous version of {@link execFile} that will block the Node.js event loop. + * + * For certain use cases, such as automating shell scripts, the `synchronous counterparts` may be more convenient. In many cases, however, + * the synchronous methods can have significant impact on performance due to + * stalling the event loop while spawned processes complete. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/child_process.js) + */ +declare module "child_process" { + import { ObjectEncodingOptions } from "node:fs"; + import { Abortable, EventEmitter } from "node:events"; + import * as net from "node:net"; + import { Pipe, Readable, Stream, Writable } from "node:stream"; + import { URL } from "node:url"; + type Serializable = string | object | number | boolean | bigint; + type SendHandle = net.Socket | net.Server; + /** + * Instances of the `ChildProcess` represent spawned child processes. + * + * Instances of `ChildProcess` are not intended to be created directly. Rather, + * use the {@link spawn}, {@link exec},{@link execFile}, or {@link fork} methods to create + * instances of `ChildProcess`. + * @since v2.2.0 + */ + class ChildProcess extends EventEmitter { + /** + * A `Writable Stream` that represents the child process's `stdin`. + * + * If a child process waits to read all of its input, the child will not continue + * until this stream has been closed via `end()`. + * + * If the child was spawned with `stdio[0]` set to anything other than `'pipe'`, + * then this will be `null`. + * + * `subprocess.stdin` is an alias for `subprocess.stdio[0]`. Both properties will + * refer to the same value. + * + * The `subprocess.stdin` property can be `null` or `undefined`if the child process could not be successfully spawned. + * @since v0.1.90 + */ + stdin: Writable | null; + /** + * A `Readable Stream` that represents the child process's `stdout`. + * + * If the child was spawned with `stdio[1]` set to anything other than `'pipe'`, + * then this will be `null`. + * + * `subprocess.stdout` is an alias for `subprocess.stdio[1]`. Both properties will + * refer to the same value. + * + * ```js + * const { spawn } = require('node:child_process'); + * + * const subprocess = spawn('ls'); + * + * subprocess.stdout.on('data', (data) => { + * console.log(`Received chunk ${data}`); + * }); + * ``` + * + * The `subprocess.stdout` property can be `null` or `undefined`if the child process could not be successfully spawned. + * @since v0.1.90 + */ + stdout: Readable | null; + /** + * A `Readable Stream` that represents the child process's `stderr`. + * + * If the child was spawned with `stdio[2]` set to anything other than `'pipe'`, + * then this will be `null`. + * + * `subprocess.stderr` is an alias for `subprocess.stdio[2]`. Both properties will + * refer to the same value. + * + * The `subprocess.stderr` property can be `null` or `undefined`if the child process could not be successfully spawned. + * @since v0.1.90 + */ + stderr: Readable | null; + /** + * The `subprocess.channel` property is a reference to the child's IPC channel. If + * no IPC channel exists, this property is `undefined`. + * @since v7.1.0 + */ + readonly channel?: Pipe | null | undefined; + /** + * A sparse array of pipes to the child process, corresponding with positions in + * the `stdio` option passed to {@link spawn} that have been set + * to the value `'pipe'`. `subprocess.stdio[0]`, `subprocess.stdio[1]`, and`subprocess.stdio[2]` are also available as `subprocess.stdin`,`subprocess.stdout`, and `subprocess.stderr`, + * respectively. + * + * In the following example, only the child's fd `1` (stdout) is configured as a + * pipe, so only the parent's `subprocess.stdio[1]` is a stream, all other values + * in the array are `null`. + * + * ```js + * const assert = require('node:assert'); + * const fs = require('node:fs'); + * const child_process = require('node:child_process'); + * + * const subprocess = child_process.spawn('ls', { + * stdio: [ + * 0, // Use parent's stdin for child. + * 'pipe', // Pipe child's stdout to parent. + * fs.openSync('err.out', 'w'), // Direct child's stderr to a file. + * ], + * }); + * + * assert.strictEqual(subprocess.stdio[0], null); + * assert.strictEqual(subprocess.stdio[0], subprocess.stdin); + * + * assert(subprocess.stdout); + * assert.strictEqual(subprocess.stdio[1], subprocess.stdout); + * + * assert.strictEqual(subprocess.stdio[2], null); + * assert.strictEqual(subprocess.stdio[2], subprocess.stderr); + * ``` + * + * The `subprocess.stdio` property can be `undefined` if the child process could + * not be successfully spawned. + * @since v0.7.10 + */ + readonly stdio: [ + Writable | null, + // stdin + Readable | null, + // stdout + Readable | null, + // stderr + Readable | Writable | null | undefined, + // extra + Readable | Writable | null | undefined, // extra + ]; + /** + * The `subprocess.killed` property indicates whether the child process + * successfully received a signal from `subprocess.kill()`. The `killed` property + * does not indicate that the child process has been terminated. + * @since v0.5.10 + */ + readonly killed: boolean; + /** + * Returns the process identifier (PID) of the child process. If the child process + * fails to spawn due to errors, then the value is `undefined` and `error` is + * emitted. + * + * ```js + * const { spawn } = require('node:child_process'); + * const grep = spawn('grep', ['ssh']); + * + * console.log(`Spawned child pid: ${grep.pid}`); + * grep.stdin.end(); + * ``` + * @since v0.1.90 + */ + readonly pid?: number | undefined; + /** + * The `subprocess.connected` property indicates whether it is still possible to + * send and receive messages from a child process. When `subprocess.connected` is`false`, it is no longer possible to send or receive messages. + * @since v0.7.2 + */ + readonly connected: boolean; + /** + * The `subprocess.exitCode` property indicates the exit code of the child process. + * If the child process is still running, the field will be `null`. + */ + readonly exitCode: number | null; + /** + * The `subprocess.signalCode` property indicates the signal received by + * the child process if any, else `null`. + */ + readonly signalCode: NodeJS.Signals | null; + /** + * The `subprocess.spawnargs` property represents the full list of command-line + * arguments the child process was launched with. + */ + readonly spawnargs: string[]; + /** + * The `subprocess.spawnfile` property indicates the executable file name of + * the child process that is launched. + * + * For {@link fork}, its value will be equal to `process.execPath`. + * For {@link spawn}, its value will be the name of + * the executable file. + * For {@link exec}, its value will be the name of the shell + * in which the child process is launched. + */ + readonly spawnfile: string; + /** + * The `subprocess.kill()` method sends a signal to the child process. If no + * argument is given, the process will be sent the `'SIGTERM'` signal. See [`signal(7)`](http://man7.org/linux/man-pages/man7/signal.7.html) for a list of available signals. This function + * returns `true` if [`kill(2)`](http://man7.org/linux/man-pages/man2/kill.2.html) succeeds, and `false` otherwise. + * + * ```js + * const { spawn } = require('node:child_process'); + * const grep = spawn('grep', ['ssh']); + * + * grep.on('close', (code, signal) => { + * console.log( + * `child process terminated due to receipt of signal ${signal}`); + * }); + * + * // Send SIGHUP to process. + * grep.kill('SIGHUP'); + * ``` + * + * The `ChildProcess` object may emit an `'error'` event if the signal + * cannot be delivered. Sending a signal to a child process that has already exited + * is not an error but may have unforeseen consequences. Specifically, if the + * process identifier (PID) has been reassigned to another process, the signal will + * be delivered to that process instead which can have unexpected results. + * + * While the function is called `kill`, the signal delivered to the child process + * may not actually terminate the process. + * + * See [`kill(2)`](http://man7.org/linux/man-pages/man2/kill.2.html) for reference. + * + * On Windows, where POSIX signals do not exist, the `signal` argument will be + * ignored, and the process will be killed forcefully and abruptly (similar to`'SIGKILL'`). + * See `Signal Events` for more details. + * + * On Linux, child processes of child processes will not be terminated + * when attempting to kill their parent. This is likely to happen when running a + * new process in a shell or with the use of the `shell` option of `ChildProcess`: + * + * ```js + * 'use strict'; + * const { spawn } = require('node:child_process'); + * + * const subprocess = spawn( + * 'sh', + * [ + * '-c', + * `node -e "setInterval(() => { + * console.log(process.pid, 'is alive') + * }, 500);"`, + * ], { + * stdio: ['inherit', 'inherit', 'inherit'], + * }, + * ); + * + * setTimeout(() => { + * subprocess.kill(); // Does not terminate the Node.js process in the shell. + * }, 2000); + * ``` + * @since v0.1.90 + */ + kill(signal?: NodeJS.Signals | number): boolean; + /** + * Calls {@link ChildProcess.kill} with `'SIGTERM'`. + * @since v20.5.0 + */ + [Symbol.dispose](): void; + /** + * When an IPC channel has been established between the parent and child ( + * i.e. when using {@link fork}), the `subprocess.send()` method can + * be used to send messages to the child process. When the child process is a + * Node.js instance, these messages can be received via the `'message'` event. + * + * The message goes through serialization and parsing. The resulting + * message might not be the same as what is originally sent. + * + * For example, in the parent script: + * + * ```js + * const cp = require('node:child_process'); + * const n = cp.fork(`${__dirname}/sub.js`); + * + * n.on('message', (m) => { + * console.log('PARENT got message:', m); + * }); + * + * // Causes the child to print: CHILD got message: { hello: 'world' } + * n.send({ hello: 'world' }); + * ``` + * + * And then the child script, `'sub.js'` might look like this: + * + * ```js + * process.on('message', (m) => { + * console.log('CHILD got message:', m); + * }); + * + * // Causes the parent to print: PARENT got message: { foo: 'bar', baz: null } + * process.send({ foo: 'bar', baz: NaN }); + * ``` + * + * Child Node.js processes will have a `process.send()` method of their own + * that allows the child to send messages back to the parent. + * + * There is a special case when sending a `{cmd: 'NODE_foo'}` message. Messages + * containing a `NODE_` prefix in the `cmd` property are reserved for use within + * Node.js core and will not be emitted in the child's `'message'` event. Rather, such messages are emitted using the`'internalMessage'` event and are consumed internally by Node.js. + * Applications should avoid using such messages or listening for`'internalMessage'` events as it is subject to change without notice. + * + * The optional `sendHandle` argument that may be passed to `subprocess.send()` is + * for passing a TCP server or socket object to the child process. The child will + * receive the object as the second argument passed to the callback function + * registered on the `'message'` event. Any data that is received + * and buffered in the socket will not be sent to the child. + * + * The optional `callback` is a function that is invoked after the message is + * sent but before the child may have received it. The function is called with a + * single argument: `null` on success, or an `Error` object on failure. + * + * If no `callback` function is provided and the message cannot be sent, an`'error'` event will be emitted by the `ChildProcess` object. This can + * happen, for instance, when the child process has already exited. + * + * `subprocess.send()` will return `false` if the channel has closed or when the + * backlog of unsent messages exceeds a threshold that makes it unwise to send + * more. Otherwise, the method returns `true`. The `callback` function can be + * used to implement flow control. + * + * #### Example: sending a server object + * + * The `sendHandle` argument can be used, for instance, to pass the handle of + * a TCP server object to the child process as illustrated in the example below: + * + * ```js + * const subprocess = require('node:child_process').fork('subprocess.js'); + * + * // Open up the server object and send the handle. + * const server = require('node:net').createServer(); + * server.on('connection', (socket) => { + * socket.end('handled by parent'); + * }); + * server.listen(1337, () => { + * subprocess.send('server', server); + * }); + * ``` + * + * The child would then receive the server object as: + * + * ```js + * process.on('message', (m, server) => { + * if (m === 'server') { + * server.on('connection', (socket) => { + * socket.end('handled by child'); + * }); + * } + * }); + * ``` + * + * Once the server is now shared between the parent and child, some connections + * can be handled by the parent and some by the child. + * + * While the example above uses a server created using the `node:net` module,`node:dgram` module servers use exactly the same workflow with the exceptions of + * listening on a `'message'` event instead of `'connection'` and using`server.bind()` instead of `server.listen()`. This is, however, only + * supported on Unix platforms. + * + * #### Example: sending a socket object + * + * Similarly, the `sendHandler` argument can be used to pass the handle of a + * socket to the child process. The example below spawns two children that each + * handle connections with "normal" or "special" priority: + * + * ```js + * const { fork } = require('node:child_process'); + * const normal = fork('subprocess.js', ['normal']); + * const special = fork('subprocess.js', ['special']); + * + * // Open up the server and send sockets to child. Use pauseOnConnect to prevent + * // the sockets from being read before they are sent to the child process. + * const server = require('node:net').createServer({ pauseOnConnect: true }); + * server.on('connection', (socket) => { + * + * // If this is special priority... + * if (socket.remoteAddress === '74.125.127.100') { + * special.send('socket', socket); + * return; + * } + * // This is normal priority. + * normal.send('socket', socket); + * }); + * server.listen(1337); + * ``` + * + * The `subprocess.js` would receive the socket handle as the second argument + * passed to the event callback function: + * + * ```js + * process.on('message', (m, socket) => { + * if (m === 'socket') { + * if (socket) { + * // Check that the client socket exists. + * // It is possible for the socket to be closed between the time it is + * // sent and the time it is received in the child process. + * socket.end(`Request handled with ${process.argv[2]} priority`); + * } + * } + * }); + * ``` + * + * Do not use `.maxConnections` on a socket that has been passed to a subprocess. + * The parent cannot track when the socket is destroyed. + * + * Any `'message'` handlers in the subprocess should verify that `socket` exists, + * as the connection may have been closed during the time it takes to send the + * connection to the child. + * @since v0.5.9 + * @param options The `options` argument, if present, is an object used to parameterize the sending of certain types of handles. `options` supports the following properties: + */ + send(message: Serializable, callback?: (error: Error | null) => void): boolean; + send(message: Serializable, sendHandle?: SendHandle, callback?: (error: Error | null) => void): boolean; + send( + message: Serializable, + sendHandle?: SendHandle, + options?: MessageOptions, + callback?: (error: Error | null) => void, + ): boolean; + /** + * Closes the IPC channel between parent and child, allowing the child to exit + * gracefully once there are no other connections keeping it alive. After calling + * this method the `subprocess.connected` and `process.connected` properties in + * both the parent and child (respectively) will be set to `false`, and it will be + * no longer possible to pass messages between the processes. + * + * The `'disconnect'` event will be emitted when there are no messages in the + * process of being received. This will most often be triggered immediately after + * calling `subprocess.disconnect()`. + * + * When the child process is a Node.js instance (e.g. spawned using {@link fork}), the `process.disconnect()` method can be invoked + * within the child process to close the IPC channel as well. + * @since v0.7.2 + */ + disconnect(): void; + /** + * By default, the parent will wait for the detached child to exit. To prevent the + * parent from waiting for a given `subprocess` to exit, use the`subprocess.unref()` method. Doing so will cause the parent's event loop to not + * include the child in its reference count, allowing the parent to exit + * independently of the child, unless there is an established IPC channel between + * the child and the parent. + * + * ```js + * const { spawn } = require('node:child_process'); + * + * const subprocess = spawn(process.argv[0], ['child_program.js'], { + * detached: true, + * stdio: 'ignore', + * }); + * + * subprocess.unref(); + * ``` + * @since v0.7.10 + */ + unref(): void; + /** + * Calling `subprocess.ref()` after making a call to `subprocess.unref()` will + * restore the removed reference count for the child process, forcing the parent + * to wait for the child to exit before exiting itself. + * + * ```js + * const { spawn } = require('node:child_process'); + * + * const subprocess = spawn(process.argv[0], ['child_program.js'], { + * detached: true, + * stdio: 'ignore', + * }); + * + * subprocess.unref(); + * subprocess.ref(); + * ``` + * @since v0.7.10 + */ + ref(): void; + /** + * events.EventEmitter + * 1. close + * 2. disconnect + * 3. error + * 4. exit + * 5. message + * 6. spawn + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; + addListener(event: "disconnect", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; + addListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; + addListener(event: "spawn", listener: () => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close", code: number | null, signal: NodeJS.Signals | null): boolean; + emit(event: "disconnect"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "exit", code: number | null, signal: NodeJS.Signals | null): boolean; + emit(event: "message", message: Serializable, sendHandle: SendHandle): boolean; + emit(event: "spawn", listener: () => void): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; + on(event: "disconnect", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; + on(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; + on(event: "spawn", listener: () => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; + once(event: "disconnect", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; + once(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; + once(event: "spawn", listener: () => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; + prependListener(event: "disconnect", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; + prependListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; + prependListener(event: "spawn", listener: () => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener( + event: "close", + listener: (code: number | null, signal: NodeJS.Signals | null) => void, + ): this; + prependOnceListener(event: "disconnect", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener( + event: "exit", + listener: (code: number | null, signal: NodeJS.Signals | null) => void, + ): this; + prependOnceListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this; + prependOnceListener(event: "spawn", listener: () => void): this; + } + // return this object when stdio option is undefined or not specified + interface ChildProcessWithoutNullStreams extends ChildProcess { + stdin: Writable; + stdout: Readable; + stderr: Readable; + readonly stdio: [ + Writable, + Readable, + Readable, + // stderr + Readable | Writable | null | undefined, + // extra, no modification + Readable | Writable | null | undefined, // extra, no modification + ]; + } + // return this object when stdio option is a tuple of 3 + interface ChildProcessByStdio + extends ChildProcess + { + stdin: I; + stdout: O; + stderr: E; + readonly stdio: [ + I, + O, + E, + Readable | Writable | null | undefined, + // extra, no modification + Readable | Writable | null | undefined, // extra, no modification + ]; + } + interface MessageOptions { + keepOpen?: boolean | undefined; + } + type IOType = "overlapped" | "pipe" | "ignore" | "inherit"; + type StdioOptions = IOType | Array; + type SerializationType = "json" | "advanced"; + interface MessagingOptions extends Abortable { + /** + * Specify the kind of serialization used for sending messages between processes. + * @default 'json' + */ + serialization?: SerializationType | undefined; + /** + * The signal value to be used when the spawned process will be killed by the abort signal. + * @default 'SIGTERM' + */ + killSignal?: NodeJS.Signals | number | undefined; + /** + * In milliseconds the maximum amount of time the process is allowed to run. + */ + timeout?: number | undefined; + } + interface ProcessEnvOptions { + uid?: number | undefined; + gid?: number | undefined; + cwd?: string | URL | undefined; + env?: NodeJS.ProcessEnv | undefined; + } + interface CommonOptions extends ProcessEnvOptions { + /** + * @default false + */ + windowsHide?: boolean | undefined; + /** + * @default 0 + */ + timeout?: number | undefined; + } + interface CommonSpawnOptions extends CommonOptions, MessagingOptions, Abortable { + argv0?: string | undefined; + /** + * Can be set to 'pipe', 'inherit', 'overlapped', or 'ignore', or an array of these strings. + * If passed as an array, the first element is used for `stdin`, the second for + * `stdout`, and the third for `stderr`. A fourth element can be used to + * specify the `stdio` behavior beyond the standard streams. See + * {@link ChildProcess.stdio} for more information. + * + * @default 'pipe' + */ + stdio?: StdioOptions | undefined; + shell?: boolean | string | undefined; + windowsVerbatimArguments?: boolean | undefined; + } + interface SpawnOptions extends CommonSpawnOptions { + detached?: boolean | undefined; + } + interface SpawnOptionsWithoutStdio extends SpawnOptions { + stdio?: StdioPipeNamed | StdioPipe[] | undefined; + } + type StdioNull = "inherit" | "ignore" | Stream; + type StdioPipeNamed = "pipe" | "overlapped"; + type StdioPipe = undefined | null | StdioPipeNamed; + interface SpawnOptionsWithStdioTuple< + Stdin extends StdioNull | StdioPipe, + Stdout extends StdioNull | StdioPipe, + Stderr extends StdioNull | StdioPipe, + > extends SpawnOptions { + stdio: [Stdin, Stdout, Stderr]; + } + /** + * The `child_process.spawn()` method spawns a new process using the given`command`, with command-line arguments in `args`. If omitted, `args` defaults + * to an empty array. + * + * **If the `shell` option is enabled, do not pass unsanitized user input to this** + * **function. Any input containing shell metacharacters may be used to trigger** + * **arbitrary command execution.** + * + * A third argument may be used to specify additional options, with these defaults: + * + * ```js + * const defaults = { + * cwd: undefined, + * env: process.env, + * }; + * ``` + * + * Use `cwd` to specify the working directory from which the process is spawned. + * If not given, the default is to inherit the current working directory. If given, + * but the path does not exist, the child process emits an `ENOENT` error + * and exits immediately. `ENOENT` is also emitted when the command + * does not exist. + * + * Use `env` to specify environment variables that will be visible to the new + * process, the default is `process.env`. + * + * `undefined` values in `env` will be ignored. + * + * Example of running `ls -lh /usr`, capturing `stdout`, `stderr`, and the + * exit code: + * + * ```js + * const { spawn } = require('node:child_process'); + * const ls = spawn('ls', ['-lh', '/usr']); + * + * ls.stdout.on('data', (data) => { + * console.log(`stdout: ${data}`); + * }); + * + * ls.stderr.on('data', (data) => { + * console.error(`stderr: ${data}`); + * }); + * + * ls.on('close', (code) => { + * console.log(`child process exited with code ${code}`); + * }); + * ``` + * + * Example: A very elaborate way to run `ps ax | grep ssh` + * + * ```js + * const { spawn } = require('node:child_process'); + * const ps = spawn('ps', ['ax']); + * const grep = spawn('grep', ['ssh']); + * + * ps.stdout.on('data', (data) => { + * grep.stdin.write(data); + * }); + * + * ps.stderr.on('data', (data) => { + * console.error(`ps stderr: ${data}`); + * }); + * + * ps.on('close', (code) => { + * if (code !== 0) { + * console.log(`ps process exited with code ${code}`); + * } + * grep.stdin.end(); + * }); + * + * grep.stdout.on('data', (data) => { + * console.log(data.toString()); + * }); + * + * grep.stderr.on('data', (data) => { + * console.error(`grep stderr: ${data}`); + * }); + * + * grep.on('close', (code) => { + * if (code !== 0) { + * console.log(`grep process exited with code ${code}`); + * } + * }); + * ``` + * + * Example of checking for failed `spawn`: + * + * ```js + * const { spawn } = require('node:child_process'); + * const subprocess = spawn('bad_command'); + * + * subprocess.on('error', (err) => { + * console.error('Failed to start subprocess.'); + * }); + * ``` + * + * Certain platforms (macOS, Linux) will use the value of `argv[0]` for the process + * title while others (Windows, SunOS) will use `command`. + * + * Node.js overwrites `argv[0]` with `process.execPath` on startup, so`process.argv[0]` in a Node.js child process will not match the `argv0`parameter passed to `spawn` from the parent. Retrieve + * it with the`process.argv0` property instead. + * + * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except + * the error passed to the callback will be an `AbortError`: + * + * ```js + * const { spawn } = require('node:child_process'); + * const controller = new AbortController(); + * const { signal } = controller; + * const grep = spawn('grep', ['ssh'], { signal }); + * grep.on('error', (err) => { + * // This will be called with err being an AbortError if the controller aborts + * }); + * controller.abort(); // Stops the child process + * ``` + * @since v0.1.90 + * @param command The command to run. + * @param args List of string arguments. + */ + function spawn(command: string, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams; + function spawn( + command: string, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn(command: string, options: SpawnOptions): ChildProcess; + // overloads of spawn with 'args' + function spawn( + command: string, + args?: ReadonlyArray, + options?: SpawnOptionsWithoutStdio, + ): ChildProcessWithoutNullStreams; + function spawn( + command: string, + args: ReadonlyArray, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + args: ReadonlyArray, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + args: ReadonlyArray, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + args: ReadonlyArray, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + args: ReadonlyArray, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + args: ReadonlyArray, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + args: ReadonlyArray, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn( + command: string, + args: ReadonlyArray, + options: SpawnOptionsWithStdioTuple, + ): ChildProcessByStdio; + function spawn(command: string, args: ReadonlyArray, options: SpawnOptions): ChildProcess; + interface ExecOptions extends CommonOptions { + shell?: string | undefined; + signal?: AbortSignal | undefined; + maxBuffer?: number | undefined; + killSignal?: NodeJS.Signals | number | undefined; + } + interface ExecOptionsWithStringEncoding extends ExecOptions { + encoding: BufferEncoding; + } + interface ExecOptionsWithBufferEncoding extends ExecOptions { + encoding: BufferEncoding | null; // specify `null`. + } + interface ExecException extends Error { + cmd?: string | undefined; + killed?: boolean | undefined; + code?: number | undefined; + signal?: NodeJS.Signals | undefined; + } + /** + * Spawns a shell then executes the `command` within that shell, buffering any + * generated output. The `command` string passed to the exec function is processed + * directly by the shell and special characters (vary based on [shell](https://en.wikipedia.org/wiki/List_of_command-line_interpreters)) + * need to be dealt with accordingly: + * + * ```js + * const { exec } = require('node:child_process'); + * + * exec('"/path/to/test file/test.sh" arg1 arg2'); + * // Double quotes are used so that the space in the path is not interpreted as + * // a delimiter of multiple arguments. + * + * exec('echo "The \\$HOME variable is $HOME"'); + * // The $HOME variable is escaped in the first instance, but not in the second. + * ``` + * + * **Never pass unsanitized user input to this function. Any input containing shell** + * **metacharacters may be used to trigger arbitrary command execution.** + * + * If a `callback` function is provided, it is called with the arguments`(error, stdout, stderr)`. On success, `error` will be `null`. On error,`error` will be an instance of `Error`. The + * `error.code` property will be + * the exit code of the process. By convention, any exit code other than `0`indicates an error. `error.signal` will be the signal that terminated the + * process. + * + * The `stdout` and `stderr` arguments passed to the callback will contain the + * stdout and stderr output of the child process. By default, Node.js will decode + * the output as UTF-8 and pass strings to the callback. The `encoding` option + * can be used to specify the character encoding used to decode the stdout and + * stderr output. If `encoding` is `'buffer'`, or an unrecognized character + * encoding, `Buffer` objects will be passed to the callback instead. + * + * ```js + * const { exec } = require('node:child_process'); + * exec('cat *.js missing_file | wc -l', (error, stdout, stderr) => { + * if (error) { + * console.error(`exec error: ${error}`); + * return; + * } + * console.log(`stdout: ${stdout}`); + * console.error(`stderr: ${stderr}`); + * }); + * ``` + * + * If `timeout` is greater than `0`, the parent will send the signal + * identified by the `killSignal` property (the default is `'SIGTERM'`) if the + * child runs longer than `timeout` milliseconds. + * + * Unlike the [`exec(3)`](http://man7.org/linux/man-pages/man3/exec.3.html) POSIX system call, `child_process.exec()` does not replace + * the existing process and uses a shell to execute the command. + * + * If this method is invoked as its `util.promisify()` ed version, it returns + * a `Promise` for an `Object` with `stdout` and `stderr` properties. The returned`ChildProcess` instance is attached to the `Promise` as a `child` property. In + * case of an error (including any error resulting in an exit code other than 0), a + * rejected promise is returned, with the same `error` object given in the + * callback, but with two additional properties `stdout` and `stderr`. + * + * ```js + * const util = require('node:util'); + * const exec = util.promisify(require('node:child_process').exec); + * + * async function lsExample() { + * const { stdout, stderr } = await exec('ls'); + * console.log('stdout:', stdout); + * console.error('stderr:', stderr); + * } + * lsExample(); + * ``` + * + * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except + * the error passed to the callback will be an `AbortError`: + * + * ```js + * const { exec } = require('node:child_process'); + * const controller = new AbortController(); + * const { signal } = controller; + * const child = exec('grep ssh', { signal }, (error) => { + * console.error(error); // an AbortError + * }); + * controller.abort(); + * ``` + * @since v0.1.90 + * @param command The command to run, with space-separated arguments. + * @param callback called with the output when process terminates. + */ + function exec( + command: string, + callback?: (error: ExecException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`. + function exec( + command: string, + options: { + encoding: "buffer" | null; + } & ExecOptions, + callback?: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void, + ): ChildProcess; + // `options` with well known `encoding` means stdout/stderr are definitely `string`. + function exec( + command: string, + options: { + encoding: BufferEncoding; + } & ExecOptions, + callback?: (error: ExecException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`. + // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`. + function exec( + command: string, + options: { + encoding: BufferEncoding; + } & ExecOptions, + callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void, + ): ChildProcess; + // `options` without an `encoding` means stdout/stderr are definitely `string`. + function exec( + command: string, + options: ExecOptions, + callback?: (error: ExecException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + // fallback if nothing else matches. Worst case is always `string | Buffer`. + function exec( + command: string, + options: (ObjectEncodingOptions & ExecOptions) | undefined | null, + callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void, + ): ChildProcess; + interface PromiseWithChild extends Promise { + child: ChildProcess; + } + namespace exec { + function __promisify__(command: string): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + command: string, + options: { + encoding: "buffer" | null; + } & ExecOptions, + ): PromiseWithChild<{ + stdout: Buffer; + stderr: Buffer; + }>; + function __promisify__( + command: string, + options: { + encoding: BufferEncoding; + } & ExecOptions, + ): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + command: string, + options: ExecOptions, + ): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + command: string, + options?: (ObjectEncodingOptions & ExecOptions) | null, + ): PromiseWithChild<{ + stdout: string | Buffer; + stderr: string | Buffer; + }>; + } + interface ExecFileOptions extends CommonOptions, Abortable { + maxBuffer?: number | undefined; + killSignal?: NodeJS.Signals | number | undefined; + windowsVerbatimArguments?: boolean | undefined; + shell?: boolean | string | undefined; + signal?: AbortSignal | undefined; + } + interface ExecFileOptionsWithStringEncoding extends ExecFileOptions { + encoding: BufferEncoding; + } + interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions { + encoding: "buffer" | null; + } + interface ExecFileOptionsWithOtherEncoding extends ExecFileOptions { + encoding: BufferEncoding; + } + type ExecFileException = + & Omit + & Omit + & { code?: string | number | undefined | null }; + /** + * The `child_process.execFile()` function is similar to {@link exec} except that it does not spawn a shell by default. Rather, the specified + * executable `file` is spawned directly as a new process making it slightly more + * efficient than {@link exec}. + * + * The same options as {@link exec} are supported. Since a shell is + * not spawned, behaviors such as I/O redirection and file globbing are not + * supported. + * + * ```js + * const { execFile } = require('node:child_process'); + * const child = execFile('node', ['--version'], (error, stdout, stderr) => { + * if (error) { + * throw error; + * } + * console.log(stdout); + * }); + * ``` + * + * The `stdout` and `stderr` arguments passed to the callback will contain the + * stdout and stderr output of the child process. By default, Node.js will decode + * the output as UTF-8 and pass strings to the callback. The `encoding` option + * can be used to specify the character encoding used to decode the stdout and + * stderr output. If `encoding` is `'buffer'`, or an unrecognized character + * encoding, `Buffer` objects will be passed to the callback instead. + * + * If this method is invoked as its `util.promisify()` ed version, it returns + * a `Promise` for an `Object` with `stdout` and `stderr` properties. The returned`ChildProcess` instance is attached to the `Promise` as a `child` property. In + * case of an error (including any error resulting in an exit code other than 0), a + * rejected promise is returned, with the same `error` object given in the + * callback, but with two additional properties `stdout` and `stderr`. + * + * ```js + * const util = require('node:util'); + * const execFile = util.promisify(require('node:child_process').execFile); + * async function getVersion() { + * const { stdout } = await execFile('node', ['--version']); + * console.log(stdout); + * } + * getVersion(); + * ``` + * + * **If the `shell` option is enabled, do not pass unsanitized user input to this** + * **function. Any input containing shell metacharacters may be used to trigger** + * **arbitrary command execution.** + * + * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except + * the error passed to the callback will be an `AbortError`: + * + * ```js + * const { execFile } = require('node:child_process'); + * const controller = new AbortController(); + * const { signal } = controller; + * const child = execFile('node', ['--version'], { signal }, (error) => { + * console.error(error); // an AbortError + * }); + * controller.abort(); + * ``` + * @since v0.1.91 + * @param file The name or path of the executable file to run. + * @param args List of string arguments. + * @param callback Called with the output when process terminates. + */ + function execFile(file: string): ChildProcess; + function execFile( + file: string, + options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, + ): ChildProcess; + function execFile(file: string, args?: ReadonlyArray | null): ChildProcess; + function execFile( + file: string, + args: ReadonlyArray | undefined | null, + options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, + ): ChildProcess; + // no `options` definitely means stdout/stderr are `string`. + function execFile( + file: string, + callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + function execFile( + file: string, + args: ReadonlyArray | undefined | null, + callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`. + function execFile( + file: string, + options: ExecFileOptionsWithBufferEncoding, + callback: (error: ExecFileException | null, stdout: Buffer, stderr: Buffer) => void, + ): ChildProcess; + function execFile( + file: string, + args: ReadonlyArray | undefined | null, + options: ExecFileOptionsWithBufferEncoding, + callback: (error: ExecFileException | null, stdout: Buffer, stderr: Buffer) => void, + ): ChildProcess; + // `options` with well known `encoding` means stdout/stderr are definitely `string`. + function execFile( + file: string, + options: ExecFileOptionsWithStringEncoding, + callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + function execFile( + file: string, + args: ReadonlyArray | undefined | null, + options: ExecFileOptionsWithStringEncoding, + callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`. + // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`. + function execFile( + file: string, + options: ExecFileOptionsWithOtherEncoding, + callback: (error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void, + ): ChildProcess; + function execFile( + file: string, + args: ReadonlyArray | undefined | null, + options: ExecFileOptionsWithOtherEncoding, + callback: (error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void, + ): ChildProcess; + // `options` without an `encoding` means stdout/stderr are definitely `string`. + function execFile( + file: string, + options: ExecFileOptions, + callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + function execFile( + file: string, + args: ReadonlyArray | undefined | null, + options: ExecFileOptions, + callback: (error: ExecFileException | null, stdout: string, stderr: string) => void, + ): ChildProcess; + // fallback if nothing else matches. Worst case is always `string | Buffer`. + function execFile( + file: string, + options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, + callback: + | ((error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void) + | undefined + | null, + ): ChildProcess; + function execFile( + file: string, + args: ReadonlyArray | undefined | null, + options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, + callback: + | ((error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void) + | undefined + | null, + ): ChildProcess; + namespace execFile { + function __promisify__(file: string): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + file: string, + args: ReadonlyArray | undefined | null, + ): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + file: string, + options: ExecFileOptionsWithBufferEncoding, + ): PromiseWithChild<{ + stdout: Buffer; + stderr: Buffer; + }>; + function __promisify__( + file: string, + args: ReadonlyArray | undefined | null, + options: ExecFileOptionsWithBufferEncoding, + ): PromiseWithChild<{ + stdout: Buffer; + stderr: Buffer; + }>; + function __promisify__( + file: string, + options: ExecFileOptionsWithStringEncoding, + ): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + file: string, + args: ReadonlyArray | undefined | null, + options: ExecFileOptionsWithStringEncoding, + ): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + file: string, + options: ExecFileOptionsWithOtherEncoding, + ): PromiseWithChild<{ + stdout: string | Buffer; + stderr: string | Buffer; + }>; + function __promisify__( + file: string, + args: ReadonlyArray | undefined | null, + options: ExecFileOptionsWithOtherEncoding, + ): PromiseWithChild<{ + stdout: string | Buffer; + stderr: string | Buffer; + }>; + function __promisify__( + file: string, + options: ExecFileOptions, + ): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + file: string, + args: ReadonlyArray | undefined | null, + options: ExecFileOptions, + ): PromiseWithChild<{ + stdout: string; + stderr: string; + }>; + function __promisify__( + file: string, + options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, + ): PromiseWithChild<{ + stdout: string | Buffer; + stderr: string | Buffer; + }>; + function __promisify__( + file: string, + args: ReadonlyArray | undefined | null, + options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null, + ): PromiseWithChild<{ + stdout: string | Buffer; + stderr: string | Buffer; + }>; + } + interface ForkOptions extends ProcessEnvOptions, MessagingOptions, Abortable { + execPath?: string | undefined; + execArgv?: string[] | undefined; + silent?: boolean | undefined; + /** + * Can be set to 'pipe', 'inherit', 'overlapped', or 'ignore', or an array of these strings. + * If passed as an array, the first element is used for `stdin`, the second for + * `stdout`, and the third for `stderr`. A fourth element can be used to + * specify the `stdio` behavior beyond the standard streams. See + * {@link ChildProcess.stdio} for more information. + * + * @default 'pipe' + */ + stdio?: StdioOptions | undefined; + detached?: boolean | undefined; + windowsVerbatimArguments?: boolean | undefined; + } + /** + * The `child_process.fork()` method is a special case of {@link spawn} used specifically to spawn new Node.js processes. + * Like {@link spawn}, a `ChildProcess` object is returned. The + * returned `ChildProcess` will have an additional communication channel + * built-in that allows messages to be passed back and forth between the parent and + * child. See `subprocess.send()` for details. + * + * Keep in mind that spawned Node.js child processes are + * independent of the parent with exception of the IPC communication channel + * that is established between the two. Each process has its own memory, with + * their own V8 instances. Because of the additional resource allocations + * required, spawning a large number of child Node.js processes is not + * recommended. + * + * By default, `child_process.fork()` will spawn new Node.js instances using the `process.execPath` of the parent process. The `execPath` property in the`options` object allows for an alternative + * execution path to be used. + * + * Node.js processes launched with a custom `execPath` will communicate with the + * parent process using the file descriptor (fd) identified using the + * environment variable `NODE_CHANNEL_FD` on the child process. + * + * Unlike the [`fork(2)`](http://man7.org/linux/man-pages/man2/fork.2.html) POSIX system call, `child_process.fork()` does not clone the + * current process. + * + * The `shell` option available in {@link spawn} is not supported by`child_process.fork()` and will be ignored if set. + * + * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except + * the error passed to the callback will be an `AbortError`: + * + * ```js + * if (process.argv[2] === 'child') { + * setTimeout(() => { + * console.log(`Hello from ${process.argv[2]}!`); + * }, 1_000); + * } else { + * const { fork } = require('node:child_process'); + * const controller = new AbortController(); + * const { signal } = controller; + * const child = fork(__filename, ['child'], { signal }); + * child.on('error', (err) => { + * // This will be called with err being an AbortError if the controller aborts + * }); + * controller.abort(); // Stops the child process + * } + * ``` + * @since v0.5.0 + * @param modulePath The module to run in the child. + * @param args List of string arguments. + */ + function fork(modulePath: string, options?: ForkOptions): ChildProcess; + function fork(modulePath: string, args?: ReadonlyArray, options?: ForkOptions): ChildProcess; + interface SpawnSyncOptions extends CommonSpawnOptions { + input?: string | NodeJS.ArrayBufferView | undefined; + maxBuffer?: number | undefined; + encoding?: BufferEncoding | "buffer" | null | undefined; + } + interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions { + encoding: BufferEncoding; + } + interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions { + encoding?: "buffer" | null | undefined; + } + interface SpawnSyncReturns { + pid: number; + output: Array; + stdout: T; + stderr: T; + status: number | null; + signal: NodeJS.Signals | null; + error?: Error | undefined; + } + /** + * The `child_process.spawnSync()` method is generally identical to {@link spawn} with the exception that the function will not return + * until the child process has fully closed. When a timeout has been encountered + * and `killSignal` is sent, the method won't return until the process has + * completely exited. If the process intercepts and handles the `SIGTERM` signal + * and doesn't exit, the parent process will wait until the child process has + * exited. + * + * **If the `shell` option is enabled, do not pass unsanitized user input to this** + * **function. Any input containing shell metacharacters may be used to trigger** + * **arbitrary command execution.** + * @since v0.11.12 + * @param command The command to run. + * @param args List of string arguments. + */ + function spawnSync(command: string): SpawnSyncReturns; + function spawnSync(command: string, options: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns; + function spawnSync(command: string, options: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns; + function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns; + function spawnSync(command: string, args: ReadonlyArray): SpawnSyncReturns; + function spawnSync( + command: string, + args: ReadonlyArray, + options: SpawnSyncOptionsWithStringEncoding, + ): SpawnSyncReturns; + function spawnSync( + command: string, + args: ReadonlyArray, + options: SpawnSyncOptionsWithBufferEncoding, + ): SpawnSyncReturns; + function spawnSync( + command: string, + args?: ReadonlyArray, + options?: SpawnSyncOptions, + ): SpawnSyncReturns; + interface CommonExecOptions extends CommonOptions { + input?: string | NodeJS.ArrayBufferView | undefined; + /** + * Can be set to 'pipe', 'inherit, or 'ignore', or an array of these strings. + * If passed as an array, the first element is used for `stdin`, the second for + * `stdout`, and the third for `stderr`. A fourth element can be used to + * specify the `stdio` behavior beyond the standard streams. See + * {@link ChildProcess.stdio} for more information. + * + * @default 'pipe' + */ + stdio?: StdioOptions | undefined; + killSignal?: NodeJS.Signals | number | undefined; + maxBuffer?: number | undefined; + encoding?: BufferEncoding | "buffer" | null | undefined; + } + interface ExecSyncOptions extends CommonExecOptions { + shell?: string | undefined; + } + interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions { + encoding: BufferEncoding; + } + interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions { + encoding?: "buffer" | null | undefined; + } + /** + * The `child_process.execSync()` method is generally identical to {@link exec} with the exception that the method will not return + * until the child process has fully closed. When a timeout has been encountered + * and `killSignal` is sent, the method won't return until the process has + * completely exited. If the child process intercepts and handles the `SIGTERM`signal and doesn't exit, the parent process will wait until the child process + * has exited. + * + * If the process times out or has a non-zero exit code, this method will throw. + * The `Error` object will contain the entire result from {@link spawnSync}. + * + * **Never pass unsanitized user input to this function. Any input containing shell** + * **metacharacters may be used to trigger arbitrary command execution.** + * @since v0.11.12 + * @param command The command to run. + * @return The stdout from the command. + */ + function execSync(command: string): Buffer; + function execSync(command: string, options: ExecSyncOptionsWithStringEncoding): string; + function execSync(command: string, options: ExecSyncOptionsWithBufferEncoding): Buffer; + function execSync(command: string, options?: ExecSyncOptions): string | Buffer; + interface ExecFileSyncOptions extends CommonExecOptions { + shell?: boolean | string | undefined; + } + interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions { + encoding: BufferEncoding; + } + interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions { + encoding?: "buffer" | null; // specify `null`. + } + /** + * The `child_process.execFileSync()` method is generally identical to {@link execFile} with the exception that the method will not + * return until the child process has fully closed. When a timeout has been + * encountered and `killSignal` is sent, the method won't return until the process + * has completely exited. + * + * If the child process intercepts and handles the `SIGTERM` signal and + * does not exit, the parent process will still wait until the child process has + * exited. + * + * If the process times out or has a non-zero exit code, this method will throw an `Error` that will include the full result of the underlying {@link spawnSync}. + * + * **If the `shell` option is enabled, do not pass unsanitized user input to this** + * **function. Any input containing shell metacharacters may be used to trigger** + * **arbitrary command execution.** + * @since v0.11.12 + * @param file The name or path of the executable file to run. + * @param args List of string arguments. + * @return The stdout from the command. + */ + function execFileSync(file: string): Buffer; + function execFileSync(file: string, options: ExecFileSyncOptionsWithStringEncoding): string; + function execFileSync(file: string, options: ExecFileSyncOptionsWithBufferEncoding): Buffer; + function execFileSync(file: string, options?: ExecFileSyncOptions): string | Buffer; + function execFileSync(file: string, args: ReadonlyArray): Buffer; + function execFileSync( + file: string, + args: ReadonlyArray, + options: ExecFileSyncOptionsWithStringEncoding, + ): string; + function execFileSync( + file: string, + args: ReadonlyArray, + options: ExecFileSyncOptionsWithBufferEncoding, + ): Buffer; + function execFileSync(file: string, args?: ReadonlyArray, options?: ExecFileSyncOptions): string | Buffer; +} +declare module "node:child_process" { + export * from "child_process"; +} diff --git a/node_modules/@types/node/ts4.8/cluster.d.ts b/node_modules/@types/node/ts4.8/cluster.d.ts new file mode 100644 index 00000000..39cd56ad --- /dev/null +++ b/node_modules/@types/node/ts4.8/cluster.d.ts @@ -0,0 +1,432 @@ +/** + * Clusters of Node.js processes can be used to run multiple instances of Node.js + * that can distribute workloads among their application threads. When process + * isolation is not needed, use the `worker_threads` module instead, which + * allows running multiple application threads within a single Node.js instance. + * + * The cluster module allows easy creation of child processes that all share + * server ports. + * + * ```js + * import cluster from 'node:cluster'; + * import http from 'node:http'; + * import { availableParallelism } from 'node:os'; + * import process from 'node:process'; + * + * const numCPUs = availableParallelism(); + * + * if (cluster.isPrimary) { + * console.log(`Primary ${process.pid} is running`); + * + * // Fork workers. + * for (let i = 0; i < numCPUs; i++) { + * cluster.fork(); + * } + * + * cluster.on('exit', (worker, code, signal) => { + * console.log(`worker ${worker.process.pid} died`); + * }); + * } else { + * // Workers can share any TCP connection + * // In this case it is an HTTP server + * http.createServer((req, res) => { + * res.writeHead(200); + * res.end('hello world\n'); + * }).listen(8000); + * + * console.log(`Worker ${process.pid} started`); + * } + * ``` + * + * Running Node.js will now share port 8000 between the workers: + * + * ```console + * $ node server.js + * Primary 3596 is running + * Worker 4324 started + * Worker 4520 started + * Worker 6056 started + * Worker 5644 started + * ``` + * + * On Windows, it is not yet possible to set up a named pipe server in a worker. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/cluster.js) + */ +declare module "cluster" { + import * as child from "node:child_process"; + import EventEmitter = require("node:events"); + import * as net from "node:net"; + type SerializationType = "json" | "advanced"; + export interface ClusterSettings { + execArgv?: string[] | undefined; // default: process.execArgv + exec?: string | undefined; + args?: string[] | undefined; + silent?: boolean | undefined; + stdio?: any[] | undefined; + uid?: number | undefined; + gid?: number | undefined; + inspectPort?: number | (() => number) | undefined; + serialization?: SerializationType | undefined; + cwd?: string | undefined; + windowsHide?: boolean | undefined; + } + export interface Address { + address: string; + port: number; + addressType: number | "udp4" | "udp6"; // 4, 6, -1, "udp4", "udp6" + } + /** + * A `Worker` object contains all public information and method about a worker. + * In the primary it can be obtained using `cluster.workers`. In a worker + * it can be obtained using `cluster.worker`. + * @since v0.7.0 + */ + export class Worker extends EventEmitter { + /** + * Each new worker is given its own unique id, this id is stored in the`id`. + * + * While a worker is alive, this is the key that indexes it in`cluster.workers`. + * @since v0.8.0 + */ + id: number; + /** + * All workers are created using `child_process.fork()`, the returned object + * from this function is stored as `.process`. In a worker, the global `process`is stored. + * + * See: `Child Process module`. + * + * Workers will call `process.exit(0)` if the `'disconnect'` event occurs + * on `process` and `.exitedAfterDisconnect` is not `true`. This protects against + * accidental disconnection. + * @since v0.7.0 + */ + process: child.ChildProcess; + /** + * Send a message to a worker or primary, optionally with a handle. + * + * In the primary, this sends a message to a specific worker. It is identical to `ChildProcess.send()`. + * + * In a worker, this sends a message to the primary. It is identical to`process.send()`. + * + * This example will echo back all messages from the primary: + * + * ```js + * if (cluster.isPrimary) { + * const worker = cluster.fork(); + * worker.send('hi there'); + * + * } else if (cluster.isWorker) { + * process.on('message', (msg) => { + * process.send(msg); + * }); + * } + * ``` + * @since v0.7.0 + * @param options The `options` argument, if present, is an object used to parameterize the sending of certain types of handles. `options` supports the following properties: + */ + send(message: child.Serializable, callback?: (error: Error | null) => void): boolean; + send( + message: child.Serializable, + sendHandle: child.SendHandle, + callback?: (error: Error | null) => void, + ): boolean; + send( + message: child.Serializable, + sendHandle: child.SendHandle, + options?: child.MessageOptions, + callback?: (error: Error | null) => void, + ): boolean; + /** + * This function will kill the worker. In the primary worker, it does this by + * disconnecting the `worker.process`, and once disconnected, killing with`signal`. In the worker, it does it by killing the process with `signal`. + * + * The `kill()` function kills the worker process without waiting for a graceful + * disconnect, it has the same behavior as `worker.process.kill()`. + * + * This method is aliased as `worker.destroy()` for backwards compatibility. + * + * In a worker, `process.kill()` exists, but it is not this function; + * it is `kill()`. + * @since v0.9.12 + * @param [signal='SIGTERM'] Name of the kill signal to send to the worker process. + */ + kill(signal?: string): void; + destroy(signal?: string): void; + /** + * In a worker, this function will close all servers, wait for the `'close'` event + * on those servers, and then disconnect the IPC channel. + * + * In the primary, an internal message is sent to the worker causing it to call`.disconnect()` on itself. + * + * Causes `.exitedAfterDisconnect` to be set. + * + * After a server is closed, it will no longer accept new connections, + * but connections may be accepted by any other listening worker. Existing + * connections will be allowed to close as usual. When no more connections exist, + * see `server.close()`, the IPC channel to the worker will close allowing it + * to die gracefully. + * + * The above applies _only_ to server connections, client connections are not + * automatically closed by workers, and disconnect does not wait for them to close + * before exiting. + * + * In a worker, `process.disconnect` exists, but it is not this function; + * it is `disconnect()`. + * + * Because long living server connections may block workers from disconnecting, it + * may be useful to send a message, so application specific actions may be taken to + * close them. It also may be useful to implement a timeout, killing a worker if + * the `'disconnect'` event has not been emitted after some time. + * + * ```js + * if (cluster.isPrimary) { + * const worker = cluster.fork(); + * let timeout; + * + * worker.on('listening', (address) => { + * worker.send('shutdown'); + * worker.disconnect(); + * timeout = setTimeout(() => { + * worker.kill(); + * }, 2000); + * }); + * + * worker.on('disconnect', () => { + * clearTimeout(timeout); + * }); + * + * } else if (cluster.isWorker) { + * const net = require('node:net'); + * const server = net.createServer((socket) => { + * // Connections never end + * }); + * + * server.listen(8000); + * + * process.on('message', (msg) => { + * if (msg === 'shutdown') { + * // Initiate graceful close of any connections to server + * } + * }); + * } + * ``` + * @since v0.7.7 + * @return A reference to `worker`. + */ + disconnect(): void; + /** + * This function returns `true` if the worker is connected to its primary via its + * IPC channel, `false` otherwise. A worker is connected to its primary after it + * has been created. It is disconnected after the `'disconnect'` event is emitted. + * @since v0.11.14 + */ + isConnected(): boolean; + /** + * This function returns `true` if the worker's process has terminated (either + * because of exiting or being signaled). Otherwise, it returns `false`. + * + * ```js + * import cluster from 'node:cluster'; + * import http from 'node:http'; + * import { availableParallelism } from 'node:os'; + * import process from 'node:process'; + * + * const numCPUs = availableParallelism(); + * + * if (cluster.isPrimary) { + * console.log(`Primary ${process.pid} is running`); + * + * // Fork workers. + * for (let i = 0; i < numCPUs; i++) { + * cluster.fork(); + * } + * + * cluster.on('fork', (worker) => { + * console.log('worker is dead:', worker.isDead()); + * }); + * + * cluster.on('exit', (worker, code, signal) => { + * console.log('worker is dead:', worker.isDead()); + * }); + * } else { + * // Workers can share any TCP connection. In this case, it is an HTTP server. + * http.createServer((req, res) => { + * res.writeHead(200); + * res.end(`Current process\n ${process.pid}`); + * process.kill(process.pid); + * }).listen(8000); + * } + * ``` + * @since v0.11.14 + */ + isDead(): boolean; + /** + * This property is `true` if the worker exited due to `.disconnect()`. + * If the worker exited any other way, it is `false`. If the + * worker has not exited, it is `undefined`. + * + * The boolean `worker.exitedAfterDisconnect` allows distinguishing between + * voluntary and accidental exit, the primary may choose not to respawn a worker + * based on this value. + * + * ```js + * cluster.on('exit', (worker, code, signal) => { + * if (worker.exitedAfterDisconnect === true) { + * console.log('Oh, it was just voluntary – no need to worry'); + * } + * }); + * + * // kill worker + * worker.kill(); + * ``` + * @since v6.0.0 + */ + exitedAfterDisconnect: boolean; + /** + * events.EventEmitter + * 1. disconnect + * 2. error + * 3. exit + * 4. listening + * 5. message + * 6. online + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "disconnect", listener: () => void): this; + addListener(event: "error", listener: (error: Error) => void): this; + addListener(event: "exit", listener: (code: number, signal: string) => void): this; + addListener(event: "listening", listener: (address: Address) => void): this; + addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + addListener(event: "online", listener: () => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "disconnect"): boolean; + emit(event: "error", error: Error): boolean; + emit(event: "exit", code: number, signal: string): boolean; + emit(event: "listening", address: Address): boolean; + emit(event: "message", message: any, handle: net.Socket | net.Server): boolean; + emit(event: "online"): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "disconnect", listener: () => void): this; + on(event: "error", listener: (error: Error) => void): this; + on(event: "exit", listener: (code: number, signal: string) => void): this; + on(event: "listening", listener: (address: Address) => void): this; + on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + on(event: "online", listener: () => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "disconnect", listener: () => void): this; + once(event: "error", listener: (error: Error) => void): this; + once(event: "exit", listener: (code: number, signal: string) => void): this; + once(event: "listening", listener: (address: Address) => void): this; + once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + once(event: "online", listener: () => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "disconnect", listener: () => void): this; + prependListener(event: "error", listener: (error: Error) => void): this; + prependListener(event: "exit", listener: (code: number, signal: string) => void): this; + prependListener(event: "listening", listener: (address: Address) => void): this; + prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + prependListener(event: "online", listener: () => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "disconnect", listener: () => void): this; + prependOnceListener(event: "error", listener: (error: Error) => void): this; + prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this; + prependOnceListener(event: "listening", listener: (address: Address) => void): this; + prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + prependOnceListener(event: "online", listener: () => void): this; + } + export interface Cluster extends EventEmitter { + disconnect(callback?: () => void): void; + fork(env?: any): Worker; + /** @deprecated since v16.0.0 - use isPrimary. */ + readonly isMaster: boolean; + readonly isPrimary: boolean; + readonly isWorker: boolean; + schedulingPolicy: number; + readonly settings: ClusterSettings; + /** @deprecated since v16.0.0 - use setupPrimary. */ + setupMaster(settings?: ClusterSettings): void; + /** + * `setupPrimary` is used to change the default 'fork' behavior. Once called, the settings will be present in cluster.settings. + */ + setupPrimary(settings?: ClusterSettings): void; + readonly worker?: Worker | undefined; + readonly workers?: NodeJS.Dict | undefined; + readonly SCHED_NONE: number; + readonly SCHED_RR: number; + /** + * events.EventEmitter + * 1. disconnect + * 2. exit + * 3. fork + * 4. listening + * 5. message + * 6. online + * 7. setup + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "disconnect", listener: (worker: Worker) => void): this; + addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + addListener(event: "fork", listener: (worker: Worker) => void): this; + addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; + addListener( + event: "message", + listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void, + ): this; // the handle is a net.Socket or net.Server object, or undefined. + addListener(event: "online", listener: (worker: Worker) => void): this; + addListener(event: "setup", listener: (settings: ClusterSettings) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "disconnect", worker: Worker): boolean; + emit(event: "exit", worker: Worker, code: number, signal: string): boolean; + emit(event: "fork", worker: Worker): boolean; + emit(event: "listening", worker: Worker, address: Address): boolean; + emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean; + emit(event: "online", worker: Worker): boolean; + emit(event: "setup", settings: ClusterSettings): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "disconnect", listener: (worker: Worker) => void): this; + on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + on(event: "fork", listener: (worker: Worker) => void): this; + on(event: "listening", listener: (worker: Worker, address: Address) => void): this; + on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + on(event: "online", listener: (worker: Worker) => void): this; + on(event: "setup", listener: (settings: ClusterSettings) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "disconnect", listener: (worker: Worker) => void): this; + once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + once(event: "fork", listener: (worker: Worker) => void): this; + once(event: "listening", listener: (worker: Worker, address: Address) => void): this; + once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. + once(event: "online", listener: (worker: Worker) => void): this; + once(event: "setup", listener: (settings: ClusterSettings) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "disconnect", listener: (worker: Worker) => void): this; + prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + prependListener(event: "fork", listener: (worker: Worker) => void): this; + prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; + // the handle is a net.Socket or net.Server object, or undefined. + prependListener( + event: "message", + listener: (worker: Worker, message: any, handle?: net.Socket | net.Server) => void, + ): this; + prependListener(event: "online", listener: (worker: Worker) => void): this; + prependListener(event: "setup", listener: (settings: ClusterSettings) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this; + prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this; + prependOnceListener(event: "fork", listener: (worker: Worker) => void): this; + prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this; + // the handle is a net.Socket or net.Server object, or undefined. + prependOnceListener( + event: "message", + listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void, + ): this; + prependOnceListener(event: "online", listener: (worker: Worker) => void): this; + prependOnceListener(event: "setup", listener: (settings: ClusterSettings) => void): this; + } + const cluster: Cluster; + export default cluster; +} +declare module "node:cluster" { + export * from "cluster"; + export { default as default } from "cluster"; +} diff --git a/node_modules/@types/node/ts4.8/console.d.ts b/node_modules/@types/node/ts4.8/console.d.ts new file mode 100644 index 00000000..8ea5e17b --- /dev/null +++ b/node_modules/@types/node/ts4.8/console.d.ts @@ -0,0 +1,415 @@ +/** + * The `node:console` module provides a simple debugging console that is similar to + * the JavaScript console mechanism provided by web browsers. + * + * The module exports two specific components: + * + * * A `Console` class with methods such as `console.log()`, `console.error()`, and`console.warn()` that can be used to write to any Node.js stream. + * * A global `console` instance configured to write to `process.stdout` and `process.stderr`. The global `console` can be used without calling`require('node:console')`. + * + * _**Warning**_: The global console object's methods are neither consistently + * synchronous like the browser APIs they resemble, nor are they consistently + * asynchronous like all other Node.js streams. See the `note on process I/O` for + * more information. + * + * Example using the global `console`: + * + * ```js + * console.log('hello world'); + * // Prints: hello world, to stdout + * console.log('hello %s', 'world'); + * // Prints: hello world, to stdout + * console.error(new Error('Whoops, something bad happened')); + * // Prints error message and stack trace to stderr: + * // Error: Whoops, something bad happened + * // at [eval]:5:15 + * // at Script.runInThisContext (node:vm:132:18) + * // at Object.runInThisContext (node:vm:309:38) + * // at node:internal/process/execution:77:19 + * // at [eval]-wrapper:6:22 + * // at evalScript (node:internal/process/execution:76:60) + * // at node:internal/main/eval_string:23:3 + * + * const name = 'Will Robinson'; + * console.warn(`Danger ${name}! Danger!`); + * // Prints: Danger Will Robinson! Danger!, to stderr + * ``` + * + * Example using the `Console` class: + * + * ```js + * const out = getStreamSomehow(); + * const err = getStreamSomehow(); + * const myConsole = new console.Console(out, err); + * + * myConsole.log('hello world'); + * // Prints: hello world, to out + * myConsole.log('hello %s', 'world'); + * // Prints: hello world, to out + * myConsole.error(new Error('Whoops, something bad happened')); + * // Prints: [Error: Whoops, something bad happened], to err + * + * const name = 'Will Robinson'; + * myConsole.warn(`Danger ${name}! Danger!`); + * // Prints: Danger Will Robinson! Danger!, to err + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/console.js) + */ +declare module "console" { + import console = require("node:console"); + export = console; +} +declare module "node:console" { + import { InspectOptions } from "node:util"; + global { + // This needs to be global to avoid TS2403 in case lib.dom.d.ts is present in the same build + interface Console { + Console: console.ConsoleConstructor; + /** + * `console.assert()` writes a message if `value` is [falsy](https://developer.mozilla.org/en-US/docs/Glossary/Falsy) or omitted. It only + * writes a message and does not otherwise affect execution. The output always + * starts with `"Assertion failed"`. If provided, `message` is formatted using `util.format()`. + * + * If `value` is [truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy), nothing happens. + * + * ```js + * console.assert(true, 'does nothing'); + * + * console.assert(false, 'Whoops %s work', 'didn\'t'); + * // Assertion failed: Whoops didn't work + * + * console.assert(); + * // Assertion failed + * ``` + * @since v0.1.101 + * @param value The value tested for being truthy. + * @param message All arguments besides `value` are used as error message. + */ + assert(value: any, message?: string, ...optionalParams: any[]): void; + /** + * When `stdout` is a TTY, calling `console.clear()` will attempt to clear the + * TTY. When `stdout` is not a TTY, this method does nothing. + * + * The specific operation of `console.clear()` can vary across operating systems + * and terminal types. For most Linux operating systems, `console.clear()`operates similarly to the `clear` shell command. On Windows, `console.clear()`will clear only the output in the + * current terminal viewport for the Node.js + * binary. + * @since v8.3.0 + */ + clear(): void; + /** + * Maintains an internal counter specific to `label` and outputs to `stdout` the + * number of times `console.count()` has been called with the given `label`. + * + * ```js + * > console.count() + * default: 1 + * undefined + * > console.count('default') + * default: 2 + * undefined + * > console.count('abc') + * abc: 1 + * undefined + * > console.count('xyz') + * xyz: 1 + * undefined + * > console.count('abc') + * abc: 2 + * undefined + * > console.count() + * default: 3 + * undefined + * > + * ``` + * @since v8.3.0 + * @param [label='default'] The display label for the counter. + */ + count(label?: string): void; + /** + * Resets the internal counter specific to `label`. + * + * ```js + * > console.count('abc'); + * abc: 1 + * undefined + * > console.countReset('abc'); + * undefined + * > console.count('abc'); + * abc: 1 + * undefined + * > + * ``` + * @since v8.3.0 + * @param [label='default'] The display label for the counter. + */ + countReset(label?: string): void; + /** + * The `console.debug()` function is an alias for {@link log}. + * @since v8.0.0 + */ + debug(message?: any, ...optionalParams: any[]): void; + /** + * Uses `util.inspect()` on `obj` and prints the resulting string to `stdout`. + * This function bypasses any custom `inspect()` function defined on `obj`. + * @since v0.1.101 + */ + dir(obj: any, options?: InspectOptions): void; + /** + * This method calls `console.log()` passing it the arguments received. + * This method does not produce any XML formatting. + * @since v8.0.0 + */ + dirxml(...data: any[]): void; + /** + * Prints to `stderr` with newline. Multiple arguments can be passed, with the + * first used as the primary message and all additional used as substitution + * values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html) (the arguments are all passed to `util.format()`). + * + * ```js + * const code = 5; + * console.error('error #%d', code); + * // Prints: error #5, to stderr + * console.error('error', code); + * // Prints: error 5, to stderr + * ``` + * + * If formatting elements (e.g. `%d`) are not found in the first string then `util.inspect()` is called on each argument and the resulting string + * values are concatenated. See `util.format()` for more information. + * @since v0.1.100 + */ + error(message?: any, ...optionalParams: any[]): void; + /** + * Increases indentation of subsequent lines by spaces for `groupIndentation`length. + * + * If one or more `label`s are provided, those are printed first without the + * additional indentation. + * @since v8.5.0 + */ + group(...label: any[]): void; + /** + * An alias for {@link group}. + * @since v8.5.0 + */ + groupCollapsed(...label: any[]): void; + /** + * Decreases indentation of subsequent lines by spaces for `groupIndentation`length. + * @since v8.5.0 + */ + groupEnd(): void; + /** + * The `console.info()` function is an alias for {@link log}. + * @since v0.1.100 + */ + info(message?: any, ...optionalParams: any[]): void; + /** + * Prints to `stdout` with newline. Multiple arguments can be passed, with the + * first used as the primary message and all additional used as substitution + * values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html) (the arguments are all passed to `util.format()`). + * + * ```js + * const count = 5; + * console.log('count: %d', count); + * // Prints: count: 5, to stdout + * console.log('count:', count); + * // Prints: count: 5, to stdout + * ``` + * + * See `util.format()` for more information. + * @since v0.1.100 + */ + log(message?: any, ...optionalParams: any[]): void; + /** + * Try to construct a table with the columns of the properties of `tabularData`(or use `properties`) and rows of `tabularData` and log it. Falls back to just + * logging the argument if it can't be parsed as tabular. + * + * ```js + * // These can't be parsed as tabular data + * console.table(Symbol()); + * // Symbol() + * + * console.table(undefined); + * // undefined + * + * console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }]); + * // ┌─────────┬─────┬─────┐ + * // │ (index) │ a │ b │ + * // ├─────────┼─────┼─────┤ + * // │ 0 │ 1 │ 'Y' │ + * // │ 1 │ 'Z' │ 2 │ + * // └─────────┴─────┴─────┘ + * + * console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }], ['a']); + * // ┌─────────┬─────┐ + * // │ (index) │ a │ + * // ├─────────┼─────┤ + * // │ 0 │ 1 │ + * // │ 1 │ 'Z' │ + * // └─────────┴─────┘ + * ``` + * @since v10.0.0 + * @param properties Alternate properties for constructing the table. + */ + table(tabularData: any, properties?: ReadonlyArray): void; + /** + * Starts a timer that can be used to compute the duration of an operation. Timers + * are identified by a unique `label`. Use the same `label` when calling {@link timeEnd} to stop the timer and output the elapsed time in + * suitable time units to `stdout`. For example, if the elapsed + * time is 3869ms, `console.timeEnd()` displays "3.869s". + * @since v0.1.104 + * @param [label='default'] + */ + time(label?: string): void; + /** + * Stops a timer that was previously started by calling {@link time} and + * prints the result to `stdout`: + * + * ```js + * console.time('bunch-of-stuff'); + * // Do a bunch of stuff. + * console.timeEnd('bunch-of-stuff'); + * // Prints: bunch-of-stuff: 225.438ms + * ``` + * @since v0.1.104 + * @param [label='default'] + */ + timeEnd(label?: string): void; + /** + * For a timer that was previously started by calling {@link time}, prints + * the elapsed time and other `data` arguments to `stdout`: + * + * ```js + * console.time('process'); + * const value = expensiveProcess1(); // Returns 42 + * console.timeLog('process', value); + * // Prints "process: 365.227ms 42". + * doExpensiveProcess2(value); + * console.timeEnd('process'); + * ``` + * @since v10.7.0 + * @param [label='default'] + */ + timeLog(label?: string, ...data: any[]): void; + /** + * Prints to `stderr` the string `'Trace: '`, followed by the `util.format()` formatted message and stack trace to the current position in the code. + * + * ```js + * console.trace('Show me'); + * // Prints: (stack trace will vary based on where trace is called) + * // Trace: Show me + * // at repl:2:9 + * // at REPLServer.defaultEval (repl.js:248:27) + * // at bound (domain.js:287:14) + * // at REPLServer.runBound [as eval] (domain.js:300:12) + * // at REPLServer. (repl.js:412:12) + * // at emitOne (events.js:82:20) + * // at REPLServer.emit (events.js:169:7) + * // at REPLServer.Interface._onLine (readline.js:210:10) + * // at REPLServer.Interface._line (readline.js:549:8) + * // at REPLServer.Interface._ttyWrite (readline.js:826:14) + * ``` + * @since v0.1.104 + */ + trace(message?: any, ...optionalParams: any[]): void; + /** + * The `console.warn()` function is an alias for {@link error}. + * @since v0.1.100 + */ + warn(message?: any, ...optionalParams: any[]): void; + // --- Inspector mode only --- + /** + * This method does not display anything unless used in the inspector. + * Starts a JavaScript CPU profile with an optional label. + */ + profile(label?: string): void; + /** + * This method does not display anything unless used in the inspector. + * Stops the current JavaScript CPU profiling session if one has been started and prints the report to the Profiles panel of the inspector. + */ + profileEnd(label?: string): void; + /** + * This method does not display anything unless used in the inspector. + * Adds an event with the label `label` to the Timeline panel of the inspector. + */ + timeStamp(label?: string): void; + } + /** + * The `console` module provides a simple debugging console that is similar to the + * JavaScript console mechanism provided by web browsers. + * + * The module exports two specific components: + * + * * A `Console` class with methods such as `console.log()`, `console.error()` and`console.warn()` that can be used to write to any Node.js stream. + * * A global `console` instance configured to write to `process.stdout` and `process.stderr`. The global `console` can be used without calling`require('console')`. + * + * _**Warning**_: The global console object's methods are neither consistently + * synchronous like the browser APIs they resemble, nor are they consistently + * asynchronous like all other Node.js streams. See the `note on process I/O` for + * more information. + * + * Example using the global `console`: + * + * ```js + * console.log('hello world'); + * // Prints: hello world, to stdout + * console.log('hello %s', 'world'); + * // Prints: hello world, to stdout + * console.error(new Error('Whoops, something bad happened')); + * // Prints error message and stack trace to stderr: + * // Error: Whoops, something bad happened + * // at [eval]:5:15 + * // at Script.runInThisContext (node:vm:132:18) + * // at Object.runInThisContext (node:vm:309:38) + * // at node:internal/process/execution:77:19 + * // at [eval]-wrapper:6:22 + * // at evalScript (node:internal/process/execution:76:60) + * // at node:internal/main/eval_string:23:3 + * + * const name = 'Will Robinson'; + * console.warn(`Danger ${name}! Danger!`); + * // Prints: Danger Will Robinson! Danger!, to stderr + * ``` + * + * Example using the `Console` class: + * + * ```js + * const out = getStreamSomehow(); + * const err = getStreamSomehow(); + * const myConsole = new console.Console(out, err); + * + * myConsole.log('hello world'); + * // Prints: hello world, to out + * myConsole.log('hello %s', 'world'); + * // Prints: hello world, to out + * myConsole.error(new Error('Whoops, something bad happened')); + * // Prints: [Error: Whoops, something bad happened], to err + * + * const name = 'Will Robinson'; + * myConsole.warn(`Danger ${name}! Danger!`); + * // Prints: Danger Will Robinson! Danger!, to err + * ``` + * @see [source](https://github.com/nodejs/node/blob/v16.4.2/lib/console.js) + */ + namespace console { + interface ConsoleConstructorOptions { + stdout: NodeJS.WritableStream; + stderr?: NodeJS.WritableStream | undefined; + ignoreErrors?: boolean | undefined; + colorMode?: boolean | "auto" | undefined; + inspectOptions?: InspectOptions | undefined; + /** + * Set group indentation + * @default 2 + */ + groupIndentation?: number | undefined; + } + interface ConsoleConstructor { + prototype: Console; + new(stdout: NodeJS.WritableStream, stderr?: NodeJS.WritableStream, ignoreErrors?: boolean): Console; + new(options: ConsoleConstructorOptions): Console; + } + } + var console: Console; + } + export = globalThis.console; +} diff --git a/node_modules/@types/node/ts4.8/constants.d.ts b/node_modules/@types/node/ts4.8/constants.d.ts new file mode 100644 index 00000000..c3ac2b82 --- /dev/null +++ b/node_modules/@types/node/ts4.8/constants.d.ts @@ -0,0 +1,19 @@ +/** @deprecated since v6.3.0 - use constants property exposed by the relevant module instead. */ +declare module "constants" { + import { constants as osConstants, SignalConstants } from "node:os"; + import { constants as cryptoConstants } from "node:crypto"; + import { constants as fsConstants } from "node:fs"; + + const exp: + & typeof osConstants.errno + & typeof osConstants.priority + & SignalConstants + & typeof cryptoConstants + & typeof fsConstants; + export = exp; +} + +declare module "node:constants" { + import constants = require("constants"); + export = constants; +} diff --git a/node_modules/@types/node/ts4.8/crypto.d.ts b/node_modules/@types/node/ts4.8/crypto.d.ts new file mode 100644 index 00000000..91d68fe0 --- /dev/null +++ b/node_modules/@types/node/ts4.8/crypto.d.ts @@ -0,0 +1,4455 @@ +/** + * The `node:crypto` module provides cryptographic functionality that includes a + * set of wrappers for OpenSSL's hash, HMAC, cipher, decipher, sign, and verify + * functions. + * + * ```js + * const { createHmac } = await import('node:crypto'); + * + * const secret = 'abcdefg'; + * const hash = createHmac('sha256', secret) + * .update('I love cupcakes') + * .digest('hex'); + * console.log(hash); + * // Prints: + * // c0fa1bc00531bd78ef38c628449c5102aeabd49b5dc3a2a516ea6ea959d6658e + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/crypto.js) + */ +declare module "crypto" { + import * as stream from "node:stream"; + import { PeerCertificate } from "node:tls"; + /** + * SPKAC is a Certificate Signing Request mechanism originally implemented by + * Netscape and was specified formally as part of HTML5's `keygen` element. + * + * `` is deprecated since [HTML 5.2](https://www.w3.org/TR/html52/changes.html#features-removed) and new projects + * should not use this element anymore. + * + * The `node:crypto` module provides the `Certificate` class for working with SPKAC + * data. The most common usage is handling output generated by the HTML5`` element. Node.js uses [OpenSSL's SPKAC + * implementation](https://www.openssl.org/docs/man3.0/man1/openssl-spkac.html) internally. + * @since v0.11.8 + */ + class Certificate { + /** + * ```js + * const { Certificate } = await import('node:crypto'); + * const spkac = getSpkacSomehow(); + * const challenge = Certificate.exportChallenge(spkac); + * console.log(challenge.toString('utf8')); + * // Prints: the challenge as a UTF8 string + * ``` + * @since v9.0.0 + * @param encoding The `encoding` of the `spkac` string. + * @return The challenge component of the `spkac` data structure, which includes a public key and a challenge. + */ + static exportChallenge(spkac: BinaryLike): Buffer; + /** + * ```js + * const { Certificate } = await import('node:crypto'); + * const spkac = getSpkacSomehow(); + * const publicKey = Certificate.exportPublicKey(spkac); + * console.log(publicKey); + * // Prints: the public key as + * ``` + * @since v9.0.0 + * @param encoding The `encoding` of the `spkac` string. + * @return The public key component of the `spkac` data structure, which includes a public key and a challenge. + */ + static exportPublicKey(spkac: BinaryLike, encoding?: string): Buffer; + /** + * ```js + * import { Buffer } from 'node:buffer'; + * const { Certificate } = await import('node:crypto'); + * + * const spkac = getSpkacSomehow(); + * console.log(Certificate.verifySpkac(Buffer.from(spkac))); + * // Prints: true or false + * ``` + * @since v9.0.0 + * @param encoding The `encoding` of the `spkac` string. + * @return `true` if the given `spkac` data structure is valid, `false` otherwise. + */ + static verifySpkac(spkac: NodeJS.ArrayBufferView): boolean; + /** + * @deprecated + * @param spkac + * @returns The challenge component of the `spkac` data structure, + * which includes a public key and a challenge. + */ + exportChallenge(spkac: BinaryLike): Buffer; + /** + * @deprecated + * @param spkac + * @param encoding The encoding of the spkac string. + * @returns The public key component of the `spkac` data structure, + * which includes a public key and a challenge. + */ + exportPublicKey(spkac: BinaryLike, encoding?: string): Buffer; + /** + * @deprecated + * @param spkac + * @returns `true` if the given `spkac` data structure is valid, + * `false` otherwise. + */ + verifySpkac(spkac: NodeJS.ArrayBufferView): boolean; + } + namespace constants { + // https://nodejs.org/dist/latest-v20.x/docs/api/crypto.html#crypto-constants + const OPENSSL_VERSION_NUMBER: number; + /** Applies multiple bug workarounds within OpenSSL. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html for detail. */ + const SSL_OP_ALL: number; + /** Allows legacy insecure renegotiation between OpenSSL and unpatched clients or servers. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. */ + const SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number; + /** Attempts to use the server's preferences instead of the client's when selecting a cipher. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. */ + const SSL_OP_CIPHER_SERVER_PREFERENCE: number; + /** Instructs OpenSSL to use Cisco's "speshul" version of DTLS_BAD_VER. */ + const SSL_OP_CISCO_ANYCONNECT: number; + /** Instructs OpenSSL to turn on cookie exchange. */ + const SSL_OP_COOKIE_EXCHANGE: number; + /** Instructs OpenSSL to add server-hello extension from an early version of the cryptopro draft. */ + const SSL_OP_CRYPTOPRO_TLSEXT_BUG: number; + /** Instructs OpenSSL to disable a SSL 3.0/TLS 1.0 vulnerability workaround added in OpenSSL 0.9.6d. */ + const SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number; + /** Allows initial connection to servers that do not support RI. */ + const SSL_OP_LEGACY_SERVER_CONNECT: number; + /** Instructs OpenSSL to disable support for SSL/TLS compression. */ + const SSL_OP_NO_COMPRESSION: number; + const SSL_OP_NO_QUERY_MTU: number; + /** Instructs OpenSSL to always start a new session when performing renegotiation. */ + const SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number; + const SSL_OP_NO_SSLv2: number; + const SSL_OP_NO_SSLv3: number; + const SSL_OP_NO_TICKET: number; + const SSL_OP_NO_TLSv1: number; + const SSL_OP_NO_TLSv1_1: number; + const SSL_OP_NO_TLSv1_2: number; + /** Instructs OpenSSL to disable version rollback attack detection. */ + const SSL_OP_TLS_ROLLBACK_BUG: number; + const ENGINE_METHOD_RSA: number; + const ENGINE_METHOD_DSA: number; + const ENGINE_METHOD_DH: number; + const ENGINE_METHOD_RAND: number; + const ENGINE_METHOD_EC: number; + const ENGINE_METHOD_CIPHERS: number; + const ENGINE_METHOD_DIGESTS: number; + const ENGINE_METHOD_PKEY_METHS: number; + const ENGINE_METHOD_PKEY_ASN1_METHS: number; + const ENGINE_METHOD_ALL: number; + const ENGINE_METHOD_NONE: number; + const DH_CHECK_P_NOT_SAFE_PRIME: number; + const DH_CHECK_P_NOT_PRIME: number; + const DH_UNABLE_TO_CHECK_GENERATOR: number; + const DH_NOT_SUITABLE_GENERATOR: number; + const RSA_PKCS1_PADDING: number; + const RSA_SSLV23_PADDING: number; + const RSA_NO_PADDING: number; + const RSA_PKCS1_OAEP_PADDING: number; + const RSA_X931_PADDING: number; + const RSA_PKCS1_PSS_PADDING: number; + /** Sets the salt length for RSA_PKCS1_PSS_PADDING to the digest size when signing or verifying. */ + const RSA_PSS_SALTLEN_DIGEST: number; + /** Sets the salt length for RSA_PKCS1_PSS_PADDING to the maximum permissible value when signing data. */ + const RSA_PSS_SALTLEN_MAX_SIGN: number; + /** Causes the salt length for RSA_PKCS1_PSS_PADDING to be determined automatically when verifying a signature. */ + const RSA_PSS_SALTLEN_AUTO: number; + const POINT_CONVERSION_COMPRESSED: number; + const POINT_CONVERSION_UNCOMPRESSED: number; + const POINT_CONVERSION_HYBRID: number; + /** Specifies the built-in default cipher list used by Node.js (colon-separated values). */ + const defaultCoreCipherList: string; + /** Specifies the active default cipher list used by the current Node.js process (colon-separated values). */ + const defaultCipherList: string; + } + interface HashOptions extends stream.TransformOptions { + /** + * For XOF hash functions such as `shake256`, the + * outputLength option can be used to specify the desired output length in bytes. + */ + outputLength?: number | undefined; + } + /** @deprecated since v10.0.0 */ + const fips: boolean; + /** + * Creates and returns a `Hash` object that can be used to generate hash digests + * using the given `algorithm`. Optional `options` argument controls stream + * behavior. For XOF hash functions such as `'shake256'`, the `outputLength` option + * can be used to specify the desired output length in bytes. + * + * The `algorithm` is dependent on the available algorithms supported by the + * version of OpenSSL on the platform. Examples are `'sha256'`, `'sha512'`, etc. + * On recent releases of OpenSSL, `openssl list -digest-algorithms` will + * display the available digest algorithms. + * + * Example: generating the sha256 sum of a file + * + * ```js + * import { + * createReadStream, + * } from 'node:fs'; + * import { argv } from 'node:process'; + * const { + * createHash, + * } = await import('node:crypto'); + * + * const filename = argv[2]; + * + * const hash = createHash('sha256'); + * + * const input = createReadStream(filename); + * input.on('readable', () => { + * // Only one element is going to be produced by the + * // hash stream. + * const data = input.read(); + * if (data) + * hash.update(data); + * else { + * console.log(`${hash.digest('hex')} ${filename}`); + * } + * }); + * ``` + * @since v0.1.92 + * @param options `stream.transform` options + */ + function createHash(algorithm: string, options?: HashOptions): Hash; + /** + * Creates and returns an `Hmac` object that uses the given `algorithm` and `key`. + * Optional `options` argument controls stream behavior. + * + * The `algorithm` is dependent on the available algorithms supported by the + * version of OpenSSL on the platform. Examples are `'sha256'`, `'sha512'`, etc. + * On recent releases of OpenSSL, `openssl list -digest-algorithms` will + * display the available digest algorithms. + * + * The `key` is the HMAC key used to generate the cryptographic HMAC hash. If it is + * a `KeyObject`, its type must be `secret`. If it is a string, please consider `caveats when using strings as inputs to cryptographic APIs`. If it was + * obtained from a cryptographically secure source of entropy, such as {@link randomBytes} or {@link generateKey}, its length should not + * exceed the block size of `algorithm` (e.g., 512 bits for SHA-256). + * + * Example: generating the sha256 HMAC of a file + * + * ```js + * import { + * createReadStream, + * } from 'node:fs'; + * import { argv } from 'node:process'; + * const { + * createHmac, + * } = await import('node:crypto'); + * + * const filename = argv[2]; + * + * const hmac = createHmac('sha256', 'a secret'); + * + * const input = createReadStream(filename); + * input.on('readable', () => { + * // Only one element is going to be produced by the + * // hash stream. + * const data = input.read(); + * if (data) + * hmac.update(data); + * else { + * console.log(`${hmac.digest('hex')} ${filename}`); + * } + * }); + * ``` + * @since v0.1.94 + * @param options `stream.transform` options + */ + function createHmac(algorithm: string, key: BinaryLike | KeyObject, options?: stream.TransformOptions): Hmac; + // https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings + type BinaryToTextEncoding = "base64" | "base64url" | "hex" | "binary"; + type CharacterEncoding = "utf8" | "utf-8" | "utf16le" | "utf-16le" | "latin1"; + type LegacyCharacterEncoding = "ascii" | "binary" | "ucs2" | "ucs-2"; + type Encoding = BinaryToTextEncoding | CharacterEncoding | LegacyCharacterEncoding; + type ECDHKeyFormat = "compressed" | "uncompressed" | "hybrid"; + /** + * The `Hash` class is a utility for creating hash digests of data. It can be + * used in one of two ways: + * + * * As a `stream` that is both readable and writable, where data is written + * to produce a computed hash digest on the readable side, or + * * Using the `hash.update()` and `hash.digest()` methods to produce the + * computed hash. + * + * The {@link createHash} method is used to create `Hash` instances. `Hash`objects are not to be created directly using the `new` keyword. + * + * Example: Using `Hash` objects as streams: + * + * ```js + * const { + * createHash, + * } = await import('node:crypto'); + * + * const hash = createHash('sha256'); + * + * hash.on('readable', () => { + * // Only one element is going to be produced by the + * // hash stream. + * const data = hash.read(); + * if (data) { + * console.log(data.toString('hex')); + * // Prints: + * // 6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50 + * } + * }); + * + * hash.write('some data to hash'); + * hash.end(); + * ``` + * + * Example: Using `Hash` and piped streams: + * + * ```js + * import { createReadStream } from 'node:fs'; + * import { stdout } from 'node:process'; + * const { createHash } = await import('node:crypto'); + * + * const hash = createHash('sha256'); + * + * const input = createReadStream('test.js'); + * input.pipe(hash).setEncoding('hex').pipe(stdout); + * ``` + * + * Example: Using the `hash.update()` and `hash.digest()` methods: + * + * ```js + * const { + * createHash, + * } = await import('node:crypto'); + * + * const hash = createHash('sha256'); + * + * hash.update('some data to hash'); + * console.log(hash.digest('hex')); + * // Prints: + * // 6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50 + * ``` + * @since v0.1.92 + */ + class Hash extends stream.Transform { + private constructor(); + /** + * Creates a new `Hash` object that contains a deep copy of the internal state + * of the current `Hash` object. + * + * The optional `options` argument controls stream behavior. For XOF hash + * functions such as `'shake256'`, the `outputLength` option can be used to + * specify the desired output length in bytes. + * + * An error is thrown when an attempt is made to copy the `Hash` object after + * its `hash.digest()` method has been called. + * + * ```js + * // Calculate a rolling hash. + * const { + * createHash, + * } = await import('node:crypto'); + * + * const hash = createHash('sha256'); + * + * hash.update('one'); + * console.log(hash.copy().digest('hex')); + * + * hash.update('two'); + * console.log(hash.copy().digest('hex')); + * + * hash.update('three'); + * console.log(hash.copy().digest('hex')); + * + * // Etc. + * ``` + * @since v13.1.0 + * @param options `stream.transform` options + */ + copy(options?: stream.TransformOptions): Hash; + /** + * Updates the hash content with the given `data`, the encoding of which + * is given in `inputEncoding`. + * If `encoding` is not provided, and the `data` is a string, an + * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored. + * + * This can be called many times with new data as it is streamed. + * @since v0.1.92 + * @param inputEncoding The `encoding` of the `data` string. + */ + update(data: BinaryLike): Hash; + update(data: string, inputEncoding: Encoding): Hash; + /** + * Calculates the digest of all of the data passed to be hashed (using the `hash.update()` method). + * If `encoding` is provided a string will be returned; otherwise + * a `Buffer` is returned. + * + * The `Hash` object can not be used again after `hash.digest()` method has been + * called. Multiple calls will cause an error to be thrown. + * @since v0.1.92 + * @param encoding The `encoding` of the return value. + */ + digest(): Buffer; + digest(encoding: BinaryToTextEncoding): string; + } + /** + * The `Hmac` class is a utility for creating cryptographic HMAC digests. It can + * be used in one of two ways: + * + * * As a `stream` that is both readable and writable, where data is written + * to produce a computed HMAC digest on the readable side, or + * * Using the `hmac.update()` and `hmac.digest()` methods to produce the + * computed HMAC digest. + * + * The {@link createHmac} method is used to create `Hmac` instances. `Hmac`objects are not to be created directly using the `new` keyword. + * + * Example: Using `Hmac` objects as streams: + * + * ```js + * const { + * createHmac, + * } = await import('node:crypto'); + * + * const hmac = createHmac('sha256', 'a secret'); + * + * hmac.on('readable', () => { + * // Only one element is going to be produced by the + * // hash stream. + * const data = hmac.read(); + * if (data) { + * console.log(data.toString('hex')); + * // Prints: + * // 7fd04df92f636fd450bc841c9418e5825c17f33ad9c87c518115a45971f7f77e + * } + * }); + * + * hmac.write('some data to hash'); + * hmac.end(); + * ``` + * + * Example: Using `Hmac` and piped streams: + * + * ```js + * import { createReadStream } from 'node:fs'; + * import { stdout } from 'node:process'; + * const { + * createHmac, + * } = await import('node:crypto'); + * + * const hmac = createHmac('sha256', 'a secret'); + * + * const input = createReadStream('test.js'); + * input.pipe(hmac).pipe(stdout); + * ``` + * + * Example: Using the `hmac.update()` and `hmac.digest()` methods: + * + * ```js + * const { + * createHmac, + * } = await import('node:crypto'); + * + * const hmac = createHmac('sha256', 'a secret'); + * + * hmac.update('some data to hash'); + * console.log(hmac.digest('hex')); + * // Prints: + * // 7fd04df92f636fd450bc841c9418e5825c17f33ad9c87c518115a45971f7f77e + * ``` + * @since v0.1.94 + */ + class Hmac extends stream.Transform { + private constructor(); + /** + * Updates the `Hmac` content with the given `data`, the encoding of which + * is given in `inputEncoding`. + * If `encoding` is not provided, and the `data` is a string, an + * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored. + * + * This can be called many times with new data as it is streamed. + * @since v0.1.94 + * @param inputEncoding The `encoding` of the `data` string. + */ + update(data: BinaryLike): Hmac; + update(data: string, inputEncoding: Encoding): Hmac; + /** + * Calculates the HMAC digest of all of the data passed using `hmac.update()`. + * If `encoding` is + * provided a string is returned; otherwise a `Buffer` is returned; + * + * The `Hmac` object can not be used again after `hmac.digest()` has been + * called. Multiple calls to `hmac.digest()` will result in an error being thrown. + * @since v0.1.94 + * @param encoding The `encoding` of the return value. + */ + digest(): Buffer; + digest(encoding: BinaryToTextEncoding): string; + } + type KeyObjectType = "secret" | "public" | "private"; + interface KeyExportOptions { + type: "pkcs1" | "spki" | "pkcs8" | "sec1"; + format: T; + cipher?: string | undefined; + passphrase?: string | Buffer | undefined; + } + interface JwkKeyExportOptions { + format: "jwk"; + } + interface JsonWebKey { + crv?: string | undefined; + d?: string | undefined; + dp?: string | undefined; + dq?: string | undefined; + e?: string | undefined; + k?: string | undefined; + kty?: string | undefined; + n?: string | undefined; + p?: string | undefined; + q?: string | undefined; + qi?: string | undefined; + x?: string | undefined; + y?: string | undefined; + [key: string]: unknown; + } + interface AsymmetricKeyDetails { + /** + * Key size in bits (RSA, DSA). + */ + modulusLength?: number | undefined; + /** + * Public exponent (RSA). + */ + publicExponent?: bigint | undefined; + /** + * Name of the message digest (RSA-PSS). + */ + hashAlgorithm?: string | undefined; + /** + * Name of the message digest used by MGF1 (RSA-PSS). + */ + mgf1HashAlgorithm?: string | undefined; + /** + * Minimal salt length in bytes (RSA-PSS). + */ + saltLength?: number | undefined; + /** + * Size of q in bits (DSA). + */ + divisorLength?: number | undefined; + /** + * Name of the curve (EC). + */ + namedCurve?: string | undefined; + } + /** + * Node.js uses a `KeyObject` class to represent a symmetric or asymmetric key, + * and each kind of key exposes different functions. The {@link createSecretKey}, {@link createPublicKey} and {@link createPrivateKey} methods are used to create `KeyObject`instances. `KeyObject` + * objects are not to be created directly using the `new`keyword. + * + * Most applications should consider using the new `KeyObject` API instead of + * passing keys as strings or `Buffer`s due to improved security features. + * + * `KeyObject` instances can be passed to other threads via `postMessage()`. + * The receiver obtains a cloned `KeyObject`, and the `KeyObject` does not need to + * be listed in the `transferList` argument. + * @since v11.6.0 + */ + class KeyObject { + private constructor(); + /** + * Example: Converting a `CryptoKey` instance to a `KeyObject`: + * + * ```js + * const { KeyObject } = await import('node:crypto'); + * const { subtle } = globalThis.crypto; + * + * const key = await subtle.generateKey({ + * name: 'HMAC', + * hash: 'SHA-256', + * length: 256, + * }, true, ['sign', 'verify']); + * + * const keyObject = KeyObject.from(key); + * console.log(keyObject.symmetricKeySize); + * // Prints: 32 (symmetric key size in bytes) + * ``` + * @since v15.0.0 + */ + static from(key: webcrypto.CryptoKey): KeyObject; + /** + * For asymmetric keys, this property represents the type of the key. Supported key + * types are: + * + * * `'rsa'` (OID 1.2.840.113549.1.1.1) + * * `'rsa-pss'` (OID 1.2.840.113549.1.1.10) + * * `'dsa'` (OID 1.2.840.10040.4.1) + * * `'ec'` (OID 1.2.840.10045.2.1) + * * `'x25519'` (OID 1.3.101.110) + * * `'x448'` (OID 1.3.101.111) + * * `'ed25519'` (OID 1.3.101.112) + * * `'ed448'` (OID 1.3.101.113) + * * `'dh'` (OID 1.2.840.113549.1.3.1) + * + * This property is `undefined` for unrecognized `KeyObject` types and symmetric + * keys. + * @since v11.6.0 + */ + asymmetricKeyType?: KeyType | undefined; + /** + * For asymmetric keys, this property represents the size of the embedded key in + * bytes. This property is `undefined` for symmetric keys. + */ + asymmetricKeySize?: number | undefined; + /** + * This property exists only on asymmetric keys. Depending on the type of the key, + * this object contains information about the key. None of the information obtained + * through this property can be used to uniquely identify a key or to compromise + * the security of the key. + * + * For RSA-PSS keys, if the key material contains a `RSASSA-PSS-params` sequence, + * the `hashAlgorithm`, `mgf1HashAlgorithm`, and `saltLength` properties will be + * set. + * + * Other key details might be exposed via this API using additional attributes. + * @since v15.7.0 + */ + asymmetricKeyDetails?: AsymmetricKeyDetails | undefined; + /** + * For symmetric keys, the following encoding options can be used: + * + * For public keys, the following encoding options can be used: + * + * For private keys, the following encoding options can be used: + * + * The result type depends on the selected encoding format, when PEM the + * result is a string, when DER it will be a buffer containing the data + * encoded as DER, when [JWK](https://tools.ietf.org/html/rfc7517) it will be an object. + * + * When [JWK](https://tools.ietf.org/html/rfc7517) encoding format was selected, all other encoding options are + * ignored. + * + * PKCS#1, SEC1, and PKCS#8 type keys can be encrypted by using a combination of + * the `cipher` and `format` options. The PKCS#8 `type` can be used with any`format` to encrypt any key algorithm (RSA, EC, or DH) by specifying a`cipher`. PKCS#1 and SEC1 can only be + * encrypted by specifying a `cipher`when the PEM `format` is used. For maximum compatibility, use PKCS#8 for + * encrypted private keys. Since PKCS#8 defines its own + * encryption mechanism, PEM-level encryption is not supported when encrypting + * a PKCS#8 key. See [RFC 5208](https://www.rfc-editor.org/rfc/rfc5208.txt) for PKCS#8 encryption and [RFC 1421](https://www.rfc-editor.org/rfc/rfc1421.txt) for + * PKCS#1 and SEC1 encryption. + * @since v11.6.0 + */ + export(options: KeyExportOptions<"pem">): string | Buffer; + export(options?: KeyExportOptions<"der">): Buffer; + export(options?: JwkKeyExportOptions): JsonWebKey; + /** + * For secret keys, this property represents the size of the key in bytes. This + * property is `undefined` for asymmetric keys. + * @since v11.6.0 + */ + symmetricKeySize?: number | undefined; + /** + * Depending on the type of this `KeyObject`, this property is either`'secret'` for secret (symmetric) keys, `'public'` for public (asymmetric) keys + * or `'private'` for private (asymmetric) keys. + * @since v11.6.0 + */ + type: KeyObjectType; + } + type CipherCCMTypes = "aes-128-ccm" | "aes-192-ccm" | "aes-256-ccm" | "chacha20-poly1305"; + type CipherGCMTypes = "aes-128-gcm" | "aes-192-gcm" | "aes-256-gcm"; + type CipherOCBTypes = "aes-128-ocb" | "aes-192-ocb" | "aes-256-ocb"; + type BinaryLike = string | NodeJS.ArrayBufferView; + type CipherKey = BinaryLike | KeyObject; + interface CipherCCMOptions extends stream.TransformOptions { + authTagLength: number; + } + interface CipherGCMOptions extends stream.TransformOptions { + authTagLength?: number | undefined; + } + interface CipherOCBOptions extends stream.TransformOptions { + authTagLength: number; + } + /** + * Creates and returns a `Cipher` object that uses the given `algorithm` and`password`. + * + * The `options` argument controls stream behavior and is optional except when a + * cipher in CCM or OCB mode (e.g. `'aes-128-ccm'`) is used. In that case, the`authTagLength` option is required and specifies the length of the + * authentication tag in bytes, see `CCM mode`. In GCM mode, the `authTagLength`option is not required but can be used to set the length of the authentication + * tag that will be returned by `getAuthTag()` and defaults to 16 bytes. + * For `chacha20-poly1305`, the `authTagLength` option defaults to 16 bytes. + * + * The `algorithm` is dependent on OpenSSL, examples are `'aes192'`, etc. On + * recent OpenSSL releases, `openssl list -cipher-algorithms` will + * display the available cipher algorithms. + * + * The `password` is used to derive the cipher key and initialization vector (IV). + * The value must be either a `'latin1'` encoded string, a `Buffer`, a`TypedArray`, or a `DataView`. + * + * **This function is semantically insecure for all** + * **supported ciphers and fatally flawed for ciphers in counter mode (such as CTR,** + * **GCM, or CCM).** + * + * The implementation of `crypto.createCipher()` derives keys using the OpenSSL + * function [`EVP_BytesToKey`](https://www.openssl.org/docs/man3.0/man3/EVP_BytesToKey.html) with the digest algorithm set to MD5, one + * iteration, and no salt. The lack of salt allows dictionary attacks as the same + * password always creates the same key. The low iteration count and + * non-cryptographically secure hash algorithm allow passwords to be tested very + * rapidly. + * + * In line with OpenSSL's recommendation to use a more modern algorithm instead of [`EVP_BytesToKey`](https://www.openssl.org/docs/man3.0/man3/EVP_BytesToKey.html) it is recommended that + * developers derive a key and IV on + * their own using {@link scrypt} and to use {@link createCipheriv} to create the `Cipher` object. Users should not use ciphers with counter mode + * (e.g. CTR, GCM, or CCM) in `crypto.createCipher()`. A warning is emitted when + * they are used in order to avoid the risk of IV reuse that causes + * vulnerabilities. For the case when IV is reused in GCM, see [Nonce-Disrespecting Adversaries](https://github.com/nonce-disrespect/nonce-disrespect) for details. + * @since v0.1.94 + * @deprecated Since v10.0.0 - Use {@link createCipheriv} instead. + * @param options `stream.transform` options + */ + function createCipher(algorithm: CipherCCMTypes, password: BinaryLike, options: CipherCCMOptions): CipherCCM; + /** @deprecated since v10.0.0 use `createCipheriv()` */ + function createCipher(algorithm: CipherGCMTypes, password: BinaryLike, options?: CipherGCMOptions): CipherGCM; + /** @deprecated since v10.0.0 use `createCipheriv()` */ + function createCipher(algorithm: string, password: BinaryLike, options?: stream.TransformOptions): Cipher; + /** + * Creates and returns a `Cipher` object, with the given `algorithm`, `key` and + * initialization vector (`iv`). + * + * The `options` argument controls stream behavior and is optional except when a + * cipher in CCM or OCB mode (e.g. `'aes-128-ccm'`) is used. In that case, the`authTagLength` option is required and specifies the length of the + * authentication tag in bytes, see `CCM mode`. In GCM mode, the `authTagLength`option is not required but can be used to set the length of the authentication + * tag that will be returned by `getAuthTag()` and defaults to 16 bytes. + * For `chacha20-poly1305`, the `authTagLength` option defaults to 16 bytes. + * + * The `algorithm` is dependent on OpenSSL, examples are `'aes192'`, etc. On + * recent OpenSSL releases, `openssl list -cipher-algorithms` will + * display the available cipher algorithms. + * + * The `key` is the raw key used by the `algorithm` and `iv` is an [initialization vector](https://en.wikipedia.org/wiki/Initialization_vector). Both arguments must be `'utf8'` encoded + * strings,`Buffers`, `TypedArray`, or `DataView`s. The `key` may optionally be + * a `KeyObject` of type `secret`. If the cipher does not need + * an initialization vector, `iv` may be `null`. + * + * When passing strings for `key` or `iv`, please consider `caveats when using strings as inputs to cryptographic APIs`. + * + * Initialization vectors should be unpredictable and unique; ideally, they will be + * cryptographically random. They do not have to be secret: IVs are typically just + * added to ciphertext messages unencrypted. It may sound contradictory that + * something has to be unpredictable and unique, but does not have to be secret; + * remember that an attacker must not be able to predict ahead of time what a + * given IV will be. + * @since v0.1.94 + * @param options `stream.transform` options + */ + function createCipheriv( + algorithm: CipherCCMTypes, + key: CipherKey, + iv: BinaryLike, + options: CipherCCMOptions, + ): CipherCCM; + function createCipheriv( + algorithm: CipherOCBTypes, + key: CipherKey, + iv: BinaryLike, + options: CipherOCBOptions, + ): CipherOCB; + function createCipheriv( + algorithm: CipherGCMTypes, + key: CipherKey, + iv: BinaryLike, + options?: CipherGCMOptions, + ): CipherGCM; + function createCipheriv( + algorithm: string, + key: CipherKey, + iv: BinaryLike | null, + options?: stream.TransformOptions, + ): Cipher; + /** + * Instances of the `Cipher` class are used to encrypt data. The class can be + * used in one of two ways: + * + * * As a `stream` that is both readable and writable, where plain unencrypted + * data is written to produce encrypted data on the readable side, or + * * Using the `cipher.update()` and `cipher.final()` methods to produce + * the encrypted data. + * + * The {@link createCipher} or {@link createCipheriv} methods are + * used to create `Cipher` instances. `Cipher` objects are not to be created + * directly using the `new` keyword. + * + * Example: Using `Cipher` objects as streams: + * + * ```js + * const { + * scrypt, + * randomFill, + * createCipheriv, + * } = await import('node:crypto'); + * + * const algorithm = 'aes-192-cbc'; + * const password = 'Password used to generate key'; + * + * // First, we'll generate the key. The key length is dependent on the algorithm. + * // In this case for aes192, it is 24 bytes (192 bits). + * scrypt(password, 'salt', 24, (err, key) => { + * if (err) throw err; + * // Then, we'll generate a random initialization vector + * randomFill(new Uint8Array(16), (err, iv) => { + * if (err) throw err; + * + * // Once we have the key and iv, we can create and use the cipher... + * const cipher = createCipheriv(algorithm, key, iv); + * + * let encrypted = ''; + * cipher.setEncoding('hex'); + * + * cipher.on('data', (chunk) => encrypted += chunk); + * cipher.on('end', () => console.log(encrypted)); + * + * cipher.write('some clear text data'); + * cipher.end(); + * }); + * }); + * ``` + * + * Example: Using `Cipher` and piped streams: + * + * ```js + * import { + * createReadStream, + * createWriteStream, + * } from 'node:fs'; + * + * import { + * pipeline, + * } from 'node:stream'; + * + * const { + * scrypt, + * randomFill, + * createCipheriv, + * } = await import('node:crypto'); + * + * const algorithm = 'aes-192-cbc'; + * const password = 'Password used to generate key'; + * + * // First, we'll generate the key. The key length is dependent on the algorithm. + * // In this case for aes192, it is 24 bytes (192 bits). + * scrypt(password, 'salt', 24, (err, key) => { + * if (err) throw err; + * // Then, we'll generate a random initialization vector + * randomFill(new Uint8Array(16), (err, iv) => { + * if (err) throw err; + * + * const cipher = createCipheriv(algorithm, key, iv); + * + * const input = createReadStream('test.js'); + * const output = createWriteStream('test.enc'); + * + * pipeline(input, cipher, output, (err) => { + * if (err) throw err; + * }); + * }); + * }); + * ``` + * + * Example: Using the `cipher.update()` and `cipher.final()` methods: + * + * ```js + * const { + * scrypt, + * randomFill, + * createCipheriv, + * } = await import('node:crypto'); + * + * const algorithm = 'aes-192-cbc'; + * const password = 'Password used to generate key'; + * + * // First, we'll generate the key. The key length is dependent on the algorithm. + * // In this case for aes192, it is 24 bytes (192 bits). + * scrypt(password, 'salt', 24, (err, key) => { + * if (err) throw err; + * // Then, we'll generate a random initialization vector + * randomFill(new Uint8Array(16), (err, iv) => { + * if (err) throw err; + * + * const cipher = createCipheriv(algorithm, key, iv); + * + * let encrypted = cipher.update('some clear text data', 'utf8', 'hex'); + * encrypted += cipher.final('hex'); + * console.log(encrypted); + * }); + * }); + * ``` + * @since v0.1.94 + */ + class Cipher extends stream.Transform { + private constructor(); + /** + * Updates the cipher with `data`. If the `inputEncoding` argument is given, + * the `data`argument is a string using the specified encoding. If the `inputEncoding`argument is not given, `data` must be a `Buffer`, `TypedArray`, or`DataView`. If `data` is a `Buffer`, + * `TypedArray`, or `DataView`, then`inputEncoding` is ignored. + * + * The `outputEncoding` specifies the output format of the enciphered + * data. If the `outputEncoding`is specified, a string using the specified encoding is returned. If no`outputEncoding` is provided, a `Buffer` is returned. + * + * The `cipher.update()` method can be called multiple times with new data until `cipher.final()` is called. Calling `cipher.update()` after `cipher.final()` will result in an error being + * thrown. + * @since v0.1.94 + * @param inputEncoding The `encoding` of the data. + * @param outputEncoding The `encoding` of the return value. + */ + update(data: BinaryLike): Buffer; + update(data: string, inputEncoding: Encoding): Buffer; + update(data: NodeJS.ArrayBufferView, inputEncoding: undefined, outputEncoding: Encoding): string; + update(data: string, inputEncoding: Encoding | undefined, outputEncoding: Encoding): string; + /** + * Once the `cipher.final()` method has been called, the `Cipher` object can no + * longer be used to encrypt data. Attempts to call `cipher.final()` more than + * once will result in an error being thrown. + * @since v0.1.94 + * @param outputEncoding The `encoding` of the return value. + * @return Any remaining enciphered contents. If `outputEncoding` is specified, a string is returned. If an `outputEncoding` is not provided, a {@link Buffer} is returned. + */ + final(): Buffer; + final(outputEncoding: BufferEncoding): string; + /** + * When using block encryption algorithms, the `Cipher` class will automatically + * add padding to the input data to the appropriate block size. To disable the + * default padding call `cipher.setAutoPadding(false)`. + * + * When `autoPadding` is `false`, the length of the entire input data must be a + * multiple of the cipher's block size or `cipher.final()` will throw an error. + * Disabling automatic padding is useful for non-standard padding, for instance + * using `0x0` instead of PKCS padding. + * + * The `cipher.setAutoPadding()` method must be called before `cipher.final()`. + * @since v0.7.1 + * @param [autoPadding=true] + * @return for method chaining. + */ + setAutoPadding(autoPadding?: boolean): this; + } + interface CipherCCM extends Cipher { + setAAD( + buffer: NodeJS.ArrayBufferView, + options: { + plaintextLength: number; + }, + ): this; + getAuthTag(): Buffer; + } + interface CipherGCM extends Cipher { + setAAD( + buffer: NodeJS.ArrayBufferView, + options?: { + plaintextLength: number; + }, + ): this; + getAuthTag(): Buffer; + } + interface CipherOCB extends Cipher { + setAAD( + buffer: NodeJS.ArrayBufferView, + options?: { + plaintextLength: number; + }, + ): this; + getAuthTag(): Buffer; + } + /** + * Creates and returns a `Decipher` object that uses the given `algorithm` and`password` (key). + * + * The `options` argument controls stream behavior and is optional except when a + * cipher in CCM or OCB mode (e.g. `'aes-128-ccm'`) is used. In that case, the`authTagLength` option is required and specifies the length of the + * authentication tag in bytes, see `CCM mode`. + * For `chacha20-poly1305`, the `authTagLength` option defaults to 16 bytes. + * + * **This function is semantically insecure for all** + * **supported ciphers and fatally flawed for ciphers in counter mode (such as CTR,** + * **GCM, or CCM).** + * + * The implementation of `crypto.createDecipher()` derives keys using the OpenSSL + * function [`EVP_BytesToKey`](https://www.openssl.org/docs/man3.0/man3/EVP_BytesToKey.html) with the digest algorithm set to MD5, one + * iteration, and no salt. The lack of salt allows dictionary attacks as the same + * password always creates the same key. The low iteration count and + * non-cryptographically secure hash algorithm allow passwords to be tested very + * rapidly. + * + * In line with OpenSSL's recommendation to use a more modern algorithm instead of [`EVP_BytesToKey`](https://www.openssl.org/docs/man3.0/man3/EVP_BytesToKey.html) it is recommended that + * developers derive a key and IV on + * their own using {@link scrypt} and to use {@link createDecipheriv} to create the `Decipher` object. + * @since v0.1.94 + * @deprecated Since v10.0.0 - Use {@link createDecipheriv} instead. + * @param options `stream.transform` options + */ + function createDecipher(algorithm: CipherCCMTypes, password: BinaryLike, options: CipherCCMOptions): DecipherCCM; + /** @deprecated since v10.0.0 use `createDecipheriv()` */ + function createDecipher(algorithm: CipherGCMTypes, password: BinaryLike, options?: CipherGCMOptions): DecipherGCM; + /** @deprecated since v10.0.0 use `createDecipheriv()` */ + function createDecipher(algorithm: string, password: BinaryLike, options?: stream.TransformOptions): Decipher; + /** + * Creates and returns a `Decipher` object that uses the given `algorithm`, `key`and initialization vector (`iv`). + * + * The `options` argument controls stream behavior and is optional except when a + * cipher in CCM or OCB mode (e.g. `'aes-128-ccm'`) is used. In that case, the`authTagLength` option is required and specifies the length of the + * authentication tag in bytes, see `CCM mode`. In GCM mode, the `authTagLength`option is not required but can be used to restrict accepted authentication tags + * to those with the specified length. + * For `chacha20-poly1305`, the `authTagLength` option defaults to 16 bytes. + * + * The `algorithm` is dependent on OpenSSL, examples are `'aes192'`, etc. On + * recent OpenSSL releases, `openssl list -cipher-algorithms` will + * display the available cipher algorithms. + * + * The `key` is the raw key used by the `algorithm` and `iv` is an [initialization vector](https://en.wikipedia.org/wiki/Initialization_vector). Both arguments must be `'utf8'` encoded + * strings,`Buffers`, `TypedArray`, or `DataView`s. The `key` may optionally be + * a `KeyObject` of type `secret`. If the cipher does not need + * an initialization vector, `iv` may be `null`. + * + * When passing strings for `key` or `iv`, please consider `caveats when using strings as inputs to cryptographic APIs`. + * + * Initialization vectors should be unpredictable and unique; ideally, they will be + * cryptographically random. They do not have to be secret: IVs are typically just + * added to ciphertext messages unencrypted. It may sound contradictory that + * something has to be unpredictable and unique, but does not have to be secret; + * remember that an attacker must not be able to predict ahead of time what a given + * IV will be. + * @since v0.1.94 + * @param options `stream.transform` options + */ + function createDecipheriv( + algorithm: CipherCCMTypes, + key: CipherKey, + iv: BinaryLike, + options: CipherCCMOptions, + ): DecipherCCM; + function createDecipheriv( + algorithm: CipherOCBTypes, + key: CipherKey, + iv: BinaryLike, + options: CipherOCBOptions, + ): DecipherOCB; + function createDecipheriv( + algorithm: CipherGCMTypes, + key: CipherKey, + iv: BinaryLike, + options?: CipherGCMOptions, + ): DecipherGCM; + function createDecipheriv( + algorithm: string, + key: CipherKey, + iv: BinaryLike | null, + options?: stream.TransformOptions, + ): Decipher; + /** + * Instances of the `Decipher` class are used to decrypt data. The class can be + * used in one of two ways: + * + * * As a `stream` that is both readable and writable, where plain encrypted + * data is written to produce unencrypted data on the readable side, or + * * Using the `decipher.update()` and `decipher.final()` methods to + * produce the unencrypted data. + * + * The {@link createDecipher} or {@link createDecipheriv} methods are + * used to create `Decipher` instances. `Decipher` objects are not to be created + * directly using the `new` keyword. + * + * Example: Using `Decipher` objects as streams: + * + * ```js + * import { Buffer } from 'node:buffer'; + * const { + * scryptSync, + * createDecipheriv, + * } = await import('node:crypto'); + * + * const algorithm = 'aes-192-cbc'; + * const password = 'Password used to generate key'; + * // Key length is dependent on the algorithm. In this case for aes192, it is + * // 24 bytes (192 bits). + * // Use the async `crypto.scrypt()` instead. + * const key = scryptSync(password, 'salt', 24); + * // The IV is usually passed along with the ciphertext. + * const iv = Buffer.alloc(16, 0); // Initialization vector. + * + * const decipher = createDecipheriv(algorithm, key, iv); + * + * let decrypted = ''; + * decipher.on('readable', () => { + * let chunk; + * while (null !== (chunk = decipher.read())) { + * decrypted += chunk.toString('utf8'); + * } + * }); + * decipher.on('end', () => { + * console.log(decrypted); + * // Prints: some clear text data + * }); + * + * // Encrypted with same algorithm, key and iv. + * const encrypted = + * 'e5f79c5915c02171eec6b212d5520d44480993d7d622a7c4c2da32f6efda0ffa'; + * decipher.write(encrypted, 'hex'); + * decipher.end(); + * ``` + * + * Example: Using `Decipher` and piped streams: + * + * ```js + * import { + * createReadStream, + * createWriteStream, + * } from 'node:fs'; + * import { Buffer } from 'node:buffer'; + * const { + * scryptSync, + * createDecipheriv, + * } = await import('node:crypto'); + * + * const algorithm = 'aes-192-cbc'; + * const password = 'Password used to generate key'; + * // Use the async `crypto.scrypt()` instead. + * const key = scryptSync(password, 'salt', 24); + * // The IV is usually passed along with the ciphertext. + * const iv = Buffer.alloc(16, 0); // Initialization vector. + * + * const decipher = createDecipheriv(algorithm, key, iv); + * + * const input = createReadStream('test.enc'); + * const output = createWriteStream('test.js'); + * + * input.pipe(decipher).pipe(output); + * ``` + * + * Example: Using the `decipher.update()` and `decipher.final()` methods: + * + * ```js + * import { Buffer } from 'node:buffer'; + * const { + * scryptSync, + * createDecipheriv, + * } = await import('node:crypto'); + * + * const algorithm = 'aes-192-cbc'; + * const password = 'Password used to generate key'; + * // Use the async `crypto.scrypt()` instead. + * const key = scryptSync(password, 'salt', 24); + * // The IV is usually passed along with the ciphertext. + * const iv = Buffer.alloc(16, 0); // Initialization vector. + * + * const decipher = createDecipheriv(algorithm, key, iv); + * + * // Encrypted using same algorithm, key and iv. + * const encrypted = + * 'e5f79c5915c02171eec6b212d5520d44480993d7d622a7c4c2da32f6efda0ffa'; + * let decrypted = decipher.update(encrypted, 'hex', 'utf8'); + * decrypted += decipher.final('utf8'); + * console.log(decrypted); + * // Prints: some clear text data + * ``` + * @since v0.1.94 + */ + class Decipher extends stream.Transform { + private constructor(); + /** + * Updates the decipher with `data`. If the `inputEncoding` argument is given, + * the `data`argument is a string using the specified encoding. If the `inputEncoding`argument is not given, `data` must be a `Buffer`. If `data` is a `Buffer` then `inputEncoding` is + * ignored. + * + * The `outputEncoding` specifies the output format of the enciphered + * data. If the `outputEncoding`is specified, a string using the specified encoding is returned. If no`outputEncoding` is provided, a `Buffer` is returned. + * + * The `decipher.update()` method can be called multiple times with new data until `decipher.final()` is called. Calling `decipher.update()` after `decipher.final()` will result in an error + * being thrown. + * @since v0.1.94 + * @param inputEncoding The `encoding` of the `data` string. + * @param outputEncoding The `encoding` of the return value. + */ + update(data: NodeJS.ArrayBufferView): Buffer; + update(data: string, inputEncoding: Encoding): Buffer; + update(data: NodeJS.ArrayBufferView, inputEncoding: undefined, outputEncoding: Encoding): string; + update(data: string, inputEncoding: Encoding | undefined, outputEncoding: Encoding): string; + /** + * Once the `decipher.final()` method has been called, the `Decipher` object can + * no longer be used to decrypt data. Attempts to call `decipher.final()` more + * than once will result in an error being thrown. + * @since v0.1.94 + * @param outputEncoding The `encoding` of the return value. + * @return Any remaining deciphered contents. If `outputEncoding` is specified, a string is returned. If an `outputEncoding` is not provided, a {@link Buffer} is returned. + */ + final(): Buffer; + final(outputEncoding: BufferEncoding): string; + /** + * When data has been encrypted without standard block padding, calling`decipher.setAutoPadding(false)` will disable automatic padding to prevent `decipher.final()` from checking for and + * removing padding. + * + * Turning auto padding off will only work if the input data's length is a + * multiple of the ciphers block size. + * + * The `decipher.setAutoPadding()` method must be called before `decipher.final()`. + * @since v0.7.1 + * @param [autoPadding=true] + * @return for method chaining. + */ + setAutoPadding(auto_padding?: boolean): this; + } + interface DecipherCCM extends Decipher { + setAuthTag(buffer: NodeJS.ArrayBufferView): this; + setAAD( + buffer: NodeJS.ArrayBufferView, + options: { + plaintextLength: number; + }, + ): this; + } + interface DecipherGCM extends Decipher { + setAuthTag(buffer: NodeJS.ArrayBufferView): this; + setAAD( + buffer: NodeJS.ArrayBufferView, + options?: { + plaintextLength: number; + }, + ): this; + } + interface DecipherOCB extends Decipher { + setAuthTag(buffer: NodeJS.ArrayBufferView): this; + setAAD( + buffer: NodeJS.ArrayBufferView, + options?: { + plaintextLength: number; + }, + ): this; + } + interface PrivateKeyInput { + key: string | Buffer; + format?: KeyFormat | undefined; + type?: "pkcs1" | "pkcs8" | "sec1" | undefined; + passphrase?: string | Buffer | undefined; + encoding?: string | undefined; + } + interface PublicKeyInput { + key: string | Buffer; + format?: KeyFormat | undefined; + type?: "pkcs1" | "spki" | undefined; + encoding?: string | undefined; + } + /** + * Asynchronously generates a new random secret key of the given `length`. The`type` will determine which validations will be performed on the `length`. + * + * ```js + * const { + * generateKey, + * } = await import('node:crypto'); + * + * generateKey('hmac', { length: 512 }, (err, key) => { + * if (err) throw err; + * console.log(key.export().toString('hex')); // 46e..........620 + * }); + * ``` + * + * The size of a generated HMAC key should not exceed the block size of the + * underlying hash function. See {@link createHmac} for more information. + * @since v15.0.0 + * @param type The intended use of the generated secret key. Currently accepted values are `'hmac'` and `'aes'`. + */ + function generateKey( + type: "hmac" | "aes", + options: { + length: number; + }, + callback: (err: Error | null, key: KeyObject) => void, + ): void; + /** + * Synchronously generates a new random secret key of the given `length`. The`type` will determine which validations will be performed on the `length`. + * + * ```js + * const { + * generateKeySync, + * } = await import('node:crypto'); + * + * const key = generateKeySync('hmac', { length: 512 }); + * console.log(key.export().toString('hex')); // e89..........41e + * ``` + * + * The size of a generated HMAC key should not exceed the block size of the + * underlying hash function. See {@link createHmac} for more information. + * @since v15.0.0 + * @param type The intended use of the generated secret key. Currently accepted values are `'hmac'` and `'aes'`. + */ + function generateKeySync( + type: "hmac" | "aes", + options: { + length: number; + }, + ): KeyObject; + interface JsonWebKeyInput { + key: JsonWebKey; + format: "jwk"; + } + /** + * Creates and returns a new key object containing a private key. If `key` is a + * string or `Buffer`, `format` is assumed to be `'pem'`; otherwise, `key`must be an object with the properties described above. + * + * If the private key is encrypted, a `passphrase` must be specified. The length + * of the passphrase is limited to 1024 bytes. + * @since v11.6.0 + */ + function createPrivateKey(key: PrivateKeyInput | string | Buffer | JsonWebKeyInput): KeyObject; + /** + * Creates and returns a new key object containing a public key. If `key` is a + * string or `Buffer`, `format` is assumed to be `'pem'`; if `key` is a `KeyObject`with type `'private'`, the public key is derived from the given private key; + * otherwise, `key` must be an object with the properties described above. + * + * If the format is `'pem'`, the `'key'` may also be an X.509 certificate. + * + * Because public keys can be derived from private keys, a private key may be + * passed instead of a public key. In that case, this function behaves as if {@link createPrivateKey} had been called, except that the type of the + * returned `KeyObject` will be `'public'` and that the private key cannot be + * extracted from the returned `KeyObject`. Similarly, if a `KeyObject` with type`'private'` is given, a new `KeyObject` with type `'public'` will be returned + * and it will be impossible to extract the private key from the returned object. + * @since v11.6.0 + */ + function createPublicKey(key: PublicKeyInput | string | Buffer | KeyObject | JsonWebKeyInput): KeyObject; + /** + * Creates and returns a new key object containing a secret key for symmetric + * encryption or `Hmac`. + * @since v11.6.0 + * @param encoding The string encoding when `key` is a string. + */ + function createSecretKey(key: NodeJS.ArrayBufferView): KeyObject; + function createSecretKey(key: string, encoding: BufferEncoding): KeyObject; + /** + * Creates and returns a `Sign` object that uses the given `algorithm`. Use {@link getHashes} to obtain the names of the available digest algorithms. + * Optional `options` argument controls the `stream.Writable` behavior. + * + * In some cases, a `Sign` instance can be created using the name of a signature + * algorithm, such as `'RSA-SHA256'`, instead of a digest algorithm. This will use + * the corresponding digest algorithm. This does not work for all signature + * algorithms, such as `'ecdsa-with-SHA256'`, so it is best to always use digest + * algorithm names. + * @since v0.1.92 + * @param options `stream.Writable` options + */ + function createSign(algorithm: string, options?: stream.WritableOptions): Sign; + type DSAEncoding = "der" | "ieee-p1363"; + interface SigningOptions { + /** + * @see crypto.constants.RSA_PKCS1_PADDING + */ + padding?: number | undefined; + saltLength?: number | undefined; + dsaEncoding?: DSAEncoding | undefined; + } + interface SignPrivateKeyInput extends PrivateKeyInput, SigningOptions {} + interface SignKeyObjectInput extends SigningOptions { + key: KeyObject; + } + interface VerifyPublicKeyInput extends PublicKeyInput, SigningOptions {} + interface VerifyKeyObjectInput extends SigningOptions { + key: KeyObject; + } + interface VerifyJsonWebKeyInput extends JsonWebKeyInput, SigningOptions {} + type KeyLike = string | Buffer | KeyObject; + /** + * The `Sign` class is a utility for generating signatures. It can be used in one + * of two ways: + * + * * As a writable `stream`, where data to be signed is written and the `sign.sign()` method is used to generate and return the signature, or + * * Using the `sign.update()` and `sign.sign()` methods to produce the + * signature. + * + * The {@link createSign} method is used to create `Sign` instances. The + * argument is the string name of the hash function to use. `Sign` objects are not + * to be created directly using the `new` keyword. + * + * Example: Using `Sign` and `Verify` objects as streams: + * + * ```js + * const { + * generateKeyPairSync, + * createSign, + * createVerify, + * } = await import('node:crypto'); + * + * const { privateKey, publicKey } = generateKeyPairSync('ec', { + * namedCurve: 'sect239k1', + * }); + * + * const sign = createSign('SHA256'); + * sign.write('some data to sign'); + * sign.end(); + * const signature = sign.sign(privateKey, 'hex'); + * + * const verify = createVerify('SHA256'); + * verify.write('some data to sign'); + * verify.end(); + * console.log(verify.verify(publicKey, signature, 'hex')); + * // Prints: true + * ``` + * + * Example: Using the `sign.update()` and `verify.update()` methods: + * + * ```js + * const { + * generateKeyPairSync, + * createSign, + * createVerify, + * } = await import('node:crypto'); + * + * const { privateKey, publicKey } = generateKeyPairSync('rsa', { + * modulusLength: 2048, + * }); + * + * const sign = createSign('SHA256'); + * sign.update('some data to sign'); + * sign.end(); + * const signature = sign.sign(privateKey); + * + * const verify = createVerify('SHA256'); + * verify.update('some data to sign'); + * verify.end(); + * console.log(verify.verify(publicKey, signature)); + * // Prints: true + * ``` + * @since v0.1.92 + */ + class Sign extends stream.Writable { + private constructor(); + /** + * Updates the `Sign` content with the given `data`, the encoding of which + * is given in `inputEncoding`. + * If `encoding` is not provided, and the `data` is a string, an + * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored. + * + * This can be called many times with new data as it is streamed. + * @since v0.1.92 + * @param inputEncoding The `encoding` of the `data` string. + */ + update(data: BinaryLike): this; + update(data: string, inputEncoding: Encoding): this; + /** + * Calculates the signature on all the data passed through using either `sign.update()` or `sign.write()`. + * + * If `privateKey` is not a `KeyObject`, this function behaves as if`privateKey` had been passed to {@link createPrivateKey}. If it is an + * object, the following additional properties can be passed: + * + * If `outputEncoding` is provided a string is returned; otherwise a `Buffer` is returned. + * + * The `Sign` object can not be again used after `sign.sign()` method has been + * called. Multiple calls to `sign.sign()` will result in an error being thrown. + * @since v0.1.92 + */ + sign(privateKey: KeyLike | SignKeyObjectInput | SignPrivateKeyInput): Buffer; + sign( + privateKey: KeyLike | SignKeyObjectInput | SignPrivateKeyInput, + outputFormat: BinaryToTextEncoding, + ): string; + } + /** + * Creates and returns a `Verify` object that uses the given algorithm. + * Use {@link getHashes} to obtain an array of names of the available + * signing algorithms. Optional `options` argument controls the`stream.Writable` behavior. + * + * In some cases, a `Verify` instance can be created using the name of a signature + * algorithm, such as `'RSA-SHA256'`, instead of a digest algorithm. This will use + * the corresponding digest algorithm. This does not work for all signature + * algorithms, such as `'ecdsa-with-SHA256'`, so it is best to always use digest + * algorithm names. + * @since v0.1.92 + * @param options `stream.Writable` options + */ + function createVerify(algorithm: string, options?: stream.WritableOptions): Verify; + /** + * The `Verify` class is a utility for verifying signatures. It can be used in one + * of two ways: + * + * * As a writable `stream` where written data is used to validate against the + * supplied signature, or + * * Using the `verify.update()` and `verify.verify()` methods to verify + * the signature. + * + * The {@link createVerify} method is used to create `Verify` instances.`Verify` objects are not to be created directly using the `new` keyword. + * + * See `Sign` for examples. + * @since v0.1.92 + */ + class Verify extends stream.Writable { + private constructor(); + /** + * Updates the `Verify` content with the given `data`, the encoding of which + * is given in `inputEncoding`. + * If `inputEncoding` is not provided, and the `data` is a string, an + * encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored. + * + * This can be called many times with new data as it is streamed. + * @since v0.1.92 + * @param inputEncoding The `encoding` of the `data` string. + */ + update(data: BinaryLike): Verify; + update(data: string, inputEncoding: Encoding): Verify; + /** + * Verifies the provided data using the given `object` and `signature`. + * + * If `object` is not a `KeyObject`, this function behaves as if`object` had been passed to {@link createPublicKey}. If it is an + * object, the following additional properties can be passed: + * + * The `signature` argument is the previously calculated signature for the data, in + * the `signatureEncoding`. + * If a `signatureEncoding` is specified, the `signature` is expected to be a + * string; otherwise `signature` is expected to be a `Buffer`,`TypedArray`, or `DataView`. + * + * The `verify` object can not be used again after `verify.verify()` has been + * called. Multiple calls to `verify.verify()` will result in an error being + * thrown. + * + * Because public keys can be derived from private keys, a private key may + * be passed instead of a public key. + * @since v0.1.92 + */ + verify( + object: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput | VerifyJsonWebKeyInput, + signature: NodeJS.ArrayBufferView, + ): boolean; + verify( + object: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput | VerifyJsonWebKeyInput, + signature: string, + signature_format?: BinaryToTextEncoding, + ): boolean; + } + /** + * Creates a `DiffieHellman` key exchange object using the supplied `prime` and an + * optional specific `generator`. + * + * The `generator` argument can be a number, string, or `Buffer`. If`generator` is not specified, the value `2` is used. + * + * If `primeEncoding` is specified, `prime` is expected to be a string; otherwise + * a `Buffer`, `TypedArray`, or `DataView` is expected. + * + * If `generatorEncoding` is specified, `generator` is expected to be a string; + * otherwise a number, `Buffer`, `TypedArray`, or `DataView` is expected. + * @since v0.11.12 + * @param primeEncoding The `encoding` of the `prime` string. + * @param [generator=2] + * @param generatorEncoding The `encoding` of the `generator` string. + */ + function createDiffieHellman(primeLength: number, generator?: number): DiffieHellman; + function createDiffieHellman( + prime: ArrayBuffer | NodeJS.ArrayBufferView, + generator?: number | ArrayBuffer | NodeJS.ArrayBufferView, + ): DiffieHellman; + function createDiffieHellman( + prime: ArrayBuffer | NodeJS.ArrayBufferView, + generator: string, + generatorEncoding: BinaryToTextEncoding, + ): DiffieHellman; + function createDiffieHellman( + prime: string, + primeEncoding: BinaryToTextEncoding, + generator?: number | ArrayBuffer | NodeJS.ArrayBufferView, + ): DiffieHellman; + function createDiffieHellman( + prime: string, + primeEncoding: BinaryToTextEncoding, + generator: string, + generatorEncoding: BinaryToTextEncoding, + ): DiffieHellman; + /** + * The `DiffieHellman` class is a utility for creating Diffie-Hellman key + * exchanges. + * + * Instances of the `DiffieHellman` class can be created using the {@link createDiffieHellman} function. + * + * ```js + * import assert from 'node:assert'; + * + * const { + * createDiffieHellman, + * } = await import('node:crypto'); + * + * // Generate Alice's keys... + * const alice = createDiffieHellman(2048); + * const aliceKey = alice.generateKeys(); + * + * // Generate Bob's keys... + * const bob = createDiffieHellman(alice.getPrime(), alice.getGenerator()); + * const bobKey = bob.generateKeys(); + * + * // Exchange and generate the secret... + * const aliceSecret = alice.computeSecret(bobKey); + * const bobSecret = bob.computeSecret(aliceKey); + * + * // OK + * assert.strictEqual(aliceSecret.toString('hex'), bobSecret.toString('hex')); + * ``` + * @since v0.5.0 + */ + class DiffieHellman { + private constructor(); + /** + * Generates private and public Diffie-Hellman key values unless they have been + * generated or computed already, and returns + * the public key in the specified `encoding`. This key should be + * transferred to the other party. + * If `encoding` is provided a string is returned; otherwise a `Buffer` is returned. + * + * This function is a thin wrapper around [`DH_generate_key()`](https://www.openssl.org/docs/man3.0/man3/DH_generate_key.html). In particular, + * once a private key has been generated or set, calling this function only updates + * the public key but does not generate a new private key. + * @since v0.5.0 + * @param encoding The `encoding` of the return value. + */ + generateKeys(): Buffer; + generateKeys(encoding: BinaryToTextEncoding): string; + /** + * Computes the shared secret using `otherPublicKey` as the other + * party's public key and returns the computed shared secret. The supplied + * key is interpreted using the specified `inputEncoding`, and secret is + * encoded using specified `outputEncoding`. + * If the `inputEncoding` is not + * provided, `otherPublicKey` is expected to be a `Buffer`,`TypedArray`, or `DataView`. + * + * If `outputEncoding` is given a string is returned; otherwise, a `Buffer` is returned. + * @since v0.5.0 + * @param inputEncoding The `encoding` of an `otherPublicKey` string. + * @param outputEncoding The `encoding` of the return value. + */ + computeSecret(otherPublicKey: NodeJS.ArrayBufferView, inputEncoding?: null, outputEncoding?: null): Buffer; + computeSecret(otherPublicKey: string, inputEncoding: BinaryToTextEncoding, outputEncoding?: null): Buffer; + computeSecret( + otherPublicKey: NodeJS.ArrayBufferView, + inputEncoding: null, + outputEncoding: BinaryToTextEncoding, + ): string; + computeSecret( + otherPublicKey: string, + inputEncoding: BinaryToTextEncoding, + outputEncoding: BinaryToTextEncoding, + ): string; + /** + * Returns the Diffie-Hellman prime in the specified `encoding`. + * If `encoding` is provided a string is + * returned; otherwise a `Buffer` is returned. + * @since v0.5.0 + * @param encoding The `encoding` of the return value. + */ + getPrime(): Buffer; + getPrime(encoding: BinaryToTextEncoding): string; + /** + * Returns the Diffie-Hellman generator in the specified `encoding`. + * If `encoding` is provided a string is + * returned; otherwise a `Buffer` is returned. + * @since v0.5.0 + * @param encoding The `encoding` of the return value. + */ + getGenerator(): Buffer; + getGenerator(encoding: BinaryToTextEncoding): string; + /** + * Returns the Diffie-Hellman public key in the specified `encoding`. + * If `encoding` is provided a + * string is returned; otherwise a `Buffer` is returned. + * @since v0.5.0 + * @param encoding The `encoding` of the return value. + */ + getPublicKey(): Buffer; + getPublicKey(encoding: BinaryToTextEncoding): string; + /** + * Returns the Diffie-Hellman private key in the specified `encoding`. + * If `encoding` is provided a + * string is returned; otherwise a `Buffer` is returned. + * @since v0.5.0 + * @param encoding The `encoding` of the return value. + */ + getPrivateKey(): Buffer; + getPrivateKey(encoding: BinaryToTextEncoding): string; + /** + * Sets the Diffie-Hellman public key. If the `encoding` argument is provided,`publicKey` is expected + * to be a string. If no `encoding` is provided, `publicKey` is expected + * to be a `Buffer`, `TypedArray`, or `DataView`. + * @since v0.5.0 + * @param encoding The `encoding` of the `publicKey` string. + */ + setPublicKey(publicKey: NodeJS.ArrayBufferView): void; + setPublicKey(publicKey: string, encoding: BufferEncoding): void; + /** + * Sets the Diffie-Hellman private key. If the `encoding` argument is provided,`privateKey` is expected + * to be a string. If no `encoding` is provided, `privateKey` is expected + * to be a `Buffer`, `TypedArray`, or `DataView`. + * + * This function does not automatically compute the associated public key. Either `diffieHellman.setPublicKey()` or `diffieHellman.generateKeys()` can be + * used to manually provide the public key or to automatically derive it. + * @since v0.5.0 + * @param encoding The `encoding` of the `privateKey` string. + */ + setPrivateKey(privateKey: NodeJS.ArrayBufferView): void; + setPrivateKey(privateKey: string, encoding: BufferEncoding): void; + /** + * A bit field containing any warnings and/or errors resulting from a check + * performed during initialization of the `DiffieHellman` object. + * + * The following values are valid for this property (as defined in `node:constants` module): + * + * * `DH_CHECK_P_NOT_SAFE_PRIME` + * * `DH_CHECK_P_NOT_PRIME` + * * `DH_UNABLE_TO_CHECK_GENERATOR` + * * `DH_NOT_SUITABLE_GENERATOR` + * @since v0.11.12 + */ + verifyError: number; + } + /** + * The `DiffieHellmanGroup` class takes a well-known modp group as its argument. + * It works the same as `DiffieHellman`, except that it does not allow changing its keys after creation. + * In other words, it does not implement `setPublicKey()` or `setPrivateKey()` methods. + * + * ```js + * const { createDiffieHellmanGroup } = await import('node:crypto'); + * const dh = createDiffieHellmanGroup('modp1'); + * ``` + * The name (e.g. `'modp1'`) is taken from [RFC 2412](https://www.rfc-editor.org/rfc/rfc2412.txt) (modp1 and 2) and [RFC 3526](https://www.rfc-editor.org/rfc/rfc3526.txt): + * ```bash + * $ perl -ne 'print "$1\n" if /"(modp\d+)"/' src/node_crypto_groups.h + * modp1 # 768 bits + * modp2 # 1024 bits + * modp5 # 1536 bits + * modp14 # 2048 bits + * modp15 # etc. + * modp16 + * modp17 + * modp18 + * ``` + * @since v0.7.5 + */ + const DiffieHellmanGroup: DiffieHellmanGroupConstructor; + interface DiffieHellmanGroupConstructor { + new(name: string): DiffieHellmanGroup; + (name: string): DiffieHellmanGroup; + readonly prototype: DiffieHellmanGroup; + } + type DiffieHellmanGroup = Omit; + /** + * Creates a predefined `DiffieHellmanGroup` key exchange object. The + * supported groups are listed in the documentation for `DiffieHellmanGroup`. + * + * The returned object mimics the interface of objects created by {@link createDiffieHellman}, but will not allow changing + * the keys (with `diffieHellman.setPublicKey()`, for example). The + * advantage of using this method is that the parties do not have to + * generate nor exchange a group modulus beforehand, saving both processor + * and communication time. + * + * Example (obtaining a shared secret): + * + * ```js + * const { + * getDiffieHellman, + * } = await import('node:crypto'); + * const alice = getDiffieHellman('modp14'); + * const bob = getDiffieHellman('modp14'); + * + * alice.generateKeys(); + * bob.generateKeys(); + * + * const aliceSecret = alice.computeSecret(bob.getPublicKey(), null, 'hex'); + * const bobSecret = bob.computeSecret(alice.getPublicKey(), null, 'hex'); + * + * // aliceSecret and bobSecret should be the same + * console.log(aliceSecret === bobSecret); + * ``` + * @since v0.7.5 + */ + function getDiffieHellman(groupName: string): DiffieHellmanGroup; + /** + * An alias for {@link getDiffieHellman} + * @since v0.9.3 + */ + function createDiffieHellmanGroup(name: string): DiffieHellmanGroup; + /** + * Provides an asynchronous Password-Based Key Derivation Function 2 (PBKDF2) + * implementation. A selected HMAC digest algorithm specified by `digest` is + * applied to derive a key of the requested byte length (`keylen`) from the`password`, `salt` and `iterations`. + * + * The supplied `callback` function is called with two arguments: `err` and`derivedKey`. If an error occurs while deriving the key, `err` will be set; + * otherwise `err` will be `null`. By default, the successfully generated`derivedKey` will be passed to the callback as a `Buffer`. An error will be + * thrown if any of the input arguments specify invalid values or types. + * + * The `iterations` argument must be a number set as high as possible. The + * higher the number of iterations, the more secure the derived key will be, + * but will take a longer amount of time to complete. + * + * The `salt` should be as unique as possible. It is recommended that a salt is + * random and at least 16 bytes long. See [NIST SP 800-132](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf) for details. + * + * When passing strings for `password` or `salt`, please consider `caveats when using strings as inputs to cryptographic APIs`. + * + * ```js + * const { + * pbkdf2, + * } = await import('node:crypto'); + * + * pbkdf2('secret', 'salt', 100000, 64, 'sha512', (err, derivedKey) => { + * if (err) throw err; + * console.log(derivedKey.toString('hex')); // '3745e48...08d59ae' + * }); + * ``` + * + * An array of supported digest functions can be retrieved using {@link getHashes}. + * + * This API uses libuv's threadpool, which can have surprising and + * negative performance implications for some applications; see the `UV_THREADPOOL_SIZE` documentation for more information. + * @since v0.5.5 + */ + function pbkdf2( + password: BinaryLike, + salt: BinaryLike, + iterations: number, + keylen: number, + digest: string, + callback: (err: Error | null, derivedKey: Buffer) => void, + ): void; + /** + * Provides a synchronous Password-Based Key Derivation Function 2 (PBKDF2) + * implementation. A selected HMAC digest algorithm specified by `digest` is + * applied to derive a key of the requested byte length (`keylen`) from the`password`, `salt` and `iterations`. + * + * If an error occurs an `Error` will be thrown, otherwise the derived key will be + * returned as a `Buffer`. + * + * The `iterations` argument must be a number set as high as possible. The + * higher the number of iterations, the more secure the derived key will be, + * but will take a longer amount of time to complete. + * + * The `salt` should be as unique as possible. It is recommended that a salt is + * random and at least 16 bytes long. See [NIST SP 800-132](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf) for details. + * + * When passing strings for `password` or `salt`, please consider `caveats when using strings as inputs to cryptographic APIs`. + * + * ```js + * const { + * pbkdf2Sync, + * } = await import('node:crypto'); + * + * const key = pbkdf2Sync('secret', 'salt', 100000, 64, 'sha512'); + * console.log(key.toString('hex')); // '3745e48...08d59ae' + * ``` + * + * An array of supported digest functions can be retrieved using {@link getHashes}. + * @since v0.9.3 + */ + function pbkdf2Sync( + password: BinaryLike, + salt: BinaryLike, + iterations: number, + keylen: number, + digest: string, + ): Buffer; + /** + * Generates cryptographically strong pseudorandom data. The `size` argument + * is a number indicating the number of bytes to generate. + * + * If a `callback` function is provided, the bytes are generated asynchronously + * and the `callback` function is invoked with two arguments: `err` and `buf`. + * If an error occurs, `err` will be an `Error` object; otherwise it is `null`. The`buf` argument is a `Buffer` containing the generated bytes. + * + * ```js + * // Asynchronous + * const { + * randomBytes, + * } = await import('node:crypto'); + * + * randomBytes(256, (err, buf) => { + * if (err) throw err; + * console.log(`${buf.length} bytes of random data: ${buf.toString('hex')}`); + * }); + * ``` + * + * If the `callback` function is not provided, the random bytes are generated + * synchronously and returned as a `Buffer`. An error will be thrown if + * there is a problem generating the bytes. + * + * ```js + * // Synchronous + * const { + * randomBytes, + * } = await import('node:crypto'); + * + * const buf = randomBytes(256); + * console.log( + * `${buf.length} bytes of random data: ${buf.toString('hex')}`); + * ``` + * + * The `crypto.randomBytes()` method will not complete until there is + * sufficient entropy available. + * This should normally never take longer than a few milliseconds. The only time + * when generating the random bytes may conceivably block for a longer period of + * time is right after boot, when the whole system is still low on entropy. + * + * This API uses libuv's threadpool, which can have surprising and + * negative performance implications for some applications; see the `UV_THREADPOOL_SIZE` documentation for more information. + * + * The asynchronous version of `crypto.randomBytes()` is carried out in a single + * threadpool request. To minimize threadpool task length variation, partition + * large `randomBytes` requests when doing so as part of fulfilling a client + * request. + * @since v0.5.8 + * @param size The number of bytes to generate. The `size` must not be larger than `2**31 - 1`. + * @return if the `callback` function is not provided. + */ + function randomBytes(size: number): Buffer; + function randomBytes(size: number, callback: (err: Error | null, buf: Buffer) => void): void; + function pseudoRandomBytes(size: number): Buffer; + function pseudoRandomBytes(size: number, callback: (err: Error | null, buf: Buffer) => void): void; + /** + * Return a random integer `n` such that `min <= n < max`. This + * implementation avoids [modulo bias](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#Modulo_bias). + * + * The range (`max - min`) must be less than 248. `min` and `max` must + * be [safe integers](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger). + * + * If the `callback` function is not provided, the random integer is + * generated synchronously. + * + * ```js + * // Asynchronous + * const { + * randomInt, + * } = await import('node:crypto'); + * + * randomInt(3, (err, n) => { + * if (err) throw err; + * console.log(`Random number chosen from (0, 1, 2): ${n}`); + * }); + * ``` + * + * ```js + * // Synchronous + * const { + * randomInt, + * } = await import('node:crypto'); + * + * const n = randomInt(3); + * console.log(`Random number chosen from (0, 1, 2): ${n}`); + * ``` + * + * ```js + * // With `min` argument + * const { + * randomInt, + * } = await import('node:crypto'); + * + * const n = randomInt(1, 7); + * console.log(`The dice rolled: ${n}`); + * ``` + * @since v14.10.0, v12.19.0 + * @param [min=0] Start of random range (inclusive). + * @param max End of random range (exclusive). + * @param callback `function(err, n) {}`. + */ + function randomInt(max: number): number; + function randomInt(min: number, max: number): number; + function randomInt(max: number, callback: (err: Error | null, value: number) => void): void; + function randomInt(min: number, max: number, callback: (err: Error | null, value: number) => void): void; + /** + * Synchronous version of {@link randomFill}. + * + * ```js + * import { Buffer } from 'node:buffer'; + * const { randomFillSync } = await import('node:crypto'); + * + * const buf = Buffer.alloc(10); + * console.log(randomFillSync(buf).toString('hex')); + * + * randomFillSync(buf, 5); + * console.log(buf.toString('hex')); + * + * // The above is equivalent to the following: + * randomFillSync(buf, 5, 5); + * console.log(buf.toString('hex')); + * ``` + * + * Any `ArrayBuffer`, `TypedArray` or `DataView` instance may be passed as`buffer`. + * + * ```js + * import { Buffer } from 'node:buffer'; + * const { randomFillSync } = await import('node:crypto'); + * + * const a = new Uint32Array(10); + * console.log(Buffer.from(randomFillSync(a).buffer, + * a.byteOffset, a.byteLength).toString('hex')); + * + * const b = new DataView(new ArrayBuffer(10)); + * console.log(Buffer.from(randomFillSync(b).buffer, + * b.byteOffset, b.byteLength).toString('hex')); + * + * const c = new ArrayBuffer(10); + * console.log(Buffer.from(randomFillSync(c)).toString('hex')); + * ``` + * @since v7.10.0, v6.13.0 + * @param buffer Must be supplied. The size of the provided `buffer` must not be larger than `2**31 - 1`. + * @param [offset=0] + * @param [size=buffer.length - offset] + * @return The object passed as `buffer` argument. + */ + function randomFillSync(buffer: T, offset?: number, size?: number): T; + /** + * This function is similar to {@link randomBytes} but requires the first + * argument to be a `Buffer` that will be filled. It also + * requires that a callback is passed in. + * + * If the `callback` function is not provided, an error will be thrown. + * + * ```js + * import { Buffer } from 'node:buffer'; + * const { randomFill } = await import('node:crypto'); + * + * const buf = Buffer.alloc(10); + * randomFill(buf, (err, buf) => { + * if (err) throw err; + * console.log(buf.toString('hex')); + * }); + * + * randomFill(buf, 5, (err, buf) => { + * if (err) throw err; + * console.log(buf.toString('hex')); + * }); + * + * // The above is equivalent to the following: + * randomFill(buf, 5, 5, (err, buf) => { + * if (err) throw err; + * console.log(buf.toString('hex')); + * }); + * ``` + * + * Any `ArrayBuffer`, `TypedArray`, or `DataView` instance may be passed as`buffer`. + * + * While this includes instances of `Float32Array` and `Float64Array`, this + * function should not be used to generate random floating-point numbers. The + * result may contain `+Infinity`, `-Infinity`, and `NaN`, and even if the array + * contains finite numbers only, they are not drawn from a uniform random + * distribution and have no meaningful lower or upper bounds. + * + * ```js + * import { Buffer } from 'node:buffer'; + * const { randomFill } = await import('node:crypto'); + * + * const a = new Uint32Array(10); + * randomFill(a, (err, buf) => { + * if (err) throw err; + * console.log(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength) + * .toString('hex')); + * }); + * + * const b = new DataView(new ArrayBuffer(10)); + * randomFill(b, (err, buf) => { + * if (err) throw err; + * console.log(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength) + * .toString('hex')); + * }); + * + * const c = new ArrayBuffer(10); + * randomFill(c, (err, buf) => { + * if (err) throw err; + * console.log(Buffer.from(buf).toString('hex')); + * }); + * ``` + * + * This API uses libuv's threadpool, which can have surprising and + * negative performance implications for some applications; see the `UV_THREADPOOL_SIZE` documentation for more information. + * + * The asynchronous version of `crypto.randomFill()` is carried out in a single + * threadpool request. To minimize threadpool task length variation, partition + * large `randomFill` requests when doing so as part of fulfilling a client + * request. + * @since v7.10.0, v6.13.0 + * @param buffer Must be supplied. The size of the provided `buffer` must not be larger than `2**31 - 1`. + * @param [offset=0] + * @param [size=buffer.length - offset] + * @param callback `function(err, buf) {}`. + */ + function randomFill( + buffer: T, + callback: (err: Error | null, buf: T) => void, + ): void; + function randomFill( + buffer: T, + offset: number, + callback: (err: Error | null, buf: T) => void, + ): void; + function randomFill( + buffer: T, + offset: number, + size: number, + callback: (err: Error | null, buf: T) => void, + ): void; + interface ScryptOptions { + cost?: number | undefined; + blockSize?: number | undefined; + parallelization?: number | undefined; + N?: number | undefined; + r?: number | undefined; + p?: number | undefined; + maxmem?: number | undefined; + } + /** + * Provides an asynchronous [scrypt](https://en.wikipedia.org/wiki/Scrypt) implementation. Scrypt is a password-based + * key derivation function that is designed to be expensive computationally and + * memory-wise in order to make brute-force attacks unrewarding. + * + * The `salt` should be as unique as possible. It is recommended that a salt is + * random and at least 16 bytes long. See [NIST SP 800-132](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf) for details. + * + * When passing strings for `password` or `salt`, please consider `caveats when using strings as inputs to cryptographic APIs`. + * + * The `callback` function is called with two arguments: `err` and `derivedKey`.`err` is an exception object when key derivation fails, otherwise `err` is`null`. `derivedKey` is passed to the + * callback as a `Buffer`. + * + * An exception is thrown when any of the input arguments specify invalid values + * or types. + * + * ```js + * const { + * scrypt, + * } = await import('node:crypto'); + * + * // Using the factory defaults. + * scrypt('password', 'salt', 64, (err, derivedKey) => { + * if (err) throw err; + * console.log(derivedKey.toString('hex')); // '3745e48...08d59ae' + * }); + * // Using a custom N parameter. Must be a power of two. + * scrypt('password', 'salt', 64, { N: 1024 }, (err, derivedKey) => { + * if (err) throw err; + * console.log(derivedKey.toString('hex')); // '3745e48...aa39b34' + * }); + * ``` + * @since v10.5.0 + */ + function scrypt( + password: BinaryLike, + salt: BinaryLike, + keylen: number, + callback: (err: Error | null, derivedKey: Buffer) => void, + ): void; + function scrypt( + password: BinaryLike, + salt: BinaryLike, + keylen: number, + options: ScryptOptions, + callback: (err: Error | null, derivedKey: Buffer) => void, + ): void; + /** + * Provides a synchronous [scrypt](https://en.wikipedia.org/wiki/Scrypt) implementation. Scrypt is a password-based + * key derivation function that is designed to be expensive computationally and + * memory-wise in order to make brute-force attacks unrewarding. + * + * The `salt` should be as unique as possible. It is recommended that a salt is + * random and at least 16 bytes long. See [NIST SP 800-132](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf) for details. + * + * When passing strings for `password` or `salt`, please consider `caveats when using strings as inputs to cryptographic APIs`. + * + * An exception is thrown when key derivation fails, otherwise the derived key is + * returned as a `Buffer`. + * + * An exception is thrown when any of the input arguments specify invalid values + * or types. + * + * ```js + * const { + * scryptSync, + * } = await import('node:crypto'); + * // Using the factory defaults. + * + * const key1 = scryptSync('password', 'salt', 64); + * console.log(key1.toString('hex')); // '3745e48...08d59ae' + * // Using a custom N parameter. Must be a power of two. + * const key2 = scryptSync('password', 'salt', 64, { N: 1024 }); + * console.log(key2.toString('hex')); // '3745e48...aa39b34' + * ``` + * @since v10.5.0 + */ + function scryptSync(password: BinaryLike, salt: BinaryLike, keylen: number, options?: ScryptOptions): Buffer; + interface RsaPublicKey { + key: KeyLike; + padding?: number | undefined; + } + interface RsaPrivateKey { + key: KeyLike; + passphrase?: string | undefined; + /** + * @default 'sha1' + */ + oaepHash?: string | undefined; + oaepLabel?: NodeJS.TypedArray | undefined; + padding?: number | undefined; + } + /** + * Encrypts the content of `buffer` with `key` and returns a new `Buffer` with encrypted content. The returned data can be decrypted using + * the corresponding private key, for example using {@link privateDecrypt}. + * + * If `key` is not a `KeyObject`, this function behaves as if`key` had been passed to {@link createPublicKey}. If it is an + * object, the `padding` property can be passed. Otherwise, this function uses`RSA_PKCS1_OAEP_PADDING`. + * + * Because RSA public keys can be derived from private keys, a private key may + * be passed instead of a public key. + * @since v0.11.14 + */ + function publicEncrypt(key: RsaPublicKey | RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer; + /** + * Decrypts `buffer` with `key`.`buffer` was previously encrypted using + * the corresponding private key, for example using {@link privateEncrypt}. + * + * If `key` is not a `KeyObject`, this function behaves as if`key` had been passed to {@link createPublicKey}. If it is an + * object, the `padding` property can be passed. Otherwise, this function uses`RSA_PKCS1_PADDING`. + * + * Because RSA public keys can be derived from private keys, a private key may + * be passed instead of a public key. + * @since v1.1.0 + */ + function publicDecrypt(key: RsaPublicKey | RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer; + /** + * Decrypts `buffer` with `privateKey`. `buffer` was previously encrypted using + * the corresponding public key, for example using {@link publicEncrypt}. + * + * If `privateKey` is not a `KeyObject`, this function behaves as if`privateKey` had been passed to {@link createPrivateKey}. If it is an + * object, the `padding` property can be passed. Otherwise, this function uses`RSA_PKCS1_OAEP_PADDING`. + * @since v0.11.14 + */ + function privateDecrypt(privateKey: RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer; + /** + * Encrypts `buffer` with `privateKey`. The returned data can be decrypted using + * the corresponding public key, for example using {@link publicDecrypt}. + * + * If `privateKey` is not a `KeyObject`, this function behaves as if`privateKey` had been passed to {@link createPrivateKey}. If it is an + * object, the `padding` property can be passed. Otherwise, this function uses`RSA_PKCS1_PADDING`. + * @since v1.1.0 + */ + function privateEncrypt(privateKey: RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer; + /** + * ```js + * const { + * getCiphers, + * } = await import('node:crypto'); + * + * console.log(getCiphers()); // ['aes-128-cbc', 'aes-128-ccm', ...] + * ``` + * @since v0.9.3 + * @return An array with the names of the supported cipher algorithms. + */ + function getCiphers(): string[]; + /** + * ```js + * const { + * getCurves, + * } = await import('node:crypto'); + * + * console.log(getCurves()); // ['Oakley-EC2N-3', 'Oakley-EC2N-4', ...] + * ``` + * @since v2.3.0 + * @return An array with the names of the supported elliptic curves. + */ + function getCurves(): string[]; + /** + * @since v10.0.0 + * @return `1` if and only if a FIPS compliant crypto provider is currently in use, `0` otherwise. A future semver-major release may change the return type of this API to a {boolean}. + */ + function getFips(): 1 | 0; + /** + * Enables the FIPS compliant crypto provider in a FIPS-enabled Node.js build. + * Throws an error if FIPS mode is not available. + * @since v10.0.0 + * @param bool `true` to enable FIPS mode. + */ + function setFips(bool: boolean): void; + /** + * ```js + * const { + * getHashes, + * } = await import('node:crypto'); + * + * console.log(getHashes()); // ['DSA', 'DSA-SHA', 'DSA-SHA1', ...] + * ``` + * @since v0.9.3 + * @return An array of the names of the supported hash algorithms, such as `'RSA-SHA256'`. Hash algorithms are also called "digest" algorithms. + */ + function getHashes(): string[]; + /** + * The `ECDH` class is a utility for creating Elliptic Curve Diffie-Hellman (ECDH) + * key exchanges. + * + * Instances of the `ECDH` class can be created using the {@link createECDH} function. + * + * ```js + * import assert from 'node:assert'; + * + * const { + * createECDH, + * } = await import('node:crypto'); + * + * // Generate Alice's keys... + * const alice = createECDH('secp521r1'); + * const aliceKey = alice.generateKeys(); + * + * // Generate Bob's keys... + * const bob = createECDH('secp521r1'); + * const bobKey = bob.generateKeys(); + * + * // Exchange and generate the secret... + * const aliceSecret = alice.computeSecret(bobKey); + * const bobSecret = bob.computeSecret(aliceKey); + * + * assert.strictEqual(aliceSecret.toString('hex'), bobSecret.toString('hex')); + * // OK + * ``` + * @since v0.11.14 + */ + class ECDH { + private constructor(); + /** + * Converts the EC Diffie-Hellman public key specified by `key` and `curve` to the + * format specified by `format`. The `format` argument specifies point encoding + * and can be `'compressed'`, `'uncompressed'` or `'hybrid'`. The supplied key is + * interpreted using the specified `inputEncoding`, and the returned key is encoded + * using the specified `outputEncoding`. + * + * Use {@link getCurves} to obtain a list of available curve names. + * On recent OpenSSL releases, `openssl ecparam -list_curves` will also display + * the name and description of each available elliptic curve. + * + * If `format` is not specified the point will be returned in `'uncompressed'`format. + * + * If the `inputEncoding` is not provided, `key` is expected to be a `Buffer`,`TypedArray`, or `DataView`. + * + * Example (uncompressing a key): + * + * ```js + * const { + * createECDH, + * ECDH, + * } = await import('node:crypto'); + * + * const ecdh = createECDH('secp256k1'); + * ecdh.generateKeys(); + * + * const compressedKey = ecdh.getPublicKey('hex', 'compressed'); + * + * const uncompressedKey = ECDH.convertKey(compressedKey, + * 'secp256k1', + * 'hex', + * 'hex', + * 'uncompressed'); + * + * // The converted key and the uncompressed public key should be the same + * console.log(uncompressedKey === ecdh.getPublicKey('hex')); + * ``` + * @since v10.0.0 + * @param inputEncoding The `encoding` of the `key` string. + * @param outputEncoding The `encoding` of the return value. + * @param [format='uncompressed'] + */ + static convertKey( + key: BinaryLike, + curve: string, + inputEncoding?: BinaryToTextEncoding, + outputEncoding?: "latin1" | "hex" | "base64" | "base64url", + format?: "uncompressed" | "compressed" | "hybrid", + ): Buffer | string; + /** + * Generates private and public EC Diffie-Hellman key values, and returns + * the public key in the specified `format` and `encoding`. This key should be + * transferred to the other party. + * + * The `format` argument specifies point encoding and can be `'compressed'` or`'uncompressed'`. If `format` is not specified, the point will be returned in`'uncompressed'` format. + * + * If `encoding` is provided a string is returned; otherwise a `Buffer` is returned. + * @since v0.11.14 + * @param encoding The `encoding` of the return value. + * @param [format='uncompressed'] + */ + generateKeys(): Buffer; + generateKeys(encoding: BinaryToTextEncoding, format?: ECDHKeyFormat): string; + /** + * Computes the shared secret using `otherPublicKey` as the other + * party's public key and returns the computed shared secret. The supplied + * key is interpreted using specified `inputEncoding`, and the returned secret + * is encoded using the specified `outputEncoding`. + * If the `inputEncoding` is not + * provided, `otherPublicKey` is expected to be a `Buffer`, `TypedArray`, or`DataView`. + * + * If `outputEncoding` is given a string will be returned; otherwise a `Buffer` is returned. + * + * `ecdh.computeSecret` will throw an`ERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY` error when `otherPublicKey`lies outside of the elliptic curve. Since `otherPublicKey` is + * usually supplied from a remote user over an insecure network, + * be sure to handle this exception accordingly. + * @since v0.11.14 + * @param inputEncoding The `encoding` of the `otherPublicKey` string. + * @param outputEncoding The `encoding` of the return value. + */ + computeSecret(otherPublicKey: NodeJS.ArrayBufferView): Buffer; + computeSecret(otherPublicKey: string, inputEncoding: BinaryToTextEncoding): Buffer; + computeSecret(otherPublicKey: NodeJS.ArrayBufferView, outputEncoding: BinaryToTextEncoding): string; + computeSecret( + otherPublicKey: string, + inputEncoding: BinaryToTextEncoding, + outputEncoding: BinaryToTextEncoding, + ): string; + /** + * If `encoding` is specified, a string is returned; otherwise a `Buffer` is + * returned. + * @since v0.11.14 + * @param encoding The `encoding` of the return value. + * @return The EC Diffie-Hellman in the specified `encoding`. + */ + getPrivateKey(): Buffer; + getPrivateKey(encoding: BinaryToTextEncoding): string; + /** + * The `format` argument specifies point encoding and can be `'compressed'` or`'uncompressed'`. If `format` is not specified the point will be returned in`'uncompressed'` format. + * + * If `encoding` is specified, a string is returned; otherwise a `Buffer` is + * returned. + * @since v0.11.14 + * @param encoding The `encoding` of the return value. + * @param [format='uncompressed'] + * @return The EC Diffie-Hellman public key in the specified `encoding` and `format`. + */ + getPublicKey(encoding?: null, format?: ECDHKeyFormat): Buffer; + getPublicKey(encoding: BinaryToTextEncoding, format?: ECDHKeyFormat): string; + /** + * Sets the EC Diffie-Hellman private key. + * If `encoding` is provided, `privateKey` is expected + * to be a string; otherwise `privateKey` is expected to be a `Buffer`,`TypedArray`, or `DataView`. + * + * If `privateKey` is not valid for the curve specified when the `ECDH` object was + * created, an error is thrown. Upon setting the private key, the associated + * public point (key) is also generated and set in the `ECDH` object. + * @since v0.11.14 + * @param encoding The `encoding` of the `privateKey` string. + */ + setPrivateKey(privateKey: NodeJS.ArrayBufferView): void; + setPrivateKey(privateKey: string, encoding: BinaryToTextEncoding): void; + } + /** + * Creates an Elliptic Curve Diffie-Hellman (`ECDH`) key exchange object using a + * predefined curve specified by the `curveName` string. Use {@link getCurves} to obtain a list of available curve names. On recent + * OpenSSL releases, `openssl ecparam -list_curves` will also display the name + * and description of each available elliptic curve. + * @since v0.11.14 + */ + function createECDH(curveName: string): ECDH; + /** + * This function compares the underlying bytes that represent the given`ArrayBuffer`, `TypedArray`, or `DataView` instances using a constant-time + * algorithm. + * + * This function does not leak timing information that + * would allow an attacker to guess one of the values. This is suitable for + * comparing HMAC digests or secret values like authentication cookies or [capability urls](https://www.w3.org/TR/capability-urls/). + * + * `a` and `b` must both be `Buffer`s, `TypedArray`s, or `DataView`s, and they + * must have the same byte length. An error is thrown if `a` and `b` have + * different byte lengths. + * + * If at least one of `a` and `b` is a `TypedArray` with more than one byte per + * entry, such as `Uint16Array`, the result will be computed using the platform + * byte order. + * + * **When both of the inputs are `Float32Array`s or`Float64Array`s, this function might return unexpected results due to IEEE 754** + * **encoding of floating-point numbers. In particular, neither `x === y` nor`Object.is(x, y)` implies that the byte representations of two floating-point** + * **numbers `x` and `y` are equal.** + * + * Use of `crypto.timingSafeEqual` does not guarantee that the _surrounding_ code + * is timing-safe. Care should be taken to ensure that the surrounding code does + * not introduce timing vulnerabilities. + * @since v6.6.0 + */ + function timingSafeEqual(a: NodeJS.ArrayBufferView, b: NodeJS.ArrayBufferView): boolean; + type KeyType = "rsa" | "rsa-pss" | "dsa" | "ec" | "ed25519" | "ed448" | "x25519" | "x448"; + type KeyFormat = "pem" | "der" | "jwk"; + interface BasePrivateKeyEncodingOptions { + format: T; + cipher?: string | undefined; + passphrase?: string | undefined; + } + interface KeyPairKeyObjectResult { + publicKey: KeyObject; + privateKey: KeyObject; + } + interface ED25519KeyPairKeyObjectOptions {} + interface ED448KeyPairKeyObjectOptions {} + interface X25519KeyPairKeyObjectOptions {} + interface X448KeyPairKeyObjectOptions {} + interface ECKeyPairKeyObjectOptions { + /** + * Name of the curve to use + */ + namedCurve: string; + } + interface RSAKeyPairKeyObjectOptions { + /** + * Key size in bits + */ + modulusLength: number; + /** + * Public exponent + * @default 0x10001 + */ + publicExponent?: number | undefined; + } + interface RSAPSSKeyPairKeyObjectOptions { + /** + * Key size in bits + */ + modulusLength: number; + /** + * Public exponent + * @default 0x10001 + */ + publicExponent?: number | undefined; + /** + * Name of the message digest + */ + hashAlgorithm?: string; + /** + * Name of the message digest used by MGF1 + */ + mgf1HashAlgorithm?: string; + /** + * Minimal salt length in bytes + */ + saltLength?: string; + } + interface DSAKeyPairKeyObjectOptions { + /** + * Key size in bits + */ + modulusLength: number; + /** + * Size of q in bits + */ + divisorLength: number; + } + interface RSAKeyPairOptions { + /** + * Key size in bits + */ + modulusLength: number; + /** + * Public exponent + * @default 0x10001 + */ + publicExponent?: number | undefined; + publicKeyEncoding: { + type: "pkcs1" | "spki"; + format: PubF; + }; + privateKeyEncoding: BasePrivateKeyEncodingOptions & { + type: "pkcs1" | "pkcs8"; + }; + } + interface RSAPSSKeyPairOptions { + /** + * Key size in bits + */ + modulusLength: number; + /** + * Public exponent + * @default 0x10001 + */ + publicExponent?: number | undefined; + /** + * Name of the message digest + */ + hashAlgorithm?: string; + /** + * Name of the message digest used by MGF1 + */ + mgf1HashAlgorithm?: string; + /** + * Minimal salt length in bytes + */ + saltLength?: string; + publicKeyEncoding: { + type: "spki"; + format: PubF; + }; + privateKeyEncoding: BasePrivateKeyEncodingOptions & { + type: "pkcs8"; + }; + } + interface DSAKeyPairOptions { + /** + * Key size in bits + */ + modulusLength: number; + /** + * Size of q in bits + */ + divisorLength: number; + publicKeyEncoding: { + type: "spki"; + format: PubF; + }; + privateKeyEncoding: BasePrivateKeyEncodingOptions & { + type: "pkcs8"; + }; + } + interface ECKeyPairOptions { + /** + * Name of the curve to use. + */ + namedCurve: string; + publicKeyEncoding: { + type: "pkcs1" | "spki"; + format: PubF; + }; + privateKeyEncoding: BasePrivateKeyEncodingOptions & { + type: "sec1" | "pkcs8"; + }; + } + interface ED25519KeyPairOptions { + publicKeyEncoding: { + type: "spki"; + format: PubF; + }; + privateKeyEncoding: BasePrivateKeyEncodingOptions & { + type: "pkcs8"; + }; + } + interface ED448KeyPairOptions { + publicKeyEncoding: { + type: "spki"; + format: PubF; + }; + privateKeyEncoding: BasePrivateKeyEncodingOptions & { + type: "pkcs8"; + }; + } + interface X25519KeyPairOptions { + publicKeyEncoding: { + type: "spki"; + format: PubF; + }; + privateKeyEncoding: BasePrivateKeyEncodingOptions & { + type: "pkcs8"; + }; + } + interface X448KeyPairOptions { + publicKeyEncoding: { + type: "spki"; + format: PubF; + }; + privateKeyEncoding: BasePrivateKeyEncodingOptions & { + type: "pkcs8"; + }; + } + interface KeyPairSyncResult { + publicKey: T1; + privateKey: T2; + } + /** + * Generates a new asymmetric key pair of the given `type`. RSA, RSA-PSS, DSA, EC, + * Ed25519, Ed448, X25519, X448, and DH are currently supported. + * + * If a `publicKeyEncoding` or `privateKeyEncoding` was specified, this function + * behaves as if `keyObject.export()` had been called on its result. Otherwise, + * the respective part of the key is returned as a `KeyObject`. + * + * When encoding public keys, it is recommended to use `'spki'`. When encoding + * private keys, it is recommended to use `'pkcs8'` with a strong passphrase, + * and to keep the passphrase confidential. + * + * ```js + * const { + * generateKeyPairSync, + * } = await import('node:crypto'); + * + * const { + * publicKey, + * privateKey, + * } = generateKeyPairSync('rsa', { + * modulusLength: 4096, + * publicKeyEncoding: { + * type: 'spki', + * format: 'pem', + * }, + * privateKeyEncoding: { + * type: 'pkcs8', + * format: 'pem', + * cipher: 'aes-256-cbc', + * passphrase: 'top secret', + * }, + * }); + * ``` + * + * The return value `{ publicKey, privateKey }` represents the generated key pair. + * When PEM encoding was selected, the respective key will be a string, otherwise + * it will be a buffer containing the data encoded as DER. + * @since v10.12.0 + * @param type Must be `'rsa'`, `'rsa-pss'`, `'dsa'`, `'ec'`, `'ed25519'`, `'ed448'`, `'x25519'`, `'x448'`, or `'dh'`. + */ + function generateKeyPairSync( + type: "rsa", + options: RSAKeyPairOptions<"pem", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "rsa", + options: RSAKeyPairOptions<"pem", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "rsa", + options: RSAKeyPairOptions<"der", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "rsa", + options: RSAKeyPairOptions<"der", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync(type: "rsa", options: RSAKeyPairKeyObjectOptions): KeyPairKeyObjectResult; + function generateKeyPairSync( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"pem", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"pem", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"der", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"der", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync(type: "rsa-pss", options: RSAPSSKeyPairKeyObjectOptions): KeyPairKeyObjectResult; + function generateKeyPairSync( + type: "dsa", + options: DSAKeyPairOptions<"pem", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "dsa", + options: DSAKeyPairOptions<"pem", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "dsa", + options: DSAKeyPairOptions<"der", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "dsa", + options: DSAKeyPairOptions<"der", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync(type: "dsa", options: DSAKeyPairKeyObjectOptions): KeyPairKeyObjectResult; + function generateKeyPairSync( + type: "ec", + options: ECKeyPairOptions<"pem", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ec", + options: ECKeyPairOptions<"pem", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ec", + options: ECKeyPairOptions<"der", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ec", + options: ECKeyPairOptions<"der", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync(type: "ec", options: ECKeyPairKeyObjectOptions): KeyPairKeyObjectResult; + function generateKeyPairSync( + type: "ed25519", + options: ED25519KeyPairOptions<"pem", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ed25519", + options: ED25519KeyPairOptions<"pem", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ed25519", + options: ED25519KeyPairOptions<"der", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ed25519", + options: ED25519KeyPairOptions<"der", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync(type: "ed25519", options?: ED25519KeyPairKeyObjectOptions): KeyPairKeyObjectResult; + function generateKeyPairSync( + type: "ed448", + options: ED448KeyPairOptions<"pem", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ed448", + options: ED448KeyPairOptions<"pem", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ed448", + options: ED448KeyPairOptions<"der", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "ed448", + options: ED448KeyPairOptions<"der", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync(type: "ed448", options?: ED448KeyPairKeyObjectOptions): KeyPairKeyObjectResult; + function generateKeyPairSync( + type: "x25519", + options: X25519KeyPairOptions<"pem", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "x25519", + options: X25519KeyPairOptions<"pem", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "x25519", + options: X25519KeyPairOptions<"der", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "x25519", + options: X25519KeyPairOptions<"der", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync(type: "x25519", options?: X25519KeyPairKeyObjectOptions): KeyPairKeyObjectResult; + function generateKeyPairSync( + type: "x448", + options: X448KeyPairOptions<"pem", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "x448", + options: X448KeyPairOptions<"pem", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "x448", + options: X448KeyPairOptions<"der", "pem">, + ): KeyPairSyncResult; + function generateKeyPairSync( + type: "x448", + options: X448KeyPairOptions<"der", "der">, + ): KeyPairSyncResult; + function generateKeyPairSync(type: "x448", options?: X448KeyPairKeyObjectOptions): KeyPairKeyObjectResult; + /** + * Generates a new asymmetric key pair of the given `type`. RSA, RSA-PSS, DSA, EC, + * Ed25519, Ed448, X25519, X448, and DH are currently supported. + * + * If a `publicKeyEncoding` or `privateKeyEncoding` was specified, this function + * behaves as if `keyObject.export()` had been called on its result. Otherwise, + * the respective part of the key is returned as a `KeyObject`. + * + * It is recommended to encode public keys as `'spki'` and private keys as`'pkcs8'` with encryption for long-term storage: + * + * ```js + * const { + * generateKeyPair, + * } = await import('node:crypto'); + * + * generateKeyPair('rsa', { + * modulusLength: 4096, + * publicKeyEncoding: { + * type: 'spki', + * format: 'pem', + * }, + * privateKeyEncoding: { + * type: 'pkcs8', + * format: 'pem', + * cipher: 'aes-256-cbc', + * passphrase: 'top secret', + * }, + * }, (err, publicKey, privateKey) => { + * // Handle errors and use the generated key pair. + * }); + * ``` + * + * On completion, `callback` will be called with `err` set to `undefined` and`publicKey` / `privateKey` representing the generated key pair. + * + * If this method is invoked as its `util.promisify()` ed version, it returns + * a `Promise` for an `Object` with `publicKey` and `privateKey` properties. + * @since v10.12.0 + * @param type Must be `'rsa'`, `'rsa-pss'`, `'dsa'`, `'ec'`, `'ed25519'`, `'ed448'`, `'x25519'`, `'x448'`, or `'dh'`. + */ + function generateKeyPair( + type: "rsa", + options: RSAKeyPairOptions<"pem", "pem">, + callback: (err: Error | null, publicKey: string, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "rsa", + options: RSAKeyPairOptions<"pem", "der">, + callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "rsa", + options: RSAKeyPairOptions<"der", "pem">, + callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "rsa", + options: RSAKeyPairOptions<"der", "der">, + callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "rsa", + options: RSAKeyPairKeyObjectOptions, + callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, + ): void; + function generateKeyPair( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"pem", "pem">, + callback: (err: Error | null, publicKey: string, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"pem", "der">, + callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"der", "pem">, + callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"der", "der">, + callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "rsa-pss", + options: RSAPSSKeyPairKeyObjectOptions, + callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, + ): void; + function generateKeyPair( + type: "dsa", + options: DSAKeyPairOptions<"pem", "pem">, + callback: (err: Error | null, publicKey: string, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "dsa", + options: DSAKeyPairOptions<"pem", "der">, + callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "dsa", + options: DSAKeyPairOptions<"der", "pem">, + callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "dsa", + options: DSAKeyPairOptions<"der", "der">, + callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "dsa", + options: DSAKeyPairKeyObjectOptions, + callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, + ): void; + function generateKeyPair( + type: "ec", + options: ECKeyPairOptions<"pem", "pem">, + callback: (err: Error | null, publicKey: string, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "ec", + options: ECKeyPairOptions<"pem", "der">, + callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "ec", + options: ECKeyPairOptions<"der", "pem">, + callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "ec", + options: ECKeyPairOptions<"der", "der">, + callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "ec", + options: ECKeyPairKeyObjectOptions, + callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, + ): void; + function generateKeyPair( + type: "ed25519", + options: ED25519KeyPairOptions<"pem", "pem">, + callback: (err: Error | null, publicKey: string, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "ed25519", + options: ED25519KeyPairOptions<"pem", "der">, + callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "ed25519", + options: ED25519KeyPairOptions<"der", "pem">, + callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "ed25519", + options: ED25519KeyPairOptions<"der", "der">, + callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "ed25519", + options: ED25519KeyPairKeyObjectOptions | undefined, + callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, + ): void; + function generateKeyPair( + type: "ed448", + options: ED448KeyPairOptions<"pem", "pem">, + callback: (err: Error | null, publicKey: string, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "ed448", + options: ED448KeyPairOptions<"pem", "der">, + callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "ed448", + options: ED448KeyPairOptions<"der", "pem">, + callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "ed448", + options: ED448KeyPairOptions<"der", "der">, + callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "ed448", + options: ED448KeyPairKeyObjectOptions | undefined, + callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, + ): void; + function generateKeyPair( + type: "x25519", + options: X25519KeyPairOptions<"pem", "pem">, + callback: (err: Error | null, publicKey: string, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "x25519", + options: X25519KeyPairOptions<"pem", "der">, + callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "x25519", + options: X25519KeyPairOptions<"der", "pem">, + callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "x25519", + options: X25519KeyPairOptions<"der", "der">, + callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "x25519", + options: X25519KeyPairKeyObjectOptions | undefined, + callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, + ): void; + function generateKeyPair( + type: "x448", + options: X448KeyPairOptions<"pem", "pem">, + callback: (err: Error | null, publicKey: string, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "x448", + options: X448KeyPairOptions<"pem", "der">, + callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "x448", + options: X448KeyPairOptions<"der", "pem">, + callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void, + ): void; + function generateKeyPair( + type: "x448", + options: X448KeyPairOptions<"der", "der">, + callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void, + ): void; + function generateKeyPair( + type: "x448", + options: X448KeyPairKeyObjectOptions | undefined, + callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void, + ): void; + namespace generateKeyPair { + function __promisify__( + type: "rsa", + options: RSAKeyPairOptions<"pem", "pem">, + ): Promise<{ + publicKey: string; + privateKey: string; + }>; + function __promisify__( + type: "rsa", + options: RSAKeyPairOptions<"pem", "der">, + ): Promise<{ + publicKey: string; + privateKey: Buffer; + }>; + function __promisify__( + type: "rsa", + options: RSAKeyPairOptions<"der", "pem">, + ): Promise<{ + publicKey: Buffer; + privateKey: string; + }>; + function __promisify__( + type: "rsa", + options: RSAKeyPairOptions<"der", "der">, + ): Promise<{ + publicKey: Buffer; + privateKey: Buffer; + }>; + function __promisify__(type: "rsa", options: RSAKeyPairKeyObjectOptions): Promise; + function __promisify__( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"pem", "pem">, + ): Promise<{ + publicKey: string; + privateKey: string; + }>; + function __promisify__( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"pem", "der">, + ): Promise<{ + publicKey: string; + privateKey: Buffer; + }>; + function __promisify__( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"der", "pem">, + ): Promise<{ + publicKey: Buffer; + privateKey: string; + }>; + function __promisify__( + type: "rsa-pss", + options: RSAPSSKeyPairOptions<"der", "der">, + ): Promise<{ + publicKey: Buffer; + privateKey: Buffer; + }>; + function __promisify__( + type: "rsa-pss", + options: RSAPSSKeyPairKeyObjectOptions, + ): Promise; + function __promisify__( + type: "dsa", + options: DSAKeyPairOptions<"pem", "pem">, + ): Promise<{ + publicKey: string; + privateKey: string; + }>; + function __promisify__( + type: "dsa", + options: DSAKeyPairOptions<"pem", "der">, + ): Promise<{ + publicKey: string; + privateKey: Buffer; + }>; + function __promisify__( + type: "dsa", + options: DSAKeyPairOptions<"der", "pem">, + ): Promise<{ + publicKey: Buffer; + privateKey: string; + }>; + function __promisify__( + type: "dsa", + options: DSAKeyPairOptions<"der", "der">, + ): Promise<{ + publicKey: Buffer; + privateKey: Buffer; + }>; + function __promisify__(type: "dsa", options: DSAKeyPairKeyObjectOptions): Promise; + function __promisify__( + type: "ec", + options: ECKeyPairOptions<"pem", "pem">, + ): Promise<{ + publicKey: string; + privateKey: string; + }>; + function __promisify__( + type: "ec", + options: ECKeyPairOptions<"pem", "der">, + ): Promise<{ + publicKey: string; + privateKey: Buffer; + }>; + function __promisify__( + type: "ec", + options: ECKeyPairOptions<"der", "pem">, + ): Promise<{ + publicKey: Buffer; + privateKey: string; + }>; + function __promisify__( + type: "ec", + options: ECKeyPairOptions<"der", "der">, + ): Promise<{ + publicKey: Buffer; + privateKey: Buffer; + }>; + function __promisify__(type: "ec", options: ECKeyPairKeyObjectOptions): Promise; + function __promisify__( + type: "ed25519", + options: ED25519KeyPairOptions<"pem", "pem">, + ): Promise<{ + publicKey: string; + privateKey: string; + }>; + function __promisify__( + type: "ed25519", + options: ED25519KeyPairOptions<"pem", "der">, + ): Promise<{ + publicKey: string; + privateKey: Buffer; + }>; + function __promisify__( + type: "ed25519", + options: ED25519KeyPairOptions<"der", "pem">, + ): Promise<{ + publicKey: Buffer; + privateKey: string; + }>; + function __promisify__( + type: "ed25519", + options: ED25519KeyPairOptions<"der", "der">, + ): Promise<{ + publicKey: Buffer; + privateKey: Buffer; + }>; + function __promisify__( + type: "ed25519", + options?: ED25519KeyPairKeyObjectOptions, + ): Promise; + function __promisify__( + type: "ed448", + options: ED448KeyPairOptions<"pem", "pem">, + ): Promise<{ + publicKey: string; + privateKey: string; + }>; + function __promisify__( + type: "ed448", + options: ED448KeyPairOptions<"pem", "der">, + ): Promise<{ + publicKey: string; + privateKey: Buffer; + }>; + function __promisify__( + type: "ed448", + options: ED448KeyPairOptions<"der", "pem">, + ): Promise<{ + publicKey: Buffer; + privateKey: string; + }>; + function __promisify__( + type: "ed448", + options: ED448KeyPairOptions<"der", "der">, + ): Promise<{ + publicKey: Buffer; + privateKey: Buffer; + }>; + function __promisify__(type: "ed448", options?: ED448KeyPairKeyObjectOptions): Promise; + function __promisify__( + type: "x25519", + options: X25519KeyPairOptions<"pem", "pem">, + ): Promise<{ + publicKey: string; + privateKey: string; + }>; + function __promisify__( + type: "x25519", + options: X25519KeyPairOptions<"pem", "der">, + ): Promise<{ + publicKey: string; + privateKey: Buffer; + }>; + function __promisify__( + type: "x25519", + options: X25519KeyPairOptions<"der", "pem">, + ): Promise<{ + publicKey: Buffer; + privateKey: string; + }>; + function __promisify__( + type: "x25519", + options: X25519KeyPairOptions<"der", "der">, + ): Promise<{ + publicKey: Buffer; + privateKey: Buffer; + }>; + function __promisify__( + type: "x25519", + options?: X25519KeyPairKeyObjectOptions, + ): Promise; + function __promisify__( + type: "x448", + options: X448KeyPairOptions<"pem", "pem">, + ): Promise<{ + publicKey: string; + privateKey: string; + }>; + function __promisify__( + type: "x448", + options: X448KeyPairOptions<"pem", "der">, + ): Promise<{ + publicKey: string; + privateKey: Buffer; + }>; + function __promisify__( + type: "x448", + options: X448KeyPairOptions<"der", "pem">, + ): Promise<{ + publicKey: Buffer; + privateKey: string; + }>; + function __promisify__( + type: "x448", + options: X448KeyPairOptions<"der", "der">, + ): Promise<{ + publicKey: Buffer; + privateKey: Buffer; + }>; + function __promisify__(type: "x448", options?: X448KeyPairKeyObjectOptions): Promise; + } + /** + * Calculates and returns the signature for `data` using the given private key and + * algorithm. If `algorithm` is `null` or `undefined`, then the algorithm is + * dependent upon the key type (especially Ed25519 and Ed448). + * + * If `key` is not a `KeyObject`, this function behaves as if `key` had been + * passed to {@link createPrivateKey}. If it is an object, the following + * additional properties can be passed: + * + * If the `callback` function is provided this function uses libuv's threadpool. + * @since v12.0.0 + */ + function sign( + algorithm: string | null | undefined, + data: NodeJS.ArrayBufferView, + key: KeyLike | SignKeyObjectInput | SignPrivateKeyInput, + ): Buffer; + function sign( + algorithm: string | null | undefined, + data: NodeJS.ArrayBufferView, + key: KeyLike | SignKeyObjectInput | SignPrivateKeyInput, + callback: (error: Error | null, data: Buffer) => void, + ): void; + /** + * Verifies the given signature for `data` using the given key and algorithm. If`algorithm` is `null` or `undefined`, then the algorithm is dependent upon the + * key type (especially Ed25519 and Ed448). + * + * If `key` is not a `KeyObject`, this function behaves as if `key` had been + * passed to {@link createPublicKey}. If it is an object, the following + * additional properties can be passed: + * + * The `signature` argument is the previously calculated signature for the `data`. + * + * Because public keys can be derived from private keys, a private key or a public + * key may be passed for `key`. + * + * If the `callback` function is provided this function uses libuv's threadpool. + * @since v12.0.0 + */ + function verify( + algorithm: string | null | undefined, + data: NodeJS.ArrayBufferView, + key: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput | VerifyJsonWebKeyInput, + signature: NodeJS.ArrayBufferView, + ): boolean; + function verify( + algorithm: string | null | undefined, + data: NodeJS.ArrayBufferView, + key: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput | VerifyJsonWebKeyInput, + signature: NodeJS.ArrayBufferView, + callback: (error: Error | null, result: boolean) => void, + ): void; + /** + * Computes the Diffie-Hellman secret based on a `privateKey` and a `publicKey`. + * Both keys must have the same `asymmetricKeyType`, which must be one of `'dh'`(for Diffie-Hellman), `'ec'` (for ECDH), `'x448'`, or `'x25519'` (for ECDH-ES). + * @since v13.9.0, v12.17.0 + */ + function diffieHellman(options: { privateKey: KeyObject; publicKey: KeyObject }): Buffer; + type CipherMode = "cbc" | "ccm" | "cfb" | "ctr" | "ecb" | "gcm" | "ocb" | "ofb" | "stream" | "wrap" | "xts"; + interface CipherInfoOptions { + /** + * A test key length. + */ + keyLength?: number | undefined; + /** + * A test IV length. + */ + ivLength?: number | undefined; + } + interface CipherInfo { + /** + * The name of the cipher. + */ + name: string; + /** + * The nid of the cipher. + */ + nid: number; + /** + * The block size of the cipher in bytes. + * This property is omitted when mode is 'stream'. + */ + blockSize?: number | undefined; + /** + * The expected or default initialization vector length in bytes. + * This property is omitted if the cipher does not use an initialization vector. + */ + ivLength?: number | undefined; + /** + * The expected or default key length in bytes. + */ + keyLength: number; + /** + * The cipher mode. + */ + mode: CipherMode; + } + /** + * Returns information about a given cipher. + * + * Some ciphers accept variable length keys and initialization vectors. By default, + * the `crypto.getCipherInfo()` method will return the default values for these + * ciphers. To test if a given key length or iv length is acceptable for given + * cipher, use the `keyLength` and `ivLength` options. If the given values are + * unacceptable, `undefined` will be returned. + * @since v15.0.0 + * @param nameOrNid The name or nid of the cipher to query. + */ + function getCipherInfo(nameOrNid: string | number, options?: CipherInfoOptions): CipherInfo | undefined; + /** + * HKDF is a simple key derivation function defined in RFC 5869\. The given `ikm`,`salt` and `info` are used with the `digest` to derive a key of `keylen` bytes. + * + * The supplied `callback` function is called with two arguments: `err` and`derivedKey`. If an errors occurs while deriving the key, `err` will be set; + * otherwise `err` will be `null`. The successfully generated `derivedKey` will + * be passed to the callback as an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). An error will be thrown if any + * of the input arguments specify invalid values or types. + * + * ```js + * import { Buffer } from 'node:buffer'; + * const { + * hkdf, + * } = await import('node:crypto'); + * + * hkdf('sha512', 'key', 'salt', 'info', 64, (err, derivedKey) => { + * if (err) throw err; + * console.log(Buffer.from(derivedKey).toString('hex')); // '24156e2...5391653' + * }); + * ``` + * @since v15.0.0 + * @param digest The digest algorithm to use. + * @param ikm The input keying material. Must be provided but can be zero-length. + * @param salt The salt value. Must be provided but can be zero-length. + * @param info Additional info value. Must be provided but can be zero-length, and cannot be more than 1024 bytes. + * @param keylen The length of the key to generate. Must be greater than 0. The maximum allowable value is `255` times the number of bytes produced by the selected digest function (e.g. `sha512` + * generates 64-byte hashes, making the maximum HKDF output 16320 bytes). + */ + function hkdf( + digest: string, + irm: BinaryLike | KeyObject, + salt: BinaryLike, + info: BinaryLike, + keylen: number, + callback: (err: Error | null, derivedKey: ArrayBuffer) => void, + ): void; + /** + * Provides a synchronous HKDF key derivation function as defined in RFC 5869\. The + * given `ikm`, `salt` and `info` are used with the `digest` to derive a key of`keylen` bytes. + * + * The successfully generated `derivedKey` will be returned as an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). + * + * An error will be thrown if any of the input arguments specify invalid values or + * types, or if the derived key cannot be generated. + * + * ```js + * import { Buffer } from 'node:buffer'; + * const { + * hkdfSync, + * } = await import('node:crypto'); + * + * const derivedKey = hkdfSync('sha512', 'key', 'salt', 'info', 64); + * console.log(Buffer.from(derivedKey).toString('hex')); // '24156e2...5391653' + * ``` + * @since v15.0.0 + * @param digest The digest algorithm to use. + * @param ikm The input keying material. Must be provided but can be zero-length. + * @param salt The salt value. Must be provided but can be zero-length. + * @param info Additional info value. Must be provided but can be zero-length, and cannot be more than 1024 bytes. + * @param keylen The length of the key to generate. Must be greater than 0. The maximum allowable value is `255` times the number of bytes produced by the selected digest function (e.g. `sha512` + * generates 64-byte hashes, making the maximum HKDF output 16320 bytes). + */ + function hkdfSync( + digest: string, + ikm: BinaryLike | KeyObject, + salt: BinaryLike, + info: BinaryLike, + keylen: number, + ): ArrayBuffer; + interface SecureHeapUsage { + /** + * The total allocated secure heap size as specified using the `--secure-heap=n` command-line flag. + */ + total: number; + /** + * The minimum allocation from the secure heap as specified using the `--secure-heap-min` command-line flag. + */ + min: number; + /** + * The total number of bytes currently allocated from the secure heap. + */ + used: number; + /** + * The calculated ratio of `used` to `total` allocated bytes. + */ + utilization: number; + } + /** + * @since v15.6.0 + */ + function secureHeapUsed(): SecureHeapUsage; + interface RandomUUIDOptions { + /** + * By default, to improve performance, + * Node.js will pre-emptively generate and persistently cache enough + * random data to generate up to 128 random UUIDs. To generate a UUID + * without using the cache, set `disableEntropyCache` to `true`. + * + * @default `false` + */ + disableEntropyCache?: boolean | undefined; + } + /** + * Generates a random [RFC 4122](https://www.rfc-editor.org/rfc/rfc4122.txt) version 4 UUID. The UUID is generated using a + * cryptographic pseudorandom number generator. + * @since v15.6.0, v14.17.0 + */ + function randomUUID(options?: RandomUUIDOptions): string; + interface X509CheckOptions { + /** + * @default 'always' + */ + subject?: "always" | "default" | "never"; + /** + * @default true + */ + wildcards?: boolean; + /** + * @default true + */ + partialWildcards?: boolean; + /** + * @default false + */ + multiLabelWildcards?: boolean; + /** + * @default false + */ + singleLabelSubdomains?: boolean; + } + /** + * Encapsulates an X509 certificate and provides read-only access to + * its information. + * + * ```js + * const { X509Certificate } = await import('node:crypto'); + * + * const x509 = new X509Certificate('{... pem encoded cert ...}'); + * + * console.log(x509.subject); + * ``` + * @since v15.6.0 + */ + class X509Certificate { + /** + * Will be \`true\` if this is a Certificate Authority (CA) certificate. + * @since v15.6.0 + */ + readonly ca: boolean; + /** + * The SHA-1 fingerprint of this certificate. + * + * Because SHA-1 is cryptographically broken and because the security of SHA-1 is + * significantly worse than that of algorithms that are commonly used to sign + * certificates, consider using `x509.fingerprint256` instead. + * @since v15.6.0 + */ + readonly fingerprint: string; + /** + * The SHA-256 fingerprint of this certificate. + * @since v15.6.0 + */ + readonly fingerprint256: string; + /** + * The SHA-512 fingerprint of this certificate. + * + * Because computing the SHA-256 fingerprint is usually faster and because it is + * only half the size of the SHA-512 fingerprint, `x509.fingerprint256` may be + * a better choice. While SHA-512 presumably provides a higher level of security in + * general, the security of SHA-256 matches that of most algorithms that are + * commonly used to sign certificates. + * @since v17.2.0, v16.14.0 + */ + readonly fingerprint512: string; + /** + * The complete subject of this certificate. + * @since v15.6.0 + */ + readonly subject: string; + /** + * The subject alternative name specified for this certificate. + * + * This is a comma-separated list of subject alternative names. Each entry begins + * with a string identifying the kind of the subject alternative name followed by + * a colon and the value associated with the entry. + * + * Earlier versions of Node.js incorrectly assumed that it is safe to split this + * property at the two-character sequence `', '` (see [CVE-2021-44532](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44532)). However, + * both malicious and legitimate certificates can contain subject alternative names + * that include this sequence when represented as a string. + * + * After the prefix denoting the type of the entry, the remainder of each entry + * might be enclosed in quotes to indicate that the value is a JSON string literal. + * For backward compatibility, Node.js only uses JSON string literals within this + * property when necessary to avoid ambiguity. Third-party code should be prepared + * to handle both possible entry formats. + * @since v15.6.0 + */ + readonly subjectAltName: string | undefined; + /** + * A textual representation of the certificate's authority information access + * extension. + * + * This is a line feed separated list of access descriptions. Each line begins with + * the access method and the kind of the access location, followed by a colon and + * the value associated with the access location. + * + * After the prefix denoting the access method and the kind of the access location, + * the remainder of each line might be enclosed in quotes to indicate that the + * value is a JSON string literal. For backward compatibility, Node.js only uses + * JSON string literals within this property when necessary to avoid ambiguity. + * Third-party code should be prepared to handle both possible entry formats. + * @since v15.6.0 + */ + readonly infoAccess: string | undefined; + /** + * An array detailing the key usages for this certificate. + * @since v15.6.0 + */ + readonly keyUsage: string[]; + /** + * The issuer identification included in this certificate. + * @since v15.6.0 + */ + readonly issuer: string; + /** + * The issuer certificate or `undefined` if the issuer certificate is not + * available. + * @since v15.9.0 + */ + readonly issuerCertificate?: X509Certificate | undefined; + /** + * The public key `KeyObject` for this certificate. + * @since v15.6.0 + */ + readonly publicKey: KeyObject; + /** + * A `Buffer` containing the DER encoding of this certificate. + * @since v15.6.0 + */ + readonly raw: Buffer; + /** + * The serial number of this certificate. + * + * Serial numbers are assigned by certificate authorities and do not uniquely + * identify certificates. Consider using `x509.fingerprint256` as a unique + * identifier instead. + * @since v15.6.0 + */ + readonly serialNumber: string; + /** + * The date/time from which this certificate is considered valid. + * @since v15.6.0 + */ + readonly validFrom: string; + /** + * The date/time until which this certificate is considered valid. + * @since v15.6.0 + */ + readonly validTo: string; + constructor(buffer: BinaryLike); + /** + * Checks whether the certificate matches the given email address. + * + * If the `'subject'` option is undefined or set to `'default'`, the certificate + * subject is only considered if the subject alternative name extension either does + * not exist or does not contain any email addresses. + * + * If the `'subject'` option is set to `'always'` and if the subject alternative + * name extension either does not exist or does not contain a matching email + * address, the certificate subject is considered. + * + * If the `'subject'` option is set to `'never'`, the certificate subject is never + * considered, even if the certificate contains no subject alternative names. + * @since v15.6.0 + * @return Returns `email` if the certificate matches, `undefined` if it does not. + */ + checkEmail(email: string, options?: Pick): string | undefined; + /** + * Checks whether the certificate matches the given host name. + * + * If the certificate matches the given host name, the matching subject name is + * returned. The returned name might be an exact match (e.g., `foo.example.com`) + * or it might contain wildcards (e.g., `*.example.com`). Because host name + * comparisons are case-insensitive, the returned subject name might also differ + * from the given `name` in capitalization. + * + * If the `'subject'` option is undefined or set to `'default'`, the certificate + * subject is only considered if the subject alternative name extension either does + * not exist or does not contain any DNS names. This behavior is consistent with [RFC 2818](https://www.rfc-editor.org/rfc/rfc2818.txt) ("HTTP Over TLS"). + * + * If the `'subject'` option is set to `'always'` and if the subject alternative + * name extension either does not exist or does not contain a matching DNS name, + * the certificate subject is considered. + * + * If the `'subject'` option is set to `'never'`, the certificate subject is never + * considered, even if the certificate contains no subject alternative names. + * @since v15.6.0 + * @return Returns a subject name that matches `name`, or `undefined` if no subject name matches `name`. + */ + checkHost(name: string, options?: X509CheckOptions): string | undefined; + /** + * Checks whether the certificate matches the given IP address (IPv4 or IPv6). + * + * Only [RFC 5280](https://www.rfc-editor.org/rfc/rfc5280.txt) `iPAddress` subject alternative names are considered, and they + * must match the given `ip` address exactly. Other subject alternative names as + * well as the subject field of the certificate are ignored. + * @since v15.6.0 + * @return Returns `ip` if the certificate matches, `undefined` if it does not. + */ + checkIP(ip: string): string | undefined; + /** + * Checks whether this certificate was issued by the given `otherCert`. + * @since v15.6.0 + */ + checkIssued(otherCert: X509Certificate): boolean; + /** + * Checks whether the public key for this certificate is consistent with + * the given private key. + * @since v15.6.0 + * @param privateKey A private key. + */ + checkPrivateKey(privateKey: KeyObject): boolean; + /** + * There is no standard JSON encoding for X509 certificates. The`toJSON()` method returns a string containing the PEM encoded + * certificate. + * @since v15.6.0 + */ + toJSON(): string; + /** + * Returns information about this certificate using the legacy `certificate object` encoding. + * @since v15.6.0 + */ + toLegacyObject(): PeerCertificate; + /** + * Returns the PEM-encoded certificate. + * @since v15.6.0 + */ + toString(): string; + /** + * Verifies that this certificate was signed by the given public key. + * Does not perform any other validation checks on the certificate. + * @since v15.6.0 + * @param publicKey A public key. + */ + verify(publicKey: KeyObject): boolean; + } + type LargeNumberLike = NodeJS.ArrayBufferView | SharedArrayBuffer | ArrayBuffer | bigint; + interface GeneratePrimeOptions { + add?: LargeNumberLike | undefined; + rem?: LargeNumberLike | undefined; + /** + * @default false + */ + safe?: boolean | undefined; + bigint?: boolean | undefined; + } + interface GeneratePrimeOptionsBigInt extends GeneratePrimeOptions { + bigint: true; + } + interface GeneratePrimeOptionsArrayBuffer extends GeneratePrimeOptions { + bigint?: false | undefined; + } + /** + * Generates a pseudorandom prime of `size` bits. + * + * If `options.safe` is `true`, the prime will be a safe prime -- that is,`(prime - 1) / 2` will also be a prime. + * + * The `options.add` and `options.rem` parameters can be used to enforce additional + * requirements, e.g., for Diffie-Hellman: + * + * * If `options.add` and `options.rem` are both set, the prime will satisfy the + * condition that `prime % add = rem`. + * * If only `options.add` is set and `options.safe` is not `true`, the prime will + * satisfy the condition that `prime % add = 1`. + * * If only `options.add` is set and `options.safe` is set to `true`, the prime + * will instead satisfy the condition that `prime % add = 3`. This is necessary + * because `prime % add = 1` for `options.add > 2` would contradict the condition + * enforced by `options.safe`. + * * `options.rem` is ignored if `options.add` is not given. + * + * Both `options.add` and `options.rem` must be encoded as big-endian sequences + * if given as an `ArrayBuffer`, `SharedArrayBuffer`, `TypedArray`, `Buffer`, or`DataView`. + * + * By default, the prime is encoded as a big-endian sequence of octets + * in an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). If the `bigint` option is `true`, then a + * [bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) is provided. + * @since v15.8.0 + * @param size The size (in bits) of the prime to generate. + */ + function generatePrime(size: number, callback: (err: Error | null, prime: ArrayBuffer) => void): void; + function generatePrime( + size: number, + options: GeneratePrimeOptionsBigInt, + callback: (err: Error | null, prime: bigint) => void, + ): void; + function generatePrime( + size: number, + options: GeneratePrimeOptionsArrayBuffer, + callback: (err: Error | null, prime: ArrayBuffer) => void, + ): void; + function generatePrime( + size: number, + options: GeneratePrimeOptions, + callback: (err: Error | null, prime: ArrayBuffer | bigint) => void, + ): void; + /** + * Generates a pseudorandom prime of `size` bits. + * + * If `options.safe` is `true`, the prime will be a safe prime -- that is,`(prime - 1) / 2` will also be a prime. + * + * The `options.add` and `options.rem` parameters can be used to enforce additional + * requirements, e.g., for Diffie-Hellman: + * + * * If `options.add` and `options.rem` are both set, the prime will satisfy the + * condition that `prime % add = rem`. + * * If only `options.add` is set and `options.safe` is not `true`, the prime will + * satisfy the condition that `prime % add = 1`. + * * If only `options.add` is set and `options.safe` is set to `true`, the prime + * will instead satisfy the condition that `prime % add = 3`. This is necessary + * because `prime % add = 1` for `options.add > 2` would contradict the condition + * enforced by `options.safe`. + * * `options.rem` is ignored if `options.add` is not given. + * + * Both `options.add` and `options.rem` must be encoded as big-endian sequences + * if given as an `ArrayBuffer`, `SharedArrayBuffer`, `TypedArray`, `Buffer`, or`DataView`. + * + * By default, the prime is encoded as a big-endian sequence of octets + * in an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). If the `bigint` option is `true`, then a + * [bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) is provided. + * @since v15.8.0 + * @param size The size (in bits) of the prime to generate. + */ + function generatePrimeSync(size: number): ArrayBuffer; + function generatePrimeSync(size: number, options: GeneratePrimeOptionsBigInt): bigint; + function generatePrimeSync(size: number, options: GeneratePrimeOptionsArrayBuffer): ArrayBuffer; + function generatePrimeSync(size: number, options: GeneratePrimeOptions): ArrayBuffer | bigint; + interface CheckPrimeOptions { + /** + * The number of Miller-Rabin probabilistic primality iterations to perform. + * When the value is 0 (zero), a number of checks is used that yields a false positive rate of at most `2**-64` for random input. + * Care must be used when selecting a number of checks. + * Refer to the OpenSSL documentation for the BN_is_prime_ex function nchecks options for more details. + * + * @default 0 + */ + checks?: number | undefined; + } + /** + * Checks the primality of the `candidate`. + * @since v15.8.0 + * @param candidate A possible prime encoded as a sequence of big endian octets of arbitrary length. + */ + function checkPrime(value: LargeNumberLike, callback: (err: Error | null, result: boolean) => void): void; + function checkPrime( + value: LargeNumberLike, + options: CheckPrimeOptions, + callback: (err: Error | null, result: boolean) => void, + ): void; + /** + * Checks the primality of the `candidate`. + * @since v15.8.0 + * @param candidate A possible prime encoded as a sequence of big endian octets of arbitrary length. + * @return `true` if the candidate is a prime with an error probability less than `0.25 ** options.checks`. + */ + function checkPrimeSync(candidate: LargeNumberLike, options?: CheckPrimeOptions): boolean; + /** + * Load and set the `engine` for some or all OpenSSL functions (selected by flags). + * + * `engine` could be either an id or a path to the engine's shared library. + * + * The optional `flags` argument uses `ENGINE_METHOD_ALL` by default. The `flags`is a bit field taking one of or a mix of the following flags (defined in`crypto.constants`): + * + * * `crypto.constants.ENGINE_METHOD_RSA` + * * `crypto.constants.ENGINE_METHOD_DSA` + * * `crypto.constants.ENGINE_METHOD_DH` + * * `crypto.constants.ENGINE_METHOD_RAND` + * * `crypto.constants.ENGINE_METHOD_EC` + * * `crypto.constants.ENGINE_METHOD_CIPHERS` + * * `crypto.constants.ENGINE_METHOD_DIGESTS` + * * `crypto.constants.ENGINE_METHOD_PKEY_METHS` + * * `crypto.constants.ENGINE_METHOD_PKEY_ASN1_METHS` + * * `crypto.constants.ENGINE_METHOD_ALL` + * * `crypto.constants.ENGINE_METHOD_NONE` + * @since v0.11.11 + * @param flags + */ + function setEngine(engine: string, flags?: number): void; + /** + * A convenient alias for {@link webcrypto.getRandomValues}. This + * implementation is not compliant with the Web Crypto spec, to write + * web-compatible code use {@link webcrypto.getRandomValues} instead. + * @since v17.4.0 + * @return Returns `typedArray`. + */ + function getRandomValues(typedArray: T): T; + /** + * A convenient alias for `crypto.webcrypto.subtle`. + * @since v17.4.0 + */ + const subtle: webcrypto.SubtleCrypto; + /** + * An implementation of the Web Crypto API standard. + * + * See the {@link https://nodejs.org/docs/latest/api/webcrypto.html Web Crypto API documentation} for details. + * @since v15.0.0 + */ + const webcrypto: webcrypto.Crypto; + namespace webcrypto { + type BufferSource = ArrayBufferView | ArrayBuffer; + type KeyFormat = "jwk" | "pkcs8" | "raw" | "spki"; + type KeyType = "private" | "public" | "secret"; + type KeyUsage = + | "decrypt" + | "deriveBits" + | "deriveKey" + | "encrypt" + | "sign" + | "unwrapKey" + | "verify" + | "wrapKey"; + type AlgorithmIdentifier = Algorithm | string; + type HashAlgorithmIdentifier = AlgorithmIdentifier; + type NamedCurve = string; + type BigInteger = Uint8Array; + interface AesCbcParams extends Algorithm { + iv: BufferSource; + } + interface AesCtrParams extends Algorithm { + counter: BufferSource; + length: number; + } + interface AesDerivedKeyParams extends Algorithm { + length: number; + } + interface AesGcmParams extends Algorithm { + additionalData?: BufferSource; + iv: BufferSource; + tagLength?: number; + } + interface AesKeyAlgorithm extends KeyAlgorithm { + length: number; + } + interface AesKeyGenParams extends Algorithm { + length: number; + } + interface Algorithm { + name: string; + } + interface EcKeyAlgorithm extends KeyAlgorithm { + namedCurve: NamedCurve; + } + interface EcKeyGenParams extends Algorithm { + namedCurve: NamedCurve; + } + interface EcKeyImportParams extends Algorithm { + namedCurve: NamedCurve; + } + interface EcdhKeyDeriveParams extends Algorithm { + public: CryptoKey; + } + interface EcdsaParams extends Algorithm { + hash: HashAlgorithmIdentifier; + } + interface Ed448Params extends Algorithm { + context?: BufferSource; + } + interface HkdfParams extends Algorithm { + hash: HashAlgorithmIdentifier; + info: BufferSource; + salt: BufferSource; + } + interface HmacImportParams extends Algorithm { + hash: HashAlgorithmIdentifier; + length?: number; + } + interface HmacKeyAlgorithm extends KeyAlgorithm { + hash: KeyAlgorithm; + length: number; + } + interface HmacKeyGenParams extends Algorithm { + hash: HashAlgorithmIdentifier; + length?: number; + } + interface JsonWebKey { + alg?: string; + crv?: string; + d?: string; + dp?: string; + dq?: string; + e?: string; + ext?: boolean; + k?: string; + key_ops?: string[]; + kty?: string; + n?: string; + oth?: RsaOtherPrimesInfo[]; + p?: string; + q?: string; + qi?: string; + use?: string; + x?: string; + y?: string; + } + interface KeyAlgorithm { + name: string; + } + interface Pbkdf2Params extends Algorithm { + hash: HashAlgorithmIdentifier; + iterations: number; + salt: BufferSource; + } + interface RsaHashedImportParams extends Algorithm { + hash: HashAlgorithmIdentifier; + } + interface RsaHashedKeyAlgorithm extends RsaKeyAlgorithm { + hash: KeyAlgorithm; + } + interface RsaHashedKeyGenParams extends RsaKeyGenParams { + hash: HashAlgorithmIdentifier; + } + interface RsaKeyAlgorithm extends KeyAlgorithm { + modulusLength: number; + publicExponent: BigInteger; + } + interface RsaKeyGenParams extends Algorithm { + modulusLength: number; + publicExponent: BigInteger; + } + interface RsaOaepParams extends Algorithm { + label?: BufferSource; + } + interface RsaOtherPrimesInfo { + d?: string; + r?: string; + t?: string; + } + interface RsaPssParams extends Algorithm { + saltLength: number; + } + /** + * Calling `require('node:crypto').webcrypto` returns an instance of the `Crypto` class. + * `Crypto` is a singleton that provides access to the remainder of the crypto API. + * @since v15.0.0 + */ + interface Crypto { + /** + * Provides access to the `SubtleCrypto` API. + * @since v15.0.0 + */ + readonly subtle: SubtleCrypto; + /** + * Generates cryptographically strong random values. + * The given `typedArray` is filled with random values, and a reference to `typedArray` is returned. + * + * The given `typedArray` must be an integer-based instance of {@link NodeJS.TypedArray}, i.e. `Float32Array` and `Float64Array` are not accepted. + * + * An error will be thrown if the given `typedArray` is larger than 65,536 bytes. + * @since v15.0.0 + */ + getRandomValues>(typedArray: T): T; + /** + * Generates a random {@link https://www.rfc-editor.org/rfc/rfc4122.txt RFC 4122} version 4 UUID. + * The UUID is generated using a cryptographic pseudorandom number generator. + * @since v16.7.0 + */ + randomUUID(): string; + CryptoKey: CryptoKeyConstructor; + } + // This constructor throws ILLEGAL_CONSTRUCTOR so it should not be newable. + interface CryptoKeyConstructor { + /** Illegal constructor */ + (_: { readonly _: unique symbol }): never; // Allows instanceof to work but not be callable by the user. + readonly length: 0; + readonly name: "CryptoKey"; + readonly prototype: CryptoKey; + } + /** + * @since v15.0.0 + */ + interface CryptoKey { + /** + * An object detailing the algorithm for which the key can be used along with additional algorithm-specific parameters. + * @since v15.0.0 + */ + readonly algorithm: KeyAlgorithm; + /** + * When `true`, the {@link CryptoKey} can be extracted using either `subtleCrypto.exportKey()` or `subtleCrypto.wrapKey()`. + * @since v15.0.0 + */ + readonly extractable: boolean; + /** + * A string identifying whether the key is a symmetric (`'secret'`) or asymmetric (`'private'` or `'public'`) key. + * @since v15.0.0 + */ + readonly type: KeyType; + /** + * An array of strings identifying the operations for which the key may be used. + * + * The possible usages are: + * - `'encrypt'` - The key may be used to encrypt data. + * - `'decrypt'` - The key may be used to decrypt data. + * - `'sign'` - The key may be used to generate digital signatures. + * - `'verify'` - The key may be used to verify digital signatures. + * - `'deriveKey'` - The key may be used to derive a new key. + * - `'deriveBits'` - The key may be used to derive bits. + * - `'wrapKey'` - The key may be used to wrap another key. + * - `'unwrapKey'` - The key may be used to unwrap another key. + * + * Valid key usages depend on the key algorithm (identified by `cryptokey.algorithm.name`). + * @since v15.0.0 + */ + readonly usages: KeyUsage[]; + } + /** + * The `CryptoKeyPair` is a simple dictionary object with `publicKey` and `privateKey` properties, representing an asymmetric key pair. + * @since v15.0.0 + */ + interface CryptoKeyPair { + /** + * A {@link CryptoKey} whose type will be `'private'`. + * @since v15.0.0 + */ + privateKey: CryptoKey; + /** + * A {@link CryptoKey} whose type will be `'public'`. + * @since v15.0.0 + */ + publicKey: CryptoKey; + } + /** + * @since v15.0.0 + */ + interface SubtleCrypto { + /** + * Using the method and parameters specified in `algorithm` and the keying material provided by `key`, + * `subtle.decrypt()` attempts to decipher the provided `data`. If successful, + * the returned promise will be resolved with an `` containing the plaintext result. + * + * The algorithms currently supported include: + * + * - `'RSA-OAEP'` + * - `'AES-CTR'` + * - `'AES-CBC'` + * - `'AES-GCM'` + * @since v15.0.0 + */ + decrypt( + algorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, + key: CryptoKey, + data: BufferSource, + ): Promise; + /** + * Using the method and parameters specified in `algorithm` and the keying material provided by `baseKey`, + * `subtle.deriveBits()` attempts to generate `length` bits. + * The Node.js implementation requires that when `length` is a number it must be multiple of `8`. + * When `length` is `null` the maximum number of bits for a given algorithm is generated. This is allowed + * for the `'ECDH'`, `'X25519'`, and `'X448'` algorithms. + * If successful, the returned promise will be resolved with an `` containing the generated data. + * + * The algorithms currently supported include: + * + * - `'ECDH'` + * - `'X25519'` + * - `'X448'` + * - `'HKDF'` + * - `'PBKDF2'` + * @since v15.0.0 + */ + deriveBits(algorithm: EcdhKeyDeriveParams, baseKey: CryptoKey, length: number | null): Promise; + deriveBits( + algorithm: AlgorithmIdentifier | HkdfParams | Pbkdf2Params, + baseKey: CryptoKey, + length: number, + ): Promise; + /** + * Using the method and parameters specified in `algorithm`, and the keying material provided by `baseKey`, + * `subtle.deriveKey()` attempts to generate a new ` based on the method and parameters in `derivedKeyAlgorithm`. + * + * Calling `subtle.deriveKey()` is equivalent to calling `subtle.deriveBits()` to generate raw keying material, + * then passing the result into the `subtle.importKey()` method using the `deriveKeyAlgorithm`, `extractable`, and `keyUsages` parameters as input. + * + * The algorithms currently supported include: + * + * - `'ECDH'` + * - `'X25519'` + * - `'X448'` + * - `'HKDF'` + * - `'PBKDF2'` + * @param keyUsages See {@link https://nodejs.org/docs/latest/api/webcrypto.html#cryptokeyusages Key usages}. + * @since v15.0.0 + */ + deriveKey( + algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | HkdfParams | Pbkdf2Params, + baseKey: CryptoKey, + derivedKeyAlgorithm: + | AlgorithmIdentifier + | AesDerivedKeyParams + | HmacImportParams + | HkdfParams + | Pbkdf2Params, + extractable: boolean, + keyUsages: ReadonlyArray, + ): Promise; + /** + * Using the method identified by `algorithm`, `subtle.digest()` attempts to generate a digest of `data`. + * If successful, the returned promise is resolved with an `` containing the computed digest. + * + * If `algorithm` is provided as a ``, it must be one of: + * + * - `'SHA-1'` + * - `'SHA-256'` + * - `'SHA-384'` + * - `'SHA-512'` + * + * If `algorithm` is provided as an ``, it must have a `name` property whose value is one of the above. + * @since v15.0.0 + */ + digest(algorithm: AlgorithmIdentifier, data: BufferSource): Promise; + /** + * Using the method and parameters specified by `algorithm` and the keying material provided by `key`, + * `subtle.encrypt()` attempts to encipher `data`. If successful, + * the returned promise is resolved with an `` containing the encrypted result. + * + * The algorithms currently supported include: + * + * - `'RSA-OAEP'` + * - `'AES-CTR'` + * - `'AES-CBC'` + * - `'AES-GCM'` + * @since v15.0.0 + */ + encrypt( + algorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, + key: CryptoKey, + data: BufferSource, + ): Promise; + /** + * Exports the given key into the specified format, if supported. + * + * If the `` is not extractable, the returned promise will reject. + * + * When `format` is either `'pkcs8'` or `'spki'` and the export is successful, + * the returned promise will be resolved with an `` containing the exported key data. + * + * When `format` is `'jwk'` and the export is successful, the returned promise will be resolved with a + * JavaScript object conforming to the {@link https://tools.ietf.org/html/rfc7517 JSON Web Key} specification. + * @param format Must be one of `'raw'`, `'pkcs8'`, `'spki'`, or `'jwk'`. + * @returns `` containing ``. + * @since v15.0.0 + */ + exportKey(format: "jwk", key: CryptoKey): Promise; + exportKey(format: Exclude, key: CryptoKey): Promise; + /** + * Using the method and parameters provided in `algorithm`, + * `subtle.generateKey()` attempts to generate new keying material. + * Depending the method used, the method may generate either a single `` or a ``. + * + * The `` (public and private key) generating algorithms supported include: + * + * - `'RSASSA-PKCS1-v1_5'` + * - `'RSA-PSS'` + * - `'RSA-OAEP'` + * - `'ECDSA'` + * - `'Ed25519'` + * - `'Ed448'` + * - `'ECDH'` + * - `'X25519'` + * - `'X448'` + * The `` (secret key) generating algorithms supported include: + * + * - `'HMAC'` + * - `'AES-CTR'` + * - `'AES-CBC'` + * - `'AES-GCM'` + * - `'AES-KW'` + * @param keyUsages See {@link https://nodejs.org/docs/latest/api/webcrypto.html#cryptokeyusages Key usages}. + * @since v15.0.0 + */ + generateKey( + algorithm: RsaHashedKeyGenParams | EcKeyGenParams, + extractable: boolean, + keyUsages: ReadonlyArray, + ): Promise; + generateKey( + algorithm: AesKeyGenParams | HmacKeyGenParams | Pbkdf2Params, + extractable: boolean, + keyUsages: ReadonlyArray, + ): Promise; + generateKey( + algorithm: AlgorithmIdentifier, + extractable: boolean, + keyUsages: KeyUsage[], + ): Promise; + /** + * The `subtle.importKey()` method attempts to interpret the provided `keyData` as the given `format` + * to create a `` instance using the provided `algorithm`, `extractable`, and `keyUsages` arguments. + * If the import is successful, the returned promise will be resolved with the created ``. + * + * If importing a `'PBKDF2'` key, `extractable` must be `false`. + * @param format Must be one of `'raw'`, `'pkcs8'`, `'spki'`, or `'jwk'`. + * @param keyUsages See {@link https://nodejs.org/docs/latest/api/webcrypto.html#cryptokeyusages Key usages}. + * @since v15.0.0 + */ + importKey( + format: "jwk", + keyData: JsonWebKey, + algorithm: + | AlgorithmIdentifier + | RsaHashedImportParams + | EcKeyImportParams + | HmacImportParams + | AesKeyAlgorithm, + extractable: boolean, + keyUsages: ReadonlyArray, + ): Promise; + importKey( + format: Exclude, + keyData: BufferSource, + algorithm: + | AlgorithmIdentifier + | RsaHashedImportParams + | EcKeyImportParams + | HmacImportParams + | AesKeyAlgorithm, + extractable: boolean, + keyUsages: KeyUsage[], + ): Promise; + /** + * Using the method and parameters given by `algorithm` and the keying material provided by `key`, + * `subtle.sign()` attempts to generate a cryptographic signature of `data`. If successful, + * the returned promise is resolved with an `` containing the generated signature. + * + * The algorithms currently supported include: + * + * - `'RSASSA-PKCS1-v1_5'` + * - `'RSA-PSS'` + * - `'ECDSA'` + * - `'Ed25519'` + * - `'Ed448'` + * - `'HMAC'` + * @since v15.0.0 + */ + sign( + algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams | Ed448Params, + key: CryptoKey, + data: BufferSource, + ): Promise; + /** + * In cryptography, "wrapping a key" refers to exporting and then encrypting the keying material. + * The `subtle.unwrapKey()` method attempts to decrypt a wrapped key and create a `` instance. + * It is equivalent to calling `subtle.decrypt()` first on the encrypted key data (using the `wrappedKey`, `unwrapAlgo`, and `unwrappingKey` arguments as input) + * then passing the results in to the `subtle.importKey()` method using the `unwrappedKeyAlgo`, `extractable`, and `keyUsages` arguments as inputs. + * If successful, the returned promise is resolved with a `` object. + * + * The wrapping algorithms currently supported include: + * + * - `'RSA-OAEP'` + * - `'AES-CTR'` + * - `'AES-CBC'` + * - `'AES-GCM'` + * - `'AES-KW'` + * + * The unwrapped key algorithms supported include: + * + * - `'RSASSA-PKCS1-v1_5'` + * - `'RSA-PSS'` + * - `'RSA-OAEP'` + * - `'ECDSA'` + * - `'Ed25519'` + * - `'Ed448'` + * - `'ECDH'` + * - `'X25519'` + * - `'X448'` + * - `'HMAC'` + * - `'AES-CTR'` + * - `'AES-CBC'` + * - `'AES-GCM'` + * - `'AES-KW'` + * @param format Must be one of `'raw'`, `'pkcs8'`, `'spki'`, or `'jwk'`. + * @param keyUsages See {@link https://nodejs.org/docs/latest/api/webcrypto.html#cryptokeyusages Key usages}. + * @since v15.0.0 + */ + unwrapKey( + format: KeyFormat, + wrappedKey: BufferSource, + unwrappingKey: CryptoKey, + unwrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, + unwrappedKeyAlgorithm: + | AlgorithmIdentifier + | RsaHashedImportParams + | EcKeyImportParams + | HmacImportParams + | AesKeyAlgorithm, + extractable: boolean, + keyUsages: KeyUsage[], + ): Promise; + /** + * Using the method and parameters given in `algorithm` and the keying material provided by `key`, + * `subtle.verify()` attempts to verify that `signature` is a valid cryptographic signature of `data`. + * The returned promise is resolved with either `true` or `false`. + * + * The algorithms currently supported include: + * + * - `'RSASSA-PKCS1-v1_5'` + * - `'RSA-PSS'` + * - `'ECDSA'` + * - `'Ed25519'` + * - `'Ed448'` + * - `'HMAC'` + * @since v15.0.0 + */ + verify( + algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams | Ed448Params, + key: CryptoKey, + signature: BufferSource, + data: BufferSource, + ): Promise; + /** + * In cryptography, "wrapping a key" refers to exporting and then encrypting the keying material. + * The `subtle.wrapKey()` method exports the keying material into the format identified by `format`, + * then encrypts it using the method and parameters specified by `wrapAlgo` and the keying material provided by `wrappingKey`. + * It is the equivalent to calling `subtle.exportKey()` using `format` and `key` as the arguments, + * then passing the result to the `subtle.encrypt()` method using `wrappingKey` and `wrapAlgo` as inputs. + * If successful, the returned promise will be resolved with an `` containing the encrypted key data. + * + * The wrapping algorithms currently supported include: + * + * - `'RSA-OAEP'` + * - `'AES-CTR'` + * - `'AES-CBC'` + * - `'AES-GCM'` + * - `'AES-KW'` + * @param format Must be one of `'raw'`, `'pkcs8'`, `'spki'`, or `'jwk'`. + * @since v15.0.0 + */ + wrapKey( + format: KeyFormat, + key: CryptoKey, + wrappingKey: CryptoKey, + wrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, + ): Promise; + } + } +} +declare module "node:crypto" { + export * from "crypto"; +} diff --git a/node_modules/@types/node/ts4.8/dgram.d.ts b/node_modules/@types/node/ts4.8/dgram.d.ts new file mode 100644 index 00000000..79cfcd45 --- /dev/null +++ b/node_modules/@types/node/ts4.8/dgram.d.ts @@ -0,0 +1,586 @@ +/** + * The `node:dgram` module provides an implementation of UDP datagram sockets. + * + * ```js + * import dgram from 'node:dgram'; + * + * const server = dgram.createSocket('udp4'); + * + * server.on('error', (err) => { + * console.error(`server error:\n${err.stack}`); + * server.close(); + * }); + * + * server.on('message', (msg, rinfo) => { + * console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`); + * }); + * + * server.on('listening', () => { + * const address = server.address(); + * console.log(`server listening ${address.address}:${address.port}`); + * }); + * + * server.bind(41234); + * // Prints: server listening 0.0.0.0:41234 + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/dgram.js) + */ +declare module "dgram" { + import { AddressInfo } from "node:net"; + import * as dns from "node:dns"; + import { Abortable, EventEmitter } from "node:events"; + interface RemoteInfo { + address: string; + family: "IPv4" | "IPv6"; + port: number; + size: number; + } + interface BindOptions { + port?: number | undefined; + address?: string | undefined; + exclusive?: boolean | undefined; + fd?: number | undefined; + } + type SocketType = "udp4" | "udp6"; + interface SocketOptions extends Abortable { + type: SocketType; + reuseAddr?: boolean | undefined; + /** + * @default false + */ + ipv6Only?: boolean | undefined; + recvBufferSize?: number | undefined; + sendBufferSize?: number | undefined; + lookup?: + | (( + hostname: string, + options: dns.LookupOneOptions, + callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void, + ) => void) + | undefined; + } + /** + * Creates a `dgram.Socket` object. Once the socket is created, calling `socket.bind()` will instruct the socket to begin listening for datagram + * messages. When `address` and `port` are not passed to `socket.bind()` the + * method will bind the socket to the "all interfaces" address on a random port + * (it does the right thing for both `udp4` and `udp6` sockets). The bound address + * and port can be retrieved using `socket.address().address` and `socket.address().port`. + * + * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.close()` on the socket: + * + * ```js + * const controller = new AbortController(); + * const { signal } = controller; + * const server = dgram.createSocket({ type: 'udp4', signal }); + * server.on('message', (msg, rinfo) => { + * console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`); + * }); + * // Later, when you want to close the server. + * controller.abort(); + * ``` + * @since v0.11.13 + * @param options Available options are: + * @param callback Attached as a listener for `'message'` events. Optional. + */ + function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; + function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket; + /** + * Encapsulates the datagram functionality. + * + * New instances of `dgram.Socket` are created using {@link createSocket}. + * The `new` keyword is not to be used to create `dgram.Socket` instances. + * @since v0.1.99 + */ + class Socket extends EventEmitter { + /** + * Tells the kernel to join a multicast group at the given `multicastAddress` and`multicastInterface` using the `IP_ADD_MEMBERSHIP` socket option. If the`multicastInterface` argument is not + * specified, the operating system will choose + * one interface and will add membership to it. To add membership to every + * available interface, call `addMembership` multiple times, once per interface. + * + * When called on an unbound socket, this method will implicitly bind to a random + * port, listening on all interfaces. + * + * When sharing a UDP socket across multiple `cluster` workers, the`socket.addMembership()` function must be called only once or an`EADDRINUSE` error will occur: + * + * ```js + * import cluster from 'node:cluster'; + * import dgram from 'node:dgram'; + * + * if (cluster.isPrimary) { + * cluster.fork(); // Works ok. + * cluster.fork(); // Fails with EADDRINUSE. + * } else { + * const s = dgram.createSocket('udp4'); + * s.bind(1234, () => { + * s.addMembership('224.0.0.114'); + * }); + * } + * ``` + * @since v0.6.9 + */ + addMembership(multicastAddress: string, multicastInterface?: string): void; + /** + * Returns an object containing the address information for a socket. + * For UDP sockets, this object will contain `address`, `family`, and `port`properties. + * + * This method throws `EBADF` if called on an unbound socket. + * @since v0.1.99 + */ + address(): AddressInfo; + /** + * For UDP sockets, causes the `dgram.Socket` to listen for datagram + * messages on a named `port` and optional `address`. If `port` is not + * specified or is `0`, the operating system will attempt to bind to a + * random port. If `address` is not specified, the operating system will + * attempt to listen on all addresses. Once binding is complete, a`'listening'` event is emitted and the optional `callback` function is + * called. + * + * Specifying both a `'listening'` event listener and passing a`callback` to the `socket.bind()` method is not harmful but not very + * useful. + * + * A bound datagram socket keeps the Node.js process running to receive + * datagram messages. + * + * If binding fails, an `'error'` event is generated. In rare case (e.g. + * attempting to bind with a closed socket), an `Error` may be thrown. + * + * Example of a UDP server listening on port 41234: + * + * ```js + * import dgram from 'node:dgram'; + * + * const server = dgram.createSocket('udp4'); + * + * server.on('error', (err) => { + * console.error(`server error:\n${err.stack}`); + * server.close(); + * }); + * + * server.on('message', (msg, rinfo) => { + * console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`); + * }); + * + * server.on('listening', () => { + * const address = server.address(); + * console.log(`server listening ${address.address}:${address.port}`); + * }); + * + * server.bind(41234); + * // Prints: server listening 0.0.0.0:41234 + * ``` + * @since v0.1.99 + * @param callback with no parameters. Called when binding is complete. + */ + bind(port?: number, address?: string, callback?: () => void): this; + bind(port?: number, callback?: () => void): this; + bind(callback?: () => void): this; + bind(options: BindOptions, callback?: () => void): this; + /** + * Close the underlying socket and stop listening for data on it. If a callback is + * provided, it is added as a listener for the `'close'` event. + * @since v0.1.99 + * @param callback Called when the socket has been closed. + */ + close(callback?: () => void): this; + /** + * Associates the `dgram.Socket` to a remote address and port. Every + * message sent by this handle is automatically sent to that destination. Also, + * the socket will only receive messages from that remote peer. + * Trying to call `connect()` on an already connected socket will result + * in an `ERR_SOCKET_DGRAM_IS_CONNECTED` exception. If `address` is not + * provided, `'127.0.0.1'` (for `udp4` sockets) or `'::1'` (for `udp6` sockets) + * will be used by default. Once the connection is complete, a `'connect'` event + * is emitted and the optional `callback` function is called. In case of failure, + * the `callback` is called or, failing this, an `'error'` event is emitted. + * @since v12.0.0 + * @param callback Called when the connection is completed or on error. + */ + connect(port: number, address?: string, callback?: () => void): void; + connect(port: number, callback: () => void): void; + /** + * A synchronous function that disassociates a connected `dgram.Socket` from + * its remote address. Trying to call `disconnect()` on an unbound or already + * disconnected socket will result in an `ERR_SOCKET_DGRAM_NOT_CONNECTED` exception. + * @since v12.0.0 + */ + disconnect(): void; + /** + * Instructs the kernel to leave a multicast group at `multicastAddress` using the`IP_DROP_MEMBERSHIP` socket option. This method is automatically called by the + * kernel when the socket is closed or the process terminates, so most apps will + * never have reason to call this. + * + * If `multicastInterface` is not specified, the operating system will attempt to + * drop membership on all valid interfaces. + * @since v0.6.9 + */ + dropMembership(multicastAddress: string, multicastInterface?: string): void; + /** + * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket. + * @since v8.7.0 + * @return the `SO_RCVBUF` socket receive buffer size in bytes. + */ + getRecvBufferSize(): number; + /** + * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket. + * @since v8.7.0 + * @return the `SO_SNDBUF` socket send buffer size in bytes. + */ + getSendBufferSize(): number; + /** + * By default, binding a socket will cause it to block the Node.js process from + * exiting as long as the socket is open. The `socket.unref()` method can be used + * to exclude the socket from the reference counting that keeps the Node.js + * process active. The `socket.ref()` method adds the socket back to the reference + * counting and restores the default behavior. + * + * Calling `socket.ref()` multiples times will have no additional effect. + * + * The `socket.ref()` method returns a reference to the socket so calls can be + * chained. + * @since v0.9.1 + */ + ref(): this; + /** + * Returns an object containing the `address`, `family`, and `port` of the remote + * endpoint. This method throws an `ERR_SOCKET_DGRAM_NOT_CONNECTED` exception + * if the socket is not connected. + * @since v12.0.0 + */ + remoteAddress(): AddressInfo; + /** + * Broadcasts a datagram on the socket. + * For connectionless sockets, the destination `port` and `address` must be + * specified. Connected sockets, on the other hand, will use their associated + * remote endpoint, so the `port` and `address` arguments must not be set. + * + * The `msg` argument contains the message to be sent. + * Depending on its type, different behavior can apply. If `msg` is a `Buffer`, + * any `TypedArray` or a `DataView`, + * the `offset` and `length` specify the offset within the `Buffer` where the + * message begins and the number of bytes in the message, respectively. + * If `msg` is a `String`, then it is automatically converted to a `Buffer`with `'utf8'` encoding. With messages that + * contain multi-byte characters, `offset` and `length` will be calculated with + * respect to `byte length` and not the character position. + * If `msg` is an array, `offset` and `length` must not be specified. + * + * The `address` argument is a string. If the value of `address` is a host name, + * DNS will be used to resolve the address of the host. If `address` is not + * provided or otherwise nullish, `'127.0.0.1'` (for `udp4` sockets) or `'::1'`(for `udp6` sockets) will be used by default. + * + * If the socket has not been previously bound with a call to `bind`, the socket + * is assigned a random port number and is bound to the "all interfaces" address + * (`'0.0.0.0'` for `udp4` sockets, `'::0'` for `udp6` sockets.) + * + * An optional `callback` function may be specified to as a way of reporting + * DNS errors or for determining when it is safe to reuse the `buf` object. + * DNS lookups delay the time to send for at least one tick of the + * Node.js event loop. + * + * The only way to know for sure that the datagram has been sent is by using a`callback`. If an error occurs and a `callback` is given, the error will be + * passed as the first argument to the `callback`. If a `callback` is not given, + * the error is emitted as an `'error'` event on the `socket` object. + * + * Offset and length are optional but both _must_ be set if either are used. + * They are supported only when the first argument is a `Buffer`, a `TypedArray`, + * or a `DataView`. + * + * This method throws `ERR_SOCKET_BAD_PORT` if called on an unbound socket. + * + * Example of sending a UDP packet to a port on `localhost`; + * + * ```js + * import dgram from 'node:dgram'; + * import { Buffer } from 'node:buffer'; + * + * const message = Buffer.from('Some bytes'); + * const client = dgram.createSocket('udp4'); + * client.send(message, 41234, 'localhost', (err) => { + * client.close(); + * }); + * ``` + * + * Example of sending a UDP packet composed of multiple buffers to a port on`127.0.0.1`; + * + * ```js + * import dgram from 'node:dgram'; + * import { Buffer } from 'node:buffer'; + * + * const buf1 = Buffer.from('Some '); + * const buf2 = Buffer.from('bytes'); + * const client = dgram.createSocket('udp4'); + * client.send([buf1, buf2], 41234, (err) => { + * client.close(); + * }); + * ``` + * + * Sending multiple buffers might be faster or slower depending on the + * application and operating system. Run benchmarks to + * determine the optimal strategy on a case-by-case basis. Generally speaking, + * however, sending multiple buffers is faster. + * + * Example of sending a UDP packet using a socket connected to a port on`localhost`: + * + * ```js + * import dgram from 'node:dgram'; + * import { Buffer } from 'node:buffer'; + * + * const message = Buffer.from('Some bytes'); + * const client = dgram.createSocket('udp4'); + * client.connect(41234, 'localhost', (err) => { + * client.send(message, (err) => { + * client.close(); + * }); + * }); + * ``` + * @since v0.1.99 + * @param msg Message to be sent. + * @param offset Offset in the buffer where the message starts. + * @param length Number of bytes in the message. + * @param port Destination port. + * @param address Destination host name or IP address. + * @param callback Called when the message has been sent. + */ + send( + msg: string | Uint8Array | ReadonlyArray, + port?: number, + address?: string, + callback?: (error: Error | null, bytes: number) => void, + ): void; + send( + msg: string | Uint8Array | ReadonlyArray, + port?: number, + callback?: (error: Error | null, bytes: number) => void, + ): void; + send( + msg: string | Uint8Array | ReadonlyArray, + callback?: (error: Error | null, bytes: number) => void, + ): void; + send( + msg: string | Uint8Array, + offset: number, + length: number, + port?: number, + address?: string, + callback?: (error: Error | null, bytes: number) => void, + ): void; + send( + msg: string | Uint8Array, + offset: number, + length: number, + port?: number, + callback?: (error: Error | null, bytes: number) => void, + ): void; + send( + msg: string | Uint8Array, + offset: number, + length: number, + callback?: (error: Error | null, bytes: number) => void, + ): void; + /** + * Sets or clears the `SO_BROADCAST` socket option. When set to `true`, UDP + * packets may be sent to a local interface's broadcast address. + * + * This method throws `EBADF` if called on an unbound socket. + * @since v0.6.9 + */ + setBroadcast(flag: boolean): void; + /** + * _All references to scope in this section are referring to [IPv6 Zone Indices](https://en.wikipedia.org/wiki/IPv6_address#Scoped_literal_IPv6_addresses), which are defined by [RFC + * 4007](https://tools.ietf.org/html/rfc4007). In string form, an IP_ + * _with a scope index is written as `'IP%scope'` where scope is an interface name_ + * _or interface number._ + * + * Sets the default outgoing multicast interface of the socket to a chosen + * interface or back to system interface selection. The `multicastInterface` must + * be a valid string representation of an IP from the socket's family. + * + * For IPv4 sockets, this should be the IP configured for the desired physical + * interface. All packets sent to multicast on the socket will be sent on the + * interface determined by the most recent successful use of this call. + * + * For IPv6 sockets, `multicastInterface` should include a scope to indicate the + * interface as in the examples that follow. In IPv6, individual `send` calls can + * also use explicit scope in addresses, so only packets sent to a multicast + * address without specifying an explicit scope are affected by the most recent + * successful use of this call. + * + * This method throws `EBADF` if called on an unbound socket. + * + * #### Example: IPv6 outgoing multicast interface + * + * On most systems, where scope format uses the interface name: + * + * ```js + * const socket = dgram.createSocket('udp6'); + * + * socket.bind(1234, () => { + * socket.setMulticastInterface('::%eth1'); + * }); + * ``` + * + * On Windows, where scope format uses an interface number: + * + * ```js + * const socket = dgram.createSocket('udp6'); + * + * socket.bind(1234, () => { + * socket.setMulticastInterface('::%2'); + * }); + * ``` + * + * #### Example: IPv4 outgoing multicast interface + * + * All systems use an IP of the host on the desired physical interface: + * + * ```js + * const socket = dgram.createSocket('udp4'); + * + * socket.bind(1234, () => { + * socket.setMulticastInterface('10.0.0.2'); + * }); + * ``` + * @since v8.6.0 + */ + setMulticastInterface(multicastInterface: string): void; + /** + * Sets or clears the `IP_MULTICAST_LOOP` socket option. When set to `true`, + * multicast packets will also be received on the local interface. + * + * This method throws `EBADF` if called on an unbound socket. + * @since v0.3.8 + */ + setMulticastLoopback(flag: boolean): boolean; + /** + * Sets the `IP_MULTICAST_TTL` socket option. While TTL generally stands for + * "Time to Live", in this context it specifies the number of IP hops that a + * packet is allowed to travel through, specifically for multicast traffic. Each + * router or gateway that forwards a packet decrements the TTL. If the TTL is + * decremented to 0 by a router, it will not be forwarded. + * + * The `ttl` argument may be between 0 and 255\. The default on most systems is `1`. + * + * This method throws `EBADF` if called on an unbound socket. + * @since v0.3.8 + */ + setMulticastTTL(ttl: number): number; + /** + * Sets the `SO_RCVBUF` socket option. Sets the maximum socket receive buffer + * in bytes. + * + * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket. + * @since v8.7.0 + */ + setRecvBufferSize(size: number): void; + /** + * Sets the `SO_SNDBUF` socket option. Sets the maximum socket send buffer + * in bytes. + * + * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket. + * @since v8.7.0 + */ + setSendBufferSize(size: number): void; + /** + * Sets the `IP_TTL` socket option. While TTL generally stands for "Time to Live", + * in this context it specifies the number of IP hops that a packet is allowed to + * travel through. Each router or gateway that forwards a packet decrements the + * TTL. If the TTL is decremented to 0 by a router, it will not be forwarded. + * Changing TTL values is typically done for network probes or when multicasting. + * + * The `ttl` argument may be between 1 and 255\. The default on most systems + * is 64. + * + * This method throws `EBADF` if called on an unbound socket. + * @since v0.1.101 + */ + setTTL(ttl: number): number; + /** + * By default, binding a socket will cause it to block the Node.js process from + * exiting as long as the socket is open. The `socket.unref()` method can be used + * to exclude the socket from the reference counting that keeps the Node.js + * process active, allowing the process to exit even if the socket is still + * listening. + * + * Calling `socket.unref()` multiple times will have no addition effect. + * + * The `socket.unref()` method returns a reference to the socket so calls can be + * chained. + * @since v0.9.1 + */ + unref(): this; + /** + * Tells the kernel to join a source-specific multicast channel at the given`sourceAddress` and `groupAddress`, using the `multicastInterface` with the`IP_ADD_SOURCE_MEMBERSHIP` socket + * option. If the `multicastInterface` argument + * is not specified, the operating system will choose one interface and will add + * membership to it. To add membership to every available interface, call`socket.addSourceSpecificMembership()` multiple times, once per interface. + * + * When called on an unbound socket, this method will implicitly bind to a random + * port, listening on all interfaces. + * @since v13.1.0, v12.16.0 + */ + addSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void; + /** + * Instructs the kernel to leave a source-specific multicast channel at the given`sourceAddress` and `groupAddress` using the `IP_DROP_SOURCE_MEMBERSHIP`socket option. This method is + * automatically called by the kernel when the + * socket is closed or the process terminates, so most apps will never have + * reason to call this. + * + * If `multicastInterface` is not specified, the operating system will attempt to + * drop membership on all valid interfaces. + * @since v13.1.0, v12.16.0 + */ + dropSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void; + /** + * events.EventEmitter + * 1. close + * 2. connect + * 3. error + * 4. listening + * 5. message + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "connect", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "listening", listener: () => void): this; + addListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "connect"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "listening"): boolean; + emit(event: "message", msg: Buffer, rinfo: RemoteInfo): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "close", listener: () => void): this; + on(event: "connect", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "listening", listener: () => void): this; + on(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "connect", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "listening", listener: () => void): this; + once(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "connect", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "listening", listener: () => void): this; + prependListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "connect", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "listening", listener: () => void): this; + prependOnceListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this; + /** + * Calls `socket.close()` and returns a promise that fulfills when the socket has closed. + * @since v20.5.0 + */ + [Symbol.asyncDispose](): Promise; + } +} +declare module "node:dgram" { + export * from "dgram"; +} diff --git a/node_modules/@types/node/ts4.8/diagnostics_channel.d.ts b/node_modules/@types/node/ts4.8/diagnostics_channel.d.ts new file mode 100644 index 00000000..b02f5917 --- /dev/null +++ b/node_modules/@types/node/ts4.8/diagnostics_channel.d.ts @@ -0,0 +1,191 @@ +/** + * The `node:diagnostics_channel` module provides an API to create named channels + * to report arbitrary message data for diagnostics purposes. + * + * It can be accessed using: + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * ``` + * + * It is intended that a module writer wanting to report diagnostics messages + * will create one or many top-level channels to report messages through. + * Channels may also be acquired at runtime but it is not encouraged + * due to the additional overhead of doing so. Channels may be exported for + * convenience, but as long as the name is known it can be acquired anywhere. + * + * If you intend for your module to produce diagnostics data for others to + * consume it is recommended that you include documentation of what named + * channels are used along with the shape of the message data. Channel names + * should generally include the module name to avoid collisions with data from + * other modules. + * @since v15.1.0, v14.17.0 + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/diagnostics_channel.js) + */ +declare module "diagnostics_channel" { + /** + * Check if there are active subscribers to the named channel. This is helpful if + * the message you want to send might be expensive to prepare. + * + * This API is optional but helpful when trying to publish messages from very + * performance-sensitive code. + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * + * if (diagnostics_channel.hasSubscribers('my-channel')) { + * // There are subscribers, prepare and publish message + * } + * ``` + * @since v15.1.0, v14.17.0 + * @param name The channel name + * @return If there are active subscribers + */ + function hasSubscribers(name: string | symbol): boolean; + /** + * This is the primary entry-point for anyone wanting to publish to a named + * channel. It produces a channel object which is optimized to reduce overhead at + * publish time as much as possible. + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * + * const channel = diagnostics_channel.channel('my-channel'); + * ``` + * @since v15.1.0, v14.17.0 + * @param name The channel name + * @return The named channel object + */ + function channel(name: string | symbol): Channel; + type ChannelListener = (message: unknown, name: string | symbol) => void; + /** + * Register a message handler to subscribe to this channel. This message handler + * will be run synchronously whenever a message is published to the channel. Any + * errors thrown in the message handler will trigger an `'uncaughtException'`. + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * + * diagnostics_channel.subscribe('my-channel', (message, name) => { + * // Received data + * }); + * ``` + * @since v18.7.0, v16.17.0 + * @param name The channel name + * @param onMessage The handler to receive channel messages + */ + function subscribe(name: string | symbol, onMessage: ChannelListener): void; + /** + * Remove a message handler previously registered to this channel with {@link subscribe}. + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * + * function onMessage(message, name) { + * // Received data + * } + * + * diagnostics_channel.subscribe('my-channel', onMessage); + * + * diagnostics_channel.unsubscribe('my-channel', onMessage); + * ``` + * @since v18.7.0, v16.17.0 + * @param name The channel name + * @param onMessage The previous subscribed handler to remove + * @return `true` if the handler was found, `false` otherwise. + */ + function unsubscribe(name: string | symbol, onMessage: ChannelListener): boolean; + /** + * The class `Channel` represents an individual named channel within the data + * pipeline. It is used to track subscribers and to publish messages when there + * are subscribers present. It exists as a separate object to avoid channel + * lookups at publish time, enabling very fast publish speeds and allowing + * for heavy use while incurring very minimal cost. Channels are created with {@link channel}, constructing a channel directly + * with `new Channel(name)` is not supported. + * @since v15.1.0, v14.17.0 + */ + class Channel { + readonly name: string | symbol; + /** + * Check if there are active subscribers to this channel. This is helpful if + * the message you want to send might be expensive to prepare. + * + * This API is optional but helpful when trying to publish messages from very + * performance-sensitive code. + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * + * const channel = diagnostics_channel.channel('my-channel'); + * + * if (channel.hasSubscribers) { + * // There are subscribers, prepare and publish message + * } + * ``` + * @since v15.1.0, v14.17.0 + */ + readonly hasSubscribers: boolean; + private constructor(name: string | symbol); + /** + * Publish a message to any subscribers to the channel. This will trigger + * message handlers synchronously so they will execute within the same context. + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * + * const channel = diagnostics_channel.channel('my-channel'); + * + * channel.publish({ + * some: 'message', + * }); + * ``` + * @since v15.1.0, v14.17.0 + * @param message The message to send to the channel subscribers + */ + publish(message: unknown): void; + /** + * Register a message handler to subscribe to this channel. This message handler + * will be run synchronously whenever a message is published to the channel. Any + * errors thrown in the message handler will trigger an `'uncaughtException'`. + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * + * const channel = diagnostics_channel.channel('my-channel'); + * + * channel.subscribe((message, name) => { + * // Received data + * }); + * ``` + * @since v15.1.0, v14.17.0 + * @deprecated Since v18.7.0,v16.17.0 - Use {@link subscribe(name, onMessage)} + * @param onMessage The handler to receive channel messages + */ + subscribe(onMessage: ChannelListener): void; + /** + * Remove a message handler previously registered to this channel with `channel.subscribe(onMessage)`. + * + * ```js + * import diagnostics_channel from 'node:diagnostics_channel'; + * + * const channel = diagnostics_channel.channel('my-channel'); + * + * function onMessage(message, name) { + * // Received data + * } + * + * channel.subscribe(onMessage); + * + * channel.unsubscribe(onMessage); + * ``` + * @since v15.1.0, v14.17.0 + * @deprecated Since v18.7.0,v16.17.0 - Use {@link unsubscribe(name, onMessage)} + * @param onMessage The previous subscribed handler to remove + * @return `true` if the handler was found, `false` otherwise. + */ + unsubscribe(onMessage: ChannelListener): void; + } +} +declare module "node:diagnostics_channel" { + export * from "diagnostics_channel"; +} diff --git a/node_modules/@types/node/ts4.8/dns.d.ts b/node_modules/@types/node/ts4.8/dns.d.ts new file mode 100644 index 00000000..bef32b17 --- /dev/null +++ b/node_modules/@types/node/ts4.8/dns.d.ts @@ -0,0 +1,809 @@ +/** + * The `node:dns` module enables name resolution. For example, use it to look up IP + * addresses of host names. + * + * Although named for the [Domain Name System (DNS)](https://en.wikipedia.org/wiki/Domain_Name_System), it does not always use the + * DNS protocol for lookups. {@link lookup} uses the operating system + * facilities to perform name resolution. It may not need to perform any network + * communication. To perform name resolution the way other applications on the same + * system do, use {@link lookup}. + * + * ```js + * const dns = require('node:dns'); + * + * dns.lookup('example.org', (err, address, family) => { + * console.log('address: %j family: IPv%s', address, family); + * }); + * // address: "93.184.216.34" family: IPv4 + * ``` + * + * All other functions in the `node:dns` module connect to an actual DNS server to + * perform name resolution. They will always use the network to perform DNS + * queries. These functions do not use the same set of configuration files used by {@link lookup} (e.g. `/etc/hosts`). Use these functions to always perform + * DNS queries, bypassing other name-resolution facilities. + * + * ```js + * const dns = require('node:dns'); + * + * dns.resolve4('archive.org', (err, addresses) => { + * if (err) throw err; + * + * console.log(`addresses: ${JSON.stringify(addresses)}`); + * + * addresses.forEach((a) => { + * dns.reverse(a, (err, hostnames) => { + * if (err) { + * throw err; + * } + * console.log(`reverse for ${a}: ${JSON.stringify(hostnames)}`); + * }); + * }); + * }); + * ``` + * + * See the `Implementation considerations section` for more information. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/dns.js) + */ +declare module "dns" { + import * as dnsPromises from "node:dns/promises"; + // Supported getaddrinfo flags. + export const ADDRCONFIG: number; + export const V4MAPPED: number; + /** + * If `dns.V4MAPPED` is specified, return resolved IPv6 addresses as + * well as IPv4 mapped IPv6 addresses. + */ + export const ALL: number; + export interface LookupOptions { + family?: number | undefined; + hints?: number | undefined; + all?: boolean | undefined; + /** + * @default true + */ + verbatim?: boolean | undefined; + } + export interface LookupOneOptions extends LookupOptions { + all?: false | undefined; + } + export interface LookupAllOptions extends LookupOptions { + all: true; + } + export interface LookupAddress { + address: string; + family: number; + } + /** + * Resolves a host name (e.g. `'nodejs.org'`) into the first found A (IPv4) or + * AAAA (IPv6) record. All `option` properties are optional. If `options` is an + * integer, then it must be `4` or `6` – if `options` is `0` or not provided, then + * IPv4 and IPv6 addresses are both returned if found. + * + * With the `all` option set to `true`, the arguments for `callback` change to`(err, addresses)`, with `addresses` being an array of objects with the + * properties `address` and `family`. + * + * On error, `err` is an `Error` object, where `err.code` is the error code. + * Keep in mind that `err.code` will be set to `'ENOTFOUND'` not only when + * the host name does not exist but also when the lookup fails in other ways + * such as no available file descriptors. + * + * `dns.lookup()` does not necessarily have anything to do with the DNS protocol. + * The implementation uses an operating system facility that can associate names + * with addresses and vice versa. This implementation can have subtle but + * important consequences on the behavior of any Node.js program. Please take some + * time to consult the `Implementation considerations section` before using`dns.lookup()`. + * + * Example usage: + * + * ```js + * const dns = require('node:dns'); + * const options = { + * family: 6, + * hints: dns.ADDRCONFIG | dns.V4MAPPED, + * }; + * dns.lookup('example.com', options, (err, address, family) => + * console.log('address: %j family: IPv%s', address, family)); + * // address: "2606:2800:220:1:248:1893:25c8:1946" family: IPv6 + * + * // When options.all is true, the result will be an Array. + * options.all = true; + * dns.lookup('example.com', options, (err, addresses) => + * console.log('addresses: %j', addresses)); + * // addresses: [{"address":"2606:2800:220:1:248:1893:25c8:1946","family":6}] + * ``` + * + * If this method is invoked as its `util.promisify()` ed version, and `all`is not set to `true`, it returns a `Promise` for an `Object` with `address` and`family` properties. + * @since v0.1.90 + */ + export function lookup( + hostname: string, + family: number, + callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void, + ): void; + export function lookup( + hostname: string, + options: LookupOneOptions, + callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void, + ): void; + export function lookup( + hostname: string, + options: LookupAllOptions, + callback: (err: NodeJS.ErrnoException | null, addresses: LookupAddress[]) => void, + ): void; + export function lookup( + hostname: string, + options: LookupOptions, + callback: (err: NodeJS.ErrnoException | null, address: string | LookupAddress[], family: number) => void, + ): void; + export function lookup( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void, + ): void; + export namespace lookup { + function __promisify__(hostname: string, options: LookupAllOptions): Promise; + function __promisify__(hostname: string, options?: LookupOneOptions | number): Promise; + function __promisify__(hostname: string, options: LookupOptions): Promise; + } + /** + * Resolves the given `address` and `port` into a host name and service using + * the operating system's underlying `getnameinfo` implementation. + * + * If `address` is not a valid IP address, a `TypeError` will be thrown. + * The `port` will be coerced to a number. If it is not a legal port, a `TypeError`will be thrown. + * + * On an error, `err` is an `Error` object, where `err.code` is the error code. + * + * ```js + * const dns = require('node:dns'); + * dns.lookupService('127.0.0.1', 22, (err, hostname, service) => { + * console.log(hostname, service); + * // Prints: localhost ssh + * }); + * ``` + * + * If this method is invoked as its `util.promisify()` ed version, it returns a`Promise` for an `Object` with `hostname` and `service` properties. + * @since v0.11.14 + */ + export function lookupService( + address: string, + port: number, + callback: (err: NodeJS.ErrnoException | null, hostname: string, service: string) => void, + ): void; + export namespace lookupService { + function __promisify__( + address: string, + port: number, + ): Promise<{ + hostname: string; + service: string; + }>; + } + export interface ResolveOptions { + ttl: boolean; + } + export interface ResolveWithTtlOptions extends ResolveOptions { + ttl: true; + } + export interface RecordWithTtl { + address: string; + ttl: number; + } + /** @deprecated Use `AnyARecord` or `AnyAaaaRecord` instead. */ + export type AnyRecordWithTtl = AnyARecord | AnyAaaaRecord; + export interface AnyARecord extends RecordWithTtl { + type: "A"; + } + export interface AnyAaaaRecord extends RecordWithTtl { + type: "AAAA"; + } + export interface CaaRecord { + critical: number; + issue?: string | undefined; + issuewild?: string | undefined; + iodef?: string | undefined; + contactemail?: string | undefined; + contactphone?: string | undefined; + } + export interface MxRecord { + priority: number; + exchange: string; + } + export interface AnyMxRecord extends MxRecord { + type: "MX"; + } + export interface NaptrRecord { + flags: string; + service: string; + regexp: string; + replacement: string; + order: number; + preference: number; + } + export interface AnyNaptrRecord extends NaptrRecord { + type: "NAPTR"; + } + export interface SoaRecord { + nsname: string; + hostmaster: string; + serial: number; + refresh: number; + retry: number; + expire: number; + minttl: number; + } + export interface AnySoaRecord extends SoaRecord { + type: "SOA"; + } + export interface SrvRecord { + priority: number; + weight: number; + port: number; + name: string; + } + export interface AnySrvRecord extends SrvRecord { + type: "SRV"; + } + export interface AnyTxtRecord { + type: "TXT"; + entries: string[]; + } + export interface AnyNsRecord { + type: "NS"; + value: string; + } + export interface AnyPtrRecord { + type: "PTR"; + value: string; + } + export interface AnyCnameRecord { + type: "CNAME"; + value: string; + } + export type AnyRecord = + | AnyARecord + | AnyAaaaRecord + | AnyCnameRecord + | AnyMxRecord + | AnyNaptrRecord + | AnyNsRecord + | AnyPtrRecord + | AnySoaRecord + | AnySrvRecord + | AnyTxtRecord; + /** + * Uses the DNS protocol to resolve a host name (e.g. `'nodejs.org'`) into an array + * of the resource records. The `callback` function has arguments`(err, records)`. When successful, `records` will be an array of resource + * records. The type and structure of individual results varies based on `rrtype`: + * + * + * + * On error, `err` is an `Error` object, where `err.code` is one of the `DNS error codes`. + * @since v0.1.27 + * @param hostname Host name to resolve. + * @param [rrtype='A'] Resource record type. + */ + export function resolve( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "A", + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "AAAA", + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "ANY", + callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "CNAME", + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "MX", + callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "NAPTR", + callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "NS", + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "PTR", + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "SOA", + callback: (err: NodeJS.ErrnoException | null, addresses: SoaRecord) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "SRV", + callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: "TXT", + callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void, + ): void; + export function resolve( + hostname: string, + rrtype: string, + callback: ( + err: NodeJS.ErrnoException | null, + addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][] | AnyRecord[], + ) => void, + ): void; + export namespace resolve { + function __promisify__(hostname: string, rrtype?: "A" | "AAAA" | "CNAME" | "NS" | "PTR"): Promise; + function __promisify__(hostname: string, rrtype: "ANY"): Promise; + function __promisify__(hostname: string, rrtype: "MX"): Promise; + function __promisify__(hostname: string, rrtype: "NAPTR"): Promise; + function __promisify__(hostname: string, rrtype: "SOA"): Promise; + function __promisify__(hostname: string, rrtype: "SRV"): Promise; + function __promisify__(hostname: string, rrtype: "TXT"): Promise; + function __promisify__( + hostname: string, + rrtype: string, + ): Promise; + } + /** + * Uses the DNS protocol to resolve a IPv4 addresses (`A` records) for the`hostname`. The `addresses` argument passed to the `callback` function + * will contain an array of IPv4 addresses (e.g.`['74.125.79.104', '74.125.79.105', '74.125.79.106']`). + * @since v0.1.16 + * @param hostname Host name to resolve. + */ + export function resolve4( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export function resolve4( + hostname: string, + options: ResolveWithTtlOptions, + callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void, + ): void; + export function resolve4( + hostname: string, + options: ResolveOptions, + callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void, + ): void; + export namespace resolve4 { + function __promisify__(hostname: string): Promise; + function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise; + function __promisify__(hostname: string, options?: ResolveOptions): Promise; + } + /** + * Uses the DNS protocol to resolve IPv6 addresses (`AAAA` records) for the`hostname`. The `addresses` argument passed to the `callback` function + * will contain an array of IPv6 addresses. + * @since v0.1.16 + * @param hostname Host name to resolve. + */ + export function resolve6( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export function resolve6( + hostname: string, + options: ResolveWithTtlOptions, + callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void, + ): void; + export function resolve6( + hostname: string, + options: ResolveOptions, + callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void, + ): void; + export namespace resolve6 { + function __promisify__(hostname: string): Promise; + function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise; + function __promisify__(hostname: string, options?: ResolveOptions): Promise; + } + /** + * Uses the DNS protocol to resolve `CNAME` records for the `hostname`. The`addresses` argument passed to the `callback` function + * will contain an array of canonical name records available for the `hostname`(e.g. `['bar.example.com']`). + * @since v0.3.2 + */ + export function resolveCname( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export namespace resolveCname { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve `CAA` records for the `hostname`. The`addresses` argument passed to the `callback` function + * will contain an array of certification authority authorization records + * available for the `hostname` (e.g. `[{critical: 0, iodef: 'mailto:pki@example.com'}, {critical: 128, issue: 'pki.example.com'}]`). + * @since v15.0.0, v14.17.0 + */ + export function resolveCaa( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, records: CaaRecord[]) => void, + ): void; + export namespace resolveCaa { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve mail exchange records (`MX` records) for the`hostname`. The `addresses` argument passed to the `callback` function will + * contain an array of objects containing both a `priority` and `exchange`property (e.g. `[{priority: 10, exchange: 'mx.example.com'}, ...]`). + * @since v0.1.27 + */ + export function resolveMx( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void, + ): void; + export namespace resolveMx { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve regular expression-based records (`NAPTR`records) for the `hostname`. The `addresses` argument passed to the `callback`function will contain an array of + * objects with the following properties: + * + * * `flags` + * * `service` + * * `regexp` + * * `replacement` + * * `order` + * * `preference` + * + * ```js + * { + * flags: 's', + * service: 'SIP+D2U', + * regexp: '', + * replacement: '_sip._udp.example.com', + * order: 30, + * preference: 100 + * } + * ``` + * @since v0.9.12 + */ + export function resolveNaptr( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void, + ): void; + export namespace resolveNaptr { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve name server records (`NS` records) for the`hostname`. The `addresses` argument passed to the `callback` function will + * contain an array of name server records available for `hostname`(e.g. `['ns1.example.com', 'ns2.example.com']`). + * @since v0.1.90 + */ + export function resolveNs( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export namespace resolveNs { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve pointer records (`PTR` records) for the`hostname`. The `addresses` argument passed to the `callback` function will + * be an array of strings containing the reply records. + * @since v6.0.0 + */ + export function resolvePtr( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void, + ): void; + export namespace resolvePtr { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve a start of authority record (`SOA` record) for + * the `hostname`. The `address` argument passed to the `callback` function will + * be an object with the following properties: + * + * * `nsname` + * * `hostmaster` + * * `serial` + * * `refresh` + * * `retry` + * * `expire` + * * `minttl` + * + * ```js + * { + * nsname: 'ns.example.com', + * hostmaster: 'root.example.com', + * serial: 2013101809, + * refresh: 10000, + * retry: 2400, + * expire: 604800, + * minttl: 3600 + * } + * ``` + * @since v0.11.10 + */ + export function resolveSoa( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, address: SoaRecord) => void, + ): void; + export namespace resolveSoa { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve service records (`SRV` records) for the`hostname`. The `addresses` argument passed to the `callback` function will + * be an array of objects with the following properties: + * + * * `priority` + * * `weight` + * * `port` + * * `name` + * + * ```js + * { + * priority: 10, + * weight: 5, + * port: 21223, + * name: 'service.example.com' + * } + * ``` + * @since v0.1.27 + */ + export function resolveSrv( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void, + ): void; + export namespace resolveSrv { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve text queries (`TXT` records) for the`hostname`. The `records` argument passed to the `callback` function is a + * two-dimensional array of the text records available for `hostname` (e.g.`[ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ]`). Each sub-array contains TXT chunks of + * one record. Depending on the use case, these could be either joined together or + * treated separately. + * @since v0.1.27 + */ + export function resolveTxt( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void, + ): void; + export namespace resolveTxt { + function __promisify__(hostname: string): Promise; + } + /** + * Uses the DNS protocol to resolve all records (also known as `ANY` or `*` query). + * The `ret` argument passed to the `callback` function will be an array containing + * various types of records. Each object has a property `type` that indicates the + * type of the current record. And depending on the `type`, additional properties + * will be present on the object: + * + * + * + * Here is an example of the `ret` object passed to the callback: + * + * ```js + * [ { type: 'A', address: '127.0.0.1', ttl: 299 }, + * { type: 'CNAME', value: 'example.com' }, + * { type: 'MX', exchange: 'alt4.aspmx.l.example.com', priority: 50 }, + * { type: 'NS', value: 'ns1.example.com' }, + * { type: 'TXT', entries: [ 'v=spf1 include:_spf.example.com ~all' ] }, + * { type: 'SOA', + * nsname: 'ns1.example.com', + * hostmaster: 'admin.example.com', + * serial: 156696742, + * refresh: 900, + * retry: 900, + * expire: 1800, + * minttl: 60 } ] + * ``` + * + * DNS server operators may choose not to respond to `ANY`queries. It may be better to call individual methods like {@link resolve4},{@link resolveMx}, and so on. For more details, see [RFC + * 8482](https://tools.ietf.org/html/rfc8482). + */ + export function resolveAny( + hostname: string, + callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void, + ): void; + export namespace resolveAny { + function __promisify__(hostname: string): Promise; + } + /** + * Performs a reverse DNS query that resolves an IPv4 or IPv6 address to an + * array of host names. + * + * On error, `err` is an `Error` object, where `err.code` is + * one of the `DNS error codes`. + * @since v0.1.16 + */ + export function reverse( + ip: string, + callback: (err: NodeJS.ErrnoException | null, hostnames: string[]) => void, + ): void; + /** + * Get the default value for `verbatim` in {@link lookup} and `dnsPromises.lookup()`. The value could be: + * + * * `ipv4first`: for `verbatim` defaulting to `false`. + * * `verbatim`: for `verbatim` defaulting to `true`. + * @since v20.1.0 + */ + export function getDefaultResultOrder(): "ipv4first" | "verbatim"; + /** + * Sets the IP address and port of servers to be used when performing DNS + * resolution. The `servers` argument is an array of [RFC 5952](https://tools.ietf.org/html/rfc5952#section-6) formatted + * addresses. If the port is the IANA default DNS port (53) it can be omitted. + * + * ```js + * dns.setServers([ + * '4.4.4.4', + * '[2001:4860:4860::8888]', + * '4.4.4.4:1053', + * '[2001:4860:4860::8888]:1053', + * ]); + * ``` + * + * An error will be thrown if an invalid address is provided. + * + * The `dns.setServers()` method must not be called while a DNS query is in + * progress. + * + * The {@link setServers} method affects only {@link resolve},`dns.resolve*()` and {@link reverse} (and specifically _not_ {@link lookup}). + * + * This method works much like [resolve.conf](https://man7.org/linux/man-pages/man5/resolv.conf.5.html). + * That is, if attempting to resolve with the first server provided results in a`NOTFOUND` error, the `resolve()` method will _not_ attempt to resolve with + * subsequent servers provided. Fallback DNS servers will only be used if the + * earlier ones time out or result in some other error. + * @since v0.11.3 + * @param servers array of `RFC 5952` formatted addresses + */ + export function setServers(servers: ReadonlyArray): void; + /** + * Returns an array of IP address strings, formatted according to [RFC 5952](https://tools.ietf.org/html/rfc5952#section-6), + * that are currently configured for DNS resolution. A string will include a port + * section if a custom port is used. + * + * ```js + * [ + * '4.4.4.4', + * '2001:4860:4860::8888', + * '4.4.4.4:1053', + * '[2001:4860:4860::8888]:1053', + * ] + * ``` + * @since v0.11.3 + */ + export function getServers(): string[]; + /** + * Set the default value of `verbatim` in {@link lookup} and `dnsPromises.lookup()`. The value could be: + * + * * `ipv4first`: sets default `verbatim` `false`. + * * `verbatim`: sets default `verbatim` `true`. + * + * The default is `verbatim` and {@link setDefaultResultOrder} have higher + * priority than `--dns-result-order`. When using `worker threads`,{@link setDefaultResultOrder} from the main thread won't affect the default + * dns orders in workers. + * @since v16.4.0, v14.18.0 + * @param order must be `'ipv4first'` or `'verbatim'`. + */ + export function setDefaultResultOrder(order: "ipv4first" | "verbatim"): void; + // Error codes + export const NODATA: string; + export const FORMERR: string; + export const SERVFAIL: string; + export const NOTFOUND: string; + export const NOTIMP: string; + export const REFUSED: string; + export const BADQUERY: string; + export const BADNAME: string; + export const BADFAMILY: string; + export const BADRESP: string; + export const CONNREFUSED: string; + export const TIMEOUT: string; + export const EOF: string; + export const FILE: string; + export const NOMEM: string; + export const DESTRUCTION: string; + export const BADSTR: string; + export const BADFLAGS: string; + export const NONAME: string; + export const BADHINTS: string; + export const NOTINITIALIZED: string; + export const LOADIPHLPAPI: string; + export const ADDRGETNETWORKPARAMS: string; + export const CANCELLED: string; + export interface ResolverOptions { + timeout?: number | undefined; + /** + * @default 4 + */ + tries?: number; + } + /** + * An independent resolver for DNS requests. + * + * Creating a new resolver uses the default server settings. Setting + * the servers used for a resolver using `resolver.setServers()` does not affect + * other resolvers: + * + * ```js + * const { Resolver } = require('node:dns'); + * const resolver = new Resolver(); + * resolver.setServers(['4.4.4.4']); + * + * // This request will use the server at 4.4.4.4, independent of global settings. + * resolver.resolve4('example.org', (err, addresses) => { + * // ... + * }); + * ``` + * + * The following methods from the `node:dns` module are available: + * + * * `resolver.getServers()` + * * `resolver.resolve()` + * * `resolver.resolve4()` + * * `resolver.resolve6()` + * * `resolver.resolveAny()` + * * `resolver.resolveCaa()` + * * `resolver.resolveCname()` + * * `resolver.resolveMx()` + * * `resolver.resolveNaptr()` + * * `resolver.resolveNs()` + * * `resolver.resolvePtr()` + * * `resolver.resolveSoa()` + * * `resolver.resolveSrv()` + * * `resolver.resolveTxt()` + * * `resolver.reverse()` + * * `resolver.setServers()` + * @since v8.3.0 + */ + export class Resolver { + constructor(options?: ResolverOptions); + /** + * Cancel all outstanding DNS queries made by this resolver. The corresponding + * callbacks will be called with an error with code `ECANCELLED`. + * @since v8.3.0 + */ + cancel(): void; + getServers: typeof getServers; + resolve: typeof resolve; + resolve4: typeof resolve4; + resolve6: typeof resolve6; + resolveAny: typeof resolveAny; + resolveCaa: typeof resolveCaa; + resolveCname: typeof resolveCname; + resolveMx: typeof resolveMx; + resolveNaptr: typeof resolveNaptr; + resolveNs: typeof resolveNs; + resolvePtr: typeof resolvePtr; + resolveSoa: typeof resolveSoa; + resolveSrv: typeof resolveSrv; + resolveTxt: typeof resolveTxt; + reverse: typeof reverse; + /** + * The resolver instance will send its requests from the specified IP address. + * This allows programs to specify outbound interfaces when used on multi-homed + * systems. + * + * If a v4 or v6 address is not specified, it is set to the default and the + * operating system will choose a local address automatically. + * + * The resolver will use the v4 local address when making requests to IPv4 DNS + * servers, and the v6 local address when making requests to IPv6 DNS servers. + * The `rrtype` of resolution requests has no impact on the local address used. + * @since v15.1.0, v14.17.0 + * @param [ipv4='0.0.0.0'] A string representation of an IPv4 address. + * @param [ipv6='::0'] A string representation of an IPv6 address. + */ + setLocalAddress(ipv4?: string, ipv6?: string): void; + setServers: typeof setServers; + } + export { dnsPromises as promises }; +} +declare module "node:dns" { + export * from "dns"; +} diff --git a/node_modules/@types/node/ts4.8/dns/promises.d.ts b/node_modules/@types/node/ts4.8/dns/promises.d.ts new file mode 100644 index 00000000..79d8b075 --- /dev/null +++ b/node_modules/@types/node/ts4.8/dns/promises.d.ts @@ -0,0 +1,417 @@ +/** + * The `dns.promises` API provides an alternative set of asynchronous DNS methods + * that return `Promise` objects rather than using callbacks. The API is accessible + * via `require('node:dns').promises` or `require('node:dns/promises')`. + * @since v10.6.0 + */ +declare module "dns/promises" { + import { + AnyRecord, + CaaRecord, + LookupAddress, + LookupAllOptions, + LookupOneOptions, + LookupOptions, + MxRecord, + NaptrRecord, + RecordWithTtl, + ResolveOptions, + ResolverOptions, + ResolveWithTtlOptions, + SoaRecord, + SrvRecord, + } from "node:dns"; + /** + * Returns an array of IP address strings, formatted according to [RFC 5952](https://tools.ietf.org/html/rfc5952#section-6), + * that are currently configured for DNS resolution. A string will include a port + * section if a custom port is used. + * + * ```js + * [ + * '4.4.4.4', + * '2001:4860:4860::8888', + * '4.4.4.4:1053', + * '[2001:4860:4860::8888]:1053', + * ] + * ``` + * @since v10.6.0 + */ + function getServers(): string[]; + /** + * Resolves a host name (e.g. `'nodejs.org'`) into the first found A (IPv4) or + * AAAA (IPv6) record. All `option` properties are optional. If `options` is an + * integer, then it must be `4` or `6` – if `options` is not provided, then IPv4 + * and IPv6 addresses are both returned if found. + * + * With the `all` option set to `true`, the `Promise` is resolved with `addresses`being an array of objects with the properties `address` and `family`. + * + * On error, the `Promise` is rejected with an `Error` object, where `err.code`is the error code. + * Keep in mind that `err.code` will be set to `'ENOTFOUND'` not only when + * the host name does not exist but also when the lookup fails in other ways + * such as no available file descriptors. + * + * `dnsPromises.lookup()` does not necessarily have anything to do with the DNS + * protocol. The implementation uses an operating system facility that can + * associate names with addresses and vice versa. This implementation can have + * subtle but important consequences on the behavior of any Node.js program. Please + * take some time to consult the `Implementation considerations section` before + * using `dnsPromises.lookup()`. + * + * Example usage: + * + * ```js + * const dns = require('node:dns'); + * const dnsPromises = dns.promises; + * const options = { + * family: 6, + * hints: dns.ADDRCONFIG | dns.V4MAPPED, + * }; + * + * dnsPromises.lookup('example.com', options).then((result) => { + * console.log('address: %j family: IPv%s', result.address, result.family); + * // address: "2606:2800:220:1:248:1893:25c8:1946" family: IPv6 + * }); + * + * // When options.all is true, the result will be an Array. + * options.all = true; + * dnsPromises.lookup('example.com', options).then((result) => { + * console.log('addresses: %j', result); + * // addresses: [{"address":"2606:2800:220:1:248:1893:25c8:1946","family":6}] + * }); + * ``` + * @since v10.6.0 + */ + function lookup(hostname: string, family: number): Promise; + function lookup(hostname: string, options: LookupOneOptions): Promise; + function lookup(hostname: string, options: LookupAllOptions): Promise; + function lookup(hostname: string, options: LookupOptions): Promise; + function lookup(hostname: string): Promise; + /** + * Resolves the given `address` and `port` into a host name and service using + * the operating system's underlying `getnameinfo` implementation. + * + * If `address` is not a valid IP address, a `TypeError` will be thrown. + * The `port` will be coerced to a number. If it is not a legal port, a `TypeError`will be thrown. + * + * On error, the `Promise` is rejected with an `Error` object, where `err.code`is the error code. + * + * ```js + * const dnsPromises = require('node:dns').promises; + * dnsPromises.lookupService('127.0.0.1', 22).then((result) => { + * console.log(result.hostname, result.service); + * // Prints: localhost ssh + * }); + * ``` + * @since v10.6.0 + */ + function lookupService( + address: string, + port: number, + ): Promise<{ + hostname: string; + service: string; + }>; + /** + * Uses the DNS protocol to resolve a host name (e.g. `'nodejs.org'`) into an array + * of the resource records. When successful, the `Promise` is resolved with an + * array of resource records. The type and structure of individual results vary + * based on `rrtype`: + * + * + * + * On error, the `Promise` is rejected with an `Error` object, where `err.code`is one of the `DNS error codes`. + * @since v10.6.0 + * @param hostname Host name to resolve. + * @param [rrtype='A'] Resource record type. + */ + function resolve(hostname: string): Promise; + function resolve(hostname: string, rrtype: "A"): Promise; + function resolve(hostname: string, rrtype: "AAAA"): Promise; + function resolve(hostname: string, rrtype: "ANY"): Promise; + function resolve(hostname: string, rrtype: "CAA"): Promise; + function resolve(hostname: string, rrtype: "CNAME"): Promise; + function resolve(hostname: string, rrtype: "MX"): Promise; + function resolve(hostname: string, rrtype: "NAPTR"): Promise; + function resolve(hostname: string, rrtype: "NS"): Promise; + function resolve(hostname: string, rrtype: "PTR"): Promise; + function resolve(hostname: string, rrtype: "SOA"): Promise; + function resolve(hostname: string, rrtype: "SRV"): Promise; + function resolve(hostname: string, rrtype: "TXT"): Promise; + function resolve( + hostname: string, + rrtype: string, + ): Promise; + /** + * Uses the DNS protocol to resolve IPv4 addresses (`A` records) for the`hostname`. On success, the `Promise` is resolved with an array of IPv4 + * addresses (e.g. `['74.125.79.104', '74.125.79.105', '74.125.79.106']`). + * @since v10.6.0 + * @param hostname Host name to resolve. + */ + function resolve4(hostname: string): Promise; + function resolve4(hostname: string, options: ResolveWithTtlOptions): Promise; + function resolve4(hostname: string, options: ResolveOptions): Promise; + /** + * Uses the DNS protocol to resolve IPv6 addresses (`AAAA` records) for the`hostname`. On success, the `Promise` is resolved with an array of IPv6 + * addresses. + * @since v10.6.0 + * @param hostname Host name to resolve. + */ + function resolve6(hostname: string): Promise; + function resolve6(hostname: string, options: ResolveWithTtlOptions): Promise; + function resolve6(hostname: string, options: ResolveOptions): Promise; + /** + * Uses the DNS protocol to resolve all records (also known as `ANY` or `*` query). + * On success, the `Promise` is resolved with an array containing various types of + * records. Each object has a property `type` that indicates the type of the + * current record. And depending on the `type`, additional properties will be + * present on the object: + * + * + * + * Here is an example of the result object: + * + * ```js + * [ { type: 'A', address: '127.0.0.1', ttl: 299 }, + * { type: 'CNAME', value: 'example.com' }, + * { type: 'MX', exchange: 'alt4.aspmx.l.example.com', priority: 50 }, + * { type: 'NS', value: 'ns1.example.com' }, + * { type: 'TXT', entries: [ 'v=spf1 include:_spf.example.com ~all' ] }, + * { type: 'SOA', + * nsname: 'ns1.example.com', + * hostmaster: 'admin.example.com', + * serial: 156696742, + * refresh: 900, + * retry: 900, + * expire: 1800, + * minttl: 60 } ] + * ``` + * @since v10.6.0 + */ + function resolveAny(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve `CAA` records for the `hostname`. On success, + * the `Promise` is resolved with an array of objects containing available + * certification authority authorization records available for the `hostname`(e.g. `[{critical: 0, iodef: 'mailto:pki@example.com'},{critical: 128, issue: 'pki.example.com'}]`). + * @since v15.0.0, v14.17.0 + */ + function resolveCaa(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve `CNAME` records for the `hostname`. On success, + * the `Promise` is resolved with an array of canonical name records available for + * the `hostname` (e.g. `['bar.example.com']`). + * @since v10.6.0 + */ + function resolveCname(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve mail exchange records (`MX` records) for the`hostname`. On success, the `Promise` is resolved with an array of objects + * containing both a `priority` and `exchange` property (e.g.`[{priority: 10, exchange: 'mx.example.com'}, ...]`). + * @since v10.6.0 + */ + function resolveMx(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve regular expression-based records (`NAPTR`records) for the `hostname`. On success, the `Promise` is resolved with an array + * of objects with the following properties: + * + * * `flags` + * * `service` + * * `regexp` + * * `replacement` + * * `order` + * * `preference` + * + * ```js + * { + * flags: 's', + * service: 'SIP+D2U', + * regexp: '', + * replacement: '_sip._udp.example.com', + * order: 30, + * preference: 100 + * } + * ``` + * @since v10.6.0 + */ + function resolveNaptr(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve name server records (`NS` records) for the`hostname`. On success, the `Promise` is resolved with an array of name server + * records available for `hostname` (e.g.`['ns1.example.com', 'ns2.example.com']`). + * @since v10.6.0 + */ + function resolveNs(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve pointer records (`PTR` records) for the`hostname`. On success, the `Promise` is resolved with an array of strings + * containing the reply records. + * @since v10.6.0 + */ + function resolvePtr(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve a start of authority record (`SOA` record) for + * the `hostname`. On success, the `Promise` is resolved with an object with the + * following properties: + * + * * `nsname` + * * `hostmaster` + * * `serial` + * * `refresh` + * * `retry` + * * `expire` + * * `minttl` + * + * ```js + * { + * nsname: 'ns.example.com', + * hostmaster: 'root.example.com', + * serial: 2013101809, + * refresh: 10000, + * retry: 2400, + * expire: 604800, + * minttl: 3600 + * } + * ``` + * @since v10.6.0 + */ + function resolveSoa(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve service records (`SRV` records) for the`hostname`. On success, the `Promise` is resolved with an array of objects with + * the following properties: + * + * * `priority` + * * `weight` + * * `port` + * * `name` + * + * ```js + * { + * priority: 10, + * weight: 5, + * port: 21223, + * name: 'service.example.com' + * } + * ``` + * @since v10.6.0 + */ + function resolveSrv(hostname: string): Promise; + /** + * Uses the DNS protocol to resolve text queries (`TXT` records) for the`hostname`. On success, the `Promise` is resolved with a two-dimensional array + * of the text records available for `hostname` (e.g.`[ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ]`). Each sub-array contains TXT chunks of + * one record. Depending on the use case, these could be either joined together or + * treated separately. + * @since v10.6.0 + */ + function resolveTxt(hostname: string): Promise; + /** + * Performs a reverse DNS query that resolves an IPv4 or IPv6 address to an + * array of host names. + * + * On error, the `Promise` is rejected with an `Error` object, where `err.code`is one of the `DNS error codes`. + * @since v10.6.0 + */ + function reverse(ip: string): Promise; + /** + * Sets the IP address and port of servers to be used when performing DNS + * resolution. The `servers` argument is an array of [RFC 5952](https://tools.ietf.org/html/rfc5952#section-6) formatted + * addresses. If the port is the IANA default DNS port (53) it can be omitted. + * + * ```js + * dnsPromises.setServers([ + * '4.4.4.4', + * '[2001:4860:4860::8888]', + * '4.4.4.4:1053', + * '[2001:4860:4860::8888]:1053', + * ]); + * ``` + * + * An error will be thrown if an invalid address is provided. + * + * The `dnsPromises.setServers()` method must not be called while a DNS query is in + * progress. + * + * This method works much like [resolve.conf](https://man7.org/linux/man-pages/man5/resolv.conf.5.html). + * That is, if attempting to resolve with the first server provided results in a`NOTFOUND` error, the `resolve()` method will _not_ attempt to resolve with + * subsequent servers provided. Fallback DNS servers will only be used if the + * earlier ones time out or result in some other error. + * @since v10.6.0 + * @param servers array of `RFC 5952` formatted addresses + */ + function setServers(servers: ReadonlyArray): void; + /** + * Set the default value of `verbatim` in `dns.lookup()` and `dnsPromises.lookup()`. The value could be: + * + * * `ipv4first`: sets default `verbatim` `false`. + * * `verbatim`: sets default `verbatim` `true`. + * + * The default is `verbatim` and `dnsPromises.setDefaultResultOrder()` have + * higher priority than `--dns-result-order`. When using `worker threads`,`dnsPromises.setDefaultResultOrder()` from the main thread won't affect the + * default dns orders in workers. + * @since v16.4.0, v14.18.0 + * @param order must be `'ipv4first'` or `'verbatim'`. + */ + function setDefaultResultOrder(order: "ipv4first" | "verbatim"): void; + /** + * An independent resolver for DNS requests. + * + * Creating a new resolver uses the default server settings. Setting + * the servers used for a resolver using `resolver.setServers()` does not affect + * other resolvers: + * + * ```js + * const { Resolver } = require('node:dns').promises; + * const resolver = new Resolver(); + * resolver.setServers(['4.4.4.4']); + * + * // This request will use the server at 4.4.4.4, independent of global settings. + * resolver.resolve4('example.org').then((addresses) => { + * // ... + * }); + * + * // Alternatively, the same code can be written using async-await style. + * (async function() { + * const addresses = await resolver.resolve4('example.org'); + * })(); + * ``` + * + * The following methods from the `dnsPromises` API are available: + * + * * `resolver.getServers()` + * * `resolver.resolve()` + * * `resolver.resolve4()` + * * `resolver.resolve6()` + * * `resolver.resolveAny()` + * * `resolver.resolveCaa()` + * * `resolver.resolveCname()` + * * `resolver.resolveMx()` + * * `resolver.resolveNaptr()` + * * `resolver.resolveNs()` + * * `resolver.resolvePtr()` + * * `resolver.resolveSoa()` + * * `resolver.resolveSrv()` + * * `resolver.resolveTxt()` + * * `resolver.reverse()` + * * `resolver.setServers()` + * @since v10.6.0 + */ + class Resolver { + constructor(options?: ResolverOptions); + cancel(): void; + getServers: typeof getServers; + resolve: typeof resolve; + resolve4: typeof resolve4; + resolve6: typeof resolve6; + resolveAny: typeof resolveAny; + resolveCaa: typeof resolveCaa; + resolveCname: typeof resolveCname; + resolveMx: typeof resolveMx; + resolveNaptr: typeof resolveNaptr; + resolveNs: typeof resolveNs; + resolvePtr: typeof resolvePtr; + resolveSoa: typeof resolveSoa; + resolveSrv: typeof resolveSrv; + resolveTxt: typeof resolveTxt; + reverse: typeof reverse; + setLocalAddress(ipv4?: string, ipv6?: string): void; + setServers: typeof setServers; + } +} +declare module "node:dns/promises" { + export * from "dns/promises"; +} diff --git a/node_modules/@types/node/ts4.8/dom-events.d.ts b/node_modules/@types/node/ts4.8/dom-events.d.ts new file mode 100644 index 00000000..147a7b65 --- /dev/null +++ b/node_modules/@types/node/ts4.8/dom-events.d.ts @@ -0,0 +1,122 @@ +export {}; // Don't export anything! + +//// DOM-like Events +// NB: The Event / EventTarget / EventListener implementations below were copied +// from lib.dom.d.ts, then edited to reflect Node's documentation at +// https://nodejs.org/api/events.html#class-eventtarget. +// Please read that link to understand important implementation differences. + +// This conditional type will be the existing global Event in a browser, or +// the copy below in a Node environment. +type __Event = typeof globalThis extends { onmessage: any; Event: any } ? {} + : { + /** This is not used in Node.js and is provided purely for completeness. */ + readonly bubbles: boolean; + /** Alias for event.stopPropagation(). This is not used in Node.js and is provided purely for completeness. */ + cancelBubble: () => void; + /** True if the event was created with the cancelable option */ + readonly cancelable: boolean; + /** This is not used in Node.js and is provided purely for completeness. */ + readonly composed: boolean; + /** Returns an array containing the current EventTarget as the only entry or empty if the event is not being dispatched. This is not used in Node.js and is provided purely for completeness. */ + composedPath(): [EventTarget?]; + /** Alias for event.target. */ + readonly currentTarget: EventTarget | null; + /** Is true if cancelable is true and event.preventDefault() has been called. */ + readonly defaultPrevented: boolean; + /** This is not used in Node.js and is provided purely for completeness. */ + readonly eventPhase: 0 | 2; + /** The `AbortSignal` "abort" event is emitted with `isTrusted` set to `true`. The value is `false` in all other cases. */ + readonly isTrusted: boolean; + /** Sets the `defaultPrevented` property to `true` if `cancelable` is `true`. */ + preventDefault(): void; + /** This is not used in Node.js and is provided purely for completeness. */ + returnValue: boolean; + /** Alias for event.target. */ + readonly srcElement: EventTarget | null; + /** Stops the invocation of event listeners after the current one completes. */ + stopImmediatePropagation(): void; + /** This is not used in Node.js and is provided purely for completeness. */ + stopPropagation(): void; + /** The `EventTarget` dispatching the event */ + readonly target: EventTarget | null; + /** The millisecond timestamp when the Event object was created. */ + readonly timeStamp: number; + /** Returns the type of event, e.g. "click", "hashchange", or "submit". */ + readonly type: string; + }; + +// See comment above explaining conditional type +type __EventTarget = typeof globalThis extends { onmessage: any; EventTarget: any } ? {} + : { + /** + * Adds a new handler for the `type` event. Any given `listener` is added only once per `type` and per `capture` option value. + * + * If the `once` option is true, the `listener` is removed after the next time a `type` event is dispatched. + * + * The `capture` option is not used by Node.js in any functional way other than tracking registered event listeners per the `EventTarget` specification. + * Specifically, the `capture` option is used as part of the key when registering a `listener`. + * Any individual `listener` may be added once with `capture = false`, and once with `capture = true`. + */ + addEventListener( + type: string, + listener: EventListener | EventListenerObject, + options?: AddEventListenerOptions | boolean, + ): void; + /** Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise. */ + dispatchEvent(event: Event): boolean; + /** Removes the event listener in target's event listener list with the same type, callback, and options. */ + removeEventListener( + type: string, + listener: EventListener | EventListenerObject, + options?: EventListenerOptions | boolean, + ): void; + }; + +interface EventInit { + bubbles?: boolean; + cancelable?: boolean; + composed?: boolean; +} + +interface EventListenerOptions { + /** Not directly used by Node.js. Added for API completeness. Default: `false`. */ + capture?: boolean; +} + +interface AddEventListenerOptions extends EventListenerOptions { + /** When `true`, the listener is automatically removed when it is first invoked. Default: `false`. */ + once?: boolean; + /** When `true`, serves as a hint that the listener will not call the `Event` object's `preventDefault()` method. Default: false. */ + passive?: boolean; +} + +interface EventListener { + (evt: Event): void; +} + +interface EventListenerObject { + handleEvent(object: Event): void; +} + +import {} from "events"; // Make this an ambient declaration +declare global { + /** An event which takes place in the DOM. */ + interface Event extends __Event {} + var Event: typeof globalThis extends { onmessage: any; Event: infer T } ? T + : { + prototype: __Event; + new(type: string, eventInitDict?: EventInit): __Event; + }; + + /** + * EventTarget is a DOM interface implemented by objects that can + * receive events and may have listeners for them. + */ + interface EventTarget extends __EventTarget {} + var EventTarget: typeof globalThis extends { onmessage: any; EventTarget: infer T } ? T + : { + prototype: __EventTarget; + new(): __EventTarget; + }; +} diff --git a/node_modules/@types/node/ts4.8/domain.d.ts b/node_modules/@types/node/ts4.8/domain.d.ts new file mode 100644 index 00000000..72f17bd8 --- /dev/null +++ b/node_modules/@types/node/ts4.8/domain.d.ts @@ -0,0 +1,170 @@ +/** + * **This module is pending deprecation.** Once a replacement API has been + * finalized, this module will be fully deprecated. Most developers should + * **not** have cause to use this module. Users who absolutely must have + * the functionality that domains provide may rely on it for the time being + * but should expect to have to migrate to a different solution + * in the future. + * + * Domains provide a way to handle multiple different IO operations as a + * single group. If any of the event emitters or callbacks registered to a + * domain emit an `'error'` event, or throw an error, then the domain object + * will be notified, rather than losing the context of the error in the`process.on('uncaughtException')` handler, or causing the program to + * exit immediately with an error code. + * @deprecated Since v1.4.2 - Deprecated + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/domain.js) + */ +declare module "domain" { + import EventEmitter = require("node:events"); + /** + * The `Domain` class encapsulates the functionality of routing errors and + * uncaught exceptions to the active `Domain` object. + * + * To handle the errors that it catches, listen to its `'error'` event. + */ + class Domain extends EventEmitter { + /** + * An array of timers and event emitters that have been explicitly added + * to the domain. + */ + members: Array; + /** + * The `enter()` method is plumbing used by the `run()`, `bind()`, and`intercept()` methods to set the active domain. It sets `domain.active` and`process.domain` to the domain, and implicitly + * pushes the domain onto the domain + * stack managed by the domain module (see {@link exit} for details on the + * domain stack). The call to `enter()` delimits the beginning of a chain of + * asynchronous calls and I/O operations bound to a domain. + * + * Calling `enter()` changes only the active domain, and does not alter the domain + * itself. `enter()` and `exit()` can be called an arbitrary number of times on a + * single domain. + */ + enter(): void; + /** + * The `exit()` method exits the current domain, popping it off the domain stack. + * Any time execution is going to switch to the context of a different chain of + * asynchronous calls, it's important to ensure that the current domain is exited. + * The call to `exit()` delimits either the end of or an interruption to the chain + * of asynchronous calls and I/O operations bound to a domain. + * + * If there are multiple, nested domains bound to the current execution context,`exit()` will exit any domains nested within this domain. + * + * Calling `exit()` changes only the active domain, and does not alter the domain + * itself. `enter()` and `exit()` can be called an arbitrary number of times on a + * single domain. + */ + exit(): void; + /** + * Run the supplied function in the context of the domain, implicitly + * binding all event emitters, timers, and low-level requests that are + * created in that context. Optionally, arguments can be passed to + * the function. + * + * This is the most basic way to use a domain. + * + * ```js + * const domain = require('node:domain'); + * const fs = require('node:fs'); + * const d = domain.create(); + * d.on('error', (er) => { + * console.error('Caught error!', er); + * }); + * d.run(() => { + * process.nextTick(() => { + * setTimeout(() => { // Simulating some various async stuff + * fs.open('non-existent file', 'r', (er, fd) => { + * if (er) throw er; + * // proceed... + * }); + * }, 100); + * }); + * }); + * ``` + * + * In this example, the `d.on('error')` handler will be triggered, rather + * than crashing the program. + */ + run(fn: (...args: any[]) => T, ...args: any[]): T; + /** + * Explicitly adds an emitter to the domain. If any event handlers called by + * the emitter throw an error, or if the emitter emits an `'error'` event, it + * will be routed to the domain's `'error'` event, just like with implicit + * binding. + * + * This also works with timers that are returned from `setInterval()` and `setTimeout()`. If their callback function throws, it will be caught by + * the domain `'error'` handler. + * + * If the Timer or `EventEmitter` was already bound to a domain, it is removed + * from that one, and bound to this one instead. + * @param emitter emitter or timer to be added to the domain + */ + add(emitter: EventEmitter | NodeJS.Timer): void; + /** + * The opposite of {@link add}. Removes domain handling from the + * specified emitter. + * @param emitter emitter or timer to be removed from the domain + */ + remove(emitter: EventEmitter | NodeJS.Timer): void; + /** + * The returned function will be a wrapper around the supplied callback + * function. When the returned function is called, any errors that are + * thrown will be routed to the domain's `'error'` event. + * + * ```js + * const d = domain.create(); + * + * function readSomeFile(filename, cb) { + * fs.readFile(filename, 'utf8', d.bind((er, data) => { + * // If this throws, it will also be passed to the domain. + * return cb(er, data ? JSON.parse(data) : null); + * })); + * } + * + * d.on('error', (er) => { + * // An error occurred somewhere. If we throw it now, it will crash the program + * // with the normal line number and stack message. + * }); + * ``` + * @param callback The callback function + * @return The bound function + */ + bind(callback: T): T; + /** + * This method is almost identical to {@link bind}. However, in + * addition to catching thrown errors, it will also intercept `Error` objects sent as the first argument to the function. + * + * In this way, the common `if (err) return callback(err);` pattern can be replaced + * with a single error handler in a single place. + * + * ```js + * const d = domain.create(); + * + * function readSomeFile(filename, cb) { + * fs.readFile(filename, 'utf8', d.intercept((data) => { + * // Note, the first argument is never passed to the + * // callback since it is assumed to be the 'Error' argument + * // and thus intercepted by the domain. + * + * // If this throws, it will also be passed to the domain + * // so the error-handling logic can be moved to the 'error' + * // event on the domain instead of being repeated throughout + * // the program. + * return cb(null, JSON.parse(data)); + * })); + * } + * + * d.on('error', (er) => { + * // An error occurred somewhere. If we throw it now, it will crash the program + * // with the normal line number and stack message. + * }); + * ``` + * @param callback The callback function + * @return The intercepted function + */ + intercept(callback: T): T; + } + function create(): Domain; +} +declare module "node:domain" { + export * from "domain"; +} diff --git a/node_modules/@types/node/ts4.8/events.d.ts b/node_modules/@types/node/ts4.8/events.d.ts new file mode 100644 index 00000000..4d330447 --- /dev/null +++ b/node_modules/@types/node/ts4.8/events.d.ts @@ -0,0 +1,796 @@ +/** + * Much of the Node.js core API is built around an idiomatic asynchronous + * event-driven architecture in which certain kinds of objects (called "emitters") + * emit named events that cause `Function` objects ("listeners") to be called. + * + * For instance: a `net.Server` object emits an event each time a peer + * connects to it; a `fs.ReadStream` emits an event when the file is opened; + * a `stream` emits an event whenever data is available to be read. + * + * All objects that emit events are instances of the `EventEmitter` class. These + * objects expose an `eventEmitter.on()` function that allows one or more + * functions to be attached to named events emitted by the object. Typically, + * event names are camel-cased strings but any valid JavaScript property key + * can be used. + * + * When the `EventEmitter` object emits an event, all of the functions attached + * to that specific event are called _synchronously_. Any values returned by the + * called listeners are _ignored_ and discarded. + * + * The following example shows a simple `EventEmitter` instance with a single + * listener. The `eventEmitter.on()` method is used to register listeners, while + * the `eventEmitter.emit()` method is used to trigger the event. + * + * ```js + * import { EventEmitter } from 'node:events'; + * + * class MyEmitter extends EventEmitter {} + * + * const myEmitter = new MyEmitter(); + * myEmitter.on('event', () => { + * console.log('an event occurred!'); + * }); + * myEmitter.emit('event'); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/events.js) + */ +declare module "events" { + // NOTE: This class is in the docs but is **not actually exported** by Node. + // If https://github.com/nodejs/node/issues/39903 gets resolved and Node + // actually starts exporting the class, uncomment below. + // import { EventListener, EventListenerObject } from '__dom-events'; + // /** The NodeEventTarget is a Node.js-specific extension to EventTarget that emulates a subset of the EventEmitter API. */ + // interface NodeEventTarget extends EventTarget { + // /** + // * Node.js-specific extension to the `EventTarget` class that emulates the equivalent `EventEmitter` API. + // * The only difference between `addListener()` and `addEventListener()` is that addListener() will return a reference to the EventTarget. + // */ + // addListener(type: string, listener: EventListener | EventListenerObject, options?: { once: boolean }): this; + // /** Node.js-specific extension to the `EventTarget` class that returns an array of event `type` names for which event listeners are registered. */ + // eventNames(): string[]; + // /** Node.js-specific extension to the `EventTarget` class that returns the number of event listeners registered for the `type`. */ + // listenerCount(type: string): number; + // /** Node.js-specific alias for `eventTarget.removeListener()`. */ + // off(type: string, listener: EventListener | EventListenerObject): this; + // /** Node.js-specific alias for `eventTarget.addListener()`. */ + // on(type: string, listener: EventListener | EventListenerObject, options?: { once: boolean }): this; + // /** Node.js-specific extension to the `EventTarget` class that adds a `once` listener for the given event `type`. This is equivalent to calling `on` with the `once` option set to `true`. */ + // once(type: string, listener: EventListener | EventListenerObject): this; + // /** + // * Node.js-specific extension to the `EventTarget` class. + // * If `type` is specified, removes all registered listeners for `type`, + // * otherwise removes all registered listeners. + // */ + // removeAllListeners(type: string): this; + // /** + // * Node.js-specific extension to the `EventTarget` class that removes the listener for the given `type`. + // * The only difference between `removeListener()` and `removeEventListener()` is that `removeListener()` will return a reference to the `EventTarget`. + // */ + // removeListener(type: string, listener: EventListener | EventListenerObject): this; + // } + interface EventEmitterOptions { + /** + * Enables automatic capturing of promise rejection. + */ + captureRejections?: boolean | undefined; + } + // Any EventTarget with a Node-style `once` function + interface _NodeEventTarget { + once(eventName: string | symbol, listener: (...args: any[]) => void): this; + } + // Any EventTarget with a DOM-style `addEventListener` + interface _DOMEventTarget { + addEventListener( + eventName: string, + listener: (...args: any[]) => void, + opts?: { + once: boolean; + }, + ): any; + } + interface StaticEventEmitterOptions { + signal?: AbortSignal | undefined; + } + interface EventEmitter extends NodeJS.EventEmitter {} + /** + * The `EventEmitter` class is defined and exposed by the `node:events` module: + * + * ```js + * import { EventEmitter } from 'node:events'; + * ``` + * + * All `EventEmitter`s emit the event `'newListener'` when new listeners are + * added and `'removeListener'` when existing listeners are removed. + * + * It supports the following option: + * @since v0.1.26 + */ + class EventEmitter { + constructor(options?: EventEmitterOptions); + /** + * Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given + * event or that is rejected if the `EventEmitter` emits `'error'` while waiting. + * The `Promise` will resolve with an array of all the arguments emitted to the + * given event. + * + * This method is intentionally generic and works with the web platform [EventTarget](https://dom.spec.whatwg.org/#interface-eventtarget) interface, which has no special`'error'` event + * semantics and does not listen to the `'error'` event. + * + * ```js + * import { once, EventEmitter } from 'node:events'; + * import process from 'node:process'; + * + * const ee = new EventEmitter(); + * + * process.nextTick(() => { + * ee.emit('myevent', 42); + * }); + * + * const [value] = await once(ee, 'myevent'); + * console.log(value); + * + * const err = new Error('kaboom'); + * process.nextTick(() => { + * ee.emit('error', err); + * }); + * + * try { + * await once(ee, 'myevent'); + * } catch (err) { + * console.error('error happened', err); + * } + * ``` + * + * The special handling of the `'error'` event is only used when `events.once()`is used to wait for another event. If `events.once()` is used to wait for the + * '`error'` event itself, then it is treated as any other kind of event without + * special handling: + * + * ```js + * import { EventEmitter, once } from 'node:events'; + * + * const ee = new EventEmitter(); + * + * once(ee, 'error') + * .then(([err]) => console.log('ok', err.message)) + * .catch((err) => console.error('error', err.message)); + * + * ee.emit('error', new Error('boom')); + * + * // Prints: ok boom + * ``` + * + * An `AbortSignal` can be used to cancel waiting for the event: + * + * ```js + * import { EventEmitter, once } from 'node:events'; + * + * const ee = new EventEmitter(); + * const ac = new AbortController(); + * + * async function foo(emitter, event, signal) { + * try { + * await once(emitter, event, { signal }); + * console.log('event emitted!'); + * } catch (error) { + * if (error.name === 'AbortError') { + * console.error('Waiting for the event was canceled!'); + * } else { + * console.error('There was an error', error.message); + * } + * } + * } + * + * foo(ee, 'foo', ac.signal); + * ac.abort(); // Abort waiting for the event + * ee.emit('foo'); // Prints: Waiting for the event was canceled! + * ``` + * @since v11.13.0, v10.16.0 + */ + static once( + emitter: _NodeEventTarget, + eventName: string | symbol, + options?: StaticEventEmitterOptions, + ): Promise; + static once(emitter: _DOMEventTarget, eventName: string, options?: StaticEventEmitterOptions): Promise; + /** + * ```js + * import { on, EventEmitter } from 'node:events'; + * import process from 'node:process'; + * + * const ee = new EventEmitter(); + * + * // Emit later on + * process.nextTick(() => { + * ee.emit('foo', 'bar'); + * ee.emit('foo', 42); + * }); + * + * for await (const event of on(ee, 'foo')) { + * // The execution of this inner block is synchronous and it + * // processes one event at a time (even with await). Do not use + * // if concurrent execution is required. + * console.log(event); // prints ['bar'] [42] + * } + * // Unreachable here + * ``` + * + * Returns an `AsyncIterator` that iterates `eventName` events. It will throw + * if the `EventEmitter` emits `'error'`. It removes all listeners when + * exiting the loop. The `value` returned by each iteration is an array + * composed of the emitted event arguments. + * + * An `AbortSignal` can be used to cancel waiting on events: + * + * ```js + * import { on, EventEmitter } from 'node:events'; + * import process from 'node:process'; + * + * const ac = new AbortController(); + * + * (async () => { + * const ee = new EventEmitter(); + * + * // Emit later on + * process.nextTick(() => { + * ee.emit('foo', 'bar'); + * ee.emit('foo', 42); + * }); + * + * for await (const event of on(ee, 'foo', { signal: ac.signal })) { + * // The execution of this inner block is synchronous and it + * // processes one event at a time (even with await). Do not use + * // if concurrent execution is required. + * console.log(event); // prints ['bar'] [42] + * } + * // Unreachable here + * })(); + * + * process.nextTick(() => ac.abort()); + * ``` + * @since v13.6.0, v12.16.0 + * @param eventName The name of the event being listened for + * @return that iterates `eventName` events emitted by the `emitter` + */ + static on( + emitter: NodeJS.EventEmitter, + eventName: string, + options?: StaticEventEmitterOptions, + ): AsyncIterableIterator; + /** + * A class method that returns the number of listeners for the given `eventName`registered on the given `emitter`. + * + * ```js + * import { EventEmitter, listenerCount } from 'node:events'; + * + * const myEmitter = new EventEmitter(); + * myEmitter.on('event', () => {}); + * myEmitter.on('event', () => {}); + * console.log(listenerCount(myEmitter, 'event')); + * // Prints: 2 + * ``` + * @since v0.9.12 + * @deprecated Since v3.2.0 - Use `listenerCount` instead. + * @param emitter The emitter to query + * @param eventName The event name + */ + static listenerCount(emitter: NodeJS.EventEmitter, eventName: string | symbol): number; + /** + * Returns a copy of the array of listeners for the event named `eventName`. + * + * For `EventEmitter`s this behaves exactly the same as calling `.listeners` on + * the emitter. + * + * For `EventTarget`s this is the only way to get the event listeners for the + * event target. This is useful for debugging and diagnostic purposes. + * + * ```js + * import { getEventListeners, EventEmitter } from 'node:events'; + * + * { + * const ee = new EventEmitter(); + * const listener = () => console.log('Events are fun'); + * ee.on('foo', listener); + * console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ] + * } + * { + * const et = new EventTarget(); + * const listener = () => console.log('Events are fun'); + * et.addEventListener('foo', listener); + * console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ] + * } + * ``` + * @since v15.2.0, v14.17.0 + */ + static getEventListeners(emitter: _DOMEventTarget | NodeJS.EventEmitter, name: string | symbol): Function[]; + /** + * Returns the currently set max amount of listeners. + * + * For `EventEmitter`s this behaves exactly the same as calling `.getMaxListeners` on + * the emitter. + * + * For `EventTarget`s this is the only way to get the max event listeners for the + * event target. If the number of event handlers on a single EventTarget exceeds + * the max set, the EventTarget will print a warning. + * + * ```js + * import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events'; + * + * { + * const ee = new EventEmitter(); + * console.log(getMaxListeners(ee)); // 10 + * setMaxListeners(11, ee); + * console.log(getMaxListeners(ee)); // 11 + * } + * { + * const et = new EventTarget(); + * console.log(getMaxListeners(et)); // 10 + * setMaxListeners(11, et); + * console.log(getMaxListeners(et)); // 11 + * } + * ``` + * @since v19.9.0 + */ + static getMaxListeners(emitter: _DOMEventTarget | NodeJS.EventEmitter): number; + /** + * ```js + * import { setMaxListeners, EventEmitter } from 'node:events'; + * + * const target = new EventTarget(); + * const emitter = new EventEmitter(); + * + * setMaxListeners(5, target, emitter); + * ``` + * @since v15.4.0 + * @param n A non-negative number. The maximum number of listeners per `EventTarget` event. + * @param eventsTargets Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, `n` is set as the default max for all newly created {EventTarget} and {EventEmitter} + * objects. + */ + static setMaxListeners(n?: number, ...eventTargets: Array<_DOMEventTarget | NodeJS.EventEmitter>): void; + /** + * Listens once to the `abort` event on the provided `signal`. + * + * Listening to the `abort` event on abort signals is unsafe and may + * lead to resource leaks since another third party with the signal can + * call `e.stopImmediatePropagation()`. Unfortunately Node.js cannot change + * this since it would violate the web standard. Additionally, the original + * API makes it easy to forget to remove listeners. + * + * This API allows safely using `AbortSignal`s in Node.js APIs by solving these + * two issues by listening to the event such that `stopImmediatePropagation` does + * not prevent the listener from running. + * + * Returns a disposable so that it may be unsubscribed from more easily. + * + * ```js + * import { addAbortListener } from 'node:events'; + * + * function example(signal) { + * let disposable; + * try { + * signal.addEventListener('abort', (e) => e.stopImmediatePropagation()); + * disposable = addAbortListener(signal, (e) => { + * // Do something when signal is aborted. + * }); + * } finally { + * disposable?.[Symbol.dispose](); + * } + * } + * ``` + * @since v20.5.0 + * @experimental + * @return that removes the `abort` listener. + */ + static addAbortListener(signal: AbortSignal, resource: (event: Event) => void): Disposable; + /** + * This symbol shall be used to install a listener for only monitoring `'error'`events. Listeners installed using this symbol are called before the regular`'error'` listeners are called. + * + * Installing a listener using this symbol does not change the behavior once an`'error'` event is emitted. Therefore, the process will still crash if no + * regular `'error'` listener is installed. + * @since v13.6.0, v12.17.0 + */ + static readonly errorMonitor: unique symbol; + /** + * Value: `Symbol.for('nodejs.rejection')` + * + * See how to write a custom `rejection handler`. + * @since v13.4.0, v12.16.0 + */ + static readonly captureRejectionSymbol: unique symbol; + /** + * Value: [boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + * + * Change the default `captureRejections` option on all new `EventEmitter` objects. + * @since v13.4.0, v12.16.0 + */ + static captureRejections: boolean; + /** + * By default, a maximum of `10` listeners can be registered for any single + * event. This limit can be changed for individual `EventEmitter` instances + * using the `emitter.setMaxListeners(n)` method. To change the default + * for _all_`EventEmitter` instances, the `events.defaultMaxListeners`property can be used. If this value is not a positive number, a `RangeError`is thrown. + * + * Take caution when setting the `events.defaultMaxListeners` because the + * change affects _all_`EventEmitter` instances, including those created before + * the change is made. However, calling `emitter.setMaxListeners(n)` still has + * precedence over `events.defaultMaxListeners`. + * + * This is not a hard limit. The `EventEmitter` instance will allow + * more listeners to be added but will output a trace warning to stderr indicating + * that a "possible EventEmitter memory leak" has been detected. For any single`EventEmitter`, the `emitter.getMaxListeners()` and `emitter.setMaxListeners()`methods can be used to + * temporarily avoid this warning: + * + * ```js + * import { EventEmitter } from 'node:events'; + * const emitter = new EventEmitter(); + * emitter.setMaxListeners(emitter.getMaxListeners() + 1); + * emitter.once('event', () => { + * // do stuff + * emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0)); + * }); + * ``` + * + * The `--trace-warnings` command-line flag can be used to display the + * stack trace for such warnings. + * + * The emitted warning can be inspected with `process.on('warning')` and will + * have the additional `emitter`, `type`, and `count` properties, referring to + * the event emitter instance, the event's name and the number of attached + * listeners, respectively. + * Its `name` property is set to `'MaxListenersExceededWarning'`. + * @since v0.11.2 + */ + static defaultMaxListeners: number; + } + import internal = require("node:events"); + namespace EventEmitter { + // Should just be `export { EventEmitter }`, but that doesn't work in TypeScript 3.4 + export { internal as EventEmitter }; + export interface Abortable { + /** + * When provided the corresponding `AbortController` can be used to cancel an asynchronous action. + */ + signal?: AbortSignal | undefined; + } + } + global { + namespace NodeJS { + interface EventEmitter { + /** + * Alias for `emitter.on(eventName, listener)`. + * @since v0.1.26 + */ + addListener(eventName: string | symbol, listener: (...args: any[]) => void): this; + /** + * Adds the `listener` function to the end of the listeners array for the + * event named `eventName`. No checks are made to see if the `listener` has + * already been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple + * times. + * + * ```js + * server.on('connection', (stream) => { + * console.log('someone connected!'); + * }); + * ``` + * + * Returns a reference to the `EventEmitter`, so that calls can be chained. + * + * By default, event listeners are invoked in the order they are added. The`emitter.prependListener()` method can be used as an alternative to add the + * event listener to the beginning of the listeners array. + * + * ```js + * import { EventEmitter } from 'node:events'; + * const myEE = new EventEmitter(); + * myEE.on('foo', () => console.log('a')); + * myEE.prependListener('foo', () => console.log('b')); + * myEE.emit('foo'); + * // Prints: + * // b + * // a + * ``` + * @since v0.1.101 + * @param eventName The name of the event. + * @param listener The callback function + */ + on(eventName: string | symbol, listener: (...args: any[]) => void): this; + /** + * Adds a **one-time**`listener` function for the event named `eventName`. The + * next time `eventName` is triggered, this listener is removed and then invoked. + * + * ```js + * server.once('connection', (stream) => { + * console.log('Ah, we have our first user!'); + * }); + * ``` + * + * Returns a reference to the `EventEmitter`, so that calls can be chained. + * + * By default, event listeners are invoked in the order they are added. The`emitter.prependOnceListener()` method can be used as an alternative to add the + * event listener to the beginning of the listeners array. + * + * ```js + * import { EventEmitter } from 'node:events'; + * const myEE = new EventEmitter(); + * myEE.once('foo', () => console.log('a')); + * myEE.prependOnceListener('foo', () => console.log('b')); + * myEE.emit('foo'); + * // Prints: + * // b + * // a + * ``` + * @since v0.3.0 + * @param eventName The name of the event. + * @param listener The callback function + */ + once(eventName: string | symbol, listener: (...args: any[]) => void): this; + /** + * Removes the specified `listener` from the listener array for the event named`eventName`. + * + * ```js + * const callback = (stream) => { + * console.log('someone connected!'); + * }; + * server.on('connection', callback); + * // ... + * server.removeListener('connection', callback); + * ``` + * + * `removeListener()` will remove, at most, one instance of a listener from the + * listener array. If any single listener has been added multiple times to the + * listener array for the specified `eventName`, then `removeListener()` must be + * called multiple times to remove each instance. + * + * Once an event is emitted, all listeners attached to it at the + * time of emitting are called in order. This implies that any`removeListener()` or `removeAllListeners()` calls _after_ emitting and _before_ the last listener finishes execution + * will not remove them from`emit()` in progress. Subsequent events behave as expected. + * + * ```js + * import { EventEmitter } from 'node:events'; + * class MyEmitter extends EventEmitter {} + * const myEmitter = new MyEmitter(); + * + * const callbackA = () => { + * console.log('A'); + * myEmitter.removeListener('event', callbackB); + * }; + * + * const callbackB = () => { + * console.log('B'); + * }; + * + * myEmitter.on('event', callbackA); + * + * myEmitter.on('event', callbackB); + * + * // callbackA removes listener callbackB but it will still be called. + * // Internal listener array at time of emit [callbackA, callbackB] + * myEmitter.emit('event'); + * // Prints: + * // A + * // B + * + * // callbackB is now removed. + * // Internal listener array [callbackA] + * myEmitter.emit('event'); + * // Prints: + * // A + * ``` + * + * Because listeners are managed using an internal array, calling this will + * change the position indices of any listener registered _after_ the listener + * being removed. This will not impact the order in which listeners are called, + * but it means that any copies of the listener array as returned by + * the `emitter.listeners()` method will need to be recreated. + * + * When a single function has been added as a handler multiple times for a single + * event (as in the example below), `removeListener()` will remove the most + * recently added instance. In the example the `once('ping')`listener is removed: + * + * ```js + * import { EventEmitter } from 'node:events'; + * const ee = new EventEmitter(); + * + * function pong() { + * console.log('pong'); + * } + * + * ee.on('ping', pong); + * ee.once('ping', pong); + * ee.removeListener('ping', pong); + * + * ee.emit('ping'); + * ee.emit('ping'); + * ``` + * + * Returns a reference to the `EventEmitter`, so that calls can be chained. + * @since v0.1.26 + */ + removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this; + /** + * Alias for `emitter.removeListener()`. + * @since v10.0.0 + */ + off(eventName: string | symbol, listener: (...args: any[]) => void): this; + /** + * Removes all listeners, or those of the specified `eventName`. + * + * It is bad practice to remove listeners added elsewhere in the code, + * particularly when the `EventEmitter` instance was created by some other + * component or module (e.g. sockets or file streams). + * + * Returns a reference to the `EventEmitter`, so that calls can be chained. + * @since v0.1.26 + */ + removeAllListeners(event?: string | symbol): this; + /** + * By default `EventEmitter`s will print a warning if more than `10` listeners are + * added for a particular event. This is a useful default that helps finding + * memory leaks. The `emitter.setMaxListeners()` method allows the limit to be + * modified for this specific `EventEmitter` instance. The value can be set to`Infinity` (or `0`) to indicate an unlimited number of listeners. + * + * Returns a reference to the `EventEmitter`, so that calls can be chained. + * @since v0.3.5 + */ + setMaxListeners(n: number): this; + /** + * Returns the current max listener value for the `EventEmitter` which is either + * set by `emitter.setMaxListeners(n)` or defaults to {@link defaultMaxListeners}. + * @since v1.0.0 + */ + getMaxListeners(): number; + /** + * Returns a copy of the array of listeners for the event named `eventName`. + * + * ```js + * server.on('connection', (stream) => { + * console.log('someone connected!'); + * }); + * console.log(util.inspect(server.listeners('connection'))); + * // Prints: [ [Function] ] + * ``` + * @since v0.1.26 + */ + listeners(eventName: string | symbol): Function[]; + /** + * Returns a copy of the array of listeners for the event named `eventName`, + * including any wrappers (such as those created by `.once()`). + * + * ```js + * import { EventEmitter } from 'node:events'; + * const emitter = new EventEmitter(); + * emitter.once('log', () => console.log('log once')); + * + * // Returns a new Array with a function `onceWrapper` which has a property + * // `listener` which contains the original listener bound above + * const listeners = emitter.rawListeners('log'); + * const logFnWrapper = listeners[0]; + * + * // Logs "log once" to the console and does not unbind the `once` event + * logFnWrapper.listener(); + * + * // Logs "log once" to the console and removes the listener + * logFnWrapper(); + * + * emitter.on('log', () => console.log('log persistently')); + * // Will return a new Array with a single function bound by `.on()` above + * const newListeners = emitter.rawListeners('log'); + * + * // Logs "log persistently" twice + * newListeners[0](); + * emitter.emit('log'); + * ``` + * @since v9.4.0 + */ + rawListeners(eventName: string | symbol): Function[]; + /** + * Synchronously calls each of the listeners registered for the event named`eventName`, in the order they were registered, passing the supplied arguments + * to each. + * + * Returns `true` if the event had listeners, `false` otherwise. + * + * ```js + * import { EventEmitter } from 'node:events'; + * const myEmitter = new EventEmitter(); + * + * // First listener + * myEmitter.on('event', function firstListener() { + * console.log('Helloooo! first listener'); + * }); + * // Second listener + * myEmitter.on('event', function secondListener(arg1, arg2) { + * console.log(`event with parameters ${arg1}, ${arg2} in second listener`); + * }); + * // Third listener + * myEmitter.on('event', function thirdListener(...args) { + * const parameters = args.join(', '); + * console.log(`event with parameters ${parameters} in third listener`); + * }); + * + * console.log(myEmitter.listeners('event')); + * + * myEmitter.emit('event', 1, 2, 3, 4, 5); + * + * // Prints: + * // [ + * // [Function: firstListener], + * // [Function: secondListener], + * // [Function: thirdListener] + * // ] + * // Helloooo! first listener + * // event with parameters 1, 2 in second listener + * // event with parameters 1, 2, 3, 4, 5 in third listener + * ``` + * @since v0.1.26 + */ + emit(eventName: string | symbol, ...args: any[]): boolean; + /** + * Returns the number of listeners listening for the event named `eventName`. + * If `listener` is provided, it will return how many times the listener is found + * in the list of the listeners of the event. + * @since v3.2.0 + * @param eventName The name of the event being listened for + * @param listener The event handler function + */ + listenerCount(eventName: string | symbol, listener?: Function): number; + /** + * Adds the `listener` function to the _beginning_ of the listeners array for the + * event named `eventName`. No checks are made to see if the `listener` has + * already been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple + * times. + * + * ```js + * server.prependListener('connection', (stream) => { + * console.log('someone connected!'); + * }); + * ``` + * + * Returns a reference to the `EventEmitter`, so that calls can be chained. + * @since v6.0.0 + * @param eventName The name of the event. + * @param listener The callback function + */ + prependListener(eventName: string | symbol, listener: (...args: any[]) => void): this; + /** + * Adds a **one-time**`listener` function for the event named `eventName` to the _beginning_ of the listeners array. The next time `eventName` is triggered, this + * listener is removed, and then invoked. + * + * ```js + * server.prependOnceListener('connection', (stream) => { + * console.log('Ah, we have our first user!'); + * }); + * ``` + * + * Returns a reference to the `EventEmitter`, so that calls can be chained. + * @since v6.0.0 + * @param eventName The name of the event. + * @param listener The callback function + */ + prependOnceListener(eventName: string | symbol, listener: (...args: any[]) => void): this; + /** + * Returns an array listing the events for which the emitter has registered + * listeners. The values in the array are strings or `Symbol`s. + * + * ```js + * import { EventEmitter } from 'node:events'; + * + * const myEE = new EventEmitter(); + * myEE.on('foo', () => {}); + * myEE.on('bar', () => {}); + * + * const sym = Symbol('symbol'); + * myEE.on(sym, () => {}); + * + * console.log(myEE.eventNames()); + * // Prints: [ 'foo', 'bar', Symbol(symbol) ] + * ``` + * @since v6.0.0 + */ + eventNames(): Array; + } + } + } + export = EventEmitter; +} +declare module "node:events" { + import events = require("events"); + export = events; +} diff --git a/node_modules/@types/node/ts4.8/fs.d.ts b/node_modules/@types/node/ts4.8/fs.d.ts new file mode 100644 index 00000000..3f5d9a1c --- /dev/null +++ b/node_modules/@types/node/ts4.8/fs.d.ts @@ -0,0 +1,4289 @@ +/** + * The `node:fs` module enables interacting with the file system in a + * way modeled on standard POSIX functions. + * + * To use the promise-based APIs: + * + * ```js + * import * as fs from 'node:fs/promises'; + * ``` + * + * To use the callback and sync APIs: + * + * ```js + * import * as fs from 'node:fs'; + * ``` + * + * All file system operations have synchronous, callback, and promise-based + * forms, and are accessible using both CommonJS syntax and ES6 Modules (ESM). + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/fs.js) + */ +declare module "fs" { + import * as stream from "node:stream"; + import { Abortable, EventEmitter } from "node:events"; + import { URL } from "node:url"; + import * as promises from "node:fs/promises"; + export { promises }; + /** + * Valid types for path values in "fs". + */ + export type PathLike = string | Buffer | URL; + export type PathOrFileDescriptor = PathLike | number; + export type TimeLike = string | number | Date; + export type NoParamCallback = (err: NodeJS.ErrnoException | null) => void; + export type BufferEncodingOption = + | "buffer" + | { + encoding: "buffer"; + }; + export interface ObjectEncodingOptions { + encoding?: BufferEncoding | null | undefined; + } + export type EncodingOption = ObjectEncodingOptions | BufferEncoding | undefined | null; + export type OpenMode = number | string; + export type Mode = number | string; + export interface StatsBase { + isFile(): boolean; + isDirectory(): boolean; + isBlockDevice(): boolean; + isCharacterDevice(): boolean; + isSymbolicLink(): boolean; + isFIFO(): boolean; + isSocket(): boolean; + dev: T; + ino: T; + mode: T; + nlink: T; + uid: T; + gid: T; + rdev: T; + size: T; + blksize: T; + blocks: T; + atimeMs: T; + mtimeMs: T; + ctimeMs: T; + birthtimeMs: T; + atime: Date; + mtime: Date; + ctime: Date; + birthtime: Date; + } + export interface Stats extends StatsBase {} + /** + * A `fs.Stats` object provides information about a file. + * + * Objects returned from {@link stat}, {@link lstat}, {@link fstat}, and + * their synchronous counterparts are of this type. + * If `bigint` in the `options` passed to those methods is true, the numeric values + * will be `bigint` instead of `number`, and the object will contain additional + * nanosecond-precision properties suffixed with `Ns`. + * + * ```console + * Stats { + * dev: 2114, + * ino: 48064969, + * mode: 33188, + * nlink: 1, + * uid: 85, + * gid: 100, + * rdev: 0, + * size: 527, + * blksize: 4096, + * blocks: 8, + * atimeMs: 1318289051000.1, + * mtimeMs: 1318289051000.1, + * ctimeMs: 1318289051000.1, + * birthtimeMs: 1318289051000.1, + * atime: Mon, 10 Oct 2011 23:24:11 GMT, + * mtime: Mon, 10 Oct 2011 23:24:11 GMT, + * ctime: Mon, 10 Oct 2011 23:24:11 GMT, + * birthtime: Mon, 10 Oct 2011 23:24:11 GMT } + * ``` + * + * `bigint` version: + * + * ```console + * BigIntStats { + * dev: 2114n, + * ino: 48064969n, + * mode: 33188n, + * nlink: 1n, + * uid: 85n, + * gid: 100n, + * rdev: 0n, + * size: 527n, + * blksize: 4096n, + * blocks: 8n, + * atimeMs: 1318289051000n, + * mtimeMs: 1318289051000n, + * ctimeMs: 1318289051000n, + * birthtimeMs: 1318289051000n, + * atimeNs: 1318289051000000000n, + * mtimeNs: 1318289051000000000n, + * ctimeNs: 1318289051000000000n, + * birthtimeNs: 1318289051000000000n, + * atime: Mon, 10 Oct 2011 23:24:11 GMT, + * mtime: Mon, 10 Oct 2011 23:24:11 GMT, + * ctime: Mon, 10 Oct 2011 23:24:11 GMT, + * birthtime: Mon, 10 Oct 2011 23:24:11 GMT } + * ``` + * @since v0.1.21 + */ + export class Stats {} + export interface StatsFsBase { + /** Type of file system. */ + type: T; + /** Optimal transfer block size. */ + bsize: T; + /** Total data blocks in file system. */ + blocks: T; + /** Free blocks in file system. */ + bfree: T; + /** Available blocks for unprivileged users */ + bavail: T; + /** Total file nodes in file system. */ + files: T; + /** Free file nodes in file system. */ + ffree: T; + } + export interface StatsFs extends StatsFsBase {} + /** + * Provides information about a mounted file system. + * + * Objects returned from {@link statfs} and its synchronous counterpart are of + * this type. If `bigint` in the `options` passed to those methods is `true`, the + * numeric values will be `bigint` instead of `number`. + * + * ```console + * StatFs { + * type: 1397114950, + * bsize: 4096, + * blocks: 121938943, + * bfree: 61058895, + * bavail: 61058895, + * files: 999, + * ffree: 1000000 + * } + * ``` + * + * `bigint` version: + * + * ```console + * StatFs { + * type: 1397114950n, + * bsize: 4096n, + * blocks: 121938943n, + * bfree: 61058895n, + * bavail: 61058895n, + * files: 999n, + * ffree: 1000000n + * } + * ``` + * @since v19.6.0, v18.15.0 + */ + export class StatsFs {} + export interface BigIntStatsFs extends StatsFsBase {} + export interface StatFsOptions { + bigint?: boolean | undefined; + } + /** + * A representation of a directory entry, which can be a file or a subdirectory + * within the directory, as returned by reading from an `fs.Dir`. The + * directory entry is a combination of the file name and file type pairs. + * + * Additionally, when {@link readdir} or {@link readdirSync} is called with + * the `withFileTypes` option set to `true`, the resulting array is filled with `fs.Dirent` objects, rather than strings or `Buffer` s. + * @since v10.10.0 + */ + export class Dirent { + /** + * Returns `true` if the `fs.Dirent` object describes a regular file. + * @since v10.10.0 + */ + isFile(): boolean; + /** + * Returns `true` if the `fs.Dirent` object describes a file system + * directory. + * @since v10.10.0 + */ + isDirectory(): boolean; + /** + * Returns `true` if the `fs.Dirent` object describes a block device. + * @since v10.10.0 + */ + isBlockDevice(): boolean; + /** + * Returns `true` if the `fs.Dirent` object describes a character device. + * @since v10.10.0 + */ + isCharacterDevice(): boolean; + /** + * Returns `true` if the `fs.Dirent` object describes a symbolic link. + * @since v10.10.0 + */ + isSymbolicLink(): boolean; + /** + * Returns `true` if the `fs.Dirent` object describes a first-in-first-out + * (FIFO) pipe. + * @since v10.10.0 + */ + isFIFO(): boolean; + /** + * Returns `true` if the `fs.Dirent` object describes a socket. + * @since v10.10.0 + */ + isSocket(): boolean; + /** + * The file name that this `fs.Dirent` object refers to. The type of this + * value is determined by the `options.encoding` passed to {@link readdir} or {@link readdirSync}. + * @since v10.10.0 + */ + name: string; + /** + * The base path that this `fs.Dirent` object refers to. + * @since v20.1.0 + */ + path: string; + } + /** + * A class representing a directory stream. + * + * Created by {@link opendir}, {@link opendirSync}, or `fsPromises.opendir()`. + * + * ```js + * import { opendir } from 'node:fs/promises'; + * + * try { + * const dir = await opendir('./'); + * for await (const dirent of dir) + * console.log(dirent.name); + * } catch (err) { + * console.error(err); + * } + * ``` + * + * When using the async iterator, the `fs.Dir` object will be automatically + * closed after the iterator exits. + * @since v12.12.0 + */ + export class Dir implements AsyncIterable { + /** + * The read-only path of this directory as was provided to {@link opendir},{@link opendirSync}, or `fsPromises.opendir()`. + * @since v12.12.0 + */ + readonly path: string; + /** + * Asynchronously iterates over the directory via `readdir(3)` until all entries have been read. + */ + [Symbol.asyncIterator](): AsyncIterableIterator; + /** + * Asynchronously close the directory's underlying resource handle. + * Subsequent reads will result in errors. + * + * A promise is returned that will be resolved after the resource has been + * closed. + * @since v12.12.0 + */ + close(): Promise; + close(cb: NoParamCallback): void; + /** + * Synchronously close the directory's underlying resource handle. + * Subsequent reads will result in errors. + * @since v12.12.0 + */ + closeSync(): void; + /** + * Asynchronously read the next directory entry via [`readdir(3)`](http://man7.org/linux/man-pages/man3/readdir.3.html) as an `fs.Dirent`. + * + * A promise is returned that will be resolved with an `fs.Dirent`, or `null`if there are no more directory entries to read. + * + * Directory entries returned by this function are in no particular order as + * provided by the operating system's underlying directory mechanisms. + * Entries added or removed while iterating over the directory might not be + * included in the iteration results. + * @since v12.12.0 + * @return containing {fs.Dirent|null} + */ + read(): Promise; + read(cb: (err: NodeJS.ErrnoException | null, dirEnt: Dirent | null) => void): void; + /** + * Synchronously read the next directory entry as an `fs.Dirent`. See the + * POSIX [`readdir(3)`](http://man7.org/linux/man-pages/man3/readdir.3.html) documentation for more detail. + * + * If there are no more directory entries to read, `null` will be returned. + * + * Directory entries returned by this function are in no particular order as + * provided by the operating system's underlying directory mechanisms. + * Entries added or removed while iterating over the directory might not be + * included in the iteration results. + * @since v12.12.0 + */ + readSync(): Dirent | null; + } + /** + * Class: fs.StatWatcher + * @since v14.3.0, v12.20.0 + * Extends `EventEmitter` + * A successful call to {@link watchFile} method will return a new fs.StatWatcher object. + */ + export interface StatWatcher extends EventEmitter { + /** + * When called, requests that the Node.js event loop _not_ exit so long as the `fs.StatWatcher` is active. Calling `watcher.ref()` multiple times will have + * no effect. + * + * By default, all `fs.StatWatcher` objects are "ref'ed", making it normally + * unnecessary to call `watcher.ref()` unless `watcher.unref()` had been + * called previously. + * @since v14.3.0, v12.20.0 + */ + ref(): this; + /** + * When called, the active `fs.StatWatcher` object will not require the Node.js + * event loop to remain active. If there is no other activity keeping the + * event loop running, the process may exit before the `fs.StatWatcher` object's + * callback is invoked. Calling `watcher.unref()` multiple times will have + * no effect. + * @since v14.3.0, v12.20.0 + */ + unref(): this; + } + export interface FSWatcher extends EventEmitter { + /** + * Stop watching for changes on the given `fs.FSWatcher`. Once stopped, the `fs.FSWatcher` object is no longer usable. + * @since v0.5.8 + */ + close(): void; + /** + * events.EventEmitter + * 1. change + * 2. error + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + addListener(event: "error", listener: (error: Error) => void): this; + addListener(event: "close", listener: () => void): this; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + on(event: "error", listener: (error: Error) => void): this; + on(event: "close", listener: () => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + once(event: "error", listener: (error: Error) => void): this; + once(event: "close", listener: () => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + prependListener(event: "error", listener: (error: Error) => void): this; + prependListener(event: "close", listener: () => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; + prependOnceListener(event: "error", listener: (error: Error) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + } + /** + * Instances of `fs.ReadStream` are created and returned using the {@link createReadStream} function. + * @since v0.1.93 + */ + export class ReadStream extends stream.Readable { + close(callback?: (err?: NodeJS.ErrnoException | null) => void): void; + /** + * The number of bytes that have been read so far. + * @since v6.4.0 + */ + bytesRead: number; + /** + * The path to the file the stream is reading from as specified in the first + * argument to `fs.createReadStream()`. If `path` is passed as a string, then`readStream.path` will be a string. If `path` is passed as a `Buffer`, then`readStream.path` will be a + * `Buffer`. If `fd` is specified, then`readStream.path` will be `undefined`. + * @since v0.1.93 + */ + path: string | Buffer; + /** + * This property is `true` if the underlying file has not been opened yet, + * i.e. before the `'ready'` event is emitted. + * @since v11.2.0, v10.16.0 + */ + pending: boolean; + /** + * events.EventEmitter + * 1. open + * 2. close + * 3. ready + */ + addListener(event: "close", listener: () => void): this; + addListener(event: "data", listener: (chunk: Buffer | string) => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "open", listener: (fd: number) => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "readable", listener: () => void): this; + addListener(event: "ready", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + on(event: "close", listener: () => void): this; + on(event: "data", listener: (chunk: Buffer | string) => void): this; + on(event: "end", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "open", listener: (fd: number) => void): this; + on(event: "pause", listener: () => void): this; + on(event: "readable", listener: () => void): this; + on(event: "ready", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "data", listener: (chunk: Buffer | string) => void): this; + once(event: "end", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "open", listener: (fd: number) => void): this; + once(event: "pause", listener: () => void): this; + once(event: "readable", listener: () => void): this; + once(event: "ready", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "open", listener: (fd: number) => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "readable", listener: () => void): this; + prependListener(event: "ready", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "open", listener: (fd: number) => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "readable", listener: () => void): this; + prependOnceListener(event: "ready", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + /** + * * Extends `stream.Writable` + * + * Instances of `fs.WriteStream` are created and returned using the {@link createWriteStream} function. + * @since v0.1.93 + */ + export class WriteStream extends stream.Writable { + /** + * Closes `writeStream`. Optionally accepts a + * callback that will be executed once the `writeStream`is closed. + * @since v0.9.4 + */ + close(callback?: (err?: NodeJS.ErrnoException | null) => void): void; + /** + * The number of bytes written so far. Does not include data that is still queued + * for writing. + * @since v0.4.7 + */ + bytesWritten: number; + /** + * The path to the file the stream is writing to as specified in the first + * argument to {@link createWriteStream}. If `path` is passed as a string, then`writeStream.path` will be a string. If `path` is passed as a `Buffer`, then`writeStream.path` will be a + * `Buffer`. + * @since v0.1.93 + */ + path: string | Buffer; + /** + * This property is `true` if the underlying file has not been opened yet, + * i.e. before the `'ready'` event is emitted. + * @since v11.2.0 + */ + pending: boolean; + /** + * events.EventEmitter + * 1. open + * 2. close + * 3. ready + */ + addListener(event: "close", listener: () => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "open", listener: (fd: number) => void): this; + addListener(event: "pipe", listener: (src: stream.Readable) => void): this; + addListener(event: "ready", listener: () => void): this; + addListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + on(event: "close", listener: () => void): this; + on(event: "drain", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "open", listener: (fd: number) => void): this; + on(event: "pipe", listener: (src: stream.Readable) => void): this; + on(event: "ready", listener: () => void): this; + on(event: "unpipe", listener: (src: stream.Readable) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "drain", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "open", listener: (fd: number) => void): this; + once(event: "pipe", listener: (src: stream.Readable) => void): this; + once(event: "ready", listener: () => void): this; + once(event: "unpipe", listener: (src: stream.Readable) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "open", listener: (fd: number) => void): this; + prependListener(event: "pipe", listener: (src: stream.Readable) => void): this; + prependListener(event: "ready", listener: () => void): this; + prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "open", listener: (fd: number) => void): this; + prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this; + prependOnceListener(event: "ready", listener: () => void): this; + prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + /** + * Asynchronously rename file at `oldPath` to the pathname provided + * as `newPath`. In the case that `newPath` already exists, it will + * be overwritten. If there is a directory at `newPath`, an error will + * be raised instead. No arguments other than a possible exception are + * given to the completion callback. + * + * See also: [`rename(2)`](http://man7.org/linux/man-pages/man2/rename.2.html). + * + * ```js + * import { rename } from 'node:fs'; + * + * rename('oldFile.txt', 'newFile.txt', (err) => { + * if (err) throw err; + * console.log('Rename complete!'); + * }); + * ``` + * @since v0.0.2 + */ + export function rename(oldPath: PathLike, newPath: PathLike, callback: NoParamCallback): void; + export namespace rename { + /** + * Asynchronous rename(2) - Change the name or location of a file or directory. + * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol. + * URL support is _experimental_. + * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. + * URL support is _experimental_. + */ + function __promisify__(oldPath: PathLike, newPath: PathLike): Promise; + } + /** + * Renames the file from `oldPath` to `newPath`. Returns `undefined`. + * + * See the POSIX [`rename(2)`](http://man7.org/linux/man-pages/man2/rename.2.html) documentation for more details. + * @since v0.1.21 + */ + export function renameSync(oldPath: PathLike, newPath: PathLike): void; + /** + * Truncates the file. No arguments other than a possible exception are + * given to the completion callback. A file descriptor can also be passed as the + * first argument. In this case, `fs.ftruncate()` is called. + * + * ```js + * import { truncate } from 'node:fs'; + * // Assuming that 'path/file.txt' is a regular file. + * truncate('path/file.txt', (err) => { + * if (err) throw err; + * console.log('path/file.txt was truncated'); + * }); + * ``` + * + * Passing a file descriptor is deprecated and may result in an error being thrown + * in the future. + * + * See the POSIX [`truncate(2)`](http://man7.org/linux/man-pages/man2/truncate.2.html) documentation for more details. + * @since v0.8.6 + * @param [len=0] + */ + export function truncate(path: PathLike, len: number | undefined | null, callback: NoParamCallback): void; + /** + * Asynchronous truncate(2) - Truncate a file to a specified length. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export function truncate(path: PathLike, callback: NoParamCallback): void; + export namespace truncate { + /** + * Asynchronous truncate(2) - Truncate a file to a specified length. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param len If not specified, defaults to `0`. + */ + function __promisify__(path: PathLike, len?: number | null): Promise; + } + /** + * Truncates the file. Returns `undefined`. A file descriptor can also be + * passed as the first argument. In this case, `fs.ftruncateSync()` is called. + * + * Passing a file descriptor is deprecated and may result in an error being thrown + * in the future. + * @since v0.8.6 + * @param [len=0] + */ + export function truncateSync(path: PathLike, len?: number | null): void; + /** + * Truncates the file descriptor. No arguments other than a possible exception are + * given to the completion callback. + * + * See the POSIX [`ftruncate(2)`](http://man7.org/linux/man-pages/man2/ftruncate.2.html) documentation for more detail. + * + * If the file referred to by the file descriptor was larger than `len` bytes, only + * the first `len` bytes will be retained in the file. + * + * For example, the following program retains only the first four bytes of the + * file: + * + * ```js + * import { open, close, ftruncate } from 'node:fs'; + * + * function closeFd(fd) { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * + * open('temp.txt', 'r+', (err, fd) => { + * if (err) throw err; + * + * try { + * ftruncate(fd, 4, (err) => { + * closeFd(fd); + * if (err) throw err; + * }); + * } catch (err) { + * closeFd(fd); + * if (err) throw err; + * } + * }); + * ``` + * + * If the file previously was shorter than `len` bytes, it is extended, and the + * extended part is filled with null bytes (`'\0'`): + * + * If `len` is negative then `0` will be used. + * @since v0.8.6 + * @param [len=0] + */ + export function ftruncate(fd: number, len: number | undefined | null, callback: NoParamCallback): void; + /** + * Asynchronous ftruncate(2) - Truncate a file to a specified length. + * @param fd A file descriptor. + */ + export function ftruncate(fd: number, callback: NoParamCallback): void; + export namespace ftruncate { + /** + * Asynchronous ftruncate(2) - Truncate a file to a specified length. + * @param fd A file descriptor. + * @param len If not specified, defaults to `0`. + */ + function __promisify__(fd: number, len?: number | null): Promise; + } + /** + * Truncates the file descriptor. Returns `undefined`. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link ftruncate}. + * @since v0.8.6 + * @param [len=0] + */ + export function ftruncateSync(fd: number, len?: number | null): void; + /** + * Asynchronously changes owner and group of a file. No arguments other than a + * possible exception are given to the completion callback. + * + * See the POSIX [`chown(2)`](http://man7.org/linux/man-pages/man2/chown.2.html) documentation for more detail. + * @since v0.1.97 + */ + export function chown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void; + export namespace chown { + /** + * Asynchronous chown(2) - Change ownership of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + function __promisify__(path: PathLike, uid: number, gid: number): Promise; + } + /** + * Synchronously changes owner and group of a file. Returns `undefined`. + * This is the synchronous version of {@link chown}. + * + * See the POSIX [`chown(2)`](http://man7.org/linux/man-pages/man2/chown.2.html) documentation for more detail. + * @since v0.1.97 + */ + export function chownSync(path: PathLike, uid: number, gid: number): void; + /** + * Sets the owner of the file. No arguments other than a possible exception are + * given to the completion callback. + * + * See the POSIX [`fchown(2)`](http://man7.org/linux/man-pages/man2/fchown.2.html) documentation for more detail. + * @since v0.4.7 + */ + export function fchown(fd: number, uid: number, gid: number, callback: NoParamCallback): void; + export namespace fchown { + /** + * Asynchronous fchown(2) - Change ownership of a file. + * @param fd A file descriptor. + */ + function __promisify__(fd: number, uid: number, gid: number): Promise; + } + /** + * Sets the owner of the file. Returns `undefined`. + * + * See the POSIX [`fchown(2)`](http://man7.org/linux/man-pages/man2/fchown.2.html) documentation for more detail. + * @since v0.4.7 + * @param uid The file's new owner's user id. + * @param gid The file's new group's group id. + */ + export function fchownSync(fd: number, uid: number, gid: number): void; + /** + * Set the owner of the symbolic link. No arguments other than a possible + * exception are given to the completion callback. + * + * See the POSIX [`lchown(2)`](http://man7.org/linux/man-pages/man2/lchown.2.html) documentation for more detail. + */ + export function lchown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void; + export namespace lchown { + /** + * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + function __promisify__(path: PathLike, uid: number, gid: number): Promise; + } + /** + * Set the owner for the path. Returns `undefined`. + * + * See the POSIX [`lchown(2)`](http://man7.org/linux/man-pages/man2/lchown.2.html) documentation for more details. + * @param uid The file's new owner's user id. + * @param gid The file's new group's group id. + */ + export function lchownSync(path: PathLike, uid: number, gid: number): void; + /** + * Changes the access and modification times of a file in the same way as {@link utimes}, with the difference that if the path refers to a symbolic + * link, then the link is not dereferenced: instead, the timestamps of the + * symbolic link itself are changed. + * + * No arguments other than a possible exception are given to the completion + * callback. + * @since v14.5.0, v12.19.0 + */ + export function lutimes(path: PathLike, atime: TimeLike, mtime: TimeLike, callback: NoParamCallback): void; + export namespace lutimes { + /** + * Changes the access and modification times of a file in the same way as `fsPromises.utimes()`, + * with the difference that if the path refers to a symbolic link, then the link is not + * dereferenced: instead, the timestamps of the symbolic link itself are changed. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param atime The last access time. If a string is provided, it will be coerced to number. + * @param mtime The last modified time. If a string is provided, it will be coerced to number. + */ + function __promisify__(path: PathLike, atime: TimeLike, mtime: TimeLike): Promise; + } + /** + * Change the file system timestamps of the symbolic link referenced by `path`. + * Returns `undefined`, or throws an exception when parameters are incorrect or + * the operation fails. This is the synchronous version of {@link lutimes}. + * @since v14.5.0, v12.19.0 + */ + export function lutimesSync(path: PathLike, atime: TimeLike, mtime: TimeLike): void; + /** + * Asynchronously changes the permissions of a file. No arguments other than a + * possible exception are given to the completion callback. + * + * See the POSIX [`chmod(2)`](http://man7.org/linux/man-pages/man2/chmod.2.html) documentation for more detail. + * + * ```js + * import { chmod } from 'node:fs'; + * + * chmod('my_file.txt', 0o775, (err) => { + * if (err) throw err; + * console.log('The permissions for file "my_file.txt" have been changed!'); + * }); + * ``` + * @since v0.1.30 + */ + export function chmod(path: PathLike, mode: Mode, callback: NoParamCallback): void; + export namespace chmod { + /** + * Asynchronous chmod(2) - Change permissions of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param mode A file mode. If a string is passed, it is parsed as an octal integer. + */ + function __promisify__(path: PathLike, mode: Mode): Promise; + } + /** + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link chmod}. + * + * See the POSIX [`chmod(2)`](http://man7.org/linux/man-pages/man2/chmod.2.html) documentation for more detail. + * @since v0.6.7 + */ + export function chmodSync(path: PathLike, mode: Mode): void; + /** + * Sets the permissions on the file. No arguments other than a possible exception + * are given to the completion callback. + * + * See the POSIX [`fchmod(2)`](http://man7.org/linux/man-pages/man2/fchmod.2.html) documentation for more detail. + * @since v0.4.7 + */ + export function fchmod(fd: number, mode: Mode, callback: NoParamCallback): void; + export namespace fchmod { + /** + * Asynchronous fchmod(2) - Change permissions of a file. + * @param fd A file descriptor. + * @param mode A file mode. If a string is passed, it is parsed as an octal integer. + */ + function __promisify__(fd: number, mode: Mode): Promise; + } + /** + * Sets the permissions on the file. Returns `undefined`. + * + * See the POSIX [`fchmod(2)`](http://man7.org/linux/man-pages/man2/fchmod.2.html) documentation for more detail. + * @since v0.4.7 + */ + export function fchmodSync(fd: number, mode: Mode): void; + /** + * Changes the permissions on a symbolic link. No arguments other than a possible + * exception are given to the completion callback. + * + * This method is only implemented on macOS. + * + * See the POSIX [`lchmod(2)`](https://www.freebsd.org/cgi/man.cgi?query=lchmod&sektion=2) documentation for more detail. + * @deprecated Since v0.4.7 + */ + export function lchmod(path: PathLike, mode: Mode, callback: NoParamCallback): void; + /** @deprecated */ + export namespace lchmod { + /** + * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param mode A file mode. If a string is passed, it is parsed as an octal integer. + */ + function __promisify__(path: PathLike, mode: Mode): Promise; + } + /** + * Changes the permissions on a symbolic link. Returns `undefined`. + * + * This method is only implemented on macOS. + * + * See the POSIX [`lchmod(2)`](https://www.freebsd.org/cgi/man.cgi?query=lchmod&sektion=2) documentation for more detail. + * @deprecated Since v0.4.7 + */ + export function lchmodSync(path: PathLike, mode: Mode): void; + /** + * Asynchronous [`stat(2)`](http://man7.org/linux/man-pages/man2/stat.2.html). The callback gets two arguments `(err, stats)` where`stats` is an `fs.Stats` object. + * + * In case of an error, the `err.code` will be one of `Common System Errors`. + * + * {@link stat} follows symbolic links. Use {@link lstat} to look at the + * links themselves. + * + * Using `fs.stat()` to check for the existence of a file before calling`fs.open()`, `fs.readFile()`, or `fs.writeFile()` is not recommended. + * Instead, user code should open/read/write the file directly and handle the + * error raised if the file is not available. + * + * To check if a file exists without manipulating it afterwards, {@link access} is recommended. + * + * For example, given the following directory structure: + * + * ```text + * - txtDir + * -- file.txt + * - app.js + * ``` + * + * The next program will check for the stats of the given paths: + * + * ```js + * import { stat } from 'node:fs'; + * + * const pathsToCheck = ['./txtDir', './txtDir/file.txt']; + * + * for (let i = 0; i < pathsToCheck.length; i++) { + * stat(pathsToCheck[i], (err, stats) => { + * console.log(stats.isDirectory()); + * console.log(stats); + * }); + * } + * ``` + * + * The resulting output will resemble: + * + * ```console + * true + * Stats { + * dev: 16777220, + * mode: 16877, + * nlink: 3, + * uid: 501, + * gid: 20, + * rdev: 0, + * blksize: 4096, + * ino: 14214262, + * size: 96, + * blocks: 0, + * atimeMs: 1561174653071.963, + * mtimeMs: 1561174614583.3518, + * ctimeMs: 1561174626623.5366, + * birthtimeMs: 1561174126937.2893, + * atime: 2019-06-22T03:37:33.072Z, + * mtime: 2019-06-22T03:36:54.583Z, + * ctime: 2019-06-22T03:37:06.624Z, + * birthtime: 2019-06-22T03:28:46.937Z + * } + * false + * Stats { + * dev: 16777220, + * mode: 33188, + * nlink: 1, + * uid: 501, + * gid: 20, + * rdev: 0, + * blksize: 4096, + * ino: 14214074, + * size: 8, + * blocks: 8, + * atimeMs: 1561174616618.8555, + * mtimeMs: 1561174614584, + * ctimeMs: 1561174614583.8145, + * birthtimeMs: 1561174007710.7478, + * atime: 2019-06-22T03:36:56.619Z, + * mtime: 2019-06-22T03:36:54.584Z, + * ctime: 2019-06-22T03:36:54.584Z, + * birthtime: 2019-06-22T03:26:47.711Z + * } + * ``` + * @since v0.0.2 + */ + export function stat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void; + export function stat( + path: PathLike, + options: + | (StatOptions & { + bigint?: false | undefined; + }) + | undefined, + callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void, + ): void; + export function stat( + path: PathLike, + options: StatOptions & { + bigint: true; + }, + callback: (err: NodeJS.ErrnoException | null, stats: BigIntStats) => void, + ): void; + export function stat( + path: PathLike, + options: StatOptions | undefined, + callback: (err: NodeJS.ErrnoException | null, stats: Stats | BigIntStats) => void, + ): void; + export namespace stat { + /** + * Asynchronous stat(2) - Get file status. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + function __promisify__( + path: PathLike, + options?: StatOptions & { + bigint?: false | undefined; + }, + ): Promise; + function __promisify__( + path: PathLike, + options: StatOptions & { + bigint: true; + }, + ): Promise; + function __promisify__(path: PathLike, options?: StatOptions): Promise; + } + export interface StatSyncFn extends Function { + (path: PathLike, options?: undefined): Stats; + ( + path: PathLike, + options?: StatSyncOptions & { + bigint?: false | undefined; + throwIfNoEntry: false; + }, + ): Stats | undefined; + ( + path: PathLike, + options: StatSyncOptions & { + bigint: true; + throwIfNoEntry: false; + }, + ): BigIntStats | undefined; + ( + path: PathLike, + options?: StatSyncOptions & { + bigint?: false | undefined; + }, + ): Stats; + ( + path: PathLike, + options: StatSyncOptions & { + bigint: true; + }, + ): BigIntStats; + ( + path: PathLike, + options: StatSyncOptions & { + bigint: boolean; + throwIfNoEntry?: false | undefined; + }, + ): Stats | BigIntStats; + (path: PathLike, options?: StatSyncOptions): Stats | BigIntStats | undefined; + } + /** + * Synchronous stat(2) - Get file status. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export const statSync: StatSyncFn; + /** + * Invokes the callback with the `fs.Stats` for the file descriptor. + * + * See the POSIX [`fstat(2)`](http://man7.org/linux/man-pages/man2/fstat.2.html) documentation for more detail. + * @since v0.1.95 + */ + export function fstat(fd: number, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void; + export function fstat( + fd: number, + options: + | (StatOptions & { + bigint?: false | undefined; + }) + | undefined, + callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void, + ): void; + export function fstat( + fd: number, + options: StatOptions & { + bigint: true; + }, + callback: (err: NodeJS.ErrnoException | null, stats: BigIntStats) => void, + ): void; + export function fstat( + fd: number, + options: StatOptions | undefined, + callback: (err: NodeJS.ErrnoException | null, stats: Stats | BigIntStats) => void, + ): void; + export namespace fstat { + /** + * Asynchronous fstat(2) - Get file status. + * @param fd A file descriptor. + */ + function __promisify__( + fd: number, + options?: StatOptions & { + bigint?: false | undefined; + }, + ): Promise; + function __promisify__( + fd: number, + options: StatOptions & { + bigint: true; + }, + ): Promise; + function __promisify__(fd: number, options?: StatOptions): Promise; + } + /** + * Retrieves the `fs.Stats` for the file descriptor. + * + * See the POSIX [`fstat(2)`](http://man7.org/linux/man-pages/man2/fstat.2.html) documentation for more detail. + * @since v0.1.95 + */ + export function fstatSync( + fd: number, + options?: StatOptions & { + bigint?: false | undefined; + }, + ): Stats; + export function fstatSync( + fd: number, + options: StatOptions & { + bigint: true; + }, + ): BigIntStats; + export function fstatSync(fd: number, options?: StatOptions): Stats | BigIntStats; + /** + * Retrieves the `fs.Stats` for the symbolic link referred to by the path. + * The callback gets two arguments `(err, stats)` where `stats` is a `fs.Stats` object. `lstat()` is identical to `stat()`, except that if `path` is a symbolic + * link, then the link itself is stat-ed, not the file that it refers to. + * + * See the POSIX [`lstat(2)`](http://man7.org/linux/man-pages/man2/lstat.2.html) documentation for more details. + * @since v0.1.30 + */ + export function lstat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void; + export function lstat( + path: PathLike, + options: + | (StatOptions & { + bigint?: false | undefined; + }) + | undefined, + callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void, + ): void; + export function lstat( + path: PathLike, + options: StatOptions & { + bigint: true; + }, + callback: (err: NodeJS.ErrnoException | null, stats: BigIntStats) => void, + ): void; + export function lstat( + path: PathLike, + options: StatOptions | undefined, + callback: (err: NodeJS.ErrnoException | null, stats: Stats | BigIntStats) => void, + ): void; + export namespace lstat { + /** + * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + function __promisify__( + path: PathLike, + options?: StatOptions & { + bigint?: false | undefined; + }, + ): Promise; + function __promisify__( + path: PathLike, + options: StatOptions & { + bigint: true; + }, + ): Promise; + function __promisify__(path: PathLike, options?: StatOptions): Promise; + } + /** + * Asynchronous [`statfs(2)`](http://man7.org/linux/man-pages/man2/statfs.2.html). Returns information about the mounted file system which + * contains `path`. The callback gets two arguments `(err, stats)` where `stats`is an `fs.StatFs` object. + * + * In case of an error, the `err.code` will be one of `Common System Errors`. + * @since v19.6.0, v18.15.0 + * @param path A path to an existing file or directory on the file system to be queried. + */ + export function statfs(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: StatsFs) => void): void; + export function statfs( + path: PathLike, + options: + | (StatFsOptions & { + bigint?: false | undefined; + }) + | undefined, + callback: (err: NodeJS.ErrnoException | null, stats: StatsFs) => void, + ): void; + export function statfs( + path: PathLike, + options: StatFsOptions & { + bigint: true; + }, + callback: (err: NodeJS.ErrnoException | null, stats: BigIntStatsFs) => void, + ): void; + export function statfs( + path: PathLike, + options: StatFsOptions | undefined, + callback: (err: NodeJS.ErrnoException | null, stats: StatsFs | BigIntStatsFs) => void, + ): void; + export namespace statfs { + /** + * Asynchronous statfs(2) - Returns information about the mounted file system which contains path. The callback gets two arguments (err, stats) where stats is an object. + * @param path A path to an existing file or directory on the file system to be queried. + */ + function __promisify__( + path: PathLike, + options?: StatFsOptions & { + bigint?: false | undefined; + }, + ): Promise; + function __promisify__( + path: PathLike, + options: StatFsOptions & { + bigint: true; + }, + ): Promise; + function __promisify__(path: PathLike, options?: StatFsOptions): Promise; + } + /** + * Synchronous [`statfs(2)`](http://man7.org/linux/man-pages/man2/statfs.2.html). Returns information about the mounted file system which + * contains `path`. + * + * In case of an error, the `err.code` will be one of `Common System Errors`. + * @since v19.6.0, v18.15.0 + * @param path A path to an existing file or directory on the file system to be queried. + */ + export function statfsSync( + path: PathLike, + options?: StatFsOptions & { + bigint?: false | undefined; + }, + ): StatsFs; + export function statfsSync( + path: PathLike, + options: StatFsOptions & { + bigint: true; + }, + ): BigIntStatsFs; + export function statfsSync(path: PathLike, options?: StatFsOptions): StatsFs | BigIntStatsFs; + /** + * Synchronous lstat(2) - Get file status. Does not dereference symbolic links. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export const lstatSync: StatSyncFn; + /** + * Creates a new link from the `existingPath` to the `newPath`. See the POSIX [`link(2)`](http://man7.org/linux/man-pages/man2/link.2.html) documentation for more detail. No arguments other than + * a possible + * exception are given to the completion callback. + * @since v0.1.31 + */ + export function link(existingPath: PathLike, newPath: PathLike, callback: NoParamCallback): void; + export namespace link { + /** + * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file. + * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + function __promisify__(existingPath: PathLike, newPath: PathLike): Promise; + } + /** + * Creates a new link from the `existingPath` to the `newPath`. See the POSIX [`link(2)`](http://man7.org/linux/man-pages/man2/link.2.html) documentation for more detail. Returns `undefined`. + * @since v0.1.31 + */ + export function linkSync(existingPath: PathLike, newPath: PathLike): void; + /** + * Creates the link called `path` pointing to `target`. No arguments other than a + * possible exception are given to the completion callback. + * + * See the POSIX [`symlink(2)`](http://man7.org/linux/man-pages/man2/symlink.2.html) documentation for more details. + * + * The `type` argument is only available on Windows and ignored on other platforms. + * It can be set to `'dir'`, `'file'`, or `'junction'`. If the `type` argument is + * not a string, Node.js will autodetect `target` type and use `'file'` or `'dir'`. + * If the `target` does not exist, `'file'` will be used. Windows junction points + * require the destination path to be absolute. When using `'junction'`, the`target` argument will automatically be normalized to absolute path. Junction + * points on NTFS volumes can only point to directories. + * + * Relative targets are relative to the link's parent directory. + * + * ```js + * import { symlink } from 'node:fs'; + * + * symlink('./mew', './mewtwo', callback); + * ``` + * + * The above example creates a symbolic link `mewtwo` which points to `mew` in the + * same directory: + * + * ```bash + * $ tree . + * . + * ├── mew + * └── mewtwo -> ./mew + * ``` + * @since v0.1.31 + * @param [type='null'] + */ + export function symlink( + target: PathLike, + path: PathLike, + type: symlink.Type | undefined | null, + callback: NoParamCallback, + ): void; + /** + * Asynchronous symlink(2) - Create a new symbolic link to an existing file. + * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. + * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. + */ + export function symlink(target: PathLike, path: PathLike, callback: NoParamCallback): void; + export namespace symlink { + /** + * Asynchronous symlink(2) - Create a new symbolic link to an existing file. + * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol. + * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol. + * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms). + * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path. + */ + function __promisify__(target: PathLike, path: PathLike, type?: string | null): Promise; + type Type = "dir" | "file" | "junction"; + } + /** + * Returns `undefined`. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link symlink}. + * @since v0.1.31 + * @param [type='null'] + */ + export function symlinkSync(target: PathLike, path: PathLike, type?: symlink.Type | null): void; + /** + * Reads the contents of the symbolic link referred to by `path`. The callback gets + * two arguments `(err, linkString)`. + * + * See the POSIX [`readlink(2)`](http://man7.org/linux/man-pages/man2/readlink.2.html) documentation for more details. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the link path passed to the callback. If the `encoding` is set to `'buffer'`, + * the link path returned will be passed as a `Buffer` object. + * @since v0.1.31 + */ + export function readlink( + path: PathLike, + options: EncodingOption, + callback: (err: NodeJS.ErrnoException | null, linkString: string) => void, + ): void; + /** + * Asynchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readlink( + path: PathLike, + options: BufferEncodingOption, + callback: (err: NodeJS.ErrnoException | null, linkString: Buffer) => void, + ): void; + /** + * Asynchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readlink( + path: PathLike, + options: EncodingOption, + callback: (err: NodeJS.ErrnoException | null, linkString: string | Buffer) => void, + ): void; + /** + * Asynchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export function readlink( + path: PathLike, + callback: (err: NodeJS.ErrnoException | null, linkString: string) => void, + ): void; + export namespace readlink { + /** + * Asynchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(path: PathLike, options?: EncodingOption): Promise; + /** + * Asynchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(path: PathLike, options: BufferEncodingOption): Promise; + /** + * Asynchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(path: PathLike, options?: EncodingOption): Promise; + } + /** + * Returns the symbolic link's string value. + * + * See the POSIX [`readlink(2)`](http://man7.org/linux/man-pages/man2/readlink.2.html) documentation for more details. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the link path returned. If the `encoding` is set to `'buffer'`, + * the link path returned will be passed as a `Buffer` object. + * @since v0.1.31 + */ + export function readlinkSync(path: PathLike, options?: EncodingOption): string; + /** + * Synchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readlinkSync(path: PathLike, options: BufferEncodingOption): Buffer; + /** + * Synchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readlinkSync(path: PathLike, options?: EncodingOption): string | Buffer; + /** + * Asynchronously computes the canonical pathname by resolving `.`, `..`, and + * symbolic links. + * + * A canonical pathname is not necessarily unique. Hard links and bind mounts can + * expose a file system entity through many pathnames. + * + * This function behaves like [`realpath(3)`](http://man7.org/linux/man-pages/man3/realpath.3.html), with some exceptions: + * + * 1. No case conversion is performed on case-insensitive file systems. + * 2. The maximum number of symbolic links is platform-independent and generally + * (much) higher than what the native [`realpath(3)`](http://man7.org/linux/man-pages/man3/realpath.3.html) implementation supports. + * + * The `callback` gets two arguments `(err, resolvedPath)`. May use `process.cwd`to resolve relative paths. + * + * Only paths that can be converted to UTF8 strings are supported. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the path passed to the callback. If the `encoding` is set to `'buffer'`, + * the path returned will be passed as a `Buffer` object. + * + * If `path` resolves to a socket or a pipe, the function will return a system + * dependent name for that object. + * @since v0.1.31 + */ + export function realpath( + path: PathLike, + options: EncodingOption, + callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void, + ): void; + /** + * Asynchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function realpath( + path: PathLike, + options: BufferEncodingOption, + callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void, + ): void; + /** + * Asynchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function realpath( + path: PathLike, + options: EncodingOption, + callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void, + ): void; + /** + * Asynchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export function realpath( + path: PathLike, + callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void, + ): void; + export namespace realpath { + /** + * Asynchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(path: PathLike, options?: EncodingOption): Promise; + /** + * Asynchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(path: PathLike, options: BufferEncodingOption): Promise; + /** + * Asynchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(path: PathLike, options?: EncodingOption): Promise; + /** + * Asynchronous [`realpath(3)`](http://man7.org/linux/man-pages/man3/realpath.3.html). + * + * The `callback` gets two arguments `(err, resolvedPath)`. + * + * Only paths that can be converted to UTF8 strings are supported. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the path passed to the callback. If the `encoding` is set to `'buffer'`, + * the path returned will be passed as a `Buffer` object. + * + * On Linux, when Node.js is linked against musl libc, the procfs file system must + * be mounted on `/proc` in order for this function to work. Glibc does not have + * this restriction. + * @since v9.2.0 + */ + function native( + path: PathLike, + options: EncodingOption, + callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void, + ): void; + function native( + path: PathLike, + options: BufferEncodingOption, + callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void, + ): void; + function native( + path: PathLike, + options: EncodingOption, + callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void, + ): void; + function native( + path: PathLike, + callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void, + ): void; + } + /** + * Returns the resolved pathname. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link realpath}. + * @since v0.1.31 + */ + export function realpathSync(path: PathLike, options?: EncodingOption): string; + /** + * Synchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function realpathSync(path: PathLike, options: BufferEncodingOption): Buffer; + /** + * Synchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function realpathSync(path: PathLike, options?: EncodingOption): string | Buffer; + export namespace realpathSync { + function native(path: PathLike, options?: EncodingOption): string; + function native(path: PathLike, options: BufferEncodingOption): Buffer; + function native(path: PathLike, options?: EncodingOption): string | Buffer; + } + /** + * Asynchronously removes a file or symbolic link. No arguments other than a + * possible exception are given to the completion callback. + * + * ```js + * import { unlink } from 'node:fs'; + * // Assuming that 'path/file.txt' is a regular file. + * unlink('path/file.txt', (err) => { + * if (err) throw err; + * console.log('path/file.txt was deleted'); + * }); + * ``` + * + * `fs.unlink()` will not work on a directory, empty or otherwise. To remove a + * directory, use {@link rmdir}. + * + * See the POSIX [`unlink(2)`](http://man7.org/linux/man-pages/man2/unlink.2.html) documentation for more details. + * @since v0.0.2 + */ + export function unlink(path: PathLike, callback: NoParamCallback): void; + export namespace unlink { + /** + * Asynchronous unlink(2) - delete a name and possibly the file it refers to. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + function __promisify__(path: PathLike): Promise; + } + /** + * Synchronous [`unlink(2)`](http://man7.org/linux/man-pages/man2/unlink.2.html). Returns `undefined`. + * @since v0.1.21 + */ + export function unlinkSync(path: PathLike): void; + export interface RmDirOptions { + /** + * If an `EBUSY`, `EMFILE`, `ENFILE`, `ENOTEMPTY`, or + * `EPERM` error is encountered, Node.js will retry the operation with a linear + * backoff wait of `retryDelay` ms longer on each try. This option represents the + * number of retries. This option is ignored if the `recursive` option is not + * `true`. + * @default 0 + */ + maxRetries?: number | undefined; + /** + * @deprecated since v14.14.0 In future versions of Node.js and will trigger a warning + * `fs.rmdir(path, { recursive: true })` will throw if `path` does not exist or is a file. + * Use `fs.rm(path, { recursive: true, force: true })` instead. + * + * If `true`, perform a recursive directory removal. In + * recursive mode, operations are retried on failure. + * @default false + */ + recursive?: boolean | undefined; + /** + * The amount of time in milliseconds to wait between retries. + * This option is ignored if the `recursive` option is not `true`. + * @default 100 + */ + retryDelay?: number | undefined; + } + /** + * Asynchronous [`rmdir(2)`](http://man7.org/linux/man-pages/man2/rmdir.2.html). No arguments other than a possible exception are given + * to the completion callback. + * + * Using `fs.rmdir()` on a file (not a directory) results in an `ENOENT` error on + * Windows and an `ENOTDIR` error on POSIX. + * + * To get a behavior similar to the `rm -rf` Unix command, use {@link rm} with options `{ recursive: true, force: true }`. + * @since v0.0.2 + */ + export function rmdir(path: PathLike, callback: NoParamCallback): void; + export function rmdir(path: PathLike, options: RmDirOptions, callback: NoParamCallback): void; + export namespace rmdir { + /** + * Asynchronous rmdir(2) - delete a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + function __promisify__(path: PathLike, options?: RmDirOptions): Promise; + } + /** + * Synchronous [`rmdir(2)`](http://man7.org/linux/man-pages/man2/rmdir.2.html). Returns `undefined`. + * + * Using `fs.rmdirSync()` on a file (not a directory) results in an `ENOENT` error + * on Windows and an `ENOTDIR` error on POSIX. + * + * To get a behavior similar to the `rm -rf` Unix command, use {@link rmSync} with options `{ recursive: true, force: true }`. + * @since v0.1.21 + */ + export function rmdirSync(path: PathLike, options?: RmDirOptions): void; + export interface RmOptions { + /** + * When `true`, exceptions will be ignored if `path` does not exist. + * @default false + */ + force?: boolean | undefined; + /** + * If an `EBUSY`, `EMFILE`, `ENFILE`, `ENOTEMPTY`, or + * `EPERM` error is encountered, Node.js will retry the operation with a linear + * backoff wait of `retryDelay` ms longer on each try. This option represents the + * number of retries. This option is ignored if the `recursive` option is not + * `true`. + * @default 0 + */ + maxRetries?: number | undefined; + /** + * If `true`, perform a recursive directory removal. In + * recursive mode, operations are retried on failure. + * @default false + */ + recursive?: boolean | undefined; + /** + * The amount of time in milliseconds to wait between retries. + * This option is ignored if the `recursive` option is not `true`. + * @default 100 + */ + retryDelay?: number | undefined; + } + /** + * Asynchronously removes files and directories (modeled on the standard POSIX `rm`utility). No arguments other than a possible exception are given to the + * completion callback. + * @since v14.14.0 + */ + export function rm(path: PathLike, callback: NoParamCallback): void; + export function rm(path: PathLike, options: RmOptions, callback: NoParamCallback): void; + export namespace rm { + /** + * Asynchronously removes files and directories (modeled on the standard POSIX `rm` utility). + */ + function __promisify__(path: PathLike, options?: RmOptions): Promise; + } + /** + * Synchronously removes files and directories (modeled on the standard POSIX `rm`utility). Returns `undefined`. + * @since v14.14.0 + */ + export function rmSync(path: PathLike, options?: RmOptions): void; + export interface MakeDirectoryOptions { + /** + * Indicates whether parent folders should be created. + * If a folder was created, the path to the first created folder will be returned. + * @default false + */ + recursive?: boolean | undefined; + /** + * A file mode. If a string is passed, it is parsed as an octal integer. If not specified + * @default 0o777 + */ + mode?: Mode | undefined; + } + /** + * Asynchronously creates a directory. + * + * The callback is given a possible exception and, if `recursive` is `true`, the + * first directory path created, `(err[, path])`.`path` can still be `undefined` when `recursive` is `true`, if no directory was + * created (for instance, if it was previously created). + * + * The optional `options` argument can be an integer specifying `mode` (permission + * and sticky bits), or an object with a `mode` property and a `recursive`property indicating whether parent directories should be created. Calling`fs.mkdir()` when `path` is a directory that + * exists results in an error only + * when `recursive` is false. If `recursive` is false and the directory exists, + * an `EEXIST` error occurs. + * + * ```js + * import { mkdir } from 'node:fs'; + * + * // Create ./tmp/a/apple, regardless of whether ./tmp and ./tmp/a exist. + * mkdir('./tmp/a/apple', { recursive: true }, (err) => { + * if (err) throw err; + * }); + * ``` + * + * On Windows, using `fs.mkdir()` on the root directory even with recursion will + * result in an error: + * + * ```js + * import { mkdir } from 'node:fs'; + * + * mkdir('/', { recursive: true }, (err) => { + * // => [Error: EPERM: operation not permitted, mkdir 'C:\'] + * }); + * ``` + * + * See the POSIX [`mkdir(2)`](http://man7.org/linux/man-pages/man2/mkdir.2.html) documentation for more details. + * @since v0.1.8 + */ + export function mkdir( + path: PathLike, + options: MakeDirectoryOptions & { + recursive: true; + }, + callback: (err: NodeJS.ErrnoException | null, path?: string) => void, + ): void; + /** + * Asynchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + export function mkdir( + path: PathLike, + options: + | Mode + | (MakeDirectoryOptions & { + recursive?: false | undefined; + }) + | null + | undefined, + callback: NoParamCallback, + ): void; + /** + * Asynchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + export function mkdir( + path: PathLike, + options: Mode | MakeDirectoryOptions | null | undefined, + callback: (err: NodeJS.ErrnoException | null, path?: string) => void, + ): void; + /** + * Asynchronous mkdir(2) - create a directory with a mode of `0o777`. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export function mkdir(path: PathLike, callback: NoParamCallback): void; + export namespace mkdir { + /** + * Asynchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + function __promisify__( + path: PathLike, + options: MakeDirectoryOptions & { + recursive: true; + }, + ): Promise; + /** + * Asynchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + function __promisify__( + path: PathLike, + options?: + | Mode + | (MakeDirectoryOptions & { + recursive?: false | undefined; + }) + | null, + ): Promise; + /** + * Asynchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + function __promisify__( + path: PathLike, + options?: Mode | MakeDirectoryOptions | null, + ): Promise; + } + /** + * Synchronously creates a directory. Returns `undefined`, or if `recursive` is`true`, the first directory path created. + * This is the synchronous version of {@link mkdir}. + * + * See the POSIX [`mkdir(2)`](http://man7.org/linux/man-pages/man2/mkdir.2.html) documentation for more details. + * @since v0.1.21 + */ + export function mkdirSync( + path: PathLike, + options: MakeDirectoryOptions & { + recursive: true; + }, + ): string | undefined; + /** + * Synchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + export function mkdirSync( + path: PathLike, + options?: + | Mode + | (MakeDirectoryOptions & { + recursive?: false | undefined; + }) + | null, + ): void; + /** + * Synchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + export function mkdirSync(path: PathLike, options?: Mode | MakeDirectoryOptions | null): string | undefined; + /** + * Creates a unique temporary directory. + * + * Generates six random characters to be appended behind a required`prefix` to create a unique temporary directory. Due to platform + * inconsistencies, avoid trailing `X` characters in `prefix`. Some platforms, + * notably the BSDs, can return more than six random characters, and replace + * trailing `X` characters in `prefix` with random characters. + * + * The created directory path is passed as a string to the callback's second + * parameter. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use. + * + * ```js + * import { mkdtemp } from 'node:fs'; + * import { join } from 'node:path'; + * import { tmpdir } from 'node:os'; + * + * mkdtemp(join(tmpdir(), 'foo-'), (err, directory) => { + * if (err) throw err; + * console.log(directory); + * // Prints: /tmp/foo-itXde2 or C:\Users\...\AppData\Local\Temp\foo-itXde2 + * }); + * ``` + * + * The `fs.mkdtemp()` method will append the six randomly selected characters + * directly to the `prefix` string. For instance, given a directory `/tmp`, if the + * intention is to create a temporary directory _within_`/tmp`, the `prefix`must end with a trailing platform-specific path separator + * (`require('node:path').sep`). + * + * ```js + * import { tmpdir } from 'node:os'; + * import { mkdtemp } from 'node:fs'; + * + * // The parent directory for the new temporary directory + * const tmpDir = tmpdir(); + * + * // This method is *INCORRECT*: + * mkdtemp(tmpDir, (err, directory) => { + * if (err) throw err; + * console.log(directory); + * // Will print something similar to `/tmpabc123`. + * // A new temporary directory is created at the file system root + * // rather than *within* the /tmp directory. + * }); + * + * // This method is *CORRECT*: + * import { sep } from 'node:path'; + * mkdtemp(`${tmpDir}${sep}`, (err, directory) => { + * if (err) throw err; + * console.log(directory); + * // Will print something similar to `/tmp/abc123`. + * // A new temporary directory is created within + * // the /tmp directory. + * }); + * ``` + * @since v5.10.0 + */ + export function mkdtemp( + prefix: string, + options: EncodingOption, + callback: (err: NodeJS.ErrnoException | null, folder: string) => void, + ): void; + /** + * Asynchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function mkdtemp( + prefix: string, + options: + | "buffer" + | { + encoding: "buffer"; + }, + callback: (err: NodeJS.ErrnoException | null, folder: Buffer) => void, + ): void; + /** + * Asynchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function mkdtemp( + prefix: string, + options: EncodingOption, + callback: (err: NodeJS.ErrnoException | null, folder: string | Buffer) => void, + ): void; + /** + * Asynchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + */ + export function mkdtemp( + prefix: string, + callback: (err: NodeJS.ErrnoException | null, folder: string) => void, + ): void; + export namespace mkdtemp { + /** + * Asynchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(prefix: string, options?: EncodingOption): Promise; + /** + * Asynchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(prefix: string, options: BufferEncodingOption): Promise; + /** + * Asynchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__(prefix: string, options?: EncodingOption): Promise; + } + /** + * Returns the created directory path. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link mkdtemp}. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use. + * @since v5.10.0 + */ + export function mkdtempSync(prefix: string, options?: EncodingOption): string; + /** + * Synchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function mkdtempSync(prefix: string, options: BufferEncodingOption): Buffer; + /** + * Synchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required prefix to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function mkdtempSync(prefix: string, options?: EncodingOption): string | Buffer; + /** + * Reads the contents of a directory. The callback gets two arguments `(err, files)`where `files` is an array of the names of the files in the directory excluding`'.'` and `'..'`. + * + * See the POSIX [`readdir(3)`](http://man7.org/linux/man-pages/man3/readdir.3.html) documentation for more details. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the filenames passed to the callback. If the `encoding` is set to `'buffer'`, + * the filenames returned will be passed as `Buffer` objects. + * + * If `options.withFileTypes` is set to `true`, the `files` array will contain `fs.Dirent` objects. + * @since v0.1.8 + */ + export function readdir( + path: PathLike, + options: + | { + encoding: BufferEncoding | null; + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + } + | BufferEncoding + | undefined + | null, + callback: (err: NodeJS.ErrnoException | null, files: string[]) => void, + ): void; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readdir( + path: PathLike, + options: + | { + encoding: "buffer"; + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + } + | "buffer", + callback: (err: NodeJS.ErrnoException | null, files: Buffer[]) => void, + ): void; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readdir( + path: PathLike, + options: + | (ObjectEncodingOptions & { + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + }) + | BufferEncoding + | undefined + | null, + callback: (err: NodeJS.ErrnoException | null, files: string[] | Buffer[]) => void, + ): void; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export function readdir( + path: PathLike, + callback: (err: NodeJS.ErrnoException | null, files: string[]) => void, + ): void; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options If called with `withFileTypes: true` the result data will be an array of Dirent. + */ + export function readdir( + path: PathLike, + options: ObjectEncodingOptions & { + withFileTypes: true; + recursive?: boolean | undefined; + }, + callback: (err: NodeJS.ErrnoException | null, files: Dirent[]) => void, + ): void; + export namespace readdir { + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__( + path: PathLike, + options?: + | { + encoding: BufferEncoding | null; + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + } + | BufferEncoding + | null, + ): Promise; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__( + path: PathLike, + options: + | "buffer" + | { + encoding: "buffer"; + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + }, + ): Promise; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function __promisify__( + path: PathLike, + options?: + | (ObjectEncodingOptions & { + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + }) + | BufferEncoding + | null, + ): Promise; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options If called with `withFileTypes: true` the result data will be an array of Dirent + */ + function __promisify__( + path: PathLike, + options: ObjectEncodingOptions & { + withFileTypes: true; + recursive?: boolean | undefined; + }, + ): Promise; + } + /** + * Reads the contents of the directory. + * + * See the POSIX [`readdir(3)`](http://man7.org/linux/man-pages/man3/readdir.3.html) documentation for more details. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the filenames returned. If the `encoding` is set to `'buffer'`, + * the filenames returned will be passed as `Buffer` objects. + * + * If `options.withFileTypes` is set to `true`, the result will contain `fs.Dirent` objects. + * @since v0.1.21 + */ + export function readdirSync( + path: PathLike, + options?: + | { + encoding: BufferEncoding | null; + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + } + | BufferEncoding + | null, + ): string[]; + /** + * Synchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readdirSync( + path: PathLike, + options: + | { + encoding: "buffer"; + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + } + | "buffer", + ): Buffer[]; + /** + * Synchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readdirSync( + path: PathLike, + options?: + | (ObjectEncodingOptions & { + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + }) + | BufferEncoding + | null, + ): string[] | Buffer[]; + /** + * Synchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options If called with `withFileTypes: true` the result data will be an array of Dirent. + */ + export function readdirSync( + path: PathLike, + options: ObjectEncodingOptions & { + withFileTypes: true; + recursive?: boolean | undefined; + }, + ): Dirent[]; + /** + * Closes the file descriptor. No arguments other than a possible exception are + * given to the completion callback. + * + * Calling `fs.close()` on any file descriptor (`fd`) that is currently in use + * through any other `fs` operation may lead to undefined behavior. + * + * See the POSIX [`close(2)`](http://man7.org/linux/man-pages/man2/close.2.html) documentation for more detail. + * @since v0.0.2 + */ + export function close(fd: number, callback?: NoParamCallback): void; + export namespace close { + /** + * Asynchronous close(2) - close a file descriptor. + * @param fd A file descriptor. + */ + function __promisify__(fd: number): Promise; + } + /** + * Closes the file descriptor. Returns `undefined`. + * + * Calling `fs.closeSync()` on any file descriptor (`fd`) that is currently in use + * through any other `fs` operation may lead to undefined behavior. + * + * See the POSIX [`close(2)`](http://man7.org/linux/man-pages/man2/close.2.html) documentation for more detail. + * @since v0.1.21 + */ + export function closeSync(fd: number): void; + /** + * Asynchronous file open. See the POSIX [`open(2)`](http://man7.org/linux/man-pages/man2/open.2.html) documentation for more details. + * + * `mode` sets the file mode (permission and sticky bits), but only if the file was + * created. On Windows, only the write permission can be manipulated; see {@link chmod}. + * + * The callback gets two arguments `(err, fd)`. + * + * Some characters (`< > : " / \ | ? *`) are reserved under Windows as documented + * by [Naming Files, Paths, and Namespaces](https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file). Under NTFS, if the filename contains + * a colon, Node.js will open a file system stream, as described by [this MSDN page](https://docs.microsoft.com/en-us/windows/desktop/FileIO/using-streams). + * + * Functions based on `fs.open()` exhibit this behavior as well:`fs.writeFile()`, `fs.readFile()`, etc. + * @since v0.0.2 + * @param [flags='r'] See `support of file system `flags``. + * @param [mode=0o666] + */ + export function open( + path: PathLike, + flags: OpenMode | undefined, + mode: Mode | undefined | null, + callback: (err: NodeJS.ErrnoException | null, fd: number) => void, + ): void; + /** + * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param [flags='r'] See `support of file system `flags``. + */ + export function open( + path: PathLike, + flags: OpenMode | undefined, + callback: (err: NodeJS.ErrnoException | null, fd: number) => void, + ): void; + /** + * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export function open(path: PathLike, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void; + export namespace open { + /** + * Asynchronous open(2) - open and possibly create a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`. + */ + function __promisify__(path: PathLike, flags: OpenMode, mode?: Mode | null): Promise; + } + /** + * Returns an integer representing the file descriptor. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link open}. + * @since v0.1.21 + * @param [flags='r'] + * @param [mode=0o666] + */ + export function openSync(path: PathLike, flags: OpenMode, mode?: Mode | null): number; + /** + * Change the file system timestamps of the object referenced by `path`. + * + * The `atime` and `mtime` arguments follow these rules: + * + * * Values can be either numbers representing Unix epoch time in seconds,`Date`s, or a numeric string like `'123456789.0'`. + * * If the value can not be converted to a number, or is `NaN`, `Infinity`, or`-Infinity`, an `Error` will be thrown. + * @since v0.4.2 + */ + export function utimes(path: PathLike, atime: TimeLike, mtime: TimeLike, callback: NoParamCallback): void; + export namespace utimes { + /** + * Asynchronously change file timestamps of the file referenced by the supplied path. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param atime The last access time. If a string is provided, it will be coerced to number. + * @param mtime The last modified time. If a string is provided, it will be coerced to number. + */ + function __promisify__(path: PathLike, atime: TimeLike, mtime: TimeLike): Promise; + } + /** + * Returns `undefined`. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link utimes}. + * @since v0.4.2 + */ + export function utimesSync(path: PathLike, atime: TimeLike, mtime: TimeLike): void; + /** + * Change the file system timestamps of the object referenced by the supplied file + * descriptor. See {@link utimes}. + * @since v0.4.2 + */ + export function futimes(fd: number, atime: TimeLike, mtime: TimeLike, callback: NoParamCallback): void; + export namespace futimes { + /** + * Asynchronously change file timestamps of the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + * @param atime The last access time. If a string is provided, it will be coerced to number. + * @param mtime The last modified time. If a string is provided, it will be coerced to number. + */ + function __promisify__(fd: number, atime: TimeLike, mtime: TimeLike): Promise; + } + /** + * Synchronous version of {@link futimes}. Returns `undefined`. + * @since v0.4.2 + */ + export function futimesSync(fd: number, atime: TimeLike, mtime: TimeLike): void; + /** + * Request that all data for the open file descriptor is flushed to the storage + * device. The specific implementation is operating system and device specific. + * Refer to the POSIX [`fsync(2)`](http://man7.org/linux/man-pages/man2/fsync.2.html) documentation for more detail. No arguments other + * than a possible exception are given to the completion callback. + * @since v0.1.96 + */ + export function fsync(fd: number, callback: NoParamCallback): void; + export namespace fsync { + /** + * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device. + * @param fd A file descriptor. + */ + function __promisify__(fd: number): Promise; + } + /** + * Request that all data for the open file descriptor is flushed to the storage + * device. The specific implementation is operating system and device specific. + * Refer to the POSIX [`fsync(2)`](http://man7.org/linux/man-pages/man2/fsync.2.html) documentation for more detail. Returns `undefined`. + * @since v0.1.96 + */ + export function fsyncSync(fd: number): void; + /** + * Write `buffer` to the file specified by `fd`. + * + * `offset` determines the part of the buffer to be written, and `length` is + * an integer specifying the number of bytes to write. + * + * `position` refers to the offset from the beginning of the file where this data + * should be written. If `typeof position !== 'number'`, the data will be written + * at the current position. See [`pwrite(2)`](http://man7.org/linux/man-pages/man2/pwrite.2.html). + * + * The callback will be given three arguments `(err, bytesWritten, buffer)` where`bytesWritten` specifies how many _bytes_ were written from `buffer`. + * + * If this method is invoked as its `util.promisify()` ed version, it returns + * a promise for an `Object` with `bytesWritten` and `buffer` properties. + * + * It is unsafe to use `fs.write()` multiple times on the same file without waiting + * for the callback. For this scenario, {@link createWriteStream} is + * recommended. + * + * On Linux, positional writes don't work when the file is opened in append mode. + * The kernel ignores the position argument and always appends the data to + * the end of the file. + * @since v0.0.2 + * @param [offset=0] + * @param [length=buffer.byteLength - offset] + * @param [position='null'] + */ + export function write( + fd: number, + buffer: TBuffer, + offset: number | undefined | null, + length: number | undefined | null, + position: number | undefined | null, + callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void, + ): void; + /** + * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. + * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. + */ + export function write( + fd: number, + buffer: TBuffer, + offset: number | undefined | null, + length: number | undefined | null, + callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void, + ): void; + /** + * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. + */ + export function write( + fd: number, + buffer: TBuffer, + offset: number | undefined | null, + callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void, + ): void; + /** + * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + */ + export function write( + fd: number, + buffer: TBuffer, + callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void, + ): void; + /** + * Asynchronously writes `string` to the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + * @param string A string to write. + * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. + * @param encoding The expected string encoding. + */ + export function write( + fd: number, + string: string, + position: number | undefined | null, + encoding: BufferEncoding | undefined | null, + callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void, + ): void; + /** + * Asynchronously writes `string` to the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + * @param string A string to write. + * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. + */ + export function write( + fd: number, + string: string, + position: number | undefined | null, + callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void, + ): void; + /** + * Asynchronously writes `string` to the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + * @param string A string to write. + */ + export function write( + fd: number, + string: string, + callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void, + ): void; + export namespace write { + /** + * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + * @param offset The part of the buffer to be written. If not supplied, defaults to `0`. + * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`. + * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. + */ + function __promisify__( + fd: number, + buffer?: TBuffer, + offset?: number, + length?: number, + position?: number | null, + ): Promise<{ + bytesWritten: number; + buffer: TBuffer; + }>; + /** + * Asynchronously writes `string` to the file referenced by the supplied file descriptor. + * @param fd A file descriptor. + * @param string A string to write. + * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. + * @param encoding The expected string encoding. + */ + function __promisify__( + fd: number, + string: string, + position?: number | null, + encoding?: BufferEncoding | null, + ): Promise<{ + bytesWritten: number; + buffer: string; + }>; + } + /** + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link write}. + * @since v0.1.21 + * @param [offset=0] + * @param [length=buffer.byteLength - offset] + * @param [position='null'] + * @return The number of bytes written. + */ + export function writeSync( + fd: number, + buffer: NodeJS.ArrayBufferView, + offset?: number | null, + length?: number | null, + position?: number | null, + ): number; + /** + * Synchronously writes `string` to the file referenced by the supplied file descriptor, returning the number of bytes written. + * @param fd A file descriptor. + * @param string A string to write. + * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position. + * @param encoding The expected string encoding. + */ + export function writeSync( + fd: number, + string: string, + position?: number | null, + encoding?: BufferEncoding | null, + ): number; + export type ReadPosition = number | bigint; + export interface ReadSyncOptions { + /** + * @default 0 + */ + offset?: number | undefined; + /** + * @default `length of buffer` + */ + length?: number | undefined; + /** + * @default null + */ + position?: ReadPosition | null | undefined; + } + export interface ReadAsyncOptions extends ReadSyncOptions { + buffer?: TBuffer; + } + /** + * Read data from the file specified by `fd`. + * + * The callback is given the three arguments, `(err, bytesRead, buffer)`. + * + * If the file is not modified concurrently, the end-of-file is reached when the + * number of bytes read is zero. + * + * If this method is invoked as its `util.promisify()` ed version, it returns + * a promise for an `Object` with `bytesRead` and `buffer` properties. + * @since v0.0.2 + * @param buffer The buffer that the data will be written to. + * @param offset The position in `buffer` to write the data to. + * @param length The number of bytes to read. + * @param position Specifies where to begin reading from in the file. If `position` is `null` or `-1 `, data will be read from the current file position, and the file position will be updated. If + * `position` is an integer, the file position will be unchanged. + */ + export function read( + fd: number, + buffer: TBuffer, + offset: number, + length: number, + position: ReadPosition | null, + callback: (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: TBuffer) => void, + ): void; + /** + * Similar to the above `fs.read` function, this version takes an optional `options` object. + * If not otherwise specified in an `options` object, + * `buffer` defaults to `Buffer.alloc(16384)`, + * `offset` defaults to `0`, + * `length` defaults to `buffer.byteLength`, `- offset` as of Node 17.6.0 + * `position` defaults to `null` + * @since v12.17.0, 13.11.0 + */ + export function read( + fd: number, + options: ReadAsyncOptions, + callback: (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: TBuffer) => void, + ): void; + export function read( + fd: number, + callback: (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: NodeJS.ArrayBufferView) => void, + ): void; + export namespace read { + /** + * @param fd A file descriptor. + * @param buffer The buffer that the data will be written to. + * @param offset The offset in the buffer at which to start writing. + * @param length The number of bytes to read. + * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position. + */ + function __promisify__( + fd: number, + buffer: TBuffer, + offset: number, + length: number, + position: number | null, + ): Promise<{ + bytesRead: number; + buffer: TBuffer; + }>; + function __promisify__( + fd: number, + options: ReadAsyncOptions, + ): Promise<{ + bytesRead: number; + buffer: TBuffer; + }>; + function __promisify__(fd: number): Promise<{ + bytesRead: number; + buffer: NodeJS.ArrayBufferView; + }>; + } + /** + * Returns the number of `bytesRead`. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link read}. + * @since v0.1.21 + * @param [position='null'] + */ + export function readSync( + fd: number, + buffer: NodeJS.ArrayBufferView, + offset: number, + length: number, + position: ReadPosition | null, + ): number; + /** + * Similar to the above `fs.readSync` function, this version takes an optional `options` object. + * If no `options` object is specified, it will default with the above values. + */ + export function readSync(fd: number, buffer: NodeJS.ArrayBufferView, opts?: ReadSyncOptions): number; + /** + * Asynchronously reads the entire contents of a file. + * + * ```js + * import { readFile } from 'node:fs'; + * + * readFile('/etc/passwd', (err, data) => { + * if (err) throw err; + * console.log(data); + * }); + * ``` + * + * The callback is passed two arguments `(err, data)`, where `data` is the + * contents of the file. + * + * If no encoding is specified, then the raw buffer is returned. + * + * If `options` is a string, then it specifies the encoding: + * + * ```js + * import { readFile } from 'node:fs'; + * + * readFile('/etc/passwd', 'utf8', callback); + * ``` + * + * When the path is a directory, the behavior of `fs.readFile()` and {@link readFileSync} is platform-specific. On macOS, Linux, and Windows, an + * error will be returned. On FreeBSD, a representation of the directory's contents + * will be returned. + * + * ```js + * import { readFile } from 'node:fs'; + * + * // macOS, Linux, and Windows + * readFile('', (err, data) => { + * // => [Error: EISDIR: illegal operation on a directory, read ] + * }); + * + * // FreeBSD + * readFile('', (err, data) => { + * // => null, + * }); + * ``` + * + * It is possible to abort an ongoing request using an `AbortSignal`. If a + * request is aborted the callback is called with an `AbortError`: + * + * ```js + * import { readFile } from 'node:fs'; + * + * const controller = new AbortController(); + * const signal = controller.signal; + * readFile(fileInfo[0].name, { signal }, (err, buf) => { + * // ... + * }); + * // When you want to abort the request + * controller.abort(); + * ``` + * + * The `fs.readFile()` function buffers the entire file. To minimize memory costs, + * when possible prefer streaming via `fs.createReadStream()`. + * + * Aborting an ongoing request does not abort individual operating + * system requests but rather the internal buffering `fs.readFile` performs. + * @since v0.1.29 + * @param path filename or file descriptor + */ + export function readFile( + path: PathOrFileDescriptor, + options: + | ({ + encoding?: null | undefined; + flag?: string | undefined; + } & Abortable) + | undefined + | null, + callback: (err: NodeJS.ErrnoException | null, data: Buffer) => void, + ): void; + /** + * Asynchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + export function readFile( + path: PathOrFileDescriptor, + options: + | ({ + encoding: BufferEncoding; + flag?: string | undefined; + } & Abortable) + | BufferEncoding, + callback: (err: NodeJS.ErrnoException | null, data: string) => void, + ): void; + /** + * Asynchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + export function readFile( + path: PathOrFileDescriptor, + options: + | (ObjectEncodingOptions & { + flag?: string | undefined; + } & Abortable) + | BufferEncoding + | undefined + | null, + callback: (err: NodeJS.ErrnoException | null, data: string | Buffer) => void, + ): void; + /** + * Asynchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + */ + export function readFile( + path: PathOrFileDescriptor, + callback: (err: NodeJS.ErrnoException | null, data: Buffer) => void, + ): void; + export namespace readFile { + /** + * Asynchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param options An object that may contain an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + function __promisify__( + path: PathOrFileDescriptor, + options?: { + encoding?: null | undefined; + flag?: string | undefined; + } | null, + ): Promise; + /** + * Asynchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * URL support is _experimental_. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + function __promisify__( + path: PathOrFileDescriptor, + options: + | { + encoding: BufferEncoding; + flag?: string | undefined; + } + | BufferEncoding, + ): Promise; + /** + * Asynchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * URL support is _experimental_. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + function __promisify__( + path: PathOrFileDescriptor, + options?: + | (ObjectEncodingOptions & { + flag?: string | undefined; + }) + | BufferEncoding + | null, + ): Promise; + } + /** + * Returns the contents of the `path`. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link readFile}. + * + * If the `encoding` option is specified then this function returns a + * string. Otherwise it returns a buffer. + * + * Similar to {@link readFile}, when the path is a directory, the behavior of`fs.readFileSync()` is platform-specific. + * + * ```js + * import { readFileSync } from 'node:fs'; + * + * // macOS, Linux, and Windows + * readFileSync(''); + * // => [Error: EISDIR: illegal operation on a directory, read ] + * + * // FreeBSD + * readFileSync(''); // => + * ``` + * @since v0.1.8 + * @param path filename or file descriptor + */ + export function readFileSync( + path: PathOrFileDescriptor, + options?: { + encoding?: null | undefined; + flag?: string | undefined; + } | null, + ): Buffer; + /** + * Synchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + export function readFileSync( + path: PathOrFileDescriptor, + options: + | { + encoding: BufferEncoding; + flag?: string | undefined; + } + | BufferEncoding, + ): string; + /** + * Synchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + export function readFileSync( + path: PathOrFileDescriptor, + options?: + | (ObjectEncodingOptions & { + flag?: string | undefined; + }) + | BufferEncoding + | null, + ): string | Buffer; + export type WriteFileOptions = + | ( + & ObjectEncodingOptions + & Abortable + & { + mode?: Mode | undefined; + flag?: string | undefined; + } + ) + | BufferEncoding + | null; + /** + * When `file` is a filename, asynchronously writes data to the file, replacing the + * file if it already exists. `data` can be a string or a buffer. + * + * When `file` is a file descriptor, the behavior is similar to calling`fs.write()` directly (which is recommended). See the notes below on using + * a file descriptor. + * + * The `encoding` option is ignored if `data` is a buffer. + * + * The `mode` option only affects the newly created file. See {@link open} for more details. + * + * ```js + * import { writeFile } from 'node:fs'; + * import { Buffer } from 'node:buffer'; + * + * const data = new Uint8Array(Buffer.from('Hello Node.js')); + * writeFile('message.txt', data, (err) => { + * if (err) throw err; + * console.log('The file has been saved!'); + * }); + * ``` + * + * If `options` is a string, then it specifies the encoding: + * + * ```js + * import { writeFile } from 'node:fs'; + * + * writeFile('message.txt', 'Hello Node.js', 'utf8', callback); + * ``` + * + * It is unsafe to use `fs.writeFile()` multiple times on the same file without + * waiting for the callback. For this scenario, {@link createWriteStream} is + * recommended. + * + * Similarly to `fs.readFile` \- `fs.writeFile` is a convenience method that + * performs multiple `write` calls internally to write the buffer passed to it. + * For performance sensitive code consider using {@link createWriteStream}. + * + * It is possible to use an `AbortSignal` to cancel an `fs.writeFile()`. + * Cancelation is "best effort", and some amount of data is likely still + * to be written. + * + * ```js + * import { writeFile } from 'node:fs'; + * import { Buffer } from 'node:buffer'; + * + * const controller = new AbortController(); + * const { signal } = controller; + * const data = new Uint8Array(Buffer.from('Hello Node.js')); + * writeFile('message.txt', data, { signal }, (err) => { + * // When a request is aborted - the callback is called with an AbortError + * }); + * // When the request should be aborted + * controller.abort(); + * ``` + * + * Aborting an ongoing request does not abort individual operating + * system requests but rather the internal buffering `fs.writeFile` performs. + * @since v0.1.29 + * @param file filename or file descriptor + */ + export function writeFile( + file: PathOrFileDescriptor, + data: string | NodeJS.ArrayBufferView, + options: WriteFileOptions, + callback: NoParamCallback, + ): void; + /** + * Asynchronously writes data to a file, replacing the file if it already exists. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. + */ + export function writeFile( + path: PathOrFileDescriptor, + data: string | NodeJS.ArrayBufferView, + callback: NoParamCallback, + ): void; + export namespace writeFile { + /** + * Asynchronously writes data to a file, replacing the file if it already exists. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * URL support is _experimental_. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. + * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. + * If `encoding` is not supplied, the default of `'utf8'` is used. + * If `mode` is not supplied, the default of `0o666` is used. + * If `mode` is a string, it is parsed as an octal integer. + * If `flag` is not supplied, the default of `'w'` is used. + */ + function __promisify__( + path: PathOrFileDescriptor, + data: string | NodeJS.ArrayBufferView, + options?: WriteFileOptions, + ): Promise; + } + /** + * Returns `undefined`. + * + * The `mode` option only affects the newly created file. See {@link open} for more details. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link writeFile}. + * @since v0.1.29 + * @param file filename or file descriptor + */ + export function writeFileSync( + file: PathOrFileDescriptor, + data: string | NodeJS.ArrayBufferView, + options?: WriteFileOptions, + ): void; + /** + * Asynchronously append data to a file, creating the file if it does not yet + * exist. `data` can be a string or a `Buffer`. + * + * The `mode` option only affects the newly created file. See {@link open} for more details. + * + * ```js + * import { appendFile } from 'node:fs'; + * + * appendFile('message.txt', 'data to append', (err) => { + * if (err) throw err; + * console.log('The "data to append" was appended to file!'); + * }); + * ``` + * + * If `options` is a string, then it specifies the encoding: + * + * ```js + * import { appendFile } from 'node:fs'; + * + * appendFile('message.txt', 'data to append', 'utf8', callback); + * ``` + * + * The `path` may be specified as a numeric file descriptor that has been opened + * for appending (using `fs.open()` or `fs.openSync()`). The file descriptor will + * not be closed automatically. + * + * ```js + * import { open, close, appendFile } from 'node:fs'; + * + * function closeFd(fd) { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * + * open('message.txt', 'a', (err, fd) => { + * if (err) throw err; + * + * try { + * appendFile(fd, 'data to append', 'utf8', (err) => { + * closeFd(fd); + * if (err) throw err; + * }); + * } catch (err) { + * closeFd(fd); + * throw err; + * } + * }); + * ``` + * @since v0.6.7 + * @param path filename or file descriptor + */ + export function appendFile( + path: PathOrFileDescriptor, + data: string | Uint8Array, + options: WriteFileOptions, + callback: NoParamCallback, + ): void; + /** + * Asynchronously append data to a file, creating the file if it does not exist. + * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. + */ + export function appendFile(file: PathOrFileDescriptor, data: string | Uint8Array, callback: NoParamCallback): void; + export namespace appendFile { + /** + * Asynchronously append data to a file, creating the file if it does not exist. + * @param file A path to a file. If a URL is provided, it must use the `file:` protocol. + * URL support is _experimental_. + * If a file descriptor is provided, the underlying file will _not_ be closed automatically. + * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string. + * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag. + * If `encoding` is not supplied, the default of `'utf8'` is used. + * If `mode` is not supplied, the default of `0o666` is used. + * If `mode` is a string, it is parsed as an octal integer. + * If `flag` is not supplied, the default of `'a'` is used. + */ + function __promisify__( + file: PathOrFileDescriptor, + data: string | Uint8Array, + options?: WriteFileOptions, + ): Promise; + } + /** + * Synchronously append data to a file, creating the file if it does not yet + * exist. `data` can be a string or a `Buffer`. + * + * The `mode` option only affects the newly created file. See {@link open} for more details. + * + * ```js + * import { appendFileSync } from 'node:fs'; + * + * try { + * appendFileSync('message.txt', 'data to append'); + * console.log('The "data to append" was appended to file!'); + * } catch (err) { + * // Handle the error + * } + * ``` + * + * If `options` is a string, then it specifies the encoding: + * + * ```js + * import { appendFileSync } from 'node:fs'; + * + * appendFileSync('message.txt', 'data to append', 'utf8'); + * ``` + * + * The `path` may be specified as a numeric file descriptor that has been opened + * for appending (using `fs.open()` or `fs.openSync()`). The file descriptor will + * not be closed automatically. + * + * ```js + * import { openSync, closeSync, appendFileSync } from 'node:fs'; + * + * let fd; + * + * try { + * fd = openSync('message.txt', 'a'); + * appendFileSync(fd, 'data to append', 'utf8'); + * } catch (err) { + * // Handle the error + * } finally { + * if (fd !== undefined) + * closeSync(fd); + * } + * ``` + * @since v0.6.7 + * @param path filename or file descriptor + */ + export function appendFileSync( + path: PathOrFileDescriptor, + data: string | Uint8Array, + options?: WriteFileOptions, + ): void; + /** + * Watch for changes on `filename`. The callback `listener` will be called each + * time the file is accessed. + * + * The `options` argument may be omitted. If provided, it should be an object. The`options` object may contain a boolean named `persistent` that indicates + * whether the process should continue to run as long as files are being watched. + * The `options` object may specify an `interval` property indicating how often the + * target should be polled in milliseconds. + * + * The `listener` gets two arguments the current stat object and the previous + * stat object: + * + * ```js + * import { watchFile } from 'fs'; + * + * watchFile('message.text', (curr, prev) => { + * console.log(`the current mtime is: ${curr.mtime}`); + * console.log(`the previous mtime was: ${prev.mtime}`); + * }); + * ``` + * + * These stat objects are instances of `fs.Stat`. If the `bigint` option is `true`, + * the numeric values in these objects are specified as `BigInt`s. + * + * To be notified when the file was modified, not just accessed, it is necessary + * to compare `curr.mtimeMs` and `prev.mtimeMs`. + * + * When an `fs.watchFile` operation results in an `ENOENT` error, it + * will invoke the listener once, with all the fields zeroed (or, for dates, the + * Unix Epoch). If the file is created later on, the listener will be called + * again, with the latest stat objects. This is a change in functionality since + * v0.10. + * + * Using {@link watch} is more efficient than `fs.watchFile` and`fs.unwatchFile`. `fs.watch` should be used instead of `fs.watchFile` and`fs.unwatchFile` when possible. + * + * When a file being watched by `fs.watchFile()` disappears and reappears, + * then the contents of `previous` in the second callback event (the file's + * reappearance) will be the same as the contents of `previous` in the first + * callback event (its disappearance). + * + * This happens when: + * + * * the file is deleted, followed by a restore + * * the file is renamed and then renamed a second time back to its original name + * @since v0.1.31 + */ + export interface WatchFileOptions { + bigint?: boolean | undefined; + persistent?: boolean | undefined; + interval?: number | undefined; + } + /** + * Watch for changes on `filename`. The callback `listener` will be called each + * time the file is accessed. + * + * The `options` argument may be omitted. If provided, it should be an object. The`options` object may contain a boolean named `persistent` that indicates + * whether the process should continue to run as long as files are being watched. + * The `options` object may specify an `interval` property indicating how often the + * target should be polled in milliseconds. + * + * The `listener` gets two arguments the current stat object and the previous + * stat object: + * + * ```js + * import { watchFile } from 'node:fs'; + * + * watchFile('message.text', (curr, prev) => { + * console.log(`the current mtime is: ${curr.mtime}`); + * console.log(`the previous mtime was: ${prev.mtime}`); + * }); + * ``` + * + * These stat objects are instances of `fs.Stat`. If the `bigint` option is `true`, + * the numeric values in these objects are specified as `BigInt`s. + * + * To be notified when the file was modified, not just accessed, it is necessary + * to compare `curr.mtimeMs` and `prev.mtimeMs`. + * + * When an `fs.watchFile` operation results in an `ENOENT` error, it + * will invoke the listener once, with all the fields zeroed (or, for dates, the + * Unix Epoch). If the file is created later on, the listener will be called + * again, with the latest stat objects. This is a change in functionality since + * v0.10. + * + * Using {@link watch} is more efficient than `fs.watchFile` and`fs.unwatchFile`. `fs.watch` should be used instead of `fs.watchFile` and`fs.unwatchFile` when possible. + * + * When a file being watched by `fs.watchFile()` disappears and reappears, + * then the contents of `previous` in the second callback event (the file's + * reappearance) will be the same as the contents of `previous` in the first + * callback event (its disappearance). + * + * This happens when: + * + * * the file is deleted, followed by a restore + * * the file is renamed and then renamed a second time back to its original name + * @since v0.1.31 + */ + export function watchFile( + filename: PathLike, + options: + | (WatchFileOptions & { + bigint?: false | undefined; + }) + | undefined, + listener: StatsListener, + ): StatWatcher; + export function watchFile( + filename: PathLike, + options: + | (WatchFileOptions & { + bigint: true; + }) + | undefined, + listener: BigIntStatsListener, + ): StatWatcher; + /** + * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed. + * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + */ + export function watchFile(filename: PathLike, listener: StatsListener): StatWatcher; + /** + * Stop watching for changes on `filename`. If `listener` is specified, only that + * particular listener is removed. Otherwise, _all_ listeners are removed, + * effectively stopping watching of `filename`. + * + * Calling `fs.unwatchFile()` with a filename that is not being watched is a + * no-op, not an error. + * + * Using {@link watch} is more efficient than `fs.watchFile()` and`fs.unwatchFile()`. `fs.watch()` should be used instead of `fs.watchFile()`and `fs.unwatchFile()` when possible. + * @since v0.1.31 + * @param listener Optional, a listener previously attached using `fs.watchFile()` + */ + export function unwatchFile(filename: PathLike, listener?: StatsListener): void; + export function unwatchFile(filename: PathLike, listener?: BigIntStatsListener): void; + export interface WatchOptions extends Abortable { + encoding?: BufferEncoding | "buffer" | undefined; + persistent?: boolean | undefined; + recursive?: boolean | undefined; + } + export type WatchEventType = "rename" | "change"; + export type WatchListener = (event: WatchEventType, filename: T | null) => void; + export type StatsListener = (curr: Stats, prev: Stats) => void; + export type BigIntStatsListener = (curr: BigIntStats, prev: BigIntStats) => void; + /** + * Watch for changes on `filename`, where `filename` is either a file or a + * directory. + * + * The second argument is optional. If `options` is provided as a string, it + * specifies the `encoding`. Otherwise `options` should be passed as an object. + * + * The listener callback gets two arguments `(eventType, filename)`. `eventType`is either `'rename'` or `'change'`, and `filename` is the name of the file + * which triggered the event. + * + * On most platforms, `'rename'` is emitted whenever a filename appears or + * disappears in the directory. + * + * The listener callback is attached to the `'change'` event fired by `fs.FSWatcher`, but it is not the same thing as the `'change'` value of`eventType`. + * + * If a `signal` is passed, aborting the corresponding AbortController will close + * the returned `fs.FSWatcher`. + * @since v0.5.10 + * @param listener + */ + export function watch( + filename: PathLike, + options: + | (WatchOptions & { + encoding: "buffer"; + }) + | "buffer", + listener?: WatchListener, + ): FSWatcher; + /** + * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. + * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. + * If `encoding` is not supplied, the default of `'utf8'` is used. + * If `persistent` is not supplied, the default of `true` is used. + * If `recursive` is not supplied, the default of `false` is used. + */ + export function watch( + filename: PathLike, + options?: WatchOptions | BufferEncoding | null, + listener?: WatchListener, + ): FSWatcher; + /** + * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. + * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. + * If `encoding` is not supplied, the default of `'utf8'` is used. + * If `persistent` is not supplied, the default of `true` is used. + * If `recursive` is not supplied, the default of `false` is used. + */ + export function watch( + filename: PathLike, + options: WatchOptions | string, + listener?: WatchListener, + ): FSWatcher; + /** + * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. + * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + */ + export function watch(filename: PathLike, listener?: WatchListener): FSWatcher; + /** + * Test whether or not the given path exists by checking with the file system. + * Then call the `callback` argument with either true or false: + * + * ```js + * import { exists } from 'node:fs'; + * + * exists('/etc/passwd', (e) => { + * console.log(e ? 'it exists' : 'no passwd!'); + * }); + * ``` + * + * **The parameters for this callback are not consistent with other Node.js** + * **callbacks.** Normally, the first parameter to a Node.js callback is an `err`parameter, optionally followed by other parameters. The `fs.exists()` callback + * has only one boolean parameter. This is one reason `fs.access()` is recommended + * instead of `fs.exists()`. + * + * Using `fs.exists()` to check for the existence of a file before calling`fs.open()`, `fs.readFile()`, or `fs.writeFile()` is not recommended. Doing + * so introduces a race condition, since other processes may change the file's + * state between the two calls. Instead, user code should open/read/write the + * file directly and handle the error raised if the file does not exist. + * + * **write (NOT RECOMMENDED)** + * + * ```js + * import { exists, open, close } from 'node:fs'; + * + * exists('myfile', (e) => { + * if (e) { + * console.error('myfile already exists'); + * } else { + * open('myfile', 'wx', (err, fd) => { + * if (err) throw err; + * + * try { + * writeMyData(fd); + * } finally { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * }); + * } + * }); + * ``` + * + * **write (RECOMMENDED)** + * + * ```js + * import { open, close } from 'node:fs'; + * open('myfile', 'wx', (err, fd) => { + * if (err) { + * if (err.code === 'EEXIST') { + * console.error('myfile already exists'); + * return; + * } + * + * throw err; + * } + * + * try { + * writeMyData(fd); + * } finally { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * }); + * ``` + * + * **read (NOT RECOMMENDED)** + * + * ```js + * import { open, close, exists } from 'node:fs'; + * + * exists('myfile', (e) => { + * if (e) { + * open('myfile', 'r', (err, fd) => { + * if (err) throw err; + * + * try { + * readMyData(fd); + * } finally { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * }); + * } else { + * console.error('myfile does not exist'); + * } + * }); + * ``` + * + * **read (RECOMMENDED)** + * + * ```js + * import { open, close } from 'node:fs'; + * + * open('myfile', 'r', (err, fd) => { + * if (err) { + * if (err.code === 'ENOENT') { + * console.error('myfile does not exist'); + * return; + * } + * + * throw err; + * } + * + * try { + * readMyData(fd); + * } finally { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * }); + * ``` + * + * The "not recommended" examples above check for existence and then use the + * file; the "recommended" examples are better because they use the file directly + * and handle the error, if any. + * + * In general, check for the existence of a file only if the file won't be + * used directly, for example when its existence is a signal from another + * process. + * @since v0.0.2 + * @deprecated Since v1.0.0 - Use {@link stat} or {@link access} instead. + */ + export function exists(path: PathLike, callback: (exists: boolean) => void): void; + /** @deprecated */ + export namespace exists { + /** + * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + * URL support is _experimental_. + */ + function __promisify__(path: PathLike): Promise; + } + /** + * Returns `true` if the path exists, `false` otherwise. + * + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link exists}. + * + * `fs.exists()` is deprecated, but `fs.existsSync()` is not. The `callback`parameter to `fs.exists()` accepts parameters that are inconsistent with other + * Node.js callbacks. `fs.existsSync()` does not use a callback. + * + * ```js + * import { existsSync } from 'node:fs'; + * + * if (existsSync('/etc/passwd')) + * console.log('The path exists.'); + * ``` + * @since v0.1.21 + */ + export function existsSync(path: PathLike): boolean; + export namespace constants { + // File Access Constants + /** Constant for fs.access(). File is visible to the calling process. */ + const F_OK: number; + /** Constant for fs.access(). File can be read by the calling process. */ + const R_OK: number; + /** Constant for fs.access(). File can be written by the calling process. */ + const W_OK: number; + /** Constant for fs.access(). File can be executed by the calling process. */ + const X_OK: number; + // File Copy Constants + /** Constant for fs.copyFile. Flag indicating the destination file should not be overwritten if it already exists. */ + const COPYFILE_EXCL: number; + /** + * Constant for fs.copyFile. copy operation will attempt to create a copy-on-write reflink. + * If the underlying platform does not support copy-on-write, then a fallback copy mechanism is used. + */ + const COPYFILE_FICLONE: number; + /** + * Constant for fs.copyFile. Copy operation will attempt to create a copy-on-write reflink. + * If the underlying platform does not support copy-on-write, then the operation will fail with an error. + */ + const COPYFILE_FICLONE_FORCE: number; + // File Open Constants + /** Constant for fs.open(). Flag indicating to open a file for read-only access. */ + const O_RDONLY: number; + /** Constant for fs.open(). Flag indicating to open a file for write-only access. */ + const O_WRONLY: number; + /** Constant for fs.open(). Flag indicating to open a file for read-write access. */ + const O_RDWR: number; + /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */ + const O_CREAT: number; + /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */ + const O_EXCL: number; + /** + * Constant for fs.open(). Flag indicating that if path identifies a terminal device, + * opening the path shall not cause that terminal to become the controlling terminal for the process + * (if the process does not already have one). + */ + const O_NOCTTY: number; + /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */ + const O_TRUNC: number; + /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */ + const O_APPEND: number; + /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */ + const O_DIRECTORY: number; + /** + * constant for fs.open(). + * Flag indicating reading accesses to the file system will no longer result in + * an update to the atime information associated with the file. + * This flag is available on Linux operating systems only. + */ + const O_NOATIME: number; + /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */ + const O_NOFOLLOW: number; + /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */ + const O_SYNC: number; + /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O with write operations waiting for data integrity. */ + const O_DSYNC: number; + /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */ + const O_SYMLINK: number; + /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */ + const O_DIRECT: number; + /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */ + const O_NONBLOCK: number; + // File Type Constants + /** Constant for fs.Stats mode property for determining a file's type. Bit mask used to extract the file type code. */ + const S_IFMT: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a regular file. */ + const S_IFREG: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a directory. */ + const S_IFDIR: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a character-oriented device file. */ + const S_IFCHR: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a block-oriented device file. */ + const S_IFBLK: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a FIFO/pipe. */ + const S_IFIFO: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a symbolic link. */ + const S_IFLNK: number; + /** Constant for fs.Stats mode property for determining a file's type. File type constant for a socket. */ + const S_IFSOCK: number; + // File Mode Constants + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */ + const S_IRWXU: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */ + const S_IRUSR: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */ + const S_IWUSR: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */ + const S_IXUSR: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */ + const S_IRWXG: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */ + const S_IRGRP: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */ + const S_IWGRP: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */ + const S_IXGRP: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */ + const S_IRWXO: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */ + const S_IROTH: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */ + const S_IWOTH: number; + /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */ + const S_IXOTH: number; + /** + * When set, a memory file mapping is used to access the file. This flag + * is available on Windows operating systems only. On other operating systems, + * this flag is ignored. + */ + const UV_FS_O_FILEMAP: number; + } + /** + * Tests a user's permissions for the file or directory specified by `path`. + * The `mode` argument is an optional integer that specifies the accessibility + * checks to be performed. `mode` should be either the value `fs.constants.F_OK`or a mask consisting of the bitwise OR of any of `fs.constants.R_OK`,`fs.constants.W_OK`, and `fs.constants.X_OK` + * (e.g.`fs.constants.W_OK | fs.constants.R_OK`). Check `File access constants` for + * possible values of `mode`. + * + * The final argument, `callback`, is a callback function that is invoked with + * a possible error argument. If any of the accessibility checks fail, the error + * argument will be an `Error` object. The following examples check if`package.json` exists, and if it is readable or writable. + * + * ```js + * import { access, constants } from 'node:fs'; + * + * const file = 'package.json'; + * + * // Check if the file exists in the current directory. + * access(file, constants.F_OK, (err) => { + * console.log(`${file} ${err ? 'does not exist' : 'exists'}`); + * }); + * + * // Check if the file is readable. + * access(file, constants.R_OK, (err) => { + * console.log(`${file} ${err ? 'is not readable' : 'is readable'}`); + * }); + * + * // Check if the file is writable. + * access(file, constants.W_OK, (err) => { + * console.log(`${file} ${err ? 'is not writable' : 'is writable'}`); + * }); + * + * // Check if the file is readable and writable. + * access(file, constants.R_OK | constants.W_OK, (err) => { + * console.log(`${file} ${err ? 'is not' : 'is'} readable and writable`); + * }); + * ``` + * + * Do not use `fs.access()` to check for the accessibility of a file before calling`fs.open()`, `fs.readFile()`, or `fs.writeFile()`. Doing + * so introduces a race condition, since other processes may change the file's + * state between the two calls. Instead, user code should open/read/write the + * file directly and handle the error raised if the file is not accessible. + * + * **write (NOT RECOMMENDED)** + * + * ```js + * import { access, open, close } from 'node:fs'; + * + * access('myfile', (err) => { + * if (!err) { + * console.error('myfile already exists'); + * return; + * } + * + * open('myfile', 'wx', (err, fd) => { + * if (err) throw err; + * + * try { + * writeMyData(fd); + * } finally { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * }); + * }); + * ``` + * + * **write (RECOMMENDED)** + * + * ```js + * import { open, close } from 'node:fs'; + * + * open('myfile', 'wx', (err, fd) => { + * if (err) { + * if (err.code === 'EEXIST') { + * console.error('myfile already exists'); + * return; + * } + * + * throw err; + * } + * + * try { + * writeMyData(fd); + * } finally { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * }); + * ``` + * + * **read (NOT RECOMMENDED)** + * + * ```js + * import { access, open, close } from 'node:fs'; + * access('myfile', (err) => { + * if (err) { + * if (err.code === 'ENOENT') { + * console.error('myfile does not exist'); + * return; + * } + * + * throw err; + * } + * + * open('myfile', 'r', (err, fd) => { + * if (err) throw err; + * + * try { + * readMyData(fd); + * } finally { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * }); + * }); + * ``` + * + * **read (RECOMMENDED)** + * + * ```js + * import { open, close } from 'node:fs'; + * + * open('myfile', 'r', (err, fd) => { + * if (err) { + * if (err.code === 'ENOENT') { + * console.error('myfile does not exist'); + * return; + * } + * + * throw err; + * } + * + * try { + * readMyData(fd); + * } finally { + * close(fd, (err) => { + * if (err) throw err; + * }); + * } + * }); + * ``` + * + * The "not recommended" examples above check for accessibility and then use the + * file; the "recommended" examples are better because they use the file directly + * and handle the error, if any. + * + * In general, check for the accessibility of a file only if the file will not be + * used directly, for example when its accessibility is a signal from another + * process. + * + * On Windows, access-control policies (ACLs) on a directory may limit access to + * a file or directory. The `fs.access()` function, however, does not check the + * ACL and therefore may report that a path is accessible even if the ACL restricts + * the user from reading or writing to it. + * @since v0.11.15 + * @param [mode=fs.constants.F_OK] + */ + export function access(path: PathLike, mode: number | undefined, callback: NoParamCallback): void; + /** + * Asynchronously tests a user's permissions for the file specified by path. + * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + */ + export function access(path: PathLike, callback: NoParamCallback): void; + export namespace access { + /** + * Asynchronously tests a user's permissions for the file specified by path. + * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + * URL support is _experimental_. + */ + function __promisify__(path: PathLike, mode?: number): Promise; + } + /** + * Synchronously tests a user's permissions for the file or directory specified + * by `path`. The `mode` argument is an optional integer that specifies the + * accessibility checks to be performed. `mode` should be either the value`fs.constants.F_OK` or a mask consisting of the bitwise OR of any of`fs.constants.R_OK`, `fs.constants.W_OK`, and + * `fs.constants.X_OK` (e.g.`fs.constants.W_OK | fs.constants.R_OK`). Check `File access constants` for + * possible values of `mode`. + * + * If any of the accessibility checks fail, an `Error` will be thrown. Otherwise, + * the method will return `undefined`. + * + * ```js + * import { accessSync, constants } from 'node:fs'; + * + * try { + * accessSync('etc/passwd', constants.R_OK | constants.W_OK); + * console.log('can read/write'); + * } catch (err) { + * console.error('no access!'); + * } + * ``` + * @since v0.11.15 + * @param [mode=fs.constants.F_OK] + */ + export function accessSync(path: PathLike, mode?: number): void; + interface StreamOptions { + flags?: string | undefined; + encoding?: BufferEncoding | undefined; + fd?: number | promises.FileHandle | undefined; + mode?: number | undefined; + autoClose?: boolean | undefined; + emitClose?: boolean | undefined; + start?: number | undefined; + signal?: AbortSignal | null | undefined; + highWaterMark?: number | undefined; + } + interface FSImplementation { + open?: (...args: any[]) => any; + close?: (...args: any[]) => any; + } + interface CreateReadStreamFSImplementation extends FSImplementation { + read: (...args: any[]) => any; + } + interface CreateWriteStreamFSImplementation extends FSImplementation { + write: (...args: any[]) => any; + writev?: (...args: any[]) => any; + } + interface ReadStreamOptions extends StreamOptions { + fs?: CreateReadStreamFSImplementation | null | undefined; + end?: number | undefined; + } + interface WriteStreamOptions extends StreamOptions { + fs?: CreateWriteStreamFSImplementation | null | undefined; + } + /** + * Unlike the 16 KiB default `highWaterMark` for a `stream.Readable`, the stream + * returned by this method has a default `highWaterMark` of 64 KiB. + * + * `options` can include `start` and `end` values to read a range of bytes from + * the file instead of the entire file. Both `start` and `end` are inclusive and + * start counting at 0, allowed values are in the + * \[0, [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)\] range. If `fd` is specified and `start` is + * omitted or `undefined`, `fs.createReadStream()` reads sequentially from the + * current file position. The `encoding` can be any one of those accepted by `Buffer`. + * + * If `fd` is specified, `ReadStream` will ignore the `path` argument and will use + * the specified file descriptor. This means that no `'open'` event will be + * emitted. `fd` should be blocking; non-blocking `fd`s should be passed to `net.Socket`. + * + * If `fd` points to a character device that only supports blocking reads + * (such as keyboard or sound card), read operations do not finish until data is + * available. This can prevent the process from exiting and the stream from + * closing naturally. + * + * By default, the stream will emit a `'close'` event after it has been + * destroyed. Set the `emitClose` option to `false` to change this behavior. + * + * By providing the `fs` option, it is possible to override the corresponding `fs`implementations for `open`, `read`, and `close`. When providing the `fs` option, + * an override for `read` is required. If no `fd` is provided, an override for`open` is also required. If `autoClose` is `true`, an override for `close` is + * also required. + * + * ```js + * import { createReadStream } from 'node:fs'; + * + * // Create a stream from some character device. + * const stream = createReadStream('/dev/input/event0'); + * setTimeout(() => { + * stream.close(); // This may not close the stream. + * // Artificially marking end-of-stream, as if the underlying resource had + * // indicated end-of-file by itself, allows the stream to close. + * // This does not cancel pending read operations, and if there is such an + * // operation, the process may still not be able to exit successfully + * // until it finishes. + * stream.push(null); + * stream.read(0); + * }, 100); + * ``` + * + * If `autoClose` is false, then the file descriptor won't be closed, even if + * there's an error. It is the application's responsibility to close it and make + * sure there's no file descriptor leak. If `autoClose` is set to true (default + * behavior), on `'error'` or `'end'` the file descriptor will be closed + * automatically. + * + * `mode` sets the file mode (permission and sticky bits), but only if the + * file was created. + * + * An example to read the last 10 bytes of a file which is 100 bytes long: + * + * ```js + * import { createReadStream } from 'node:fs'; + * + * createReadStream('sample.txt', { start: 90, end: 99 }); + * ``` + * + * If `options` is a string, then it specifies the encoding. + * @since v0.1.31 + */ + export function createReadStream(path: PathLike, options?: BufferEncoding | ReadStreamOptions): ReadStream; + /** + * `options` may also include a `start` option to allow writing data at some + * position past the beginning of the file, allowed values are in the + * \[0, [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)\] range. Modifying a file rather than + * replacing it may require the `flags` option to be set to `r+` rather than the + * default `w`. The `encoding` can be any one of those accepted by `Buffer`. + * + * If `autoClose` is set to true (default behavior) on `'error'` or `'finish'`the file descriptor will be closed automatically. If `autoClose` is false, + * then the file descriptor won't be closed, even if there's an error. + * It is the application's responsibility to close it and make sure there's no + * file descriptor leak. + * + * By default, the stream will emit a `'close'` event after it has been + * destroyed. Set the `emitClose` option to `false` to change this behavior. + * + * By providing the `fs` option it is possible to override the corresponding `fs`implementations for `open`, `write`, `writev`, and `close`. Overriding `write()`without `writev()` can reduce + * performance as some optimizations (`_writev()`) + * will be disabled. When providing the `fs` option, overrides for at least one of`write` and `writev` are required. If no `fd` option is supplied, an override + * for `open` is also required. If `autoClose` is `true`, an override for `close`is also required. + * + * Like `fs.ReadStream`, if `fd` is specified, `fs.WriteStream` will ignore the`path` argument and will use the specified file descriptor. This means that no`'open'` event will be + * emitted. `fd` should be blocking; non-blocking `fd`s + * should be passed to `net.Socket`. + * + * If `options` is a string, then it specifies the encoding. + * @since v0.1.31 + */ + export function createWriteStream(path: PathLike, options?: BufferEncoding | WriteStreamOptions): WriteStream; + /** + * Forces all currently queued I/O operations associated with the file to the + * operating system's synchronized I/O completion state. Refer to the POSIX [`fdatasync(2)`](http://man7.org/linux/man-pages/man2/fdatasync.2.html) documentation for details. No arguments other + * than a possible + * exception are given to the completion callback. + * @since v0.1.96 + */ + export function fdatasync(fd: number, callback: NoParamCallback): void; + export namespace fdatasync { + /** + * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device. + * @param fd A file descriptor. + */ + function __promisify__(fd: number): Promise; + } + /** + * Forces all currently queued I/O operations associated with the file to the + * operating system's synchronized I/O completion state. Refer to the POSIX [`fdatasync(2)`](http://man7.org/linux/man-pages/man2/fdatasync.2.html) documentation for details. Returns `undefined`. + * @since v0.1.96 + */ + export function fdatasyncSync(fd: number): void; + /** + * Asynchronously copies `src` to `dest`. By default, `dest` is overwritten if it + * already exists. No arguments other than a possible exception are given to the + * callback function. Node.js makes no guarantees about the atomicity of the copy + * operation. If an error occurs after the destination file has been opened for + * writing, Node.js will attempt to remove the destination. + * + * `mode` is an optional integer that specifies the behavior + * of the copy operation. It is possible to create a mask consisting of the bitwise + * OR of two or more values (e.g.`fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE`). + * + * * `fs.constants.COPYFILE_EXCL`: The copy operation will fail if `dest` already + * exists. + * * `fs.constants.COPYFILE_FICLONE`: The copy operation will attempt to create a + * copy-on-write reflink. If the platform does not support copy-on-write, then a + * fallback copy mechanism is used. + * * `fs.constants.COPYFILE_FICLONE_FORCE`: The copy operation will attempt to + * create a copy-on-write reflink. If the platform does not support + * copy-on-write, then the operation will fail. + * + * ```js + * import { copyFile, constants } from 'node:fs'; + * + * function callback(err) { + * if (err) throw err; + * console.log('source.txt was copied to destination.txt'); + * } + * + * // destination.txt will be created or overwritten by default. + * copyFile('source.txt', 'destination.txt', callback); + * + * // By using COPYFILE_EXCL, the operation will fail if destination.txt exists. + * copyFile('source.txt', 'destination.txt', constants.COPYFILE_EXCL, callback); + * ``` + * @since v8.5.0 + * @param src source filename to copy + * @param dest destination filename of the copy operation + * @param [mode=0] modifiers for copy operation. + */ + export function copyFile(src: PathLike, dest: PathLike, callback: NoParamCallback): void; + export function copyFile(src: PathLike, dest: PathLike, mode: number, callback: NoParamCallback): void; + export namespace copyFile { + function __promisify__(src: PathLike, dst: PathLike, mode?: number): Promise; + } + /** + * Synchronously copies `src` to `dest`. By default, `dest` is overwritten if it + * already exists. Returns `undefined`. Node.js makes no guarantees about the + * atomicity of the copy operation. If an error occurs after the destination file + * has been opened for writing, Node.js will attempt to remove the destination. + * + * `mode` is an optional integer that specifies the behavior + * of the copy operation. It is possible to create a mask consisting of the bitwise + * OR of two or more values (e.g.`fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE`). + * + * * `fs.constants.COPYFILE_EXCL`: The copy operation will fail if `dest` already + * exists. + * * `fs.constants.COPYFILE_FICLONE`: The copy operation will attempt to create a + * copy-on-write reflink. If the platform does not support copy-on-write, then a + * fallback copy mechanism is used. + * * `fs.constants.COPYFILE_FICLONE_FORCE`: The copy operation will attempt to + * create a copy-on-write reflink. If the platform does not support + * copy-on-write, then the operation will fail. + * + * ```js + * import { copyFileSync, constants } from 'node:fs'; + * + * // destination.txt will be created or overwritten by default. + * copyFileSync('source.txt', 'destination.txt'); + * console.log('source.txt was copied to destination.txt'); + * + * // By using COPYFILE_EXCL, the operation will fail if destination.txt exists. + * copyFileSync('source.txt', 'destination.txt', constants.COPYFILE_EXCL); + * ``` + * @since v8.5.0 + * @param src source filename to copy + * @param dest destination filename of the copy operation + * @param [mode=0] modifiers for copy operation. + */ + export function copyFileSync(src: PathLike, dest: PathLike, mode?: number): void; + /** + * Write an array of `ArrayBufferView`s to the file specified by `fd` using`writev()`. + * + * `position` is the offset from the beginning of the file where this data + * should be written. If `typeof position !== 'number'`, the data will be written + * at the current position. + * + * The callback will be given three arguments: `err`, `bytesWritten`, and`buffers`. `bytesWritten` is how many bytes were written from `buffers`. + * + * If this method is `util.promisify()` ed, it returns a promise for an`Object` with `bytesWritten` and `buffers` properties. + * + * It is unsafe to use `fs.writev()` multiple times on the same file without + * waiting for the callback. For this scenario, use {@link createWriteStream}. + * + * On Linux, positional writes don't work when the file is opened in append mode. + * The kernel ignores the position argument and always appends the data to + * the end of the file. + * @since v12.9.0 + * @param [position='null'] + */ + export function writev( + fd: number, + buffers: ReadonlyArray, + cb: (err: NodeJS.ErrnoException | null, bytesWritten: number, buffers: NodeJS.ArrayBufferView[]) => void, + ): void; + export function writev( + fd: number, + buffers: ReadonlyArray, + position: number, + cb: (err: NodeJS.ErrnoException | null, bytesWritten: number, buffers: NodeJS.ArrayBufferView[]) => void, + ): void; + export interface WriteVResult { + bytesWritten: number; + buffers: NodeJS.ArrayBufferView[]; + } + export namespace writev { + function __promisify__( + fd: number, + buffers: ReadonlyArray, + position?: number, + ): Promise; + } + /** + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link writev}. + * @since v12.9.0 + * @param [position='null'] + * @return The number of bytes written. + */ + export function writevSync(fd: number, buffers: ReadonlyArray, position?: number): number; + /** + * Read from a file specified by `fd` and write to an array of `ArrayBufferView`s + * using `readv()`. + * + * `position` is the offset from the beginning of the file from where data + * should be read. If `typeof position !== 'number'`, the data will be read + * from the current position. + * + * The callback will be given three arguments: `err`, `bytesRead`, and`buffers`. `bytesRead` is how many bytes were read from the file. + * + * If this method is invoked as its `util.promisify()` ed version, it returns + * a promise for an `Object` with `bytesRead` and `buffers` properties. + * @since v13.13.0, v12.17.0 + * @param [position='null'] + */ + export function readv( + fd: number, + buffers: ReadonlyArray, + cb: (err: NodeJS.ErrnoException | null, bytesRead: number, buffers: NodeJS.ArrayBufferView[]) => void, + ): void; + export function readv( + fd: number, + buffers: ReadonlyArray, + position: number, + cb: (err: NodeJS.ErrnoException | null, bytesRead: number, buffers: NodeJS.ArrayBufferView[]) => void, + ): void; + export interface ReadVResult { + bytesRead: number; + buffers: NodeJS.ArrayBufferView[]; + } + export namespace readv { + function __promisify__( + fd: number, + buffers: ReadonlyArray, + position?: number, + ): Promise; + } + /** + * For detailed information, see the documentation of the asynchronous version of + * this API: {@link readv}. + * @since v13.13.0, v12.17.0 + * @param [position='null'] + * @return The number of bytes read. + */ + export function readvSync(fd: number, buffers: ReadonlyArray, position?: number): number; + + export interface OpenAsBlobOptions { + /** + * An optional mime type for the blob. + * + * @default 'undefined' + */ + type?: string | undefined; + } + + /** + * Returns a `Blob` whose data is backed by the given file. + * + * The file must not be modified after the `Blob` is created. Any modifications + * will cause reading the `Blob` data to fail with a `DOMException` error. + * Synchronous stat operations on the file when the `Blob` is created, and before + * each read in order to detect whether the file data has been modified on disk. + * + * ```js + * import { openAsBlob } from 'node:fs'; + * + * const blob = await openAsBlob('the.file.txt'); + * const ab = await blob.arrayBuffer(); + * blob.stream(); + * ``` + * @since v19.8.0 + * @experimental + */ + export function openAsBlob(path: PathLike, options?: OpenAsBlobOptions): Promise; + + export interface OpenDirOptions { + /** + * @default 'utf8' + */ + encoding?: BufferEncoding | undefined; + /** + * Number of directory entries that are buffered + * internally when reading from the directory. Higher values lead to better + * performance but higher memory usage. + * @default 32 + */ + bufferSize?: number | undefined; + /** + * @default false + */ + recursive?: boolean; + } + /** + * Synchronously open a directory. See [`opendir(3)`](http://man7.org/linux/man-pages/man3/opendir.3.html). + * + * Creates an `fs.Dir`, which contains all further functions for reading from + * and cleaning up the directory. + * + * The `encoding` option sets the encoding for the `path` while opening the + * directory and subsequent read operations. + * @since v12.12.0 + */ + export function opendirSync(path: PathLike, options?: OpenDirOptions): Dir; + /** + * Asynchronously open a directory. See the POSIX [`opendir(3)`](http://man7.org/linux/man-pages/man3/opendir.3.html) documentation for + * more details. + * + * Creates an `fs.Dir`, which contains all further functions for reading from + * and cleaning up the directory. + * + * The `encoding` option sets the encoding for the `path` while opening the + * directory and subsequent read operations. + * @since v12.12.0 + */ + export function opendir(path: PathLike, cb: (err: NodeJS.ErrnoException | null, dir: Dir) => void): void; + export function opendir( + path: PathLike, + options: OpenDirOptions, + cb: (err: NodeJS.ErrnoException | null, dir: Dir) => void, + ): void; + export namespace opendir { + function __promisify__(path: PathLike, options?: OpenDirOptions): Promise; + } + export interface BigIntStats extends StatsBase { + atimeNs: bigint; + mtimeNs: bigint; + ctimeNs: bigint; + birthtimeNs: bigint; + } + export interface BigIntOptions { + bigint: true; + } + export interface StatOptions { + bigint?: boolean | undefined; + } + export interface StatSyncOptions extends StatOptions { + throwIfNoEntry?: boolean | undefined; + } + interface CopyOptionsBase { + /** + * Dereference symlinks + * @default false + */ + dereference?: boolean; + /** + * When `force` is `false`, and the destination + * exists, throw an error. + * @default false + */ + errorOnExist?: boolean; + /** + * Overwrite existing file or directory. _The copy + * operation will ignore errors if you set this to false and the destination + * exists. Use the `errorOnExist` option to change this behavior. + * @default true + */ + force?: boolean; + /** + * Modifiers for copy operation. See `mode` flag of {@link copyFileSync()} + */ + mode?: number; + /** + * When `true` timestamps from `src` will + * be preserved. + * @default false + */ + preserveTimestamps?: boolean; + /** + * Copy directories recursively. + * @default false + */ + recursive?: boolean; + /** + * When true, path resolution for symlinks will be skipped + * @default false + */ + verbatimSymlinks?: boolean; + } + export interface CopyOptions extends CopyOptionsBase { + /** + * Function to filter copied files/directories. Return + * `true` to copy the item, `false` to ignore it. + */ + filter?(source: string, destination: string): boolean | Promise; + } + export interface CopySyncOptions extends CopyOptionsBase { + /** + * Function to filter copied files/directories. Return + * `true` to copy the item, `false` to ignore it. + */ + filter?(source: string, destination: string): boolean; + } + /** + * Asynchronously copies the entire directory structure from `src` to `dest`, + * including subdirectories and files. + * + * When copying a directory to another directory, globs are not supported and + * behavior is similar to `cp dir1/ dir2/`. + * @since v16.7.0 + * @experimental + * @param src source path to copy. + * @param dest destination path to copy to. + */ + export function cp( + source: string | URL, + destination: string | URL, + callback: (err: NodeJS.ErrnoException | null) => void, + ): void; + export function cp( + source: string | URL, + destination: string | URL, + opts: CopyOptions, + callback: (err: NodeJS.ErrnoException | null) => void, + ): void; + /** + * Synchronously copies the entire directory structure from `src` to `dest`, + * including subdirectories and files. + * + * When copying a directory to another directory, globs are not supported and + * behavior is similar to `cp dir1/ dir2/`. + * @since v16.7.0 + * @experimental + * @param src source path to copy. + * @param dest destination path to copy to. + */ + export function cpSync(source: string | URL, destination: string | URL, opts?: CopySyncOptions): void; +} +declare module "node:fs" { + export * from "fs"; +} diff --git a/node_modules/@types/node/ts4.8/fs/promises.d.ts b/node_modules/@types/node/ts4.8/fs/promises.d.ts new file mode 100644 index 00000000..084ee6ef --- /dev/null +++ b/node_modules/@types/node/ts4.8/fs/promises.d.ts @@ -0,0 +1,1232 @@ +/** + * The `fs/promises` API provides asynchronous file system methods that return + * promises. + * + * The promise APIs use the underlying Node.js threadpool to perform file + * system operations off the event loop thread. These operations are not + * synchronized or threadsafe. Care must be taken when performing multiple + * concurrent modifications on the same file or data corruption may occur. + * @since v10.0.0 + */ +declare module "fs/promises" { + import { Abortable } from "node:events"; + import { Stream } from "node:stream"; + import { ReadableStream } from "node:stream/web"; + import { + BigIntStats, + BigIntStatsFs, + BufferEncodingOption, + constants as fsConstants, + CopyOptions, + Dir, + Dirent, + MakeDirectoryOptions, + Mode, + ObjectEncodingOptions, + OpenDirOptions, + OpenMode, + PathLike, + ReadStream, + ReadVResult, + RmDirOptions, + RmOptions, + StatFsOptions, + StatOptions, + Stats, + StatsFs, + TimeLike, + WatchEventType, + WatchOptions, + WriteStream, + WriteVResult, + } from "node:fs"; + import { Interface as ReadlineInterface } from "node:readline"; + interface FileChangeInfo { + eventType: WatchEventType; + filename: T | null; + } + interface FlagAndOpenMode { + mode?: Mode | undefined; + flag?: OpenMode | undefined; + } + interface FileReadResult { + bytesRead: number; + buffer: T; + } + interface FileReadOptions { + /** + * @default `Buffer.alloc(0xffff)` + */ + buffer?: T; + /** + * @default 0 + */ + offset?: number | null; + /** + * @default `buffer.byteLength` + */ + length?: number | null; + position?: number | null; + } + interface CreateReadStreamOptions { + encoding?: BufferEncoding | null | undefined; + autoClose?: boolean | undefined; + emitClose?: boolean | undefined; + start?: number | undefined; + end?: number | undefined; + highWaterMark?: number | undefined; + } + interface CreateWriteStreamOptions { + encoding?: BufferEncoding | null | undefined; + autoClose?: boolean | undefined; + emitClose?: boolean | undefined; + start?: number | undefined; + highWaterMark?: number | undefined; + } + interface ReadableWebStreamOptions { + /** + * Whether to open a normal or a `'bytes'` stream. + * @since v20.0.0 + */ + type?: "bytes" | undefined; + } + // TODO: Add `EventEmitter` close + interface FileHandle { + /** + * The numeric file descriptor managed by the {FileHandle} object. + * @since v10.0.0 + */ + readonly fd: number; + /** + * Alias of `filehandle.writeFile()`. + * + * When operating on file handles, the mode cannot be changed from what it was set + * to with `fsPromises.open()`. Therefore, this is equivalent to `filehandle.writeFile()`. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + appendFile( + data: string | Uint8Array, + options?: (ObjectEncodingOptions & FlagAndOpenMode) | BufferEncoding | null, + ): Promise; + /** + * Changes the ownership of the file. A wrapper for [`chown(2)`](http://man7.org/linux/man-pages/man2/chown.2.html). + * @since v10.0.0 + * @param uid The file's new owner's user id. + * @param gid The file's new group's group id. + * @return Fulfills with `undefined` upon success. + */ + chown(uid: number, gid: number): Promise; + /** + * Modifies the permissions on the file. See [`chmod(2)`](http://man7.org/linux/man-pages/man2/chmod.2.html). + * @since v10.0.0 + * @param mode the file mode bit mask. + * @return Fulfills with `undefined` upon success. + */ + chmod(mode: Mode): Promise; + /** + * Unlike the 16 KiB default `highWaterMark` for a `stream.Readable`, the stream + * returned by this method has a default `highWaterMark` of 64 KiB. + * + * `options` can include `start` and `end` values to read a range of bytes from + * the file instead of the entire file. Both `start` and `end` are inclusive and + * start counting at 0, allowed values are in the + * \[0, [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)\] range. If `start` is + * omitted or `undefined`, `filehandle.createReadStream()` reads sequentially from + * the current file position. The `encoding` can be any one of those accepted by `Buffer`. + * + * If the `FileHandle` points to a character device that only supports blocking + * reads (such as keyboard or sound card), read operations do not finish until data + * is available. This can prevent the process from exiting and the stream from + * closing naturally. + * + * By default, the stream will emit a `'close'` event after it has been + * destroyed. Set the `emitClose` option to `false` to change this behavior. + * + * ```js + * import { open } from 'node:fs/promises'; + * + * const fd = await open('/dev/input/event0'); + * // Create a stream from some character device. + * const stream = fd.createReadStream(); + * setTimeout(() => { + * stream.close(); // This may not close the stream. + * // Artificially marking end-of-stream, as if the underlying resource had + * // indicated end-of-file by itself, allows the stream to close. + * // This does not cancel pending read operations, and if there is such an + * // operation, the process may still not be able to exit successfully + * // until it finishes. + * stream.push(null); + * stream.read(0); + * }, 100); + * ``` + * + * If `autoClose` is false, then the file descriptor won't be closed, even if + * there's an error. It is the application's responsibility to close it and make + * sure there's no file descriptor leak. If `autoClose` is set to true (default + * behavior), on `'error'` or `'end'` the file descriptor will be closed + * automatically. + * + * An example to read the last 10 bytes of a file which is 100 bytes long: + * + * ```js + * import { open } from 'node:fs/promises'; + * + * const fd = await open('sample.txt'); + * fd.createReadStream({ start: 90, end: 99 }); + * ``` + * @since v16.11.0 + */ + createReadStream(options?: CreateReadStreamOptions): ReadStream; + /** + * `options` may also include a `start` option to allow writing data at some + * position past the beginning of the file, allowed values are in the + * \[0, [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)\] range. Modifying a file rather than + * replacing it may require the `flags` `open` option to be set to `r+` rather than + * the default `r`. The `encoding` can be any one of those accepted by `Buffer`. + * + * If `autoClose` is set to true (default behavior) on `'error'` or `'finish'`the file descriptor will be closed automatically. If `autoClose` is false, + * then the file descriptor won't be closed, even if there's an error. + * It is the application's responsibility to close it and make sure there's no + * file descriptor leak. + * + * By default, the stream will emit a `'close'` event after it has been + * destroyed. Set the `emitClose` option to `false` to change this behavior. + * @since v16.11.0 + */ + createWriteStream(options?: CreateWriteStreamOptions): WriteStream; + /** + * Forces all currently queued I/O operations associated with the file to the + * operating system's synchronized I/O completion state. Refer to the POSIX [`fdatasync(2)`](http://man7.org/linux/man-pages/man2/fdatasync.2.html) documentation for details. + * + * Unlike `filehandle.sync` this method does not flush modified metadata. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + datasync(): Promise; + /** + * Request that all data for the open file descriptor is flushed to the storage + * device. The specific implementation is operating system and device specific. + * Refer to the POSIX [`fsync(2)`](http://man7.org/linux/man-pages/man2/fsync.2.html) documentation for more detail. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + sync(): Promise; + /** + * Reads data from the file and stores that in the given buffer. + * + * If the file is not modified concurrently, the end-of-file is reached when the + * number of bytes read is zero. + * @since v10.0.0 + * @param buffer A buffer that will be filled with the file data read. + * @param offset The location in the buffer at which to start filling. + * @param length The number of bytes to read. + * @param position The location where to begin reading data from the file. If `null`, data will be read from the current file position, and the position will be updated. If `position` is an + * integer, the current file position will remain unchanged. + * @return Fulfills upon success with an object with two properties: + */ + read( + buffer: T, + offset?: number | null, + length?: number | null, + position?: number | null, + ): Promise>; + read(options?: FileReadOptions): Promise>; + /** + * Returns a `ReadableStream` that may be used to read the files data. + * + * An error will be thrown if this method is called more than once or is called + * after the `FileHandle` is closed or closing. + * + * ```js + * import { + * open, + * } from 'node:fs/promises'; + * + * const file = await open('./some/file/to/read'); + * + * for await (const chunk of file.readableWebStream()) + * console.log(chunk); + * + * await file.close(); + * ``` + * + * While the `ReadableStream` will read the file to completion, it will not + * close the `FileHandle` automatically. User code must still call the`fileHandle.close()` method. + * @since v17.0.0 + * @experimental + */ + readableWebStream(options?: ReadableWebStreamOptions): ReadableStream; + /** + * Asynchronously reads the entire contents of a file. + * + * If `options` is a string, then it specifies the `encoding`. + * + * The `FileHandle` has to support reading. + * + * If one or more `filehandle.read()` calls are made on a file handle and then a`filehandle.readFile()` call is made, the data will be read from the current + * position till the end of the file. It doesn't always read from the beginning + * of the file. + * @since v10.0.0 + * @return Fulfills upon a successful read with the contents of the file. If no encoding is specified (using `options.encoding`), the data is returned as a {Buffer} object. Otherwise, the + * data will be a string. + */ + readFile( + options?: { + encoding?: null | undefined; + flag?: OpenMode | undefined; + } | null, + ): Promise; + /** + * Asynchronously reads the entire contents of a file. The underlying file will _not_ be closed automatically. + * The `FileHandle` must have been opened for reading. + * @param options An object that may contain an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + readFile( + options: + | { + encoding: BufferEncoding; + flag?: OpenMode | undefined; + } + | BufferEncoding, + ): Promise; + /** + * Asynchronously reads the entire contents of a file. The underlying file will _not_ be closed automatically. + * The `FileHandle` must have been opened for reading. + * @param options An object that may contain an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + readFile( + options?: + | (ObjectEncodingOptions & { + flag?: OpenMode | undefined; + }) + | BufferEncoding + | null, + ): Promise; + /** + * Convenience method to create a `readline` interface and stream over the file. + * See `filehandle.createReadStream()` for the options. + * + * ```js + * import { open } from 'node:fs/promises'; + * + * const file = await open('./some/file/to/read'); + * + * for await (const line of file.readLines()) { + * console.log(line); + * } + * ``` + * @since v18.11.0 + */ + readLines(options?: CreateReadStreamOptions): ReadlineInterface; + /** + * @since v10.0.0 + * @return Fulfills with an {fs.Stats} for the file. + */ + stat( + opts?: StatOptions & { + bigint?: false | undefined; + }, + ): Promise; + stat( + opts: StatOptions & { + bigint: true; + }, + ): Promise; + stat(opts?: StatOptions): Promise; + /** + * Truncates the file. + * + * If the file was larger than `len` bytes, only the first `len` bytes will be + * retained in the file. + * + * The following example retains only the first four bytes of the file: + * + * ```js + * import { open } from 'node:fs/promises'; + * + * let filehandle = null; + * try { + * filehandle = await open('temp.txt', 'r+'); + * await filehandle.truncate(4); + * } finally { + * await filehandle?.close(); + * } + * ``` + * + * If the file previously was shorter than `len` bytes, it is extended, and the + * extended part is filled with null bytes (`'\0'`): + * + * If `len` is negative then `0` will be used. + * @since v10.0.0 + * @param [len=0] + * @return Fulfills with `undefined` upon success. + */ + truncate(len?: number): Promise; + /** + * Change the file system timestamps of the object referenced by the `FileHandle` then resolves the promise with no arguments upon success. + * @since v10.0.0 + */ + utimes(atime: TimeLike, mtime: TimeLike): Promise; + /** + * Asynchronously writes data to a file, replacing the file if it already exists.`data` can be a string, a buffer, an + * [AsyncIterable](https://tc39.github.io/ecma262/#sec-asynciterable-interface), or an + * [Iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol) object. + * The promise is resolved with no arguments upon success. + * + * If `options` is a string, then it specifies the `encoding`. + * + * The `FileHandle` has to support writing. + * + * It is unsafe to use `filehandle.writeFile()` multiple times on the same file + * without waiting for the promise to be resolved (or rejected). + * + * If one or more `filehandle.write()` calls are made on a file handle and then a`filehandle.writeFile()` call is made, the data will be written from the + * current position till the end of the file. It doesn't always write from the + * beginning of the file. + * @since v10.0.0 + */ + writeFile( + data: string | Uint8Array, + options?: (ObjectEncodingOptions & FlagAndOpenMode & Abortable) | BufferEncoding | null, + ): Promise; + /** + * Write `buffer` to the file. + * + * The promise is resolved with an object containing two properties: + * + * It is unsafe to use `filehandle.write()` multiple times on the same file + * without waiting for the promise to be resolved (or rejected). For this + * scenario, use `filehandle.createWriteStream()`. + * + * On Linux, positional writes do not work when the file is opened in append mode. + * The kernel ignores the position argument and always appends the data to + * the end of the file. + * @since v10.0.0 + * @param offset The start position from within `buffer` where the data to write begins. + * @param [length=buffer.byteLength - offset] The number of bytes from `buffer` to write. + * @param [position='null'] The offset from the beginning of the file where the data from `buffer` should be written. If `position` is not a `number`, the data will be written at the current + * position. See the POSIX pwrite(2) documentation for more detail. + */ + write( + buffer: TBuffer, + offset?: number | null, + length?: number | null, + position?: number | null, + ): Promise<{ + bytesWritten: number; + buffer: TBuffer; + }>; + write( + data: string, + position?: number | null, + encoding?: BufferEncoding | null, + ): Promise<{ + bytesWritten: number; + buffer: string; + }>; + /** + * Write an array of [ArrayBufferView](https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView) s to the file. + * + * The promise is resolved with an object containing a two properties: + * + * It is unsafe to call `writev()` multiple times on the same file without waiting + * for the promise to be resolved (or rejected). + * + * On Linux, positional writes don't work when the file is opened in append mode. + * The kernel ignores the position argument and always appends the data to + * the end of the file. + * @since v12.9.0 + * @param [position='null'] The offset from the beginning of the file where the data from `buffers` should be written. If `position` is not a `number`, the data will be written at the current + * position. + */ + writev(buffers: ReadonlyArray, position?: number): Promise; + /** + * Read from a file and write to an array of [ArrayBufferView](https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView) s + * @since v13.13.0, v12.17.0 + * @param [position='null'] The offset from the beginning of the file where the data should be read from. If `position` is not a `number`, the data will be read from the current position. + * @return Fulfills upon success an object containing two properties: + */ + readv(buffers: ReadonlyArray, position?: number): Promise; + /** + * Closes the file handle after waiting for any pending operation on the handle to + * complete. + * + * ```js + * import { open } from 'node:fs/promises'; + * + * let filehandle; + * try { + * filehandle = await open('thefile.txt', 'r'); + * } finally { + * await filehandle?.close(); + * } + * ``` + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + close(): Promise; + /** + * An alias for {@link FileHandle.close()}. + * @since v20.4.0 + */ + [Symbol.asyncDispose](): Promise; + } + const constants: typeof fsConstants; + /** + * Tests a user's permissions for the file or directory specified by `path`. + * The `mode` argument is an optional integer that specifies the accessibility + * checks to be performed. `mode` should be either the value `fs.constants.F_OK`or a mask consisting of the bitwise OR of any of `fs.constants.R_OK`,`fs.constants.W_OK`, and `fs.constants.X_OK` + * (e.g.`fs.constants.W_OK | fs.constants.R_OK`). Check `File access constants` for + * possible values of `mode`. + * + * If the accessibility check is successful, the promise is resolved with no + * value. If any of the accessibility checks fail, the promise is rejected + * with an [Error](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) object. The following example checks if the file`/etc/passwd` can be read and + * written by the current process. + * + * ```js + * import { access, constants } from 'node:fs/promises'; + * + * try { + * await access('/etc/passwd', constants.R_OK | constants.W_OK); + * console.log('can access'); + * } catch { + * console.error('cannot access'); + * } + * ``` + * + * Using `fsPromises.access()` to check for the accessibility of a file before + * calling `fsPromises.open()` is not recommended. Doing so introduces a race + * condition, since other processes may change the file's state between the two + * calls. Instead, user code should open/read/write the file directly and handle + * the error raised if the file is not accessible. + * @since v10.0.0 + * @param [mode=fs.constants.F_OK] + * @return Fulfills with `undefined` upon success. + */ + function access(path: PathLike, mode?: number): Promise; + /** + * Asynchronously copies `src` to `dest`. By default, `dest` is overwritten if it + * already exists. + * + * No guarantees are made about the atomicity of the copy operation. If an + * error occurs after the destination file has been opened for writing, an attempt + * will be made to remove the destination. + * + * ```js + * import { copyFile, constants } from 'node:fs/promises'; + * + * try { + * await copyFile('source.txt', 'destination.txt'); + * console.log('source.txt was copied to destination.txt'); + * } catch { + * console.error('The file could not be copied'); + * } + * + * // By using COPYFILE_EXCL, the operation will fail if destination.txt exists. + * try { + * await copyFile('source.txt', 'destination.txt', constants.COPYFILE_EXCL); + * console.log('source.txt was copied to destination.txt'); + * } catch { + * console.error('The file could not be copied'); + * } + * ``` + * @since v10.0.0 + * @param src source filename to copy + * @param dest destination filename of the copy operation + * @param [mode=0] Optional modifiers that specify the behavior of the copy operation. It is possible to create a mask consisting of the bitwise OR of two or more values (e.g. + * `fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE`) + * @return Fulfills with `undefined` upon success. + */ + function copyFile(src: PathLike, dest: PathLike, mode?: number): Promise; + /** + * Opens a `FileHandle`. + * + * Refer to the POSIX [`open(2)`](http://man7.org/linux/man-pages/man2/open.2.html) documentation for more detail. + * + * Some characters (`< > : " / \ | ? *`) are reserved under Windows as documented + * by [Naming Files, Paths, and Namespaces](https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file). Under NTFS, if the filename contains + * a colon, Node.js will open a file system stream, as described by [this MSDN page](https://docs.microsoft.com/en-us/windows/desktop/FileIO/using-streams). + * @since v10.0.0 + * @param [flags='r'] See `support of file system `flags``. + * @param [mode=0o666] Sets the file mode (permission and sticky bits) if the file is created. + * @return Fulfills with a {FileHandle} object. + */ + function open(path: PathLike, flags?: string | number, mode?: Mode): Promise; + /** + * Renames `oldPath` to `newPath`. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function rename(oldPath: PathLike, newPath: PathLike): Promise; + /** + * Truncates (shortens or extends the length) of the content at `path` to `len`bytes. + * @since v10.0.0 + * @param [len=0] + * @return Fulfills with `undefined` upon success. + */ + function truncate(path: PathLike, len?: number): Promise; + /** + * Removes the directory identified by `path`. + * + * Using `fsPromises.rmdir()` on a file (not a directory) results in the + * promise being rejected with an `ENOENT` error on Windows and an `ENOTDIR`error on POSIX. + * + * To get a behavior similar to the `rm -rf` Unix command, use `fsPromises.rm()` with options `{ recursive: true, force: true }`. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function rmdir(path: PathLike, options?: RmDirOptions): Promise; + /** + * Removes files and directories (modeled on the standard POSIX `rm` utility). + * @since v14.14.0 + * @return Fulfills with `undefined` upon success. + */ + function rm(path: PathLike, options?: RmOptions): Promise; + /** + * Asynchronously creates a directory. + * + * The optional `options` argument can be an integer specifying `mode` (permission + * and sticky bits), or an object with a `mode` property and a `recursive`property indicating whether parent directories should be created. Calling`fsPromises.mkdir()` when `path` is a directory + * that exists results in a + * rejection only when `recursive` is false. + * + * ```js + * import { mkdir } from 'node:fs/promises'; + * + * try { + * const projectFolder = new URL('./test/project/', import.meta.url); + * const createDir = await mkdir(projectFolder, { recursive: true }); + * + * console.log(`created ${createDir}`); + * } catch (err) { + * console.error(err.message); + * } + * ``` + * @since v10.0.0 + * @return Upon success, fulfills with `undefined` if `recursive` is `false`, or the first directory path created if `recursive` is `true`. + */ + function mkdir( + path: PathLike, + options: MakeDirectoryOptions & { + recursive: true; + }, + ): Promise; + /** + * Asynchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + function mkdir( + path: PathLike, + options?: + | Mode + | (MakeDirectoryOptions & { + recursive?: false | undefined; + }) + | null, + ): Promise; + /** + * Asynchronous mkdir(2) - create a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders + * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`. + */ + function mkdir(path: PathLike, options?: Mode | MakeDirectoryOptions | null): Promise; + /** + * Reads the contents of a directory. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the filenames. If the `encoding` is set to `'buffer'`, the filenames returned + * will be passed as `Buffer` objects. + * + * If `options.withFileTypes` is set to `true`, the resolved array will contain `fs.Dirent` objects. + * + * ```js + * import { readdir } from 'node:fs/promises'; + * + * try { + * const files = await readdir(path); + * for (const file of files) + * console.log(file); + * } catch (err) { + * console.error(err); + * } + * ``` + * @since v10.0.0 + * @return Fulfills with an array of the names of the files in the directory excluding `'.'` and `'..'`. + */ + function readdir( + path: PathLike, + options?: + | (ObjectEncodingOptions & { + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + }) + | BufferEncoding + | null, + ): Promise; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function readdir( + path: PathLike, + options: + | { + encoding: "buffer"; + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + } + | "buffer", + ): Promise; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function readdir( + path: PathLike, + options?: + | (ObjectEncodingOptions & { + withFileTypes?: false | undefined; + recursive?: boolean | undefined; + }) + | BufferEncoding + | null, + ): Promise; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options If called with `withFileTypes: true` the result data will be an array of Dirent. + */ + function readdir( + path: PathLike, + options: ObjectEncodingOptions & { + withFileTypes: true; + recursive?: boolean | undefined; + }, + ): Promise; + /** + * Reads the contents of the symbolic link referred to by `path`. See the POSIX [`readlink(2)`](http://man7.org/linux/man-pages/man2/readlink.2.html) documentation for more detail. The promise is + * resolved with the`linkString` upon success. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the link path returned. If the `encoding` is set to `'buffer'`, the link path + * returned will be passed as a `Buffer` object. + * @since v10.0.0 + * @return Fulfills with the `linkString` upon success. + */ + function readlink(path: PathLike, options?: ObjectEncodingOptions | BufferEncoding | null): Promise; + /** + * Asynchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function readlink(path: PathLike, options: BufferEncodingOption): Promise; + /** + * Asynchronous readlink(2) - read value of a symbolic link. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function readlink(path: PathLike, options?: ObjectEncodingOptions | string | null): Promise; + /** + * Creates a symbolic link. + * + * The `type` argument is only used on Windows platforms and can be one of `'dir'`,`'file'`, or `'junction'`. If the `type` argument is not a string, Node.js will + * autodetect `target` type and use `'file'` or `'dir'`. If the `target` does not + * exist, `'file'` will be used. Windows junction points require the destination + * path to be absolute. When using `'junction'`, the `target` argument will + * automatically be normalized to absolute path. Junction points on NTFS volumes + * can only point to directories. + * @since v10.0.0 + * @param [type='null'] + * @return Fulfills with `undefined` upon success. + */ + function symlink(target: PathLike, path: PathLike, type?: string | null): Promise; + /** + * Equivalent to `fsPromises.stat()` unless `path` refers to a symbolic link, + * in which case the link itself is stat-ed, not the file that it refers to. + * Refer to the POSIX [`lstat(2)`](http://man7.org/linux/man-pages/man2/lstat.2.html) document for more detail. + * @since v10.0.0 + * @return Fulfills with the {fs.Stats} object for the given symbolic link `path`. + */ + function lstat( + path: PathLike, + opts?: StatOptions & { + bigint?: false | undefined; + }, + ): Promise; + function lstat( + path: PathLike, + opts: StatOptions & { + bigint: true; + }, + ): Promise; + function lstat(path: PathLike, opts?: StatOptions): Promise; + /** + * @since v10.0.0 + * @return Fulfills with the {fs.Stats} object for the given `path`. + */ + function stat( + path: PathLike, + opts?: StatOptions & { + bigint?: false | undefined; + }, + ): Promise; + function stat( + path: PathLike, + opts: StatOptions & { + bigint: true; + }, + ): Promise; + function stat(path: PathLike, opts?: StatOptions): Promise; + /** + * @since v19.6.0, v18.15.0 + * @return Fulfills with the {fs.StatFs} object for the given `path`. + */ + function statfs( + path: PathLike, + opts?: StatFsOptions & { + bigint?: false | undefined; + }, + ): Promise; + function statfs( + path: PathLike, + opts: StatFsOptions & { + bigint: true; + }, + ): Promise; + function statfs(path: PathLike, opts?: StatFsOptions): Promise; + /** + * Creates a new link from the `existingPath` to the `newPath`. See the POSIX [`link(2)`](http://man7.org/linux/man-pages/man2/link.2.html) documentation for more detail. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function link(existingPath: PathLike, newPath: PathLike): Promise; + /** + * If `path` refers to a symbolic link, then the link is removed without affecting + * the file or directory to which that link refers. If the `path` refers to a file + * path that is not a symbolic link, the file is deleted. See the POSIX [`unlink(2)`](http://man7.org/linux/man-pages/man2/unlink.2.html) documentation for more detail. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function unlink(path: PathLike): Promise; + /** + * Changes the permissions of a file. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function chmod(path: PathLike, mode: Mode): Promise; + /** + * Changes the permissions on a symbolic link. + * + * This method is only implemented on macOS. + * @deprecated Since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function lchmod(path: PathLike, mode: Mode): Promise; + /** + * Changes the ownership on a symbolic link. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function lchown(path: PathLike, uid: number, gid: number): Promise; + /** + * Changes the access and modification times of a file in the same way as `fsPromises.utimes()`, with the difference that if the path refers to a + * symbolic link, then the link is not dereferenced: instead, the timestamps of + * the symbolic link itself are changed. + * @since v14.5.0, v12.19.0 + * @return Fulfills with `undefined` upon success. + */ + function lutimes(path: PathLike, atime: TimeLike, mtime: TimeLike): Promise; + /** + * Changes the ownership of a file. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function chown(path: PathLike, uid: number, gid: number): Promise; + /** + * Change the file system timestamps of the object referenced by `path`. + * + * The `atime` and `mtime` arguments follow these rules: + * + * * Values can be either numbers representing Unix epoch time, `Date`s, or a + * numeric string like `'123456789.0'`. + * * If the value can not be converted to a number, or is `NaN`, `Infinity`, or`-Infinity`, an `Error` will be thrown. + * @since v10.0.0 + * @return Fulfills with `undefined` upon success. + */ + function utimes(path: PathLike, atime: TimeLike, mtime: TimeLike): Promise; + /** + * Determines the actual location of `path` using the same semantics as the`fs.realpath.native()` function. + * + * Only paths that can be converted to UTF8 strings are supported. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use for + * the path. If the `encoding` is set to `'buffer'`, the path returned will be + * passed as a `Buffer` object. + * + * On Linux, when Node.js is linked against musl libc, the procfs file system must + * be mounted on `/proc` in order for this function to work. Glibc does not have + * this restriction. + * @since v10.0.0 + * @return Fulfills with the resolved path upon success. + */ + function realpath(path: PathLike, options?: ObjectEncodingOptions | BufferEncoding | null): Promise; + /** + * Asynchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function realpath(path: PathLike, options: BufferEncodingOption): Promise; + /** + * Asynchronous realpath(3) - return the canonicalized absolute pathname. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function realpath( + path: PathLike, + options?: ObjectEncodingOptions | BufferEncoding | null, + ): Promise; + /** + * Creates a unique temporary directory. A unique directory name is generated by + * appending six random characters to the end of the provided `prefix`. Due to + * platform inconsistencies, avoid trailing `X` characters in `prefix`. Some + * platforms, notably the BSDs, can return more than six random characters, and + * replace trailing `X` characters in `prefix` with random characters. + * + * The optional `options` argument can be a string specifying an encoding, or an + * object with an `encoding` property specifying the character encoding to use. + * + * ```js + * import { mkdtemp } from 'node:fs/promises'; + * import { join } from 'node:path'; + * import { tmpdir } from 'node:os'; + * + * try { + * await mkdtemp(join(tmpdir(), 'foo-')); + * } catch (err) { + * console.error(err); + * } + * ``` + * + * The `fsPromises.mkdtemp()` method will append the six randomly selected + * characters directly to the `prefix` string. For instance, given a directory`/tmp`, if the intention is to create a temporary directory _within_`/tmp`, the`prefix` must end with a trailing + * platform-specific path separator + * (`require('node:path').sep`). + * @since v10.0.0 + * @return Fulfills with a string containing the file system path of the newly created temporary directory. + */ + function mkdtemp(prefix: string, options?: ObjectEncodingOptions | BufferEncoding | null): Promise; + /** + * Asynchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function mkdtemp(prefix: string, options: BufferEncodingOption): Promise; + /** + * Asynchronously creates a unique temporary directory. + * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + function mkdtemp(prefix: string, options?: ObjectEncodingOptions | BufferEncoding | null): Promise; + /** + * Asynchronously writes data to a file, replacing the file if it already exists.`data` can be a string, a buffer, an + * [AsyncIterable](https://tc39.github.io/ecma262/#sec-asynciterable-interface), or an + * [Iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol) object. + * + * The `encoding` option is ignored if `data` is a buffer. + * + * If `options` is a string, then it specifies the encoding. + * + * The `mode` option only affects the newly created file. See `fs.open()` for more details. + * + * Any specified `FileHandle` has to support writing. + * + * It is unsafe to use `fsPromises.writeFile()` multiple times on the same file + * without waiting for the promise to be settled. + * + * Similarly to `fsPromises.readFile` \- `fsPromises.writeFile` is a convenience + * method that performs multiple `write` calls internally to write the buffer + * passed to it. For performance sensitive code consider using `fs.createWriteStream()` or `filehandle.createWriteStream()`. + * + * It is possible to use an `AbortSignal` to cancel an `fsPromises.writeFile()`. + * Cancelation is "best effort", and some amount of data is likely still + * to be written. + * + * ```js + * import { writeFile } from 'node:fs/promises'; + * import { Buffer } from 'node:buffer'; + * + * try { + * const controller = new AbortController(); + * const { signal } = controller; + * const data = new Uint8Array(Buffer.from('Hello Node.js')); + * const promise = writeFile('message.txt', data, { signal }); + * + * // Abort the request before the promise settles. + * controller.abort(); + * + * await promise; + * } catch (err) { + * // When a request is aborted - err is an AbortError + * console.error(err); + * } + * ``` + * + * Aborting an ongoing request does not abort individual operating + * system requests but rather the internal buffering `fs.writeFile` performs. + * @since v10.0.0 + * @param file filename or `FileHandle` + * @return Fulfills with `undefined` upon success. + */ + function writeFile( + file: PathLike | FileHandle, + data: + | string + | NodeJS.ArrayBufferView + | Iterable + | AsyncIterable + | Stream, + options?: + | (ObjectEncodingOptions & { + mode?: Mode | undefined; + flag?: OpenMode | undefined; + } & Abortable) + | BufferEncoding + | null, + ): Promise; + /** + * Asynchronously append data to a file, creating the file if it does not yet + * exist. `data` can be a string or a `Buffer`. + * + * If `options` is a string, then it specifies the `encoding`. + * + * The `mode` option only affects the newly created file. See `fs.open()` for more details. + * + * The `path` may be specified as a `FileHandle` that has been opened + * for appending (using `fsPromises.open()`). + * @since v10.0.0 + * @param path filename or {FileHandle} + * @return Fulfills with `undefined` upon success. + */ + function appendFile( + path: PathLike | FileHandle, + data: string | Uint8Array, + options?: (ObjectEncodingOptions & FlagAndOpenMode) | BufferEncoding | null, + ): Promise; + /** + * Asynchronously reads the entire contents of a file. + * + * If no encoding is specified (using `options.encoding`), the data is returned + * as a `Buffer` object. Otherwise, the data will be a string. + * + * If `options` is a string, then it specifies the encoding. + * + * When the `path` is a directory, the behavior of `fsPromises.readFile()` is + * platform-specific. On macOS, Linux, and Windows, the promise will be rejected + * with an error. On FreeBSD, a representation of the directory's contents will be + * returned. + * + * An example of reading a `package.json` file located in the same directory of the + * running code: + * + * ```js + * import { readFile } from 'node:fs/promises'; + * try { + * const filePath = new URL('./package.json', import.meta.url); + * const contents = await readFile(filePath, { encoding: 'utf8' }); + * console.log(contents); + * } catch (err) { + * console.error(err.message); + * } + * ``` + * + * It is possible to abort an ongoing `readFile` using an `AbortSignal`. If a + * request is aborted the promise returned is rejected with an `AbortError`: + * + * ```js + * import { readFile } from 'node:fs/promises'; + * + * try { + * const controller = new AbortController(); + * const { signal } = controller; + * const promise = readFile(fileName, { signal }); + * + * // Abort the request before the promise settles. + * controller.abort(); + * + * await promise; + * } catch (err) { + * // When a request is aborted - err is an AbortError + * console.error(err); + * } + * ``` + * + * Aborting an ongoing request does not abort individual operating + * system requests but rather the internal buffering `fs.readFile` performs. + * + * Any specified `FileHandle` has to support reading. + * @since v10.0.0 + * @param path filename or `FileHandle` + * @return Fulfills with the contents of the file. + */ + function readFile( + path: PathLike | FileHandle, + options?: + | ({ + encoding?: null | undefined; + flag?: OpenMode | undefined; + } & Abortable) + | null, + ): Promise; + /** + * Asynchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically. + * @param options An object that may contain an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + function readFile( + path: PathLike | FileHandle, + options: + | ({ + encoding: BufferEncoding; + flag?: OpenMode | undefined; + } & Abortable) + | BufferEncoding, + ): Promise; + /** + * Asynchronously reads the entire contents of a file. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically. + * @param options An object that may contain an optional flag. + * If a flag is not provided, it defaults to `'r'`. + */ + function readFile( + path: PathLike | FileHandle, + options?: + | ( + & ObjectEncodingOptions + & Abortable + & { + flag?: OpenMode | undefined; + } + ) + | BufferEncoding + | null, + ): Promise; + /** + * Asynchronously open a directory for iterative scanning. See the POSIX [`opendir(3)`](http://man7.org/linux/man-pages/man3/opendir.3.html) documentation for more detail. + * + * Creates an `fs.Dir`, which contains all further functions for reading from + * and cleaning up the directory. + * + * The `encoding` option sets the encoding for the `path` while opening the + * directory and subsequent read operations. + * + * Example using async iteration: + * + * ```js + * import { opendir } from 'node:fs/promises'; + * + * try { + * const dir = await opendir('./'); + * for await (const dirent of dir) + * console.log(dirent.name); + * } catch (err) { + * console.error(err); + * } + * ``` + * + * When using the async iterator, the `fs.Dir` object will be automatically + * closed after the iterator exits. + * @since v12.12.0 + * @return Fulfills with an {fs.Dir}. + */ + function opendir(path: PathLike, options?: OpenDirOptions): Promise; + /** + * Returns an async iterator that watches for changes on `filename`, where `filename`is either a file or a directory. + * + * ```js + * const { watch } = require('node:fs/promises'); + * + * const ac = new AbortController(); + * const { signal } = ac; + * setTimeout(() => ac.abort(), 10000); + * + * (async () => { + * try { + * const watcher = watch(__filename, { signal }); + * for await (const event of watcher) + * console.log(event); + * } catch (err) { + * if (err.name === 'AbortError') + * return; + * throw err; + * } + * })(); + * ``` + * + * On most platforms, `'rename'` is emitted whenever a filename appears or + * disappears in the directory. + * + * All the `caveats` for `fs.watch()` also apply to `fsPromises.watch()`. + * @since v15.9.0, v14.18.0 + * @return of objects with the properties: + */ + function watch( + filename: PathLike, + options: + | (WatchOptions & { + encoding: "buffer"; + }) + | "buffer", + ): AsyncIterable>; + /** + * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. + * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. + * If `encoding` is not supplied, the default of `'utf8'` is used. + * If `persistent` is not supplied, the default of `true` is used. + * If `recursive` is not supplied, the default of `false` is used. + */ + function watch(filename: PathLike, options?: WatchOptions | BufferEncoding): AsyncIterable>; + /** + * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`. + * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol. + * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options. + * If `encoding` is not supplied, the default of `'utf8'` is used. + * If `persistent` is not supplied, the default of `true` is used. + * If `recursive` is not supplied, the default of `false` is used. + */ + function watch( + filename: PathLike, + options: WatchOptions | string, + ): AsyncIterable> | AsyncIterable>; + /** + * Asynchronously copies the entire directory structure from `src` to `dest`, + * including subdirectories and files. + * + * When copying a directory to another directory, globs are not supported and + * behavior is similar to `cp dir1/ dir2/`. + * @since v16.7.0 + * @experimental + * @param src source path to copy. + * @param dest destination path to copy to. + * @return Fulfills with `undefined` upon success. + */ + function cp(source: string | URL, destination: string | URL, opts?: CopyOptions): Promise; +} +declare module "node:fs/promises" { + export * from "fs/promises"; +} diff --git a/node_modules/@types/node/ts4.8/globals.d.ts b/node_modules/@types/node/ts4.8/globals.d.ts new file mode 100644 index 00000000..3a449e4c --- /dev/null +++ b/node_modules/@types/node/ts4.8/globals.d.ts @@ -0,0 +1,381 @@ +// Declare "static" methods in Error +interface ErrorConstructor { + /** Create .stack property on a target object */ + captureStackTrace(targetObject: object, constructorOpt?: Function): void; + + /** + * Optional override for formatting stack traces + * + * @see https://v8.dev/docs/stack-trace-api#customizing-stack-traces + */ + prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined; + + stackTraceLimit: number; +} + +/*-----------------------------------------------* + * * + * GLOBAL * + * * + ------------------------------------------------*/ + +// For backwards compability +interface NodeRequire extends NodeJS.Require {} +interface RequireResolve extends NodeJS.RequireResolve {} +interface NodeModule extends NodeJS.Module {} + +declare var process: NodeJS.Process; +declare var console: Console; + +declare var __filename: string; +declare var __dirname: string; + +declare var require: NodeRequire; +declare var module: NodeModule; + +// Same as module.exports +declare var exports: any; + +/** + * Only available if `--expose-gc` is passed to the process. + */ +declare var gc: undefined | (() => void); + +// #region borrowed +// from https://github.com/microsoft/TypeScript/blob/38da7c600c83e7b31193a62495239a0fe478cb67/lib/lib.webworker.d.ts#L633 until moved to separate lib +/** A controller object that allows you to abort one or more DOM requests as and when desired. */ +interface AbortController { + /** + * Returns the AbortSignal object associated with this object. + */ + + readonly signal: AbortSignal; + /** + * Invoking this method will set this object's AbortSignal's aborted flag and signal to any observers that the associated activity is to be aborted. + */ + abort(reason?: any): void; +} + +/** A signal object that allows you to communicate with a DOM request (such as a Fetch) and abort it if required via an AbortController object. */ +interface AbortSignal extends EventTarget { + /** + * Returns true if this AbortSignal's AbortController has signaled to abort, and false otherwise. + */ + readonly aborted: boolean; + readonly reason: any; + onabort: null | ((this: AbortSignal, event: Event) => any); + throwIfAborted(): void; +} + +declare var AbortController: typeof globalThis extends { onmessage: any; AbortController: infer T } ? T + : { + prototype: AbortController; + new(): AbortController; + }; + +declare var AbortSignal: typeof globalThis extends { onmessage: any; AbortSignal: infer T } ? T + : { + prototype: AbortSignal; + new(): AbortSignal; + abort(reason?: any): AbortSignal; + timeout(milliseconds: number): AbortSignal; + }; +// #endregion borrowed + +// #region Disposable +interface SymbolConstructor { + /** + * A method that is used to release resources held by an object. Called by the semantics of the `using` statement. + */ + readonly dispose: unique symbol; + + /** + * A method that is used to asynchronously release resources held by an object. Called by the semantics of the `await using` statement. + */ + readonly asyncDispose: unique symbol; +} + +interface Disposable { + [Symbol.dispose](): void; +} + +interface AsyncDisposable { + [Symbol.asyncDispose](): PromiseLike; +} +// #endregion Disposable + +// #region ArrayLike.at() +interface RelativeIndexable { + /** + * Takes an integer value and returns the item at that index, + * allowing for positive and negative integers. + * Negative integers count back from the last item in the array. + */ + at(index: number): T | undefined; +} +interface String extends RelativeIndexable {} +interface Array extends RelativeIndexable {} +interface ReadonlyArray extends RelativeIndexable {} +interface Int8Array extends RelativeIndexable {} +interface Uint8Array extends RelativeIndexable {} +interface Uint8ClampedArray extends RelativeIndexable {} +interface Int16Array extends RelativeIndexable {} +interface Uint16Array extends RelativeIndexable {} +interface Int32Array extends RelativeIndexable {} +interface Uint32Array extends RelativeIndexable {} +interface Float32Array extends RelativeIndexable {} +interface Float64Array extends RelativeIndexable {} +interface BigInt64Array extends RelativeIndexable {} +interface BigUint64Array extends RelativeIndexable {} +// #endregion ArrayLike.at() end + +/** + * @since v17.0.0 + * + * Creates a deep clone of an object. + */ +declare function structuredClone( + value: T, + transfer?: { transfer: ReadonlyArray }, +): T; + +/*----------------------------------------------* +* * +* GLOBAL INTERFACES * +* * +*-----------------------------------------------*/ +declare namespace NodeJS { + interface CallSite { + /** + * Value of "this" + */ + getThis(): unknown; + + /** + * Type of "this" as a string. + * This is the name of the function stored in the constructor field of + * "this", if available. Otherwise the object's [[Class]] internal + * property. + */ + getTypeName(): string | null; + + /** + * Current function + */ + getFunction(): Function | undefined; + + /** + * Name of the current function, typically its name property. + * If a name property is not available an attempt will be made to try + * to infer a name from the function's context. + */ + getFunctionName(): string | null; + + /** + * Name of the property [of "this" or one of its prototypes] that holds + * the current function + */ + getMethodName(): string | null; + + /** + * Name of the script [if this function was defined in a script] + */ + getFileName(): string | undefined; + + /** + * Current line number [if this function was defined in a script] + */ + getLineNumber(): number | null; + + /** + * Current column number [if this function was defined in a script] + */ + getColumnNumber(): number | null; + + /** + * A call site object representing the location where eval was called + * [if this function was created using a call to eval] + */ + getEvalOrigin(): string | undefined; + + /** + * Is this a toplevel invocation, that is, is "this" the global object? + */ + isToplevel(): boolean; + + /** + * Does this call take place in code defined by a call to eval? + */ + isEval(): boolean; + + /** + * Is this call in native V8 code? + */ + isNative(): boolean; + + /** + * Is this a constructor call? + */ + isConstructor(): boolean; + } + + interface ErrnoException extends Error { + errno?: number | undefined; + code?: string | undefined; + path?: string | undefined; + syscall?: string | undefined; + } + + interface ReadableStream extends EventEmitter { + readable: boolean; + read(size?: number): string | Buffer; + setEncoding(encoding: BufferEncoding): this; + pause(): this; + resume(): this; + isPaused(): boolean; + pipe(destination: T, options?: { end?: boolean | undefined }): T; + unpipe(destination?: WritableStream): this; + unshift(chunk: string | Uint8Array, encoding?: BufferEncoding): void; + wrap(oldStream: ReadableStream): this; + [Symbol.asyncIterator](): AsyncIterableIterator; + } + + interface WritableStream extends EventEmitter { + writable: boolean; + write(buffer: Uint8Array | string, cb?: (err?: Error | null) => void): boolean; + write(str: string, encoding?: BufferEncoding, cb?: (err?: Error | null) => void): boolean; + end(cb?: () => void): this; + end(data: string | Uint8Array, cb?: () => void): this; + end(str: string, encoding?: BufferEncoding, cb?: () => void): this; + } + + interface ReadWriteStream extends ReadableStream, WritableStream {} + + interface RefCounted { + ref(): this; + unref(): this; + } + + type TypedArray = + | Uint8Array + | Uint8ClampedArray + | Uint16Array + | Uint32Array + | Int8Array + | Int16Array + | Int32Array + | BigUint64Array + | BigInt64Array + | Float32Array + | Float64Array; + type ArrayBufferView = TypedArray | DataView; + + interface Require { + (id: string): any; + resolve: RequireResolve; + cache: Dict; + /** + * @deprecated + */ + extensions: RequireExtensions; + main: Module | undefined; + } + + interface RequireResolve { + (id: string, options?: { paths?: string[] | undefined }): string; + paths(request: string): string[] | null; + } + + interface RequireExtensions extends Dict<(m: Module, filename: string) => any> { + ".js": (m: Module, filename: string) => any; + ".json": (m: Module, filename: string) => any; + ".node": (m: Module, filename: string) => any; + } + interface Module { + /** + * `true` if the module is running during the Node.js preload + */ + isPreloading: boolean; + exports: any; + require: Require; + id: string; + filename: string; + loaded: boolean; + /** @deprecated since v14.6.0 Please use `require.main` and `module.children` instead. */ + parent: Module | null | undefined; + children: Module[]; + /** + * @since v11.14.0 + * + * The directory name of the module. This is usually the same as the path.dirname() of the module.id. + */ + path: string; + paths: string[]; + } + + interface Dict { + [key: string]: T | undefined; + } + + interface ReadOnlyDict { + readonly [key: string]: T | undefined; + } + + namespace fetch { + type _Request = typeof globalThis extends { onmessage: any } ? {} : import("undici-types").Request; + type _Response = typeof globalThis extends { onmessage: any } ? {} : import("undici-types").Response; + type _FormData = typeof globalThis extends { onmessage: any } ? {} : import("undici-types").FormData; + type _Headers = typeof globalThis extends { onmessage: any } ? {} : import("undici-types").Headers; + type _RequestInit = typeof globalThis extends { onmessage: any } ? {} + : import("undici-types").RequestInit; + type Request = globalThis.Request; + type Response = globalThis.Response; + type Headers = globalThis.Headers; + type FormData = globalThis.FormData; + type RequestInit = globalThis.RequestInit; + type RequestInfo = import("undici-types").RequestInfo; + type HeadersInit = import("undici-types").HeadersInit; + type BodyInit = import("undici-types").BodyInit; + type RequestRedirect = import("undici-types").RequestRedirect; + type RequestCredentials = import("undici-types").RequestCredentials; + type RequestMode = import("undici-types").RequestMode; + type ReferrerPolicy = import("undici-types").ReferrerPolicy; + type Dispatcher = import("undici-types").Dispatcher; + type RequestDuplex = import("undici-types").RequestDuplex; + } +} + +interface RequestInit extends NodeJS.fetch._RequestInit {} + +declare function fetch( + input: NodeJS.fetch.RequestInfo, + init?: RequestInit, +): Promise; + +interface Request extends NodeJS.fetch._Request {} +declare var Request: typeof globalThis extends { + onmessage: any; + Request: infer T; +} ? T + : typeof import("undici-types").Request; + +interface Response extends NodeJS.fetch._Response {} +declare var Response: typeof globalThis extends { + onmessage: any; + Response: infer T; +} ? T + : typeof import("undici-types").Response; + +interface FormData extends NodeJS.fetch._FormData {} +declare var FormData: typeof globalThis extends { + onmessage: any; + FormData: infer T; +} ? T + : typeof import("undici-types").FormData; + +interface Headers extends NodeJS.fetch._Headers {} +declare var Headers: typeof globalThis extends { + onmessage: any; + Headers: infer T; +} ? T + : typeof import("undici-types").Headers; diff --git a/node_modules/@types/node/ts4.8/globals.global.d.ts b/node_modules/@types/node/ts4.8/globals.global.d.ts new file mode 100644 index 00000000..ef1198c0 --- /dev/null +++ b/node_modules/@types/node/ts4.8/globals.global.d.ts @@ -0,0 +1 @@ +declare var global: typeof globalThis; diff --git a/node_modules/@types/node/ts4.8/http.d.ts b/node_modules/@types/node/ts4.8/http.d.ts new file mode 100644 index 00000000..b06f5419 --- /dev/null +++ b/node_modules/@types/node/ts4.8/http.d.ts @@ -0,0 +1,1888 @@ +/** + * To use the HTTP server and client one must `require('node:http')`. + * + * The HTTP interfaces in Node.js are designed to support many features + * of the protocol which have been traditionally difficult to use. + * In particular, large, possibly chunk-encoded, messages. The interface is + * careful to never buffer entire requests or responses, so the + * user is able to stream data. + * + * HTTP message headers are represented by an object like this: + * + * ```js + * { 'content-length': '123', + * 'content-type': 'text/plain', + * 'connection': 'keep-alive', + * 'host': 'example.com', + * 'accept': '*' } + * ``` + * + * Keys are lowercased. Values are not modified. + * + * In order to support the full spectrum of possible HTTP applications, the Node.js + * HTTP API is very low-level. It deals with stream handling and message + * parsing only. It parses a message into headers and body but it does not + * parse the actual headers or the body. + * + * See `message.headers` for details on how duplicate headers are handled. + * + * The raw headers as they were received are retained in the `rawHeaders`property, which is an array of `[key, value, key2, value2, ...]`. For + * example, the previous message header object might have a `rawHeaders`list like the following: + * + * ```js + * [ 'ConTent-Length', '123456', + * 'content-LENGTH', '123', + * 'content-type', 'text/plain', + * 'CONNECTION', 'keep-alive', + * 'Host', 'example.com', + * 'accepT', '*' ] + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/http.js) + */ +declare module "http" { + import * as stream from "node:stream"; + import { URL } from "node:url"; + import { LookupOptions } from "node:dns"; + import { EventEmitter } from "node:events"; + import { LookupFunction, Server as NetServer, Socket, TcpSocketConnectOpts } from "node:net"; + // incoming headers will never contain number + interface IncomingHttpHeaders extends NodeJS.Dict { + accept?: string | undefined; + "accept-language"?: string | undefined; + "accept-patch"?: string | undefined; + "accept-ranges"?: string | undefined; + "access-control-allow-credentials"?: string | undefined; + "access-control-allow-headers"?: string | undefined; + "access-control-allow-methods"?: string | undefined; + "access-control-allow-origin"?: string | undefined; + "access-control-expose-headers"?: string | undefined; + "access-control-max-age"?: string | undefined; + "access-control-request-headers"?: string | undefined; + "access-control-request-method"?: string | undefined; + age?: string | undefined; + allow?: string | undefined; + "alt-svc"?: string | undefined; + authorization?: string | undefined; + "cache-control"?: string | undefined; + connection?: string | undefined; + "content-disposition"?: string | undefined; + "content-encoding"?: string | undefined; + "content-language"?: string | undefined; + "content-length"?: string | undefined; + "content-location"?: string | undefined; + "content-range"?: string | undefined; + "content-type"?: string | undefined; + cookie?: string | undefined; + date?: string | undefined; + etag?: string | undefined; + expect?: string | undefined; + expires?: string | undefined; + forwarded?: string | undefined; + from?: string | undefined; + host?: string | undefined; + "if-match"?: string | undefined; + "if-modified-since"?: string | undefined; + "if-none-match"?: string | undefined; + "if-unmodified-since"?: string | undefined; + "last-modified"?: string | undefined; + location?: string | undefined; + origin?: string | undefined; + pragma?: string | undefined; + "proxy-authenticate"?: string | undefined; + "proxy-authorization"?: string | undefined; + "public-key-pins"?: string | undefined; + range?: string | undefined; + referer?: string | undefined; + "retry-after"?: string | undefined; + "sec-websocket-accept"?: string | undefined; + "sec-websocket-extensions"?: string | undefined; + "sec-websocket-key"?: string | undefined; + "sec-websocket-protocol"?: string | undefined; + "sec-websocket-version"?: string | undefined; + "set-cookie"?: string[] | undefined; + "strict-transport-security"?: string | undefined; + tk?: string | undefined; + trailer?: string | undefined; + "transfer-encoding"?: string | undefined; + upgrade?: string | undefined; + "user-agent"?: string | undefined; + vary?: string | undefined; + via?: string | undefined; + warning?: string | undefined; + "www-authenticate"?: string | undefined; + } + // outgoing headers allows numbers (as they are converted internally to strings) + type OutgoingHttpHeader = number | string | string[]; + interface OutgoingHttpHeaders extends NodeJS.Dict { + accept?: string | string[] | undefined; + "accept-charset"?: string | string[] | undefined; + "accept-encoding"?: string | string[] | undefined; + "accept-language"?: string | string[] | undefined; + "accept-ranges"?: string | undefined; + "access-control-allow-credentials"?: string | undefined; + "access-control-allow-headers"?: string | undefined; + "access-control-allow-methods"?: string | undefined; + "access-control-allow-origin"?: string | undefined; + "access-control-expose-headers"?: string | undefined; + "access-control-max-age"?: string | undefined; + "access-control-request-headers"?: string | undefined; + "access-control-request-method"?: string | undefined; + age?: string | undefined; + allow?: string | undefined; + authorization?: string | undefined; + "cache-control"?: string | undefined; + "cdn-cache-control"?: string | undefined; + connection?: string | string[] | undefined; + "content-disposition"?: string | undefined; + "content-encoding"?: string | undefined; + "content-language"?: string | undefined; + "content-length"?: string | number | undefined; + "content-location"?: string | undefined; + "content-range"?: string | undefined; + "content-security-policy"?: string | undefined; + "content-security-policy-report-only"?: string | undefined; + cookie?: string | string[] | undefined; + dav?: string | string[] | undefined; + dnt?: string | undefined; + date?: string | undefined; + etag?: string | undefined; + expect?: string | undefined; + expires?: string | undefined; + forwarded?: string | undefined; + from?: string | undefined; + host?: string | undefined; + "if-match"?: string | undefined; + "if-modified-since"?: string | undefined; + "if-none-match"?: string | undefined; + "if-range"?: string | undefined; + "if-unmodified-since"?: string | undefined; + "last-modified"?: string | undefined; + link?: string | string[] | undefined; + location?: string | undefined; + "max-forwards"?: string | undefined; + origin?: string | undefined; + prgama?: string | string[] | undefined; + "proxy-authenticate"?: string | string[] | undefined; + "proxy-authorization"?: string | undefined; + "public-key-pins"?: string | undefined; + "public-key-pins-report-only"?: string | undefined; + range?: string | undefined; + referer?: string | undefined; + "referrer-policy"?: string | undefined; + refresh?: string | undefined; + "retry-after"?: string | undefined; + "sec-websocket-accept"?: string | undefined; + "sec-websocket-extensions"?: string | string[] | undefined; + "sec-websocket-key"?: string | undefined; + "sec-websocket-protocol"?: string | string[] | undefined; + "sec-websocket-version"?: string | undefined; + server?: string | undefined; + "set-cookie"?: string | string[] | undefined; + "strict-transport-security"?: string | undefined; + te?: string | undefined; + trailer?: string | undefined; + "transfer-encoding"?: string | undefined; + "user-agent"?: string | undefined; + upgrade?: string | undefined; + "upgrade-insecure-requests"?: string | undefined; + vary?: string | undefined; + via?: string | string[] | undefined; + warning?: string | undefined; + "www-authenticate"?: string | string[] | undefined; + "x-content-type-options"?: string | undefined; + "x-dns-prefetch-control"?: string | undefined; + "x-frame-options"?: string | undefined; + "x-xss-protection"?: string | undefined; + } + interface ClientRequestArgs { + _defaultAgent?: Agent | undefined; + agent?: Agent | boolean | undefined; + auth?: string | null | undefined; + // https://github.com/nodejs/node/blob/master/lib/_http_client.js#L278 + createConnection?: + | ((options: ClientRequestArgs, oncreate: (err: Error, socket: Socket) => void) => Socket) + | undefined; + defaultPort?: number | string | undefined; + family?: number | undefined; + headers?: OutgoingHttpHeaders | undefined; + hints?: LookupOptions["hints"]; + host?: string | null | undefined; + hostname?: string | null | undefined; + insecureHTTPParser?: boolean | undefined; + localAddress?: string | undefined; + localPort?: number | undefined; + lookup?: LookupFunction | undefined; + /** + * @default 16384 + */ + maxHeaderSize?: number | undefined; + method?: string | undefined; + path?: string | null | undefined; + port?: number | string | null | undefined; + protocol?: string | null | undefined; + setHost?: boolean | undefined; + signal?: AbortSignal | undefined; + socketPath?: string | undefined; + timeout?: number | undefined; + uniqueHeaders?: Array | undefined; + joinDuplicateHeaders?: boolean; + } + interface ServerOptions< + Request extends typeof IncomingMessage = typeof IncomingMessage, + Response extends typeof ServerResponse = typeof ServerResponse, + > { + /** + * Specifies the `IncomingMessage` class to be used. Useful for extending the original `IncomingMessage`. + */ + IncomingMessage?: Request | undefined; + /** + * Specifies the `ServerResponse` class to be used. Useful for extending the original `ServerResponse`. + */ + ServerResponse?: Response | undefined; + /** + * Sets the timeout value in milliseconds for receiving the entire request from the client. + * @see Server.requestTimeout for more information. + * @default 300000 + * @since v18.0.0 + */ + requestTimeout?: number | undefined; + /** + * It joins the field line values of multiple headers in a request with `, ` instead of discarding the duplicates. + * @default false + * @since v18.14.0 + */ + joinDuplicateHeaders?: boolean; + /** + * The number of milliseconds of inactivity a server needs to wait for additional incoming data, + * after it has finished writing the last response, before a socket will be destroyed. + * @see Server.keepAliveTimeout for more information. + * @default 5000 + * @since v18.0.0 + */ + keepAliveTimeout?: number | undefined; + /** + * Sets the interval value in milliseconds to check for request and headers timeout in incomplete requests. + * @default 30000 + */ + connectionsCheckingInterval?: number | undefined; + /** + * Optionally overrides all `socket`s' `readableHighWaterMark` and `writableHighWaterMark`. + * This affects `highWaterMark` property of both `IncomingMessage` and `ServerResponse`. + * Default: @see stream.getDefaultHighWaterMark(). + * @since v20.1.0 + */ + highWaterMark?: number | undefined; + /** + * Use an insecure HTTP parser that accepts invalid HTTP headers when `true`. + * Using the insecure parser should be avoided. + * See --insecure-http-parser for more information. + * @default false + */ + insecureHTTPParser?: boolean | undefined; + /** + * Optionally overrides the value of + * `--max-http-header-size` for requests received by this server, i.e. + * the maximum length of request headers in bytes. + * @default 16384 + * @since v13.3.0 + */ + maxHeaderSize?: number | undefined; + /** + * If set to `true`, it disables the use of Nagle's algorithm immediately after a new incoming connection is received. + * @default true + * @since v16.5.0 + */ + noDelay?: boolean | undefined; + /** + * If set to `true`, it enables keep-alive functionality on the socket immediately after a new incoming connection is received, + * similarly on what is done in `socket.setKeepAlive([enable][, initialDelay])`. + * @default false + * @since v16.5.0 + */ + keepAlive?: boolean | undefined; + /** + * If set to a positive number, it sets the initial delay before the first keepalive probe is sent on an idle socket. + * @default 0 + * @since v16.5.0 + */ + keepAliveInitialDelay?: number | undefined; + /** + * A list of response headers that should be sent only once. + * If the header's value is an array, the items will be joined using `; `. + */ + uniqueHeaders?: Array | undefined; + } + type RequestListener< + Request extends typeof IncomingMessage = typeof IncomingMessage, + Response extends typeof ServerResponse = typeof ServerResponse, + > = (req: InstanceType, res: InstanceType & { req: InstanceType }) => void; + /** + * @since v0.1.17 + */ + class Server< + Request extends typeof IncomingMessage = typeof IncomingMessage, + Response extends typeof ServerResponse = typeof ServerResponse, + > extends NetServer { + constructor(requestListener?: RequestListener); + constructor(options: ServerOptions, requestListener?: RequestListener); + /** + * Sets the timeout value for sockets, and emits a `'timeout'` event on + * the Server object, passing the socket as an argument, if a timeout + * occurs. + * + * If there is a `'timeout'` event listener on the Server object, then it + * will be called with the timed-out socket as an argument. + * + * By default, the Server does not timeout sockets. However, if a callback + * is assigned to the Server's `'timeout'` event, timeouts must be handled + * explicitly. + * @since v0.9.12 + * @param [msecs=0 (no timeout)] + */ + setTimeout(msecs?: number, callback?: () => void): this; + setTimeout(callback: () => void): this; + /** + * Limits maximum incoming headers count. If set to 0, no limit will be applied. + * @since v0.7.0 + */ + maxHeadersCount: number | null; + /** + * The maximum number of requests socket can handle + * before closing keep alive connection. + * + * A value of `0` will disable the limit. + * + * When the limit is reached it will set the `Connection` header value to `close`, + * but will not actually close the connection, subsequent requests sent + * after the limit is reached will get `503 Service Unavailable` as a response. + * @since v16.10.0 + */ + maxRequestsPerSocket: number | null; + /** + * The number of milliseconds of inactivity before a socket is presumed + * to have timed out. + * + * A value of `0` will disable the timeout behavior on incoming connections. + * + * The socket timeout logic is set up on connection, so changing this + * value only affects new connections to the server, not any existing connections. + * @since v0.9.12 + */ + timeout: number; + /** + * Limit the amount of time the parser will wait to receive the complete HTTP + * headers. + * + * If the timeout expires, the server responds with status 408 without + * forwarding the request to the request listener and then closes the connection. + * + * It must be set to a non-zero value (e.g. 120 seconds) to protect against + * potential Denial-of-Service attacks in case the server is deployed without a + * reverse proxy in front. + * @since v11.3.0, v10.14.0 + */ + headersTimeout: number; + /** + * The number of milliseconds of inactivity a server needs to wait for additional + * incoming data, after it has finished writing the last response, before a socket + * will be destroyed. If the server receives new data before the keep-alive + * timeout has fired, it will reset the regular inactivity timeout, i.e.,`server.timeout`. + * + * A value of `0` will disable the keep-alive timeout behavior on incoming + * connections. + * A value of `0` makes the http server behave similarly to Node.js versions prior + * to 8.0.0, which did not have a keep-alive timeout. + * + * The socket timeout logic is set up on connection, so changing this value only + * affects new connections to the server, not any existing connections. + * @since v8.0.0 + */ + keepAliveTimeout: number; + /** + * Sets the timeout value in milliseconds for receiving the entire request from + * the client. + * + * If the timeout expires, the server responds with status 408 without + * forwarding the request to the request listener and then closes the connection. + * + * It must be set to a non-zero value (e.g. 120 seconds) to protect against + * potential Denial-of-Service attacks in case the server is deployed without a + * reverse proxy in front. + * @since v14.11.0 + */ + requestTimeout: number; + /** + * Closes all connections connected to this server. + * @since v18.2.0 + */ + closeAllConnections(): void; + /** + * Closes all connections connected to this server which are not sending a request + * or waiting for a response. + * @since v18.2.0 + */ + closeIdleConnections(): void; + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "connection", listener: (socket: Socket) => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "listening", listener: () => void): this; + addListener(event: "checkContinue", listener: RequestListener): this; + addListener(event: "checkExpectation", listener: RequestListener): this; + addListener(event: "clientError", listener: (err: Error, socket: stream.Duplex) => void): this; + addListener( + event: "connect", + listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, + ): this; + addListener(event: "dropRequest", listener: (req: InstanceType, socket: stream.Duplex) => void): this; + addListener(event: "request", listener: RequestListener): this; + addListener( + event: "upgrade", + listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, + ): this; + emit(event: string, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "connection", socket: Socket): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "listening"): boolean; + emit( + event: "checkContinue", + req: InstanceType, + res: InstanceType & { req: InstanceType }, + ): boolean; + emit( + event: "checkExpectation", + req: InstanceType, + res: InstanceType & { req: InstanceType }, + ): boolean; + emit(event: "clientError", err: Error, socket: stream.Duplex): boolean; + emit(event: "connect", req: InstanceType, socket: stream.Duplex, head: Buffer): boolean; + emit(event: "dropRequest", req: InstanceType, socket: stream.Duplex): boolean; + emit( + event: "request", + req: InstanceType, + res: InstanceType & { req: InstanceType }, + ): boolean; + emit(event: "upgrade", req: InstanceType, socket: stream.Duplex, head: Buffer): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "close", listener: () => void): this; + on(event: "connection", listener: (socket: Socket) => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "listening", listener: () => void): this; + on(event: "checkContinue", listener: RequestListener): this; + on(event: "checkExpectation", listener: RequestListener): this; + on(event: "clientError", listener: (err: Error, socket: stream.Duplex) => void): this; + on(event: "connect", listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void): this; + on(event: "dropRequest", listener: (req: InstanceType, socket: stream.Duplex) => void): this; + on(event: "request", listener: RequestListener): this; + on(event: "upgrade", listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "connection", listener: (socket: Socket) => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "listening", listener: () => void): this; + once(event: "checkContinue", listener: RequestListener): this; + once(event: "checkExpectation", listener: RequestListener): this; + once(event: "clientError", listener: (err: Error, socket: stream.Duplex) => void): this; + once( + event: "connect", + listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, + ): this; + once(event: "dropRequest", listener: (req: InstanceType, socket: stream.Duplex) => void): this; + once(event: "request", listener: RequestListener): this; + once( + event: "upgrade", + listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, + ): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "connection", listener: (socket: Socket) => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "listening", listener: () => void): this; + prependListener(event: "checkContinue", listener: RequestListener): this; + prependListener(event: "checkExpectation", listener: RequestListener): this; + prependListener(event: "clientError", listener: (err: Error, socket: stream.Duplex) => void): this; + prependListener( + event: "connect", + listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, + ): this; + prependListener( + event: "dropRequest", + listener: (req: InstanceType, socket: stream.Duplex) => void, + ): this; + prependListener(event: "request", listener: RequestListener): this; + prependListener( + event: "upgrade", + listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, + ): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "connection", listener: (socket: Socket) => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "listening", listener: () => void): this; + prependOnceListener(event: "checkContinue", listener: RequestListener): this; + prependOnceListener(event: "checkExpectation", listener: RequestListener): this; + prependOnceListener(event: "clientError", listener: (err: Error, socket: stream.Duplex) => void): this; + prependOnceListener( + event: "connect", + listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, + ): this; + prependOnceListener( + event: "dropRequest", + listener: (req: InstanceType, socket: stream.Duplex) => void, + ): this; + prependOnceListener(event: "request", listener: RequestListener): this; + prependOnceListener( + event: "upgrade", + listener: (req: InstanceType, socket: stream.Duplex, head: Buffer) => void, + ): this; + } + /** + * This class serves as the parent class of {@link ClientRequest} and {@link ServerResponse}. It is an abstract outgoing message from + * the perspective of the participants of an HTTP transaction. + * @since v0.1.17 + */ + class OutgoingMessage extends stream.Writable { + readonly req: Request; + chunkedEncoding: boolean; + shouldKeepAlive: boolean; + useChunkedEncodingByDefault: boolean; + sendDate: boolean; + /** + * @deprecated Use `writableEnded` instead. + */ + finished: boolean; + /** + * Read-only. `true` if the headers were sent, otherwise `false`. + * @since v0.9.3 + */ + readonly headersSent: boolean; + /** + * Alias of `outgoingMessage.socket`. + * @since v0.3.0 + * @deprecated Since v15.12.0,v14.17.1 - Use `socket` instead. + */ + readonly connection: Socket | null; + /** + * Reference to the underlying socket. Usually, users will not want to access + * this property. + * + * After calling `outgoingMessage.end()`, this property will be nulled. + * @since v0.3.0 + */ + readonly socket: Socket | null; + constructor(); + /** + * Once a socket is associated with the message and is connected,`socket.setTimeout()` will be called with `msecs` as the first parameter. + * @since v0.9.12 + * @param callback Optional function to be called when a timeout occurs. Same as binding to the `timeout` event. + */ + setTimeout(msecs: number, callback?: () => void): this; + /** + * Sets a single header value. If the header already exists in the to-be-sent + * headers, its value will be replaced. Use an array of strings to send multiple + * headers with the same name. + * @since v0.4.0 + * @param name Header name + * @param value Header value + */ + setHeader(name: string, value: number | string | ReadonlyArray): this; + /** + * Append a single header value for the header object. + * + * If the value is an array, this is equivalent of calling this method multiple + * times. + * + * If there were no previous value for the header, this is equivalent of calling `outgoingMessage.setHeader(name, value)`. + * + * Depending of the value of `options.uniqueHeaders` when the client request or the + * server were created, this will end up in the header being sent multiple times or + * a single time with values joined using `; `. + * @since v18.3.0, v16.17.0 + * @param name Header name + * @param value Header value + */ + appendHeader(name: string, value: string | ReadonlyArray): this; + /** + * Gets the value of the HTTP header with the given name. If that header is not + * set, the returned value will be `undefined`. + * @since v0.4.0 + * @param name Name of header + */ + getHeader(name: string): number | string | string[] | undefined; + /** + * Returns a shallow copy of the current outgoing headers. Since a shallow + * copy is used, array values may be mutated without additional calls to + * various header-related HTTP module methods. The keys of the returned + * object are the header names and the values are the respective header + * values. All header names are lowercase. + * + * The object returned by the `outgoingMessage.getHeaders()` method does + * not prototypically inherit from the JavaScript `Object`. This means that + * typical `Object` methods such as `obj.toString()`, `obj.hasOwnProperty()`, + * and others are not defined and will not work. + * + * ```js + * outgoingMessage.setHeader('Foo', 'bar'); + * outgoingMessage.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']); + * + * const headers = outgoingMessage.getHeaders(); + * // headers === { foo: 'bar', 'set-cookie': ['foo=bar', 'bar=baz'] } + * ``` + * @since v7.7.0 + */ + getHeaders(): OutgoingHttpHeaders; + /** + * Returns an array containing the unique names of the current outgoing headers. + * All names are lowercase. + * @since v7.7.0 + */ + getHeaderNames(): string[]; + /** + * Returns `true` if the header identified by `name` is currently set in the + * outgoing headers. The header name is case-insensitive. + * + * ```js + * const hasContentType = outgoingMessage.hasHeader('content-type'); + * ``` + * @since v7.7.0 + */ + hasHeader(name: string): boolean; + /** + * Removes a header that is queued for implicit sending. + * + * ```js + * outgoingMessage.removeHeader('Content-Encoding'); + * ``` + * @since v0.4.0 + * @param name Header name + */ + removeHeader(name: string): void; + /** + * Adds HTTP trailers (headers but at the end of the message) to the message. + * + * Trailers will **only** be emitted if the message is chunked encoded. If not, + * the trailers will be silently discarded. + * + * HTTP requires the `Trailer` header to be sent to emit trailers, + * with a list of header field names in its value, e.g. + * + * ```js + * message.writeHead(200, { 'Content-Type': 'text/plain', + * 'Trailer': 'Content-MD5' }); + * message.write(fileData); + * message.addTrailers({ 'Content-MD5': '7895bf4b8828b55ceaf47747b4bca667' }); + * message.end(); + * ``` + * + * Attempting to set a header field name or value that contains invalid characters + * will result in a `TypeError` being thrown. + * @since v0.3.0 + */ + addTrailers(headers: OutgoingHttpHeaders | ReadonlyArray<[string, string]>): void; + /** + * Flushes the message headers. + * + * For efficiency reason, Node.js normally buffers the message headers + * until `outgoingMessage.end()` is called or the first chunk of message data + * is written. It then tries to pack the headers and data into a single TCP + * packet. + * + * It is usually desired (it saves a TCP round-trip), but not when the first + * data is not sent until possibly much later. `outgoingMessage.flushHeaders()`bypasses the optimization and kickstarts the message. + * @since v1.6.0 + */ + flushHeaders(): void; + } + /** + * This object is created internally by an HTTP server, not by the user. It is + * passed as the second parameter to the `'request'` event. + * @since v0.1.17 + */ + class ServerResponse extends OutgoingMessage { + /** + * When using implicit headers (not calling `response.writeHead()` explicitly), + * this property controls the status code that will be sent to the client when + * the headers get flushed. + * + * ```js + * response.statusCode = 404; + * ``` + * + * After response header was sent to the client, this property indicates the + * status code which was sent out. + * @since v0.4.0 + */ + statusCode: number; + /** + * When using implicit headers (not calling `response.writeHead()` explicitly), + * this property controls the status message that will be sent to the client when + * the headers get flushed. If this is left as `undefined` then the standard + * message for the status code will be used. + * + * ```js + * response.statusMessage = 'Not found'; + * ``` + * + * After response header was sent to the client, this property indicates the + * status message which was sent out. + * @since v0.11.8 + */ + statusMessage: string; + /** + * If set to `true`, Node.js will check whether the `Content-Length`header value and the size of the body, in bytes, are equal. + * Mismatching the `Content-Length` header value will result + * in an `Error` being thrown, identified by `code:``'ERR_HTTP_CONTENT_LENGTH_MISMATCH'`. + * @since v18.10.0, v16.18.0 + */ + strictContentLength: boolean; + constructor(req: Request); + assignSocket(socket: Socket): void; + detachSocket(socket: Socket): void; + /** + * Sends an HTTP/1.1 100 Continue message to the client, indicating that + * the request body should be sent. See the `'checkContinue'` event on`Server`. + * @since v0.3.0 + */ + writeContinue(callback?: () => void): void; + /** + * Sends an HTTP/1.1 103 Early Hints message to the client with a Link header, + * indicating that the user agent can preload/preconnect the linked resources. + * The `hints` is an object containing the values of headers to be sent with + * early hints message. The optional `callback` argument will be called when + * the response message has been written. + * + * **Example** + * + * ```js + * const earlyHintsLink = '; rel=preload; as=style'; + * response.writeEarlyHints({ + * 'link': earlyHintsLink, + * }); + * + * const earlyHintsLinks = [ + * '; rel=preload; as=style', + * '; rel=preload; as=script', + * ]; + * response.writeEarlyHints({ + * 'link': earlyHintsLinks, + * 'x-trace-id': 'id for diagnostics', + * }); + * + * const earlyHintsCallback = () => console.log('early hints message sent'); + * response.writeEarlyHints({ + * 'link': earlyHintsLinks, + * }, earlyHintsCallback); + * ``` + * @since v18.11.0 + * @param hints An object containing the values of headers + * @param callback Will be called when the response message has been written + */ + writeEarlyHints(hints: Record, callback?: () => void): void; + /** + * Sends a response header to the request. The status code is a 3-digit HTTP + * status code, like `404`. The last argument, `headers`, are the response headers. + * Optionally one can give a human-readable `statusMessage` as the second + * argument. + * + * `headers` may be an `Array` where the keys and values are in the same list. + * It is _not_ a list of tuples. So, the even-numbered offsets are key values, + * and the odd-numbered offsets are the associated values. The array is in the same + * format as `request.rawHeaders`. + * + * Returns a reference to the `ServerResponse`, so that calls can be chained. + * + * ```js + * const body = 'hello world'; + * response + * .writeHead(200, { + * 'Content-Length': Buffer.byteLength(body), + * 'Content-Type': 'text/plain', + * }) + * .end(body); + * ``` + * + * This method must only be called once on a message and it must + * be called before `response.end()` is called. + * + * If `response.write()` or `response.end()` are called before calling + * this, the implicit/mutable headers will be calculated and call this function. + * + * When headers have been set with `response.setHeader()`, they will be merged + * with any headers passed to `response.writeHead()`, with the headers passed + * to `response.writeHead()` given precedence. + * + * If this method is called and `response.setHeader()` has not been called, + * it will directly write the supplied header values onto the network channel + * without caching internally, and the `response.getHeader()` on the header + * will not yield the expected result. If progressive population of headers is + * desired with potential future retrieval and modification, use `response.setHeader()` instead. + * + * ```js + * // Returns content-type = text/plain + * const server = http.createServer((req, res) => { + * res.setHeader('Content-Type', 'text/html'); + * res.setHeader('X-Foo', 'bar'); + * res.writeHead(200, { 'Content-Type': 'text/plain' }); + * res.end('ok'); + * }); + * ``` + * + * `Content-Length` is read in bytes, not characters. Use `Buffer.byteLength()` to determine the length of the body in bytes. Node.js + * will check whether `Content-Length` and the length of the body which has + * been transmitted are equal or not. + * + * Attempting to set a header field name or value that contains invalid characters + * will result in a \[`Error`\]\[\] being thrown. + * @since v0.1.30 + */ + writeHead( + statusCode: number, + statusMessage?: string, + headers?: OutgoingHttpHeaders | OutgoingHttpHeader[], + ): this; + writeHead(statusCode: number, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[]): this; + /** + * Sends a HTTP/1.1 102 Processing message to the client, indicating that + * the request body should be sent. + * @since v10.0.0 + */ + writeProcessing(): void; + } + interface InformationEvent { + statusCode: number; + statusMessage: string; + httpVersion: string; + httpVersionMajor: number; + httpVersionMinor: number; + headers: IncomingHttpHeaders; + rawHeaders: string[]; + } + /** + * This object is created internally and returned from {@link request}. It + * represents an _in-progress_ request whose header has already been queued. The + * header is still mutable using the `setHeader(name, value)`,`getHeader(name)`, `removeHeader(name)` API. The actual header will + * be sent along with the first data chunk or when calling `request.end()`. + * + * To get the response, add a listener for `'response'` to the request object.`'response'` will be emitted from the request object when the response + * headers have been received. The `'response'` event is executed with one + * argument which is an instance of {@link IncomingMessage}. + * + * During the `'response'` event, one can add listeners to the + * response object; particularly to listen for the `'data'` event. + * + * If no `'response'` handler is added, then the response will be + * entirely discarded. However, if a `'response'` event handler is added, + * then the data from the response object **must** be consumed, either by + * calling `response.read()` whenever there is a `'readable'` event, or + * by adding a `'data'` handler, or by calling the `.resume()` method. + * Until the data is consumed, the `'end'` event will not fire. Also, until + * the data is read it will consume memory that can eventually lead to a + * 'process out of memory' error. + * + * For backward compatibility, `res` will only emit `'error'` if there is an`'error'` listener registered. + * + * Set `Content-Length` header to limit the response body size. + * If `response.strictContentLength` is set to `true`, mismatching the`Content-Length` header value will result in an `Error` being thrown, + * identified by `code:``'ERR_HTTP_CONTENT_LENGTH_MISMATCH'`. + * + * `Content-Length` value should be in bytes, not characters. Use `Buffer.byteLength()` to determine the length of the body in bytes. + * @since v0.1.17 + */ + class ClientRequest extends OutgoingMessage { + /** + * The `request.aborted` property will be `true` if the request has + * been aborted. + * @since v0.11.14 + * @deprecated Since v17.0.0,v16.12.0 - Check `destroyed` instead. + */ + aborted: boolean; + /** + * The request host. + * @since v14.5.0, v12.19.0 + */ + host: string; + /** + * The request protocol. + * @since v14.5.0, v12.19.0 + */ + protocol: string; + /** + * When sending request through a keep-alive enabled agent, the underlying socket + * might be reused. But if server closes connection at unfortunate time, client + * may run into a 'ECONNRESET' error. + * + * ```js + * import http from 'node:http'; + * + * // Server has a 5 seconds keep-alive timeout by default + * http + * .createServer((req, res) => { + * res.write('hello\n'); + * res.end(); + * }) + * .listen(3000); + * + * setInterval(() => { + * // Adapting a keep-alive agent + * http.get('http://localhost:3000', { agent }, (res) => { + * res.on('data', (data) => { + * // Do nothing + * }); + * }); + * }, 5000); // Sending request on 5s interval so it's easy to hit idle timeout + * ``` + * + * By marking a request whether it reused socket or not, we can do + * automatic error retry base on it. + * + * ```js + * import http from 'node:http'; + * const agent = new http.Agent({ keepAlive: true }); + * + * function retriableRequest() { + * const req = http + * .get('http://localhost:3000', { agent }, (res) => { + * // ... + * }) + * .on('error', (err) => { + * // Check if retry is needed + * if (req.reusedSocket && err.code === 'ECONNRESET') { + * retriableRequest(); + * } + * }); + * } + * + * retriableRequest(); + * ``` + * @since v13.0.0, v12.16.0 + */ + reusedSocket: boolean; + /** + * Limits maximum response headers count. If set to 0, no limit will be applied. + */ + maxHeadersCount: number; + constructor(url: string | URL | ClientRequestArgs, cb?: (res: IncomingMessage) => void); + /** + * The request method. + * @since v0.1.97 + */ + method: string; + /** + * The request path. + * @since v0.4.0 + */ + path: string; + /** + * Marks the request as aborting. Calling this will cause remaining data + * in the response to be dropped and the socket to be destroyed. + * @since v0.3.8 + * @deprecated Since v14.1.0,v13.14.0 - Use `destroy` instead. + */ + abort(): void; + onSocket(socket: Socket): void; + /** + * Once a socket is assigned to this request and is connected `socket.setTimeout()` will be called. + * @since v0.5.9 + * @param timeout Milliseconds before a request times out. + * @param callback Optional function to be called when a timeout occurs. Same as binding to the `'timeout'` event. + */ + setTimeout(timeout: number, callback?: () => void): this; + /** + * Once a socket is assigned to this request and is connected `socket.setNoDelay()` will be called. + * @since v0.5.9 + */ + setNoDelay(noDelay?: boolean): void; + /** + * Once a socket is assigned to this request and is connected `socket.setKeepAlive()` will be called. + * @since v0.5.9 + */ + setSocketKeepAlive(enable?: boolean, initialDelay?: number): void; + /** + * Returns an array containing the unique names of the current outgoing raw + * headers. Header names are returned with their exact casing being set. + * + * ```js + * request.setHeader('Foo', 'bar'); + * request.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']); + * + * const headerNames = request.getRawHeaderNames(); + * // headerNames === ['Foo', 'Set-Cookie'] + * ``` + * @since v15.13.0, v14.17.0 + */ + getRawHeaderNames(): string[]; + /** + * @deprecated + */ + addListener(event: "abort", listener: () => void): this; + addListener( + event: "connect", + listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, + ): this; + addListener(event: "continue", listener: () => void): this; + addListener(event: "information", listener: (info: InformationEvent) => void): this; + addListener(event: "response", listener: (response: IncomingMessage) => void): this; + addListener(event: "socket", listener: (socket: Socket) => void): this; + addListener(event: "timeout", listener: () => void): this; + addListener( + event: "upgrade", + listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, + ): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "pipe", listener: (src: stream.Readable) => void): this; + addListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + /** + * @deprecated + */ + on(event: "abort", listener: () => void): this; + on(event: "connect", listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; + on(event: "continue", listener: () => void): this; + on(event: "information", listener: (info: InformationEvent) => void): this; + on(event: "response", listener: (response: IncomingMessage) => void): this; + on(event: "socket", listener: (socket: Socket) => void): this; + on(event: "timeout", listener: () => void): this; + on(event: "upgrade", listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; + on(event: "close", listener: () => void): this; + on(event: "drain", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "pipe", listener: (src: stream.Readable) => void): this; + on(event: "unpipe", listener: (src: stream.Readable) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + /** + * @deprecated + */ + once(event: "abort", listener: () => void): this; + once(event: "connect", listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; + once(event: "continue", listener: () => void): this; + once(event: "information", listener: (info: InformationEvent) => void): this; + once(event: "response", listener: (response: IncomingMessage) => void): this; + once(event: "socket", listener: (socket: Socket) => void): this; + once(event: "timeout", listener: () => void): this; + once(event: "upgrade", listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this; + once(event: "close", listener: () => void): this; + once(event: "drain", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "pipe", listener: (src: stream.Readable) => void): this; + once(event: "unpipe", listener: (src: stream.Readable) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + /** + * @deprecated + */ + prependListener(event: "abort", listener: () => void): this; + prependListener( + event: "connect", + listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, + ): this; + prependListener(event: "continue", listener: () => void): this; + prependListener(event: "information", listener: (info: InformationEvent) => void): this; + prependListener(event: "response", listener: (response: IncomingMessage) => void): this; + prependListener(event: "socket", listener: (socket: Socket) => void): this; + prependListener(event: "timeout", listener: () => void): this; + prependListener( + event: "upgrade", + listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, + ): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "pipe", listener: (src: stream.Readable) => void): this; + prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + /** + * @deprecated + */ + prependOnceListener(event: "abort", listener: () => void): this; + prependOnceListener( + event: "connect", + listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, + ): this; + prependOnceListener(event: "continue", listener: () => void): this; + prependOnceListener(event: "information", listener: (info: InformationEvent) => void): this; + prependOnceListener(event: "response", listener: (response: IncomingMessage) => void): this; + prependOnceListener(event: "socket", listener: (socket: Socket) => void): this; + prependOnceListener(event: "timeout", listener: () => void): this; + prependOnceListener( + event: "upgrade", + listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void, + ): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this; + prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + /** + * An `IncomingMessage` object is created by {@link Server} or {@link ClientRequest} and passed as the first argument to the `'request'` and `'response'` event respectively. It may be used to + * access response + * status, headers, and data. + * + * Different from its `socket` value which is a subclass of `stream.Duplex`, the`IncomingMessage` itself extends `stream.Readable` and is created separately to + * parse and emit the incoming HTTP headers and payload, as the underlying socket + * may be reused multiple times in case of keep-alive. + * @since v0.1.17 + */ + class IncomingMessage extends stream.Readable { + constructor(socket: Socket); + /** + * The `message.aborted` property will be `true` if the request has + * been aborted. + * @since v10.1.0 + * @deprecated Since v17.0.0,v16.12.0 - Check `message.destroyed` from stream.Readable. + */ + aborted: boolean; + /** + * In case of server request, the HTTP version sent by the client. In the case of + * client response, the HTTP version of the connected-to server. + * Probably either `'1.1'` or `'1.0'`. + * + * Also `message.httpVersionMajor` is the first integer and`message.httpVersionMinor` is the second. + * @since v0.1.1 + */ + httpVersion: string; + httpVersionMajor: number; + httpVersionMinor: number; + /** + * The `message.complete` property will be `true` if a complete HTTP message has + * been received and successfully parsed. + * + * This property is particularly useful as a means of determining if a client or + * server fully transmitted a message before a connection was terminated: + * + * ```js + * const req = http.request({ + * host: '127.0.0.1', + * port: 8080, + * method: 'POST', + * }, (res) => { + * res.resume(); + * res.on('end', () => { + * if (!res.complete) + * console.error( + * 'The connection was terminated while the message was still being sent'); + * }); + * }); + * ``` + * @since v0.3.0 + */ + complete: boolean; + /** + * Alias for `message.socket`. + * @since v0.1.90 + * @deprecated Since v16.0.0 - Use `socket`. + */ + connection: Socket; + /** + * The `net.Socket` object associated with the connection. + * + * With HTTPS support, use `request.socket.getPeerCertificate()` to obtain the + * client's authentication details. + * + * This property is guaranteed to be an instance of the `net.Socket` class, + * a subclass of `stream.Duplex`, unless the user specified a socket + * type other than `net.Socket` or internally nulled. + * @since v0.3.0 + */ + socket: Socket; + /** + * The request/response headers object. + * + * Key-value pairs of header names and values. Header names are lower-cased. + * + * ```js + * // Prints something like: + * // + * // { 'user-agent': 'curl/7.22.0', + * // host: '127.0.0.1:8000', + * // accept: '*' } + * console.log(request.headers); + * ``` + * + * Duplicates in raw headers are handled in the following ways, depending on the + * header name: + * + * * Duplicates of `age`, `authorization`, `content-length`, `content-type`,`etag`, `expires`, `from`, `host`, `if-modified-since`, `if-unmodified-since`,`last-modified`, `location`, + * `max-forwards`, `proxy-authorization`, `referer`,`retry-after`, `server`, or `user-agent` are discarded. + * To allow duplicate values of the headers listed above to be joined, + * use the option `joinDuplicateHeaders` in {@link request} and {@link createServer}. See RFC 9110 Section 5.3 for more + * information. + * * `set-cookie` is always an array. Duplicates are added to the array. + * * For duplicate `cookie` headers, the values are joined together with `; `. + * * For all other headers, the values are joined together with `, `. + * @since v0.1.5 + */ + headers: IncomingHttpHeaders; + /** + * Similar to `message.headers`, but there is no join logic and the values are + * always arrays of strings, even for headers received just once. + * + * ```js + * // Prints something like: + * // + * // { 'user-agent': ['curl/7.22.0'], + * // host: ['127.0.0.1:8000'], + * // accept: ['*'] } + * console.log(request.headersDistinct); + * ``` + * @since v18.3.0, v16.17.0 + */ + headersDistinct: NodeJS.Dict; + /** + * The raw request/response headers list exactly as they were received. + * + * The keys and values are in the same list. It is _not_ a + * list of tuples. So, the even-numbered offsets are key values, and the + * odd-numbered offsets are the associated values. + * + * Header names are not lowercased, and duplicates are not merged. + * + * ```js + * // Prints something like: + * // + * // [ 'user-agent', + * // 'this is invalid because there can be only one', + * // 'User-Agent', + * // 'curl/7.22.0', + * // 'Host', + * // '127.0.0.1:8000', + * // 'ACCEPT', + * // '*' ] + * console.log(request.rawHeaders); + * ``` + * @since v0.11.6 + */ + rawHeaders: string[]; + /** + * The request/response trailers object. Only populated at the `'end'` event. + * @since v0.3.0 + */ + trailers: NodeJS.Dict; + /** + * Similar to `message.trailers`, but there is no join logic and the values are + * always arrays of strings, even for headers received just once. + * Only populated at the `'end'` event. + * @since v18.3.0, v16.17.0 + */ + trailersDistinct: NodeJS.Dict; + /** + * The raw request/response trailer keys and values exactly as they were + * received. Only populated at the `'end'` event. + * @since v0.11.6 + */ + rawTrailers: string[]; + /** + * Calls `message.socket.setTimeout(msecs, callback)`. + * @since v0.5.9 + */ + setTimeout(msecs: number, callback?: () => void): this; + /** + * **Only valid for request obtained from {@link Server}.** + * + * The request method as a string. Read only. Examples: `'GET'`, `'DELETE'`. + * @since v0.1.1 + */ + method?: string | undefined; + /** + * **Only valid for request obtained from {@link Server}.** + * + * Request URL string. This contains only the URL that is present in the actual + * HTTP request. Take the following request: + * + * ```http + * GET /status?name=ryan HTTP/1.1 + * Accept: text/plain + * ``` + * + * To parse the URL into its parts: + * + * ```js + * new URL(request.url, `http://${request.headers.host}`); + * ``` + * + * When `request.url` is `'/status?name=ryan'` and `request.headers.host` is`'localhost:3000'`: + * + * ```console + * $ node + * > new URL(request.url, `http://${request.headers.host}`) + * URL { + * href: 'http://localhost:3000/status?name=ryan', + * origin: 'http://localhost:3000', + * protocol: 'http:', + * username: '', + * password: '', + * host: 'localhost:3000', + * hostname: 'localhost', + * port: '3000', + * pathname: '/status', + * search: '?name=ryan', + * searchParams: URLSearchParams { 'name' => 'ryan' }, + * hash: '' + * } + * ``` + * @since v0.1.90 + */ + url?: string | undefined; + /** + * **Only valid for response obtained from {@link ClientRequest}.** + * + * The 3-digit HTTP response status code. E.G. `404`. + * @since v0.1.1 + */ + statusCode?: number | undefined; + /** + * **Only valid for response obtained from {@link ClientRequest}.** + * + * The HTTP response status message (reason phrase). E.G. `OK` or `Internal Server Error`. + * @since v0.11.10 + */ + statusMessage?: string | undefined; + /** + * Calls `destroy()` on the socket that received the `IncomingMessage`. If `error`is provided, an `'error'` event is emitted on the socket and `error` is passed + * as an argument to any listeners on the event. + * @since v0.3.0 + */ + destroy(error?: Error): this; + } + interface AgentOptions extends Partial { + /** + * Keep sockets around in a pool to be used by other requests in the future. Default = false + */ + keepAlive?: boolean | undefined; + /** + * When using HTTP KeepAlive, how often to send TCP KeepAlive packets over sockets being kept alive. Default = 1000. + * Only relevant if keepAlive is set to true. + */ + keepAliveMsecs?: number | undefined; + /** + * Maximum number of sockets to allow per host. Default for Node 0.10 is 5, default for Node 0.12 is Infinity + */ + maxSockets?: number | undefined; + /** + * Maximum number of sockets allowed for all hosts in total. Each request will use a new socket until the maximum is reached. Default: Infinity. + */ + maxTotalSockets?: number | undefined; + /** + * Maximum number of sockets to leave open in a free state. Only relevant if keepAlive is set to true. Default = 256. + */ + maxFreeSockets?: number | undefined; + /** + * Socket timeout in milliseconds. This will set the timeout after the socket is connected. + */ + timeout?: number | undefined; + /** + * Scheduling strategy to apply when picking the next free socket to use. + * @default `lifo` + */ + scheduling?: "fifo" | "lifo" | undefined; + } + /** + * An `Agent` is responsible for managing connection persistence + * and reuse for HTTP clients. It maintains a queue of pending requests + * for a given host and port, reusing a single socket connection for each + * until the queue is empty, at which time the socket is either destroyed + * or put into a pool where it is kept to be used again for requests to the + * same host and port. Whether it is destroyed or pooled depends on the`keepAlive` `option`. + * + * Pooled connections have TCP Keep-Alive enabled for them, but servers may + * still close idle connections, in which case they will be removed from the + * pool and a new connection will be made when a new HTTP request is made for + * that host and port. Servers may also refuse to allow multiple requests + * over the same connection, in which case the connection will have to be + * remade for every request and cannot be pooled. The `Agent` will still make + * the requests to that server, but each one will occur over a new connection. + * + * When a connection is closed by the client or the server, it is removed + * from the pool. Any unused sockets in the pool will be unrefed so as not + * to keep the Node.js process running when there are no outstanding requests. + * (see `socket.unref()`). + * + * It is good practice, to `destroy()` an `Agent` instance when it is no + * longer in use, because unused sockets consume OS resources. + * + * Sockets are removed from an agent when the socket emits either + * a `'close'` event or an `'agentRemove'` event. When intending to keep one + * HTTP request open for a long time without keeping it in the agent, something + * like the following may be done: + * + * ```js + * http.get(options, (res) => { + * // Do stuff + * }).on('socket', (socket) => { + * socket.emit('agentRemove'); + * }); + * ``` + * + * An agent may also be used for an individual request. By providing`{agent: false}` as an option to the `http.get()` or `http.request()`functions, a one-time use `Agent` with default options + * will be used + * for the client connection. + * + * `agent:false`: + * + * ```js + * http.get({ + * hostname: 'localhost', + * port: 80, + * path: '/', + * agent: false, // Create a new agent just for this one request + * }, (res) => { + * // Do stuff with response + * }); + * ``` + * @since v0.3.4 + */ + class Agent extends EventEmitter { + /** + * By default set to 256. For agents with `keepAlive` enabled, this + * sets the maximum number of sockets that will be left open in the free + * state. + * @since v0.11.7 + */ + maxFreeSockets: number; + /** + * By default set to `Infinity`. Determines how many concurrent sockets the agent + * can have open per origin. Origin is the returned value of `agent.getName()`. + * @since v0.3.6 + */ + maxSockets: number; + /** + * By default set to `Infinity`. Determines how many concurrent sockets the agent + * can have open. Unlike `maxSockets`, this parameter applies across all origins. + * @since v14.5.0, v12.19.0 + */ + maxTotalSockets: number; + /** + * An object which contains arrays of sockets currently awaiting use by + * the agent when `keepAlive` is enabled. Do not modify. + * + * Sockets in the `freeSockets` list will be automatically destroyed and + * removed from the array on `'timeout'`. + * @since v0.11.4 + */ + readonly freeSockets: NodeJS.ReadOnlyDict; + /** + * An object which contains arrays of sockets currently in use by the + * agent. Do not modify. + * @since v0.3.6 + */ + readonly sockets: NodeJS.ReadOnlyDict; + /** + * An object which contains queues of requests that have not yet been assigned to + * sockets. Do not modify. + * @since v0.5.9 + */ + readonly requests: NodeJS.ReadOnlyDict; + constructor(opts?: AgentOptions); + /** + * Destroy any sockets that are currently in use by the agent. + * + * It is usually not necessary to do this. However, if using an + * agent with `keepAlive` enabled, then it is best to explicitly shut down + * the agent when it is no longer needed. Otherwise, + * sockets might stay open for quite a long time before the server + * terminates them. + * @since v0.11.4 + */ + destroy(): void; + } + const METHODS: string[]; + const STATUS_CODES: { + [errorCode: number]: string | undefined; + [errorCode: string]: string | undefined; + }; + /** + * Returns a new instance of {@link Server}. + * + * The `requestListener` is a function which is automatically + * added to the `'request'` event. + * + * ```js + * import http from 'node:http'; + * + * // Create a local server to receive data from + * const server = http.createServer((req, res) => { + * res.writeHead(200, { 'Content-Type': 'application/json' }); + * res.end(JSON.stringify({ + * data: 'Hello World!', + * })); + * }); + * + * server.listen(8000); + * ``` + * + * ```js + * import http from 'node:http'; + * + * // Create a local server to receive data from + * const server = http.createServer(); + * + * // Listen to the request event + * server.on('request', (request, res) => { + * res.writeHead(200, { 'Content-Type': 'application/json' }); + * res.end(JSON.stringify({ + * data: 'Hello World!', + * })); + * }); + * + * server.listen(8000); + * ``` + * @since v0.1.13 + */ + function createServer< + Request extends typeof IncomingMessage = typeof IncomingMessage, + Response extends typeof ServerResponse = typeof ServerResponse, + >(requestListener?: RequestListener): Server; + function createServer< + Request extends typeof IncomingMessage = typeof IncomingMessage, + Response extends typeof ServerResponse = typeof ServerResponse, + >( + options: ServerOptions, + requestListener?: RequestListener, + ): Server; + // although RequestOptions are passed as ClientRequestArgs to ClientRequest directly, + // create interface RequestOptions would make the naming more clear to developers + interface RequestOptions extends ClientRequestArgs {} + /** + * `options` in `socket.connect()` are also supported. + * + * Node.js maintains several connections per server to make HTTP requests. + * This function allows one to transparently issue requests. + * + * `url` can be a string or a `URL` object. If `url` is a + * string, it is automatically parsed with `new URL()`. If it is a `URL` object, it will be automatically converted to an ordinary `options` object. + * + * If both `url` and `options` are specified, the objects are merged, with the`options` properties taking precedence. + * + * The optional `callback` parameter will be added as a one-time listener for + * the `'response'` event. + * + * `http.request()` returns an instance of the {@link ClientRequest} class. The `ClientRequest` instance is a writable stream. If one needs to + * upload a file with a POST request, then write to the `ClientRequest` object. + * + * ```js + * import http from 'node:http'; + * import { Buffer } from 'node:buffer'; + * + * const postData = JSON.stringify({ + * 'msg': 'Hello World!', + * }); + * + * const options = { + * hostname: 'www.google.com', + * port: 80, + * path: '/upload', + * method: 'POST', + * headers: { + * 'Content-Type': 'application/json', + * 'Content-Length': Buffer.byteLength(postData), + * }, + * }; + * + * const req = http.request(options, (res) => { + * console.log(`STATUS: ${res.statusCode}`); + * console.log(`HEADERS: ${JSON.stringify(res.headers)}`); + * res.setEncoding('utf8'); + * res.on('data', (chunk) => { + * console.log(`BODY: ${chunk}`); + * }); + * res.on('end', () => { + * console.log('No more data in response.'); + * }); + * }); + * + * req.on('error', (e) => { + * console.error(`problem with request: ${e.message}`); + * }); + * + * // Write data to request body + * req.write(postData); + * req.end(); + * ``` + * + * In the example `req.end()` was called. With `http.request()` one + * must always call `req.end()` to signify the end of the request - + * even if there is no data being written to the request body. + * + * If any error is encountered during the request (be that with DNS resolution, + * TCP level errors, or actual HTTP parse errors) an `'error'` event is emitted + * on the returned request object. As with all `'error'` events, if no listeners + * are registered the error will be thrown. + * + * There are a few special headers that should be noted. + * + * * Sending a 'Connection: keep-alive' will notify Node.js that the connection to + * the server should be persisted until the next request. + * * Sending a 'Content-Length' header will disable the default chunked encoding. + * * Sending an 'Expect' header will immediately send the request headers. + * Usually, when sending 'Expect: 100-continue', both a timeout and a listener + * for the `'continue'` event should be set. See RFC 2616 Section 8.2.3 for more + * information. + * * Sending an Authorization header will override using the `auth` option + * to compute basic authentication. + * + * Example using a `URL` as `options`: + * + * ```js + * const options = new URL('http://abc:xyz@example.com'); + * + * const req = http.request(options, (res) => { + * // ... + * }); + * ``` + * + * In a successful request, the following events will be emitted in the following + * order: + * + * * `'socket'` + * * `'response'` + * * `'data'` any number of times, on the `res` object + * (`'data'` will not be emitted at all if the response body is empty, for + * instance, in most redirects) + * * `'end'` on the `res` object + * * `'close'` + * + * In the case of a connection error, the following events will be emitted: + * + * * `'socket'` + * * `'error'` + * * `'close'` + * + * In the case of a premature connection close before the response is received, + * the following events will be emitted in the following order: + * + * * `'socket'` + * * `'error'` with an error with message `'Error: socket hang up'` and code`'ECONNRESET'` + * * `'close'` + * + * In the case of a premature connection close after the response is received, + * the following events will be emitted in the following order: + * + * * `'socket'` + * * `'response'` + * * `'data'` any number of times, on the `res` object + * * (connection closed here) + * * `'aborted'` on the `res` object + * * `'error'` on the `res` object with an error with message`'Error: aborted'` and code `'ECONNRESET'` + * * `'close'` + * * `'close'` on the `res` object + * + * If `req.destroy()` is called before a socket is assigned, the following + * events will be emitted in the following order: + * + * * (`req.destroy()` called here) + * * `'error'` with an error with message `'Error: socket hang up'` and code`'ECONNRESET'`, or the error with which `req.destroy()` was called + * * `'close'` + * + * If `req.destroy()` is called before the connection succeeds, the following + * events will be emitted in the following order: + * + * * `'socket'` + * * (`req.destroy()` called here) + * * `'error'` with an error with message `'Error: socket hang up'` and code`'ECONNRESET'`, or the error with which `req.destroy()` was called + * * `'close'` + * + * If `req.destroy()` is called after the response is received, the following + * events will be emitted in the following order: + * + * * `'socket'` + * * `'response'` + * * `'data'` any number of times, on the `res` object + * * (`req.destroy()` called here) + * * `'aborted'` on the `res` object + * * `'error'` on the `res` object with an error with message `'Error: aborted'`and code `'ECONNRESET'`, or the error with which `req.destroy()` was called + * * `'close'` + * * `'close'` on the `res` object + * + * If `req.abort()` is called before a socket is assigned, the following + * events will be emitted in the following order: + * + * * (`req.abort()` called here) + * * `'abort'` + * * `'close'` + * + * If `req.abort()` is called before the connection succeeds, the following + * events will be emitted in the following order: + * + * * `'socket'` + * * (`req.abort()` called here) + * * `'abort'` + * * `'error'` with an error with message `'Error: socket hang up'` and code`'ECONNRESET'` + * * `'close'` + * + * If `req.abort()` is called after the response is received, the following + * events will be emitted in the following order: + * + * * `'socket'` + * * `'response'` + * * `'data'` any number of times, on the `res` object + * * (`req.abort()` called here) + * * `'abort'` + * * `'aborted'` on the `res` object + * * `'error'` on the `res` object with an error with message`'Error: aborted'` and code `'ECONNRESET'`. + * * `'close'` + * * `'close'` on the `res` object + * + * Setting the `timeout` option or using the `setTimeout()` function will + * not abort the request or do anything besides add a `'timeout'` event. + * + * Passing an `AbortSignal` and then calling `abort()` on the corresponding`AbortController` will behave the same way as calling `.destroy()` on the + * request. Specifically, the `'error'` event will be emitted with an error with + * the message `'AbortError: The operation was aborted'`, the code `'ABORT_ERR'`and the `cause`, if one was provided. + * @since v0.3.6 + */ + function request(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest; + function request( + url: string | URL, + options: RequestOptions, + callback?: (res: IncomingMessage) => void, + ): ClientRequest; + /** + * Since most requests are GET requests without bodies, Node.js provides this + * convenience method. The only difference between this method and {@link request} is that it sets the method to GET by default and calls `req.end()`automatically. The callback must take care to + * consume the response + * data for reasons stated in {@link ClientRequest} section. + * + * The `callback` is invoked with a single argument that is an instance of {@link IncomingMessage}. + * + * JSON fetching example: + * + * ```js + * http.get('http://localhost:8000/', (res) => { + * const { statusCode } = res; + * const contentType = res.headers['content-type']; + * + * let error; + * // Any 2xx status code signals a successful response but + * // here we're only checking for 200. + * if (statusCode !== 200) { + * error = new Error('Request Failed.\n' + + * `Status Code: ${statusCode}`); + * } else if (!/^application\/json/.test(contentType)) { + * error = new Error('Invalid content-type.\n' + + * `Expected application/json but received ${contentType}`); + * } + * if (error) { + * console.error(error.message); + * // Consume response data to free up memory + * res.resume(); + * return; + * } + * + * res.setEncoding('utf8'); + * let rawData = ''; + * res.on('data', (chunk) => { rawData += chunk; }); + * res.on('end', () => { + * try { + * const parsedData = JSON.parse(rawData); + * console.log(parsedData); + * } catch (e) { + * console.error(e.message); + * } + * }); + * }).on('error', (e) => { + * console.error(`Got error: ${e.message}`); + * }); + * + * // Create a local server to receive data from + * const server = http.createServer((req, res) => { + * res.writeHead(200, { 'Content-Type': 'application/json' }); + * res.end(JSON.stringify({ + * data: 'Hello World!', + * })); + * }); + * + * server.listen(8000); + * ``` + * @since v0.3.6 + * @param options Accepts the same `options` as {@link request}, with the method set to GET by default. + */ + function get(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest; + function get(url: string | URL, options: RequestOptions, callback?: (res: IncomingMessage) => void): ClientRequest; + /** + * Performs the low-level validations on the provided `name` that are done when`res.setHeader(name, value)` is called. + * + * Passing illegal value as `name` will result in a `TypeError` being thrown, + * identified by `code: 'ERR_INVALID_HTTP_TOKEN'`. + * + * It is not necessary to use this method before passing headers to an HTTP request + * or response. The HTTP module will automatically validate such headers. + * Examples: + * + * Example: + * + * ```js + * import { validateHeaderName } from 'node:http'; + * + * try { + * validateHeaderName(''); + * } catch (err) { + * console.error(err instanceof TypeError); // --> true + * console.error(err.code); // --> 'ERR_INVALID_HTTP_TOKEN' + * console.error(err.message); // --> 'Header name must be a valid HTTP token [""]' + * } + * ``` + * @since v14.3.0 + * @param [label='Header name'] Label for error message. + */ + function validateHeaderName(name: string): void; + /** + * Performs the low-level validations on the provided `value` that are done when`res.setHeader(name, value)` is called. + * + * Passing illegal value as `value` will result in a `TypeError` being thrown. + * + * * Undefined value error is identified by `code: 'ERR_HTTP_INVALID_HEADER_VALUE'`. + * * Invalid value character error is identified by `code: 'ERR_INVALID_CHAR'`. + * + * It is not necessary to use this method before passing headers to an HTTP request + * or response. The HTTP module will automatically validate such headers. + * + * Examples: + * + * ```js + * import { validateHeaderValue } from 'node:http'; + * + * try { + * validateHeaderValue('x-my-header', undefined); + * } catch (err) { + * console.error(err instanceof TypeError); // --> true + * console.error(err.code === 'ERR_HTTP_INVALID_HEADER_VALUE'); // --> true + * console.error(err.message); // --> 'Invalid value "undefined" for header "x-my-header"' + * } + * + * try { + * validateHeaderValue('x-my-header', 'oʊmɪɡə'); + * } catch (err) { + * console.error(err instanceof TypeError); // --> true + * console.error(err.code === 'ERR_INVALID_CHAR'); // --> true + * console.error(err.message); // --> 'Invalid character in header content ["x-my-header"]' + * } + * ``` + * @since v14.3.0 + * @param name Header name + * @param value Header value + */ + function validateHeaderValue(name: string, value: string): void; + /** + * Set the maximum number of idle HTTP parsers. + * @since v18.8.0, v16.18.0 + * @param [max=1000] + */ + function setMaxIdleHTTPParsers(max: number): void; + let globalAgent: Agent; + /** + * Read-only property specifying the maximum allowed size of HTTP headers in bytes. + * Defaults to 16KB. Configurable using the `--max-http-header-size` CLI option. + */ + const maxHeaderSize: number; +} +declare module "node:http" { + export * from "http"; +} diff --git a/node_modules/@types/node/ts4.8/http2.d.ts b/node_modules/@types/node/ts4.8/http2.d.ts new file mode 100644 index 00000000..7f0dd575 --- /dev/null +++ b/node_modules/@types/node/ts4.8/http2.d.ts @@ -0,0 +1,2381 @@ +/** + * The `node:http2` module provides an implementation of the [HTTP/2](https://tools.ietf.org/html/rfc7540) protocol. + * It can be accessed using: + * + * ```js + * const http2 = require('node:http2'); + * ``` + * @since v8.4.0 + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/http2.js) + */ +declare module "http2" { + import EventEmitter = require("node:events"); + import * as fs from "node:fs"; + import * as net from "node:net"; + import * as stream from "node:stream"; + import * as tls from "node:tls"; + import * as url from "node:url"; + import { + IncomingHttpHeaders as Http1IncomingHttpHeaders, + IncomingMessage, + OutgoingHttpHeaders, + ServerResponse, + } from "node:http"; + export { OutgoingHttpHeaders } from "node:http"; + export interface IncomingHttpStatusHeader { + ":status"?: number | undefined; + } + export interface IncomingHttpHeaders extends Http1IncomingHttpHeaders { + ":path"?: string | undefined; + ":method"?: string | undefined; + ":authority"?: string | undefined; + ":scheme"?: string | undefined; + } + // Http2Stream + export interface StreamPriorityOptions { + exclusive?: boolean | undefined; + parent?: number | undefined; + weight?: number | undefined; + silent?: boolean | undefined; + } + export interface StreamState { + localWindowSize?: number | undefined; + state?: number | undefined; + localClose?: number | undefined; + remoteClose?: number | undefined; + sumDependencyWeight?: number | undefined; + weight?: number | undefined; + } + export interface ServerStreamResponseOptions { + endStream?: boolean | undefined; + waitForTrailers?: boolean | undefined; + } + export interface StatOptions { + offset: number; + length: number; + } + export interface ServerStreamFileResponseOptions { + statCheck?(stats: fs.Stats, headers: OutgoingHttpHeaders, statOptions: StatOptions): void | boolean; + waitForTrailers?: boolean | undefined; + offset?: number | undefined; + length?: number | undefined; + } + export interface ServerStreamFileResponseOptionsWithError extends ServerStreamFileResponseOptions { + onError?(err: NodeJS.ErrnoException): void; + } + export interface Http2Stream extends stream.Duplex { + /** + * Set to `true` if the `Http2Stream` instance was aborted abnormally. When set, + * the `'aborted'` event will have been emitted. + * @since v8.4.0 + */ + readonly aborted: boolean; + /** + * This property shows the number of characters currently buffered to be written. + * See `net.Socket.bufferSize` for details. + * @since v11.2.0, v10.16.0 + */ + readonly bufferSize: number; + /** + * Set to `true` if the `Http2Stream` instance has been closed. + * @since v9.4.0 + */ + readonly closed: boolean; + /** + * Set to `true` if the `Http2Stream` instance has been destroyed and is no longer + * usable. + * @since v8.4.0 + */ + readonly destroyed: boolean; + /** + * Set to `true` if the `END_STREAM` flag was set in the request or response + * HEADERS frame received, indicating that no additional data should be received + * and the readable side of the `Http2Stream` will be closed. + * @since v10.11.0 + */ + readonly endAfterHeaders: boolean; + /** + * The numeric stream identifier of this `Http2Stream` instance. Set to `undefined`if the stream identifier has not yet been assigned. + * @since v8.4.0 + */ + readonly id?: number | undefined; + /** + * Set to `true` if the `Http2Stream` instance has not yet been assigned a + * numeric stream identifier. + * @since v9.4.0 + */ + readonly pending: boolean; + /** + * Set to the `RST_STREAM` `error code` reported when the `Http2Stream` is + * destroyed after either receiving an `RST_STREAM` frame from the connected peer, + * calling `http2stream.close()`, or `http2stream.destroy()`. Will be`undefined` if the `Http2Stream` has not been closed. + * @since v8.4.0 + */ + readonly rstCode: number; + /** + * An object containing the outbound headers sent for this `Http2Stream`. + * @since v9.5.0 + */ + readonly sentHeaders: OutgoingHttpHeaders; + /** + * An array of objects containing the outbound informational (additional) headers + * sent for this `Http2Stream`. + * @since v9.5.0 + */ + readonly sentInfoHeaders?: OutgoingHttpHeaders[] | undefined; + /** + * An object containing the outbound trailers sent for this `HttpStream`. + * @since v9.5.0 + */ + readonly sentTrailers?: OutgoingHttpHeaders | undefined; + /** + * A reference to the `Http2Session` instance that owns this `Http2Stream`. The + * value will be `undefined` after the `Http2Stream` instance is destroyed. + * @since v8.4.0 + */ + readonly session: Http2Session | undefined; + /** + * Provides miscellaneous information about the current state of the`Http2Stream`. + * + * A current state of this `Http2Stream`. + * @since v8.4.0 + */ + readonly state: StreamState; + /** + * Closes the `Http2Stream` instance by sending an `RST_STREAM` frame to the + * connected HTTP/2 peer. + * @since v8.4.0 + * @param [code=http2.constants.NGHTTP2_NO_ERROR] Unsigned 32-bit integer identifying the error code. + * @param callback An optional function registered to listen for the `'close'` event. + */ + close(code?: number, callback?: () => void): void; + /** + * Updates the priority for this `Http2Stream` instance. + * @since v8.4.0 + */ + priority(options: StreamPriorityOptions): void; + /** + * ```js + * const http2 = require('node:http2'); + * const client = http2.connect('http://example.org:8000'); + * const { NGHTTP2_CANCEL } = http2.constants; + * const req = client.request({ ':path': '/' }); + * + * // Cancel the stream if there's no activity after 5 seconds + * req.setTimeout(5000, () => req.close(NGHTTP2_CANCEL)); + * ``` + * @since v8.4.0 + */ + setTimeout(msecs: number, callback?: () => void): void; + /** + * Sends a trailing `HEADERS` frame to the connected HTTP/2 peer. This method + * will cause the `Http2Stream` to be immediately closed and must only be + * called after the `'wantTrailers'` event has been emitted. When sending a + * request or sending a response, the `options.waitForTrailers` option must be set + * in order to keep the `Http2Stream` open after the final `DATA` frame so that + * trailers can be sent. + * + * ```js + * const http2 = require('node:http2'); + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * stream.respond(undefined, { waitForTrailers: true }); + * stream.on('wantTrailers', () => { + * stream.sendTrailers({ xyz: 'abc' }); + * }); + * stream.end('Hello World'); + * }); + * ``` + * + * The HTTP/1 specification forbids trailers from containing HTTP/2 pseudo-header + * fields (e.g. `':method'`, `':path'`, etc). + * @since v10.0.0 + */ + sendTrailers(headers: OutgoingHttpHeaders): void; + addListener(event: "aborted", listener: () => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "data", listener: (chunk: Buffer | string) => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; + addListener(event: "pipe", listener: (src: stream.Readable) => void): this; + addListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + addListener(event: "streamClosed", listener: (code: number) => void): this; + addListener(event: "timeout", listener: () => void): this; + addListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; + addListener(event: "wantTrailers", listener: () => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "aborted"): boolean; + emit(event: "close"): boolean; + emit(event: "data", chunk: Buffer | string): boolean; + emit(event: "drain"): boolean; + emit(event: "end"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "finish"): boolean; + emit(event: "frameError", frameType: number, errorCode: number): boolean; + emit(event: "pipe", src: stream.Readable): boolean; + emit(event: "unpipe", src: stream.Readable): boolean; + emit(event: "streamClosed", code: number): boolean; + emit(event: "timeout"): boolean; + emit(event: "trailers", trailers: IncomingHttpHeaders, flags: number): boolean; + emit(event: "wantTrailers"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "aborted", listener: () => void): this; + on(event: "close", listener: () => void): this; + on(event: "data", listener: (chunk: Buffer | string) => void): this; + on(event: "drain", listener: () => void): this; + on(event: "end", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; + on(event: "pipe", listener: (src: stream.Readable) => void): this; + on(event: "unpipe", listener: (src: stream.Readable) => void): this; + on(event: "streamClosed", listener: (code: number) => void): this; + on(event: "timeout", listener: () => void): this; + on(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; + on(event: "wantTrailers", listener: () => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "aborted", listener: () => void): this; + once(event: "close", listener: () => void): this; + once(event: "data", listener: (chunk: Buffer | string) => void): this; + once(event: "drain", listener: () => void): this; + once(event: "end", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; + once(event: "pipe", listener: (src: stream.Readable) => void): this; + once(event: "unpipe", listener: (src: stream.Readable) => void): this; + once(event: "streamClosed", listener: (code: number) => void): this; + once(event: "timeout", listener: () => void): this; + once(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; + once(event: "wantTrailers", listener: () => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "aborted", listener: () => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; + prependListener(event: "pipe", listener: (src: stream.Readable) => void): this; + prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + prependListener(event: "streamClosed", listener: (code: number) => void): this; + prependListener(event: "timeout", listener: () => void): this; + prependListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; + prependListener(event: "wantTrailers", listener: () => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "aborted", listener: () => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this; + prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this; + prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + prependOnceListener(event: "streamClosed", listener: (code: number) => void): this; + prependOnceListener(event: "timeout", listener: () => void): this; + prependOnceListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this; + prependOnceListener(event: "wantTrailers", listener: () => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + export interface ClientHttp2Stream extends Http2Stream { + addListener(event: "continue", listener: () => {}): this; + addListener( + event: "headers", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + addListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; + addListener( + event: "response", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "continue"): boolean; + emit(event: "headers", headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean; + emit(event: "push", headers: IncomingHttpHeaders, flags: number): boolean; + emit(event: "response", headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "continue", listener: () => {}): this; + on( + event: "headers", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + on(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; + on( + event: "response", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "continue", listener: () => {}): this; + once( + event: "headers", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + once(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; + once( + event: "response", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "continue", listener: () => {}): this; + prependListener( + event: "headers", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + prependListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; + prependListener( + event: "response", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "continue", listener: () => {}): this; + prependOnceListener( + event: "headers", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + prependOnceListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this; + prependOnceListener( + event: "response", + listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void, + ): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + export interface ServerHttp2Stream extends Http2Stream { + /** + * True if headers were sent, false otherwise (read-only). + * @since v8.4.0 + */ + readonly headersSent: boolean; + /** + * Read-only property mapped to the `SETTINGS_ENABLE_PUSH` flag of the remote + * client's most recent `SETTINGS` frame. Will be `true` if the remote peer + * accepts push streams, `false` otherwise. Settings are the same for every`Http2Stream` in the same `Http2Session`. + * @since v8.4.0 + */ + readonly pushAllowed: boolean; + /** + * Sends an additional informational `HEADERS` frame to the connected HTTP/2 peer. + * @since v8.4.0 + */ + additionalHeaders(headers: OutgoingHttpHeaders): void; + /** + * Initiates a push stream. The callback is invoked with the new `Http2Stream`instance created for the push stream passed as the second argument, or an`Error` passed as the first argument. + * + * ```js + * const http2 = require('node:http2'); + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * stream.respond({ ':status': 200 }); + * stream.pushStream({ ':path': '/' }, (err, pushStream, headers) => { + * if (err) throw err; + * pushStream.respond({ ':status': 200 }); + * pushStream.end('some pushed data'); + * }); + * stream.end('some data'); + * }); + * ``` + * + * Setting the weight of a push stream is not allowed in the `HEADERS` frame. Pass + * a `weight` value to `http2stream.priority` with the `silent` option set to`true` to enable server-side bandwidth balancing between concurrent streams. + * + * Calling `http2stream.pushStream()` from within a pushed stream is not permitted + * and will throw an error. + * @since v8.4.0 + * @param callback Callback that is called once the push stream has been initiated. + */ + pushStream( + headers: OutgoingHttpHeaders, + callback?: (err: Error | null, pushStream: ServerHttp2Stream, headers: OutgoingHttpHeaders) => void, + ): void; + pushStream( + headers: OutgoingHttpHeaders, + options?: StreamPriorityOptions, + callback?: (err: Error | null, pushStream: ServerHttp2Stream, headers: OutgoingHttpHeaders) => void, + ): void; + /** + * ```js + * const http2 = require('node:http2'); + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * stream.respond({ ':status': 200 }); + * stream.end('some data'); + * }); + * ``` + * + * Initiates a response. When the `options.waitForTrailers` option is set, the`'wantTrailers'` event will be emitted immediately after queuing the last chunk + * of payload data to be sent. The `http2stream.sendTrailers()` method can then be + * used to sent trailing header fields to the peer. + * + * When `options.waitForTrailers` is set, the `Http2Stream` will not automatically + * close when the final `DATA` frame is transmitted. User code must call either`http2stream.sendTrailers()` or `http2stream.close()` to close the`Http2Stream`. + * + * ```js + * const http2 = require('node:http2'); + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * stream.respond({ ':status': 200 }, { waitForTrailers: true }); + * stream.on('wantTrailers', () => { + * stream.sendTrailers({ ABC: 'some value to send' }); + * }); + * stream.end('some data'); + * }); + * ``` + * @since v8.4.0 + */ + respond(headers?: OutgoingHttpHeaders, options?: ServerStreamResponseOptions): void; + /** + * Initiates a response whose data is read from the given file descriptor. No + * validation is performed on the given file descriptor. If an error occurs while + * attempting to read data using the file descriptor, the `Http2Stream` will be + * closed using an `RST_STREAM` frame using the standard `INTERNAL_ERROR` code. + * + * When used, the `Http2Stream` object's `Duplex` interface will be closed + * automatically. + * + * ```js + * const http2 = require('node:http2'); + * const fs = require('node:fs'); + * + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * const fd = fs.openSync('/some/file', 'r'); + * + * const stat = fs.fstatSync(fd); + * const headers = { + * 'content-length': stat.size, + * 'last-modified': stat.mtime.toUTCString(), + * 'content-type': 'text/plain; charset=utf-8', + * }; + * stream.respondWithFD(fd, headers); + * stream.on('close', () => fs.closeSync(fd)); + * }); + * ``` + * + * The optional `options.statCheck` function may be specified to give user code + * an opportunity to set additional content headers based on the `fs.Stat` details + * of the given fd. If the `statCheck` function is provided, the`http2stream.respondWithFD()` method will perform an `fs.fstat()` call to + * collect details on the provided file descriptor. + * + * The `offset` and `length` options may be used to limit the response to a + * specific range subset. This can be used, for instance, to support HTTP Range + * requests. + * + * The file descriptor or `FileHandle` is not closed when the stream is closed, + * so it will need to be closed manually once it is no longer needed. + * Using the same file descriptor concurrently for multiple streams + * is not supported and may result in data loss. Re-using a file descriptor + * after a stream has finished is supported. + * + * When the `options.waitForTrailers` option is set, the `'wantTrailers'` event + * will be emitted immediately after queuing the last chunk of payload data to be + * sent. The `http2stream.sendTrailers()` method can then be used to sent trailing + * header fields to the peer. + * + * When `options.waitForTrailers` is set, the `Http2Stream` will not automatically + * close when the final `DATA` frame is transmitted. User code _must_ call either`http2stream.sendTrailers()` or `http2stream.close()` to close the`Http2Stream`. + * + * ```js + * const http2 = require('node:http2'); + * const fs = require('node:fs'); + * + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * const fd = fs.openSync('/some/file', 'r'); + * + * const stat = fs.fstatSync(fd); + * const headers = { + * 'content-length': stat.size, + * 'last-modified': stat.mtime.toUTCString(), + * 'content-type': 'text/plain; charset=utf-8', + * }; + * stream.respondWithFD(fd, headers, { waitForTrailers: true }); + * stream.on('wantTrailers', () => { + * stream.sendTrailers({ ABC: 'some value to send' }); + * }); + * + * stream.on('close', () => fs.closeSync(fd)); + * }); + * ``` + * @since v8.4.0 + * @param fd A readable file descriptor. + */ + respondWithFD( + fd: number | fs.promises.FileHandle, + headers?: OutgoingHttpHeaders, + options?: ServerStreamFileResponseOptions, + ): void; + /** + * Sends a regular file as the response. The `path` must specify a regular file + * or an `'error'` event will be emitted on the `Http2Stream` object. + * + * When used, the `Http2Stream` object's `Duplex` interface will be closed + * automatically. + * + * The optional `options.statCheck` function may be specified to give user code + * an opportunity to set additional content headers based on the `fs.Stat` details + * of the given file: + * + * If an error occurs while attempting to read the file data, the `Http2Stream`will be closed using an `RST_STREAM` frame using the standard `INTERNAL_ERROR`code. If the `onError` callback is + * defined, then it will be called. Otherwise + * the stream will be destroyed. + * + * Example using a file path: + * + * ```js + * const http2 = require('node:http2'); + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * function statCheck(stat, headers) { + * headers['last-modified'] = stat.mtime.toUTCString(); + * } + * + * function onError(err) { + * // stream.respond() can throw if the stream has been destroyed by + * // the other side. + * try { + * if (err.code === 'ENOENT') { + * stream.respond({ ':status': 404 }); + * } else { + * stream.respond({ ':status': 500 }); + * } + * } catch (err) { + * // Perform actual error handling. + * console.error(err); + * } + * stream.end(); + * } + * + * stream.respondWithFile('/some/file', + * { 'content-type': 'text/plain; charset=utf-8' }, + * { statCheck, onError }); + * }); + * ``` + * + * The `options.statCheck` function may also be used to cancel the send operation + * by returning `false`. For instance, a conditional request may check the stat + * results to determine if the file has been modified to return an appropriate`304` response: + * + * ```js + * const http2 = require('node:http2'); + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * function statCheck(stat, headers) { + * // Check the stat here... + * stream.respond({ ':status': 304 }); + * return false; // Cancel the send operation + * } + * stream.respondWithFile('/some/file', + * { 'content-type': 'text/plain; charset=utf-8' }, + * { statCheck }); + * }); + * ``` + * + * The `content-length` header field will be automatically set. + * + * The `offset` and `length` options may be used to limit the response to a + * specific range subset. This can be used, for instance, to support HTTP Range + * requests. + * + * The `options.onError` function may also be used to handle all the errors + * that could happen before the delivery of the file is initiated. The + * default behavior is to destroy the stream. + * + * When the `options.waitForTrailers` option is set, the `'wantTrailers'` event + * will be emitted immediately after queuing the last chunk of payload data to be + * sent. The `http2stream.sendTrailers()` method can then be used to sent trailing + * header fields to the peer. + * + * When `options.waitForTrailers` is set, the `Http2Stream` will not automatically + * close when the final `DATA` frame is transmitted. User code must call either`http2stream.sendTrailers()` or `http2stream.close()` to close the`Http2Stream`. + * + * ```js + * const http2 = require('node:http2'); + * const server = http2.createServer(); + * server.on('stream', (stream) => { + * stream.respondWithFile('/some/file', + * { 'content-type': 'text/plain; charset=utf-8' }, + * { waitForTrailers: true }); + * stream.on('wantTrailers', () => { + * stream.sendTrailers({ ABC: 'some value to send' }); + * }); + * }); + * ``` + * @since v8.4.0 + */ + respondWithFile( + path: string, + headers?: OutgoingHttpHeaders, + options?: ServerStreamFileResponseOptionsWithError, + ): void; + } + // Http2Session + export interface Settings { + headerTableSize?: number | undefined; + enablePush?: boolean | undefined; + initialWindowSize?: number | undefined; + maxFrameSize?: number | undefined; + maxConcurrentStreams?: number | undefined; + maxHeaderListSize?: number | undefined; + enableConnectProtocol?: boolean | undefined; + } + export interface ClientSessionRequestOptions { + endStream?: boolean | undefined; + exclusive?: boolean | undefined; + parent?: number | undefined; + weight?: number | undefined; + waitForTrailers?: boolean | undefined; + signal?: AbortSignal | undefined; + } + export interface SessionState { + effectiveLocalWindowSize?: number | undefined; + effectiveRecvDataLength?: number | undefined; + nextStreamID?: number | undefined; + localWindowSize?: number | undefined; + lastProcStreamID?: number | undefined; + remoteWindowSize?: number | undefined; + outboundQueueSize?: number | undefined; + deflateDynamicTableSize?: number | undefined; + inflateDynamicTableSize?: number | undefined; + } + export interface Http2Session extends EventEmitter { + /** + * Value will be `undefined` if the `Http2Session` is not yet connected to a + * socket, `h2c` if the `Http2Session` is not connected to a `TLSSocket`, or + * will return the value of the connected `TLSSocket`'s own `alpnProtocol`property. + * @since v9.4.0 + */ + readonly alpnProtocol?: string | undefined; + /** + * Will be `true` if this `Http2Session` instance has been closed, otherwise`false`. + * @since v9.4.0 + */ + readonly closed: boolean; + /** + * Will be `true` if this `Http2Session` instance is still connecting, will be set + * to `false` before emitting `connect` event and/or calling the `http2.connect`callback. + * @since v10.0.0 + */ + readonly connecting: boolean; + /** + * Will be `true` if this `Http2Session` instance has been destroyed and must no + * longer be used, otherwise `false`. + * @since v8.4.0 + */ + readonly destroyed: boolean; + /** + * Value is `undefined` if the `Http2Session` session socket has not yet been + * connected, `true` if the `Http2Session` is connected with a `TLSSocket`, + * and `false` if the `Http2Session` is connected to any other kind of socket + * or stream. + * @since v9.4.0 + */ + readonly encrypted?: boolean | undefined; + /** + * A prototype-less object describing the current local settings of this`Http2Session`. The local settings are local to _this_`Http2Session` instance. + * @since v8.4.0 + */ + readonly localSettings: Settings; + /** + * If the `Http2Session` is connected to a `TLSSocket`, the `originSet` property + * will return an `Array` of origins for which the `Http2Session` may be + * considered authoritative. + * + * The `originSet` property is only available when using a secure TLS connection. + * @since v9.4.0 + */ + readonly originSet?: string[] | undefined; + /** + * Indicates whether the `Http2Session` is currently waiting for acknowledgment of + * a sent `SETTINGS` frame. Will be `true` after calling the`http2session.settings()` method. Will be `false` once all sent `SETTINGS`frames have been acknowledged. + * @since v8.4.0 + */ + readonly pendingSettingsAck: boolean; + /** + * A prototype-less object describing the current remote settings of this`Http2Session`. The remote settings are set by the _connected_ HTTP/2 peer. + * @since v8.4.0 + */ + readonly remoteSettings: Settings; + /** + * Returns a `Proxy` object that acts as a `net.Socket` (or `tls.TLSSocket`) but + * limits available methods to ones safe to use with HTTP/2. + * + * `destroy`, `emit`, `end`, `pause`, `read`, `resume`, and `write` will throw + * an error with code `ERR_HTTP2_NO_SOCKET_MANIPULATION`. See `Http2Session and Sockets` for more information. + * + * `setTimeout` method will be called on this `Http2Session`. + * + * All other interactions will be routed directly to the socket. + * @since v8.4.0 + */ + readonly socket: net.Socket | tls.TLSSocket; + /** + * Provides miscellaneous information about the current state of the`Http2Session`. + * + * An object describing the current status of this `Http2Session`. + * @since v8.4.0 + */ + readonly state: SessionState; + /** + * The `http2session.type` will be equal to`http2.constants.NGHTTP2_SESSION_SERVER` if this `Http2Session` instance is a + * server, and `http2.constants.NGHTTP2_SESSION_CLIENT` if the instance is a + * client. + * @since v8.4.0 + */ + readonly type: number; + /** + * Gracefully closes the `Http2Session`, allowing any existing streams to + * complete on their own and preventing new `Http2Stream` instances from being + * created. Once closed, `http2session.destroy()`_might_ be called if there + * are no open `Http2Stream` instances. + * + * If specified, the `callback` function is registered as a handler for the`'close'` event. + * @since v9.4.0 + */ + close(callback?: () => void): void; + /** + * Immediately terminates the `Http2Session` and the associated `net.Socket` or`tls.TLSSocket`. + * + * Once destroyed, the `Http2Session` will emit the `'close'` event. If `error`is not undefined, an `'error'` event will be emitted immediately before the`'close'` event. + * + * If there are any remaining open `Http2Streams` associated with the`Http2Session`, those will also be destroyed. + * @since v8.4.0 + * @param error An `Error` object if the `Http2Session` is being destroyed due to an error. + * @param code The HTTP/2 error code to send in the final `GOAWAY` frame. If unspecified, and `error` is not undefined, the default is `INTERNAL_ERROR`, otherwise defaults to `NO_ERROR`. + */ + destroy(error?: Error, code?: number): void; + /** + * Transmits a `GOAWAY` frame to the connected peer _without_ shutting down the`Http2Session`. + * @since v9.4.0 + * @param code An HTTP/2 error code + * @param lastStreamID The numeric ID of the last processed `Http2Stream` + * @param opaqueData A `TypedArray` or `DataView` instance containing additional data to be carried within the `GOAWAY` frame. + */ + goaway(code?: number, lastStreamID?: number, opaqueData?: NodeJS.ArrayBufferView): void; + /** + * Sends a `PING` frame to the connected HTTP/2 peer. A `callback` function must + * be provided. The method will return `true` if the `PING` was sent, `false`otherwise. + * + * The maximum number of outstanding (unacknowledged) pings is determined by the`maxOutstandingPings` configuration option. The default maximum is 10. + * + * If provided, the `payload` must be a `Buffer`, `TypedArray`, or `DataView`containing 8 bytes of data that will be transmitted with the `PING` and + * returned with the ping acknowledgment. + * + * The callback will be invoked with three arguments: an error argument that will + * be `null` if the `PING` was successfully acknowledged, a `duration` argument + * that reports the number of milliseconds elapsed since the ping was sent and the + * acknowledgment was received, and a `Buffer` containing the 8-byte `PING`payload. + * + * ```js + * session.ping(Buffer.from('abcdefgh'), (err, duration, payload) => { + * if (!err) { + * console.log(`Ping acknowledged in ${duration} milliseconds`); + * console.log(`With payload '${payload.toString()}'`); + * } + * }); + * ``` + * + * If the `payload` argument is not specified, the default payload will be the + * 64-bit timestamp (little endian) marking the start of the `PING` duration. + * @since v8.9.3 + * @param payload Optional ping payload. + */ + ping(callback: (err: Error | null, duration: number, payload: Buffer) => void): boolean; + ping( + payload: NodeJS.ArrayBufferView, + callback: (err: Error | null, duration: number, payload: Buffer) => void, + ): boolean; + /** + * Calls `ref()` on this `Http2Session`instance's underlying `net.Socket`. + * @since v9.4.0 + */ + ref(): void; + /** + * Sets the local endpoint's window size. + * The `windowSize` is the total window size to set, not + * the delta. + * + * ```js + * const http2 = require('node:http2'); + * + * const server = http2.createServer(); + * const expectedWindowSize = 2 ** 20; + * server.on('connect', (session) => { + * + * // Set local window size to be 2 ** 20 + * session.setLocalWindowSize(expectedWindowSize); + * }); + * ``` + * @since v15.3.0, v14.18.0 + */ + setLocalWindowSize(windowSize: number): void; + /** + * Used to set a callback function that is called when there is no activity on + * the `Http2Session` after `msecs` milliseconds. The given `callback` is + * registered as a listener on the `'timeout'` event. + * @since v8.4.0 + */ + setTimeout(msecs: number, callback?: () => void): void; + /** + * Updates the current local settings for this `Http2Session` and sends a new`SETTINGS` frame to the connected HTTP/2 peer. + * + * Once called, the `http2session.pendingSettingsAck` property will be `true`while the session is waiting for the remote peer to acknowledge the new + * settings. + * + * The new settings will not become effective until the `SETTINGS` acknowledgment + * is received and the `'localSettings'` event is emitted. It is possible to send + * multiple `SETTINGS` frames while acknowledgment is still pending. + * @since v8.4.0 + * @param callback Callback that is called once the session is connected or right away if the session is already connected. + */ + settings( + settings: Settings, + callback?: (err: Error | null, settings: Settings, duration: number) => void, + ): void; + /** + * Calls `unref()` on this `Http2Session`instance's underlying `net.Socket`. + * @since v9.4.0 + */ + unref(): void; + addListener(event: "close", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener( + event: "frameError", + listener: (frameType: number, errorCode: number, streamID: number) => void, + ): this; + addListener( + event: "goaway", + listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void, + ): this; + addListener(event: "localSettings", listener: (settings: Settings) => void): this; + addListener(event: "ping", listener: () => void): this; + addListener(event: "remoteSettings", listener: (settings: Settings) => void): this; + addListener(event: "timeout", listener: () => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "close"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "frameError", frameType: number, errorCode: number, streamID: number): boolean; + emit(event: "goaway", errorCode: number, lastStreamID: number, opaqueData: Buffer): boolean; + emit(event: "localSettings", settings: Settings): boolean; + emit(event: "ping"): boolean; + emit(event: "remoteSettings", settings: Settings): boolean; + emit(event: "timeout"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "close", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; + on(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; + on(event: "localSettings", listener: (settings: Settings) => void): this; + on(event: "ping", listener: () => void): this; + on(event: "remoteSettings", listener: (settings: Settings) => void): this; + on(event: "timeout", listener: () => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this; + once(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this; + once(event: "localSettings", listener: (settings: Settings) => void): this; + once(event: "ping", listener: () => void): this; + once(event: "remoteSettings", listener: (settings: Settings) => void): this; + once(event: "timeout", listener: () => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener( + event: "frameError", + listener: (frameType: number, errorCode: number, streamID: number) => void, + ): this; + prependListener( + event: "goaway", + listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void, + ): this; + prependListener(event: "localSettings", listener: (settings: Settings) => void): this; + prependListener(event: "ping", listener: () => void): this; + prependListener(event: "remoteSettings", listener: (settings: Settings) => void): this; + prependListener(event: "timeout", listener: () => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener( + event: "frameError", + listener: (frameType: number, errorCode: number, streamID: number) => void, + ): this; + prependOnceListener( + event: "goaway", + listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void, + ): this; + prependOnceListener(event: "localSettings", listener: (settings: Settings) => void): this; + prependOnceListener(event: "ping", listener: () => void): this; + prependOnceListener(event: "remoteSettings", listener: (settings: Settings) => void): this; + prependOnceListener(event: "timeout", listener: () => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + export interface ClientHttp2Session extends Http2Session { + /** + * For HTTP/2 Client `Http2Session` instances only, the `http2session.request()`creates and returns an `Http2Stream` instance that can be used to send an + * HTTP/2 request to the connected server. + * + * When a `ClientHttp2Session` is first created, the socket may not yet be + * connected. if `clienthttp2session.request()` is called during this time, the + * actual request will be deferred until the socket is ready to go. + * If the `session` is closed before the actual request be executed, an`ERR_HTTP2_GOAWAY_SESSION` is thrown. + * + * This method is only available if `http2session.type` is equal to`http2.constants.NGHTTP2_SESSION_CLIENT`. + * + * ```js + * const http2 = require('node:http2'); + * const clientSession = http2.connect('https://localhost:1234'); + * const { + * HTTP2_HEADER_PATH, + * HTTP2_HEADER_STATUS, + * } = http2.constants; + * + * const req = clientSession.request({ [HTTP2_HEADER_PATH]: '/' }); + * req.on('response', (headers) => { + * console.log(headers[HTTP2_HEADER_STATUS]); + * req.on('data', (chunk) => { // .. }); + * req.on('end', () => { // .. }); + * }); + * ``` + * + * When the `options.waitForTrailers` option is set, the `'wantTrailers'` event + * is emitted immediately after queuing the last chunk of payload data to be sent. + * The `http2stream.sendTrailers()` method can then be called to send trailing + * headers to the peer. + * + * When `options.waitForTrailers` is set, the `Http2Stream` will not automatically + * close when the final `DATA` frame is transmitted. User code must call either`http2stream.sendTrailers()` or `http2stream.close()` to close the`Http2Stream`. + * + * When `options.signal` is set with an `AbortSignal` and then `abort` on the + * corresponding `AbortController` is called, the request will emit an `'error'`event with an `AbortError` error. + * + * The `:method` and `:path` pseudo-headers are not specified within `headers`, + * they respectively default to: + * + * * `:method` \= `'GET'` + * * `:path` \= `/` + * @since v8.4.0 + */ + request(headers?: OutgoingHttpHeaders, options?: ClientSessionRequestOptions): ClientHttp2Stream; + addListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; + addListener(event: "origin", listener: (origins: string[]) => void): this; + addListener( + event: "connect", + listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): this; + addListener( + event: "stream", + listener: ( + stream: ClientHttp2Stream, + headers: IncomingHttpHeaders & IncomingHttpStatusHeader, + flags: number, + ) => void, + ): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "altsvc", alt: string, origin: string, stream: number): boolean; + emit(event: "origin", origins: ReadonlyArray): boolean; + emit(event: "connect", session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket): boolean; + emit( + event: "stream", + stream: ClientHttp2Stream, + headers: IncomingHttpHeaders & IncomingHttpStatusHeader, + flags: number, + ): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; + on(event: "origin", listener: (origins: string[]) => void): this; + on(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; + on( + event: "stream", + listener: ( + stream: ClientHttp2Stream, + headers: IncomingHttpHeaders & IncomingHttpStatusHeader, + flags: number, + ) => void, + ): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; + once(event: "origin", listener: (origins: string[]) => void): this; + once( + event: "connect", + listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): this; + once( + event: "stream", + listener: ( + stream: ClientHttp2Stream, + headers: IncomingHttpHeaders & IncomingHttpStatusHeader, + flags: number, + ) => void, + ): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; + prependListener(event: "origin", listener: (origins: string[]) => void): this; + prependListener( + event: "connect", + listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): this; + prependListener( + event: "stream", + listener: ( + stream: ClientHttp2Stream, + headers: IncomingHttpHeaders & IncomingHttpStatusHeader, + flags: number, + ) => void, + ): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this; + prependOnceListener(event: "origin", listener: (origins: string[]) => void): this; + prependOnceListener( + event: "connect", + listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): this; + prependOnceListener( + event: "stream", + listener: ( + stream: ClientHttp2Stream, + headers: IncomingHttpHeaders & IncomingHttpStatusHeader, + flags: number, + ) => void, + ): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + export interface AlternativeServiceOptions { + origin: number | string | url.URL; + } + export interface ServerHttp2Session extends Http2Session { + readonly server: Http2Server | Http2SecureServer; + /** + * Submits an `ALTSVC` frame (as defined by [RFC 7838](https://tools.ietf.org/html/rfc7838)) to the connected client. + * + * ```js + * const http2 = require('node:http2'); + * + * const server = http2.createServer(); + * server.on('session', (session) => { + * // Set altsvc for origin https://example.org:80 + * session.altsvc('h2=":8000"', 'https://example.org:80'); + * }); + * + * server.on('stream', (stream) => { + * // Set altsvc for a specific stream + * stream.session.altsvc('h2=":8000"', stream.id); + * }); + * ``` + * + * Sending an `ALTSVC` frame with a specific stream ID indicates that the alternate + * service is associated with the origin of the given `Http2Stream`. + * + * The `alt` and origin string _must_ contain only ASCII bytes and are + * strictly interpreted as a sequence of ASCII bytes. The special value `'clear'`may be passed to clear any previously set alternative service for a given + * domain. + * + * When a string is passed for the `originOrStream` argument, it will be parsed as + * a URL and the origin will be derived. For instance, the origin for the + * HTTP URL `'https://example.org/foo/bar'` is the ASCII string`'https://example.org'`. An error will be thrown if either the given string + * cannot be parsed as a URL or if a valid origin cannot be derived. + * + * A `URL` object, or any object with an `origin` property, may be passed as`originOrStream`, in which case the value of the `origin` property will be + * used. The value of the `origin` property _must_ be a properly serialized + * ASCII origin. + * @since v9.4.0 + * @param alt A description of the alternative service configuration as defined by `RFC 7838`. + * @param originOrStream Either a URL string specifying the origin (or an `Object` with an `origin` property) or the numeric identifier of an active `Http2Stream` as given by the + * `http2stream.id` property. + */ + altsvc(alt: string, originOrStream: number | string | url.URL | AlternativeServiceOptions): void; + /** + * Submits an `ORIGIN` frame (as defined by [RFC 8336](https://tools.ietf.org/html/rfc8336)) to the connected client + * to advertise the set of origins for which the server is capable of providing + * authoritative responses. + * + * ```js + * const http2 = require('node:http2'); + * const options = getSecureOptionsSomehow(); + * const server = http2.createSecureServer(options); + * server.on('stream', (stream) => { + * stream.respond(); + * stream.end('ok'); + * }); + * server.on('session', (session) => { + * session.origin('https://example.com', 'https://example.org'); + * }); + * ``` + * + * When a string is passed as an `origin`, it will be parsed as a URL and the + * origin will be derived. For instance, the origin for the HTTP URL`'https://example.org/foo/bar'` is the ASCII string`'https://example.org'`. An error will be thrown if either the given + * string + * cannot be parsed as a URL or if a valid origin cannot be derived. + * + * A `URL` object, or any object with an `origin` property, may be passed as + * an `origin`, in which case the value of the `origin` property will be + * used. The value of the `origin` property _must_ be a properly serialized + * ASCII origin. + * + * Alternatively, the `origins` option may be used when creating a new HTTP/2 + * server using the `http2.createSecureServer()` method: + * + * ```js + * const http2 = require('node:http2'); + * const options = getSecureOptionsSomehow(); + * options.origins = ['https://example.com', 'https://example.org']; + * const server = http2.createSecureServer(options); + * server.on('stream', (stream) => { + * stream.respond(); + * stream.end('ok'); + * }); + * ``` + * @since v10.12.0 + * @param origins One or more URL Strings passed as separate arguments. + */ + origin( + ...origins: Array< + | string + | url.URL + | { + origin: string; + } + > + ): void; + addListener( + event: "connect", + listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): this; + addListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "connect", session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket): boolean; + emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this; + on( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once( + event: "connect", + listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): this; + once( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener( + event: "connect", + listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): this; + prependListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener( + event: "connect", + listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): this; + prependOnceListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + // Http2Server + export interface SessionOptions { + maxDeflateDynamicTableSize?: number | undefined; + maxSessionMemory?: number | undefined; + maxHeaderListPairs?: number | undefined; + maxOutstandingPings?: number | undefined; + maxSendHeaderBlockLength?: number | undefined; + paddingStrategy?: number | undefined; + peerMaxConcurrentStreams?: number | undefined; + settings?: Settings | undefined; + /** + * Specifies a timeout in milliseconds that + * a server should wait when an [`'unknownProtocol'`][] is emitted. If the + * socket has not been destroyed by that time the server will destroy it. + * @default 100000 + */ + unknownProtocolTimeout?: number | undefined; + selectPadding?(frameLen: number, maxFrameLen: number): number; + } + export interface ClientSessionOptions extends SessionOptions { + maxReservedRemoteStreams?: number | undefined; + createConnection?: ((authority: url.URL, option: SessionOptions) => stream.Duplex) | undefined; + protocol?: "http:" | "https:" | undefined; + } + export interface ServerSessionOptions extends SessionOptions { + Http1IncomingMessage?: typeof IncomingMessage | undefined; + Http1ServerResponse?: typeof ServerResponse | undefined; + Http2ServerRequest?: typeof Http2ServerRequest | undefined; + Http2ServerResponse?: typeof Http2ServerResponse | undefined; + } + export interface SecureClientSessionOptions extends ClientSessionOptions, tls.ConnectionOptions {} + export interface SecureServerSessionOptions extends ServerSessionOptions, tls.TlsOptions {} + export interface ServerOptions extends ServerSessionOptions {} + export interface SecureServerOptions extends SecureServerSessionOptions { + allowHTTP1?: boolean | undefined; + origins?: string[] | undefined; + } + interface HTTP2ServerCommon { + setTimeout(msec?: number, callback?: () => void): this; + /** + * Throws ERR_HTTP2_INVALID_SETTING_VALUE for invalid settings values. + * Throws ERR_INVALID_ARG_TYPE for invalid settings argument. + */ + updateSettings(settings: Settings): void; + } + export interface Http2Server extends net.Server, HTTP2ServerCommon { + addListener( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + addListener( + event: "request", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + addListener(event: "session", listener: (session: ServerHttp2Session) => void): this; + addListener(event: "sessionError", listener: (err: Error) => void): this; + addListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + addListener(event: "timeout", listener: () => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "checkContinue", request: Http2ServerRequest, response: Http2ServerResponse): boolean; + emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean; + emit(event: "session", session: ServerHttp2Session): boolean; + emit(event: "sessionError", err: Error): boolean; + emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; + emit(event: "timeout"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; + on(event: "session", listener: (session: ServerHttp2Session) => void): this; + on(event: "sessionError", listener: (err: Error) => void): this; + on( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + on(event: "timeout", listener: () => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; + once(event: "session", listener: (session: ServerHttp2Session) => void): this; + once(event: "sessionError", listener: (err: Error) => void): this; + once( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + once(event: "timeout", listener: () => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + prependListener( + event: "request", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + prependListener(event: "session", listener: (session: ServerHttp2Session) => void): this; + prependListener(event: "sessionError", listener: (err: Error) => void): this; + prependListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + prependListener(event: "timeout", listener: () => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + prependOnceListener( + event: "request", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + prependOnceListener(event: "session", listener: (session: ServerHttp2Session) => void): this; + prependOnceListener(event: "sessionError", listener: (err: Error) => void): this; + prependOnceListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + prependOnceListener(event: "timeout", listener: () => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + export interface Http2SecureServer extends tls.Server, HTTP2ServerCommon { + addListener( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + addListener( + event: "request", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + addListener(event: "session", listener: (session: ServerHttp2Session) => void): this; + addListener(event: "sessionError", listener: (err: Error) => void): this; + addListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + addListener(event: "timeout", listener: () => void): this; + addListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "checkContinue", request: Http2ServerRequest, response: Http2ServerResponse): boolean; + emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean; + emit(event: "session", session: ServerHttp2Session): boolean; + emit(event: "sessionError", err: Error): boolean; + emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean; + emit(event: "timeout"): boolean; + emit(event: "unknownProtocol", socket: tls.TLSSocket): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; + on(event: "session", listener: (session: ServerHttp2Session) => void): this; + on(event: "sessionError", listener: (err: Error) => void): this; + on( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + on(event: "timeout", listener: () => void): this; + on(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this; + once(event: "session", listener: (session: ServerHttp2Session) => void): this; + once(event: "sessionError", listener: (err: Error) => void): this; + once( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + once(event: "timeout", listener: () => void): this; + once(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + prependListener( + event: "request", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + prependListener(event: "session", listener: (session: ServerHttp2Session) => void): this; + prependListener(event: "sessionError", listener: (err: Error) => void): this; + prependListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + prependListener(event: "timeout", listener: () => void): this; + prependListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener( + event: "checkContinue", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + prependOnceListener( + event: "request", + listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): this; + prependOnceListener(event: "session", listener: (session: ServerHttp2Session) => void): this; + prependOnceListener(event: "sessionError", listener: (err: Error) => void): this; + prependOnceListener( + event: "stream", + listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void, + ): this; + prependOnceListener(event: "timeout", listener: () => void): this; + prependOnceListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + /** + * A `Http2ServerRequest` object is created by {@link Server} or {@link SecureServer} and passed as the first argument to the `'request'` event. It may be used to access a request status, + * headers, and + * data. + * @since v8.4.0 + */ + export class Http2ServerRequest extends stream.Readable { + constructor( + stream: ServerHttp2Stream, + headers: IncomingHttpHeaders, + options: stream.ReadableOptions, + rawHeaders: ReadonlyArray, + ); + /** + * The `request.aborted` property will be `true` if the request has + * been aborted. + * @since v10.1.0 + */ + readonly aborted: boolean; + /** + * The request authority pseudo header field. Because HTTP/2 allows requests + * to set either `:authority` or `host`, this value is derived from`req.headers[':authority']` if present. Otherwise, it is derived from`req.headers['host']`. + * @since v8.4.0 + */ + readonly authority: string; + /** + * See `request.socket`. + * @since v8.4.0 + * @deprecated Since v13.0.0 - Use `socket`. + */ + readonly connection: net.Socket | tls.TLSSocket; + /** + * The `request.complete` property will be `true` if the request has + * been completed, aborted, or destroyed. + * @since v12.10.0 + */ + readonly complete: boolean; + /** + * The request/response headers object. + * + * Key-value pairs of header names and values. Header names are lower-cased. + * + * ```js + * // Prints something like: + * // + * // { 'user-agent': 'curl/7.22.0', + * // host: '127.0.0.1:8000', + * // accept: '*' } + * console.log(request.headers); + * ``` + * + * See `HTTP/2 Headers Object`. + * + * In HTTP/2, the request path, host name, protocol, and method are represented as + * special headers prefixed with the `:` character (e.g. `':path'`). These special + * headers will be included in the `request.headers` object. Care must be taken not + * to inadvertently modify these special headers or errors may occur. For instance, + * removing all headers from the request will cause errors to occur: + * + * ```js + * removeAllHeaders(request.headers); + * assert(request.url); // Fails because the :path header has been removed + * ``` + * @since v8.4.0 + */ + readonly headers: IncomingHttpHeaders; + /** + * In case of server request, the HTTP version sent by the client. In the case of + * client response, the HTTP version of the connected-to server. Returns`'2.0'`. + * + * Also `message.httpVersionMajor` is the first integer and`message.httpVersionMinor` is the second. + * @since v8.4.0 + */ + readonly httpVersion: string; + readonly httpVersionMinor: number; + readonly httpVersionMajor: number; + /** + * The request method as a string. Read-only. Examples: `'GET'`, `'DELETE'`. + * @since v8.4.0 + */ + readonly method: string; + /** + * The raw request/response headers list exactly as they were received. + * + * The keys and values are in the same list. It is _not_ a + * list of tuples. So, the even-numbered offsets are key values, and the + * odd-numbered offsets are the associated values. + * + * Header names are not lowercased, and duplicates are not merged. + * + * ```js + * // Prints something like: + * // + * // [ 'user-agent', + * // 'this is invalid because there can be only one', + * // 'User-Agent', + * // 'curl/7.22.0', + * // 'Host', + * // '127.0.0.1:8000', + * // 'ACCEPT', + * // '*' ] + * console.log(request.rawHeaders); + * ``` + * @since v8.4.0 + */ + readonly rawHeaders: string[]; + /** + * The raw request/response trailer keys and values exactly as they were + * received. Only populated at the `'end'` event. + * @since v8.4.0 + */ + readonly rawTrailers: string[]; + /** + * The request scheme pseudo header field indicating the scheme + * portion of the target URL. + * @since v8.4.0 + */ + readonly scheme: string; + /** + * Returns a `Proxy` object that acts as a `net.Socket` (or `tls.TLSSocket`) but + * applies getters, setters, and methods based on HTTP/2 logic. + * + * `destroyed`, `readable`, and `writable` properties will be retrieved from and + * set on `request.stream`. + * + * `destroy`, `emit`, `end`, `on` and `once` methods will be called on`request.stream`. + * + * `setTimeout` method will be called on `request.stream.session`. + * + * `pause`, `read`, `resume`, and `write` will throw an error with code`ERR_HTTP2_NO_SOCKET_MANIPULATION`. See `Http2Session and Sockets` for + * more information. + * + * All other interactions will be routed directly to the socket. With TLS support, + * use `request.socket.getPeerCertificate()` to obtain the client's + * authentication details. + * @since v8.4.0 + */ + readonly socket: net.Socket | tls.TLSSocket; + /** + * The `Http2Stream` object backing the request. + * @since v8.4.0 + */ + readonly stream: ServerHttp2Stream; + /** + * The request/response trailers object. Only populated at the `'end'` event. + * @since v8.4.0 + */ + readonly trailers: IncomingHttpHeaders; + /** + * Request URL string. This contains only the URL that is present in the actual + * HTTP request. If the request is: + * + * ```http + * GET /status?name=ryan HTTP/1.1 + * Accept: text/plain + * ``` + * + * Then `request.url` will be: + * + * ```js + * '/status?name=ryan' + * ``` + * + * To parse the url into its parts, `new URL()` can be used: + * + * ```console + * $ node + * > new URL('/status?name=ryan', 'http://example.com') + * URL { + * href: 'http://example.com/status?name=ryan', + * origin: 'http://example.com', + * protocol: 'http:', + * username: '', + * password: '', + * host: 'example.com', + * hostname: 'example.com', + * port: '', + * pathname: '/status', + * search: '?name=ryan', + * searchParams: URLSearchParams { 'name' => 'ryan' }, + * hash: '' + * } + * ``` + * @since v8.4.0 + */ + url: string; + /** + * Sets the `Http2Stream`'s timeout value to `msecs`. If a callback is + * provided, then it is added as a listener on the `'timeout'` event on + * the response object. + * + * If no `'timeout'` listener is added to the request, the response, or + * the server, then `Http2Stream` s are destroyed when they time out. If a + * handler is assigned to the request, the response, or the server's `'timeout'`events, timed out sockets must be handled explicitly. + * @since v8.4.0 + */ + setTimeout(msecs: number, callback?: () => void): void; + read(size?: number): Buffer | string | null; + addListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "data", listener: (chunk: Buffer | string) => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "readable", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "aborted", hadError: boolean, code: number): boolean; + emit(event: "close"): boolean; + emit(event: "data", chunk: Buffer | string): boolean; + emit(event: "end"): boolean; + emit(event: "readable"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "aborted", listener: (hadError: boolean, code: number) => void): this; + on(event: "close", listener: () => void): this; + on(event: "data", listener: (chunk: Buffer | string) => void): this; + on(event: "end", listener: () => void): this; + on(event: "readable", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "aborted", listener: (hadError: boolean, code: number) => void): this; + once(event: "close", listener: () => void): this; + once(event: "data", listener: (chunk: Buffer | string) => void): this; + once(event: "end", listener: () => void): this; + once(event: "readable", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "readable", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "readable", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + /** + * This object is created internally by an HTTP server, not by the user. It is + * passed as the second parameter to the `'request'` event. + * @since v8.4.0 + */ + export class Http2ServerResponse extends stream.Writable { + constructor(stream: ServerHttp2Stream); + /** + * See `response.socket`. + * @since v8.4.0 + * @deprecated Since v13.0.0 - Use `socket`. + */ + readonly connection: net.Socket | tls.TLSSocket; + /** + * Boolean value that indicates whether the response has completed. Starts + * as `false`. After `response.end()` executes, the value will be `true`. + * @since v8.4.0 + * @deprecated Since v13.4.0,v12.16.0 - Use `writableEnded`. + */ + readonly finished: boolean; + /** + * True if headers were sent, false otherwise (read-only). + * @since v8.4.0 + */ + readonly headersSent: boolean; + /** + * A reference to the original HTTP2 `request` object. + * @since v15.7.0 + */ + readonly req: Http2ServerRequest; + /** + * Returns a `Proxy` object that acts as a `net.Socket` (or `tls.TLSSocket`) but + * applies getters, setters, and methods based on HTTP/2 logic. + * + * `destroyed`, `readable`, and `writable` properties will be retrieved from and + * set on `response.stream`. + * + * `destroy`, `emit`, `end`, `on` and `once` methods will be called on`response.stream`. + * + * `setTimeout` method will be called on `response.stream.session`. + * + * `pause`, `read`, `resume`, and `write` will throw an error with code`ERR_HTTP2_NO_SOCKET_MANIPULATION`. See `Http2Session and Sockets` for + * more information. + * + * All other interactions will be routed directly to the socket. + * + * ```js + * const http2 = require('node:http2'); + * const server = http2.createServer((req, res) => { + * const ip = req.socket.remoteAddress; + * const port = req.socket.remotePort; + * res.end(`Your IP address is ${ip} and your source port is ${port}.`); + * }).listen(3000); + * ``` + * @since v8.4.0 + */ + readonly socket: net.Socket | tls.TLSSocket; + /** + * The `Http2Stream` object backing the response. + * @since v8.4.0 + */ + readonly stream: ServerHttp2Stream; + /** + * When true, the Date header will be automatically generated and sent in + * the response if it is not already present in the headers. Defaults to true. + * + * This should only be disabled for testing; HTTP requires the Date header + * in responses. + * @since v8.4.0 + */ + sendDate: boolean; + /** + * When using implicit headers (not calling `response.writeHead()` explicitly), + * this property controls the status code that will be sent to the client when + * the headers get flushed. + * + * ```js + * response.statusCode = 404; + * ``` + * + * After response header was sent to the client, this property indicates the + * status code which was sent out. + * @since v8.4.0 + */ + statusCode: number; + /** + * Status message is not supported by HTTP/2 (RFC 7540 8.1.2.4). It returns + * an empty string. + * @since v8.4.0 + */ + statusMessage: ""; + /** + * This method adds HTTP trailing headers (a header but at the end of the + * message) to the response. + * + * Attempting to set a header field name or value that contains invalid characters + * will result in a `TypeError` being thrown. + * @since v8.4.0 + */ + addTrailers(trailers: OutgoingHttpHeaders): void; + /** + * This method signals to the server that all of the response headers and body + * have been sent; that server should consider this message complete. + * The method, `response.end()`, MUST be called on each response. + * + * If `data` is specified, it is equivalent to calling `response.write(data, encoding)` followed by `response.end(callback)`. + * + * If `callback` is specified, it will be called when the response stream + * is finished. + * @since v8.4.0 + */ + end(callback?: () => void): this; + end(data: string | Uint8Array, callback?: () => void): this; + end(data: string | Uint8Array, encoding: BufferEncoding, callback?: () => void): this; + /** + * Reads out a header that has already been queued but not sent to the client. + * The name is case-insensitive. + * + * ```js + * const contentType = response.getHeader('content-type'); + * ``` + * @since v8.4.0 + */ + getHeader(name: string): string; + /** + * Returns an array containing the unique names of the current outgoing headers. + * All header names are lowercase. + * + * ```js + * response.setHeader('Foo', 'bar'); + * response.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']); + * + * const headerNames = response.getHeaderNames(); + * // headerNames === ['foo', 'set-cookie'] + * ``` + * @since v8.4.0 + */ + getHeaderNames(): string[]; + /** + * Returns a shallow copy of the current outgoing headers. Since a shallow copy + * is used, array values may be mutated without additional calls to various + * header-related http module methods. The keys of the returned object are the + * header names and the values are the respective header values. All header names + * are lowercase. + * + * The object returned by the `response.getHeaders()` method _does not_prototypically inherit from the JavaScript `Object`. This means that typical`Object` methods such as `obj.toString()`, + * `obj.hasOwnProperty()`, and others + * are not defined and _will not work_. + * + * ```js + * response.setHeader('Foo', 'bar'); + * response.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']); + * + * const headers = response.getHeaders(); + * // headers === { foo: 'bar', 'set-cookie': ['foo=bar', 'bar=baz'] } + * ``` + * @since v8.4.0 + */ + getHeaders(): OutgoingHttpHeaders; + /** + * Returns `true` if the header identified by `name` is currently set in the + * outgoing headers. The header name matching is case-insensitive. + * + * ```js + * const hasContentType = response.hasHeader('content-type'); + * ``` + * @since v8.4.0 + */ + hasHeader(name: string): boolean; + /** + * Removes a header that has been queued for implicit sending. + * + * ```js + * response.removeHeader('Content-Encoding'); + * ``` + * @since v8.4.0 + */ + removeHeader(name: string): void; + /** + * Sets a single header value for implicit headers. If this header already exists + * in the to-be-sent headers, its value will be replaced. Use an array of strings + * here to send multiple headers with the same name. + * + * ```js + * response.setHeader('Content-Type', 'text/html; charset=utf-8'); + * ``` + * + * or + * + * ```js + * response.setHeader('Set-Cookie', ['type=ninja', 'language=javascript']); + * ``` + * + * Attempting to set a header field name or value that contains invalid characters + * will result in a `TypeError` being thrown. + * + * When headers have been set with `response.setHeader()`, they will be merged + * with any headers passed to `response.writeHead()`, with the headers passed + * to `response.writeHead()` given precedence. + * + * ```js + * // Returns content-type = text/plain + * const server = http2.createServer((req, res) => { + * res.setHeader('Content-Type', 'text/html; charset=utf-8'); + * res.setHeader('X-Foo', 'bar'); + * res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' }); + * res.end('ok'); + * }); + * ``` + * @since v8.4.0 + */ + setHeader(name: string, value: number | string | ReadonlyArray): void; + /** + * Sets the `Http2Stream`'s timeout value to `msecs`. If a callback is + * provided, then it is added as a listener on the `'timeout'` event on + * the response object. + * + * If no `'timeout'` listener is added to the request, the response, or + * the server, then `Http2Stream` s are destroyed when they time out. If a + * handler is assigned to the request, the response, or the server's `'timeout'`events, timed out sockets must be handled explicitly. + * @since v8.4.0 + */ + setTimeout(msecs: number, callback?: () => void): void; + /** + * If this method is called and `response.writeHead()` has not been called, + * it will switch to implicit header mode and flush the implicit headers. + * + * This sends a chunk of the response body. This method may + * be called multiple times to provide successive parts of the body. + * + * In the `node:http` module, the response body is omitted when the + * request is a HEAD request. Similarly, the `204` and `304` responses _must not_ include a message body. + * + * `chunk` can be a string or a buffer. If `chunk` is a string, + * the second parameter specifies how to encode it into a byte stream. + * By default the `encoding` is `'utf8'`. `callback` will be called when this chunk + * of data is flushed. + * + * This is the raw HTTP body and has nothing to do with higher-level multi-part + * body encodings that may be used. + * + * The first time `response.write()` is called, it will send the buffered + * header information and the first chunk of the body to the client. The second + * time `response.write()` is called, Node.js assumes data will be streamed, + * and sends the new data separately. That is, the response is buffered up to the + * first chunk of the body. + * + * Returns `true` if the entire data was flushed successfully to the kernel + * buffer. Returns `false` if all or part of the data was queued in user memory.`'drain'` will be emitted when the buffer is free again. + * @since v8.4.0 + */ + write(chunk: string | Uint8Array, callback?: (err: Error) => void): boolean; + write(chunk: string | Uint8Array, encoding: BufferEncoding, callback?: (err: Error) => void): boolean; + /** + * Sends a status `100 Continue` to the client, indicating that the request body + * should be sent. See the `'checkContinue'` event on `Http2Server` and`Http2SecureServer`. + * @since v8.4.0 + */ + writeContinue(): void; + /** + * Sends a status `103 Early Hints` to the client with a Link header, + * indicating that the user agent can preload/preconnect the linked resources. + * The `hints` is an object containing the values of headers to be sent with + * early hints message. + * + * **Example** + * + * ```js + * const earlyHintsLink = '; rel=preload; as=style'; + * response.writeEarlyHints({ + * 'link': earlyHintsLink, + * }); + * + * const earlyHintsLinks = [ + * '; rel=preload; as=style', + * '; rel=preload; as=script', + * ]; + * response.writeEarlyHints({ + * 'link': earlyHintsLinks, + * }); + * ``` + * @since v18.11.0 + */ + writeEarlyHints(hints: Record): void; + /** + * Sends a response header to the request. The status code is a 3-digit HTTP + * status code, like `404`. The last argument, `headers`, are the response headers. + * + * Returns a reference to the `Http2ServerResponse`, so that calls can be chained. + * + * For compatibility with `HTTP/1`, a human-readable `statusMessage` may be + * passed as the second argument. However, because the `statusMessage` has no + * meaning within HTTP/2, the argument will have no effect and a process warning + * will be emitted. + * + * ```js + * const body = 'hello world'; + * response.writeHead(200, { + * 'Content-Length': Buffer.byteLength(body), + * 'Content-Type': 'text/plain; charset=utf-8', + * }); + * ``` + * + * `Content-Length` is given in bytes not characters. The`Buffer.byteLength()` API may be used to determine the number of bytes in a + * given encoding. On outbound messages, Node.js does not check if Content-Length + * and the length of the body being transmitted are equal or not. However, when + * receiving messages, Node.js will automatically reject messages when the`Content-Length` does not match the actual payload size. + * + * This method may be called at most one time on a message before `response.end()` is called. + * + * If `response.write()` or `response.end()` are called before calling + * this, the implicit/mutable headers will be calculated and call this function. + * + * When headers have been set with `response.setHeader()`, they will be merged + * with any headers passed to `response.writeHead()`, with the headers passed + * to `response.writeHead()` given precedence. + * + * ```js + * // Returns content-type = text/plain + * const server = http2.createServer((req, res) => { + * res.setHeader('Content-Type', 'text/html; charset=utf-8'); + * res.setHeader('X-Foo', 'bar'); + * res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' }); + * res.end('ok'); + * }); + * ``` + * + * Attempting to set a header field name or value that contains invalid characters + * will result in a `TypeError` being thrown. + * @since v8.4.0 + */ + writeHead(statusCode: number, headers?: OutgoingHttpHeaders): this; + writeHead(statusCode: number, statusMessage: string, headers?: OutgoingHttpHeaders): this; + /** + * Call `http2stream.pushStream()` with the given headers, and wrap the + * given `Http2Stream` on a newly created `Http2ServerResponse` as the callback + * parameter if successful. When `Http2ServerRequest` is closed, the callback is + * called with an error `ERR_HTTP2_INVALID_STREAM`. + * @since v8.4.0 + * @param headers An object describing the headers + * @param callback Called once `http2stream.pushStream()` is finished, or either when the attempt to create the pushed `Http2Stream` has failed or has been rejected, or the state of + * `Http2ServerRequest` is closed prior to calling the `http2stream.pushStream()` method + */ + createPushResponse( + headers: OutgoingHttpHeaders, + callback: (err: Error | null, res: Http2ServerResponse) => void, + ): void; + addListener(event: "close", listener: () => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "error", listener: (error: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "pipe", listener: (src: stream.Readable) => void): this; + addListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "close"): boolean; + emit(event: "drain"): boolean; + emit(event: "error", error: Error): boolean; + emit(event: "finish"): boolean; + emit(event: "pipe", src: stream.Readable): boolean; + emit(event: "unpipe", src: stream.Readable): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "close", listener: () => void): this; + on(event: "drain", listener: () => void): this; + on(event: "error", listener: (error: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "pipe", listener: (src: stream.Readable) => void): this; + on(event: "unpipe", listener: (src: stream.Readable) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "drain", listener: () => void): this; + once(event: "error", listener: (error: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "pipe", listener: (src: stream.Readable) => void): this; + once(event: "unpipe", listener: (src: stream.Readable) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "error", listener: (error: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "pipe", listener: (src: stream.Readable) => void): this; + prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "error", listener: (error: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this; + prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + export namespace constants { + const NGHTTP2_SESSION_SERVER: number; + const NGHTTP2_SESSION_CLIENT: number; + const NGHTTP2_STREAM_STATE_IDLE: number; + const NGHTTP2_STREAM_STATE_OPEN: number; + const NGHTTP2_STREAM_STATE_RESERVED_LOCAL: number; + const NGHTTP2_STREAM_STATE_RESERVED_REMOTE: number; + const NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL: number; + const NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE: number; + const NGHTTP2_STREAM_STATE_CLOSED: number; + const NGHTTP2_NO_ERROR: number; + const NGHTTP2_PROTOCOL_ERROR: number; + const NGHTTP2_INTERNAL_ERROR: number; + const NGHTTP2_FLOW_CONTROL_ERROR: number; + const NGHTTP2_SETTINGS_TIMEOUT: number; + const NGHTTP2_STREAM_CLOSED: number; + const NGHTTP2_FRAME_SIZE_ERROR: number; + const NGHTTP2_REFUSED_STREAM: number; + const NGHTTP2_CANCEL: number; + const NGHTTP2_COMPRESSION_ERROR: number; + const NGHTTP2_CONNECT_ERROR: number; + const NGHTTP2_ENHANCE_YOUR_CALM: number; + const NGHTTP2_INADEQUATE_SECURITY: number; + const NGHTTP2_HTTP_1_1_REQUIRED: number; + const NGHTTP2_ERR_FRAME_SIZE_ERROR: number; + const NGHTTP2_FLAG_NONE: number; + const NGHTTP2_FLAG_END_STREAM: number; + const NGHTTP2_FLAG_END_HEADERS: number; + const NGHTTP2_FLAG_ACK: number; + const NGHTTP2_FLAG_PADDED: number; + const NGHTTP2_FLAG_PRIORITY: number; + const DEFAULT_SETTINGS_HEADER_TABLE_SIZE: number; + const DEFAULT_SETTINGS_ENABLE_PUSH: number; + const DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE: number; + const DEFAULT_SETTINGS_MAX_FRAME_SIZE: number; + const MAX_MAX_FRAME_SIZE: number; + const MIN_MAX_FRAME_SIZE: number; + const MAX_INITIAL_WINDOW_SIZE: number; + const NGHTTP2_DEFAULT_WEIGHT: number; + const NGHTTP2_SETTINGS_HEADER_TABLE_SIZE: number; + const NGHTTP2_SETTINGS_ENABLE_PUSH: number; + const NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS: number; + const NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE: number; + const NGHTTP2_SETTINGS_MAX_FRAME_SIZE: number; + const NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE: number; + const PADDING_STRATEGY_NONE: number; + const PADDING_STRATEGY_MAX: number; + const PADDING_STRATEGY_CALLBACK: number; + const HTTP2_HEADER_STATUS: string; + const HTTP2_HEADER_METHOD: string; + const HTTP2_HEADER_AUTHORITY: string; + const HTTP2_HEADER_SCHEME: string; + const HTTP2_HEADER_PATH: string; + const HTTP2_HEADER_ACCEPT_CHARSET: string; + const HTTP2_HEADER_ACCEPT_ENCODING: string; + const HTTP2_HEADER_ACCEPT_LANGUAGE: string; + const HTTP2_HEADER_ACCEPT_RANGES: string; + const HTTP2_HEADER_ACCEPT: string; + const HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN: string; + const HTTP2_HEADER_AGE: string; + const HTTP2_HEADER_ALLOW: string; + const HTTP2_HEADER_AUTHORIZATION: string; + const HTTP2_HEADER_CACHE_CONTROL: string; + const HTTP2_HEADER_CONNECTION: string; + const HTTP2_HEADER_CONTENT_DISPOSITION: string; + const HTTP2_HEADER_CONTENT_ENCODING: string; + const HTTP2_HEADER_CONTENT_LANGUAGE: string; + const HTTP2_HEADER_CONTENT_LENGTH: string; + const HTTP2_HEADER_CONTENT_LOCATION: string; + const HTTP2_HEADER_CONTENT_MD5: string; + const HTTP2_HEADER_CONTENT_RANGE: string; + const HTTP2_HEADER_CONTENT_TYPE: string; + const HTTP2_HEADER_COOKIE: string; + const HTTP2_HEADER_DATE: string; + const HTTP2_HEADER_ETAG: string; + const HTTP2_HEADER_EXPECT: string; + const HTTP2_HEADER_EXPIRES: string; + const HTTP2_HEADER_FROM: string; + const HTTP2_HEADER_HOST: string; + const HTTP2_HEADER_IF_MATCH: string; + const HTTP2_HEADER_IF_MODIFIED_SINCE: string; + const HTTP2_HEADER_IF_NONE_MATCH: string; + const HTTP2_HEADER_IF_RANGE: string; + const HTTP2_HEADER_IF_UNMODIFIED_SINCE: string; + const HTTP2_HEADER_LAST_MODIFIED: string; + const HTTP2_HEADER_LINK: string; + const HTTP2_HEADER_LOCATION: string; + const HTTP2_HEADER_MAX_FORWARDS: string; + const HTTP2_HEADER_PREFER: string; + const HTTP2_HEADER_PROXY_AUTHENTICATE: string; + const HTTP2_HEADER_PROXY_AUTHORIZATION: string; + const HTTP2_HEADER_RANGE: string; + const HTTP2_HEADER_REFERER: string; + const HTTP2_HEADER_REFRESH: string; + const HTTP2_HEADER_RETRY_AFTER: string; + const HTTP2_HEADER_SERVER: string; + const HTTP2_HEADER_SET_COOKIE: string; + const HTTP2_HEADER_STRICT_TRANSPORT_SECURITY: string; + const HTTP2_HEADER_TRANSFER_ENCODING: string; + const HTTP2_HEADER_TE: string; + const HTTP2_HEADER_UPGRADE: string; + const HTTP2_HEADER_USER_AGENT: string; + const HTTP2_HEADER_VARY: string; + const HTTP2_HEADER_VIA: string; + const HTTP2_HEADER_WWW_AUTHENTICATE: string; + const HTTP2_HEADER_HTTP2_SETTINGS: string; + const HTTP2_HEADER_KEEP_ALIVE: string; + const HTTP2_HEADER_PROXY_CONNECTION: string; + const HTTP2_METHOD_ACL: string; + const HTTP2_METHOD_BASELINE_CONTROL: string; + const HTTP2_METHOD_BIND: string; + const HTTP2_METHOD_CHECKIN: string; + const HTTP2_METHOD_CHECKOUT: string; + const HTTP2_METHOD_CONNECT: string; + const HTTP2_METHOD_COPY: string; + const HTTP2_METHOD_DELETE: string; + const HTTP2_METHOD_GET: string; + const HTTP2_METHOD_HEAD: string; + const HTTP2_METHOD_LABEL: string; + const HTTP2_METHOD_LINK: string; + const HTTP2_METHOD_LOCK: string; + const HTTP2_METHOD_MERGE: string; + const HTTP2_METHOD_MKACTIVITY: string; + const HTTP2_METHOD_MKCALENDAR: string; + const HTTP2_METHOD_MKCOL: string; + const HTTP2_METHOD_MKREDIRECTREF: string; + const HTTP2_METHOD_MKWORKSPACE: string; + const HTTP2_METHOD_MOVE: string; + const HTTP2_METHOD_OPTIONS: string; + const HTTP2_METHOD_ORDERPATCH: string; + const HTTP2_METHOD_PATCH: string; + const HTTP2_METHOD_POST: string; + const HTTP2_METHOD_PRI: string; + const HTTP2_METHOD_PROPFIND: string; + const HTTP2_METHOD_PROPPATCH: string; + const HTTP2_METHOD_PUT: string; + const HTTP2_METHOD_REBIND: string; + const HTTP2_METHOD_REPORT: string; + const HTTP2_METHOD_SEARCH: string; + const HTTP2_METHOD_TRACE: string; + const HTTP2_METHOD_UNBIND: string; + const HTTP2_METHOD_UNCHECKOUT: string; + const HTTP2_METHOD_UNLINK: string; + const HTTP2_METHOD_UNLOCK: string; + const HTTP2_METHOD_UPDATE: string; + const HTTP2_METHOD_UPDATEREDIRECTREF: string; + const HTTP2_METHOD_VERSION_CONTROL: string; + const HTTP_STATUS_CONTINUE: number; + const HTTP_STATUS_SWITCHING_PROTOCOLS: number; + const HTTP_STATUS_PROCESSING: number; + const HTTP_STATUS_OK: number; + const HTTP_STATUS_CREATED: number; + const HTTP_STATUS_ACCEPTED: number; + const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION: number; + const HTTP_STATUS_NO_CONTENT: number; + const HTTP_STATUS_RESET_CONTENT: number; + const HTTP_STATUS_PARTIAL_CONTENT: number; + const HTTP_STATUS_MULTI_STATUS: number; + const HTTP_STATUS_ALREADY_REPORTED: number; + const HTTP_STATUS_IM_USED: number; + const HTTP_STATUS_MULTIPLE_CHOICES: number; + const HTTP_STATUS_MOVED_PERMANENTLY: number; + const HTTP_STATUS_FOUND: number; + const HTTP_STATUS_SEE_OTHER: number; + const HTTP_STATUS_NOT_MODIFIED: number; + const HTTP_STATUS_USE_PROXY: number; + const HTTP_STATUS_TEMPORARY_REDIRECT: number; + const HTTP_STATUS_PERMANENT_REDIRECT: number; + const HTTP_STATUS_BAD_REQUEST: number; + const HTTP_STATUS_UNAUTHORIZED: number; + const HTTP_STATUS_PAYMENT_REQUIRED: number; + const HTTP_STATUS_FORBIDDEN: number; + const HTTP_STATUS_NOT_FOUND: number; + const HTTP_STATUS_METHOD_NOT_ALLOWED: number; + const HTTP_STATUS_NOT_ACCEPTABLE: number; + const HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED: number; + const HTTP_STATUS_REQUEST_TIMEOUT: number; + const HTTP_STATUS_CONFLICT: number; + const HTTP_STATUS_GONE: number; + const HTTP_STATUS_LENGTH_REQUIRED: number; + const HTTP_STATUS_PRECONDITION_FAILED: number; + const HTTP_STATUS_PAYLOAD_TOO_LARGE: number; + const HTTP_STATUS_URI_TOO_LONG: number; + const HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: number; + const HTTP_STATUS_RANGE_NOT_SATISFIABLE: number; + const HTTP_STATUS_EXPECTATION_FAILED: number; + const HTTP_STATUS_TEAPOT: number; + const HTTP_STATUS_MISDIRECTED_REQUEST: number; + const HTTP_STATUS_UNPROCESSABLE_ENTITY: number; + const HTTP_STATUS_LOCKED: number; + const HTTP_STATUS_FAILED_DEPENDENCY: number; + const HTTP_STATUS_UNORDERED_COLLECTION: number; + const HTTP_STATUS_UPGRADE_REQUIRED: number; + const HTTP_STATUS_PRECONDITION_REQUIRED: number; + const HTTP_STATUS_TOO_MANY_REQUESTS: number; + const HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE: number; + const HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS: number; + const HTTP_STATUS_INTERNAL_SERVER_ERROR: number; + const HTTP_STATUS_NOT_IMPLEMENTED: number; + const HTTP_STATUS_BAD_GATEWAY: number; + const HTTP_STATUS_SERVICE_UNAVAILABLE: number; + const HTTP_STATUS_GATEWAY_TIMEOUT: number; + const HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED: number; + const HTTP_STATUS_VARIANT_ALSO_NEGOTIATES: number; + const HTTP_STATUS_INSUFFICIENT_STORAGE: number; + const HTTP_STATUS_LOOP_DETECTED: number; + const HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED: number; + const HTTP_STATUS_NOT_EXTENDED: number; + const HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED: number; + } + /** + * This symbol can be set as a property on the HTTP/2 headers object with + * an array value in order to provide a list of headers considered sensitive. + */ + export const sensitiveHeaders: symbol; + /** + * Returns an object containing the default settings for an `Http2Session`instance. This method returns a new object instance every time it is called + * so instances returned may be safely modified for use. + * @since v8.4.0 + */ + export function getDefaultSettings(): Settings; + /** + * Returns a `Buffer` instance containing serialized representation of the given + * HTTP/2 settings as specified in the [HTTP/2](https://tools.ietf.org/html/rfc7540) specification. This is intended + * for use with the `HTTP2-Settings` header field. + * + * ```js + * const http2 = require('node:http2'); + * + * const packed = http2.getPackedSettings({ enablePush: false }); + * + * console.log(packed.toString('base64')); + * // Prints: AAIAAAAA + * ``` + * @since v8.4.0 + */ + export function getPackedSettings(settings: Settings): Buffer; + /** + * Returns a `HTTP/2 Settings Object` containing the deserialized settings from + * the given `Buffer` as generated by `http2.getPackedSettings()`. + * @since v8.4.0 + * @param buf The packed settings. + */ + export function getUnpackedSettings(buf: Uint8Array): Settings; + /** + * Returns a `net.Server` instance that creates and manages `Http2Session`instances. + * + * Since there are no browsers known that support [unencrypted HTTP/2](https://http2.github.io/faq/#does-http2-require-encryption), the use of {@link createSecureServer} is necessary when + * communicating + * with browser clients. + * + * ```js + * const http2 = require('node:http2'); + * + * // Create an unencrypted HTTP/2 server. + * // Since there are no browsers known that support + * // unencrypted HTTP/2, the use of `http2.createSecureServer()` + * // is necessary when communicating with browser clients. + * const server = http2.createServer(); + * + * server.on('stream', (stream, headers) => { + * stream.respond({ + * 'content-type': 'text/html; charset=utf-8', + * ':status': 200, + * }); + * stream.end('

Hello World

'); + * }); + * + * server.listen(8000); + * ``` + * @since v8.4.0 + * @param onRequestHandler See `Compatibility API` + */ + export function createServer( + onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): Http2Server; + export function createServer( + options: ServerOptions, + onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): Http2Server; + /** + * Returns a `tls.Server` instance that creates and manages `Http2Session`instances. + * + * ```js + * const http2 = require('node:http2'); + * const fs = require('node:fs'); + * + * const options = { + * key: fs.readFileSync('server-key.pem'), + * cert: fs.readFileSync('server-cert.pem'), + * }; + * + * // Create a secure HTTP/2 server + * const server = http2.createSecureServer(options); + * + * server.on('stream', (stream, headers) => { + * stream.respond({ + * 'content-type': 'text/html; charset=utf-8', + * ':status': 200, + * }); + * stream.end('

Hello World

'); + * }); + * + * server.listen(8443); + * ``` + * @since v8.4.0 + * @param onRequestHandler See `Compatibility API` + */ + export function createSecureServer( + onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): Http2SecureServer; + export function createSecureServer( + options: SecureServerOptions, + onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void, + ): Http2SecureServer; + /** + * Returns a `ClientHttp2Session` instance. + * + * ```js + * const http2 = require('node:http2'); + * const client = http2.connect('https://localhost:1234'); + * + * // Use the client + * + * client.close(); + * ``` + * @since v8.4.0 + * @param authority The remote HTTP/2 server to connect to. This must be in the form of a minimal, valid URL with the `http://` or `https://` prefix, host name, and IP port (if a non-default port + * is used). Userinfo (user ID and password), path, querystring, and fragment details in the URL will be ignored. + * @param listener Will be registered as a one-time listener of the {@link 'connect'} event. + */ + export function connect( + authority: string | url.URL, + listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): ClientHttp2Session; + export function connect( + authority: string | url.URL, + options?: ClientSessionOptions | SecureClientSessionOptions, + listener?: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void, + ): ClientHttp2Session; +} +declare module "node:http2" { + export * from "http2"; +} diff --git a/node_modules/@types/node/ts4.8/https.d.ts b/node_modules/@types/node/ts4.8/https.d.ts new file mode 100644 index 00000000..36ae5b2f --- /dev/null +++ b/node_modules/@types/node/ts4.8/https.d.ts @@ -0,0 +1,550 @@ +/** + * HTTPS is the HTTP protocol over TLS/SSL. In Node.js this is implemented as a + * separate module. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/https.js) + */ +declare module "https" { + import { Duplex } from "node:stream"; + import * as tls from "node:tls"; + import * as http from "node:http"; + import { URL } from "node:url"; + type ServerOptions< + Request extends typeof http.IncomingMessage = typeof http.IncomingMessage, + Response extends typeof http.ServerResponse = typeof http.ServerResponse, + > = tls.SecureContextOptions & tls.TlsOptions & http.ServerOptions; + type RequestOptions = + & http.RequestOptions + & tls.SecureContextOptions + & { + checkServerIdentity?: typeof tls.checkServerIdentity | undefined; + rejectUnauthorized?: boolean | undefined; // Defaults to true + servername?: string | undefined; // SNI TLS Extension + }; + interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions { + rejectUnauthorized?: boolean | undefined; + maxCachedSessions?: number | undefined; + } + /** + * An `Agent` object for HTTPS similar to `http.Agent`. See {@link request} for more information. + * @since v0.4.5 + */ + class Agent extends http.Agent { + constructor(options?: AgentOptions); + options: AgentOptions; + } + interface Server< + Request extends typeof http.IncomingMessage = typeof http.IncomingMessage, + Response extends typeof http.ServerResponse = typeof http.ServerResponse, + > extends http.Server {} + /** + * See `http.Server` for more information. + * @since v0.3.4 + */ + class Server< + Request extends typeof http.IncomingMessage = typeof http.IncomingMessage, + Response extends typeof http.ServerResponse = typeof http.ServerResponse, + > extends tls.Server { + constructor(requestListener?: http.RequestListener); + constructor( + options: ServerOptions, + requestListener?: http.RequestListener, + ); + /** + * Closes all connections connected to this server. + * @since v18.2.0 + */ + closeAllConnections(): void; + /** + * Closes all connections connected to this server which are not sending a request or waiting for a response. + * @since v18.2.0 + */ + closeIdleConnections(): void; + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "keylog", listener: (line: Buffer, tlsSocket: tls.TLSSocket) => void): this; + addListener( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void, + ): this; + addListener( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + addListener( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void, + ): this; + addListener(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this; + addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "connection", listener: (socket: Duplex) => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "listening", listener: () => void): this; + addListener(event: "checkContinue", listener: http.RequestListener): this; + addListener(event: "checkExpectation", listener: http.RequestListener): this; + addListener(event: "clientError", listener: (err: Error, socket: Duplex) => void): this; + addListener( + event: "connect", + listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, + ): this; + addListener(event: "request", listener: http.RequestListener): this; + addListener( + event: "upgrade", + listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, + ): this; + emit(event: string, ...args: any[]): boolean; + emit(event: "keylog", line: Buffer, tlsSocket: tls.TLSSocket): boolean; + emit( + event: "newSession", + sessionId: Buffer, + sessionData: Buffer, + callback: (err: Error, resp: Buffer) => void, + ): boolean; + emit( + event: "OCSPRequest", + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ): boolean; + emit(event: "resumeSession", sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void): boolean; + emit(event: "secureConnection", tlsSocket: tls.TLSSocket): boolean; + emit(event: "tlsClientError", err: Error, tlsSocket: tls.TLSSocket): boolean; + emit(event: "close"): boolean; + emit(event: "connection", socket: Duplex): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "listening"): boolean; + emit( + event: "checkContinue", + req: InstanceType, + res: InstanceType & { + req: InstanceType; + }, + ): boolean; + emit( + event: "checkExpectation", + req: InstanceType, + res: InstanceType & { + req: InstanceType; + }, + ): boolean; + emit(event: "clientError", err: Error, socket: Duplex): boolean; + emit(event: "connect", req: InstanceType, socket: Duplex, head: Buffer): boolean; + emit( + event: "request", + req: InstanceType, + res: InstanceType & { + req: InstanceType; + }, + ): boolean; + emit(event: "upgrade", req: InstanceType, socket: Duplex, head: Buffer): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "keylog", listener: (line: Buffer, tlsSocket: tls.TLSSocket) => void): this; + on( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void, + ): this; + on( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + on( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void, + ): this; + on(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this; + on(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this; + on(event: "close", listener: () => void): this; + on(event: "connection", listener: (socket: Duplex) => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "listening", listener: () => void): this; + on(event: "checkContinue", listener: http.RequestListener): this; + on(event: "checkExpectation", listener: http.RequestListener): this; + on(event: "clientError", listener: (err: Error, socket: Duplex) => void): this; + on(event: "connect", listener: (req: InstanceType, socket: Duplex, head: Buffer) => void): this; + on(event: "request", listener: http.RequestListener): this; + on(event: "upgrade", listener: (req: InstanceType, socket: Duplex, head: Buffer) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "keylog", listener: (line: Buffer, tlsSocket: tls.TLSSocket) => void): this; + once( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void, + ): this; + once( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + once( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void, + ): this; + once(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this; + once(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this; + once(event: "close", listener: () => void): this; + once(event: "connection", listener: (socket: Duplex) => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "listening", listener: () => void): this; + once(event: "checkContinue", listener: http.RequestListener): this; + once(event: "checkExpectation", listener: http.RequestListener): this; + once(event: "clientError", listener: (err: Error, socket: Duplex) => void): this; + once(event: "connect", listener: (req: InstanceType, socket: Duplex, head: Buffer) => void): this; + once(event: "request", listener: http.RequestListener): this; + once(event: "upgrade", listener: (req: InstanceType, socket: Duplex, head: Buffer) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "keylog", listener: (line: Buffer, tlsSocket: tls.TLSSocket) => void): this; + prependListener( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void, + ): this; + prependListener( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + prependListener( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void, + ): this; + prependListener(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this; + prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "connection", listener: (socket: Duplex) => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "listening", listener: () => void): this; + prependListener(event: "checkContinue", listener: http.RequestListener): this; + prependListener(event: "checkExpectation", listener: http.RequestListener): this; + prependListener(event: "clientError", listener: (err: Error, socket: Duplex) => void): this; + prependListener( + event: "connect", + listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, + ): this; + prependListener(event: "request", listener: http.RequestListener): this; + prependListener( + event: "upgrade", + listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, + ): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "keylog", listener: (line: Buffer, tlsSocket: tls.TLSSocket) => void): this; + prependOnceListener( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void, + ): this; + prependOnceListener( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + prependOnceListener( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void, + ): this; + prependOnceListener(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this; + prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "connection", listener: (socket: Duplex) => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "listening", listener: () => void): this; + prependOnceListener(event: "checkContinue", listener: http.RequestListener): this; + prependOnceListener(event: "checkExpectation", listener: http.RequestListener): this; + prependOnceListener(event: "clientError", listener: (err: Error, socket: Duplex) => void): this; + prependOnceListener( + event: "connect", + listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, + ): this; + prependOnceListener(event: "request", listener: http.RequestListener): this; + prependOnceListener( + event: "upgrade", + listener: (req: InstanceType, socket: Duplex, head: Buffer) => void, + ): this; + } + /** + * ```js + * // curl -k https://localhost:8000/ + * const https = require('node:https'); + * const fs = require('node:fs'); + * + * const options = { + * key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), + * cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem'), + * }; + * + * https.createServer(options, (req, res) => { + * res.writeHead(200); + * res.end('hello world\n'); + * }).listen(8000); + * ``` + * + * Or + * + * ```js + * const https = require('node:https'); + * const fs = require('node:fs'); + * + * const options = { + * pfx: fs.readFileSync('test/fixtures/test_cert.pfx'), + * passphrase: 'sample', + * }; + * + * https.createServer(options, (req, res) => { + * res.writeHead(200); + * res.end('hello world\n'); + * }).listen(8000); + * ``` + * @since v0.3.4 + * @param options Accepts `options` from `createServer`, `createSecureContext` and `createServer`. + * @param requestListener A listener to be added to the `'request'` event. + */ + function createServer< + Request extends typeof http.IncomingMessage = typeof http.IncomingMessage, + Response extends typeof http.ServerResponse = typeof http.ServerResponse, + >(requestListener?: http.RequestListener): Server; + function createServer< + Request extends typeof http.IncomingMessage = typeof http.IncomingMessage, + Response extends typeof http.ServerResponse = typeof http.ServerResponse, + >( + options: ServerOptions, + requestListener?: http.RequestListener, + ): Server; + /** + * Makes a request to a secure web server. + * + * The following additional `options` from `tls.connect()` are also accepted:`ca`, `cert`, `ciphers`, `clientCertEngine`, `crl`, `dhparam`, `ecdhCurve`,`honorCipherOrder`, `key`, `passphrase`, + * `pfx`, `rejectUnauthorized`,`secureOptions`, `secureProtocol`, `servername`, `sessionIdContext`,`highWaterMark`. + * + * `options` can be an object, a string, or a `URL` object. If `options` is a + * string, it is automatically parsed with `new URL()`. If it is a `URL` object, it will be automatically converted to an ordinary `options` object. + * + * `https.request()` returns an instance of the `http.ClientRequest` class. The `ClientRequest` instance is a writable stream. If one needs to + * upload a file with a POST request, then write to the `ClientRequest` object. + * + * ```js + * const https = require('node:https'); + * + * const options = { + * hostname: 'encrypted.google.com', + * port: 443, + * path: '/', + * method: 'GET', + * }; + * + * const req = https.request(options, (res) => { + * console.log('statusCode:', res.statusCode); + * console.log('headers:', res.headers); + * + * res.on('data', (d) => { + * process.stdout.write(d); + * }); + * }); + * + * req.on('error', (e) => { + * console.error(e); + * }); + * req.end(); + * ``` + * + * Example using options from `tls.connect()`: + * + * ```js + * const options = { + * hostname: 'encrypted.google.com', + * port: 443, + * path: '/', + * method: 'GET', + * key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), + * cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem'), + * }; + * options.agent = new https.Agent(options); + * + * const req = https.request(options, (res) => { + * // ... + * }); + * ``` + * + * Alternatively, opt out of connection pooling by not using an `Agent`. + * + * ```js + * const options = { + * hostname: 'encrypted.google.com', + * port: 443, + * path: '/', + * method: 'GET', + * key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), + * cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem'), + * agent: false, + * }; + * + * const req = https.request(options, (res) => { + * // ... + * }); + * ``` + * + * Example using a `URL` as `options`: + * + * ```js + * const options = new URL('https://abc:xyz@example.com'); + * + * const req = https.request(options, (res) => { + * // ... + * }); + * ``` + * + * Example pinning on certificate fingerprint, or the public key (similar to`pin-sha256`): + * + * ```js + * const tls = require('node:tls'); + * const https = require('node:https'); + * const crypto = require('node:crypto'); + * + * function sha256(s) { + * return crypto.createHash('sha256').update(s).digest('base64'); + * } + * const options = { + * hostname: 'github.com', + * port: 443, + * path: '/', + * method: 'GET', + * checkServerIdentity: function(host, cert) { + * // Make sure the certificate is issued to the host we are connected to + * const err = tls.checkServerIdentity(host, cert); + * if (err) { + * return err; + * } + * + * // Pin the public key, similar to HPKP pin-sha256 pinning + * const pubkey256 = 'pL1+qb9HTMRZJmuC/bB/ZI9d302BYrrqiVuRyW+DGrU='; + * if (sha256(cert.pubkey) !== pubkey256) { + * const msg = 'Certificate verification error: ' + + * `The public key of '${cert.subject.CN}' ` + + * 'does not match our pinned fingerprint'; + * return new Error(msg); + * } + * + * // Pin the exact certificate, rather than the pub key + * const cert256 = '25:FE:39:32:D9:63:8C:8A:FC:A1:9A:29:87:' + + * 'D8:3E:4C:1D:98:DB:71:E4:1A:48:03:98:EA:22:6A:BD:8B:93:16'; + * if (cert.fingerprint256 !== cert256) { + * const msg = 'Certificate verification error: ' + + * `The certificate of '${cert.subject.CN}' ` + + * 'does not match our pinned fingerprint'; + * return new Error(msg); + * } + * + * // This loop is informational only. + * // Print the certificate and public key fingerprints of all certs in the + * // chain. Its common to pin the public key of the issuer on the public + * // internet, while pinning the public key of the service in sensitive + * // environments. + * do { + * console.log('Subject Common Name:', cert.subject.CN); + * console.log(' Certificate SHA256 fingerprint:', cert.fingerprint256); + * + * hash = crypto.createHash('sha256'); + * console.log(' Public key ping-sha256:', sha256(cert.pubkey)); + * + * lastprint256 = cert.fingerprint256; + * cert = cert.issuerCertificate; + * } while (cert.fingerprint256 !== lastprint256); + * + * }, + * }; + * + * options.agent = new https.Agent(options); + * const req = https.request(options, (res) => { + * console.log('All OK. Server matched our pinned cert or public key'); + * console.log('statusCode:', res.statusCode); + * // Print the HPKP values + * console.log('headers:', res.headers['public-key-pins']); + * + * res.on('data', (d) => {}); + * }); + * + * req.on('error', (e) => { + * console.error(e.message); + * }); + * req.end(); + * ``` + * + * Outputs for example: + * + * ```text + * Subject Common Name: github.com + * Certificate SHA256 fingerprint: 25:FE:39:32:D9:63:8C:8A:FC:A1:9A:29:87:D8:3E:4C:1D:98:DB:71:E4:1A:48:03:98:EA:22:6A:BD:8B:93:16 + * Public key ping-sha256: pL1+qb9HTMRZJmuC/bB/ZI9d302BYrrqiVuRyW+DGrU= + * Subject Common Name: DigiCert SHA2 Extended Validation Server CA + * Certificate SHA256 fingerprint: 40:3E:06:2A:26:53:05:91:13:28:5B:AF:80:A0:D4:AE:42:2C:84:8C:9F:78:FA:D0:1F:C9:4B:C5:B8:7F:EF:1A + * Public key ping-sha256: RRM1dGqnDFsCJXBTHky16vi1obOlCgFFn/yOhI/y+ho= + * Subject Common Name: DigiCert High Assurance EV Root CA + * Certificate SHA256 fingerprint: 74:31:E5:F4:C3:C1:CE:46:90:77:4F:0B:61:E0:54:40:88:3B:A9:A0:1E:D0:0B:A6:AB:D7:80:6E:D3:B1:18:CF + * Public key ping-sha256: WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18= + * All OK. Server matched our pinned cert or public key + * statusCode: 200 + * headers: max-age=0; pin-sha256="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18="; pin-sha256="RRM1dGqnDFsCJXBTHky16vi1obOlCgFFn/yOhI/y+ho="; + * pin-sha256="k2v657xBsOVe1PQRwOsHsw3bsGT2VzIqz5K+59sNQws="; pin-sha256="K87oWBWM9UZfyddvDfoxL+8lpNyoUB2ptGtn0fv6G2Q="; pin-sha256="IQBnNBEiFuhj+8x6X8XLgh01V9Ic5/V3IRQLNFFc7v4="; + * pin-sha256="iie1VXtL7HzAMF+/PVPR9xzT80kQxdZeJ+zduCB3uj0="; pin-sha256="LvRiGEjRqfzurezaWuj8Wie2gyHMrW5Q06LspMnox7A="; includeSubDomains + * ``` + * @since v0.3.6 + * @param options Accepts all `options` from `request`, with some differences in default values: + */ + function request( + options: RequestOptions | string | URL, + callback?: (res: http.IncomingMessage) => void, + ): http.ClientRequest; + function request( + url: string | URL, + options: RequestOptions, + callback?: (res: http.IncomingMessage) => void, + ): http.ClientRequest; + /** + * Like `http.get()` but for HTTPS. + * + * `options` can be an object, a string, or a `URL` object. If `options` is a + * string, it is automatically parsed with `new URL()`. If it is a `URL` object, it will be automatically converted to an ordinary `options` object. + * + * ```js + * const https = require('node:https'); + * + * https.get('https://encrypted.google.com/', (res) => { + * console.log('statusCode:', res.statusCode); + * console.log('headers:', res.headers); + * + * res.on('data', (d) => { + * process.stdout.write(d); + * }); + * + * }).on('error', (e) => { + * console.error(e); + * }); + * ``` + * @since v0.3.6 + * @param options Accepts the same `options` as {@link request}, with the `method` always set to `GET`. + */ + function get( + options: RequestOptions | string | URL, + callback?: (res: http.IncomingMessage) => void, + ): http.ClientRequest; + function get( + url: string | URL, + options: RequestOptions, + callback?: (res: http.IncomingMessage) => void, + ): http.ClientRequest; + let globalAgent: Agent; +} +declare module "node:https" { + export * from "https"; +} diff --git a/node_modules/@types/node/ts4.8/index.d.ts b/node_modules/@types/node/ts4.8/index.d.ts new file mode 100644 index 00000000..7c8b38c6 --- /dev/null +++ b/node_modules/@types/node/ts4.8/index.d.ts @@ -0,0 +1,88 @@ +/** + * License for programmatically and manually incorporated + * documentation aka. `JSDoc` from https://github.com/nodejs/node/tree/master/doc + * + * Copyright Node.js contributors. All rights reserved. + * 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. + */ + +// NOTE: These definitions support NodeJS and TypeScript 4.8 and earlier. + +// Reference required types from the default lib: +/// +/// +/// +/// + +// Base definitions for all NodeJS modules that are not specific to any version of TypeScript: +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// + +/// diff --git a/node_modules/@types/node/ts4.8/inspector.d.ts b/node_modules/@types/node/ts4.8/inspector.d.ts new file mode 100644 index 00000000..3927b816 --- /dev/null +++ b/node_modules/@types/node/ts4.8/inspector.d.ts @@ -0,0 +1,2747 @@ +// Type definitions for inspector + +// These definitions are auto-generated. +// Please see https://github.com/DefinitelyTyped/DefinitelyTyped/pull/19330 +// for more information. + + +/** + * The `node:inspector` module provides an API for interacting with the V8 + * inspector. + * + * It can be accessed using: + * + * ```js + * import * as inspector from 'node:inspector/promises'; + * ``` + * + * or + * + * ```js + * import * as inspector from 'node:inspector'; + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/inspector.js) + */ +declare module 'inspector' { + import EventEmitter = require('node:events'); + interface InspectorNotification { + method: string; + params: T; + } + namespace Schema { + /** + * Description of the protocol domain. + */ + interface Domain { + /** + * Domain name. + */ + name: string; + /** + * Domain version. + */ + version: string; + } + interface GetDomainsReturnType { + /** + * List of supported domains. + */ + domains: Domain[]; + } + } + namespace Runtime { + /** + * Unique script identifier. + */ + type ScriptId = string; + /** + * Unique object identifier. + */ + type RemoteObjectId = string; + /** + * Primitive value which cannot be JSON-stringified. + */ + type UnserializableValue = string; + /** + * Mirror object referencing original JavaScript object. + */ + interface RemoteObject { + /** + * Object type. + */ + type: string; + /** + * Object subtype hint. Specified for object type values only. + */ + subtype?: string | undefined; + /** + * Object class (constructor) name. Specified for object type values only. + */ + className?: string | undefined; + /** + * Remote object value in case of primitive values or JSON values (if it was requested). + */ + value?: any; + /** + * Primitive value which can not be JSON-stringified does not have value, but gets this property. + */ + unserializableValue?: UnserializableValue | undefined; + /** + * String representation of the object. + */ + description?: string | undefined; + /** + * Unique object identifier (for non-primitive values). + */ + objectId?: RemoteObjectId | undefined; + /** + * Preview containing abbreviated property values. Specified for object type values only. + * @experimental + */ + preview?: ObjectPreview | undefined; + /** + * @experimental + */ + customPreview?: CustomPreview | undefined; + } + /** + * @experimental + */ + interface CustomPreview { + header: string; + hasBody: boolean; + formatterObjectId: RemoteObjectId; + bindRemoteObjectFunctionId: RemoteObjectId; + configObjectId?: RemoteObjectId | undefined; + } + /** + * Object containing abbreviated remote object value. + * @experimental + */ + interface ObjectPreview { + /** + * Object type. + */ + type: string; + /** + * Object subtype hint. Specified for object type values only. + */ + subtype?: string | undefined; + /** + * String representation of the object. + */ + description?: string | undefined; + /** + * True iff some of the properties or entries of the original object did not fit. + */ + overflow: boolean; + /** + * List of the properties. + */ + properties: PropertyPreview[]; + /** + * List of the entries. Specified for map and set subtype values only. + */ + entries?: EntryPreview[] | undefined; + } + /** + * @experimental + */ + interface PropertyPreview { + /** + * Property name. + */ + name: string; + /** + * Object type. Accessor means that the property itself is an accessor property. + */ + type: string; + /** + * User-friendly property value string. + */ + value?: string | undefined; + /** + * Nested value preview. + */ + valuePreview?: ObjectPreview | undefined; + /** + * Object subtype hint. Specified for object type values only. + */ + subtype?: string | undefined; + } + /** + * @experimental + */ + interface EntryPreview { + /** + * Preview of the key. Specified for map-like collection entries. + */ + key?: ObjectPreview | undefined; + /** + * Preview of the value. + */ + value: ObjectPreview; + } + /** + * Object property descriptor. + */ + interface PropertyDescriptor { + /** + * Property name or symbol description. + */ + name: string; + /** + * The value associated with the property. + */ + value?: RemoteObject | undefined; + /** + * True if the value associated with the property may be changed (data descriptors only). + */ + writable?: boolean | undefined; + /** + * A function which serves as a getter for the property, or undefined if there is no getter (accessor descriptors only). + */ + get?: RemoteObject | undefined; + /** + * A function which serves as a setter for the property, or undefined if there is no setter (accessor descriptors only). + */ + set?: RemoteObject | undefined; + /** + * True if the type of this property descriptor may be changed and if the property may be deleted from the corresponding object. + */ + configurable: boolean; + /** + * True if this property shows up during enumeration of the properties on the corresponding object. + */ + enumerable: boolean; + /** + * True if the result was thrown during the evaluation. + */ + wasThrown?: boolean | undefined; + /** + * True if the property is owned for the object. + */ + isOwn?: boolean | undefined; + /** + * Property symbol object, if the property is of the symbol type. + */ + symbol?: RemoteObject | undefined; + } + /** + * Object internal property descriptor. This property isn't normally visible in JavaScript code. + */ + interface InternalPropertyDescriptor { + /** + * Conventional property name. + */ + name: string; + /** + * The value associated with the property. + */ + value?: RemoteObject | undefined; + } + /** + * Represents function call argument. Either remote object id objectId, primitive value, unserializable primitive value or neither of (for undefined) them should be specified. + */ + interface CallArgument { + /** + * Primitive value or serializable javascript object. + */ + value?: any; + /** + * Primitive value which can not be JSON-stringified. + */ + unserializableValue?: UnserializableValue | undefined; + /** + * Remote object handle. + */ + objectId?: RemoteObjectId | undefined; + } + /** + * Id of an execution context. + */ + type ExecutionContextId = number; + /** + * Description of an isolated world. + */ + interface ExecutionContextDescription { + /** + * Unique id of the execution context. It can be used to specify in which execution context script evaluation should be performed. + */ + id: ExecutionContextId; + /** + * Execution context origin. + */ + origin: string; + /** + * Human readable name describing given context. + */ + name: string; + /** + * Embedder-specific auxiliary data. + */ + auxData?: {} | undefined; + } + /** + * Detailed information about exception (or error) that was thrown during script compilation or execution. + */ + interface ExceptionDetails { + /** + * Exception id. + */ + exceptionId: number; + /** + * Exception text, which should be used together with exception object when available. + */ + text: string; + /** + * Line number of the exception location (0-based). + */ + lineNumber: number; + /** + * Column number of the exception location (0-based). + */ + columnNumber: number; + /** + * Script ID of the exception location. + */ + scriptId?: ScriptId | undefined; + /** + * URL of the exception location, to be used when the script was not reported. + */ + url?: string | undefined; + /** + * JavaScript stack trace if available. + */ + stackTrace?: StackTrace | undefined; + /** + * Exception object if available. + */ + exception?: RemoteObject | undefined; + /** + * Identifier of the context where exception happened. + */ + executionContextId?: ExecutionContextId | undefined; + } + /** + * Number of milliseconds since epoch. + */ + type Timestamp = number; + /** + * Stack entry for runtime errors and assertions. + */ + interface CallFrame { + /** + * JavaScript function name. + */ + functionName: string; + /** + * JavaScript script id. + */ + scriptId: ScriptId; + /** + * JavaScript script name or url. + */ + url: string; + /** + * JavaScript script line number (0-based). + */ + lineNumber: number; + /** + * JavaScript script column number (0-based). + */ + columnNumber: number; + } + /** + * Call frames for assertions or error messages. + */ + interface StackTrace { + /** + * String label of this stack trace. For async traces this may be a name of the function that initiated the async call. + */ + description?: string | undefined; + /** + * JavaScript function name. + */ + callFrames: CallFrame[]; + /** + * Asynchronous JavaScript stack trace that preceded this stack, if available. + */ + parent?: StackTrace | undefined; + /** + * Asynchronous JavaScript stack trace that preceded this stack, if available. + * @experimental + */ + parentId?: StackTraceId | undefined; + } + /** + * Unique identifier of current debugger. + * @experimental + */ + type UniqueDebuggerId = string; + /** + * If debuggerId is set stack trace comes from another debugger and can be resolved there. This allows to track cross-debugger calls. See Runtime.StackTrace and Debugger.paused for usages. + * @experimental + */ + interface StackTraceId { + id: string; + debuggerId?: UniqueDebuggerId | undefined; + } + interface EvaluateParameterType { + /** + * Expression to evaluate. + */ + expression: string; + /** + * Symbolic group name that can be used to release multiple objects. + */ + objectGroup?: string | undefined; + /** + * Determines whether Command Line API should be available during the evaluation. + */ + includeCommandLineAPI?: boolean | undefined; + /** + * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. + */ + silent?: boolean | undefined; + /** + * Specifies in which execution context to perform evaluation. If the parameter is omitted the evaluation will be performed in the context of the inspected page. + */ + contextId?: ExecutionContextId | undefined; + /** + * Whether the result is expected to be a JSON object that should be sent by value. + */ + returnByValue?: boolean | undefined; + /** + * Whether preview should be generated for the result. + * @experimental + */ + generatePreview?: boolean | undefined; + /** + * Whether execution should be treated as initiated by user in the UI. + */ + userGesture?: boolean | undefined; + /** + * Whether execution should await for resulting value and return once awaited promise is resolved. + */ + awaitPromise?: boolean | undefined; + } + interface AwaitPromiseParameterType { + /** + * Identifier of the promise. + */ + promiseObjectId: RemoteObjectId; + /** + * Whether the result is expected to be a JSON object that should be sent by value. + */ + returnByValue?: boolean | undefined; + /** + * Whether preview should be generated for the result. + */ + generatePreview?: boolean | undefined; + } + interface CallFunctionOnParameterType { + /** + * Declaration of the function to call. + */ + functionDeclaration: string; + /** + * Identifier of the object to call function on. Either objectId or executionContextId should be specified. + */ + objectId?: RemoteObjectId | undefined; + /** + * Call arguments. All call arguments must belong to the same JavaScript world as the target object. + */ + arguments?: CallArgument[] | undefined; + /** + * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. + */ + silent?: boolean | undefined; + /** + * Whether the result is expected to be a JSON object which should be sent by value. + */ + returnByValue?: boolean | undefined; + /** + * Whether preview should be generated for the result. + * @experimental + */ + generatePreview?: boolean | undefined; + /** + * Whether execution should be treated as initiated by user in the UI. + */ + userGesture?: boolean | undefined; + /** + * Whether execution should await for resulting value and return once awaited promise is resolved. + */ + awaitPromise?: boolean | undefined; + /** + * Specifies execution context which global object will be used to call function on. Either executionContextId or objectId should be specified. + */ + executionContextId?: ExecutionContextId | undefined; + /** + * Symbolic group name that can be used to release multiple objects. If objectGroup is not specified and objectId is, objectGroup will be inherited from object. + */ + objectGroup?: string | undefined; + } + interface GetPropertiesParameterType { + /** + * Identifier of the object to return properties for. + */ + objectId: RemoteObjectId; + /** + * If true, returns properties belonging only to the element itself, not to its prototype chain. + */ + ownProperties?: boolean | undefined; + /** + * If true, returns accessor properties (with getter/setter) only; internal properties are not returned either. + * @experimental + */ + accessorPropertiesOnly?: boolean | undefined; + /** + * Whether preview should be generated for the results. + * @experimental + */ + generatePreview?: boolean | undefined; + } + interface ReleaseObjectParameterType { + /** + * Identifier of the object to release. + */ + objectId: RemoteObjectId; + } + interface ReleaseObjectGroupParameterType { + /** + * Symbolic object group name. + */ + objectGroup: string; + } + interface SetCustomObjectFormatterEnabledParameterType { + enabled: boolean; + } + interface CompileScriptParameterType { + /** + * Expression to compile. + */ + expression: string; + /** + * Source url to be set for the script. + */ + sourceURL: string; + /** + * Specifies whether the compiled script should be persisted. + */ + persistScript: boolean; + /** + * Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page. + */ + executionContextId?: ExecutionContextId | undefined; + } + interface RunScriptParameterType { + /** + * Id of the script to run. + */ + scriptId: ScriptId; + /** + * Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page. + */ + executionContextId?: ExecutionContextId | undefined; + /** + * Symbolic group name that can be used to release multiple objects. + */ + objectGroup?: string | undefined; + /** + * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. + */ + silent?: boolean | undefined; + /** + * Determines whether Command Line API should be available during the evaluation. + */ + includeCommandLineAPI?: boolean | undefined; + /** + * Whether the result is expected to be a JSON object which should be sent by value. + */ + returnByValue?: boolean | undefined; + /** + * Whether preview should be generated for the result. + */ + generatePreview?: boolean | undefined; + /** + * Whether execution should await for resulting value and return once awaited promise is resolved. + */ + awaitPromise?: boolean | undefined; + } + interface QueryObjectsParameterType { + /** + * Identifier of the prototype to return objects for. + */ + prototypeObjectId: RemoteObjectId; + } + interface GlobalLexicalScopeNamesParameterType { + /** + * Specifies in which execution context to lookup global scope variables. + */ + executionContextId?: ExecutionContextId | undefined; + } + interface EvaluateReturnType { + /** + * Evaluation result. + */ + result: RemoteObject; + /** + * Exception details. + */ + exceptionDetails?: ExceptionDetails | undefined; + } + interface AwaitPromiseReturnType { + /** + * Promise result. Will contain rejected value if promise was rejected. + */ + result: RemoteObject; + /** + * Exception details if stack strace is available. + */ + exceptionDetails?: ExceptionDetails | undefined; + } + interface CallFunctionOnReturnType { + /** + * Call result. + */ + result: RemoteObject; + /** + * Exception details. + */ + exceptionDetails?: ExceptionDetails | undefined; + } + interface GetPropertiesReturnType { + /** + * Object properties. + */ + result: PropertyDescriptor[]; + /** + * Internal object properties (only of the element itself). + */ + internalProperties?: InternalPropertyDescriptor[] | undefined; + /** + * Exception details. + */ + exceptionDetails?: ExceptionDetails | undefined; + } + interface CompileScriptReturnType { + /** + * Id of the script. + */ + scriptId?: ScriptId | undefined; + /** + * Exception details. + */ + exceptionDetails?: ExceptionDetails | undefined; + } + interface RunScriptReturnType { + /** + * Run result. + */ + result: RemoteObject; + /** + * Exception details. + */ + exceptionDetails?: ExceptionDetails | undefined; + } + interface QueryObjectsReturnType { + /** + * Array with objects. + */ + objects: RemoteObject; + } + interface GlobalLexicalScopeNamesReturnType { + names: string[]; + } + interface ExecutionContextCreatedEventDataType { + /** + * A newly created execution context. + */ + context: ExecutionContextDescription; + } + interface ExecutionContextDestroyedEventDataType { + /** + * Id of the destroyed context + */ + executionContextId: ExecutionContextId; + } + interface ExceptionThrownEventDataType { + /** + * Timestamp of the exception. + */ + timestamp: Timestamp; + exceptionDetails: ExceptionDetails; + } + interface ExceptionRevokedEventDataType { + /** + * Reason describing why exception was revoked. + */ + reason: string; + /** + * The id of revoked exception, as reported in exceptionThrown. + */ + exceptionId: number; + } + interface ConsoleAPICalledEventDataType { + /** + * Type of the call. + */ + type: string; + /** + * Call arguments. + */ + args: RemoteObject[]; + /** + * Identifier of the context where the call was made. + */ + executionContextId: ExecutionContextId; + /** + * Call timestamp. + */ + timestamp: Timestamp; + /** + * Stack trace captured when the call was made. + */ + stackTrace?: StackTrace | undefined; + /** + * Console context descriptor for calls on non-default console context (not console.*): 'anonymous#unique-logger-id' for call on unnamed context, 'name#unique-logger-id' for call on named context. + * @experimental + */ + context?: string | undefined; + } + interface InspectRequestedEventDataType { + object: RemoteObject; + hints: {}; + } + } + namespace Debugger { + /** + * Breakpoint identifier. + */ + type BreakpointId = string; + /** + * Call frame identifier. + */ + type CallFrameId = string; + /** + * Location in the source code. + */ + interface Location { + /** + * Script identifier as reported in the Debugger.scriptParsed. + */ + scriptId: Runtime.ScriptId; + /** + * Line number in the script (0-based). + */ + lineNumber: number; + /** + * Column number in the script (0-based). + */ + columnNumber?: number | undefined; + } + /** + * Location in the source code. + * @experimental + */ + interface ScriptPosition { + lineNumber: number; + columnNumber: number; + } + /** + * JavaScript call frame. Array of call frames form the call stack. + */ + interface CallFrame { + /** + * Call frame identifier. This identifier is only valid while the virtual machine is paused. + */ + callFrameId: CallFrameId; + /** + * Name of the JavaScript function called on this call frame. + */ + functionName: string; + /** + * Location in the source code. + */ + functionLocation?: Location | undefined; + /** + * Location in the source code. + */ + location: Location; + /** + * JavaScript script name or url. + */ + url: string; + /** + * Scope chain for this call frame. + */ + scopeChain: Scope[]; + /** + * this object for this call frame. + */ + this: Runtime.RemoteObject; + /** + * The value being returned, if the function is at return point. + */ + returnValue?: Runtime.RemoteObject | undefined; + } + /** + * Scope description. + */ + interface Scope { + /** + * Scope type. + */ + type: string; + /** + * Object representing the scope. For global and with scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties. + */ + object: Runtime.RemoteObject; + name?: string | undefined; + /** + * Location in the source code where scope starts + */ + startLocation?: Location | undefined; + /** + * Location in the source code where scope ends + */ + endLocation?: Location | undefined; + } + /** + * Search match for resource. + */ + interface SearchMatch { + /** + * Line number in resource content. + */ + lineNumber: number; + /** + * Line with match content. + */ + lineContent: string; + } + interface BreakLocation { + /** + * Script identifier as reported in the Debugger.scriptParsed. + */ + scriptId: Runtime.ScriptId; + /** + * Line number in the script (0-based). + */ + lineNumber: number; + /** + * Column number in the script (0-based). + */ + columnNumber?: number | undefined; + type?: string | undefined; + } + interface SetBreakpointsActiveParameterType { + /** + * New value for breakpoints active state. + */ + active: boolean; + } + interface SetSkipAllPausesParameterType { + /** + * New value for skip pauses state. + */ + skip: boolean; + } + interface SetBreakpointByUrlParameterType { + /** + * Line number to set breakpoint at. + */ + lineNumber: number; + /** + * URL of the resources to set breakpoint on. + */ + url?: string | undefined; + /** + * Regex pattern for the URLs of the resources to set breakpoints on. Either url or urlRegex must be specified. + */ + urlRegex?: string | undefined; + /** + * Script hash of the resources to set breakpoint on. + */ + scriptHash?: string | undefined; + /** + * Offset in the line to set breakpoint at. + */ + columnNumber?: number | undefined; + /** + * Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true. + */ + condition?: string | undefined; + } + interface SetBreakpointParameterType { + /** + * Location to set breakpoint in. + */ + location: Location; + /** + * Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true. + */ + condition?: string | undefined; + } + interface RemoveBreakpointParameterType { + breakpointId: BreakpointId; + } + interface GetPossibleBreakpointsParameterType { + /** + * Start of range to search possible breakpoint locations in. + */ + start: Location; + /** + * End of range to search possible breakpoint locations in (excluding). When not specified, end of scripts is used as end of range. + */ + end?: Location | undefined; + /** + * Only consider locations which are in the same (non-nested) function as start. + */ + restrictToFunction?: boolean | undefined; + } + interface ContinueToLocationParameterType { + /** + * Location to continue to. + */ + location: Location; + targetCallFrames?: string | undefined; + } + interface PauseOnAsyncCallParameterType { + /** + * Debugger will pause when async call with given stack trace is started. + */ + parentStackTraceId: Runtime.StackTraceId; + } + interface StepIntoParameterType { + /** + * Debugger will issue additional Debugger.paused notification if any async task is scheduled before next pause. + * @experimental + */ + breakOnAsyncCall?: boolean | undefined; + } + interface GetStackTraceParameterType { + stackTraceId: Runtime.StackTraceId; + } + interface SearchInContentParameterType { + /** + * Id of the script to search in. + */ + scriptId: Runtime.ScriptId; + /** + * String to search for. + */ + query: string; + /** + * If true, search is case sensitive. + */ + caseSensitive?: boolean | undefined; + /** + * If true, treats string parameter as regex. + */ + isRegex?: boolean | undefined; + } + interface SetScriptSourceParameterType { + /** + * Id of the script to edit. + */ + scriptId: Runtime.ScriptId; + /** + * New content of the script. + */ + scriptSource: string; + /** + * If true the change will not actually be applied. Dry run may be used to get result description without actually modifying the code. + */ + dryRun?: boolean | undefined; + } + interface RestartFrameParameterType { + /** + * Call frame identifier to evaluate on. + */ + callFrameId: CallFrameId; + } + interface GetScriptSourceParameterType { + /** + * Id of the script to get source for. + */ + scriptId: Runtime.ScriptId; + } + interface SetPauseOnExceptionsParameterType { + /** + * Pause on exceptions mode. + */ + state: string; + } + interface EvaluateOnCallFrameParameterType { + /** + * Call frame identifier to evaluate on. + */ + callFrameId: CallFrameId; + /** + * Expression to evaluate. + */ + expression: string; + /** + * String object group name to put result into (allows rapid releasing resulting object handles using releaseObjectGroup). + */ + objectGroup?: string | undefined; + /** + * Specifies whether command line API should be available to the evaluated expression, defaults to false. + */ + includeCommandLineAPI?: boolean | undefined; + /** + * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state. + */ + silent?: boolean | undefined; + /** + * Whether the result is expected to be a JSON object that should be sent by value. + */ + returnByValue?: boolean | undefined; + /** + * Whether preview should be generated for the result. + * @experimental + */ + generatePreview?: boolean | undefined; + /** + * Whether to throw an exception if side effect cannot be ruled out during evaluation. + */ + throwOnSideEffect?: boolean | undefined; + } + interface SetVariableValueParameterType { + /** + * 0-based number of scope as was listed in scope chain. Only 'local', 'closure' and 'catch' scope types are allowed. Other scopes could be manipulated manually. + */ + scopeNumber: number; + /** + * Variable name. + */ + variableName: string; + /** + * New variable value. + */ + newValue: Runtime.CallArgument; + /** + * Id of callframe that holds variable. + */ + callFrameId: CallFrameId; + } + interface SetReturnValueParameterType { + /** + * New return value. + */ + newValue: Runtime.CallArgument; + } + interface SetAsyncCallStackDepthParameterType { + /** + * Maximum depth of async call stacks. Setting to 0 will effectively disable collecting async call stacks (default). + */ + maxDepth: number; + } + interface SetBlackboxPatternsParameterType { + /** + * Array of regexps that will be used to check script url for blackbox state. + */ + patterns: string[]; + } + interface SetBlackboxedRangesParameterType { + /** + * Id of the script. + */ + scriptId: Runtime.ScriptId; + positions: ScriptPosition[]; + } + interface EnableReturnType { + /** + * Unique identifier of the debugger. + * @experimental + */ + debuggerId: Runtime.UniqueDebuggerId; + } + interface SetBreakpointByUrlReturnType { + /** + * Id of the created breakpoint for further reference. + */ + breakpointId: BreakpointId; + /** + * List of the locations this breakpoint resolved into upon addition. + */ + locations: Location[]; + } + interface SetBreakpointReturnType { + /** + * Id of the created breakpoint for further reference. + */ + breakpointId: BreakpointId; + /** + * Location this breakpoint resolved into. + */ + actualLocation: Location; + } + interface GetPossibleBreakpointsReturnType { + /** + * List of the possible breakpoint locations. + */ + locations: BreakLocation[]; + } + interface GetStackTraceReturnType { + stackTrace: Runtime.StackTrace; + } + interface SearchInContentReturnType { + /** + * List of search matches. + */ + result: SearchMatch[]; + } + interface SetScriptSourceReturnType { + /** + * New stack trace in case editing has happened while VM was stopped. + */ + callFrames?: CallFrame[] | undefined; + /** + * Whether current call stack was modified after applying the changes. + */ + stackChanged?: boolean | undefined; + /** + * Async stack trace, if any. + */ + asyncStackTrace?: Runtime.StackTrace | undefined; + /** + * Async stack trace, if any. + * @experimental + */ + asyncStackTraceId?: Runtime.StackTraceId | undefined; + /** + * Exception details if any. + */ + exceptionDetails?: Runtime.ExceptionDetails | undefined; + } + interface RestartFrameReturnType { + /** + * New stack trace. + */ + callFrames: CallFrame[]; + /** + * Async stack trace, if any. + */ + asyncStackTrace?: Runtime.StackTrace | undefined; + /** + * Async stack trace, if any. + * @experimental + */ + asyncStackTraceId?: Runtime.StackTraceId | undefined; + } + interface GetScriptSourceReturnType { + /** + * Script source. + */ + scriptSource: string; + } + interface EvaluateOnCallFrameReturnType { + /** + * Object wrapper for the evaluation result. + */ + result: Runtime.RemoteObject; + /** + * Exception details. + */ + exceptionDetails?: Runtime.ExceptionDetails | undefined; + } + interface ScriptParsedEventDataType { + /** + * Identifier of the script parsed. + */ + scriptId: Runtime.ScriptId; + /** + * URL or name of the script parsed (if any). + */ + url: string; + /** + * Line offset of the script within the resource with given URL (for script tags). + */ + startLine: number; + /** + * Column offset of the script within the resource with given URL. + */ + startColumn: number; + /** + * Last line of the script. + */ + endLine: number; + /** + * Length of the last line of the script. + */ + endColumn: number; + /** + * Specifies script creation context. + */ + executionContextId: Runtime.ExecutionContextId; + /** + * Content hash of the script. + */ + hash: string; + /** + * Embedder-specific auxiliary data. + */ + executionContextAuxData?: {} | undefined; + /** + * True, if this script is generated as a result of the live edit operation. + * @experimental + */ + isLiveEdit?: boolean | undefined; + /** + * URL of source map associated with script (if any). + */ + sourceMapURL?: string | undefined; + /** + * True, if this script has sourceURL. + */ + hasSourceURL?: boolean | undefined; + /** + * True, if this script is ES6 module. + */ + isModule?: boolean | undefined; + /** + * This script length. + */ + length?: number | undefined; + /** + * JavaScript top stack frame of where the script parsed event was triggered if available. + * @experimental + */ + stackTrace?: Runtime.StackTrace | undefined; + } + interface ScriptFailedToParseEventDataType { + /** + * Identifier of the script parsed. + */ + scriptId: Runtime.ScriptId; + /** + * URL or name of the script parsed (if any). + */ + url: string; + /** + * Line offset of the script within the resource with given URL (for script tags). + */ + startLine: number; + /** + * Column offset of the script within the resource with given URL. + */ + startColumn: number; + /** + * Last line of the script. + */ + endLine: number; + /** + * Length of the last line of the script. + */ + endColumn: number; + /** + * Specifies script creation context. + */ + executionContextId: Runtime.ExecutionContextId; + /** + * Content hash of the script. + */ + hash: string; + /** + * Embedder-specific auxiliary data. + */ + executionContextAuxData?: {} | undefined; + /** + * URL of source map associated with script (if any). + */ + sourceMapURL?: string | undefined; + /** + * True, if this script has sourceURL. + */ + hasSourceURL?: boolean | undefined; + /** + * True, if this script is ES6 module. + */ + isModule?: boolean | undefined; + /** + * This script length. + */ + length?: number | undefined; + /** + * JavaScript top stack frame of where the script parsed event was triggered if available. + * @experimental + */ + stackTrace?: Runtime.StackTrace | undefined; + } + interface BreakpointResolvedEventDataType { + /** + * Breakpoint unique identifier. + */ + breakpointId: BreakpointId; + /** + * Actual breakpoint location. + */ + location: Location; + } + interface PausedEventDataType { + /** + * Call stack the virtual machine stopped on. + */ + callFrames: CallFrame[]; + /** + * Pause reason. + */ + reason: string; + /** + * Object containing break-specific auxiliary properties. + */ + data?: {} | undefined; + /** + * Hit breakpoints IDs + */ + hitBreakpoints?: string[] | undefined; + /** + * Async stack trace, if any. + */ + asyncStackTrace?: Runtime.StackTrace | undefined; + /** + * Async stack trace, if any. + * @experimental + */ + asyncStackTraceId?: Runtime.StackTraceId | undefined; + /** + * Just scheduled async call will have this stack trace as parent stack during async execution. This field is available only after Debugger.stepInto call with breakOnAsynCall flag. + * @experimental + */ + asyncCallStackTraceId?: Runtime.StackTraceId | undefined; + } + } + namespace Console { + /** + * Console message. + */ + interface ConsoleMessage { + /** + * Message source. + */ + source: string; + /** + * Message severity. + */ + level: string; + /** + * Message text. + */ + text: string; + /** + * URL of the message origin. + */ + url?: string | undefined; + /** + * Line number in the resource that generated this message (1-based). + */ + line?: number | undefined; + /** + * Column number in the resource that generated this message (1-based). + */ + column?: number | undefined; + } + interface MessageAddedEventDataType { + /** + * Console message that has been added. + */ + message: ConsoleMessage; + } + } + namespace Profiler { + /** + * Profile node. Holds callsite information, execution statistics and child nodes. + */ + interface ProfileNode { + /** + * Unique id of the node. + */ + id: number; + /** + * Function location. + */ + callFrame: Runtime.CallFrame; + /** + * Number of samples where this node was on top of the call stack. + */ + hitCount?: number | undefined; + /** + * Child node ids. + */ + children?: number[] | undefined; + /** + * The reason of being not optimized. The function may be deoptimized or marked as don't optimize. + */ + deoptReason?: string | undefined; + /** + * An array of source position ticks. + */ + positionTicks?: PositionTickInfo[] | undefined; + } + /** + * Profile. + */ + interface Profile { + /** + * The list of profile nodes. First item is the root node. + */ + nodes: ProfileNode[]; + /** + * Profiling start timestamp in microseconds. + */ + startTime: number; + /** + * Profiling end timestamp in microseconds. + */ + endTime: number; + /** + * Ids of samples top nodes. + */ + samples?: number[] | undefined; + /** + * Time intervals between adjacent samples in microseconds. The first delta is relative to the profile startTime. + */ + timeDeltas?: number[] | undefined; + } + /** + * Specifies a number of samples attributed to a certain source position. + */ + interface PositionTickInfo { + /** + * Source line number (1-based). + */ + line: number; + /** + * Number of samples attributed to the source line. + */ + ticks: number; + } + /** + * Coverage data for a source range. + */ + interface CoverageRange { + /** + * JavaScript script source offset for the range start. + */ + startOffset: number; + /** + * JavaScript script source offset for the range end. + */ + endOffset: number; + /** + * Collected execution count of the source range. + */ + count: number; + } + /** + * Coverage data for a JavaScript function. + */ + interface FunctionCoverage { + /** + * JavaScript function name. + */ + functionName: string; + /** + * Source ranges inside the function with coverage data. + */ + ranges: CoverageRange[]; + /** + * Whether coverage data for this function has block granularity. + */ + isBlockCoverage: boolean; + } + /** + * Coverage data for a JavaScript script. + */ + interface ScriptCoverage { + /** + * JavaScript script id. + */ + scriptId: Runtime.ScriptId; + /** + * JavaScript script name or url. + */ + url: string; + /** + * Functions contained in the script that has coverage data. + */ + functions: FunctionCoverage[]; + } + /** + * Describes a type collected during runtime. + * @experimental + */ + interface TypeObject { + /** + * Name of a type collected with type profiling. + */ + name: string; + } + /** + * Source offset and types for a parameter or return value. + * @experimental + */ + interface TypeProfileEntry { + /** + * Source offset of the parameter or end of function for return values. + */ + offset: number; + /** + * The types for this parameter or return value. + */ + types: TypeObject[]; + } + /** + * Type profile data collected during runtime for a JavaScript script. + * @experimental + */ + interface ScriptTypeProfile { + /** + * JavaScript script id. + */ + scriptId: Runtime.ScriptId; + /** + * JavaScript script name or url. + */ + url: string; + /** + * Type profile entries for parameters and return values of the functions in the script. + */ + entries: TypeProfileEntry[]; + } + interface SetSamplingIntervalParameterType { + /** + * New sampling interval in microseconds. + */ + interval: number; + } + interface StartPreciseCoverageParameterType { + /** + * Collect accurate call counts beyond simple 'covered' or 'not covered'. + */ + callCount?: boolean | undefined; + /** + * Collect block-based coverage. + */ + detailed?: boolean | undefined; + } + interface StopReturnType { + /** + * Recorded profile. + */ + profile: Profile; + } + interface TakePreciseCoverageReturnType { + /** + * Coverage data for the current isolate. + */ + result: ScriptCoverage[]; + } + interface GetBestEffortCoverageReturnType { + /** + * Coverage data for the current isolate. + */ + result: ScriptCoverage[]; + } + interface TakeTypeProfileReturnType { + /** + * Type profile for all scripts since startTypeProfile() was turned on. + */ + result: ScriptTypeProfile[]; + } + interface ConsoleProfileStartedEventDataType { + id: string; + /** + * Location of console.profile(). + */ + location: Debugger.Location; + /** + * Profile title passed as an argument to console.profile(). + */ + title?: string | undefined; + } + interface ConsoleProfileFinishedEventDataType { + id: string; + /** + * Location of console.profileEnd(). + */ + location: Debugger.Location; + profile: Profile; + /** + * Profile title passed as an argument to console.profile(). + */ + title?: string | undefined; + } + } + namespace HeapProfiler { + /** + * Heap snapshot object id. + */ + type HeapSnapshotObjectId = string; + /** + * Sampling Heap Profile node. Holds callsite information, allocation statistics and child nodes. + */ + interface SamplingHeapProfileNode { + /** + * Function location. + */ + callFrame: Runtime.CallFrame; + /** + * Allocations size in bytes for the node excluding children. + */ + selfSize: number; + /** + * Child nodes. + */ + children: SamplingHeapProfileNode[]; + } + /** + * Profile. + */ + interface SamplingHeapProfile { + head: SamplingHeapProfileNode; + } + interface StartTrackingHeapObjectsParameterType { + trackAllocations?: boolean | undefined; + } + interface StopTrackingHeapObjectsParameterType { + /** + * If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken when the tracking is stopped. + */ + reportProgress?: boolean | undefined; + } + interface TakeHeapSnapshotParameterType { + /** + * If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken. + */ + reportProgress?: boolean | undefined; + } + interface GetObjectByHeapObjectIdParameterType { + objectId: HeapSnapshotObjectId; + /** + * Symbolic group name that can be used to release multiple objects. + */ + objectGroup?: string | undefined; + } + interface AddInspectedHeapObjectParameterType { + /** + * Heap snapshot object id to be accessible by means of $x command line API. + */ + heapObjectId: HeapSnapshotObjectId; + } + interface GetHeapObjectIdParameterType { + /** + * Identifier of the object to get heap object id for. + */ + objectId: Runtime.RemoteObjectId; + } + interface StartSamplingParameterType { + /** + * Average sample interval in bytes. Poisson distribution is used for the intervals. The default value is 32768 bytes. + */ + samplingInterval?: number | undefined; + } + interface GetObjectByHeapObjectIdReturnType { + /** + * Evaluation result. + */ + result: Runtime.RemoteObject; + } + interface GetHeapObjectIdReturnType { + /** + * Id of the heap snapshot object corresponding to the passed remote object id. + */ + heapSnapshotObjectId: HeapSnapshotObjectId; + } + interface StopSamplingReturnType { + /** + * Recorded sampling heap profile. + */ + profile: SamplingHeapProfile; + } + interface GetSamplingProfileReturnType { + /** + * Return the sampling profile being collected. + */ + profile: SamplingHeapProfile; + } + interface AddHeapSnapshotChunkEventDataType { + chunk: string; + } + interface ReportHeapSnapshotProgressEventDataType { + done: number; + total: number; + finished?: boolean | undefined; + } + interface LastSeenObjectIdEventDataType { + lastSeenObjectId: number; + timestamp: number; + } + interface HeapStatsUpdateEventDataType { + /** + * An array of triplets. Each triplet describes a fragment. The first integer is the fragment index, the second integer is a total count of objects for the fragment, the third integer is a total size of the objects for the fragment. + */ + statsUpdate: number[]; + } + } + namespace NodeTracing { + interface TraceConfig { + /** + * Controls how the trace buffer stores data. + */ + recordMode?: string | undefined; + /** + * Included category filters. + */ + includedCategories: string[]; + } + interface StartParameterType { + traceConfig: TraceConfig; + } + interface GetCategoriesReturnType { + /** + * A list of supported tracing categories. + */ + categories: string[]; + } + interface DataCollectedEventDataType { + value: Array<{}>; + } + } + namespace NodeWorker { + type WorkerID = string; + /** + * Unique identifier of attached debugging session. + */ + type SessionID = string; + interface WorkerInfo { + workerId: WorkerID; + type: string; + title: string; + url: string; + } + interface SendMessageToWorkerParameterType { + message: string; + /** + * Identifier of the session. + */ + sessionId: SessionID; + } + interface EnableParameterType { + /** + * Whether to new workers should be paused until the frontend sends `Runtime.runIfWaitingForDebugger` + * message to run them. + */ + waitForDebuggerOnStart: boolean; + } + interface DetachParameterType { + sessionId: SessionID; + } + interface AttachedToWorkerEventDataType { + /** + * Identifier assigned to the session used to send/receive messages. + */ + sessionId: SessionID; + workerInfo: WorkerInfo; + waitingForDebugger: boolean; + } + interface DetachedFromWorkerEventDataType { + /** + * Detached session identifier. + */ + sessionId: SessionID; + } + interface ReceivedMessageFromWorkerEventDataType { + /** + * Identifier of a session which sends a message. + */ + sessionId: SessionID; + message: string; + } + } + namespace NodeRuntime { + interface NotifyWhenWaitingForDisconnectParameterType { + enabled: boolean; + } + } + /** + * The `inspector.Session` is used for dispatching messages to the V8 inspector + * back-end and receiving message responses and notifications. + */ + class Session extends EventEmitter { + /** + * Create a new instance of the inspector.Session class. + * The inspector session needs to be connected through session.connect() before the messages can be dispatched to the inspector backend. + */ + constructor(); + /** + * Connects a session to the inspector back-end. + * @since v8.0.0 + */ + connect(): void; + /** + * Immediately close the session. All pending message callbacks will be called + * with an error. `session.connect()` will need to be called to be able to send + * messages again. Reconnected session will lose all inspector state, such as + * enabled agents or configured breakpoints. + * @since v8.0.0 + */ + disconnect(): void; + /** + * Posts a message to the inspector back-end. `callback` will be notified when + * a response is received. `callback` is a function that accepts two optional + * arguments: error and message-specific result. + * + * ```js + * session.post('Runtime.evaluate', { expression: '2 + 2' }, + * (error, { result }) => console.log(result)); + * // Output: { type: 'number', value: 4, description: '4' } + * ``` + * + * The latest version of the V8 inspector protocol is published on the [Chrome DevTools Protocol Viewer](https://chromedevtools.github.io/devtools-protocol/v8/). + * + * Node.js inspector supports all the Chrome DevTools Protocol domains declared + * by V8\. Chrome DevTools Protocol domain provides an interface for interacting + * with one of the runtime agents used to inspect the application state and listen + * to the run-time events. + * + * ## Example usage + * + * Apart from the debugger, various V8 Profilers are available through the DevTools + * protocol. + * @since v8.0.0 + */ + post(method: string, params?: {}, callback?: (err: Error | null, params?: {}) => void): void; + post(method: string, callback?: (err: Error | null, params?: {}) => void): void; + /** + * Returns supported domains. + */ + post(method: 'Schema.getDomains', callback?: (err: Error | null, params: Schema.GetDomainsReturnType) => void): void; + /** + * Evaluates expression on global object. + */ + post(method: 'Runtime.evaluate', params?: Runtime.EvaluateParameterType, callback?: (err: Error | null, params: Runtime.EvaluateReturnType) => void): void; + post(method: 'Runtime.evaluate', callback?: (err: Error | null, params: Runtime.EvaluateReturnType) => void): void; + /** + * Add handler to promise with given promise object id. + */ + post(method: 'Runtime.awaitPromise', params?: Runtime.AwaitPromiseParameterType, callback?: (err: Error | null, params: Runtime.AwaitPromiseReturnType) => void): void; + post(method: 'Runtime.awaitPromise', callback?: (err: Error | null, params: Runtime.AwaitPromiseReturnType) => void): void; + /** + * Calls function with given declaration on the given object. Object group of the result is inherited from the target object. + */ + post(method: 'Runtime.callFunctionOn', params?: Runtime.CallFunctionOnParameterType, callback?: (err: Error | null, params: Runtime.CallFunctionOnReturnType) => void): void; + post(method: 'Runtime.callFunctionOn', callback?: (err: Error | null, params: Runtime.CallFunctionOnReturnType) => void): void; + /** + * Returns properties of a given object. Object group of the result is inherited from the target object. + */ + post(method: 'Runtime.getProperties', params?: Runtime.GetPropertiesParameterType, callback?: (err: Error | null, params: Runtime.GetPropertiesReturnType) => void): void; + post(method: 'Runtime.getProperties', callback?: (err: Error | null, params: Runtime.GetPropertiesReturnType) => void): void; + /** + * Releases remote object with given id. + */ + post(method: 'Runtime.releaseObject', params?: Runtime.ReleaseObjectParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Runtime.releaseObject', callback?: (err: Error | null) => void): void; + /** + * Releases all remote objects that belong to a given group. + */ + post(method: 'Runtime.releaseObjectGroup', params?: Runtime.ReleaseObjectGroupParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Runtime.releaseObjectGroup', callback?: (err: Error | null) => void): void; + /** + * Tells inspected instance to run if it was waiting for debugger to attach. + */ + post(method: 'Runtime.runIfWaitingForDebugger', callback?: (err: Error | null) => void): void; + /** + * Enables reporting of execution contexts creation by means of executionContextCreated event. When the reporting gets enabled the event will be sent immediately for each existing execution context. + */ + post(method: 'Runtime.enable', callback?: (err: Error | null) => void): void; + /** + * Disables reporting of execution contexts creation. + */ + post(method: 'Runtime.disable', callback?: (err: Error | null) => void): void; + /** + * Discards collected exceptions and console API calls. + */ + post(method: 'Runtime.discardConsoleEntries', callback?: (err: Error | null) => void): void; + /** + * @experimental + */ + post(method: 'Runtime.setCustomObjectFormatterEnabled', params?: Runtime.SetCustomObjectFormatterEnabledParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Runtime.setCustomObjectFormatterEnabled', callback?: (err: Error | null) => void): void; + /** + * Compiles expression. + */ + post(method: 'Runtime.compileScript', params?: Runtime.CompileScriptParameterType, callback?: (err: Error | null, params: Runtime.CompileScriptReturnType) => void): void; + post(method: 'Runtime.compileScript', callback?: (err: Error | null, params: Runtime.CompileScriptReturnType) => void): void; + /** + * Runs script with given id in a given context. + */ + post(method: 'Runtime.runScript', params?: Runtime.RunScriptParameterType, callback?: (err: Error | null, params: Runtime.RunScriptReturnType) => void): void; + post(method: 'Runtime.runScript', callback?: (err: Error | null, params: Runtime.RunScriptReturnType) => void): void; + post(method: 'Runtime.queryObjects', params?: Runtime.QueryObjectsParameterType, callback?: (err: Error | null, params: Runtime.QueryObjectsReturnType) => void): void; + post(method: 'Runtime.queryObjects', callback?: (err: Error | null, params: Runtime.QueryObjectsReturnType) => void): void; + /** + * Returns all let, const and class variables from global scope. + */ + post( + method: 'Runtime.globalLexicalScopeNames', + params?: Runtime.GlobalLexicalScopeNamesParameterType, + callback?: (err: Error | null, params: Runtime.GlobalLexicalScopeNamesReturnType) => void + ): void; + post(method: 'Runtime.globalLexicalScopeNames', callback?: (err: Error | null, params: Runtime.GlobalLexicalScopeNamesReturnType) => void): void; + /** + * Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received. + */ + post(method: 'Debugger.enable', callback?: (err: Error | null, params: Debugger.EnableReturnType) => void): void; + /** + * Disables debugger for given page. + */ + post(method: 'Debugger.disable', callback?: (err: Error | null) => void): void; + /** + * Activates / deactivates all breakpoints on the page. + */ + post(method: 'Debugger.setBreakpointsActive', params?: Debugger.SetBreakpointsActiveParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.setBreakpointsActive', callback?: (err: Error | null) => void): void; + /** + * Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc). + */ + post(method: 'Debugger.setSkipAllPauses', params?: Debugger.SetSkipAllPausesParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.setSkipAllPauses', callback?: (err: Error | null) => void): void; + /** + * Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in locations property. Further matching script parsing will result in subsequent breakpointResolved events issued. This logical breakpoint will survive page reloads. + */ + post(method: 'Debugger.setBreakpointByUrl', params?: Debugger.SetBreakpointByUrlParameterType, callback?: (err: Error | null, params: Debugger.SetBreakpointByUrlReturnType) => void): void; + post(method: 'Debugger.setBreakpointByUrl', callback?: (err: Error | null, params: Debugger.SetBreakpointByUrlReturnType) => void): void; + /** + * Sets JavaScript breakpoint at a given location. + */ + post(method: 'Debugger.setBreakpoint', params?: Debugger.SetBreakpointParameterType, callback?: (err: Error | null, params: Debugger.SetBreakpointReturnType) => void): void; + post(method: 'Debugger.setBreakpoint', callback?: (err: Error | null, params: Debugger.SetBreakpointReturnType) => void): void; + /** + * Removes JavaScript breakpoint. + */ + post(method: 'Debugger.removeBreakpoint', params?: Debugger.RemoveBreakpointParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.removeBreakpoint', callback?: (err: Error | null) => void): void; + /** + * Returns possible locations for breakpoint. scriptId in start and end range locations should be the same. + */ + post( + method: 'Debugger.getPossibleBreakpoints', + params?: Debugger.GetPossibleBreakpointsParameterType, + callback?: (err: Error | null, params: Debugger.GetPossibleBreakpointsReturnType) => void + ): void; + post(method: 'Debugger.getPossibleBreakpoints', callback?: (err: Error | null, params: Debugger.GetPossibleBreakpointsReturnType) => void): void; + /** + * Continues execution until specific location is reached. + */ + post(method: 'Debugger.continueToLocation', params?: Debugger.ContinueToLocationParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.continueToLocation', callback?: (err: Error | null) => void): void; + /** + * @experimental + */ + post(method: 'Debugger.pauseOnAsyncCall', params?: Debugger.PauseOnAsyncCallParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.pauseOnAsyncCall', callback?: (err: Error | null) => void): void; + /** + * Steps over the statement. + */ + post(method: 'Debugger.stepOver', callback?: (err: Error | null) => void): void; + /** + * Steps into the function call. + */ + post(method: 'Debugger.stepInto', params?: Debugger.StepIntoParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.stepInto', callback?: (err: Error | null) => void): void; + /** + * Steps out of the function call. + */ + post(method: 'Debugger.stepOut', callback?: (err: Error | null) => void): void; + /** + * Stops on the next JavaScript statement. + */ + post(method: 'Debugger.pause', callback?: (err: Error | null) => void): void; + /** + * This method is deprecated - use Debugger.stepInto with breakOnAsyncCall and Debugger.pauseOnAsyncTask instead. Steps into next scheduled async task if any is scheduled before next pause. Returns success when async task is actually scheduled, returns error if no task were scheduled or another scheduleStepIntoAsync was called. + * @experimental + */ + post(method: 'Debugger.scheduleStepIntoAsync', callback?: (err: Error | null) => void): void; + /** + * Resumes JavaScript execution. + */ + post(method: 'Debugger.resume', callback?: (err: Error | null) => void): void; + /** + * Returns stack trace with given stackTraceId. + * @experimental + */ + post(method: 'Debugger.getStackTrace', params?: Debugger.GetStackTraceParameterType, callback?: (err: Error | null, params: Debugger.GetStackTraceReturnType) => void): void; + post(method: 'Debugger.getStackTrace', callback?: (err: Error | null, params: Debugger.GetStackTraceReturnType) => void): void; + /** + * Searches for given string in script content. + */ + post(method: 'Debugger.searchInContent', params?: Debugger.SearchInContentParameterType, callback?: (err: Error | null, params: Debugger.SearchInContentReturnType) => void): void; + post(method: 'Debugger.searchInContent', callback?: (err: Error | null, params: Debugger.SearchInContentReturnType) => void): void; + /** + * Edits JavaScript source live. + */ + post(method: 'Debugger.setScriptSource', params?: Debugger.SetScriptSourceParameterType, callback?: (err: Error | null, params: Debugger.SetScriptSourceReturnType) => void): void; + post(method: 'Debugger.setScriptSource', callback?: (err: Error | null, params: Debugger.SetScriptSourceReturnType) => void): void; + /** + * Restarts particular call frame from the beginning. + */ + post(method: 'Debugger.restartFrame', params?: Debugger.RestartFrameParameterType, callback?: (err: Error | null, params: Debugger.RestartFrameReturnType) => void): void; + post(method: 'Debugger.restartFrame', callback?: (err: Error | null, params: Debugger.RestartFrameReturnType) => void): void; + /** + * Returns source for the script with given id. + */ + post(method: 'Debugger.getScriptSource', params?: Debugger.GetScriptSourceParameterType, callback?: (err: Error | null, params: Debugger.GetScriptSourceReturnType) => void): void; + post(method: 'Debugger.getScriptSource', callback?: (err: Error | null, params: Debugger.GetScriptSourceReturnType) => void): void; + /** + * Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is none. + */ + post(method: 'Debugger.setPauseOnExceptions', params?: Debugger.SetPauseOnExceptionsParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.setPauseOnExceptions', callback?: (err: Error | null) => void): void; + /** + * Evaluates expression on a given call frame. + */ + post(method: 'Debugger.evaluateOnCallFrame', params?: Debugger.EvaluateOnCallFrameParameterType, callback?: (err: Error | null, params: Debugger.EvaluateOnCallFrameReturnType) => void): void; + post(method: 'Debugger.evaluateOnCallFrame', callback?: (err: Error | null, params: Debugger.EvaluateOnCallFrameReturnType) => void): void; + /** + * Changes value of variable in a callframe. Object-based scopes are not supported and must be mutated manually. + */ + post(method: 'Debugger.setVariableValue', params?: Debugger.SetVariableValueParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.setVariableValue', callback?: (err: Error | null) => void): void; + /** + * Changes return value in top frame. Available only at return break position. + * @experimental + */ + post(method: 'Debugger.setReturnValue', params?: Debugger.SetReturnValueParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.setReturnValue', callback?: (err: Error | null) => void): void; + /** + * Enables or disables async call stacks tracking. + */ + post(method: 'Debugger.setAsyncCallStackDepth', params?: Debugger.SetAsyncCallStackDepthParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.setAsyncCallStackDepth', callback?: (err: Error | null) => void): void; + /** + * Replace previous blackbox patterns with passed ones. Forces backend to skip stepping/pausing in scripts with url matching one of the patterns. VM will try to leave blackboxed script by performing 'step in' several times, finally resorting to 'step out' if unsuccessful. + * @experimental + */ + post(method: 'Debugger.setBlackboxPatterns', params?: Debugger.SetBlackboxPatternsParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.setBlackboxPatterns', callback?: (err: Error | null) => void): void; + /** + * Makes backend skip steps in the script in blackboxed ranges. VM will try leave blacklisted scripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful. Positions array contains positions where blackbox state is changed. First interval isn't blackboxed. Array should be sorted. + * @experimental + */ + post(method: 'Debugger.setBlackboxedRanges', params?: Debugger.SetBlackboxedRangesParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Debugger.setBlackboxedRanges', callback?: (err: Error | null) => void): void; + /** + * Enables console domain, sends the messages collected so far to the client by means of the messageAdded notification. + */ + post(method: 'Console.enable', callback?: (err: Error | null) => void): void; + /** + * Disables console domain, prevents further console messages from being reported to the client. + */ + post(method: 'Console.disable', callback?: (err: Error | null) => void): void; + /** + * Does nothing. + */ + post(method: 'Console.clearMessages', callback?: (err: Error | null) => void): void; + post(method: 'Profiler.enable', callback?: (err: Error | null) => void): void; + post(method: 'Profiler.disable', callback?: (err: Error | null) => void): void; + /** + * Changes CPU profiler sampling interval. Must be called before CPU profiles recording started. + */ + post(method: 'Profiler.setSamplingInterval', params?: Profiler.SetSamplingIntervalParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Profiler.setSamplingInterval', callback?: (err: Error | null) => void): void; + post(method: 'Profiler.start', callback?: (err: Error | null) => void): void; + post(method: 'Profiler.stop', callback?: (err: Error | null, params: Profiler.StopReturnType) => void): void; + /** + * Enable precise code coverage. Coverage data for JavaScript executed before enabling precise code coverage may be incomplete. Enabling prevents running optimized code and resets execution counters. + */ + post(method: 'Profiler.startPreciseCoverage', params?: Profiler.StartPreciseCoverageParameterType, callback?: (err: Error | null) => void): void; + post(method: 'Profiler.startPreciseCoverage', callback?: (err: Error | null) => void): void; + /** + * Disable precise code coverage. Disabling releases unnecessary execution count records and allows executing optimized code. + */ + post(method: 'Profiler.stopPreciseCoverage', callback?: (err: Error | null) => void): void; + /** + * Collect coverage data for the current isolate, and resets execution counters. Precise code coverage needs to have started. + */ + post(method: 'Profiler.takePreciseCoverage', callback?: (err: Error | null, params: Profiler.TakePreciseCoverageReturnType) => void): void; + /** + * Collect coverage data for the current isolate. The coverage data may be incomplete due to garbage collection. + */ + post(method: 'Profiler.getBestEffortCoverage', callback?: (err: Error | null, params: Profiler.GetBestEffortCoverageReturnType) => void): void; + /** + * Enable type profile. + * @experimental + */ + post(method: 'Profiler.startTypeProfile', callback?: (err: Error | null) => void): void; + /** + * Disable type profile. Disabling releases type profile data collected so far. + * @experimental + */ + post(method: 'Profiler.stopTypeProfile', callback?: (err: Error | null) => void): void; + /** + * Collect type profile. + * @experimental + */ + post(method: 'Profiler.takeTypeProfile', callback?: (err: Error | null, params: Profiler.TakeTypeProfileReturnType) => void): void; + post(method: 'HeapProfiler.enable', callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.disable', callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.startTrackingHeapObjects', params?: HeapProfiler.StartTrackingHeapObjectsParameterType, callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.startTrackingHeapObjects', callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.stopTrackingHeapObjects', params?: HeapProfiler.StopTrackingHeapObjectsParameterType, callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.stopTrackingHeapObjects', callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.takeHeapSnapshot', params?: HeapProfiler.TakeHeapSnapshotParameterType, callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.takeHeapSnapshot', callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.collectGarbage', callback?: (err: Error | null) => void): void; + post( + method: 'HeapProfiler.getObjectByHeapObjectId', + params?: HeapProfiler.GetObjectByHeapObjectIdParameterType, + callback?: (err: Error | null, params: HeapProfiler.GetObjectByHeapObjectIdReturnType) => void + ): void; + post(method: 'HeapProfiler.getObjectByHeapObjectId', callback?: (err: Error | null, params: HeapProfiler.GetObjectByHeapObjectIdReturnType) => void): void; + /** + * Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions). + */ + post(method: 'HeapProfiler.addInspectedHeapObject', params?: HeapProfiler.AddInspectedHeapObjectParameterType, callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.addInspectedHeapObject', callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.getHeapObjectId', params?: HeapProfiler.GetHeapObjectIdParameterType, callback?: (err: Error | null, params: HeapProfiler.GetHeapObjectIdReturnType) => void): void; + post(method: 'HeapProfiler.getHeapObjectId', callback?: (err: Error | null, params: HeapProfiler.GetHeapObjectIdReturnType) => void): void; + post(method: 'HeapProfiler.startSampling', params?: HeapProfiler.StartSamplingParameterType, callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.startSampling', callback?: (err: Error | null) => void): void; + post(method: 'HeapProfiler.stopSampling', callback?: (err: Error | null, params: HeapProfiler.StopSamplingReturnType) => void): void; + post(method: 'HeapProfiler.getSamplingProfile', callback?: (err: Error | null, params: HeapProfiler.GetSamplingProfileReturnType) => void): void; + /** + * Gets supported tracing categories. + */ + post(method: 'NodeTracing.getCategories', callback?: (err: Error | null, params: NodeTracing.GetCategoriesReturnType) => void): void; + /** + * Start trace events collection. + */ + post(method: 'NodeTracing.start', params?: NodeTracing.StartParameterType, callback?: (err: Error | null) => void): void; + post(method: 'NodeTracing.start', callback?: (err: Error | null) => void): void; + /** + * Stop trace events collection. Remaining collected events will be sent as a sequence of + * dataCollected events followed by tracingComplete event. + */ + post(method: 'NodeTracing.stop', callback?: (err: Error | null) => void): void; + /** + * Sends protocol message over session with given id. + */ + post(method: 'NodeWorker.sendMessageToWorker', params?: NodeWorker.SendMessageToWorkerParameterType, callback?: (err: Error | null) => void): void; + post(method: 'NodeWorker.sendMessageToWorker', callback?: (err: Error | null) => void): void; + /** + * Instructs the inspector to attach to running workers. Will also attach to new workers + * as they start + */ + post(method: 'NodeWorker.enable', params?: NodeWorker.EnableParameterType, callback?: (err: Error | null) => void): void; + post(method: 'NodeWorker.enable', callback?: (err: Error | null) => void): void; + /** + * Detaches from all running workers and disables attaching to new workers as they are started. + */ + post(method: 'NodeWorker.disable', callback?: (err: Error | null) => void): void; + /** + * Detached from the worker with given sessionId. + */ + post(method: 'NodeWorker.detach', params?: NodeWorker.DetachParameterType, callback?: (err: Error | null) => void): void; + post(method: 'NodeWorker.detach', callback?: (err: Error | null) => void): void; + /** + * Enable the `NodeRuntime.waitingForDisconnect`. + */ + post(method: 'NodeRuntime.notifyWhenWaitingForDisconnect', params?: NodeRuntime.NotifyWhenWaitingForDisconnectParameterType, callback?: (err: Error | null) => void): void; + post(method: 'NodeRuntime.notifyWhenWaitingForDisconnect', callback?: (err: Error | null) => void): void; + // Events + addListener(event: string, listener: (...args: any[]) => void): this; + /** + * Emitted when any notification from the V8 Inspector is received. + */ + addListener(event: 'inspectorNotification', listener: (message: InspectorNotification<{}>) => void): this; + /** + * Issued when new execution context is created. + */ + addListener(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; + /** + * Issued when execution context is destroyed. + */ + addListener(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; + /** + * Issued when all executionContexts were cleared in browser + */ + addListener(event: 'Runtime.executionContextsCleared', listener: () => void): this; + /** + * Issued when exception was thrown and unhandled. + */ + addListener(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; + /** + * Issued when unhandled exception was revoked. + */ + addListener(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; + /** + * Issued when console API was called. + */ + addListener(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; + /** + * Issued when object should be inspected (for example, as a result of inspect() command line API call). + */ + addListener(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. + */ + addListener(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine fails to parse the script. + */ + addListener(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; + /** + * Fired when breakpoint is resolved to an actual script and location. + */ + addListener(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. + */ + addListener(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine resumed execution. + */ + addListener(event: 'Debugger.resumed', listener: () => void): this; + /** + * Issued when new console message is added. + */ + addListener(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; + /** + * Sent when new profile recording is started using console.profile() call. + */ + addListener(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; + addListener(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; + addListener(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; + addListener(event: 'HeapProfiler.resetProfiles', listener: () => void): this; + addListener(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. + */ + addListener(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend may send update for one or more fragments + */ + addListener(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; + /** + * Contains an bucket of collected trace events. + */ + addListener(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; + /** + * Signals that tracing is stopped and there is no trace buffers pending flush, all data were + * delivered via dataCollected events. + */ + addListener(event: 'NodeTracing.tracingComplete', listener: () => void): this; + /** + * Issued when attached to a worker. + */ + addListener(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; + /** + * Issued when detached from the worker. + */ + addListener(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * Notifies about a new protocol message received from the session + * (session ID is provided in attachedToWorker notification). + */ + addListener(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * This event is fired instead of `Runtime.executionContextDestroyed` when + * enabled. + * It is fired when the Node process finished all code execution and is + * waiting for all frontends to disconnect. + */ + addListener(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: 'inspectorNotification', message: InspectorNotification<{}>): boolean; + emit(event: 'Runtime.executionContextCreated', message: InspectorNotification): boolean; + emit(event: 'Runtime.executionContextDestroyed', message: InspectorNotification): boolean; + emit(event: 'Runtime.executionContextsCleared'): boolean; + emit(event: 'Runtime.exceptionThrown', message: InspectorNotification): boolean; + emit(event: 'Runtime.exceptionRevoked', message: InspectorNotification): boolean; + emit(event: 'Runtime.consoleAPICalled', message: InspectorNotification): boolean; + emit(event: 'Runtime.inspectRequested', message: InspectorNotification): boolean; + emit(event: 'Debugger.scriptParsed', message: InspectorNotification): boolean; + emit(event: 'Debugger.scriptFailedToParse', message: InspectorNotification): boolean; + emit(event: 'Debugger.breakpointResolved', message: InspectorNotification): boolean; + emit(event: 'Debugger.paused', message: InspectorNotification): boolean; + emit(event: 'Debugger.resumed'): boolean; + emit(event: 'Console.messageAdded', message: InspectorNotification): boolean; + emit(event: 'Profiler.consoleProfileStarted', message: InspectorNotification): boolean; + emit(event: 'Profiler.consoleProfileFinished', message: InspectorNotification): boolean; + emit(event: 'HeapProfiler.addHeapSnapshotChunk', message: InspectorNotification): boolean; + emit(event: 'HeapProfiler.resetProfiles'): boolean; + emit(event: 'HeapProfiler.reportHeapSnapshotProgress', message: InspectorNotification): boolean; + emit(event: 'HeapProfiler.lastSeenObjectId', message: InspectorNotification): boolean; + emit(event: 'HeapProfiler.heapStatsUpdate', message: InspectorNotification): boolean; + emit(event: 'NodeTracing.dataCollected', message: InspectorNotification): boolean; + emit(event: 'NodeTracing.tracingComplete'): boolean; + emit(event: 'NodeWorker.attachedToWorker', message: InspectorNotification): boolean; + emit(event: 'NodeWorker.detachedFromWorker', message: InspectorNotification): boolean; + emit(event: 'NodeWorker.receivedMessageFromWorker', message: InspectorNotification): boolean; + emit(event: 'NodeRuntime.waitingForDisconnect'): boolean; + on(event: string, listener: (...args: any[]) => void): this; + /** + * Emitted when any notification from the V8 Inspector is received. + */ + on(event: 'inspectorNotification', listener: (message: InspectorNotification<{}>) => void): this; + /** + * Issued when new execution context is created. + */ + on(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; + /** + * Issued when execution context is destroyed. + */ + on(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; + /** + * Issued when all executionContexts were cleared in browser + */ + on(event: 'Runtime.executionContextsCleared', listener: () => void): this; + /** + * Issued when exception was thrown and unhandled. + */ + on(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; + /** + * Issued when unhandled exception was revoked. + */ + on(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; + /** + * Issued when console API was called. + */ + on(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; + /** + * Issued when object should be inspected (for example, as a result of inspect() command line API call). + */ + on(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. + */ + on(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine fails to parse the script. + */ + on(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; + /** + * Fired when breakpoint is resolved to an actual script and location. + */ + on(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. + */ + on(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine resumed execution. + */ + on(event: 'Debugger.resumed', listener: () => void): this; + /** + * Issued when new console message is added. + */ + on(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; + /** + * Sent when new profile recording is started using console.profile() call. + */ + on(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; + on(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; + on(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; + on(event: 'HeapProfiler.resetProfiles', listener: () => void): this; + on(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. + */ + on(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend may send update for one or more fragments + */ + on(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; + /** + * Contains an bucket of collected trace events. + */ + on(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; + /** + * Signals that tracing is stopped and there is no trace buffers pending flush, all data were + * delivered via dataCollected events. + */ + on(event: 'NodeTracing.tracingComplete', listener: () => void): this; + /** + * Issued when attached to a worker. + */ + on(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; + /** + * Issued when detached from the worker. + */ + on(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * Notifies about a new protocol message received from the session + * (session ID is provided in attachedToWorker notification). + */ + on(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * This event is fired instead of `Runtime.executionContextDestroyed` when + * enabled. + * It is fired when the Node process finished all code execution and is + * waiting for all frontends to disconnect. + */ + on(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; + once(event: string, listener: (...args: any[]) => void): this; + /** + * Emitted when any notification from the V8 Inspector is received. + */ + once(event: 'inspectorNotification', listener: (message: InspectorNotification<{}>) => void): this; + /** + * Issued when new execution context is created. + */ + once(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; + /** + * Issued when execution context is destroyed. + */ + once(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; + /** + * Issued when all executionContexts were cleared in browser + */ + once(event: 'Runtime.executionContextsCleared', listener: () => void): this; + /** + * Issued when exception was thrown and unhandled. + */ + once(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; + /** + * Issued when unhandled exception was revoked. + */ + once(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; + /** + * Issued when console API was called. + */ + once(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; + /** + * Issued when object should be inspected (for example, as a result of inspect() command line API call). + */ + once(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. + */ + once(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine fails to parse the script. + */ + once(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; + /** + * Fired when breakpoint is resolved to an actual script and location. + */ + once(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. + */ + once(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine resumed execution. + */ + once(event: 'Debugger.resumed', listener: () => void): this; + /** + * Issued when new console message is added. + */ + once(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; + /** + * Sent when new profile recording is started using console.profile() call. + */ + once(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; + once(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; + once(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; + once(event: 'HeapProfiler.resetProfiles', listener: () => void): this; + once(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. + */ + once(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend may send update for one or more fragments + */ + once(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; + /** + * Contains an bucket of collected trace events. + */ + once(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; + /** + * Signals that tracing is stopped and there is no trace buffers pending flush, all data were + * delivered via dataCollected events. + */ + once(event: 'NodeTracing.tracingComplete', listener: () => void): this; + /** + * Issued when attached to a worker. + */ + once(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; + /** + * Issued when detached from the worker. + */ + once(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * Notifies about a new protocol message received from the session + * (session ID is provided in attachedToWorker notification). + */ + once(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * This event is fired instead of `Runtime.executionContextDestroyed` when + * enabled. + * It is fired when the Node process finished all code execution and is + * waiting for all frontends to disconnect. + */ + once(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + /** + * Emitted when any notification from the V8 Inspector is received. + */ + prependListener(event: 'inspectorNotification', listener: (message: InspectorNotification<{}>) => void): this; + /** + * Issued when new execution context is created. + */ + prependListener(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; + /** + * Issued when execution context is destroyed. + */ + prependListener(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; + /** + * Issued when all executionContexts were cleared in browser + */ + prependListener(event: 'Runtime.executionContextsCleared', listener: () => void): this; + /** + * Issued when exception was thrown and unhandled. + */ + prependListener(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; + /** + * Issued when unhandled exception was revoked. + */ + prependListener(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; + /** + * Issued when console API was called. + */ + prependListener(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; + /** + * Issued when object should be inspected (for example, as a result of inspect() command line API call). + */ + prependListener(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. + */ + prependListener(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine fails to parse the script. + */ + prependListener(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; + /** + * Fired when breakpoint is resolved to an actual script and location. + */ + prependListener(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. + */ + prependListener(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine resumed execution. + */ + prependListener(event: 'Debugger.resumed', listener: () => void): this; + /** + * Issued when new console message is added. + */ + prependListener(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; + /** + * Sent when new profile recording is started using console.profile() call. + */ + prependListener(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; + prependListener(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; + prependListener(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; + prependListener(event: 'HeapProfiler.resetProfiles', listener: () => void): this; + prependListener(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. + */ + prependListener(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend may send update for one or more fragments + */ + prependListener(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; + /** + * Contains an bucket of collected trace events. + */ + prependListener(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; + /** + * Signals that tracing is stopped and there is no trace buffers pending flush, all data were + * delivered via dataCollected events. + */ + prependListener(event: 'NodeTracing.tracingComplete', listener: () => void): this; + /** + * Issued when attached to a worker. + */ + prependListener(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; + /** + * Issued when detached from the worker. + */ + prependListener(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * Notifies about a new protocol message received from the session + * (session ID is provided in attachedToWorker notification). + */ + prependListener(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * This event is fired instead of `Runtime.executionContextDestroyed` when + * enabled. + * It is fired when the Node process finished all code execution and is + * waiting for all frontends to disconnect. + */ + prependListener(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + /** + * Emitted when any notification from the V8 Inspector is received. + */ + prependOnceListener(event: 'inspectorNotification', listener: (message: InspectorNotification<{}>) => void): this; + /** + * Issued when new execution context is created. + */ + prependOnceListener(event: 'Runtime.executionContextCreated', listener: (message: InspectorNotification) => void): this; + /** + * Issued when execution context is destroyed. + */ + prependOnceListener(event: 'Runtime.executionContextDestroyed', listener: (message: InspectorNotification) => void): this; + /** + * Issued when all executionContexts were cleared in browser + */ + prependOnceListener(event: 'Runtime.executionContextsCleared', listener: () => void): this; + /** + * Issued when exception was thrown and unhandled. + */ + prependOnceListener(event: 'Runtime.exceptionThrown', listener: (message: InspectorNotification) => void): this; + /** + * Issued when unhandled exception was revoked. + */ + prependOnceListener(event: 'Runtime.exceptionRevoked', listener: (message: InspectorNotification) => void): this; + /** + * Issued when console API was called. + */ + prependOnceListener(event: 'Runtime.consoleAPICalled', listener: (message: InspectorNotification) => void): this; + /** + * Issued when object should be inspected (for example, as a result of inspect() command line API call). + */ + prependOnceListener(event: 'Runtime.inspectRequested', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger. + */ + prependOnceListener(event: 'Debugger.scriptParsed', listener: (message: InspectorNotification) => void): this; + /** + * Fired when virtual machine fails to parse the script. + */ + prependOnceListener(event: 'Debugger.scriptFailedToParse', listener: (message: InspectorNotification) => void): this; + /** + * Fired when breakpoint is resolved to an actual script and location. + */ + prependOnceListener(event: 'Debugger.breakpointResolved', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria. + */ + prependOnceListener(event: 'Debugger.paused', listener: (message: InspectorNotification) => void): this; + /** + * Fired when the virtual machine resumed execution. + */ + prependOnceListener(event: 'Debugger.resumed', listener: () => void): this; + /** + * Issued when new console message is added. + */ + prependOnceListener(event: 'Console.messageAdded', listener: (message: InspectorNotification) => void): this; + /** + * Sent when new profile recording is started using console.profile() call. + */ + prependOnceListener(event: 'Profiler.consoleProfileStarted', listener: (message: InspectorNotification) => void): this; + prependOnceListener(event: 'Profiler.consoleProfileFinished', listener: (message: InspectorNotification) => void): this; + prependOnceListener(event: 'HeapProfiler.addHeapSnapshotChunk', listener: (message: InspectorNotification) => void): this; + prependOnceListener(event: 'HeapProfiler.resetProfiles', listener: () => void): this; + prependOnceListener(event: 'HeapProfiler.reportHeapSnapshotProgress', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event. + */ + prependOnceListener(event: 'HeapProfiler.lastSeenObjectId', listener: (message: InspectorNotification) => void): this; + /** + * If heap objects tracking has been started then backend may send update for one or more fragments + */ + prependOnceListener(event: 'HeapProfiler.heapStatsUpdate', listener: (message: InspectorNotification) => void): this; + /** + * Contains an bucket of collected trace events. + */ + prependOnceListener(event: 'NodeTracing.dataCollected', listener: (message: InspectorNotification) => void): this; + /** + * Signals that tracing is stopped and there is no trace buffers pending flush, all data were + * delivered via dataCollected events. + */ + prependOnceListener(event: 'NodeTracing.tracingComplete', listener: () => void): this; + /** + * Issued when attached to a worker. + */ + prependOnceListener(event: 'NodeWorker.attachedToWorker', listener: (message: InspectorNotification) => void): this; + /** + * Issued when detached from the worker. + */ + prependOnceListener(event: 'NodeWorker.detachedFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * Notifies about a new protocol message received from the session + * (session ID is provided in attachedToWorker notification). + */ + prependOnceListener(event: 'NodeWorker.receivedMessageFromWorker', listener: (message: InspectorNotification) => void): this; + /** + * This event is fired instead of `Runtime.executionContextDestroyed` when + * enabled. + * It is fired when the Node process finished all code execution and is + * waiting for all frontends to disconnect. + */ + prependOnceListener(event: 'NodeRuntime.waitingForDisconnect', listener: () => void): this; + } + /** + * Activate inspector on host and port. Equivalent to`node --inspect=[[host:]port]`, but can be done programmatically after node has + * started. + * + * If wait is `true`, will block until a client has connected to the inspect port + * and flow control has been passed to the debugger client. + * + * See the `security warning` regarding the `host`parameter usage. + * @param [port='what was specified on the CLI'] Port to listen on for inspector connections. Optional. + * @param [host='what was specified on the CLI'] Host to listen on for inspector connections. Optional. + * @param [wait=false] Block until a client has connected. Optional. + * @returns Disposable that calls `inspector.close()`. + */ + function open(port?: number, host?: string, wait?: boolean): Disposable; + /** + * Deactivate the inspector. Blocks until there are no active connections. + */ + function close(): void; + /** + * Return the URL of the active inspector, or `undefined` if there is none. + * + * ```console + * $ node --inspect -p 'inspector.url()' + * Debugger listening on ws://127.0.0.1:9229/166e272e-7a30-4d09-97ce-f1c012b43c34 + * For help, see: https://nodejs.org/en/docs/inspector + * ws://127.0.0.1:9229/166e272e-7a30-4d09-97ce-f1c012b43c34 + * + * $ node --inspect=localhost:3000 -p 'inspector.url()' + * Debugger listening on ws://localhost:3000/51cf8d0e-3c36-4c59-8efd-54519839e56a + * For help, see: https://nodejs.org/en/docs/inspector + * ws://localhost:3000/51cf8d0e-3c36-4c59-8efd-54519839e56a + * + * $ node -p 'inspector.url()' + * undefined + * ``` + */ + function url(): string | undefined; + /** + * Blocks until a client (existing or connected later) has sent`Runtime.runIfWaitingForDebugger` command. + * + * An exception will be thrown if there is no active inspector. + * @since v12.7.0 + */ + function waitForDebugger(): void; +} +/** + * The inspector module provides an API for interacting with the V8 inspector. + */ +declare module 'node:inspector' { + import inspector = require('inspector'); + export = inspector; +} diff --git a/node_modules/@types/node/ts4.8/module.d.ts b/node_modules/@types/node/ts4.8/module.d.ts new file mode 100644 index 00000000..3d04c330 --- /dev/null +++ b/node_modules/@types/node/ts4.8/module.d.ts @@ -0,0 +1,297 @@ +/** + * @since v0.3.7 + * @experimental + */ +declare module "module" { + import { URL } from "node:url"; + import { MessagePort } from "node:worker_threads"; + namespace Module { + /** + * The `module.syncBuiltinESMExports()` method updates all the live bindings for + * builtin `ES Modules` to match the properties of the `CommonJS` exports. It + * does not add or remove exported names from the `ES Modules`. + * + * ```js + * const fs = require('node:fs'); + * const assert = require('node:assert'); + * const { syncBuiltinESMExports } = require('node:module'); + * + * fs.readFile = newAPI; + * + * delete fs.readFileSync; + * + * function newAPI() { + * // ... + * } + * + * fs.newAPI = newAPI; + * + * syncBuiltinESMExports(); + * + * import('node:fs').then((esmFS) => { + * // It syncs the existing readFile property with the new value + * assert.strictEqual(esmFS.readFile, newAPI); + * // readFileSync has been deleted from the required fs + * assert.strictEqual('readFileSync' in fs, false); + * // syncBuiltinESMExports() does not remove readFileSync from esmFS + * assert.strictEqual('readFileSync' in esmFS, true); + * // syncBuiltinESMExports() does not add names + * assert.strictEqual(esmFS.newAPI, undefined); + * }); + * ``` + * @since v12.12.0 + */ + function syncBuiltinESMExports(): void; + /** + * `path` is the resolved path for the file for which a corresponding source map + * should be fetched. + * @since v13.7.0, v12.17.0 + * @return Returns `module.SourceMap` if a source map is found, `undefined` otherwise. + */ + function findSourceMap(path: string, error?: Error): SourceMap; + interface SourceMapPayload { + file: string; + version: number; + sources: string[]; + sourcesContent: string[]; + names: string[]; + mappings: string; + sourceRoot: string; + } + interface SourceMapping { + generatedLine: number; + generatedColumn: number; + originalSource: string; + originalLine: number; + originalColumn: number; + } + interface SourceOrigin { + /** + * The name of the range in the source map, if one was provided + */ + name?: string; + /** + * The file name of the original source, as reported in the SourceMap + */ + fileName: string; + /** + * The 1-indexed lineNumber of the corresponding call site in the original source + */ + lineNumber: number; + /** + * The 1-indexed columnNumber of the corresponding call site in the original source + */ + columnNumber: number; + } + /** + * @since v13.7.0, v12.17.0 + */ + class SourceMap { + /** + * Getter for the payload used to construct the `SourceMap` instance. + */ + readonly payload: SourceMapPayload; + constructor(payload: SourceMapPayload); + /** + * Given a line offset and column offset in the generated source + * file, returns an object representing the SourceMap range in the + * original file if found, or an empty object if not. + * + * The object returned contains the following keys: + * + * The returned value represents the raw range as it appears in the + * SourceMap, based on zero-indexed offsets, _not_ 1-indexed line and + * column numbers as they appear in Error messages and CallSite + * objects. + * + * To get the corresponding 1-indexed line and column numbers from a + * lineNumber and columnNumber as they are reported by Error stacks + * and CallSite objects, use `sourceMap.findOrigin(lineNumber, columnNumber)` + * @param lineOffset The zero-indexed line number offset in the generated source + * @param columnOffset The zero-indexed column number offset in the generated source + */ + findEntry(lineOffset: number, columnOffset: number): SourceMapping; + /** + * Given a 1-indexed `lineNumber` and `columnNumber` from a call site in the generated source, + * find the corresponding call site location in the original source. + * + * If the `lineNumber` and `columnNumber` provided are not found in any source map, + * then an empty object is returned. + * @param lineNumber The 1-indexed line number of the call site in the generated source + * @param columnNumber The 1-indexed column number of the call site in the generated source + */ + findOrigin(lineNumber: number, columnNumber: number): SourceOrigin | {}; + } + interface ImportAssertions extends NodeJS.Dict { + type?: string | undefined; + } + type ModuleFormat = "builtin" | "commonjs" | "json" | "module" | "wasm"; + type ModuleSource = string | ArrayBuffer | NodeJS.TypedArray; + interface GlobalPreloadContext { + port: MessagePort; + } + /** + * @deprecated This hook will be removed in a future version. + * Use `initialize` instead. When a loader has an `initialize` export, `globalPreload` will be ignored. + * + * Sometimes it might be necessary to run some code inside of the same global scope that the application runs in. + * This hook allows the return of a string that is run as a sloppy-mode script on startup. + * + * @param context Information to assist the preload code + * @return Code to run before application startup + */ + type GlobalPreloadHook = (context: GlobalPreloadContext) => string; + /** + * The `initialize` hook provides a way to define a custom function that runs in the hooks thread + * when the hooks module is initialized. Initialization happens when the hooks module is registered via `register`. + * + * This hook can receive data from a `register` invocation, including ports and other transferrable objects. + * The return value of `initialize` can be a `Promise`, in which case it will be awaited before the main application thread execution resumes. + */ + type InitializeHook = (data: Data) => void | Promise; + interface ResolveHookContext { + /** + * Export conditions of the relevant `package.json` + */ + conditions: string[]; + /** + * An object whose key-value pairs represent the assertions for the module to import + */ + importAssertions: ImportAssertions; + /** + * The module importing this one, or undefined if this is the Node.js entry point + */ + parentURL: string | undefined; + } + interface ResolveFnOutput { + /** + * A hint to the load hook (it might be ignored) + */ + format?: ModuleFormat | null | undefined; + /** + * The import assertions to use when caching the module (optional; if excluded the input will be used) + */ + importAssertions?: ImportAssertions | undefined; + /** + * A signal that this hook intends to terminate the chain of `resolve` hooks. + * @default false + */ + shortCircuit?: boolean | undefined; + /** + * The absolute URL to which this input resolves + */ + url: string; + } + /** + * The `resolve` hook chain is responsible for resolving file URL for a given module specifier and parent URL, and optionally its format (such as `'module'`) as a hint to the `load` hook. + * If a format is specified, the load hook is ultimately responsible for providing the final `format` value (and it is free to ignore the hint provided by `resolve`); + * if `resolve` provides a format, a custom `load` hook is required even if only to pass the value to the Node.js default `load` hook. + * + * @param specifier The specified URL path of the module to be resolved + * @param context + * @param nextResolve The subsequent `resolve` hook in the chain, or the Node.js default `resolve` hook after the last user-supplied resolve hook + */ + type ResolveHook = ( + specifier: string, + context: ResolveHookContext, + nextResolve: ( + specifier: string, + context?: ResolveHookContext, + ) => ResolveFnOutput | Promise, + ) => ResolveFnOutput | Promise; + interface LoadHookContext { + /** + * Export conditions of the relevant `package.json` + */ + conditions: string[]; + /** + * The format optionally supplied by the `resolve` hook chain + */ + format: ModuleFormat; + /** + * An object whose key-value pairs represent the assertions for the module to import + */ + importAssertions: ImportAssertions; + } + interface LoadFnOutput { + format: ModuleFormat; + /** + * A signal that this hook intends to terminate the chain of `resolve` hooks. + * @default false + */ + shortCircuit?: boolean | undefined; + /** + * The source for Node.js to evaluate + */ + source?: ModuleSource; + } + /** + * The `load` hook provides a way to define a custom method of determining how a URL should be interpreted, retrieved, and parsed. + * It is also in charge of validating the import assertion. + * + * @param url The URL/path of the module to be loaded + * @param context Metadata about the module + * @param nextLoad The subsequent `load` hook in the chain, or the Node.js default `load` hook after the last user-supplied `load` hook + */ + type LoadHook = ( + url: string, + context: LoadHookContext, + nextLoad: (url: string, context?: LoadHookContext) => LoadFnOutput | Promise, + ) => LoadFnOutput | Promise; + } + interface RegisterOptions { + parentURL: string | URL; + data?: Data | undefined; + transferList?: any[] | undefined; + } + interface Module extends NodeModule {} + class Module { + static runMain(): void; + static wrap(code: string): string; + static createRequire(path: string | URL): NodeRequire; + static builtinModules: string[]; + static isBuiltin(moduleName: string): boolean; + static Module: typeof Module; + static register( + specifier: string | URL, + parentURL?: string | URL, + options?: RegisterOptions, + ): void; + static register(specifier: string | URL, options?: RegisterOptions): void; + constructor(id: string, parent?: Module); + } + global { + interface ImportMeta { + url: string; + /** + * Provides a module-relative resolution function scoped to each module, returning + * the URL string. + * + * @since v20.6.0 + * + * @param specifier The module specifier to resolve relative to the current module. + * @returns The absolute (`file:`) URL string for the resolved module. + */ + resolve(specifier: string): string; + /** + * This `parent` parameter is only used when the `--experimental-import-meta-resolve` + * command flag enabled. + * + * Provides a module-relative resolution function scoped to each module, returning + * the URL string. + * + * @since v20.6.0 + * + * @param specifier The module specifier to resolve relative to `parent`. + * @param parent The absolute parent module URL to resolve from. + * @returns The absolute (`file:`) URL string for the resolved module. + */ + resolve(specifier: string, parent: string | URL): string; + } + } + export = Module; +} +declare module "node:module" { + import module = require("module"); + export = module; +} diff --git a/node_modules/@types/node/ts4.8/net.d.ts b/node_modules/@types/node/ts4.8/net.d.ts new file mode 100644 index 00000000..70789e1b --- /dev/null +++ b/node_modules/@types/node/ts4.8/net.d.ts @@ -0,0 +1,949 @@ +/** + * > Stability: 2 - Stable + * + * The `node:net` module provides an asynchronous network API for creating stream-based + * TCP or `IPC` servers ({@link createServer}) and clients + * ({@link createConnection}). + * + * It can be accessed using: + * + * ```js + * const net = require('node:net'); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/net.js) + */ +declare module "net" { + import * as stream from "node:stream"; + import { Abortable, EventEmitter } from "node:events"; + import * as dns from "node:dns"; + type LookupFunction = ( + hostname: string, + options: dns.LookupAllOptions, + callback: (err: NodeJS.ErrnoException | null, addresses: dns.LookupAddress[]) => void, + ) => void; + interface AddressInfo { + address: string; + family: string; + port: number; + } + interface SocketConstructorOpts { + fd?: number | undefined; + allowHalfOpen?: boolean | undefined; + readable?: boolean | undefined; + writable?: boolean | undefined; + signal?: AbortSignal; + } + interface OnReadOpts { + buffer: Uint8Array | (() => Uint8Array); + /** + * This function is called for every chunk of incoming data. + * Two arguments are passed to it: the number of bytes written to buffer and a reference to buffer. + * Return false from this function to implicitly pause() the socket. + */ + callback(bytesWritten: number, buf: Uint8Array): boolean; + } + interface ConnectOpts { + /** + * If specified, incoming data is stored in a single buffer and passed to the supplied callback when data arrives on the socket. + * Note: this will cause the streaming functionality to not provide any data, however events like 'error', 'end', and 'close' will + * still be emitted as normal and methods like pause() and resume() will also behave as expected. + */ + onread?: OnReadOpts | undefined; + } + interface TcpSocketConnectOpts extends ConnectOpts { + port: number; + host?: string | undefined; + localAddress?: string | undefined; + localPort?: number | undefined; + hints?: number | undefined; + family?: number | undefined; + lookup?: LookupFunction | undefined; + noDelay?: boolean | undefined; + keepAlive?: boolean | undefined; + keepAliveInitialDelay?: number | undefined; + /** + * @since v18.13.0 + */ + autoSelectFamily?: boolean | undefined; + /** + * @since v18.13.0 + */ + autoSelectFamilyAttemptTimeout?: number | undefined; + } + interface IpcSocketConnectOpts extends ConnectOpts { + path: string; + } + type SocketConnectOpts = TcpSocketConnectOpts | IpcSocketConnectOpts; + type SocketReadyState = "opening" | "open" | "readOnly" | "writeOnly" | "closed"; + /** + * This class is an abstraction of a TCP socket or a streaming `IPC` endpoint + * (uses named pipes on Windows, and Unix domain sockets otherwise). It is also + * an `EventEmitter`. + * + * A `net.Socket` can be created by the user and used directly to interact with + * a server. For example, it is returned by {@link createConnection}, + * so the user can use it to talk to the server. + * + * It can also be created by Node.js and passed to the user when a connection + * is received. For example, it is passed to the listeners of a `'connection'` event emitted on a {@link Server}, so the user can use + * it to interact with the client. + * @since v0.3.4 + */ + class Socket extends stream.Duplex { + constructor(options?: SocketConstructorOpts); + /** + * Destroys the socket after all data is written. If the `finish` event was already emitted the socket is destroyed immediately. + * If the socket is still writable it implicitly calls `socket.end()`. + * @since v0.3.4 + */ + destroySoon(): void; + /** + * Sends data on the socket. The second parameter specifies the encoding in the + * case of a string. It defaults to UTF8 encoding. + * + * Returns `true` if the entire data was flushed successfully to the kernel + * buffer. Returns `false` if all or part of the data was queued in user memory.`'drain'` will be emitted when the buffer is again free. + * + * The optional `callback` parameter will be executed when the data is finally + * written out, which may not be immediately. + * + * See `Writable` stream `write()` method for more + * information. + * @since v0.1.90 + * @param [encoding='utf8'] Only used when data is `string`. + */ + write(buffer: Uint8Array | string, cb?: (err?: Error) => void): boolean; + write(str: Uint8Array | string, encoding?: BufferEncoding, cb?: (err?: Error) => void): boolean; + /** + * Initiate a connection on a given socket. + * + * Possible signatures: + * + * * `socket.connect(options[, connectListener])` + * * `socket.connect(path[, connectListener])` for `IPC` connections. + * * `socket.connect(port[, host][, connectListener])` for TCP connections. + * * Returns: `net.Socket` The socket itself. + * + * This function is asynchronous. When the connection is established, the `'connect'` event will be emitted. If there is a problem connecting, + * instead of a `'connect'` event, an `'error'` event will be emitted with + * the error passed to the `'error'` listener. + * The last parameter `connectListener`, if supplied, will be added as a listener + * for the `'connect'` event **once**. + * + * This function should only be used for reconnecting a socket after`'close'` has been emitted or otherwise it may lead to undefined + * behavior. + */ + connect(options: SocketConnectOpts, connectionListener?: () => void): this; + connect(port: number, host: string, connectionListener?: () => void): this; + connect(port: number, connectionListener?: () => void): this; + connect(path: string, connectionListener?: () => void): this; + /** + * Set the encoding for the socket as a `Readable Stream`. See `readable.setEncoding()` for more information. + * @since v0.1.90 + * @return The socket itself. + */ + setEncoding(encoding?: BufferEncoding): this; + /** + * Pauses the reading of data. That is, `'data'` events will not be emitted. + * Useful to throttle back an upload. + * @return The socket itself. + */ + pause(): this; + /** + * Close the TCP connection by sending an RST packet and destroy the stream. + * If this TCP socket is in connecting status, it will send an RST packet and destroy this TCP socket once it is connected. + * Otherwise, it will call `socket.destroy` with an `ERR_SOCKET_CLOSED` Error. + * If this is not a TCP socket (for example, a pipe), calling this method will immediately throw an `ERR_INVALID_HANDLE_TYPE` Error. + * @since v18.3.0, v16.17.0 + */ + resetAndDestroy(): this; + /** + * Resumes reading after a call to `socket.pause()`. + * @return The socket itself. + */ + resume(): this; + /** + * Sets the socket to timeout after `timeout` milliseconds of inactivity on + * the socket. By default `net.Socket` do not have a timeout. + * + * When an idle timeout is triggered the socket will receive a `'timeout'` event but the connection will not be severed. The user must manually call `socket.end()` or `socket.destroy()` to + * end the connection. + * + * ```js + * socket.setTimeout(3000); + * socket.on('timeout', () => { + * console.log('socket timeout'); + * socket.end(); + * }); + * ``` + * + * If `timeout` is 0, then the existing idle timeout is disabled. + * + * The optional `callback` parameter will be added as a one-time listener for the `'timeout'` event. + * @since v0.1.90 + * @return The socket itself. + */ + setTimeout(timeout: number, callback?: () => void): this; + /** + * Enable/disable the use of Nagle's algorithm. + * + * When a TCP connection is created, it will have Nagle's algorithm enabled. + * + * Nagle's algorithm delays data before it is sent via the network. It attempts + * to optimize throughput at the expense of latency. + * + * Passing `true` for `noDelay` or not passing an argument will disable Nagle's + * algorithm for the socket. Passing `false` for `noDelay` will enable Nagle's + * algorithm. + * @since v0.1.90 + * @param [noDelay=true] + * @return The socket itself. + */ + setNoDelay(noDelay?: boolean): this; + /** + * Enable/disable keep-alive functionality, and optionally set the initial + * delay before the first keepalive probe is sent on an idle socket. + * + * Set `initialDelay` (in milliseconds) to set the delay between the last + * data packet received and the first keepalive probe. Setting `0` for`initialDelay` will leave the value unchanged from the default + * (or previous) setting. + * + * Enabling the keep-alive functionality will set the following socket options: + * + * * `SO_KEEPALIVE=1` + * * `TCP_KEEPIDLE=initialDelay` + * * `TCP_KEEPCNT=10` + * * `TCP_KEEPINTVL=1` + * @since v0.1.92 + * @param [enable=false] + * @param [initialDelay=0] + * @return The socket itself. + */ + setKeepAlive(enable?: boolean, initialDelay?: number): this; + /** + * Returns the bound `address`, the address `family` name and `port` of the + * socket as reported by the operating system:`{ port: 12346, family: 'IPv4', address: '127.0.0.1' }` + * @since v0.1.90 + */ + address(): AddressInfo | {}; + /** + * Calling `unref()` on a socket will allow the program to exit if this is the only + * active socket in the event system. If the socket is already `unref`ed calling`unref()` again will have no effect. + * @since v0.9.1 + * @return The socket itself. + */ + unref(): this; + /** + * Opposite of `unref()`, calling `ref()` on a previously `unref`ed socket will _not_ let the program exit if it's the only socket left (the default behavior). + * If the socket is `ref`ed calling `ref` again will have no effect. + * @since v0.9.1 + * @return The socket itself. + */ + ref(): this; + /** + * This property is only present if the family autoselection algorithm is enabled in `socket.connect(options)` + * and it is an array of the addresses that have been attempted. + * + * Each address is a string in the form of `$IP:$PORT`. + * If the connection was successful, then the last address is the one that the socket is currently connected to. + * @since v19.4.0 + */ + readonly autoSelectFamilyAttemptedAddresses: string[]; + /** + * This property shows the number of characters buffered for writing. The buffer + * may contain strings whose length after encoding is not yet known. So this number + * is only an approximation of the number of bytes in the buffer. + * + * `net.Socket` has the property that `socket.write()` always works. This is to + * help users get up and running quickly. The computer cannot always keep up + * with the amount of data that is written to a socket. The network connection + * simply might be too slow. Node.js will internally queue up the data written to a + * socket and send it out over the wire when it is possible. + * + * The consequence of this internal buffering is that memory may grow. + * Users who experience large or growing `bufferSize` should attempt to + * "throttle" the data flows in their program with `socket.pause()` and `socket.resume()`. + * @since v0.3.8 + * @deprecated Since v14.6.0 - Use `writableLength` instead. + */ + readonly bufferSize: number; + /** + * The amount of received bytes. + * @since v0.5.3 + */ + readonly bytesRead: number; + /** + * The amount of bytes sent. + * @since v0.5.3 + */ + readonly bytesWritten: number; + /** + * If `true`,`socket.connect(options[, connectListener])` was + * called and has not yet finished. It will stay `true` until the socket becomes + * connected, then it is set to `false` and the `'connect'` event is emitted. Note + * that the `socket.connect(options[, connectListener])` callback is a listener for the `'connect'` event. + * @since v6.1.0 + */ + readonly connecting: boolean; + /** + * This is `true` if the socket is not connected yet, either because `.connect()`has not yet been called or because it is still in the process of connecting + * (see `socket.connecting`). + * @since v11.2.0, v10.16.0 + */ + readonly pending: boolean; + /** + * See `writable.destroyed` for further details. + */ + readonly destroyed: boolean; + /** + * The string representation of the local IP address the remote client is + * connecting on. For example, in a server listening on `'0.0.0.0'`, if a client + * connects on `'192.168.1.1'`, the value of `socket.localAddress` would be`'192.168.1.1'`. + * @since v0.9.6 + */ + readonly localAddress?: string; + /** + * The numeric representation of the local port. For example, `80` or `21`. + * @since v0.9.6 + */ + readonly localPort?: number; + /** + * The string representation of the local IP family. `'IPv4'` or `'IPv6'`. + * @since v18.8.0, v16.18.0 + */ + readonly localFamily?: string; + /** + * This property represents the state of the connection as a string. + * + * * If the stream is connecting `socket.readyState` is `opening`. + * * If the stream is readable and writable, it is `open`. + * * If the stream is readable and not writable, it is `readOnly`. + * * If the stream is not readable and writable, it is `writeOnly`. + * @since v0.5.0 + */ + readonly readyState: SocketReadyState; + /** + * The string representation of the remote IP address. For example,`'74.125.127.100'` or `'2001:4860:a005::68'`. Value may be `undefined` if + * the socket is destroyed (for example, if the client disconnected). + * @since v0.5.10 + */ + readonly remoteAddress?: string | undefined; + /** + * The string representation of the remote IP family. `'IPv4'` or `'IPv6'`. Value may be `undefined` if + * the socket is destroyed (for example, if the client disconnected). + * @since v0.11.14 + */ + readonly remoteFamily?: string | undefined; + /** + * The numeric representation of the remote port. For example, `80` or `21`. Value may be `undefined` if + * the socket is destroyed (for example, if the client disconnected). + * @since v0.5.10 + */ + readonly remotePort?: number | undefined; + /** + * The socket timeout in milliseconds as set by `socket.setTimeout()`. + * It is `undefined` if a timeout has not been set. + * @since v10.7.0 + */ + readonly timeout?: number | undefined; + /** + * Half-closes the socket. i.e., it sends a FIN packet. It is possible the + * server will still send some data. + * + * See `writable.end()` for further details. + * @since v0.1.90 + * @param [encoding='utf8'] Only used when data is `string`. + * @param callback Optional callback for when the socket is finished. + * @return The socket itself. + */ + end(callback?: () => void): this; + end(buffer: Uint8Array | string, callback?: () => void): this; + end(str: Uint8Array | string, encoding?: BufferEncoding, callback?: () => void): this; + /** + * events.EventEmitter + * 1. close + * 2. connect + * 3. data + * 4. drain + * 5. end + * 6. error + * 7. lookup + * 8. ready + * 9. timeout + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "close", listener: (hadError: boolean) => void): this; + addListener(event: "connect", listener: () => void): this; + addListener(event: "data", listener: (data: Buffer) => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener( + event: "lookup", + listener: (err: Error, address: string, family: string | number, host: string) => void, + ): this; + addListener(event: "ready", listener: () => void): this; + addListener(event: "timeout", listener: () => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close", hadError: boolean): boolean; + emit(event: "connect"): boolean; + emit(event: "data", data: Buffer): boolean; + emit(event: "drain"): boolean; + emit(event: "end"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean; + emit(event: "ready"): boolean; + emit(event: "timeout"): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "close", listener: (hadError: boolean) => void): this; + on(event: "connect", listener: () => void): this; + on(event: "data", listener: (data: Buffer) => void): this; + on(event: "drain", listener: () => void): this; + on(event: "end", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on( + event: "lookup", + listener: (err: Error, address: string, family: string | number, host: string) => void, + ): this; + on(event: "ready", listener: () => void): this; + on(event: "timeout", listener: () => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "close", listener: (hadError: boolean) => void): this; + once(event: "connect", listener: () => void): this; + once(event: "data", listener: (data: Buffer) => void): this; + once(event: "drain", listener: () => void): this; + once(event: "end", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once( + event: "lookup", + listener: (err: Error, address: string, family: string | number, host: string) => void, + ): this; + once(event: "ready", listener: () => void): this; + once(event: "timeout", listener: () => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: (hadError: boolean) => void): this; + prependListener(event: "connect", listener: () => void): this; + prependListener(event: "data", listener: (data: Buffer) => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener( + event: "lookup", + listener: (err: Error, address: string, family: string | number, host: string) => void, + ): this; + prependListener(event: "ready", listener: () => void): this; + prependListener(event: "timeout", listener: () => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: (hadError: boolean) => void): this; + prependOnceListener(event: "connect", listener: () => void): this; + prependOnceListener(event: "data", listener: (data: Buffer) => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener( + event: "lookup", + listener: (err: Error, address: string, family: string | number, host: string) => void, + ): this; + prependOnceListener(event: "ready", listener: () => void): this; + prependOnceListener(event: "timeout", listener: () => void): this; + } + interface ListenOptions extends Abortable { + port?: number | undefined; + host?: string | undefined; + backlog?: number | undefined; + path?: string | undefined; + exclusive?: boolean | undefined; + readableAll?: boolean | undefined; + writableAll?: boolean | undefined; + /** + * @default false + */ + ipv6Only?: boolean | undefined; + } + interface ServerOpts { + /** + * Indicates whether half-opened TCP connections are allowed. + * @default false + */ + allowHalfOpen?: boolean | undefined; + /** + * Indicates whether the socket should be paused on incoming connections. + * @default false + */ + pauseOnConnect?: boolean | undefined; + /** + * If set to `true`, it disables the use of Nagle's algorithm immediately after a new incoming connection is received. + * @default false + * @since v16.5.0 + */ + noDelay?: boolean | undefined; + /** + * If set to `true`, it enables keep-alive functionality on the socket immediately after a new incoming connection is received, + * similarly on what is done in `socket.setKeepAlive([enable][, initialDelay])`. + * @default false + * @since v16.5.0 + */ + keepAlive?: boolean | undefined; + /** + * If set to a positive number, it sets the initial delay before the first keepalive probe is sent on an idle socket. + * @default 0 + * @since v16.5.0 + */ + keepAliveInitialDelay?: number | undefined; + } + interface DropArgument { + localAddress?: string; + localPort?: number; + localFamily?: string; + remoteAddress?: string; + remotePort?: number; + remoteFamily?: string; + } + /** + * This class is used to create a TCP or `IPC` server. + * @since v0.1.90 + */ + class Server extends EventEmitter { + constructor(connectionListener?: (socket: Socket) => void); + constructor(options?: ServerOpts, connectionListener?: (socket: Socket) => void); + /** + * Start a server listening for connections. A `net.Server` can be a TCP or + * an `IPC` server depending on what it listens to. + * + * Possible signatures: + * + * * `server.listen(handle[, backlog][, callback])` + * * `server.listen(options[, callback])` + * * `server.listen(path[, backlog][, callback])` for `IPC` servers + * * `server.listen([port[, host[, backlog]]][, callback])` for TCP servers + * + * This function is asynchronous. When the server starts listening, the `'listening'` event will be emitted. The last parameter `callback`will be added as a listener for the `'listening'` + * event. + * + * All `listen()` methods can take a `backlog` parameter to specify the maximum + * length of the queue of pending connections. The actual length will be determined + * by the OS through sysctl settings such as `tcp_max_syn_backlog` and `somaxconn`on Linux. The default value of this parameter is 511 (not 512). + * + * All {@link Socket} are set to `SO_REUSEADDR` (see [`socket(7)`](https://man7.org/linux/man-pages/man7/socket.7.html) for + * details). + * + * The `server.listen()` method can be called again if and only if there was an + * error during the first `server.listen()` call or `server.close()` has been + * called. Otherwise, an `ERR_SERVER_ALREADY_LISTEN` error will be thrown. + * + * One of the most common errors raised when listening is `EADDRINUSE`. + * This happens when another server is already listening on the requested`port`/`path`/`handle`. One way to handle this would be to retry + * after a certain amount of time: + * + * ```js + * server.on('error', (e) => { + * if (e.code === 'EADDRINUSE') { + * console.error('Address in use, retrying...'); + * setTimeout(() => { + * server.close(); + * server.listen(PORT, HOST); + * }, 1000); + * } + * }); + * ``` + */ + listen(port?: number, hostname?: string, backlog?: number, listeningListener?: () => void): this; + listen(port?: number, hostname?: string, listeningListener?: () => void): this; + listen(port?: number, backlog?: number, listeningListener?: () => void): this; + listen(port?: number, listeningListener?: () => void): this; + listen(path: string, backlog?: number, listeningListener?: () => void): this; + listen(path: string, listeningListener?: () => void): this; + listen(options: ListenOptions, listeningListener?: () => void): this; + listen(handle: any, backlog?: number, listeningListener?: () => void): this; + listen(handle: any, listeningListener?: () => void): this; + /** + * Stops the server from accepting new connections and keeps existing + * connections. This function is asynchronous, the server is finally closed + * when all connections are ended and the server emits a `'close'` event. + * The optional `callback` will be called once the `'close'` event occurs. Unlike + * that event, it will be called with an `Error` as its only argument if the server + * was not open when it was closed. + * @since v0.1.90 + * @param callback Called when the server is closed. + */ + close(callback?: (err?: Error) => void): this; + /** + * Returns the bound `address`, the address `family` name, and `port` of the server + * as reported by the operating system if listening on an IP socket + * (useful to find which port was assigned when getting an OS-assigned address):`{ port: 12346, family: 'IPv4', address: '127.0.0.1' }`. + * + * For a server listening on a pipe or Unix domain socket, the name is returned + * as a string. + * + * ```js + * const server = net.createServer((socket) => { + * socket.end('goodbye\n'); + * }).on('error', (err) => { + * // Handle errors here. + * throw err; + * }); + * + * // Grab an arbitrary unused port. + * server.listen(() => { + * console.log('opened server on', server.address()); + * }); + * ``` + * + * `server.address()` returns `null` before the `'listening'` event has been + * emitted or after calling `server.close()`. + * @since v0.1.90 + */ + address(): AddressInfo | string | null; + /** + * Asynchronously get the number of concurrent connections on the server. Works + * when sockets were sent to forks. + * + * Callback should take two arguments `err` and `count`. + * @since v0.9.7 + */ + getConnections(cb: (error: Error | null, count: number) => void): void; + /** + * Opposite of `unref()`, calling `ref()` on a previously `unref`ed server will _not_ let the program exit if it's the only server left (the default behavior). + * If the server is `ref`ed calling `ref()` again will have no effect. + * @since v0.9.1 + */ + ref(): this; + /** + * Calling `unref()` on a server will allow the program to exit if this is the only + * active server in the event system. If the server is already `unref`ed calling`unref()` again will have no effect. + * @since v0.9.1 + */ + unref(): this; + /** + * Set this property to reject connections when the server's connection count gets + * high. + * + * It is not recommended to use this option once a socket has been sent to a child + * with `child_process.fork()`. + * @since v0.2.0 + */ + maxConnections: number; + connections: number; + /** + * Indicates whether or not the server is listening for connections. + * @since v5.7.0 + */ + listening: boolean; + /** + * events.EventEmitter + * 1. close + * 2. connection + * 3. error + * 4. listening + * 5. drop + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "connection", listener: (socket: Socket) => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "listening", listener: () => void): this; + addListener(event: "drop", listener: (data?: DropArgument) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "connection", socket: Socket): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "listening"): boolean; + emit(event: "drop", data?: DropArgument): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "close", listener: () => void): this; + on(event: "connection", listener: (socket: Socket) => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "listening", listener: () => void): this; + on(event: "drop", listener: (data?: DropArgument) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "connection", listener: (socket: Socket) => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "listening", listener: () => void): this; + once(event: "drop", listener: (data?: DropArgument) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "connection", listener: (socket: Socket) => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "listening", listener: () => void): this; + prependListener(event: "drop", listener: (data?: DropArgument) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "connection", listener: (socket: Socket) => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "listening", listener: () => void): this; + prependOnceListener(event: "drop", listener: (data?: DropArgument) => void): this; + /** + * Calls {@link Server.close()} and returns a promise that fulfills when the server has closed. + * @since v20.5.0 + */ + [Symbol.asyncDispose](): Promise; + } + type IPVersion = "ipv4" | "ipv6"; + /** + * The `BlockList` object can be used with some network APIs to specify rules for + * disabling inbound or outbound access to specific IP addresses, IP ranges, or + * IP subnets. + * @since v15.0.0, v14.18.0 + */ + class BlockList { + /** + * Adds a rule to block the given IP address. + * @since v15.0.0, v14.18.0 + * @param address An IPv4 or IPv6 address. + * @param [type='ipv4'] Either `'ipv4'` or `'ipv6'`. + */ + addAddress(address: string, type?: IPVersion): void; + addAddress(address: SocketAddress): void; + /** + * Adds a rule to block a range of IP addresses from `start` (inclusive) to`end` (inclusive). + * @since v15.0.0, v14.18.0 + * @param start The starting IPv4 or IPv6 address in the range. + * @param end The ending IPv4 or IPv6 address in the range. + * @param [type='ipv4'] Either `'ipv4'` or `'ipv6'`. + */ + addRange(start: string, end: string, type?: IPVersion): void; + addRange(start: SocketAddress, end: SocketAddress): void; + /** + * Adds a rule to block a range of IP addresses specified as a subnet mask. + * @since v15.0.0, v14.18.0 + * @param net The network IPv4 or IPv6 address. + * @param prefix The number of CIDR prefix bits. For IPv4, this must be a value between `0` and `32`. For IPv6, this must be between `0` and `128`. + * @param [type='ipv4'] Either `'ipv4'` or `'ipv6'`. + */ + addSubnet(net: SocketAddress, prefix: number): void; + addSubnet(net: string, prefix: number, type?: IPVersion): void; + /** + * Returns `true` if the given IP address matches any of the rules added to the`BlockList`. + * + * ```js + * const blockList = new net.BlockList(); + * blockList.addAddress('123.123.123.123'); + * blockList.addRange('10.0.0.1', '10.0.0.10'); + * blockList.addSubnet('8592:757c:efae:4e45::', 64, 'ipv6'); + * + * console.log(blockList.check('123.123.123.123')); // Prints: true + * console.log(blockList.check('10.0.0.3')); // Prints: true + * console.log(blockList.check('222.111.111.222')); // Prints: false + * + * // IPv6 notation for IPv4 addresses works: + * console.log(blockList.check('::ffff:7b7b:7b7b', 'ipv6')); // Prints: true + * console.log(blockList.check('::ffff:123.123.123.123', 'ipv6')); // Prints: true + * ``` + * @since v15.0.0, v14.18.0 + * @param address The IP address to check + * @param [type='ipv4'] Either `'ipv4'` or `'ipv6'`. + */ + check(address: SocketAddress): boolean; + check(address: string, type?: IPVersion): boolean; + } + interface TcpNetConnectOpts extends TcpSocketConnectOpts, SocketConstructorOpts { + timeout?: number | undefined; + } + interface IpcNetConnectOpts extends IpcSocketConnectOpts, SocketConstructorOpts { + timeout?: number | undefined; + } + type NetConnectOpts = TcpNetConnectOpts | IpcNetConnectOpts; + /** + * Creates a new TCP or `IPC` server. + * + * If `allowHalfOpen` is set to `true`, when the other end of the socket + * signals the end of transmission, the server will only send back the end of + * transmission when `socket.end()` is explicitly called. For example, in the + * context of TCP, when a FIN packed is received, a FIN packed is sent + * back only when `socket.end()` is explicitly called. Until then the + * connection is half-closed (non-readable but still writable). See `'end'` event and [RFC 1122](https://tools.ietf.org/html/rfc1122) (section 4.2.2.13) for more information. + * + * If `pauseOnConnect` is set to `true`, then the socket associated with each + * incoming connection will be paused, and no data will be read from its handle. + * This allows connections to be passed between processes without any data being + * read by the original process. To begin reading data from a paused socket, call `socket.resume()`. + * + * The server can be a TCP server or an `IPC` server, depending on what it `listen()` to. + * + * Here is an example of a TCP echo server which listens for connections + * on port 8124: + * + * ```js + * const net = require('node:net'); + * const server = net.createServer((c) => { + * // 'connection' listener. + * console.log('client connected'); + * c.on('end', () => { + * console.log('client disconnected'); + * }); + * c.write('hello\r\n'); + * c.pipe(c); + * }); + * server.on('error', (err) => { + * throw err; + * }); + * server.listen(8124, () => { + * console.log('server bound'); + * }); + * ``` + * + * Test this by using `telnet`: + * + * ```bash + * telnet localhost 8124 + * ``` + * + * To listen on the socket `/tmp/echo.sock`: + * + * ```js + * server.listen('/tmp/echo.sock', () => { + * console.log('server bound'); + * }); + * ``` + * + * Use `nc` to connect to a Unix domain socket server: + * + * ```bash + * nc -U /tmp/echo.sock + * ``` + * @since v0.5.0 + * @param connectionListener Automatically set as a listener for the {@link 'connection'} event. + */ + function createServer(connectionListener?: (socket: Socket) => void): Server; + function createServer(options?: ServerOpts, connectionListener?: (socket: Socket) => void): Server; + /** + * Aliases to {@link createConnection}. + * + * Possible signatures: + * + * * {@link connect} + * * {@link connect} for `IPC` connections. + * * {@link connect} for TCP connections. + */ + function connect(options: NetConnectOpts, connectionListener?: () => void): Socket; + function connect(port: number, host?: string, connectionListener?: () => void): Socket; + function connect(path: string, connectionListener?: () => void): Socket; + /** + * A factory function, which creates a new {@link Socket}, + * immediately initiates connection with `socket.connect()`, + * then returns the `net.Socket` that starts the connection. + * + * When the connection is established, a `'connect'` event will be emitted + * on the returned socket. The last parameter `connectListener`, if supplied, + * will be added as a listener for the `'connect'` event **once**. + * + * Possible signatures: + * + * * {@link createConnection} + * * {@link createConnection} for `IPC` connections. + * * {@link createConnection} for TCP connections. + * + * The {@link connect} function is an alias to this function. + */ + function createConnection(options: NetConnectOpts, connectionListener?: () => void): Socket; + function createConnection(port: number, host?: string, connectionListener?: () => void): Socket; + function createConnection(path: string, connectionListener?: () => void): Socket; + /** + * Gets the current default value of the `autoSelectFamily` option of `socket.connect(options)`. + * The initial default value is `true`, unless the command line option`--no-network-family-autoselection` is provided. + * @since v19.4.0 + */ + function getDefaultAutoSelectFamily(): boolean; + /** + * Sets the default value of the `autoSelectFamily` option of `socket.connect(options)`. + * @since v19.4.0 + */ + function setDefaultAutoSelectFamily(value: boolean): void; + /** + * Gets the current default value of the `autoSelectFamilyAttemptTimeout` option of `socket.connect(options)`. + * The initial default value is `250`. + * @since v19.8.0 + */ + function getDefaultAutoSelectFamilyAttemptTimeout(): number; + /** + * Sets the default value of the `autoSelectFamilyAttemptTimeout` option of `socket.connect(options)`. + * @since v19.8.0 + */ + function setDefaultAutoSelectFamilyAttemptTimeout(value: number): void; + /** + * Returns `6` if `input` is an IPv6 address. Returns `4` if `input` is an IPv4 + * address in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) with no leading zeroes. Otherwise, returns`0`. + * + * ```js + * net.isIP('::1'); // returns 6 + * net.isIP('127.0.0.1'); // returns 4 + * net.isIP('127.000.000.001'); // returns 0 + * net.isIP('127.0.0.1/24'); // returns 0 + * net.isIP('fhqwhgads'); // returns 0 + * ``` + * @since v0.3.0 + */ + function isIP(input: string): number; + /** + * Returns `true` if `input` is an IPv4 address in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation) with no + * leading zeroes. Otherwise, returns `false`. + * + * ```js + * net.isIPv4('127.0.0.1'); // returns true + * net.isIPv4('127.000.000.001'); // returns false + * net.isIPv4('127.0.0.1/24'); // returns false + * net.isIPv4('fhqwhgads'); // returns false + * ``` + * @since v0.3.0 + */ + function isIPv4(input: string): boolean; + /** + * Returns `true` if `input` is an IPv6 address. Otherwise, returns `false`. + * + * ```js + * net.isIPv6('::1'); // returns true + * net.isIPv6('fhqwhgads'); // returns false + * ``` + * @since v0.3.0 + */ + function isIPv6(input: string): boolean; + interface SocketAddressInitOptions { + /** + * The network address as either an IPv4 or IPv6 string. + * @default 127.0.0.1 + */ + address?: string | undefined; + /** + * @default `'ipv4'` + */ + family?: IPVersion | undefined; + /** + * An IPv6 flow-label used only if `family` is `'ipv6'`. + * @default 0 + */ + flowlabel?: number | undefined; + /** + * An IP port. + * @default 0 + */ + port?: number | undefined; + } + /** + * @since v15.14.0, v14.18.0 + */ + class SocketAddress { + constructor(options: SocketAddressInitOptions); + /** + * Either \`'ipv4'\` or \`'ipv6'\`. + * @since v15.14.0, v14.18.0 + */ + readonly address: string; + /** + * Either \`'ipv4'\` or \`'ipv6'\`. + * @since v15.14.0, v14.18.0 + */ + readonly family: IPVersion; + /** + * @since v15.14.0, v14.18.0 + */ + readonly port: number; + /** + * @since v15.14.0, v14.18.0 + */ + readonly flowlabel: number; + } +} +declare module "node:net" { + export * from "net"; +} diff --git a/node_modules/@types/node/ts4.8/os.d.ts b/node_modules/@types/node/ts4.8/os.d.ts new file mode 100644 index 00000000..4fc733b6 --- /dev/null +++ b/node_modules/@types/node/ts4.8/os.d.ts @@ -0,0 +1,477 @@ +/** + * The `node:os` module provides operating system-related utility methods and + * properties. It can be accessed using: + * + * ```js + * const os = require('node:os'); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/os.js) + */ +declare module "os" { + interface CpuInfo { + model: string; + speed: number; + times: { + user: number; + nice: number; + sys: number; + idle: number; + irq: number; + }; + } + interface NetworkInterfaceBase { + address: string; + netmask: string; + mac: string; + internal: boolean; + cidr: string | null; + } + interface NetworkInterfaceInfoIPv4 extends NetworkInterfaceBase { + family: "IPv4"; + scopeid?: undefined; + } + interface NetworkInterfaceInfoIPv6 extends NetworkInterfaceBase { + family: "IPv6"; + scopeid: number; + } + interface UserInfo { + username: T; + uid: number; + gid: number; + shell: T | null; + homedir: T; + } + type NetworkInterfaceInfo = NetworkInterfaceInfoIPv4 | NetworkInterfaceInfoIPv6; + /** + * Returns the host name of the operating system as a string. + * @since v0.3.3 + */ + function hostname(): string; + /** + * Returns an array containing the 1, 5, and 15 minute load averages. + * + * The load average is a measure of system activity calculated by the operating + * system and expressed as a fractional number. + * + * The load average is a Unix-specific concept. On Windows, the return value is + * always `[0, 0, 0]`. + * @since v0.3.3 + */ + function loadavg(): number[]; + /** + * Returns the system uptime in number of seconds. + * @since v0.3.3 + */ + function uptime(): number; + /** + * Returns the amount of free system memory in bytes as an integer. + * @since v0.3.3 + */ + function freemem(): number; + /** + * Returns the total amount of system memory in bytes as an integer. + * @since v0.3.3 + */ + function totalmem(): number; + /** + * Returns an array of objects containing information about each logical CPU core. + * The array will be empty if no CPU information is available, such as if the`/proc` file system is unavailable. + * + * The properties included on each object include: + * + * ```js + * [ + * { + * model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz', + * speed: 2926, + * times: { + * user: 252020, + * nice: 0, + * sys: 30340, + * idle: 1070356870, + * irq: 0, + * }, + * }, + * { + * model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz', + * speed: 2926, + * times: { + * user: 306960, + * nice: 0, + * sys: 26980, + * idle: 1071569080, + * irq: 0, + * }, + * }, + * { + * model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz', + * speed: 2926, + * times: { + * user: 248450, + * nice: 0, + * sys: 21750, + * idle: 1070919370, + * irq: 0, + * }, + * }, + * { + * model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz', + * speed: 2926, + * times: { + * user: 256880, + * nice: 0, + * sys: 19430, + * idle: 1070905480, + * irq: 20, + * }, + * }, + * ] + * ``` + * + * `nice` values are POSIX-only. On Windows, the `nice` values of all processors + * are always 0. + * + * `os.cpus().length` should not be used to calculate the amount of parallelism + * available to an application. Use {@link availableParallelism} for this purpose. + * @since v0.3.3 + */ + function cpus(): CpuInfo[]; + /** + * Returns an estimate of the default amount of parallelism a program should use. + * Always returns a value greater than zero. + * + * This function is a small wrapper about libuv's [`uv_available_parallelism()`](https://docs.libuv.org/en/v1.x/misc.html#c.uv_available_parallelism). + * @since v19.4.0, v18.14.0 + */ + function availableParallelism(): number; + /** + * Returns the operating system name as returned by [`uname(3)`](https://linux.die.net/man/3/uname). For example, it + * returns `'Linux'` on Linux, `'Darwin'` on macOS, and `'Windows_NT'` on Windows. + * + * See [https://en.wikipedia.org/wiki/Uname#Examples](https://en.wikipedia.org/wiki/Uname#Examples) for additional information + * about the output of running [`uname(3)`](https://linux.die.net/man/3/uname) on various operating systems. + * @since v0.3.3 + */ + function type(): string; + /** + * Returns the operating system as a string. + * + * On POSIX systems, the operating system release is determined by calling [`uname(3)`](https://linux.die.net/man/3/uname). On Windows, `GetVersionExW()` is used. See + * [https://en.wikipedia.org/wiki/Uname#Examples](https://en.wikipedia.org/wiki/Uname#Examples) for more information. + * @since v0.3.3 + */ + function release(): string; + /** + * Returns an object containing network interfaces that have been assigned a + * network address. + * + * Each key on the returned object identifies a network interface. The associated + * value is an array of objects that each describe an assigned network address. + * + * The properties available on the assigned network address object include: + * + * ```js + * { + * lo: [ + * { + * address: '127.0.0.1', + * netmask: '255.0.0.0', + * family: 'IPv4', + * mac: '00:00:00:00:00:00', + * internal: true, + * cidr: '127.0.0.1/8' + * }, + * { + * address: '::1', + * netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', + * family: 'IPv6', + * mac: '00:00:00:00:00:00', + * scopeid: 0, + * internal: true, + * cidr: '::1/128' + * } + * ], + * eth0: [ + * { + * address: '192.168.1.108', + * netmask: '255.255.255.0', + * family: 'IPv4', + * mac: '01:02:03:0a:0b:0c', + * internal: false, + * cidr: '192.168.1.108/24' + * }, + * { + * address: 'fe80::a00:27ff:fe4e:66a1', + * netmask: 'ffff:ffff:ffff:ffff::', + * family: 'IPv6', + * mac: '01:02:03:0a:0b:0c', + * scopeid: 1, + * internal: false, + * cidr: 'fe80::a00:27ff:fe4e:66a1/64' + * } + * ] + * } + * ``` + * @since v0.6.0 + */ + function networkInterfaces(): NodeJS.Dict; + /** + * Returns the string path of the current user's home directory. + * + * On POSIX, it uses the `$HOME` environment variable if defined. Otherwise it + * uses the [effective UID](https://en.wikipedia.org/wiki/User_identifier#Effective_user_ID) to look up the user's home directory. + * + * On Windows, it uses the `USERPROFILE` environment variable if defined. + * Otherwise it uses the path to the profile directory of the current user. + * @since v2.3.0 + */ + function homedir(): string; + /** + * Returns information about the currently effective user. On POSIX platforms, + * this is typically a subset of the password file. The returned object includes + * the `username`, `uid`, `gid`, `shell`, and `homedir`. On Windows, the `uid` and`gid` fields are `-1`, and `shell` is `null`. + * + * The value of `homedir` returned by `os.userInfo()` is provided by the operating + * system. This differs from the result of `os.homedir()`, which queries + * environment variables for the home directory before falling back to the + * operating system response. + * + * Throws a `SystemError` if a user has no `username` or `homedir`. + * @since v6.0.0 + */ + function userInfo(options: { encoding: "buffer" }): UserInfo; + function userInfo(options?: { encoding: BufferEncoding }): UserInfo; + type SignalConstants = { + [key in NodeJS.Signals]: number; + }; + namespace constants { + const UV_UDP_REUSEADDR: number; + namespace signals {} + const signals: SignalConstants; + namespace errno { + const E2BIG: number; + const EACCES: number; + const EADDRINUSE: number; + const EADDRNOTAVAIL: number; + const EAFNOSUPPORT: number; + const EAGAIN: number; + const EALREADY: number; + const EBADF: number; + const EBADMSG: number; + const EBUSY: number; + const ECANCELED: number; + const ECHILD: number; + const ECONNABORTED: number; + const ECONNREFUSED: number; + const ECONNRESET: number; + const EDEADLK: number; + const EDESTADDRREQ: number; + const EDOM: number; + const EDQUOT: number; + const EEXIST: number; + const EFAULT: number; + const EFBIG: number; + const EHOSTUNREACH: number; + const EIDRM: number; + const EILSEQ: number; + const EINPROGRESS: number; + const EINTR: number; + const EINVAL: number; + const EIO: number; + const EISCONN: number; + const EISDIR: number; + const ELOOP: number; + const EMFILE: number; + const EMLINK: number; + const EMSGSIZE: number; + const EMULTIHOP: number; + const ENAMETOOLONG: number; + const ENETDOWN: number; + const ENETRESET: number; + const ENETUNREACH: number; + const ENFILE: number; + const ENOBUFS: number; + const ENODATA: number; + const ENODEV: number; + const ENOENT: number; + const ENOEXEC: number; + const ENOLCK: number; + const ENOLINK: number; + const ENOMEM: number; + const ENOMSG: number; + const ENOPROTOOPT: number; + const ENOSPC: number; + const ENOSR: number; + const ENOSTR: number; + const ENOSYS: number; + const ENOTCONN: number; + const ENOTDIR: number; + const ENOTEMPTY: number; + const ENOTSOCK: number; + const ENOTSUP: number; + const ENOTTY: number; + const ENXIO: number; + const EOPNOTSUPP: number; + const EOVERFLOW: number; + const EPERM: number; + const EPIPE: number; + const EPROTO: number; + const EPROTONOSUPPORT: number; + const EPROTOTYPE: number; + const ERANGE: number; + const EROFS: number; + const ESPIPE: number; + const ESRCH: number; + const ESTALE: number; + const ETIME: number; + const ETIMEDOUT: number; + const ETXTBSY: number; + const EWOULDBLOCK: number; + const EXDEV: number; + const WSAEINTR: number; + const WSAEBADF: number; + const WSAEACCES: number; + const WSAEFAULT: number; + const WSAEINVAL: number; + const WSAEMFILE: number; + const WSAEWOULDBLOCK: number; + const WSAEINPROGRESS: number; + const WSAEALREADY: number; + const WSAENOTSOCK: number; + const WSAEDESTADDRREQ: number; + const WSAEMSGSIZE: number; + const WSAEPROTOTYPE: number; + const WSAENOPROTOOPT: number; + const WSAEPROTONOSUPPORT: number; + const WSAESOCKTNOSUPPORT: number; + const WSAEOPNOTSUPP: number; + const WSAEPFNOSUPPORT: number; + const WSAEAFNOSUPPORT: number; + const WSAEADDRINUSE: number; + const WSAEADDRNOTAVAIL: number; + const WSAENETDOWN: number; + const WSAENETUNREACH: number; + const WSAENETRESET: number; + const WSAECONNABORTED: number; + const WSAECONNRESET: number; + const WSAENOBUFS: number; + const WSAEISCONN: number; + const WSAENOTCONN: number; + const WSAESHUTDOWN: number; + const WSAETOOMANYREFS: number; + const WSAETIMEDOUT: number; + const WSAECONNREFUSED: number; + const WSAELOOP: number; + const WSAENAMETOOLONG: number; + const WSAEHOSTDOWN: number; + const WSAEHOSTUNREACH: number; + const WSAENOTEMPTY: number; + const WSAEPROCLIM: number; + const WSAEUSERS: number; + const WSAEDQUOT: number; + const WSAESTALE: number; + const WSAEREMOTE: number; + const WSASYSNOTREADY: number; + const WSAVERNOTSUPPORTED: number; + const WSANOTINITIALISED: number; + const WSAEDISCON: number; + const WSAENOMORE: number; + const WSAECANCELLED: number; + const WSAEINVALIDPROCTABLE: number; + const WSAEINVALIDPROVIDER: number; + const WSAEPROVIDERFAILEDINIT: number; + const WSASYSCALLFAILURE: number; + const WSASERVICE_NOT_FOUND: number; + const WSATYPE_NOT_FOUND: number; + const WSA_E_NO_MORE: number; + const WSA_E_CANCELLED: number; + const WSAEREFUSED: number; + } + namespace priority { + const PRIORITY_LOW: number; + const PRIORITY_BELOW_NORMAL: number; + const PRIORITY_NORMAL: number; + const PRIORITY_ABOVE_NORMAL: number; + const PRIORITY_HIGH: number; + const PRIORITY_HIGHEST: number; + } + } + const devNull: string; + const EOL: string; + /** + * Returns the operating system CPU architecture for which the Node.js binary was + * compiled. Possible values are `'arm'`, `'arm64'`, `'ia32'`, `'mips'`,`'mipsel'`, `'ppc'`, `'ppc64'`, `'riscv64'`, `'s390'`, `'s390x'`, and `'x64'`. + * + * The return value is equivalent to `process.arch`. + * @since v0.5.0 + */ + function arch(): string; + /** + * Returns a string identifying the kernel version. + * + * On POSIX systems, the operating system release is determined by calling [`uname(3)`](https://linux.die.net/man/3/uname). On Windows, `RtlGetVersion()` is used, and if it is not + * available, `GetVersionExW()` will be used. See [https://en.wikipedia.org/wiki/Uname#Examples](https://en.wikipedia.org/wiki/Uname#Examples) for more information. + * @since v13.11.0, v12.17.0 + */ + function version(): string; + /** + * Returns a string identifying the operating system platform for which + * the Node.js binary was compiled. The value is set at compile time. + * Possible values are `'aix'`, `'darwin'`, `'freebsd'`,`'linux'`,`'openbsd'`, `'sunos'`, and `'win32'`. + * + * The return value is equivalent to `process.platform`. + * + * The value `'android'` may also be returned if Node.js is built on the Android + * operating system. [Android support is experimental](https://github.com/nodejs/node/blob/HEAD/BUILDING.md#androidandroid-based-devices-eg-firefox-os). + * @since v0.5.0 + */ + function platform(): NodeJS.Platform; + /** + * Returns the machine type as a string, such as `arm`, `arm64`, `aarch64`,`mips`, `mips64`, `ppc64`, `ppc64le`, `s390`, `s390x`, `i386`, `i686`, `x86_64`. + * + * On POSIX systems, the machine type is determined by calling [`uname(3)`](https://linux.die.net/man/3/uname). On Windows, `RtlGetVersion()` is used, and if it is not + * available, `GetVersionExW()` will be used. See [https://en.wikipedia.org/wiki/Uname#Examples](https://en.wikipedia.org/wiki/Uname#Examples) for more information. + * @since v18.9.0, v16.18.0 + */ + function machine(): string; + /** + * Returns the operating system's default directory for temporary files as a + * string. + * @since v0.9.9 + */ + function tmpdir(): string; + /** + * Returns a string identifying the endianness of the CPU for which the Node.js + * binary was compiled. + * + * Possible values are `'BE'` for big endian and `'LE'` for little endian. + * @since v0.9.4 + */ + function endianness(): "BE" | "LE"; + /** + * Returns the scheduling priority for the process specified by `pid`. If `pid` is + * not provided or is `0`, the priority of the current process is returned. + * @since v10.10.0 + * @param [pid=0] The process ID to retrieve scheduling priority for. + */ + function getPriority(pid?: number): number; + /** + * Attempts to set the scheduling priority for the process specified by `pid`. If`pid` is not provided or is `0`, the process ID of the current process is used. + * + * The `priority` input must be an integer between `-20` (high priority) and `19`(low priority). Due to differences between Unix priority levels and Windows + * priority classes, `priority` is mapped to one of six priority constants in`os.constants.priority`. When retrieving a process priority level, this range + * mapping may cause the return value to be slightly different on Windows. To avoid + * confusion, set `priority` to one of the priority constants. + * + * On Windows, setting priority to `PRIORITY_HIGHEST` requires elevated user + * privileges. Otherwise the set priority will be silently reduced to`PRIORITY_HIGH`. + * @since v10.10.0 + * @param [pid=0] The process ID to set scheduling priority for. + * @param priority The scheduling priority to assign to the process. + */ + function setPriority(priority: number): void; + function setPriority(pid: number, priority: number): void; +} +declare module "node:os" { + export * from "os"; +} diff --git a/node_modules/@types/node/ts4.8/path.d.ts b/node_modules/@types/node/ts4.8/path.d.ts new file mode 100644 index 00000000..6f07681a --- /dev/null +++ b/node_modules/@types/node/ts4.8/path.d.ts @@ -0,0 +1,191 @@ +declare module "path/posix" { + import path = require("path"); + export = path; +} +declare module "path/win32" { + import path = require("path"); + export = path; +} +/** + * The `node:path` module provides utilities for working with file and directory + * paths. It can be accessed using: + * + * ```js + * const path = require('node:path'); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/path.js) + */ +declare module "path" { + namespace path { + /** + * A parsed path object generated by path.parse() or consumed by path.format(). + */ + interface ParsedPath { + /** + * The root of the path such as '/' or 'c:\' + */ + root: string; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir: string; + /** + * The file name including extension (if any) such as 'index.html' + */ + base: string; + /** + * The file extension (if any) such as '.html' + */ + ext: string; + /** + * The file name without extension (if any) such as 'index' + */ + name: string; + } + interface FormatInputPathObject { + /** + * The root of the path such as '/' or 'c:\' + */ + root?: string | undefined; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir?: string | undefined; + /** + * The file name including extension (if any) such as 'index.html' + */ + base?: string | undefined; + /** + * The file extension (if any) such as '.html' + */ + ext?: string | undefined; + /** + * The file name without extension (if any) such as 'index' + */ + name?: string | undefined; + } + interface PlatformPath { + /** + * Normalize a string path, reducing '..' and '.' parts. + * When multiple slashes are found, they're replaced by a single one; when the path contains a trailing slash, it is preserved. On Windows backslashes are used. + * + * @param path string path to normalize. + * @throws {TypeError} if `path` is not a string. + */ + normalize(path: string): string; + /** + * Join all arguments together and normalize the resulting path. + * + * @param paths paths to join. + * @throws {TypeError} if any of the path segments is not a string. + */ + join(...paths: string[]): string; + /** + * The right-most parameter is considered {to}. Other parameters are considered an array of {from}. + * + * Starting from leftmost {from} parameter, resolves {to} to an absolute path. + * + * If {to} isn't already absolute, {from} arguments are prepended in right to left order, + * until an absolute path is found. If after using all {from} paths still no absolute path is found, + * the current working directory is used as well. The resulting path is normalized, + * and trailing slashes are removed unless the path gets resolved to the root directory. + * + * @param paths A sequence of paths or path segments. + * @throws {TypeError} if any of the arguments is not a string. + */ + resolve(...paths: string[]): string; + /** + * Determines whether {path} is an absolute path. An absolute path will always resolve to the same location, regardless of the working directory. + * + * If the given {path} is a zero-length string, `false` will be returned. + * + * @param path path to test. + * @throws {TypeError} if `path` is not a string. + */ + isAbsolute(path: string): boolean; + /** + * Solve the relative path from {from} to {to} based on the current working directory. + * At times we have two absolute paths, and we need to derive the relative path from one to the other. This is actually the reverse transform of path.resolve. + * + * @throws {TypeError} if either `from` or `to` is not a string. + */ + relative(from: string, to: string): string; + /** + * Return the directory name of a path. Similar to the Unix dirname command. + * + * @param path the path to evaluate. + * @throws {TypeError} if `path` is not a string. + */ + dirname(path: string): string; + /** + * Return the last portion of a path. Similar to the Unix basename command. + * Often used to extract the file name from a fully qualified path. + * + * @param path the path to evaluate. + * @param suffix optionally, an extension to remove from the result. + * @throws {TypeError} if `path` is not a string or if `ext` is given and is not a string. + */ + basename(path: string, suffix?: string): string; + /** + * Return the extension of the path, from the last '.' to end of string in the last portion of the path. + * If there is no '.' in the last portion of the path or the first character of it is '.', then it returns an empty string. + * + * @param path the path to evaluate. + * @throws {TypeError} if `path` is not a string. + */ + extname(path: string): string; + /** + * The platform-specific file separator. '\\' or '/'. + */ + readonly sep: "\\" | "/"; + /** + * The platform-specific file delimiter. ';' or ':'. + */ + readonly delimiter: ";" | ":"; + /** + * Returns an object from a path string - the opposite of format(). + * + * @param path path to evaluate. + * @throws {TypeError} if `path` is not a string. + */ + parse(path: string): ParsedPath; + /** + * Returns a path string from an object - the opposite of parse(). + * + * @param pathObject path to evaluate. + */ + format(pathObject: FormatInputPathObject): string; + /** + * On Windows systems only, returns an equivalent namespace-prefixed path for the given path. + * If path is not a string, path will be returned without modifications. + * This method is meaningful only on Windows system. + * On POSIX systems, the method is non-operational and always returns path without modifications. + */ + toNamespacedPath(path: string): string; + /** + * Posix specific pathing. + * Same as parent object on posix. + */ + readonly posix: PlatformPath; + /** + * Windows specific pathing. + * Same as parent object on windows + */ + readonly win32: PlatformPath; + } + } + const path: path.PlatformPath; + export = path; +} +declare module "node:path" { + import path = require("path"); + export = path; +} +declare module "node:path/posix" { + import path = require("path/posix"); + export = path; +} +declare module "node:path/win32" { + import path = require("path/win32"); + export = path; +} diff --git a/node_modules/@types/node/ts4.8/perf_hooks.d.ts b/node_modules/@types/node/ts4.8/perf_hooks.d.ts new file mode 100644 index 00000000..0e6b843a --- /dev/null +++ b/node_modules/@types/node/ts4.8/perf_hooks.d.ts @@ -0,0 +1,639 @@ +/** + * This module provides an implementation of a subset of the W3C [Web Performance APIs](https://w3c.github.io/perf-timing-primer/) as well as additional APIs for + * Node.js-specific performance measurements. + * + * Node.js supports the following [Web Performance APIs](https://w3c.github.io/perf-timing-primer/): + * + * * [High Resolution Time](https://www.w3.org/TR/hr-time-2) + * * [Performance Timeline](https://w3c.github.io/performance-timeline/) + * * [User Timing](https://www.w3.org/TR/user-timing/) + * * [Resource Timing](https://www.w3.org/TR/resource-timing-2/) + * + * ```js + * const { PerformanceObserver, performance } = require('node:perf_hooks'); + * + * const obs = new PerformanceObserver((items) => { + * console.log(items.getEntries()[0].duration); + * performance.clearMarks(); + * }); + * obs.observe({ type: 'measure' }); + * performance.measure('Start to Now'); + * + * performance.mark('A'); + * doSomeLongRunningProcess(() => { + * performance.measure('A to Now', 'A'); + * + * performance.mark('B'); + * performance.measure('A to B', 'A', 'B'); + * }); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/perf_hooks.js) + */ +declare module "perf_hooks" { + import { AsyncResource } from "node:async_hooks"; + type EntryType = "node" | "mark" | "measure" | "gc" | "function" | "http2" | "http"; + interface NodeGCPerformanceDetail { + /** + * When `performanceEntry.entryType` is equal to 'gc', `the performance.kind` property identifies + * the type of garbage collection operation that occurred. + * See perf_hooks.constants for valid values. + */ + readonly kind?: number | undefined; + /** + * When `performanceEntry.entryType` is equal to 'gc', the `performance.flags` + * property contains additional information about garbage collection operation. + * See perf_hooks.constants for valid values. + */ + readonly flags?: number | undefined; + } + /** + * The constructor of this class is not exposed to users directly. + * @since v8.5.0 + */ + class PerformanceEntry { + protected constructor(); + /** + * The total number of milliseconds elapsed for this entry. This value will not + * be meaningful for all Performance Entry types. + * @since v8.5.0 + */ + readonly duration: number; + /** + * The name of the performance entry. + * @since v8.5.0 + */ + readonly name: string; + /** + * The high resolution millisecond timestamp marking the starting time of the + * Performance Entry. + * @since v8.5.0 + */ + readonly startTime: number; + /** + * The type of the performance entry. It may be one of: + * + * * `'node'` (Node.js only) + * * `'mark'` (available on the Web) + * * `'measure'` (available on the Web) + * * `'gc'` (Node.js only) + * * `'function'` (Node.js only) + * * `'http2'` (Node.js only) + * * `'http'` (Node.js only) + * @since v8.5.0 + */ + readonly entryType: EntryType; + /** + * Additional detail specific to the `entryType`. + * @since v16.0.0 + */ + readonly detail?: NodeGCPerformanceDetail | unknown | undefined; // TODO: Narrow this based on entry type. + toJSON(): any; + } + /** + * Exposes marks created via the `Performance.mark()` method. + * @since v18.2.0, v16.17.0 + */ + class PerformanceMark extends PerformanceEntry { + readonly duration: 0; + readonly entryType: "mark"; + } + /** + * Exposes measures created via the `Performance.measure()` method. + * + * The constructor of this class is not exposed to users directly. + * @since v18.2.0, v16.17.0 + */ + class PerformanceMeasure extends PerformanceEntry { + readonly entryType: "measure"; + } + /** + * _This property is an extension by Node.js. It is not available in Web browsers._ + * + * Provides timing details for Node.js itself. The constructor of this class + * is not exposed to users. + * @since v8.5.0 + */ + class PerformanceNodeTiming extends PerformanceEntry { + /** + * The high resolution millisecond timestamp at which the Node.js process + * completed bootstrapping. If bootstrapping has not yet finished, the property + * has the value of -1. + * @since v8.5.0 + */ + readonly bootstrapComplete: number; + /** + * The high resolution millisecond timestamp at which the Node.js environment was + * initialized. + * @since v8.5.0 + */ + readonly environment: number; + /** + * The high resolution millisecond timestamp of the amount of time the event loop + * has been idle within the event loop's event provider (e.g. `epoll_wait`). This + * does not take CPU usage into consideration. If the event loop has not yet + * started (e.g., in the first tick of the main script), the property has the + * value of 0. + * @since v14.10.0, v12.19.0 + */ + readonly idleTime: number; + /** + * The high resolution millisecond timestamp at which the Node.js event loop + * exited. If the event loop has not yet exited, the property has the value of -1\. + * It can only have a value of not -1 in a handler of the `'exit'` event. + * @since v8.5.0 + */ + readonly loopExit: number; + /** + * The high resolution millisecond timestamp at which the Node.js event loop + * started. If the event loop has not yet started (e.g., in the first tick of the + * main script), the property has the value of -1. + * @since v8.5.0 + */ + readonly loopStart: number; + /** + * The high resolution millisecond timestamp at which the V8 platform was + * initialized. + * @since v8.5.0 + */ + readonly v8Start: number; + } + interface EventLoopUtilization { + idle: number; + active: number; + utilization: number; + } + /** + * @param util1 The result of a previous call to eventLoopUtilization() + * @param util2 The result of a previous call to eventLoopUtilization() prior to util1 + */ + type EventLoopUtilityFunction = ( + util1?: EventLoopUtilization, + util2?: EventLoopUtilization, + ) => EventLoopUtilization; + interface MarkOptions { + /** + * Additional optional detail to include with the mark. + */ + detail?: unknown | undefined; + /** + * An optional timestamp to be used as the mark time. + * @default `performance.now()`. + */ + startTime?: number | undefined; + } + interface MeasureOptions { + /** + * Additional optional detail to include with the mark. + */ + detail?: unknown | undefined; + /** + * Duration between start and end times. + */ + duration?: number | undefined; + /** + * Timestamp to be used as the end time, or a string identifying a previously recorded mark. + */ + end?: number | string | undefined; + /** + * Timestamp to be used as the start time, or a string identifying a previously recorded mark. + */ + start?: number | string | undefined; + } + interface TimerifyOptions { + /** + * A histogram object created using + * `perf_hooks.createHistogram()` that will record runtime durations in + * nanoseconds. + */ + histogram?: RecordableHistogram | undefined; + } + interface Performance { + /** + * If name is not provided, removes all PerformanceMark objects from the Performance Timeline. + * If name is provided, removes only the named mark. + * @param name + */ + clearMarks(name?: string): void; + /** + * If name is not provided, removes all PerformanceMeasure objects from the Performance Timeline. + * If name is provided, removes only the named measure. + * @param name + * @since v16.7.0 + */ + clearMeasures(name?: string): void; + /** + * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime`. + * If you are only interested in performance entries of certain types or that have certain names, see + * `performance.getEntriesByType()` and `performance.getEntriesByName()`. + * @since v16.7.0 + */ + getEntries(): PerformanceEntry[]; + /** + * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime` + * whose `performanceEntry.name` is equal to `name`, and optionally, whose `performanceEntry.entryType` is equal to `type`. + * @param name + * @param type + * @since v16.7.0 + */ + getEntriesByName(name: string, type?: EntryType): PerformanceEntry[]; + /** + * Returns a list of `PerformanceEntry` objects in chronological order with respect to `performanceEntry.startTime` + * whose `performanceEntry.entryType` is equal to `type`. + * @param type + * @since v16.7.0 + */ + getEntriesByType(type: EntryType): PerformanceEntry[]; + /** + * Creates a new PerformanceMark entry in the Performance Timeline. + * A PerformanceMark is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'mark', + * and whose performanceEntry.duration is always 0. + * Performance marks are used to mark specific significant moments in the Performance Timeline. + * @param name + * @return The PerformanceMark entry that was created + */ + mark(name?: string, options?: MarkOptions): PerformanceMark; + /** + * Creates a new PerformanceMeasure entry in the Performance Timeline. + * A PerformanceMeasure is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'measure', + * and whose performanceEntry.duration measures the number of milliseconds elapsed since startMark and endMark. + * + * The startMark argument may identify any existing PerformanceMark in the the Performance Timeline, or may identify + * any of the timestamp properties provided by the PerformanceNodeTiming class. If the named startMark does not exist, + * then startMark is set to timeOrigin by default. + * + * The endMark argument must identify any existing PerformanceMark in the the Performance Timeline or any of the timestamp + * properties provided by the PerformanceNodeTiming class. If the named endMark does not exist, an error will be thrown. + * @param name + * @param startMark + * @param endMark + * @return The PerformanceMeasure entry that was created + */ + measure(name: string, startMark?: string, endMark?: string): PerformanceMeasure; + measure(name: string, options: MeasureOptions): PerformanceMeasure; + /** + * An instance of the PerformanceNodeTiming class that provides performance metrics for specific Node.js operational milestones. + */ + readonly nodeTiming: PerformanceNodeTiming; + /** + * @return the current high resolution millisecond timestamp + */ + now(): number; + /** + * The timeOrigin specifies the high resolution millisecond timestamp from which all performance metric durations are measured. + */ + readonly timeOrigin: number; + /** + * Wraps a function within a new function that measures the running time of the wrapped function. + * A PerformanceObserver must be subscribed to the 'function' event type in order for the timing details to be accessed. + * @param fn + */ + timerify any>(fn: T, options?: TimerifyOptions): T; + /** + * eventLoopUtilization is similar to CPU utilization except that it is calculated using high precision wall-clock time. + * It represents the percentage of time the event loop has spent outside the event loop's event provider (e.g. epoll_wait). + * No other CPU idle time is taken into consideration. + */ + eventLoopUtilization: EventLoopUtilityFunction; + } + interface PerformanceObserverEntryList { + /** + * Returns a list of `PerformanceEntry` objects in chronological order + * with respect to `performanceEntry.startTime`. + * + * ```js + * const { + * performance, + * PerformanceObserver, + * } = require('node:perf_hooks'); + * + * const obs = new PerformanceObserver((perfObserverList, observer) => { + * console.log(perfObserverList.getEntries()); + * + * * [ + * * PerformanceEntry { + * * name: 'test', + * * entryType: 'mark', + * * startTime: 81.465639, + * * duration: 0 + * * }, + * * PerformanceEntry { + * * name: 'meow', + * * entryType: 'mark', + * * startTime: 81.860064, + * * duration: 0 + * * } + * * ] + * + * performance.clearMarks(); + * performance.clearMeasures(); + * observer.disconnect(); + * }); + * obs.observe({ type: 'mark' }); + * + * performance.mark('test'); + * performance.mark('meow'); + * ``` + * @since v8.5.0 + */ + getEntries(): PerformanceEntry[]; + /** + * Returns a list of `PerformanceEntry` objects in chronological order + * with respect to `performanceEntry.startTime` whose `performanceEntry.name` is + * equal to `name`, and optionally, whose `performanceEntry.entryType` is equal to`type`. + * + * ```js + * const { + * performance, + * PerformanceObserver, + * } = require('node:perf_hooks'); + * + * const obs = new PerformanceObserver((perfObserverList, observer) => { + * console.log(perfObserverList.getEntriesByName('meow')); + * + * * [ + * * PerformanceEntry { + * * name: 'meow', + * * entryType: 'mark', + * * startTime: 98.545991, + * * duration: 0 + * * } + * * ] + * + * console.log(perfObserverList.getEntriesByName('nope')); // [] + * + * console.log(perfObserverList.getEntriesByName('test', 'mark')); + * + * * [ + * * PerformanceEntry { + * * name: 'test', + * * entryType: 'mark', + * * startTime: 63.518931, + * * duration: 0 + * * } + * * ] + * + * console.log(perfObserverList.getEntriesByName('test', 'measure')); // [] + * + * performance.clearMarks(); + * performance.clearMeasures(); + * observer.disconnect(); + * }); + * obs.observe({ entryTypes: ['mark', 'measure'] }); + * + * performance.mark('test'); + * performance.mark('meow'); + * ``` + * @since v8.5.0 + */ + getEntriesByName(name: string, type?: EntryType): PerformanceEntry[]; + /** + * Returns a list of `PerformanceEntry` objects in chronological order + * with respect to `performanceEntry.startTime` whose `performanceEntry.entryType`is equal to `type`. + * + * ```js + * const { + * performance, + * PerformanceObserver, + * } = require('node:perf_hooks'); + * + * const obs = new PerformanceObserver((perfObserverList, observer) => { + * console.log(perfObserverList.getEntriesByType('mark')); + * + * * [ + * * PerformanceEntry { + * * name: 'test', + * * entryType: 'mark', + * * startTime: 55.897834, + * * duration: 0 + * * }, + * * PerformanceEntry { + * * name: 'meow', + * * entryType: 'mark', + * * startTime: 56.350146, + * * duration: 0 + * * } + * * ] + * + * performance.clearMarks(); + * performance.clearMeasures(); + * observer.disconnect(); + * }); + * obs.observe({ type: 'mark' }); + * + * performance.mark('test'); + * performance.mark('meow'); + * ``` + * @since v8.5.0 + */ + getEntriesByType(type: EntryType): PerformanceEntry[]; + } + type PerformanceObserverCallback = (list: PerformanceObserverEntryList, observer: PerformanceObserver) => void; + /** + * @since v8.5.0 + */ + class PerformanceObserver extends AsyncResource { + constructor(callback: PerformanceObserverCallback); + /** + * Disconnects the `PerformanceObserver` instance from all notifications. + * @since v8.5.0 + */ + disconnect(): void; + /** + * Subscribes the `PerformanceObserver` instance to notifications of new `PerformanceEntry` instances identified either by `options.entryTypes`or `options.type`: + * + * ```js + * const { + * performance, + * PerformanceObserver, + * } = require('node:perf_hooks'); + * + * const obs = new PerformanceObserver((list, observer) => { + * // Called once asynchronously. `list` contains three items. + * }); + * obs.observe({ type: 'mark' }); + * + * for (let n = 0; n < 3; n++) + * performance.mark(`test${n}`); + * ``` + * @since v8.5.0 + */ + observe( + options: + | { + entryTypes: ReadonlyArray; + buffered?: boolean | undefined; + } + | { + type: EntryType; + buffered?: boolean | undefined; + }, + ): void; + } + namespace constants { + const NODE_PERFORMANCE_GC_MAJOR: number; + const NODE_PERFORMANCE_GC_MINOR: number; + const NODE_PERFORMANCE_GC_INCREMENTAL: number; + const NODE_PERFORMANCE_GC_WEAKCB: number; + const NODE_PERFORMANCE_GC_FLAGS_NO: number; + const NODE_PERFORMANCE_GC_FLAGS_CONSTRUCT_RETAINED: number; + const NODE_PERFORMANCE_GC_FLAGS_FORCED: number; + const NODE_PERFORMANCE_GC_FLAGS_SYNCHRONOUS_PHANTOM_PROCESSING: number; + const NODE_PERFORMANCE_GC_FLAGS_ALL_AVAILABLE_GARBAGE: number; + const NODE_PERFORMANCE_GC_FLAGS_ALL_EXTERNAL_MEMORY: number; + const NODE_PERFORMANCE_GC_FLAGS_SCHEDULE_IDLE: number; + } + const performance: Performance; + interface EventLoopMonitorOptions { + /** + * The sampling rate in milliseconds. + * Must be greater than zero. + * @default 10 + */ + resolution?: number | undefined; + } + interface Histogram { + /** + * Returns a `Map` object detailing the accumulated percentile distribution. + * @since v11.10.0 + */ + readonly percentiles: Map; + /** + * The number of times the event loop delay exceeded the maximum 1 hour event + * loop delay threshold. + * @since v11.10.0 + */ + readonly exceeds: number; + /** + * The minimum recorded event loop delay. + * @since v11.10.0 + */ + readonly min: number; + /** + * The maximum recorded event loop delay. + * @since v11.10.0 + */ + readonly max: number; + /** + * The mean of the recorded event loop delays. + * @since v11.10.0 + */ + readonly mean: number; + /** + * The standard deviation of the recorded event loop delays. + * @since v11.10.0 + */ + readonly stddev: number; + /** + * Resets the collected histogram data. + * @since v11.10.0 + */ + reset(): void; + /** + * Returns the value at the given percentile. + * @since v11.10.0 + * @param percentile A percentile value in the range (0, 100]. + */ + percentile(percentile: number): number; + } + interface IntervalHistogram extends Histogram { + /** + * Enables the update interval timer. Returns `true` if the timer was + * started, `false` if it was already started. + * @since v11.10.0 + */ + enable(): boolean; + /** + * Disables the update interval timer. Returns `true` if the timer was + * stopped, `false` if it was already stopped. + * @since v11.10.0 + */ + disable(): boolean; + } + interface RecordableHistogram extends Histogram { + /** + * @since v15.9.0, v14.18.0 + * @param val The amount to record in the histogram. + */ + record(val: number | bigint): void; + /** + * Calculates the amount of time (in nanoseconds) that has passed since the + * previous call to `recordDelta()` and records that amount in the histogram. + * + * ## Examples + * @since v15.9.0, v14.18.0 + */ + recordDelta(): void; + /** + * Adds the values from `other` to this histogram. + * @since v17.4.0, v16.14.0 + */ + add(other: RecordableHistogram): void; + } + /** + * _This property is an extension by Node.js. It is not available in Web browsers._ + * + * Creates an `IntervalHistogram` object that samples and reports the event loop + * delay over time. The delays will be reported in nanoseconds. + * + * Using a timer to detect approximate event loop delay works because the + * execution of timers is tied specifically to the lifecycle of the libuv + * event loop. That is, a delay in the loop will cause a delay in the execution + * of the timer, and those delays are specifically what this API is intended to + * detect. + * + * ```js + * const { monitorEventLoopDelay } = require('node:perf_hooks'); + * const h = monitorEventLoopDelay({ resolution: 20 }); + * h.enable(); + * // Do something. + * h.disable(); + * console.log(h.min); + * console.log(h.max); + * console.log(h.mean); + * console.log(h.stddev); + * console.log(h.percentiles); + * console.log(h.percentile(50)); + * console.log(h.percentile(99)); + * ``` + * @since v11.10.0 + */ + function monitorEventLoopDelay(options?: EventLoopMonitorOptions): IntervalHistogram; + interface CreateHistogramOptions { + /** + * The minimum recordable value. Must be an integer value greater than 0. + * @default 1 + */ + min?: number | bigint | undefined; + /** + * The maximum recordable value. Must be an integer value greater than min. + * @default Number.MAX_SAFE_INTEGER + */ + max?: number | bigint | undefined; + /** + * The number of accuracy digits. Must be a number between 1 and 5. + * @default 3 + */ + figures?: number | undefined; + } + /** + * Returns a `RecordableHistogram`. + * @since v15.9.0, v14.18.0 + */ + function createHistogram(options?: CreateHistogramOptions): RecordableHistogram; + import { performance as _performance } from "perf_hooks"; + global { + /** + * `performance` is a global reference for `require('perf_hooks').performance` + * https://nodejs.org/api/globals.html#performance + * @since v16.0.0 + */ + var performance: typeof globalThis extends { + onmessage: any; + performance: infer T; + } ? T + : typeof _performance; + } +} +declare module "node:perf_hooks" { + export * from "perf_hooks"; +} diff --git a/node_modules/@types/node/ts4.8/process.d.ts b/node_modules/@types/node/ts4.8/process.d.ts new file mode 100644 index 00000000..1ec9e83b --- /dev/null +++ b/node_modules/@types/node/ts4.8/process.d.ts @@ -0,0 +1,1532 @@ +declare module "process" { + import * as tty from "node:tty"; + import { Worker } from "node:worker_threads"; + global { + var process: NodeJS.Process; + namespace NodeJS { + // this namespace merge is here because these are specifically used + // as the type for process.stdin, process.stdout, and process.stderr. + // they can't live in tty.d.ts because we need to disambiguate the imported name. + interface ReadStream extends tty.ReadStream {} + interface WriteStream extends tty.WriteStream {} + interface MemoryUsageFn { + /** + * The `process.memoryUsage()` method iterate over each page to gather informations about memory + * usage which can be slow depending on the program memory allocations. + */ + (): MemoryUsage; + /** + * method returns an integer representing the Resident Set Size (RSS) in bytes. + */ + rss(): number; + } + interface MemoryUsage { + rss: number; + heapTotal: number; + heapUsed: number; + external: number; + arrayBuffers: number; + } + interface CpuUsage { + user: number; + system: number; + } + interface ProcessRelease { + name: string; + sourceUrl?: string | undefined; + headersUrl?: string | undefined; + libUrl?: string | undefined; + lts?: string | undefined; + } + interface ProcessVersions extends Dict { + http_parser: string; + node: string; + v8: string; + ares: string; + uv: string; + zlib: string; + modules: string; + openssl: string; + } + type Platform = + | "aix" + | "android" + | "darwin" + | "freebsd" + | "haiku" + | "linux" + | "openbsd" + | "sunos" + | "win32" + | "cygwin" + | "netbsd"; + type Architecture = + | "arm" + | "arm64" + | "ia32" + | "mips" + | "mipsel" + | "ppc" + | "ppc64" + | "riscv64" + | "s390" + | "s390x" + | "x64"; + type Signals = + | "SIGABRT" + | "SIGALRM" + | "SIGBUS" + | "SIGCHLD" + | "SIGCONT" + | "SIGFPE" + | "SIGHUP" + | "SIGILL" + | "SIGINT" + | "SIGIO" + | "SIGIOT" + | "SIGKILL" + | "SIGPIPE" + | "SIGPOLL" + | "SIGPROF" + | "SIGPWR" + | "SIGQUIT" + | "SIGSEGV" + | "SIGSTKFLT" + | "SIGSTOP" + | "SIGSYS" + | "SIGTERM" + | "SIGTRAP" + | "SIGTSTP" + | "SIGTTIN" + | "SIGTTOU" + | "SIGUNUSED" + | "SIGURG" + | "SIGUSR1" + | "SIGUSR2" + | "SIGVTALRM" + | "SIGWINCH" + | "SIGXCPU" + | "SIGXFSZ" + | "SIGBREAK" + | "SIGLOST" + | "SIGINFO"; + type UncaughtExceptionOrigin = "uncaughtException" | "unhandledRejection"; + type MultipleResolveType = "resolve" | "reject"; + type BeforeExitListener = (code: number) => void; + type DisconnectListener = () => void; + type ExitListener = (code: number) => void; + type RejectionHandledListener = (promise: Promise) => void; + type UncaughtExceptionListener = (error: Error, origin: UncaughtExceptionOrigin) => void; + /** + * Most of the time the unhandledRejection will be an Error, but this should not be relied upon + * as *anything* can be thrown/rejected, it is therefore unsafe to assume that the value is an Error. + */ + type UnhandledRejectionListener = (reason: unknown, promise: Promise) => void; + type WarningListener = (warning: Error) => void; + type MessageListener = (message: unknown, sendHandle: unknown) => void; + type SignalsListener = (signal: Signals) => void; + type MultipleResolveListener = ( + type: MultipleResolveType, + promise: Promise, + value: unknown, + ) => void; + type WorkerListener = (worker: Worker) => void; + interface Socket extends ReadWriteStream { + isTTY?: true | undefined; + } + // Alias for compatibility + interface ProcessEnv extends Dict { + /** + * Can be used to change the default timezone at runtime + */ + TZ?: string; + } + interface HRTime { + (time?: [number, number]): [number, number]; + bigint(): bigint; + } + interface ProcessReport { + /** + * Directory where the report is written. + * working directory of the Node.js process. + * @default '' indicating that reports are written to the current + */ + directory: string; + /** + * Filename where the report is written. + * The default value is the empty string. + * @default '' the output filename will be comprised of a timestamp, + * PID, and sequence number. + */ + filename: string; + /** + * Returns a JSON-formatted diagnostic report for the running process. + * The report's JavaScript stack trace is taken from err, if present. + */ + getReport(err?: Error): string; + /** + * If true, a diagnostic report is generated on fatal errors, + * such as out of memory errors or failed C++ assertions. + * @default false + */ + reportOnFatalError: boolean; + /** + * If true, a diagnostic report is generated when the process + * receives the signal specified by process.report.signal. + * @default false + */ + reportOnSignal: boolean; + /** + * If true, a diagnostic report is generated on uncaught exception. + * @default false + */ + reportOnUncaughtException: boolean; + /** + * The signal used to trigger the creation of a diagnostic report. + * @default 'SIGUSR2' + */ + signal: Signals; + /** + * Writes a diagnostic report to a file. If filename is not provided, the default filename + * includes the date, time, PID, and a sequence number. + * The report's JavaScript stack trace is taken from err, if present. + * + * @param fileName Name of the file where the report is written. + * This should be a relative path, that will be appended to the directory specified in + * `process.report.directory`, or the current working directory of the Node.js process, + * if unspecified. + * @param error A custom error used for reporting the JavaScript stack. + * @return Filename of the generated report. + */ + writeReport(fileName?: string): string; + writeReport(error?: Error): string; + writeReport(fileName?: string, err?: Error): string; + } + interface ResourceUsage { + fsRead: number; + fsWrite: number; + involuntaryContextSwitches: number; + ipcReceived: number; + ipcSent: number; + majorPageFault: number; + maxRSS: number; + minorPageFault: number; + sharedMemorySize: number; + signalsCount: number; + swappedOut: number; + systemCPUTime: number; + unsharedDataSize: number; + unsharedStackSize: number; + userCPUTime: number; + voluntaryContextSwitches: number; + } + interface EmitWarningOptions { + /** + * When `warning` is a `string`, `type` is the name to use for the _type_ of warning being emitted. + * + * @default 'Warning' + */ + type?: string | undefined; + /** + * A unique identifier for the warning instance being emitted. + */ + code?: string | undefined; + /** + * When `warning` is a `string`, `ctor` is an optional function used to limit the generated stack trace. + * + * @default process.emitWarning + */ + ctor?: Function | undefined; + /** + * Additional text to include with the error. + */ + detail?: string | undefined; + } + interface ProcessConfig { + readonly target_defaults: { + readonly cflags: any[]; + readonly default_configuration: string; + readonly defines: string[]; + readonly include_dirs: string[]; + readonly libraries: string[]; + }; + readonly variables: { + readonly clang: number; + readonly host_arch: string; + readonly node_install_npm: boolean; + readonly node_install_waf: boolean; + readonly node_prefix: string; + readonly node_shared_openssl: boolean; + readonly node_shared_v8: boolean; + readonly node_shared_zlib: boolean; + readonly node_use_dtrace: boolean; + readonly node_use_etw: boolean; + readonly node_use_openssl: boolean; + readonly target_arch: string; + readonly v8_no_strict_aliasing: number; + readonly v8_use_snapshot: boolean; + readonly visibility: string; + }; + } + interface Process extends EventEmitter { + /** + * The `process.stdout` property returns a stream connected to`stdout` (fd `1`). It is a `net.Socket` (which is a `Duplex` stream) unless fd `1` refers to a file, in which case it is + * a `Writable` stream. + * + * For example, to copy `process.stdin` to `process.stdout`: + * + * ```js + * import { stdin, stdout } from 'node:process'; + * + * stdin.pipe(stdout); + * ``` + * + * `process.stdout` differs from other Node.js streams in important ways. See `note on process I/O` for more information. + */ + stdout: WriteStream & { + fd: 1; + }; + /** + * The `process.stderr` property returns a stream connected to`stderr` (fd `2`). It is a `net.Socket` (which is a `Duplex` stream) unless fd `2` refers to a file, in which case it is + * a `Writable` stream. + * + * `process.stderr` differs from other Node.js streams in important ways. See `note on process I/O` for more information. + */ + stderr: WriteStream & { + fd: 2; + }; + /** + * The `process.stdin` property returns a stream connected to`stdin` (fd `0`). It is a `net.Socket` (which is a `Duplex` stream) unless fd `0` refers to a file, in which case it is + * a `Readable` stream. + * + * For details of how to read from `stdin` see `readable.read()`. + * + * As a `Duplex` stream, `process.stdin` can also be used in "old" mode that + * is compatible with scripts written for Node.js prior to v0.10\. + * For more information see `Stream compatibility`. + * + * In "old" streams mode the `stdin` stream is paused by default, so one + * must call `process.stdin.resume()` to read from it. Note also that calling`process.stdin.resume()` itself would switch stream to "old" mode. + */ + stdin: ReadStream & { + fd: 0; + }; + openStdin(): Socket; + /** + * The `process.argv` property returns an array containing the command-line + * arguments passed when the Node.js process was launched. The first element will + * be {@link execPath}. See `process.argv0` if access to the original value + * of `argv[0]` is needed. The second element will be the path to the JavaScript + * file being executed. The remaining elements will be any additional command-line + * arguments. + * + * For example, assuming the following script for `process-args.js`: + * + * ```js + * import { argv } from 'node:process'; + * + * // print process.argv + * argv.forEach((val, index) => { + * console.log(`${index}: ${val}`); + * }); + * ``` + * + * Launching the Node.js process as: + * + * ```bash + * node process-args.js one two=three four + * ``` + * + * Would generate the output: + * + * ```text + * 0: /usr/local/bin/node + * 1: /Users/mjr/work/node/process-args.js + * 2: one + * 3: two=three + * 4: four + * ``` + * @since v0.1.27 + */ + argv: string[]; + /** + * The `process.argv0` property stores a read-only copy of the original value of`argv[0]` passed when Node.js starts. + * + * ```console + * $ bash -c 'exec -a customArgv0 ./node' + * > process.argv[0] + * '/Volumes/code/external/node/out/Release/node' + * > process.argv0 + * 'customArgv0' + * ``` + * @since v6.4.0 + */ + argv0: string; + /** + * The `process.execArgv` property returns the set of Node.js-specific command-line + * options passed when the Node.js process was launched. These options do not + * appear in the array returned by the {@link argv} property, and do not + * include the Node.js executable, the name of the script, or any options following + * the script name. These options are useful in order to spawn child processes with + * the same execution environment as the parent. + * + * ```bash + * node --harmony script.js --version + * ``` + * + * Results in `process.execArgv`: + * + * ```js + * ['--harmony'] + * ``` + * + * And `process.argv`: + * + * ```js + * ['/usr/local/bin/node', 'script.js', '--version'] + * ``` + * + * Refer to `Worker constructor` for the detailed behavior of worker + * threads with this property. + * @since v0.7.7 + */ + execArgv: string[]; + /** + * The `process.execPath` property returns the absolute pathname of the executable + * that started the Node.js process. Symbolic links, if any, are resolved. + * + * ```js + * '/usr/local/bin/node' + * ``` + * @since v0.1.100 + */ + execPath: string; + /** + * The `process.abort()` method causes the Node.js process to exit immediately and + * generate a core file. + * + * This feature is not available in `Worker` threads. + * @since v0.7.0 + */ + abort(): never; + /** + * The `process.chdir()` method changes the current working directory of the + * Node.js process or throws an exception if doing so fails (for instance, if + * the specified `directory` does not exist). + * + * ```js + * import { chdir, cwd } from 'node:process'; + * + * console.log(`Starting directory: ${cwd()}`); + * try { + * chdir('/tmp'); + * console.log(`New directory: ${cwd()}`); + * } catch (err) { + * console.error(`chdir: ${err}`); + * } + * ``` + * + * This feature is not available in `Worker` threads. + * @since v0.1.17 + */ + chdir(directory: string): void; + /** + * The `process.cwd()` method returns the current working directory of the Node.js + * process. + * + * ```js + * import { cwd } from 'node:process'; + * + * console.log(`Current directory: ${cwd()}`); + * ``` + * @since v0.1.8 + */ + cwd(): string; + /** + * The port used by the Node.js debugger when enabled. + * + * ```js + * import process from 'node:process'; + * + * process.debugPort = 5858; + * ``` + * @since v0.7.2 + */ + debugPort: number; + /** + * The `process.emitWarning()` method can be used to emit custom or application + * specific process warnings. These can be listened for by adding a handler to the `'warning'` event. + * + * ```js + * import { emitWarning } from 'node:process'; + * + * // Emit a warning with a code and additional detail. + * emitWarning('Something happened!', { + * code: 'MY_WARNING', + * detail: 'This is some additional information', + * }); + * // Emits: + * // (node:56338) [MY_WARNING] Warning: Something happened! + * // This is some additional information + * ``` + * + * In this example, an `Error` object is generated internally by`process.emitWarning()` and passed through to the `'warning'` handler. + * + * ```js + * import process from 'node:process'; + * + * process.on('warning', (warning) => { + * console.warn(warning.name); // 'Warning' + * console.warn(warning.message); // 'Something happened!' + * console.warn(warning.code); // 'MY_WARNING' + * console.warn(warning.stack); // Stack trace + * console.warn(warning.detail); // 'This is some additional information' + * }); + * ``` + * + * If `warning` is passed as an `Error` object, the `options` argument is ignored. + * @since v8.0.0 + * @param warning The warning to emit. + */ + emitWarning(warning: string | Error, ctor?: Function): void; + emitWarning(warning: string | Error, type?: string, ctor?: Function): void; + emitWarning(warning: string | Error, type?: string, code?: string, ctor?: Function): void; + emitWarning(warning: string | Error, options?: EmitWarningOptions): void; + /** + * The `process.env` property returns an object containing the user environment. + * See [`environ(7)`](http://man7.org/linux/man-pages/man7/environ.7.html). + * + * An example of this object looks like: + * + * ```js + * { + * TERM: 'xterm-256color', + * SHELL: '/usr/local/bin/bash', + * USER: 'maciej', + * PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin', + * PWD: '/Users/maciej', + * EDITOR: 'vim', + * SHLVL: '1', + * HOME: '/Users/maciej', + * LOGNAME: 'maciej', + * _: '/usr/local/bin/node' + * } + * ``` + * + * It is possible to modify this object, but such modifications will not be + * reflected outside the Node.js process, or (unless explicitly requested) + * to other `Worker` threads. + * In other words, the following example would not work: + * + * ```bash + * node -e 'process.env.foo = "bar"' && echo $foo + * ``` + * + * While the following will: + * + * ```js + * import { env } from 'node:process'; + * + * env.foo = 'bar'; + * console.log(env.foo); + * ``` + * + * Assigning a property on `process.env` will implicitly convert the value + * to a string. **This behavior is deprecated.** Future versions of Node.js may + * throw an error when the value is not a string, number, or boolean. + * + * ```js + * import { env } from 'node:process'; + * + * env.test = null; + * console.log(env.test); + * // => 'null' + * env.test = undefined; + * console.log(env.test); + * // => 'undefined' + * ``` + * + * Use `delete` to delete a property from `process.env`. + * + * ```js + * import { env } from 'node:process'; + * + * env.TEST = 1; + * delete env.TEST; + * console.log(env.TEST); + * // => undefined + * ``` + * + * On Windows operating systems, environment variables are case-insensitive. + * + * ```js + * import { env } from 'node:process'; + * + * env.TEST = 1; + * console.log(env.test); + * // => 1 + * ``` + * + * Unless explicitly specified when creating a `Worker` instance, + * each `Worker` thread has its own copy of `process.env`, based on its + * parent thread's `process.env`, or whatever was specified as the `env` option + * to the `Worker` constructor. Changes to `process.env` will not be visible + * across `Worker` threads, and only the main thread can make changes that + * are visible to the operating system or to native add-ons. On Windows, a copy of`process.env` on a `Worker` instance operates in a case-sensitive manner + * unlike the main thread. + * @since v0.1.27 + */ + env: ProcessEnv; + /** + * The `process.exit()` method instructs Node.js to terminate the process + * synchronously with an exit status of `code`. If `code` is omitted, exit uses + * either the 'success' code `0` or the value of `process.exitCode` if it has been + * set. Node.js will not terminate until all the `'exit'` event listeners are + * called. + * + * To exit with a 'failure' code: + * + * ```js + * import { exit } from 'node:process'; + * + * exit(1); + * ``` + * + * The shell that executed Node.js should see the exit code as `1`. + * + * Calling `process.exit()` will force the process to exit as quickly as possible + * even if there are still asynchronous operations pending that have not yet + * completed fully, including I/O operations to `process.stdout` and`process.stderr`. + * + * In most situations, it is not actually necessary to call `process.exit()`explicitly. The Node.js process will exit on its own _if there is no additional_ + * _work pending_ in the event loop. The `process.exitCode` property can be set to + * tell the process which exit code to use when the process exits gracefully. + * + * For instance, the following example illustrates a _misuse_ of the`process.exit()` method that could lead to data printed to stdout being + * truncated and lost: + * + * ```js + * import { exit } from 'node:process'; + * + * // This is an example of what *not* to do: + * if (someConditionNotMet()) { + * printUsageToStdout(); + * exit(1); + * } + * ``` + * + * The reason this is problematic is because writes to `process.stdout` in Node.js + * are sometimes _asynchronous_ and may occur over multiple ticks of the Node.js + * event loop. Calling `process.exit()`, however, forces the process to exit _before_ those additional writes to `stdout` can be performed. + * + * Rather than calling `process.exit()` directly, the code _should_ set the`process.exitCode` and allow the process to exit naturally by avoiding + * scheduling any additional work for the event loop: + * + * ```js + * import process from 'node:process'; + * + * // How to properly set the exit code while letting + * // the process exit gracefully. + * if (someConditionNotMet()) { + * printUsageToStdout(); + * process.exitCode = 1; + * } + * ``` + * + * If it is necessary to terminate the Node.js process due to an error condition, + * throwing an _uncaught_ error and allowing the process to terminate accordingly + * is safer than calling `process.exit()`. + * + * In `Worker` threads, this function stops the current thread rather + * than the current process. + * @since v0.1.13 + * @param [code=0] The exit code. For string type, only integer strings (e.g.,'1') are allowed. + */ + exit(code?: number): never; + /** + * A number which will be the process exit code, when the process either + * exits gracefully, or is exited via {@link exit} without specifying + * a code. + * + * Specifying a code to {@link exit} will override any + * previous setting of `process.exitCode`. + * @since v0.11.8 + */ + exitCode?: number | undefined; + /** + * The `process.getgid()` method returns the numerical group identity of the + * process. (See [`getgid(2)`](http://man7.org/linux/man-pages/man2/getgid.2.html).) + * + * ```js + * import process from 'process'; + * + * if (process.getgid) { + * console.log(`Current gid: ${process.getgid()}`); + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * @since v0.1.31 + */ + getgid?: () => number; + /** + * The `process.setgid()` method sets the group identity of the process. (See [`setgid(2)`](http://man7.org/linux/man-pages/man2/setgid.2.html).) The `id` can be passed as either a + * numeric ID or a group name + * string. If a group name is specified, this method blocks while resolving the + * associated numeric ID. + * + * ```js + * import process from 'process'; + * + * if (process.getgid && process.setgid) { + * console.log(`Current gid: ${process.getgid()}`); + * try { + * process.setgid(501); + * console.log(`New gid: ${process.getgid()}`); + * } catch (err) { + * console.log(`Failed to set gid: ${err}`); + * } + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * This feature is not available in `Worker` threads. + * @since v0.1.31 + * @param id The group name or ID + */ + setgid?: (id: number | string) => void; + /** + * The `process.getuid()` method returns the numeric user identity of the process. + * (See [`getuid(2)`](http://man7.org/linux/man-pages/man2/getuid.2.html).) + * + * ```js + * import process from 'process'; + * + * if (process.getuid) { + * console.log(`Current uid: ${process.getuid()}`); + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * @since v0.1.28 + */ + getuid?: () => number; + /** + * The `process.setuid(id)` method sets the user identity of the process. (See [`setuid(2)`](http://man7.org/linux/man-pages/man2/setuid.2.html).) The `id` can be passed as either a + * numeric ID or a username string. + * If a username is specified, the method blocks while resolving the associated + * numeric ID. + * + * ```js + * import process from 'process'; + * + * if (process.getuid && process.setuid) { + * console.log(`Current uid: ${process.getuid()}`); + * try { + * process.setuid(501); + * console.log(`New uid: ${process.getuid()}`); + * } catch (err) { + * console.log(`Failed to set uid: ${err}`); + * } + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * This feature is not available in `Worker` threads. + * @since v0.1.28 + */ + setuid?: (id: number | string) => void; + /** + * The `process.geteuid()` method returns the numerical effective user identity of + * the process. (See [`geteuid(2)`](http://man7.org/linux/man-pages/man2/geteuid.2.html).) + * + * ```js + * import process from 'process'; + * + * if (process.geteuid) { + * console.log(`Current uid: ${process.geteuid()}`); + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * @since v2.0.0 + */ + geteuid?: () => number; + /** + * The `process.seteuid()` method sets the effective user identity of the process. + * (See [`seteuid(2)`](http://man7.org/linux/man-pages/man2/seteuid.2.html).) The `id` can be passed as either a numeric ID or a username + * string. If a username is specified, the method blocks while resolving the + * associated numeric ID. + * + * ```js + * import process from 'process'; + * + * if (process.geteuid && process.seteuid) { + * console.log(`Current uid: ${process.geteuid()}`); + * try { + * process.seteuid(501); + * console.log(`New uid: ${process.geteuid()}`); + * } catch (err) { + * console.log(`Failed to set uid: ${err}`); + * } + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * This feature is not available in `Worker` threads. + * @since v2.0.0 + * @param id A user name or ID + */ + seteuid?: (id: number | string) => void; + /** + * The `process.getegid()` method returns the numerical effective group identity + * of the Node.js process. (See [`getegid(2)`](http://man7.org/linux/man-pages/man2/getegid.2.html).) + * + * ```js + * import process from 'process'; + * + * if (process.getegid) { + * console.log(`Current gid: ${process.getegid()}`); + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * @since v2.0.0 + */ + getegid?: () => number; + /** + * The `process.setegid()` method sets the effective group identity of the process. + * (See [`setegid(2)`](http://man7.org/linux/man-pages/man2/setegid.2.html).) The `id` can be passed as either a numeric ID or a group + * name string. If a group name is specified, this method blocks while resolving + * the associated a numeric ID. + * + * ```js + * import process from 'process'; + * + * if (process.getegid && process.setegid) { + * console.log(`Current gid: ${process.getegid()}`); + * try { + * process.setegid(501); + * console.log(`New gid: ${process.getegid()}`); + * } catch (err) { + * console.log(`Failed to set gid: ${err}`); + * } + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * This feature is not available in `Worker` threads. + * @since v2.0.0 + * @param id A group name or ID + */ + setegid?: (id: number | string) => void; + /** + * The `process.getgroups()` method returns an array with the supplementary group + * IDs. POSIX leaves it unspecified if the effective group ID is included but + * Node.js ensures it always is. + * + * ```js + * import process from 'process'; + * + * if (process.getgroups) { + * console.log(process.getgroups()); // [ 16, 21, 297 ] + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * @since v0.9.4 + */ + getgroups?: () => number[]; + /** + * The `process.setgroups()` method sets the supplementary group IDs for the + * Node.js process. This is a privileged operation that requires the Node.js + * process to have `root` or the `CAP_SETGID` capability. + * + * The `groups` array can contain numeric group IDs, group names, or both. + * + * ```js + * import process from 'process'; + * + * if (process.getgroups && process.setgroups) { + * try { + * process.setgroups([501]); + * console.log(process.getgroups()); // new groups + * } catch (err) { + * console.log(`Failed to set groups: ${err}`); + * } + * } + * ``` + * + * This function is only available on POSIX platforms (i.e. not Windows or + * Android). + * This feature is not available in `Worker` threads. + * @since v0.9.4 + */ + setgroups?: (groups: ReadonlyArray) => void; + /** + * The `process.setUncaughtExceptionCaptureCallback()` function sets a function + * that will be invoked when an uncaught exception occurs, which will receive the + * exception value itself as its first argument. + * + * If such a function is set, the `'uncaughtException'` event will + * not be emitted. If `--abort-on-uncaught-exception` was passed from the + * command line or set through `v8.setFlagsFromString()`, the process will + * not abort. Actions configured to take place on exceptions such as report + * generations will be affected too + * + * To unset the capture function,`process.setUncaughtExceptionCaptureCallback(null)` may be used. Calling this + * method with a non-`null` argument while another capture function is set will + * throw an error. + * + * Using this function is mutually exclusive with using the deprecated `domain` built-in module. + * @since v9.3.0 + */ + setUncaughtExceptionCaptureCallback(cb: ((err: Error) => void) | null): void; + /** + * Indicates whether a callback has been set using {@link setUncaughtExceptionCaptureCallback}. + * @since v9.3.0 + */ + hasUncaughtExceptionCaptureCallback(): boolean; + /** + * The `process.sourceMapsEnabled` property returns whether the [Source Map v3](https://sourcemaps.info/spec.html) support for stack traces is enabled. + * @since v20.7.0 + * @experimental + */ + readonly sourceMapsEnabled: boolean; + /** + * The `process.version` property contains the Node.js version string. + * + * ```js + * import { version } from 'node:process'; + * + * console.log(`Version: ${version}`); + * // Version: v14.8.0 + * ``` + * + * To get the version string without the prepended _v_, use`process.versions.node`. + * @since v0.1.3 + */ + readonly version: string; + /** + * The `process.versions` property returns an object listing the version strings of + * Node.js and its dependencies. `process.versions.modules` indicates the current + * ABI version, which is increased whenever a C++ API changes. Node.js will refuse + * to load modules that were compiled against a different module ABI version. + * + * ```js + * import { versions } from 'node:process'; + * + * console.log(versions); + * ``` + * + * Will generate an object similar to: + * + * ```console + * { node: '20.2.0', + * acorn: '8.8.2', + * ada: '2.4.0', + * ares: '1.19.0', + * base64: '0.5.0', + * brotli: '1.0.9', + * cjs_module_lexer: '1.2.2', + * cldr: '43.0', + * icu: '73.1', + * llhttp: '8.1.0', + * modules: '115', + * napi: '8', + * nghttp2: '1.52.0', + * nghttp3: '0.7.0', + * ngtcp2: '0.8.1', + * openssl: '3.0.8+quic', + * simdutf: '3.2.9', + * tz: '2023c', + * undici: '5.22.0', + * unicode: '15.0', + * uv: '1.44.2', + * uvwasi: '0.0.16', + * v8: '11.3.244.8-node.9', + * zlib: '1.2.13' } + * ``` + * @since v0.2.0 + */ + readonly versions: ProcessVersions; + /** + * The `process.config` property returns a frozen `Object` containing the + * JavaScript representation of the configure options used to compile the current + * Node.js executable. This is the same as the `config.gypi` file that was produced + * when running the `./configure` script. + * + * An example of the possible output looks like: + * + * ```js + * { + * target_defaults: + * { cflags: [], + * default_configuration: 'Release', + * defines: [], + * include_dirs: [], + * libraries: [] }, + * variables: + * { + * host_arch: 'x64', + * napi_build_version: 5, + * node_install_npm: 'true', + * node_prefix: '', + * node_shared_cares: 'false', + * node_shared_http_parser: 'false', + * node_shared_libuv: 'false', + * node_shared_zlib: 'false', + * node_use_openssl: 'true', + * node_shared_openssl: 'false', + * strict_aliasing: 'true', + * target_arch: 'x64', + * v8_use_snapshot: 1 + * } + * } + * ``` + * @since v0.7.7 + */ + readonly config: ProcessConfig; + /** + * The `process.kill()` method sends the `signal` to the process identified by`pid`. + * + * Signal names are strings such as `'SIGINT'` or `'SIGHUP'`. See `Signal Events` and [`kill(2)`](http://man7.org/linux/man-pages/man2/kill.2.html) for more information. + * + * This method will throw an error if the target `pid` does not exist. As a special + * case, a signal of `0` can be used to test for the existence of a process. + * Windows platforms will throw an error if the `pid` is used to kill a process + * group. + * + * Even though the name of this function is `process.kill()`, it is really just a + * signal sender, like the `kill` system call. The signal sent may do something + * other than kill the target process. + * + * ```js + * import process, { kill } from 'node:process'; + * + * process.on('SIGHUP', () => { + * console.log('Got SIGHUP signal.'); + * }); + * + * setTimeout(() => { + * console.log('Exiting.'); + * process.exit(0); + * }, 100); + * + * kill(process.pid, 'SIGHUP'); + * ``` + * + * When `SIGUSR1` is received by a Node.js process, Node.js will start the + * debugger. See `Signal Events`. + * @since v0.0.6 + * @param pid A process ID + * @param [signal='SIGTERM'] The signal to send, either as a string or number. + */ + kill(pid: number, signal?: string | number): true; + /** + * The `process.pid` property returns the PID of the process. + * + * ```js + * import { pid } from 'node:process'; + * + * console.log(`This process is pid ${pid}`); + * ``` + * @since v0.1.15 + */ + readonly pid: number; + /** + * The `process.ppid` property returns the PID of the parent of the + * current process. + * + * ```js + * import { ppid } from 'node:process'; + * + * console.log(`The parent process is pid ${ppid}`); + * ``` + * @since v9.2.0, v8.10.0, v6.13.0 + */ + readonly ppid: number; + /** + * The `process.title` property returns the current process title (i.e. returns + * the current value of `ps`). Assigning a new value to `process.title` modifies + * the current value of `ps`. + * + * When a new value is assigned, different platforms will impose different maximum + * length restrictions on the title. Usually such restrictions are quite limited. + * For instance, on Linux and macOS, `process.title` is limited to the size of the + * binary name plus the length of the command-line arguments because setting the`process.title` overwrites the `argv` memory of the process. Node.js v0.8 + * allowed for longer process title strings by also overwriting the `environ`memory but that was potentially insecure and confusing in some (rather obscure) + * cases. + * + * Assigning a value to `process.title` might not result in an accurate label + * within process manager applications such as macOS Activity Monitor or Windows + * Services Manager. + * @since v0.1.104 + */ + title: string; + /** + * The operating system CPU architecture for which the Node.js binary was compiled. + * Possible values are: `'arm'`, `'arm64'`, `'ia32'`, `'mips'`,`'mipsel'`, `'ppc'`,`'ppc64'`, `'riscv64'`, `'s390'`, `'s390x'`, and `'x64'`. + * + * ```js + * import { arch } from 'node:process'; + * + * console.log(`This processor architecture is ${arch}`); + * ``` + * @since v0.5.0 + */ + readonly arch: Architecture; + /** + * The `process.platform` property returns a string identifying the operating + * system platform for which the Node.js binary was compiled. + * + * Currently possible values are: + * + * * `'aix'` + * * `'darwin'` + * * `'freebsd'` + * * `'linux'` + * * `'openbsd'` + * * `'sunos'` + * * `'win32'` + * + * ```js + * import { platform } from 'node:process'; + * + * console.log(`This platform is ${platform}`); + * ``` + * + * The value `'android'` may also be returned if the Node.js is built on the + * Android operating system. However, Android support in Node.js [is experimental](https://github.com/nodejs/node/blob/HEAD/BUILDING.md#androidandroid-based-devices-eg-firefox-os). + * @since v0.1.16 + */ + readonly platform: Platform; + /** + * The `process.mainModule` property provides an alternative way of retrieving `require.main`. The difference is that if the main module changes at + * runtime, `require.main` may still refer to the original main module in + * modules that were required before the change occurred. Generally, it's + * safe to assume that the two refer to the same module. + * + * As with `require.main`, `process.mainModule` will be `undefined` if there + * is no entry script. + * @since v0.1.17 + * @deprecated Since v14.0.0 - Use `main` instead. + */ + mainModule?: Module | undefined; + memoryUsage: MemoryUsageFn; + /** + * Gets the amount of memory available to the process (in bytes) based on + * limits imposed by the OS. If there is no such constraint, or the constraint + * is unknown, `undefined` is returned. + * + * See [`uv_get_constrained_memory`](https://docs.libuv.org/en/v1.x/misc.html#c.uv_get_constrained_memory) for more + * information. + * @since v19.6.0, v18.15.0 + * @experimental + */ + constrainedMemory(): number | undefined; + /** + * The `process.cpuUsage()` method returns the user and system CPU time usage of + * the current process, in an object with properties `user` and `system`, whose + * values are microsecond values (millionth of a second). These values measure time + * spent in user and system code respectively, and may end up being greater than + * actual elapsed time if multiple CPU cores are performing work for this process. + * + * The result of a previous call to `process.cpuUsage()` can be passed as the + * argument to the function, to get a diff reading. + * + * ```js + * import { cpuUsage } from 'node:process'; + * + * const startUsage = cpuUsage(); + * // { user: 38579, system: 6986 } + * + * // spin the CPU for 500 milliseconds + * const now = Date.now(); + * while (Date.now() - now < 500); + * + * console.log(cpuUsage(startUsage)); + * // { user: 514883, system: 11226 } + * ``` + * @since v6.1.0 + * @param previousValue A previous return value from calling `process.cpuUsage()` + */ + cpuUsage(previousValue?: CpuUsage): CpuUsage; + /** + * `process.nextTick()` adds `callback` to the "next tick queue". This queue is + * fully drained after the current operation on the JavaScript stack runs to + * completion and before the event loop is allowed to continue. It's possible to + * create an infinite loop if one were to recursively call `process.nextTick()`. + * See the [Event Loop](https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/#process-nexttick) guide for more background. + * + * ```js + * import { nextTick } from 'node:process'; + * + * console.log('start'); + * nextTick(() => { + * console.log('nextTick callback'); + * }); + * console.log('scheduled'); + * // Output: + * // start + * // scheduled + * // nextTick callback + * ``` + * + * This is important when developing APIs in order to give users the opportunity + * to assign event handlers _after_ an object has been constructed but before any + * I/O has occurred: + * + * ```js + * import { nextTick } from 'node:process'; + * + * function MyThing(options) { + * this.setupOptions(options); + * + * nextTick(() => { + * this.startDoingStuff(); + * }); + * } + * + * const thing = new MyThing(); + * thing.getReadyForStuff(); + * + * // thing.startDoingStuff() gets called now, not before. + * ``` + * + * It is very important for APIs to be either 100% synchronous or 100% + * asynchronous. Consider this example: + * + * ```js + * // WARNING! DO NOT USE! BAD UNSAFE HAZARD! + * function maybeSync(arg, cb) { + * if (arg) { + * cb(); + * return; + * } + * + * fs.stat('file', cb); + * } + * ``` + * + * This API is hazardous because in the following case: + * + * ```js + * const maybeTrue = Math.random() > 0.5; + * + * maybeSync(maybeTrue, () => { + * foo(); + * }); + * + * bar(); + * ``` + * + * It is not clear whether `foo()` or `bar()` will be called first. + * + * The following approach is much better: + * + * ```js + * import { nextTick } from 'node:process'; + * + * function definitelyAsync(arg, cb) { + * if (arg) { + * nextTick(cb); + * return; + * } + * + * fs.stat('file', cb); + * } + * ``` + * @since v0.1.26 + * @param args Additional arguments to pass when invoking the `callback` + */ + nextTick(callback: Function, ...args: any[]): void; + /** + * The `process.release` property returns an `Object` containing metadata related + * to the current release, including URLs for the source tarball and headers-only + * tarball. + * + * `process.release` contains the following properties: + * + * ```js + * { + * name: 'node', + * lts: 'Hydrogen', + * sourceUrl: 'https://nodejs.org/download/release/v18.12.0/node-v18.12.0.tar.gz', + * headersUrl: 'https://nodejs.org/download/release/v18.12.0/node-v18.12.0-headers.tar.gz', + * libUrl: 'https://nodejs.org/download/release/v18.12.0/win-x64/node.lib' + * } + * ``` + * + * In custom builds from non-release versions of the source tree, only the`name` property may be present. The additional properties should not be + * relied upon to exist. + * @since v3.0.0 + */ + readonly release: ProcessRelease; + features: { + inspector: boolean; + debug: boolean; + uv: boolean; + ipv6: boolean; + tls_alpn: boolean; + tls_sni: boolean; + tls_ocsp: boolean; + tls: boolean; + }; + /** + * `process.umask()` returns the Node.js process's file mode creation mask. Child + * processes inherit the mask from the parent process. + * @since v0.1.19 + * @deprecated Calling `process.umask()` with no argument causes the process-wide umask to be written twice. This introduces a race condition between threads, and is a potential * + * security vulnerability. There is no safe, cross-platform alternative API. + */ + umask(): number; + /** + * Can only be set if not in worker thread. + */ + umask(mask: string | number): number; + /** + * The `process.uptime()` method returns the number of seconds the current Node.js + * process has been running. + * + * The return value includes fractions of a second. Use `Math.floor()` to get whole + * seconds. + * @since v0.5.0 + */ + uptime(): number; + hrtime: HRTime; + /** + * If Node.js is spawned with an IPC channel, the `process.send()` method can be + * used to send messages to the parent process. Messages will be received as a `'message'` event on the parent's `ChildProcess` object. + * + * If Node.js was not spawned with an IPC channel, `process.send` will be `undefined`. + * + * The message goes through serialization and parsing. The resulting message might + * not be the same as what is originally sent. + * @since v0.5.9 + * @param options used to parameterize the sending of certain types of handles.`options` supports the following properties: + */ + send?( + message: any, + sendHandle?: any, + options?: { + swallowErrors?: boolean | undefined; + }, + callback?: (error: Error | null) => void, + ): boolean; + /** + * If the Node.js process is spawned with an IPC channel (see the `Child Process` and `Cluster` documentation), the `process.disconnect()` method will close the + * IPC channel to the parent process, allowing the child process to exit gracefully + * once there are no other connections keeping it alive. + * + * The effect of calling `process.disconnect()` is the same as calling `ChildProcess.disconnect()` from the parent process. + * + * If the Node.js process was not spawned with an IPC channel,`process.disconnect()` will be `undefined`. + * @since v0.7.2 + */ + disconnect(): void; + /** + * If the Node.js process is spawned with an IPC channel (see the `Child Process` and `Cluster` documentation), the `process.connected` property will return`true` so long as the IPC + * channel is connected and will return `false` after`process.disconnect()` is called. + * + * Once `process.connected` is `false`, it is no longer possible to send messages + * over the IPC channel using `process.send()`. + * @since v0.7.2 + */ + connected: boolean; + /** + * The `process.allowedNodeEnvironmentFlags` property is a special, + * read-only `Set` of flags allowable within the `NODE_OPTIONS` environment variable. + * + * `process.allowedNodeEnvironmentFlags` extends `Set`, but overrides`Set.prototype.has` to recognize several different possible flag + * representations. `process.allowedNodeEnvironmentFlags.has()` will + * return `true` in the following cases: + * + * * Flags may omit leading single (`-`) or double (`--`) dashes; e.g.,`inspect-brk` for `--inspect-brk`, or `r` for `-r`. + * * Flags passed through to V8 (as listed in `--v8-options`) may replace + * one or more _non-leading_ dashes for an underscore, or vice-versa; + * e.g., `--perf_basic_prof`, `--perf-basic-prof`, `--perf_basic-prof`, + * etc. + * * Flags may contain one or more equals (`=`) characters; all + * characters after and including the first equals will be ignored; + * e.g., `--stack-trace-limit=100`. + * * Flags _must_ be allowable within `NODE_OPTIONS`. + * + * When iterating over `process.allowedNodeEnvironmentFlags`, flags will + * appear only _once_; each will begin with one or more dashes. Flags + * passed through to V8 will contain underscores instead of non-leading + * dashes: + * + * ```js + * import { allowedNodeEnvironmentFlags } from 'node:process'; + * + * allowedNodeEnvironmentFlags.forEach((flag) => { + * // -r + * // --inspect-brk + * // --abort_on_uncaught_exception + * // ... + * }); + * ``` + * + * The methods `add()`, `clear()`, and `delete()` of`process.allowedNodeEnvironmentFlags` do nothing, and will fail + * silently. + * + * If Node.js was compiled _without_ `NODE_OPTIONS` support (shown in {@link config}), `process.allowedNodeEnvironmentFlags` will + * contain what _would have_ been allowable. + * @since v10.10.0 + */ + allowedNodeEnvironmentFlags: ReadonlySet; + /** + * `process.report` is an object whose methods are used to generate diagnostic + * reports for the current process. Additional documentation is available in the `report documentation`. + * @since v11.8.0 + */ + report?: ProcessReport | undefined; + /** + * ```js + * import { resourceUsage } from 'node:process'; + * + * console.log(resourceUsage()); + * /* + * Will output: + * { + * userCPUTime: 82872, + * systemCPUTime: 4143, + * maxRSS: 33164, + * sharedMemorySize: 0, + * unsharedDataSize: 0, + * unsharedStackSize: 0, + * minorPageFault: 2469, + * majorPageFault: 0, + * swappedOut: 0, + * fsRead: 0, + * fsWrite: 8, + * ipcSent: 0, + * ipcReceived: 0, + * signalsCount: 0, + * voluntaryContextSwitches: 79, + * involuntaryContextSwitches: 1 + * } + * + * ``` + * @since v12.6.0 + * @return the resource usage for the current process. All of these values come from the `uv_getrusage` call which returns a [`uv_rusage_t` struct][uv_rusage_t]. + */ + resourceUsage(): ResourceUsage; + /** + * The `process.traceDeprecation` property indicates whether the`--trace-deprecation` flag is set on the current Node.js process. See the + * documentation for the `'warning' event` and the `emitWarning() method` for more information about this + * flag's behavior. + * @since v0.8.0 + */ + traceDeprecation: boolean; + /* EventEmitter */ + addListener(event: "beforeExit", listener: BeforeExitListener): this; + addListener(event: "disconnect", listener: DisconnectListener): this; + addListener(event: "exit", listener: ExitListener): this; + addListener(event: "rejectionHandled", listener: RejectionHandledListener): this; + addListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; + addListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; + addListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; + addListener(event: "warning", listener: WarningListener): this; + addListener(event: "message", listener: MessageListener): this; + addListener(event: Signals, listener: SignalsListener): this; + addListener(event: "multipleResolves", listener: MultipleResolveListener): this; + addListener(event: "worker", listener: WorkerListener): this; + emit(event: "beforeExit", code: number): boolean; + emit(event: "disconnect"): boolean; + emit(event: "exit", code: number): boolean; + emit(event: "rejectionHandled", promise: Promise): boolean; + emit(event: "uncaughtException", error: Error): boolean; + emit(event: "uncaughtExceptionMonitor", error: Error): boolean; + emit(event: "unhandledRejection", reason: unknown, promise: Promise): boolean; + emit(event: "warning", warning: Error): boolean; + emit(event: "message", message: unknown, sendHandle: unknown): this; + emit(event: Signals, signal?: Signals): boolean; + emit( + event: "multipleResolves", + type: MultipleResolveType, + promise: Promise, + value: unknown, + ): this; + emit(event: "worker", listener: WorkerListener): this; + on(event: "beforeExit", listener: BeforeExitListener): this; + on(event: "disconnect", listener: DisconnectListener): this; + on(event: "exit", listener: ExitListener): this; + on(event: "rejectionHandled", listener: RejectionHandledListener): this; + on(event: "uncaughtException", listener: UncaughtExceptionListener): this; + on(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; + on(event: "unhandledRejection", listener: UnhandledRejectionListener): this; + on(event: "warning", listener: WarningListener): this; + on(event: "message", listener: MessageListener): this; + on(event: Signals, listener: SignalsListener): this; + on(event: "multipleResolves", listener: MultipleResolveListener): this; + on(event: "worker", listener: WorkerListener): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "beforeExit", listener: BeforeExitListener): this; + once(event: "disconnect", listener: DisconnectListener): this; + once(event: "exit", listener: ExitListener): this; + once(event: "rejectionHandled", listener: RejectionHandledListener): this; + once(event: "uncaughtException", listener: UncaughtExceptionListener): this; + once(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; + once(event: "unhandledRejection", listener: UnhandledRejectionListener): this; + once(event: "warning", listener: WarningListener): this; + once(event: "message", listener: MessageListener): this; + once(event: Signals, listener: SignalsListener): this; + once(event: "multipleResolves", listener: MultipleResolveListener): this; + once(event: "worker", listener: WorkerListener): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "beforeExit", listener: BeforeExitListener): this; + prependListener(event: "disconnect", listener: DisconnectListener): this; + prependListener(event: "exit", listener: ExitListener): this; + prependListener(event: "rejectionHandled", listener: RejectionHandledListener): this; + prependListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; + prependListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; + prependListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; + prependListener(event: "warning", listener: WarningListener): this; + prependListener(event: "message", listener: MessageListener): this; + prependListener(event: Signals, listener: SignalsListener): this; + prependListener(event: "multipleResolves", listener: MultipleResolveListener): this; + prependListener(event: "worker", listener: WorkerListener): this; + prependOnceListener(event: "beforeExit", listener: BeforeExitListener): this; + prependOnceListener(event: "disconnect", listener: DisconnectListener): this; + prependOnceListener(event: "exit", listener: ExitListener): this; + prependOnceListener(event: "rejectionHandled", listener: RejectionHandledListener): this; + prependOnceListener(event: "uncaughtException", listener: UncaughtExceptionListener): this; + prependOnceListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this; + prependOnceListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this; + prependOnceListener(event: "warning", listener: WarningListener): this; + prependOnceListener(event: "message", listener: MessageListener): this; + prependOnceListener(event: Signals, listener: SignalsListener): this; + prependOnceListener(event: "multipleResolves", listener: MultipleResolveListener): this; + prependOnceListener(event: "worker", listener: WorkerListener): this; + listeners(event: "beforeExit"): BeforeExitListener[]; + listeners(event: "disconnect"): DisconnectListener[]; + listeners(event: "exit"): ExitListener[]; + listeners(event: "rejectionHandled"): RejectionHandledListener[]; + listeners(event: "uncaughtException"): UncaughtExceptionListener[]; + listeners(event: "uncaughtExceptionMonitor"): UncaughtExceptionListener[]; + listeners(event: "unhandledRejection"): UnhandledRejectionListener[]; + listeners(event: "warning"): WarningListener[]; + listeners(event: "message"): MessageListener[]; + listeners(event: Signals): SignalsListener[]; + listeners(event: "multipleResolves"): MultipleResolveListener[]; + listeners(event: "worker"): WorkerListener[]; + } + } + } + export = process; +} +declare module "node:process" { + import process = require("process"); + export = process; +} diff --git a/node_modules/@types/node/ts4.8/punycode.d.ts b/node_modules/@types/node/ts4.8/punycode.d.ts new file mode 100644 index 00000000..64ddd3e6 --- /dev/null +++ b/node_modules/@types/node/ts4.8/punycode.d.ts @@ -0,0 +1,117 @@ +/** + * **The version of the punycode module bundled in Node.js is being deprecated.**In a future major version of Node.js this module will be removed. Users + * currently depending on the `punycode` module should switch to using the + * userland-provided [Punycode.js](https://github.com/bestiejs/punycode.js) module instead. For punycode-based URL + * encoding, see `url.domainToASCII` or, more generally, the `WHATWG URL API`. + * + * The `punycode` module is a bundled version of the [Punycode.js](https://github.com/bestiejs/punycode.js) module. It + * can be accessed using: + * + * ```js + * const punycode = require('punycode'); + * ``` + * + * [Punycode](https://tools.ietf.org/html/rfc3492) is a character encoding scheme defined by RFC 3492 that is + * primarily intended for use in Internationalized Domain Names. Because host + * names in URLs are limited to ASCII characters only, Domain Names that contain + * non-ASCII characters must be converted into ASCII using the Punycode scheme. + * For instance, the Japanese character that translates into the English word,`'example'` is `'例'`. The Internationalized Domain Name, `'例.com'` (equivalent + * to `'example.com'`) is represented by Punycode as the ASCII string`'xn--fsq.com'`. + * + * The `punycode` module provides a simple implementation of the Punycode standard. + * + * The `punycode` module is a third-party dependency used by Node.js and + * made available to developers as a convenience. Fixes or other modifications to + * the module must be directed to the [Punycode.js](https://github.com/bestiejs/punycode.js) project. + * @deprecated Since v7.0.0 - Deprecated + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/punycode.js) + */ +declare module "punycode" { + /** + * The `punycode.decode()` method converts a [Punycode](https://tools.ietf.org/html/rfc3492) string of ASCII-only + * characters to the equivalent string of Unicode codepoints. + * + * ```js + * punycode.decode('maana-pta'); // 'mañana' + * punycode.decode('--dqo34k'); // '☃-⌘' + * ``` + * @since v0.5.1 + */ + function decode(string: string): string; + /** + * The `punycode.encode()` method converts a string of Unicode codepoints to a [Punycode](https://tools.ietf.org/html/rfc3492) string of ASCII-only characters. + * + * ```js + * punycode.encode('mañana'); // 'maana-pta' + * punycode.encode('☃-⌘'); // '--dqo34k' + * ``` + * @since v0.5.1 + */ + function encode(string: string): string; + /** + * The `punycode.toUnicode()` method converts a string representing a domain name + * containing [Punycode](https://tools.ietf.org/html/rfc3492) encoded characters into Unicode. Only the [Punycode](https://tools.ietf.org/html/rfc3492) encoded parts of the domain name are be + * converted. + * + * ```js + * // decode domain names + * punycode.toUnicode('xn--maana-pta.com'); // 'mañana.com' + * punycode.toUnicode('xn----dqo34k.com'); // '☃-⌘.com' + * punycode.toUnicode('example.com'); // 'example.com' + * ``` + * @since v0.6.1 + */ + function toUnicode(domain: string): string; + /** + * The `punycode.toASCII()` method converts a Unicode string representing an + * Internationalized Domain Name to [Punycode](https://tools.ietf.org/html/rfc3492). Only the non-ASCII parts of the + * domain name will be converted. Calling `punycode.toASCII()` on a string that + * already only contains ASCII characters will have no effect. + * + * ```js + * // encode domain names + * punycode.toASCII('mañana.com'); // 'xn--maana-pta.com' + * punycode.toASCII('☃-⌘.com'); // 'xn----dqo34k.com' + * punycode.toASCII('example.com'); // 'example.com' + * ``` + * @since v0.6.1 + */ + function toASCII(domain: string): string; + /** + * @deprecated since v7.0.0 + * The version of the punycode module bundled in Node.js is being deprecated. + * In a future major version of Node.js this module will be removed. + * Users currently depending on the punycode module should switch to using + * the userland-provided Punycode.js module instead. + */ + const ucs2: ucs2; + interface ucs2 { + /** + * @deprecated since v7.0.0 + * The version of the punycode module bundled in Node.js is being deprecated. + * In a future major version of Node.js this module will be removed. + * Users currently depending on the punycode module should switch to using + * the userland-provided Punycode.js module instead. + */ + decode(string: string): number[]; + /** + * @deprecated since v7.0.0 + * The version of the punycode module bundled in Node.js is being deprecated. + * In a future major version of Node.js this module will be removed. + * Users currently depending on the punycode module should switch to using + * the userland-provided Punycode.js module instead. + */ + encode(codePoints: ReadonlyArray): string; + } + /** + * @deprecated since v7.0.0 + * The version of the punycode module bundled in Node.js is being deprecated. + * In a future major version of Node.js this module will be removed. + * Users currently depending on the punycode module should switch to using + * the userland-provided Punycode.js module instead. + */ + const version: string; +} +declare module "node:punycode" { + export * from "punycode"; +} diff --git a/node_modules/@types/node/ts4.8/querystring.d.ts b/node_modules/@types/node/ts4.8/querystring.d.ts new file mode 100644 index 00000000..388ebc33 --- /dev/null +++ b/node_modules/@types/node/ts4.8/querystring.d.ts @@ -0,0 +1,141 @@ +/** + * The `node:querystring` module provides utilities for parsing and formatting URL + * query strings. It can be accessed using: + * + * ```js + * const querystring = require('node:querystring'); + * ``` + * + * `querystring` is more performant than `URLSearchParams` but is not a + * standardized API. Use `URLSearchParams` when performance is not critical or + * when compatibility with browser code is desirable. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/querystring.js) + */ +declare module "querystring" { + interface StringifyOptions { + encodeURIComponent?: ((str: string) => string) | undefined; + } + interface ParseOptions { + maxKeys?: number | undefined; + decodeURIComponent?: ((str: string) => string) | undefined; + } + interface ParsedUrlQuery extends NodeJS.Dict {} + interface ParsedUrlQueryInput extends + NodeJS.Dict< + | string + | number + | boolean + | ReadonlyArray + | ReadonlyArray + | ReadonlyArray + | null + > + {} + /** + * The `querystring.stringify()` method produces a URL query string from a + * given `obj` by iterating through the object's "own properties". + * + * It serializes the following types of values passed in `obj`:[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | + * [number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) | + * [bigint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) | + * [boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) | + * [string\[\]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | + * [number\[\]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) | + * [bigint\[\]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) | + * [boolean\[\]](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) The numeric values must be finite. Any other input values will be coerced to + * empty strings. + * + * ```js + * querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' }); + * // Returns 'foo=bar&baz=qux&baz=quux&corge=' + * + * querystring.stringify({ foo: 'bar', baz: 'qux' }, ';', ':'); + * // Returns 'foo:bar;baz:qux' + * ``` + * + * By default, characters requiring percent-encoding within the query string will + * be encoded as UTF-8\. If an alternative encoding is required, then an alternative`encodeURIComponent` option will need to be specified: + * + * ```js + * // Assuming gbkEncodeURIComponent function already exists, + * + * querystring.stringify({ w: '中文', foo: 'bar' }, null, null, + * { encodeURIComponent: gbkEncodeURIComponent }); + * ``` + * @since v0.1.25 + * @param obj The object to serialize into a URL query string + * @param [sep='&'] The substring used to delimit key and value pairs in the query string. + * @param [eq='='] . The substring used to delimit keys and values in the query string. + */ + function stringify(obj?: ParsedUrlQueryInput, sep?: string, eq?: string, options?: StringifyOptions): string; + /** + * The `querystring.parse()` method parses a URL query string (`str`) into a + * collection of key and value pairs. + * + * For example, the query string `'foo=bar&abc=xyz&abc=123'` is parsed into: + * + * ```js + * { + * foo: 'bar', + * abc: ['xyz', '123'] + * } + * ``` + * + * The object returned by the `querystring.parse()` method _does not_prototypically inherit from the JavaScript `Object`. This means that typical`Object` methods such as `obj.toString()`, + * `obj.hasOwnProperty()`, and others + * are not defined and _will not work_. + * + * By default, percent-encoded characters within the query string will be assumed + * to use UTF-8 encoding. If an alternative character encoding is used, then an + * alternative `decodeURIComponent` option will need to be specified: + * + * ```js + * // Assuming gbkDecodeURIComponent function already exists... + * + * querystring.parse('w=%D6%D0%CE%C4&foo=bar', null, null, + * { decodeURIComponent: gbkDecodeURIComponent }); + * ``` + * @since v0.1.25 + * @param str The URL query string to parse + * @param [sep='&'] The substring used to delimit key and value pairs in the query string. + * @param [eq='='] . The substring used to delimit keys and values in the query string. + */ + function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): ParsedUrlQuery; + /** + * The querystring.encode() function is an alias for querystring.stringify(). + */ + const encode: typeof stringify; + /** + * The querystring.decode() function is an alias for querystring.parse(). + */ + const decode: typeof parse; + /** + * The `querystring.escape()` method performs URL percent-encoding on the given`str` in a manner that is optimized for the specific requirements of URL + * query strings. + * + * The `querystring.escape()` method is used by `querystring.stringify()` and is + * generally not expected to be used directly. It is exported primarily to allow + * application code to provide a replacement percent-encoding implementation if + * necessary by assigning `querystring.escape` to an alternative function. + * @since v0.1.25 + */ + function escape(str: string): string; + /** + * The `querystring.unescape()` method performs decoding of URL percent-encoded + * characters on the given `str`. + * + * The `querystring.unescape()` method is used by `querystring.parse()` and is + * generally not expected to be used directly. It is exported primarily to allow + * application code to provide a replacement decoding implementation if + * necessary by assigning `querystring.unescape` to an alternative function. + * + * By default, the `querystring.unescape()` method will attempt to use the + * JavaScript built-in `decodeURIComponent()` method to decode. If that fails, + * a safer equivalent that does not throw on malformed URLs will be used. + * @since v0.1.25 + */ + function unescape(str: string): string; +} +declare module "node:querystring" { + export * from "querystring"; +} diff --git a/node_modules/@types/node/ts4.8/readline.d.ts b/node_modules/@types/node/ts4.8/readline.d.ts new file mode 100644 index 00000000..b06d58b8 --- /dev/null +++ b/node_modules/@types/node/ts4.8/readline.d.ts @@ -0,0 +1,539 @@ +/** + * The `node:readline` module provides an interface for reading data from a `Readable` stream (such as `process.stdin`) one line at a time. + * + * To use the promise-based APIs: + * + * ```js + * import * as readline from 'node:readline/promises'; + * ``` + * + * To use the callback and sync APIs: + * + * ```js + * import * as readline from 'node:readline'; + * ``` + * + * The following simple example illustrates the basic use of the `node:readline`module. + * + * ```js + * import * as readline from 'node:readline/promises'; + * import { stdin as input, stdout as output } from 'node:process'; + * + * const rl = readline.createInterface({ input, output }); + * + * const answer = await rl.question('What do you think of Node.js? '); + * + * console.log(`Thank you for your valuable feedback: ${answer}`); + * + * rl.close(); + * ``` + * + * Once this code is invoked, the Node.js application will not terminate until the`readline.Interface` is closed because the interface waits for data to be + * received on the `input` stream. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/readline.js) + */ +declare module "readline" { + import { Abortable, EventEmitter } from "node:events"; + import * as promises from "node:readline/promises"; + export { promises }; + export interface Key { + sequence?: string | undefined; + name?: string | undefined; + ctrl?: boolean | undefined; + meta?: boolean | undefined; + shift?: boolean | undefined; + } + /** + * Instances of the `readline.Interface` class are constructed using the`readline.createInterface()` method. Every instance is associated with a + * single `input` `Readable` stream and a single `output` `Writable` stream. + * The `output` stream is used to print prompts for user input that arrives on, + * and is read from, the `input` stream. + * @since v0.1.104 + */ + export class Interface extends EventEmitter { + readonly terminal: boolean; + /** + * The current input data being processed by node. + * + * This can be used when collecting input from a TTY stream to retrieve the + * current value that has been processed thus far, prior to the `line` event + * being emitted. Once the `line` event has been emitted, this property will + * be an empty string. + * + * Be aware that modifying the value during the instance runtime may have + * unintended consequences if `rl.cursor` is not also controlled. + * + * **If not using a TTY stream for input, use the `'line'` event.** + * + * One possible use case would be as follows: + * + * ```js + * const values = ['lorem ipsum', 'dolor sit amet']; + * const rl = readline.createInterface(process.stdin); + * const showResults = debounce(() => { + * console.log( + * '\n', + * values.filter((val) => val.startsWith(rl.line)).join(' '), + * ); + * }, 300); + * process.stdin.on('keypress', (c, k) => { + * showResults(); + * }); + * ``` + * @since v0.1.98 + */ + readonly line: string; + /** + * The cursor position relative to `rl.line`. + * + * This will track where the current cursor lands in the input string, when + * reading input from a TTY stream. The position of cursor determines the + * portion of the input string that will be modified as input is processed, + * as well as the column where the terminal caret will be rendered. + * @since v0.1.98 + */ + readonly cursor: number; + /** + * NOTE: According to the documentation: + * + * > Instances of the `readline.Interface` class are constructed using the + * > `readline.createInterface()` method. + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/readline.html#class-interfaceconstructor + */ + protected constructor( + input: NodeJS.ReadableStream, + output?: NodeJS.WritableStream, + completer?: Completer | AsyncCompleter, + terminal?: boolean, + ); + /** + * NOTE: According to the documentation: + * + * > Instances of the `readline.Interface` class are constructed using the + * > `readline.createInterface()` method. + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/readline.html#class-interfaceconstructor + */ + protected constructor(options: ReadLineOptions); + /** + * The `rl.getPrompt()` method returns the current prompt used by `rl.prompt()`. + * @since v15.3.0, v14.17.0 + * @return the current prompt string + */ + getPrompt(): string; + /** + * The `rl.setPrompt()` method sets the prompt that will be written to `output`whenever `rl.prompt()` is called. + * @since v0.1.98 + */ + setPrompt(prompt: string): void; + /** + * The `rl.prompt()` method writes the `Interface` instances configured`prompt` to a new line in `output` in order to provide a user with a new + * location at which to provide input. + * + * When called, `rl.prompt()` will resume the `input` stream if it has been + * paused. + * + * If the `Interface` was created with `output` set to `null` or`undefined` the prompt is not written. + * @since v0.1.98 + * @param preserveCursor If `true`, prevents the cursor placement from being reset to `0`. + */ + prompt(preserveCursor?: boolean): void; + /** + * The `rl.question()` method displays the `query` by writing it to the `output`, + * waits for user input to be provided on `input`, then invokes the `callback`function passing the provided input as the first argument. + * + * When called, `rl.question()` will resume the `input` stream if it has been + * paused. + * + * If the `Interface` was created with `output` set to `null` or`undefined` the `query` is not written. + * + * The `callback` function passed to `rl.question()` does not follow the typical + * pattern of accepting an `Error` object or `null` as the first argument. + * The `callback` is called with the provided answer as the only argument. + * + * An error will be thrown if calling `rl.question()` after `rl.close()`. + * + * Example usage: + * + * ```js + * rl.question('What is your favorite food? ', (answer) => { + * console.log(`Oh, so your favorite food is ${answer}`); + * }); + * ``` + * + * Using an `AbortController` to cancel a question. + * + * ```js + * const ac = new AbortController(); + * const signal = ac.signal; + * + * rl.question('What is your favorite food? ', { signal }, (answer) => { + * console.log(`Oh, so your favorite food is ${answer}`); + * }); + * + * signal.addEventListener('abort', () => { + * console.log('The food question timed out'); + * }, { once: true }); + * + * setTimeout(() => ac.abort(), 10000); + * ``` + * @since v0.3.3 + * @param query A statement or query to write to `output`, prepended to the prompt. + * @param callback A callback function that is invoked with the user's input in response to the `query`. + */ + question(query: string, callback: (answer: string) => void): void; + question(query: string, options: Abortable, callback: (answer: string) => void): void; + /** + * The `rl.pause()` method pauses the `input` stream, allowing it to be resumed + * later if necessary. + * + * Calling `rl.pause()` does not immediately pause other events (including`'line'`) from being emitted by the `Interface` instance. + * @since v0.3.4 + */ + pause(): this; + /** + * The `rl.resume()` method resumes the `input` stream if it has been paused. + * @since v0.3.4 + */ + resume(): this; + /** + * The `rl.close()` method closes the `Interface` instance and + * relinquishes control over the `input` and `output` streams. When called, + * the `'close'` event will be emitted. + * + * Calling `rl.close()` does not immediately stop other events (including `'line'`) + * from being emitted by the `Interface` instance. + * @since v0.1.98 + */ + close(): void; + /** + * The `rl.write()` method will write either `data` or a key sequence identified + * by `key` to the `output`. The `key` argument is supported only if `output` is + * a `TTY` text terminal. See `TTY keybindings` for a list of key + * combinations. + * + * If `key` is specified, `data` is ignored. + * + * When called, `rl.write()` will resume the `input` stream if it has been + * paused. + * + * If the `Interface` was created with `output` set to `null` or`undefined` the `data` and `key` are not written. + * + * ```js + * rl.write('Delete this!'); + * // Simulate Ctrl+U to delete the line written previously + * rl.write(null, { ctrl: true, name: 'u' }); + * ``` + * + * The `rl.write()` method will write the data to the `readline` `Interface`'s`input`_as if it were provided by the user_. + * @since v0.1.98 + */ + write(data: string | Buffer, key?: Key): void; + write(data: undefined | null | string | Buffer, key: Key): void; + /** + * Returns the real position of the cursor in relation to the input + * prompt + string. Long input (wrapping) strings, as well as multiple + * line prompts are included in the calculations. + * @since v13.5.0, v12.16.0 + */ + getCursorPos(): CursorPos; + /** + * events.EventEmitter + * 1. close + * 2. line + * 3. pause + * 4. resume + * 5. SIGCONT + * 6. SIGINT + * 7. SIGTSTP + * 8. history + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "line", listener: (input: string) => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: "SIGCONT", listener: () => void): this; + addListener(event: "SIGINT", listener: () => void): this; + addListener(event: "SIGTSTP", listener: () => void): this; + addListener(event: "history", listener: (history: string[]) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "line", input: string): boolean; + emit(event: "pause"): boolean; + emit(event: "resume"): boolean; + emit(event: "SIGCONT"): boolean; + emit(event: "SIGINT"): boolean; + emit(event: "SIGTSTP"): boolean; + emit(event: "history", history: string[]): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "close", listener: () => void): this; + on(event: "line", listener: (input: string) => void): this; + on(event: "pause", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: "SIGCONT", listener: () => void): this; + on(event: "SIGINT", listener: () => void): this; + on(event: "SIGTSTP", listener: () => void): this; + on(event: "history", listener: (history: string[]) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "line", listener: (input: string) => void): this; + once(event: "pause", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: "SIGCONT", listener: () => void): this; + once(event: "SIGINT", listener: () => void): this; + once(event: "SIGTSTP", listener: () => void): this; + once(event: "history", listener: (history: string[]) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "line", listener: (input: string) => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: "SIGCONT", listener: () => void): this; + prependListener(event: "SIGINT", listener: () => void): this; + prependListener(event: "SIGTSTP", listener: () => void): this; + prependListener(event: "history", listener: (history: string[]) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "line", listener: (input: string) => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: "SIGCONT", listener: () => void): this; + prependOnceListener(event: "SIGINT", listener: () => void): this; + prependOnceListener(event: "SIGTSTP", listener: () => void): this; + prependOnceListener(event: "history", listener: (history: string[]) => void): this; + [Symbol.asyncIterator](): AsyncIterableIterator; + } + export type ReadLine = Interface; // type forwarded for backwards compatibility + export type Completer = (line: string) => CompleterResult; + export type AsyncCompleter = ( + line: string, + callback: (err?: null | Error, result?: CompleterResult) => void, + ) => void; + export type CompleterResult = [string[], string]; + export interface ReadLineOptions { + input: NodeJS.ReadableStream; + output?: NodeJS.WritableStream | undefined; + completer?: Completer | AsyncCompleter | undefined; + terminal?: boolean | undefined; + /** + * Initial list of history lines. This option makes sense + * only if `terminal` is set to `true` by the user or by an internal `output` + * check, otherwise the history caching mechanism is not initialized at all. + * @default [] + */ + history?: string[] | undefined; + historySize?: number | undefined; + prompt?: string | undefined; + crlfDelay?: number | undefined; + /** + * If `true`, when a new input line added + * to the history list duplicates an older one, this removes the older line + * from the list. + * @default false + */ + removeHistoryDuplicates?: boolean | undefined; + escapeCodeTimeout?: number | undefined; + tabSize?: number | undefined; + } + /** + * The `readline.createInterface()` method creates a new `readline.Interface`instance. + * + * ```js + * const readline = require('node:readline'); + * const rl = readline.createInterface({ + * input: process.stdin, + * output: process.stdout, + * }); + * ``` + * + * Once the `readline.Interface` instance is created, the most common case is to + * listen for the `'line'` event: + * + * ```js + * rl.on('line', (line) => { + * console.log(`Received: ${line}`); + * }); + * ``` + * + * If `terminal` is `true` for this instance then the `output` stream will get + * the best compatibility if it defines an `output.columns` property and emits + * a `'resize'` event on the `output` if or when the columns ever change + * (`process.stdout` does this automatically when it is a TTY). + * + * When creating a `readline.Interface` using `stdin` as input, the program + * will not terminate until it receives an [EOF character](https://en.wikipedia.org/wiki/End-of-file#EOF_character). To exit without + * waiting for user input, call `process.stdin.unref()`. + * @since v0.1.98 + */ + export function createInterface( + input: NodeJS.ReadableStream, + output?: NodeJS.WritableStream, + completer?: Completer | AsyncCompleter, + terminal?: boolean, + ): Interface; + export function createInterface(options: ReadLineOptions): Interface; + /** + * The `readline.emitKeypressEvents()` method causes the given `Readable` stream to begin emitting `'keypress'` events corresponding to received input. + * + * Optionally, `interface` specifies a `readline.Interface` instance for which + * autocompletion is disabled when copy-pasted input is detected. + * + * If the `stream` is a `TTY`, then it must be in raw mode. + * + * This is automatically called by any readline instance on its `input` if the`input` is a terminal. Closing the `readline` instance does not stop + * the `input` from emitting `'keypress'` events. + * + * ```js + * readline.emitKeypressEvents(process.stdin); + * if (process.stdin.isTTY) + * process.stdin.setRawMode(true); + * ``` + * + * ## Example: Tiny CLI + * + * The following example illustrates the use of `readline.Interface` class to + * implement a small command-line interface: + * + * ```js + * const readline = require('node:readline'); + * const rl = readline.createInterface({ + * input: process.stdin, + * output: process.stdout, + * prompt: 'OHAI> ', + * }); + * + * rl.prompt(); + * + * rl.on('line', (line) => { + * switch (line.trim()) { + * case 'hello': + * console.log('world!'); + * break; + * default: + * console.log(`Say what? I might have heard '${line.trim()}'`); + * break; + * } + * rl.prompt(); + * }).on('close', () => { + * console.log('Have a great day!'); + * process.exit(0); + * }); + * ``` + * + * ## Example: Read file stream line-by-Line + * + * A common use case for `readline` is to consume an input file one line at a + * time. The easiest way to do so is leveraging the `fs.ReadStream` API as + * well as a `for await...of` loop: + * + * ```js + * const fs = require('node:fs'); + * const readline = require('node:readline'); + * + * async function processLineByLine() { + * const fileStream = fs.createReadStream('input.txt'); + * + * const rl = readline.createInterface({ + * input: fileStream, + * crlfDelay: Infinity, + * }); + * // Note: we use the crlfDelay option to recognize all instances of CR LF + * // ('\r\n') in input.txt as a single line break. + * + * for await (const line of rl) { + * // Each line in input.txt will be successively available here as `line`. + * console.log(`Line from file: ${line}`); + * } + * } + * + * processLineByLine(); + * ``` + * + * Alternatively, one could use the `'line'` event: + * + * ```js + * const fs = require('node:fs'); + * const readline = require('node:readline'); + * + * const rl = readline.createInterface({ + * input: fs.createReadStream('sample.txt'), + * crlfDelay: Infinity, + * }); + * + * rl.on('line', (line) => { + * console.log(`Line from file: ${line}`); + * }); + * ``` + * + * Currently, `for await...of` loop can be a bit slower. If `async` / `await`flow and speed are both essential, a mixed approach can be applied: + * + * ```js + * const { once } = require('node:events'); + * const { createReadStream } = require('node:fs'); + * const { createInterface } = require('node:readline'); + * + * (async function processLineByLine() { + * try { + * const rl = createInterface({ + * input: createReadStream('big-file.txt'), + * crlfDelay: Infinity, + * }); + * + * rl.on('line', (line) => { + * // Process the line. + * }); + * + * await once(rl, 'close'); + * + * console.log('File processed.'); + * } catch (err) { + * console.error(err); + * } + * })(); + * ``` + * @since v0.7.7 + */ + export function emitKeypressEvents(stream: NodeJS.ReadableStream, readlineInterface?: Interface): void; + export type Direction = -1 | 0 | 1; + export interface CursorPos { + rows: number; + cols: number; + } + /** + * The `readline.clearLine()` method clears current line of given `TTY` stream + * in a specified direction identified by `dir`. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if `stream` wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + export function clearLine(stream: NodeJS.WritableStream, dir: Direction, callback?: () => void): boolean; + /** + * The `readline.clearScreenDown()` method clears the given `TTY` stream from + * the current position of the cursor down. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if `stream` wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + export function clearScreenDown(stream: NodeJS.WritableStream, callback?: () => void): boolean; + /** + * The `readline.cursorTo()` method moves cursor to the specified position in a + * given `TTY` `stream`. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if `stream` wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + export function cursorTo(stream: NodeJS.WritableStream, x: number, y?: number, callback?: () => void): boolean; + /** + * The `readline.moveCursor()` method moves the cursor _relative_ to its current + * position in a given `TTY` `stream`. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if `stream` wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + export function moveCursor(stream: NodeJS.WritableStream, dx: number, dy: number, callback?: () => void): boolean; +} +declare module "node:readline" { + export * from "readline"; +} diff --git a/node_modules/@types/node/ts4.8/readline/promises.d.ts b/node_modules/@types/node/ts4.8/readline/promises.d.ts new file mode 100644 index 00000000..73fb1115 --- /dev/null +++ b/node_modules/@types/node/ts4.8/readline/promises.d.ts @@ -0,0 +1,150 @@ +/** + * @since v17.0.0 + * @experimental + */ +declare module "readline/promises" { + import { AsyncCompleter, Completer, Direction, Interface as _Interface, ReadLineOptions } from "node:readline"; + import { Abortable } from "node:events"; + /** + * Instances of the `readlinePromises.Interface` class are constructed using the`readlinePromises.createInterface()` method. Every instance is associated with a + * single `input` `Readable` stream and a single `output` `Writable` stream. + * The `output` stream is used to print prompts for user input that arrives on, + * and is read from, the `input` stream. + * @since v17.0.0 + */ + class Interface extends _Interface { + /** + * The `rl.question()` method displays the `query` by writing it to the `output`, + * waits for user input to be provided on `input`, then invokes the `callback`function passing the provided input as the first argument. + * + * When called, `rl.question()` will resume the `input` stream if it has been + * paused. + * + * If the `Interface` was created with `output` set to `null` or`undefined` the `query` is not written. + * + * If the question is called after `rl.close()`, it returns a rejected promise. + * + * Example usage: + * + * ```js + * const answer = await rl.question('What is your favorite food? '); + * console.log(`Oh, so your favorite food is ${answer}`); + * ``` + * + * Using an `AbortSignal` to cancel a question. + * + * ```js + * const signal = AbortSignal.timeout(10_000); + * + * signal.addEventListener('abort', () => { + * console.log('The food question timed out'); + * }, { once: true }); + * + * const answer = await rl.question('What is your favorite food? ', { signal }); + * console.log(`Oh, so your favorite food is ${answer}`); + * ``` + * @since v17.0.0 + * @param query A statement or query to write to `output`, prepended to the prompt. + * @return A promise that is fulfilled with the user's input in response to the `query`. + */ + question(query: string): Promise; + question(query: string, options: Abortable): Promise; + } + /** + * @since v17.0.0 + */ + class Readline { + /** + * @param stream A TTY stream. + */ + constructor( + stream: NodeJS.WritableStream, + options?: { + autoCommit?: boolean; + }, + ); + /** + * The `rl.clearLine()` method adds to the internal list of pending action an + * action that clears current line of the associated `stream` in a specified + * direction identified by `dir`. + * Call `rl.commit()` to see the effect of this method, unless `autoCommit: true`was passed to the constructor. + * @since v17.0.0 + * @return this + */ + clearLine(dir: Direction): this; + /** + * The `rl.clearScreenDown()` method adds to the internal list of pending action an + * action that clears the associated stream from the current position of the + * cursor down. + * Call `rl.commit()` to see the effect of this method, unless `autoCommit: true`was passed to the constructor. + * @since v17.0.0 + * @return this + */ + clearScreenDown(): this; + /** + * The `rl.commit()` method sends all the pending actions to the associated`stream` and clears the internal list of pending actions. + * @since v17.0.0 + */ + commit(): Promise; + /** + * The `rl.cursorTo()` method adds to the internal list of pending action an action + * that moves cursor to the specified position in the associated `stream`. + * Call `rl.commit()` to see the effect of this method, unless `autoCommit: true`was passed to the constructor. + * @since v17.0.0 + * @return this + */ + cursorTo(x: number, y?: number): this; + /** + * The `rl.moveCursor()` method adds to the internal list of pending action an + * action that moves the cursor _relative_ to its current position in the + * associated `stream`. + * Call `rl.commit()` to see the effect of this method, unless `autoCommit: true`was passed to the constructor. + * @since v17.0.0 + * @return this + */ + moveCursor(dx: number, dy: number): this; + /** + * The `rl.rollback` methods clears the internal list of pending actions without + * sending it to the associated `stream`. + * @since v17.0.0 + * @return this + */ + rollback(): this; + } + /** + * The `readlinePromises.createInterface()` method creates a new `readlinePromises.Interface`instance. + * + * ```js + * const readlinePromises = require('node:readline/promises'); + * const rl = readlinePromises.createInterface({ + * input: process.stdin, + * output: process.stdout, + * }); + * ``` + * + * Once the `readlinePromises.Interface` instance is created, the most common case + * is to listen for the `'line'` event: + * + * ```js + * rl.on('line', (line) => { + * console.log(`Received: ${line}`); + * }); + * ``` + * + * If `terminal` is `true` for this instance then the `output` stream will get + * the best compatibility if it defines an `output.columns` property and emits + * a `'resize'` event on the `output` if or when the columns ever change + * (`process.stdout` does this automatically when it is a TTY). + * @since v17.0.0 + */ + function createInterface( + input: NodeJS.ReadableStream, + output?: NodeJS.WritableStream, + completer?: Completer | AsyncCompleter, + terminal?: boolean, + ): Interface; + function createInterface(options: ReadLineOptions): Interface; +} +declare module "node:readline/promises" { + export * from "readline/promises"; +} diff --git a/node_modules/@types/node/ts4.8/repl.d.ts b/node_modules/@types/node/ts4.8/repl.d.ts new file mode 100644 index 00000000..6c5f81b3 --- /dev/null +++ b/node_modules/@types/node/ts4.8/repl.d.ts @@ -0,0 +1,430 @@ +/** + * The `node:repl` module provides a Read-Eval-Print-Loop (REPL) implementation + * that is available both as a standalone program or includible in other + * applications. It can be accessed using: + * + * ```js + * const repl = require('node:repl'); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/repl.js) + */ +declare module "repl" { + import { AsyncCompleter, Completer, Interface } from "node:readline"; + import { Context } from "node:vm"; + import { InspectOptions } from "node:util"; + interface ReplOptions { + /** + * The input prompt to display. + * @default "> " + */ + prompt?: string | undefined; + /** + * The `Readable` stream from which REPL input will be read. + * @default process.stdin + */ + input?: NodeJS.ReadableStream | undefined; + /** + * The `Writable` stream to which REPL output will be written. + * @default process.stdout + */ + output?: NodeJS.WritableStream | undefined; + /** + * If `true`, specifies that the output should be treated as a TTY terminal, and have + * ANSI/VT100 escape codes written to it. + * Default: checking the value of the `isTTY` property on the output stream upon + * instantiation. + */ + terminal?: boolean | undefined; + /** + * The function to be used when evaluating each given line of input. + * Default: an async wrapper for the JavaScript `eval()` function. An `eval` function can + * error with `repl.Recoverable` to indicate the input was incomplete and prompt for + * additional lines. + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_default_evaluation + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_custom_evaluation_functions + */ + eval?: REPLEval | undefined; + /** + * Defines if the repl prints output previews or not. + * @default `true` Always `false` in case `terminal` is falsy. + */ + preview?: boolean | undefined; + /** + * If `true`, specifies that the default `writer` function should include ANSI color + * styling to REPL output. If a custom `writer` function is provided then this has no + * effect. + * Default: the REPL instance's `terminal` value. + */ + useColors?: boolean | undefined; + /** + * If `true`, specifies that the default evaluation function will use the JavaScript + * `global` as the context as opposed to creating a new separate context for the REPL + * instance. The node CLI REPL sets this value to `true`. + * Default: `false`. + */ + useGlobal?: boolean | undefined; + /** + * If `true`, specifies that the default writer will not output the return value of a + * command if it evaluates to `undefined`. + * Default: `false`. + */ + ignoreUndefined?: boolean | undefined; + /** + * The function to invoke to format the output of each command before writing to `output`. + * Default: a wrapper for `util.inspect`. + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_customizing_repl_output + */ + writer?: REPLWriter | undefined; + /** + * An optional function used for custom Tab auto completion. + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/readline.html#readline_use_of_the_completer_function + */ + completer?: Completer | AsyncCompleter | undefined; + /** + * A flag that specifies whether the default evaluator executes all JavaScript commands in + * strict mode or default (sloppy) mode. + * Accepted values are: + * - `repl.REPL_MODE_SLOPPY` - evaluates expressions in sloppy mode. + * - `repl.REPL_MODE_STRICT` - evaluates expressions in strict mode. This is equivalent to + * prefacing every repl statement with `'use strict'`. + */ + replMode?: typeof REPL_MODE_SLOPPY | typeof REPL_MODE_STRICT | undefined; + /** + * Stop evaluating the current piece of code when `SIGINT` is received, i.e. `Ctrl+C` is + * pressed. This cannot be used together with a custom `eval` function. + * Default: `false`. + */ + breakEvalOnSigint?: boolean | undefined; + } + type REPLEval = ( + this: REPLServer, + evalCmd: string, + context: Context, + file: string, + cb: (err: Error | null, result: any) => void, + ) => void; + type REPLWriter = (this: REPLServer, obj: any) => string; + /** + * This is the default "writer" value, if none is passed in the REPL options, + * and it can be overridden by custom print functions. + */ + const writer: REPLWriter & { + options: InspectOptions; + }; + type REPLCommandAction = (this: REPLServer, text: string) => void; + interface REPLCommand { + /** + * Help text to be displayed when `.help` is entered. + */ + help?: string | undefined; + /** + * The function to execute, optionally accepting a single string argument. + */ + action: REPLCommandAction; + } + /** + * Instances of `repl.REPLServer` are created using the {@link start} method + * or directly using the JavaScript `new` keyword. + * + * ```js + * const repl = require('node:repl'); + * + * const options = { useColors: true }; + * + * const firstInstance = repl.start(options); + * const secondInstance = new repl.REPLServer(options); + * ``` + * @since v0.1.91 + */ + class REPLServer extends Interface { + /** + * The `vm.Context` provided to the `eval` function to be used for JavaScript + * evaluation. + */ + readonly context: Context; + /** + * @deprecated since v14.3.0 - Use `input` instead. + */ + readonly inputStream: NodeJS.ReadableStream; + /** + * @deprecated since v14.3.0 - Use `output` instead. + */ + readonly outputStream: NodeJS.WritableStream; + /** + * The `Readable` stream from which REPL input will be read. + */ + readonly input: NodeJS.ReadableStream; + /** + * The `Writable` stream to which REPL output will be written. + */ + readonly output: NodeJS.WritableStream; + /** + * The commands registered via `replServer.defineCommand()`. + */ + readonly commands: NodeJS.ReadOnlyDict; + /** + * A value indicating whether the REPL is currently in "editor mode". + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_commands_and_special_keys + */ + readonly editorMode: boolean; + /** + * A value indicating whether the `_` variable has been assigned. + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable + */ + readonly underscoreAssigned: boolean; + /** + * The last evaluation result from the REPL (assigned to the `_` variable inside of the REPL). + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable + */ + readonly last: any; + /** + * A value indicating whether the `_error` variable has been assigned. + * + * @since v9.8.0 + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable + */ + readonly underscoreErrAssigned: boolean; + /** + * The last error raised inside the REPL (assigned to the `_error` variable inside of the REPL). + * + * @since v9.8.0 + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable + */ + readonly lastError: any; + /** + * Specified in the REPL options, this is the function to be used when evaluating each + * given line of input. If not specified in the REPL options, this is an async wrapper + * for the JavaScript `eval()` function. + */ + readonly eval: REPLEval; + /** + * Specified in the REPL options, this is a value indicating whether the default + * `writer` function should include ANSI color styling to REPL output. + */ + readonly useColors: boolean; + /** + * Specified in the REPL options, this is a value indicating whether the default `eval` + * function will use the JavaScript `global` as the context as opposed to creating a new + * separate context for the REPL instance. + */ + readonly useGlobal: boolean; + /** + * Specified in the REPL options, this is a value indicating whether the default `writer` + * function should output the result of a command if it evaluates to `undefined`. + */ + readonly ignoreUndefined: boolean; + /** + * Specified in the REPL options, this is the function to invoke to format the output of + * each command before writing to `outputStream`. If not specified in the REPL options, + * this will be a wrapper for `util.inspect`. + */ + readonly writer: REPLWriter; + /** + * Specified in the REPL options, this is the function to use for custom Tab auto-completion. + */ + readonly completer: Completer | AsyncCompleter; + /** + * Specified in the REPL options, this is a flag that specifies whether the default `eval` + * function should execute all JavaScript commands in strict mode or default (sloppy) mode. + * Possible values are: + * - `repl.REPL_MODE_SLOPPY` - evaluates expressions in sloppy mode. + * - `repl.REPL_MODE_STRICT` - evaluates expressions in strict mode. This is equivalent to + * prefacing every repl statement with `'use strict'`. + */ + readonly replMode: typeof REPL_MODE_SLOPPY | typeof REPL_MODE_STRICT; + /** + * NOTE: According to the documentation: + * + * > Instances of `repl.REPLServer` are created using the `repl.start()` method and + * > _should not_ be created directly using the JavaScript `new` keyword. + * + * `REPLServer` cannot be subclassed due to implementation specifics in NodeJS. + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_class_replserver + */ + private constructor(); + /** + * The `replServer.defineCommand()` method is used to add new `.`\-prefixed commands + * to the REPL instance. Such commands are invoked by typing a `.` followed by the`keyword`. The `cmd` is either a `Function` or an `Object` with the following + * properties: + * + * The following example shows two new commands added to the REPL instance: + * + * ```js + * const repl = require('node:repl'); + * + * const replServer = repl.start({ prompt: '> ' }); + * replServer.defineCommand('sayhello', { + * help: 'Say hello', + * action(name) { + * this.clearBufferedCommand(); + * console.log(`Hello, ${name}!`); + * this.displayPrompt(); + * }, + * }); + * replServer.defineCommand('saybye', function saybye() { + * console.log('Goodbye!'); + * this.close(); + * }); + * ``` + * + * The new commands can then be used from within the REPL instance: + * + * ```console + * > .sayhello Node.js User + * Hello, Node.js User! + * > .saybye + * Goodbye! + * ``` + * @since v0.3.0 + * @param keyword The command keyword (_without_ a leading `.` character). + * @param cmd The function to invoke when the command is processed. + */ + defineCommand(keyword: string, cmd: REPLCommandAction | REPLCommand): void; + /** + * The `replServer.displayPrompt()` method readies the REPL instance for input + * from the user, printing the configured `prompt` to a new line in the `output`and resuming the `input` to accept new input. + * + * When multi-line input is being entered, an ellipsis is printed rather than the + * 'prompt'. + * + * When `preserveCursor` is `true`, the cursor placement will not be reset to `0`. + * + * The `replServer.displayPrompt` method is primarily intended to be called from + * within the action function for commands registered using the`replServer.defineCommand()` method. + * @since v0.1.91 + */ + displayPrompt(preserveCursor?: boolean): void; + /** + * The `replServer.clearBufferedCommand()` method clears any command that has been + * buffered but not yet executed. This method is primarily intended to be + * called from within the action function for commands registered using the`replServer.defineCommand()` method. + * @since v9.0.0 + */ + clearBufferedCommand(): void; + /** + * Initializes a history log file for the REPL instance. When executing the + * Node.js binary and using the command-line REPL, a history file is initialized + * by default. However, this is not the case when creating a REPL + * programmatically. Use this method to initialize a history log file when working + * with REPL instances programmatically. + * @since v11.10.0 + * @param historyPath the path to the history file + * @param callback called when history writes are ready or upon error + */ + setupHistory(path: string, callback: (err: Error | null, repl: this) => void): void; + /** + * events.EventEmitter + * 1. close - inherited from `readline.Interface` + * 2. line - inherited from `readline.Interface` + * 3. pause - inherited from `readline.Interface` + * 4. resume - inherited from `readline.Interface` + * 5. SIGCONT - inherited from `readline.Interface` + * 6. SIGINT - inherited from `readline.Interface` + * 7. SIGTSTP - inherited from `readline.Interface` + * 8. exit + * 9. reset + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "close", listener: () => void): this; + addListener(event: "line", listener: (input: string) => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: "SIGCONT", listener: () => void): this; + addListener(event: "SIGINT", listener: () => void): this; + addListener(event: "SIGTSTP", listener: () => void): this; + addListener(event: "exit", listener: () => void): this; + addListener(event: "reset", listener: (context: Context) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "close"): boolean; + emit(event: "line", input: string): boolean; + emit(event: "pause"): boolean; + emit(event: "resume"): boolean; + emit(event: "SIGCONT"): boolean; + emit(event: "SIGINT"): boolean; + emit(event: "SIGTSTP"): boolean; + emit(event: "exit"): boolean; + emit(event: "reset", context: Context): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "close", listener: () => void): this; + on(event: "line", listener: (input: string) => void): this; + on(event: "pause", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: "SIGCONT", listener: () => void): this; + on(event: "SIGINT", listener: () => void): this; + on(event: "SIGTSTP", listener: () => void): this; + on(event: "exit", listener: () => void): this; + on(event: "reset", listener: (context: Context) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "line", listener: (input: string) => void): this; + once(event: "pause", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: "SIGCONT", listener: () => void): this; + once(event: "SIGINT", listener: () => void): this; + once(event: "SIGTSTP", listener: () => void): this; + once(event: "exit", listener: () => void): this; + once(event: "reset", listener: (context: Context) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "line", listener: (input: string) => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: "SIGCONT", listener: () => void): this; + prependListener(event: "SIGINT", listener: () => void): this; + prependListener(event: "SIGTSTP", listener: () => void): this; + prependListener(event: "exit", listener: () => void): this; + prependListener(event: "reset", listener: (context: Context) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "line", listener: (input: string) => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: "SIGCONT", listener: () => void): this; + prependOnceListener(event: "SIGINT", listener: () => void): this; + prependOnceListener(event: "SIGTSTP", listener: () => void): this; + prependOnceListener(event: "exit", listener: () => void): this; + prependOnceListener(event: "reset", listener: (context: Context) => void): this; + } + /** + * A flag passed in the REPL options. Evaluates expressions in sloppy mode. + */ + const REPL_MODE_SLOPPY: unique symbol; + /** + * A flag passed in the REPL options. Evaluates expressions in strict mode. + * This is equivalent to prefacing every repl statement with `'use strict'`. + */ + const REPL_MODE_STRICT: unique symbol; + /** + * The `repl.start()` method creates and starts a {@link REPLServer} instance. + * + * If `options` is a string, then it specifies the input prompt: + * + * ```js + * const repl = require('node:repl'); + * + * // a Unix style prompt + * repl.start('$ '); + * ``` + * @since v0.1.91 + */ + function start(options?: string | ReplOptions): REPLServer; + /** + * Indicates a recoverable error that a `REPLServer` can use to support multi-line input. + * + * @see https://nodejs.org/dist/latest-v20.x/docs/api/repl.html#repl_recoverable_errors + */ + class Recoverable extends SyntaxError { + err: Error; + constructor(err: Error); + } +} +declare module "node:repl" { + export * from "repl"; +} diff --git a/node_modules/@types/node/ts4.8/stream.d.ts b/node_modules/@types/node/ts4.8/stream.d.ts new file mode 100644 index 00000000..15c633fc --- /dev/null +++ b/node_modules/@types/node/ts4.8/stream.d.ts @@ -0,0 +1,1701 @@ +/** + * A stream is an abstract interface for working with streaming data in Node.js. + * The `node:stream` module provides an API for implementing the stream interface. + * + * There are many stream objects provided by Node.js. For instance, a `request to an HTTP server` and `process.stdout` are both stream instances. + * + * Streams can be readable, writable, or both. All streams are instances of `EventEmitter`. + * + * To access the `node:stream` module: + * + * ```js + * const stream = require('node:stream'); + * ``` + * + * The `node:stream` module is useful for creating new types of stream instances. + * It is usually not necessary to use the `node:stream` module to consume streams. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/stream.js) + */ +declare module "stream" { + import { Abortable, EventEmitter } from "node:events"; + import { Blob as NodeBlob } from "node:buffer"; + import * as streamPromises from "node:stream/promises"; + import * as streamConsumers from "node:stream/consumers"; + import * as streamWeb from "node:stream/web"; + + type ComposeFnParam = (source: any) => void; + + class internal extends EventEmitter { + pipe( + destination: T, + options?: { + end?: boolean | undefined; + }, + ): T; + compose( + stream: T | ComposeFnParam | Iterable | AsyncIterable, + options?: { signal: AbortSignal }, + ): T; + } + import Stream = internal.Stream; + import Readable = internal.Readable; + import ReadableOptions = internal.ReadableOptions; + interface ArrayOptions { + /** the maximum concurrent invocations of `fn` to call on the stream at once. **Default: 1**. */ + concurrency?: number; + /** allows destroying the stream if the signal is aborted. */ + signal?: AbortSignal; + } + class ReadableBase extends Stream implements NodeJS.ReadableStream { + /** + * A utility method for creating Readable Streams out of iterators. + */ + static from(iterable: Iterable | AsyncIterable, options?: ReadableOptions): Readable; + /** + * Returns whether the stream has been read from or cancelled. + * @since v16.8.0 + */ + static isDisturbed(stream: Readable | NodeJS.ReadableStream): boolean; + /** + * Returns whether the stream was destroyed or errored before emitting `'end'`. + * @since v16.8.0 + * @experimental + */ + readonly readableAborted: boolean; + /** + * Is `true` if it is safe to call `readable.read()`, which means + * the stream has not been destroyed or emitted `'error'` or `'end'`. + * @since v11.4.0 + */ + readable: boolean; + /** + * Returns whether `'data'` has been emitted. + * @since v16.7.0, v14.18.0 + * @experimental + */ + readonly readableDidRead: boolean; + /** + * Getter for the property `encoding` of a given `Readable` stream. The `encoding`property can be set using the `readable.setEncoding()` method. + * @since v12.7.0 + */ + readonly readableEncoding: BufferEncoding | null; + /** + * Becomes `true` when `'end'` event is emitted. + * @since v12.9.0 + */ + readonly readableEnded: boolean; + /** + * This property reflects the current state of a `Readable` stream as described + * in the `Three states` section. + * @since v9.4.0 + */ + readonly readableFlowing: boolean | null; + /** + * Returns the value of `highWaterMark` passed when creating this `Readable`. + * @since v9.3.0 + */ + readonly readableHighWaterMark: number; + /** + * This property contains the number of bytes (or objects) in the queue + * ready to be read. The value provides introspection data regarding + * the status of the `highWaterMark`. + * @since v9.4.0 + */ + readonly readableLength: number; + /** + * Getter for the property `objectMode` of a given `Readable` stream. + * @since v12.3.0 + */ + readonly readableObjectMode: boolean; + /** + * Is `true` after `readable.destroy()` has been called. + * @since v8.0.0 + */ + destroyed: boolean; + /** + * Is `true` after `'close'` has been emitted. + * @since v18.0.0 + */ + readonly closed: boolean; + /** + * Returns error if the stream has been destroyed with an error. + * @since v18.0.0 + */ + readonly errored: Error | null; + constructor(opts?: ReadableOptions); + _construct?(callback: (error?: Error | null) => void): void; + _read(size: number): void; + /** + * The `readable.read()` method reads data out of the internal buffer and + * returns it. If no data is available to be read, `null` is returned. By default, + * the data is returned as a `Buffer` object unless an encoding has been + * specified using the `readable.setEncoding()` method or the stream is operating + * in object mode. + * + * The optional `size` argument specifies a specific number of bytes to read. If`size` bytes are not available to be read, `null` will be returned _unless_the stream has ended, in which + * case all of the data remaining in the internal + * buffer will be returned. + * + * If the `size` argument is not specified, all of the data contained in the + * internal buffer will be returned. + * + * The `size` argument must be less than or equal to 1 GiB. + * + * The `readable.read()` method should only be called on `Readable` streams + * operating in paused mode. In flowing mode, `readable.read()` is called + * automatically until the internal buffer is fully drained. + * + * ```js + * const readable = getReadableStreamSomehow(); + * + * // 'readable' may be triggered multiple times as data is buffered in + * readable.on('readable', () => { + * let chunk; + * console.log('Stream is readable (new data received in buffer)'); + * // Use a loop to make sure we read all currently available data + * while (null !== (chunk = readable.read())) { + * console.log(`Read ${chunk.length} bytes of data...`); + * } + * }); + * + * // 'end' will be triggered once when there is no more data available + * readable.on('end', () => { + * console.log('Reached end of stream.'); + * }); + * ``` + * + * Each call to `readable.read()` returns a chunk of data, or `null`. The chunks + * are not concatenated. A `while` loop is necessary to consume all data + * currently in the buffer. When reading a large file `.read()` may return `null`, + * having consumed all buffered content so far, but there is still more data to + * come not yet buffered. In this case a new `'readable'` event will be emitted + * when there is more data in the buffer. Finally the `'end'` event will be + * emitted when there is no more data to come. + * + * Therefore to read a file's whole contents from a `readable`, it is necessary + * to collect chunks across multiple `'readable'` events: + * + * ```js + * const chunks = []; + * + * readable.on('readable', () => { + * let chunk; + * while (null !== (chunk = readable.read())) { + * chunks.push(chunk); + * } + * }); + * + * readable.on('end', () => { + * const content = chunks.join(''); + * }); + * ``` + * + * A `Readable` stream in object mode will always return a single item from + * a call to `readable.read(size)`, regardless of the value of the`size` argument. + * + * If the `readable.read()` method returns a chunk of data, a `'data'` event will + * also be emitted. + * + * Calling {@link read} after the `'end'` event has + * been emitted will return `null`. No runtime error will be raised. + * @since v0.9.4 + * @param size Optional argument to specify how much data to read. + */ + read(size?: number): any; + /** + * The `readable.setEncoding()` method sets the character encoding for + * data read from the `Readable` stream. + * + * By default, no encoding is assigned and stream data will be returned as`Buffer` objects. Setting an encoding causes the stream data + * to be returned as strings of the specified encoding rather than as `Buffer`objects. For instance, calling `readable.setEncoding('utf8')` will cause the + * output data to be interpreted as UTF-8 data, and passed as strings. Calling`readable.setEncoding('hex')` will cause the data to be encoded in hexadecimal + * string format. + * + * The `Readable` stream will properly handle multi-byte characters delivered + * through the stream that would otherwise become improperly decoded if simply + * pulled from the stream as `Buffer` objects. + * + * ```js + * const readable = getReadableStreamSomehow(); + * readable.setEncoding('utf8'); + * readable.on('data', (chunk) => { + * assert.equal(typeof chunk, 'string'); + * console.log('Got %d characters of string data:', chunk.length); + * }); + * ``` + * @since v0.9.4 + * @param encoding The encoding to use. + */ + setEncoding(encoding: BufferEncoding): this; + /** + * The `readable.pause()` method will cause a stream in flowing mode to stop + * emitting `'data'` events, switching out of flowing mode. Any data that + * becomes available will remain in the internal buffer. + * + * ```js + * const readable = getReadableStreamSomehow(); + * readable.on('data', (chunk) => { + * console.log(`Received ${chunk.length} bytes of data.`); + * readable.pause(); + * console.log('There will be no additional data for 1 second.'); + * setTimeout(() => { + * console.log('Now data will start flowing again.'); + * readable.resume(); + * }, 1000); + * }); + * ``` + * + * The `readable.pause()` method has no effect if there is a `'readable'`event listener. + * @since v0.9.4 + */ + pause(): this; + /** + * The `readable.resume()` method causes an explicitly paused `Readable` stream to + * resume emitting `'data'` events, switching the stream into flowing mode. + * + * The `readable.resume()` method can be used to fully consume the data from a + * stream without actually processing any of that data: + * + * ```js + * getReadableStreamSomehow() + * .resume() + * .on('end', () => { + * console.log('Reached the end, but did not read anything.'); + * }); + * ``` + * + * The `readable.resume()` method has no effect if there is a `'readable'`event listener. + * @since v0.9.4 + */ + resume(): this; + /** + * The `readable.isPaused()` method returns the current operating state of the`Readable`. This is used primarily by the mechanism that underlies the`readable.pipe()` method. In most + * typical cases, there will be no reason to + * use this method directly. + * + * ```js + * const readable = new stream.Readable(); + * + * readable.isPaused(); // === false + * readable.pause(); + * readable.isPaused(); // === true + * readable.resume(); + * readable.isPaused(); // === false + * ``` + * @since v0.11.14 + */ + isPaused(): boolean; + /** + * The `readable.unpipe()` method detaches a `Writable` stream previously attached + * using the {@link pipe} method. + * + * If the `destination` is not specified, then _all_ pipes are detached. + * + * If the `destination` is specified, but no pipe is set up for it, then + * the method does nothing. + * + * ```js + * const fs = require('node:fs'); + * const readable = getReadableStreamSomehow(); + * const writable = fs.createWriteStream('file.txt'); + * // All the data from readable goes into 'file.txt', + * // but only for the first second. + * readable.pipe(writable); + * setTimeout(() => { + * console.log('Stop writing to file.txt.'); + * readable.unpipe(writable); + * console.log('Manually close the file stream.'); + * writable.end(); + * }, 1000); + * ``` + * @since v0.9.4 + * @param destination Optional specific stream to unpipe + */ + unpipe(destination?: NodeJS.WritableStream): this; + /** + * Passing `chunk` as `null` signals the end of the stream (EOF) and behaves the + * same as `readable.push(null)`, after which no more data can be written. The EOF + * signal is put at the end of the buffer and any buffered data will still be + * flushed. + * + * The `readable.unshift()` method pushes a chunk of data back into the internal + * buffer. This is useful in certain situations where a stream is being consumed by + * code that needs to "un-consume" some amount of data that it has optimistically + * pulled out of the source, so that the data can be passed on to some other party. + * + * The `stream.unshift(chunk)` method cannot be called after the `'end'` event + * has been emitted or a runtime error will be thrown. + * + * Developers using `stream.unshift()` often should consider switching to + * use of a `Transform` stream instead. See the `API for stream implementers` section for more information. + * + * ```js + * // Pull off a header delimited by \n\n. + * // Use unshift() if we get too much. + * // Call the callback with (error, header, stream). + * const { StringDecoder } = require('node:string_decoder'); + * function parseHeader(stream, callback) { + * stream.on('error', callback); + * stream.on('readable', onReadable); + * const decoder = new StringDecoder('utf8'); + * let header = ''; + * function onReadable() { + * let chunk; + * while (null !== (chunk = stream.read())) { + * const str = decoder.write(chunk); + * if (str.includes('\n\n')) { + * // Found the header boundary. + * const split = str.split(/\n\n/); + * header += split.shift(); + * const remaining = split.join('\n\n'); + * const buf = Buffer.from(remaining, 'utf8'); + * stream.removeListener('error', callback); + * // Remove the 'readable' listener before unshifting. + * stream.removeListener('readable', onReadable); + * if (buf.length) + * stream.unshift(buf); + * // Now the body of the message can be read from the stream. + * callback(null, header, stream); + * return; + * } + * // Still reading the header. + * header += str; + * } + * } + * } + * ``` + * + * Unlike {@link push}, `stream.unshift(chunk)` will not + * end the reading process by resetting the internal reading state of the stream. + * This can cause unexpected results if `readable.unshift()` is called during a + * read (i.e. from within a {@link _read} implementation on a + * custom stream). Following the call to `readable.unshift()` with an immediate {@link push} will reset the reading state appropriately, + * however it is best to simply avoid calling `readable.unshift()` while in the + * process of performing a read. + * @since v0.9.11 + * @param chunk Chunk of data to unshift onto the read queue. For streams not operating in object mode, `chunk` must be a string, `Buffer`, `Uint8Array`, or `null`. For object mode + * streams, `chunk` may be any JavaScript value. + * @param encoding Encoding of string chunks. Must be a valid `Buffer` encoding, such as `'utf8'` or `'ascii'`. + */ + unshift(chunk: any, encoding?: BufferEncoding): void; + /** + * Prior to Node.js 0.10, streams did not implement the entire `node:stream`module API as it is currently defined. (See `Compatibility` for more + * information.) + * + * When using an older Node.js library that emits `'data'` events and has a {@link pause} method that is advisory only, the`readable.wrap()` method can be used to create a `Readable` + * stream that uses + * the old stream as its data source. + * + * It will rarely be necessary to use `readable.wrap()` but the method has been + * provided as a convenience for interacting with older Node.js applications and + * libraries. + * + * ```js + * const { OldReader } = require('./old-api-module.js'); + * const { Readable } = require('node:stream'); + * const oreader = new OldReader(); + * const myReader = new Readable().wrap(oreader); + * + * myReader.on('readable', () => { + * myReader.read(); // etc. + * }); + * ``` + * @since v0.9.4 + * @param stream An "old style" readable stream + */ + wrap(stream: NodeJS.ReadableStream): this; + push(chunk: any, encoding?: BufferEncoding): boolean; + /** + * The iterator created by this method gives users the option to cancel the destruction + * of the stream if the `for await...of` loop is exited by `return`, `break`, or `throw`, + * or if the iterator should destroy the stream if the stream emitted an error during iteration. + * @since v16.3.0 + * @param options.destroyOnReturn When set to `false`, calling `return` on the async iterator, + * or exiting a `for await...of` iteration using a `break`, `return`, or `throw` will not destroy the stream. + * **Default: `true`**. + */ + iterator(options?: { destroyOnReturn?: boolean }): AsyncIterableIterator; + /** + * This method allows mapping over the stream. The *fn* function will be called for every chunk in the stream. + * If the *fn* function returns a promise - that promise will be `await`ed before being passed to the result stream. + * @since v17.4.0, v16.14.0 + * @param fn a function to map over every chunk in the stream. Async or not. + * @returns a stream mapped with the function *fn*. + */ + map(fn: (data: any, options?: Pick) => any, options?: ArrayOptions): Readable; + /** + * This method allows filtering the stream. For each chunk in the stream the *fn* function will be called + * and if it returns a truthy value, the chunk will be passed to the result stream. + * If the *fn* function returns a promise - that promise will be `await`ed. + * @since v17.4.0, v16.14.0 + * @param fn a function to filter chunks from the stream. Async or not. + * @returns a stream filtered with the predicate *fn*. + */ + filter( + fn: (data: any, options?: Pick) => boolean | Promise, + options?: ArrayOptions, + ): Readable; + /** + * This method allows iterating a stream. For each chunk in the stream the *fn* function will be called. + * If the *fn* function returns a promise - that promise will be `await`ed. + * + * This method is different from `for await...of` loops in that it can optionally process chunks concurrently. + * In addition, a `forEach` iteration can only be stopped by having passed a `signal` option + * and aborting the related AbortController while `for await...of` can be stopped with `break` or `return`. + * In either case the stream will be destroyed. + * + * This method is different from listening to the `'data'` event in that it uses the `readable` event + * in the underlying machinary and can limit the number of concurrent *fn* calls. + * @since v17.5.0 + * @param fn a function to call on each chunk of the stream. Async or not. + * @returns a promise for when the stream has finished. + */ + forEach( + fn: (data: any, options?: Pick) => void | Promise, + options?: ArrayOptions, + ): Promise; + /** + * This method allows easily obtaining the contents of a stream. + * + * As this method reads the entire stream into memory, it negates the benefits of streams. It's intended + * for interoperability and convenience, not as the primary way to consume streams. + * @since v17.5.0 + * @returns a promise containing an array with the contents of the stream. + */ + toArray(options?: Pick): Promise; + /** + * This method is similar to `Array.prototype.some` and calls *fn* on each chunk in the stream + * until the awaited return value is `true` (or any truthy value). Once an *fn* call on a chunk + * `await`ed return value is truthy, the stream is destroyed and the promise is fulfilled with `true`. + * If none of the *fn* calls on the chunks return a truthy value, the promise is fulfilled with `false`. + * @since v17.5.0 + * @param fn a function to call on each chunk of the stream. Async or not. + * @returns a promise evaluating to `true` if *fn* returned a truthy value for at least one of the chunks. + */ + some( + fn: (data: any, options?: Pick) => boolean | Promise, + options?: ArrayOptions, + ): Promise; + /** + * This method is similar to `Array.prototype.find` and calls *fn* on each chunk in the stream + * to find a chunk with a truthy value for *fn*. Once an *fn* call's awaited return value is truthy, + * the stream is destroyed and the promise is fulfilled with value for which *fn* returned a truthy value. + * If all of the *fn* calls on the chunks return a falsy value, the promise is fulfilled with `undefined`. + * @since v17.5.0 + * @param fn a function to call on each chunk of the stream. Async or not. + * @returns a promise evaluating to the first chunk for which *fn* evaluated with a truthy value, + * or `undefined` if no element was found. + */ + find( + fn: (data: any, options?: Pick) => data is T, + options?: ArrayOptions, + ): Promise; + find( + fn: (data: any, options?: Pick) => boolean | Promise, + options?: ArrayOptions, + ): Promise; + /** + * This method is similar to `Array.prototype.every` and calls *fn* on each chunk in the stream + * to check if all awaited return values are truthy value for *fn*. Once an *fn* call on a chunk + * `await`ed return value is falsy, the stream is destroyed and the promise is fulfilled with `false`. + * If all of the *fn* calls on the chunks return a truthy value, the promise is fulfilled with `true`. + * @since v17.5.0 + * @param fn a function to call on each chunk of the stream. Async or not. + * @returns a promise evaluating to `true` if *fn* returned a truthy value for every one of the chunks. + */ + every( + fn: (data: any, options?: Pick) => boolean | Promise, + options?: ArrayOptions, + ): Promise; + /** + * This method returns a new stream by applying the given callback to each chunk of the stream + * and then flattening the result. + * + * It is possible to return a stream or another iterable or async iterable from *fn* and the result streams + * will be merged (flattened) into the returned stream. + * @since v17.5.0 + * @param fn a function to map over every chunk in the stream. May be async. May be a stream or generator. + * @returns a stream flat-mapped with the function *fn*. + */ + flatMap(fn: (data: any, options?: Pick) => any, options?: ArrayOptions): Readable; + /** + * This method returns a new stream with the first *limit* chunks dropped from the start. + * @since v17.5.0 + * @param limit the number of chunks to drop from the readable. + * @returns a stream with *limit* chunks dropped from the start. + */ + drop(limit: number, options?: Pick): Readable; + /** + * This method returns a new stream with the first *limit* chunks. + * @since v17.5.0 + * @param limit the number of chunks to take from the readable. + * @returns a stream with *limit* chunks taken. + */ + take(limit: number, options?: Pick): Readable; + /** + * This method returns a new stream with chunks of the underlying stream paired with a counter + * in the form `[index, chunk]`. The first index value is `0` and it increases by 1 for each chunk produced. + * @since v17.5.0 + * @returns a stream of indexed pairs. + */ + asIndexedPairs(options?: Pick): Readable; + /** + * This method calls *fn* on each chunk of the stream in order, passing it the result from the calculation + * on the previous element. It returns a promise for the final value of the reduction. + * + * If no *initial* value is supplied the first chunk of the stream is used as the initial value. + * If the stream is empty, the promise is rejected with a `TypeError` with the `ERR_INVALID_ARGS` code property. + * + * The reducer function iterates the stream element-by-element which means that there is no *concurrency* parameter + * or parallelism. To perform a reduce concurrently, you can extract the async function to `readable.map` method. + * @since v17.5.0 + * @param fn a reducer function to call over every chunk in the stream. Async or not. + * @param initial the initial value to use in the reduction. + * @returns a promise for the final value of the reduction. + */ + reduce( + fn: (previous: any, data: any, options?: Pick) => T, + initial?: undefined, + options?: Pick, + ): Promise; + reduce( + fn: (previous: T, data: any, options?: Pick) => T, + initial: T, + options?: Pick, + ): Promise; + _destroy(error: Error | null, callback: (error?: Error | null) => void): void; + /** + * Destroy the stream. Optionally emit an `'error'` event, and emit a `'close'`event (unless `emitClose` is set to `false`). After this call, the readable + * stream will release any internal resources and subsequent calls to `push()`will be ignored. + * + * Once `destroy()` has been called any further calls will be a no-op and no + * further errors except from `_destroy()` may be emitted as `'error'`. + * + * Implementors should not override this method, but instead implement `readable._destroy()`. + * @since v8.0.0 + * @param error Error which will be passed as payload in `'error'` event + */ + destroy(error?: Error): this; + /** + * Event emitter + * The defined events on documents including: + * 1. close + * 2. data + * 3. end + * 4. error + * 5. pause + * 6. readable + * 7. resume + */ + addListener(event: "close", listener: () => void): this; + addListener(event: "data", listener: (chunk: any) => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "readable", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "close"): boolean; + emit(event: "data", chunk: any): boolean; + emit(event: "end"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "pause"): boolean; + emit(event: "readable"): boolean; + emit(event: "resume"): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "close", listener: () => void): this; + on(event: "data", listener: (chunk: any) => void): this; + on(event: "end", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "pause", listener: () => void): this; + on(event: "readable", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "data", listener: (chunk: any) => void): this; + once(event: "end", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "pause", listener: () => void): this; + once(event: "readable", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "data", listener: (chunk: any) => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "readable", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "data", listener: (chunk: any) => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "readable", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + removeListener(event: "close", listener: () => void): this; + removeListener(event: "data", listener: (chunk: any) => void): this; + removeListener(event: "end", listener: () => void): this; + removeListener(event: "error", listener: (err: Error) => void): this; + removeListener(event: "pause", listener: () => void): this; + removeListener(event: "readable", listener: () => void): this; + removeListener(event: "resume", listener: () => void): this; + removeListener(event: string | symbol, listener: (...args: any[]) => void): this; + [Symbol.asyncIterator](): AsyncIterableIterator; + /** + * Calls `readable.destroy()` with an `AbortError` and returns a promise that fulfills when the stream is finished. + * @since v20.4.0 + */ + [Symbol.asyncDispose](): Promise; + } + import WritableOptions = internal.WritableOptions; + class WritableBase extends Stream implements NodeJS.WritableStream { + /** + * Is `true` if it is safe to call `writable.write()`, which means + * the stream has not been destroyed, errored, or ended. + * @since v11.4.0 + */ + readonly writable: boolean; + /** + * Is `true` after `writable.end()` has been called. This property + * does not indicate whether the data has been flushed, for this use `writable.writableFinished` instead. + * @since v12.9.0 + */ + readonly writableEnded: boolean; + /** + * Is set to `true` immediately before the `'finish'` event is emitted. + * @since v12.6.0 + */ + readonly writableFinished: boolean; + /** + * Return the value of `highWaterMark` passed when creating this `Writable`. + * @since v9.3.0 + */ + readonly writableHighWaterMark: number; + /** + * This property contains the number of bytes (or objects) in the queue + * ready to be written. The value provides introspection data regarding + * the status of the `highWaterMark`. + * @since v9.4.0 + */ + readonly writableLength: number; + /** + * Getter for the property `objectMode` of a given `Writable` stream. + * @since v12.3.0 + */ + readonly writableObjectMode: boolean; + /** + * Number of times `writable.uncork()` needs to be + * called in order to fully uncork the stream. + * @since v13.2.0, v12.16.0 + */ + readonly writableCorked: number; + /** + * Is `true` after `writable.destroy()` has been called. + * @since v8.0.0 + */ + destroyed: boolean; + /** + * Is `true` after `'close'` has been emitted. + * @since v18.0.0 + */ + readonly closed: boolean; + /** + * Returns error if the stream has been destroyed with an error. + * @since v18.0.0 + */ + readonly errored: Error | null; + /** + * Is `true` if the stream's buffer has been full and stream will emit `'drain'`. + * @since v15.2.0, v14.17.0 + */ + readonly writableNeedDrain: boolean; + constructor(opts?: WritableOptions); + _write(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; + _writev?( + chunks: Array<{ + chunk: any; + encoding: BufferEncoding; + }>, + callback: (error?: Error | null) => void, + ): void; + _construct?(callback: (error?: Error | null) => void): void; + _destroy(error: Error | null, callback: (error?: Error | null) => void): void; + _final(callback: (error?: Error | null) => void): void; + /** + * The `writable.write()` method writes some data to the stream, and calls the + * supplied `callback` once the data has been fully handled. If an error + * occurs, the `callback` will be called with the error as its + * first argument. The `callback` is called asynchronously and before `'error'` is + * emitted. + * + * The return value is `true` if the internal buffer is less than the`highWaterMark` configured when the stream was created after admitting `chunk`. + * If `false` is returned, further attempts to write data to the stream should + * stop until the `'drain'` event is emitted. + * + * While a stream is not draining, calls to `write()` will buffer `chunk`, and + * return false. Once all currently buffered chunks are drained (accepted for + * delivery by the operating system), the `'drain'` event will be emitted. + * Once `write()` returns false, do not write more chunks + * until the `'drain'` event is emitted. While calling `write()` on a stream that + * is not draining is allowed, Node.js will buffer all written chunks until + * maximum memory usage occurs, at which point it will abort unconditionally. + * Even before it aborts, high memory usage will cause poor garbage collector + * performance and high RSS (which is not typically released back to the system, + * even after the memory is no longer required). Since TCP sockets may never + * drain if the remote peer does not read the data, writing a socket that is + * not draining may lead to a remotely exploitable vulnerability. + * + * Writing data while the stream is not draining is particularly + * problematic for a `Transform`, because the `Transform` streams are paused + * by default until they are piped or a `'data'` or `'readable'` event handler + * is added. + * + * If the data to be written can be generated or fetched on demand, it is + * recommended to encapsulate the logic into a `Readable` and use {@link pipe}. However, if calling `write()` is preferred, it is + * possible to respect backpressure and avoid memory issues using the `'drain'` event: + * + * ```js + * function write(data, cb) { + * if (!stream.write(data)) { + * stream.once('drain', cb); + * } else { + * process.nextTick(cb); + * } + * } + * + * // Wait for cb to be called before doing any other write. + * write('hello', () => { + * console.log('Write completed, do more writes now.'); + * }); + * ``` + * + * A `Writable` stream in object mode will always ignore the `encoding` argument. + * @since v0.9.4 + * @param chunk Optional data to write. For streams not operating in object mode, `chunk` must be a string, `Buffer` or `Uint8Array`. For object mode streams, `chunk` may be any + * JavaScript value other than `null`. + * @param [encoding='utf8'] The encoding, if `chunk` is a string. + * @param callback Callback for when this chunk of data is flushed. + * @return `false` if the stream wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + write(chunk: any, callback?: (error: Error | null | undefined) => void): boolean; + write(chunk: any, encoding: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean; + /** + * The `writable.setDefaultEncoding()` method sets the default `encoding` for a `Writable` stream. + * @since v0.11.15 + * @param encoding The new default encoding + */ + setDefaultEncoding(encoding: BufferEncoding): this; + /** + * Calling the `writable.end()` method signals that no more data will be written + * to the `Writable`. The optional `chunk` and `encoding` arguments allow one + * final additional chunk of data to be written immediately before closing the + * stream. + * + * Calling the {@link write} method after calling {@link end} will raise an error. + * + * ```js + * // Write 'hello, ' and then end with 'world!'. + * const fs = require('node:fs'); + * const file = fs.createWriteStream('example.txt'); + * file.write('hello, '); + * file.end('world!'); + * // Writing more now is not allowed! + * ``` + * @since v0.9.4 + * @param chunk Optional data to write. For streams not operating in object mode, `chunk` must be a string, `Buffer` or `Uint8Array`. For object mode streams, `chunk` may be any + * JavaScript value other than `null`. + * @param encoding The encoding if `chunk` is a string + * @param callback Callback for when the stream is finished. + */ + end(cb?: () => void): this; + end(chunk: any, cb?: () => void): this; + end(chunk: any, encoding: BufferEncoding, cb?: () => void): this; + /** + * The `writable.cork()` method forces all written data to be buffered in memory. + * The buffered data will be flushed when either the {@link uncork} or {@link end} methods are called. + * + * The primary intent of `writable.cork()` is to accommodate a situation in which + * several small chunks are written to the stream in rapid succession. Instead of + * immediately forwarding them to the underlying destination, `writable.cork()`buffers all the chunks until `writable.uncork()` is called, which will pass them + * all to `writable._writev()`, if present. This prevents a head-of-line blocking + * situation where data is being buffered while waiting for the first small chunk + * to be processed. However, use of `writable.cork()` without implementing`writable._writev()` may have an adverse effect on throughput. + * + * See also: `writable.uncork()`, `writable._writev()`. + * @since v0.11.2 + */ + cork(): void; + /** + * The `writable.uncork()` method flushes all data buffered since {@link cork} was called. + * + * When using `writable.cork()` and `writable.uncork()` to manage the buffering + * of writes to a stream, defer calls to `writable.uncork()` using`process.nextTick()`. Doing so allows batching of all`writable.write()` calls that occur within a given Node.js event + * loop phase. + * + * ```js + * stream.cork(); + * stream.write('some '); + * stream.write('data '); + * process.nextTick(() => stream.uncork()); + * ``` + * + * If the `writable.cork()` method is called multiple times on a stream, the + * same number of calls to `writable.uncork()` must be called to flush the buffered + * data. + * + * ```js + * stream.cork(); + * stream.write('some '); + * stream.cork(); + * stream.write('data '); + * process.nextTick(() => { + * stream.uncork(); + * // The data will not be flushed until uncork() is called a second time. + * stream.uncork(); + * }); + * ``` + * + * See also: `writable.cork()`. + * @since v0.11.2 + */ + uncork(): void; + /** + * Destroy the stream. Optionally emit an `'error'` event, and emit a `'close'`event (unless `emitClose` is set to `false`). After this call, the writable + * stream has ended and subsequent calls to `write()` or `end()` will result in + * an `ERR_STREAM_DESTROYED` error. + * This is a destructive and immediate way to destroy a stream. Previous calls to`write()` may not have drained, and may trigger an `ERR_STREAM_DESTROYED` error. + * Use `end()` instead of destroy if data should flush before close, or wait for + * the `'drain'` event before destroying the stream. + * + * Once `destroy()` has been called any further calls will be a no-op and no + * further errors except from `_destroy()` may be emitted as `'error'`. + * + * Implementors should not override this method, + * but instead implement `writable._destroy()`. + * @since v8.0.0 + * @param error Optional, an error to emit with `'error'` event. + */ + destroy(error?: Error): this; + /** + * Event emitter + * The defined events on documents including: + * 1. close + * 2. drain + * 3. error + * 4. finish + * 5. pipe + * 6. unpipe + */ + addListener(event: "close", listener: () => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "pipe", listener: (src: Readable) => void): this; + addListener(event: "unpipe", listener: (src: Readable) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "close"): boolean; + emit(event: "drain"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "finish"): boolean; + emit(event: "pipe", src: Readable): boolean; + emit(event: "unpipe", src: Readable): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "close", listener: () => void): this; + on(event: "drain", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "pipe", listener: (src: Readable) => void): this; + on(event: "unpipe", listener: (src: Readable) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "drain", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "pipe", listener: (src: Readable) => void): this; + once(event: "unpipe", listener: (src: Readable) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "pipe", listener: (src: Readable) => void): this; + prependListener(event: "unpipe", listener: (src: Readable) => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; + prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + removeListener(event: "close", listener: () => void): this; + removeListener(event: "drain", listener: () => void): this; + removeListener(event: "error", listener: (err: Error) => void): this; + removeListener(event: "finish", listener: () => void): this; + removeListener(event: "pipe", listener: (src: Readable) => void): this; + removeListener(event: "unpipe", listener: (src: Readable) => void): this; + removeListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + namespace internal { + class Stream extends internal { + constructor(opts?: ReadableOptions); + } + interface StreamOptions extends Abortable { + emitClose?: boolean | undefined; + highWaterMark?: number | undefined; + objectMode?: boolean | undefined; + construct?(this: T, callback: (error?: Error | null) => void): void; + destroy?(this: T, error: Error | null, callback: (error: Error | null) => void): void; + autoDestroy?: boolean | undefined; + } + interface ReadableOptions extends StreamOptions { + encoding?: BufferEncoding | undefined; + read?(this: Readable, size: number): void; + } + /** + * @since v0.9.4 + */ + class Readable extends ReadableBase { + /** + * A utility method for creating a `Readable` from a web `ReadableStream`. + * @since v17.0.0 + * @experimental + */ + static fromWeb( + readableStream: streamWeb.ReadableStream, + options?: Pick, + ): Readable; + /** + * A utility method for creating a web `ReadableStream` from a `Readable`. + * @since v17.0.0 + * @experimental + */ + static toWeb(streamReadable: Readable): streamWeb.ReadableStream; + } + interface WritableOptions extends StreamOptions { + decodeStrings?: boolean | undefined; + defaultEncoding?: BufferEncoding | undefined; + write?( + this: Writable, + chunk: any, + encoding: BufferEncoding, + callback: (error?: Error | null) => void, + ): void; + writev?( + this: Writable, + chunks: Array<{ + chunk: any; + encoding: BufferEncoding; + }>, + callback: (error?: Error | null) => void, + ): void; + final?(this: Writable, callback: (error?: Error | null) => void): void; + } + /** + * @since v0.9.4 + */ + class Writable extends WritableBase { + /** + * A utility method for creating a `Writable` from a web `WritableStream`. + * @since v17.0.0 + * @experimental + */ + static fromWeb( + writableStream: streamWeb.WritableStream, + options?: Pick, + ): Writable; + /** + * A utility method for creating a web `WritableStream` from a `Writable`. + * @since v17.0.0 + * @experimental + */ + static toWeb(streamWritable: Writable): streamWeb.WritableStream; + } + interface DuplexOptions extends ReadableOptions, WritableOptions { + allowHalfOpen?: boolean | undefined; + readableObjectMode?: boolean | undefined; + writableObjectMode?: boolean | undefined; + readableHighWaterMark?: number | undefined; + writableHighWaterMark?: number | undefined; + writableCorked?: number | undefined; + construct?(this: Duplex, callback: (error?: Error | null) => void): void; + read?(this: Duplex, size: number): void; + write?(this: Duplex, chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; + writev?( + this: Duplex, + chunks: Array<{ + chunk: any; + encoding: BufferEncoding; + }>, + callback: (error?: Error | null) => void, + ): void; + final?(this: Duplex, callback: (error?: Error | null) => void): void; + destroy?(this: Duplex, error: Error | null, callback: (error: Error | null) => void): void; + } + /** + * Duplex streams are streams that implement both the `Readable` and `Writable` interfaces. + * + * Examples of `Duplex` streams include: + * + * * `TCP sockets` + * * `zlib streams` + * * `crypto streams` + * @since v0.9.4 + */ + class Duplex extends ReadableBase implements WritableBase { + readonly writable: boolean; + readonly writableEnded: boolean; + readonly writableFinished: boolean; + readonly writableHighWaterMark: number; + readonly writableLength: number; + readonly writableObjectMode: boolean; + readonly writableCorked: number; + readonly writableNeedDrain: boolean; + readonly closed: boolean; + readonly errored: Error | null; + /** + * If `false` then the stream will automatically end the writable side when the + * readable side ends. Set initially by the `allowHalfOpen` constructor option, + * which defaults to `true`. + * + * This can be changed manually to change the half-open behavior of an existing`Duplex` stream instance, but must be changed before the `'end'` event is + * emitted. + * @since v0.9.4 + */ + allowHalfOpen: boolean; + constructor(opts?: DuplexOptions); + /** + * A utility method for creating duplex streams. + * + * - `Stream` converts writable stream into writable `Duplex` and readable stream + * to `Duplex`. + * - `Blob` converts into readable `Duplex`. + * - `string` converts into readable `Duplex`. + * - `ArrayBuffer` converts into readable `Duplex`. + * - `AsyncIterable` converts into a readable `Duplex`. Cannot yield `null`. + * - `AsyncGeneratorFunction` converts into a readable/writable transform + * `Duplex`. Must take a source `AsyncIterable` as first parameter. Cannot yield + * `null`. + * - `AsyncFunction` converts into a writable `Duplex`. Must return + * either `null` or `undefined` + * - `Object ({ writable, readable })` converts `readable` and + * `writable` into `Stream` and then combines them into `Duplex` where the + * `Duplex` will write to the `writable` and read from the `readable`. + * - `Promise` converts into readable `Duplex`. Value `null` is ignored. + * + * @since v16.8.0 + */ + static from( + src: + | Stream + | NodeBlob + | ArrayBuffer + | string + | Iterable + | AsyncIterable + | AsyncGeneratorFunction + | Promise + | Object, + ): Duplex; + _write(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; + _writev?( + chunks: Array<{ + chunk: any; + encoding: BufferEncoding; + }>, + callback: (error?: Error | null) => void, + ): void; + _destroy(error: Error | null, callback: (error: Error | null) => void): void; + _final(callback: (error?: Error | null) => void): void; + write(chunk: any, encoding?: BufferEncoding, cb?: (error: Error | null | undefined) => void): boolean; + write(chunk: any, cb?: (error: Error | null | undefined) => void): boolean; + setDefaultEncoding(encoding: BufferEncoding): this; + end(cb?: () => void): this; + end(chunk: any, cb?: () => void): this; + end(chunk: any, encoding?: BufferEncoding, cb?: () => void): this; + cork(): void; + uncork(): void; + /** + * A utility method for creating a web `ReadableStream` and `WritableStream` from a `Duplex`. + * @since v17.0.0 + * @experimental + */ + static toWeb(streamDuplex: Duplex): { + readable: streamWeb.ReadableStream; + writable: streamWeb.WritableStream; + }; + /** + * A utility method for creating a `Duplex` from a web `ReadableStream` and `WritableStream`. + * @since v17.0.0 + * @experimental + */ + static fromWeb( + duplexStream: { + readable: streamWeb.ReadableStream; + writable: streamWeb.WritableStream; + }, + options?: Pick< + DuplexOptions, + "allowHalfOpen" | "decodeStrings" | "encoding" | "highWaterMark" | "objectMode" | "signal" + >, + ): Duplex; + /** + * Event emitter + * The defined events on documents including: + * 1. close + * 2. data + * 3. drain + * 4. end + * 5. error + * 6. finish + * 7. pause + * 8. pipe + * 9. readable + * 10. resume + * 11. unpipe + */ + addListener(event: "close", listener: () => void): this; + addListener(event: "data", listener: (chunk: any) => void): this; + addListener(event: "drain", listener: () => void): this; + addListener(event: "end", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: "finish", listener: () => void): this; + addListener(event: "pause", listener: () => void): this; + addListener(event: "pipe", listener: (src: Readable) => void): this; + addListener(event: "readable", listener: () => void): this; + addListener(event: "resume", listener: () => void): this; + addListener(event: "unpipe", listener: (src: Readable) => void): this; + addListener(event: string | symbol, listener: (...args: any[]) => void): this; + emit(event: "close"): boolean; + emit(event: "data", chunk: any): boolean; + emit(event: "drain"): boolean; + emit(event: "end"): boolean; + emit(event: "error", err: Error): boolean; + emit(event: "finish"): boolean; + emit(event: "pause"): boolean; + emit(event: "pipe", src: Readable): boolean; + emit(event: "readable"): boolean; + emit(event: "resume"): boolean; + emit(event: "unpipe", src: Readable): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "close", listener: () => void): this; + on(event: "data", listener: (chunk: any) => void): this; + on(event: "drain", listener: () => void): this; + on(event: "end", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "finish", listener: () => void): this; + on(event: "pause", listener: () => void): this; + on(event: "pipe", listener: (src: Readable) => void): this; + on(event: "readable", listener: () => void): this; + on(event: "resume", listener: () => void): this; + on(event: "unpipe", listener: (src: Readable) => void): this; + on(event: string | symbol, listener: (...args: any[]) => void): this; + once(event: "close", listener: () => void): this; + once(event: "data", listener: (chunk: any) => void): this; + once(event: "drain", listener: () => void): this; + once(event: "end", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: "finish", listener: () => void): this; + once(event: "pause", listener: () => void): this; + once(event: "pipe", listener: (src: Readable) => void): this; + once(event: "readable", listener: () => void): this; + once(event: "resume", listener: () => void): this; + once(event: "unpipe", listener: (src: Readable) => void): this; + once(event: string | symbol, listener: (...args: any[]) => void): this; + prependListener(event: "close", listener: () => void): this; + prependListener(event: "data", listener: (chunk: any) => void): this; + prependListener(event: "drain", listener: () => void): this; + prependListener(event: "end", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: "finish", listener: () => void): this; + prependListener(event: "pause", listener: () => void): this; + prependListener(event: "pipe", listener: (src: Readable) => void): this; + prependListener(event: "readable", listener: () => void): this; + prependListener(event: "resume", listener: () => void): this; + prependListener(event: "unpipe", listener: (src: Readable) => void): this; + prependListener(event: string | symbol, listener: (...args: any[]) => void): this; + prependOnceListener(event: "close", listener: () => void): this; + prependOnceListener(event: "data", listener: (chunk: any) => void): this; + prependOnceListener(event: "drain", listener: () => void): this; + prependOnceListener(event: "end", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: "finish", listener: () => void): this; + prependOnceListener(event: "pause", listener: () => void): this; + prependOnceListener(event: "pipe", listener: (src: Readable) => void): this; + prependOnceListener(event: "readable", listener: () => void): this; + prependOnceListener(event: "resume", listener: () => void): this; + prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this; + prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; + removeListener(event: "close", listener: () => void): this; + removeListener(event: "data", listener: (chunk: any) => void): this; + removeListener(event: "drain", listener: () => void): this; + removeListener(event: "end", listener: () => void): this; + removeListener(event: "error", listener: (err: Error) => void): this; + removeListener(event: "finish", listener: () => void): this; + removeListener(event: "pause", listener: () => void): this; + removeListener(event: "pipe", listener: (src: Readable) => void): this; + removeListener(event: "readable", listener: () => void): this; + removeListener(event: "resume", listener: () => void): this; + removeListener(event: "unpipe", listener: (src: Readable) => void): this; + removeListener(event: string | symbol, listener: (...args: any[]) => void): this; + } + type TransformCallback = (error?: Error | null, data?: any) => void; + interface TransformOptions extends DuplexOptions { + construct?(this: Transform, callback: (error?: Error | null) => void): void; + read?(this: Transform, size: number): void; + write?( + this: Transform, + chunk: any, + encoding: BufferEncoding, + callback: (error?: Error | null) => void, + ): void; + writev?( + this: Transform, + chunks: Array<{ + chunk: any; + encoding: BufferEncoding; + }>, + callback: (error?: Error | null) => void, + ): void; + final?(this: Transform, callback: (error?: Error | null) => void): void; + destroy?(this: Transform, error: Error | null, callback: (error: Error | null) => void): void; + transform?(this: Transform, chunk: any, encoding: BufferEncoding, callback: TransformCallback): void; + flush?(this: Transform, callback: TransformCallback): void; + } + /** + * Transform streams are `Duplex` streams where the output is in some way + * related to the input. Like all `Duplex` streams, `Transform` streams + * implement both the `Readable` and `Writable` interfaces. + * + * Examples of `Transform` streams include: + * + * * `zlib streams` + * * `crypto streams` + * @since v0.9.4 + */ + class Transform extends Duplex { + constructor(opts?: TransformOptions); + _transform(chunk: any, encoding: BufferEncoding, callback: TransformCallback): void; + _flush(callback: TransformCallback): void; + } + /** + * The `stream.PassThrough` class is a trivial implementation of a `Transform` stream that simply passes the input bytes across to the output. Its purpose is + * primarily for examples and testing, but there are some use cases where`stream.PassThrough` is useful as a building block for novel sorts of streams. + */ + class PassThrough extends Transform {} + /** + * A stream to attach a signal to. + * + * Attaches an AbortSignal to a readable or writeable stream. This lets code + * control stream destruction using an `AbortController`. + * + * Calling `abort` on the `AbortController` corresponding to the passed`AbortSignal` will behave the same way as calling `.destroy(new AbortError())`on the stream, and `controller.error(new + * AbortError())` for webstreams. + * + * ```js + * const fs = require('node:fs'); + * + * const controller = new AbortController(); + * const read = addAbortSignal( + * controller.signal, + * fs.createReadStream(('object.json')), + * ); + * // Later, abort the operation closing the stream + * controller.abort(); + * ``` + * + * Or using an `AbortSignal` with a readable stream as an async iterable: + * + * ```js + * const controller = new AbortController(); + * setTimeout(() => controller.abort(), 10_000); // set a timeout + * const stream = addAbortSignal( + * controller.signal, + * fs.createReadStream(('object.json')), + * ); + * (async () => { + * try { + * for await (const chunk of stream) { + * await process(chunk); + * } + * } catch (e) { + * if (e.name === 'AbortError') { + * // The operation was cancelled + * } else { + * throw e; + * } + * } + * })(); + * ``` + * + * Or using an `AbortSignal` with a ReadableStream: + * + * ```js + * const controller = new AbortController(); + * const rs = new ReadableStream({ + * start(controller) { + * controller.enqueue('hello'); + * controller.enqueue('world'); + * controller.close(); + * }, + * }); + * + * addAbortSignal(controller.signal, rs); + * + * finished(rs, (err) => { + * if (err) { + * if (err.name === 'AbortError') { + * // The operation was cancelled + * } + * } + * }); + * + * const reader = rs.getReader(); + * + * reader.read().then(({ value, done }) => { + * console.log(value); // hello + * console.log(done); // false + * controller.abort(); + * }); + * ``` + * @since v15.4.0 + * @param signal A signal representing possible cancellation + * @param stream a stream to attach a signal to + */ + function addAbortSignal(signal: AbortSignal, stream: T): T; + /** + * Returns the default highWaterMark used by streams. + * Defaults to `16384` (16 KiB), or `16` for `objectMode`. + * @since v19.9.0 + * @param objectMode + */ + function getDefaultHighWaterMark(objectMode: boolean): number; + /** + * Sets the default highWaterMark used by streams. + * @since v19.9.0 + * @param objectMode + * @param value highWaterMark value + */ + function setDefaultHighWaterMark(objectMode: boolean, value: number): void; + interface FinishedOptions extends Abortable { + error?: boolean | undefined; + readable?: boolean | undefined; + writable?: boolean | undefined; + } + /** + * A readable and/or writable stream/webstream. + * + * A function to get notified when a stream is no longer readable, writable + * or has experienced an error or a premature close event. + * + * ```js + * const { finished } = require('node:stream'); + * const fs = require('node:fs'); + * + * const rs = fs.createReadStream('archive.tar'); + * + * finished(rs, (err) => { + * if (err) { + * console.error('Stream failed.', err); + * } else { + * console.log('Stream is done reading.'); + * } + * }); + * + * rs.resume(); // Drain the stream. + * ``` + * + * Especially useful in error handling scenarios where a stream is destroyed + * prematurely (like an aborted HTTP request), and will not emit `'end'`or `'finish'`. + * + * The `finished` API provides `promise version`. + * + * `stream.finished()` leaves dangling event listeners (in particular`'error'`, `'end'`, `'finish'` and `'close'`) after `callback` has been + * invoked. The reason for this is so that unexpected `'error'` events (due to + * incorrect stream implementations) do not cause unexpected crashes. + * If this is unwanted behavior then the returned cleanup function needs to be + * invoked in the callback: + * + * ```js + * const cleanup = finished(rs, (err) => { + * cleanup(); + * // ... + * }); + * ``` + * @since v10.0.0 + * @param stream A readable and/or writable stream. + * @param callback A callback function that takes an optional error argument. + * @return A cleanup function which removes all registered listeners. + */ + function finished( + stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, + options: FinishedOptions, + callback: (err?: NodeJS.ErrnoException | null) => void, + ): () => void; + function finished( + stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, + callback: (err?: NodeJS.ErrnoException | null) => void, + ): () => void; + namespace finished { + function __promisify__( + stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, + options?: FinishedOptions, + ): Promise; + } + type PipelineSourceFunction = () => Iterable | AsyncIterable; + type PipelineSource = Iterable | AsyncIterable | NodeJS.ReadableStream | PipelineSourceFunction; + type PipelineTransform, U> = + | NodeJS.ReadWriteStream + | (( + source: S extends (...args: any[]) => Iterable | AsyncIterable ? AsyncIterable + : S, + ) => AsyncIterable); + type PipelineTransformSource = PipelineSource | PipelineTransform; + type PipelineDestinationIterableFunction = (source: AsyncIterable) => AsyncIterable; + type PipelineDestinationPromiseFunction = (source: AsyncIterable) => Promise

; + type PipelineDestination, P> = S extends + PipelineTransformSource ? + | NodeJS.WritableStream + | PipelineDestinationIterableFunction + | PipelineDestinationPromiseFunction + : never; + type PipelineCallback> = S extends + PipelineDestinationPromiseFunction ? (err: NodeJS.ErrnoException | null, value: P) => void + : (err: NodeJS.ErrnoException | null) => void; + type PipelinePromise> = S extends + PipelineDestinationPromiseFunction ? Promise

: Promise; + interface PipelineOptions { + signal?: AbortSignal | undefined; + end?: boolean | undefined; + } + /** + * A module method to pipe between streams and generators forwarding errors and + * properly cleaning up and provide a callback when the pipeline is complete. + * + * ```js + * const { pipeline } = require('node:stream'); + * const fs = require('node:fs'); + * const zlib = require('node:zlib'); + * + * // Use the pipeline API to easily pipe a series of streams + * // together and get notified when the pipeline is fully done. + * + * // A pipeline to gzip a potentially huge tar file efficiently: + * + * pipeline( + * fs.createReadStream('archive.tar'), + * zlib.createGzip(), + * fs.createWriteStream('archive.tar.gz'), + * (err) => { + * if (err) { + * console.error('Pipeline failed.', err); + * } else { + * console.log('Pipeline succeeded.'); + * } + * }, + * ); + * ``` + * + * The `pipeline` API provides a `promise version`. + * + * `stream.pipeline()` will call `stream.destroy(err)` on all streams except: + * + * * `Readable` streams which have emitted `'end'` or `'close'`. + * * `Writable` streams which have emitted `'finish'` or `'close'`. + * + * `stream.pipeline()` leaves dangling event listeners on the streams + * after the `callback` has been invoked. In the case of reuse of streams after + * failure, this can cause event listener leaks and swallowed errors. If the last + * stream is readable, dangling event listeners will be removed so that the last + * stream can be consumed later. + * + * `stream.pipeline()` closes all the streams when an error is raised. + * The `IncomingRequest` usage with `pipeline` could lead to an unexpected behavior + * once it would destroy the socket without sending the expected response. + * See the example below: + * + * ```js + * const fs = require('node:fs'); + * const http = require('node:http'); + * const { pipeline } = require('node:stream'); + * + * const server = http.createServer((req, res) => { + * const fileStream = fs.createReadStream('./fileNotExist.txt'); + * pipeline(fileStream, res, (err) => { + * if (err) { + * console.log(err); // No such file + * // this message can't be sent once `pipeline` already destroyed the socket + * return res.end('error!!!'); + * } + * }); + * }); + * ``` + * @since v10.0.0 + * @param callback Called when the pipeline is fully done. + */ + function pipeline, B extends PipelineDestination>( + source: A, + destination: B, + callback?: PipelineCallback, + ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + destination: B, + callback?: PipelineCallback, + ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + destination: B, + callback?: PipelineCallback, + ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + T3 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + transform3: T3, + destination: B, + callback?: PipelineCallback, + ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + T3 extends PipelineTransform, + T4 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + transform3: T3, + transform4: T4, + destination: B, + callback?: PipelineCallback, + ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream; + function pipeline( + streams: ReadonlyArray, + callback?: (err: NodeJS.ErrnoException | null) => void, + ): NodeJS.WritableStream; + function pipeline( + stream1: NodeJS.ReadableStream, + stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream, + ...streams: Array< + NodeJS.ReadWriteStream | NodeJS.WritableStream | ((err: NodeJS.ErrnoException | null) => void) + > + ): NodeJS.WritableStream; + namespace pipeline { + function __promisify__, B extends PipelineDestination>( + source: A, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function __promisify__< + A extends PipelineSource, + T1 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function __promisify__< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function __promisify__< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + T3 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + transform3: T3, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function __promisify__< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + T3 extends PipelineTransform, + T4 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + transform3: T3, + transform4: T4, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function __promisify__( + streams: ReadonlyArray, + options?: PipelineOptions, + ): Promise; + function __promisify__( + stream1: NodeJS.ReadableStream, + stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream, + ...streams: Array + ): Promise; + } + interface Pipe { + close(): void; + hasRef(): boolean; + ref(): void; + unref(): void; + } + /** + * Returns whether the stream has encountered an error. + * @since v17.3.0, v16.14.0 + * @experimental + */ + function isErrored(stream: Readable | Writable | NodeJS.ReadableStream | NodeJS.WritableStream): boolean; + /** + * Returns whether the stream is readable. + * @since v17.4.0, v16.14.0 + * @experimental + */ + function isReadable(stream: Readable | NodeJS.ReadableStream): boolean; + const promises: typeof streamPromises; + const consumers: typeof streamConsumers; + } + export = internal; +} +declare module "node:stream" { + import stream = require("stream"); + export = stream; +} diff --git a/node_modules/@types/node/ts4.8/stream/consumers.d.ts b/node_modules/@types/node/ts4.8/stream/consumers.d.ts new file mode 100644 index 00000000..5ad9cbab --- /dev/null +++ b/node_modules/@types/node/ts4.8/stream/consumers.d.ts @@ -0,0 +1,12 @@ +declare module "stream/consumers" { + import { Blob as NodeBlob } from "node:buffer"; + import { Readable } from "node:stream"; + function buffer(stream: NodeJS.ReadableStream | Readable | AsyncIterable): Promise; + function text(stream: NodeJS.ReadableStream | Readable | AsyncIterable): Promise; + function arrayBuffer(stream: NodeJS.ReadableStream | Readable | AsyncIterable): Promise; + function blob(stream: NodeJS.ReadableStream | Readable | AsyncIterable): Promise; + function json(stream: NodeJS.ReadableStream | Readable | AsyncIterable): Promise; +} +declare module "node:stream/consumers" { + export * from "stream/consumers"; +} diff --git a/node_modules/@types/node/ts4.8/stream/promises.d.ts b/node_modules/@types/node/ts4.8/stream/promises.d.ts new file mode 100644 index 00000000..6eac5b71 --- /dev/null +++ b/node_modules/@types/node/ts4.8/stream/promises.d.ts @@ -0,0 +1,83 @@ +declare module "stream/promises" { + import { + FinishedOptions, + PipelineDestination, + PipelineOptions, + PipelinePromise, + PipelineSource, + PipelineTransform, + } from "node:stream"; + function finished( + stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, + options?: FinishedOptions, + ): Promise; + function pipeline, B extends PipelineDestination>( + source: A, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + T3 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + transform3: T3, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function pipeline< + A extends PipelineSource, + T1 extends PipelineTransform, + T2 extends PipelineTransform, + T3 extends PipelineTransform, + T4 extends PipelineTransform, + B extends PipelineDestination, + >( + source: A, + transform1: T1, + transform2: T2, + transform3: T3, + transform4: T4, + destination: B, + options?: PipelineOptions, + ): PipelinePromise; + function pipeline( + streams: ReadonlyArray, + options?: PipelineOptions, + ): Promise; + function pipeline( + stream1: NodeJS.ReadableStream, + stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream, + ...streams: Array + ): Promise; +} +declare module "node:stream/promises" { + export * from "stream/promises"; +} diff --git a/node_modules/@types/node/ts4.8/stream/web.d.ts b/node_modules/@types/node/ts4.8/stream/web.d.ts new file mode 100644 index 00000000..0d916137 --- /dev/null +++ b/node_modules/@types/node/ts4.8/stream/web.d.ts @@ -0,0 +1,350 @@ +declare module "stream/web" { + // stub module, pending copy&paste from .d.ts or manual impl + // copy from lib.dom.d.ts + interface ReadableWritablePair { + readable: ReadableStream; + /** + * Provides a convenient, chainable way of piping this readable stream + * through a transform stream (or any other { writable, readable } + * pair). It simply pipes the stream into the writable side of the + * supplied pair, and returns the readable side for further use. + * + * Piping a stream will lock it for the duration of the pipe, preventing + * any other consumer from acquiring a reader. + */ + writable: WritableStream; + } + interface StreamPipeOptions { + preventAbort?: boolean; + preventCancel?: boolean; + /** + * Pipes this readable stream to a given writable stream destination. + * The way in which the piping process behaves under various error + * conditions can be customized with a number of passed options. It + * returns a promise that fulfills when the piping process completes + * successfully, or rejects if any errors were encountered. + * + * Piping a stream will lock it for the duration of the pipe, preventing + * any other consumer from acquiring a reader. + * + * Errors and closures of the source and destination streams propagate + * as follows: + * + * An error in this source readable stream will abort destination, + * unless preventAbort is truthy. The returned promise will be rejected + * with the source's error, or with any error that occurs during + * aborting the destination. + * + * An error in destination will cancel this source readable stream, + * unless preventCancel is truthy. The returned promise will be rejected + * with the destination's error, or with any error that occurs during + * canceling the source. + * + * When this source readable stream closes, destination will be closed, + * unless preventClose is truthy. The returned promise will be fulfilled + * once this process completes, unless an error is encountered while + * closing the destination, in which case it will be rejected with that + * error. + * + * If destination starts out closed or closing, this source readable + * stream will be canceled, unless preventCancel is true. The returned + * promise will be rejected with an error indicating piping to a closed + * stream failed, or with any error that occurs during canceling the + * source. + * + * The signal option can be set to an AbortSignal to allow aborting an + * ongoing pipe operation via the corresponding AbortController. In this + * case, this source readable stream will be canceled, and destination + * aborted, unless the respective options preventCancel or preventAbort + * are set. + */ + preventClose?: boolean; + signal?: AbortSignal; + } + interface ReadableStreamGenericReader { + readonly closed: Promise; + cancel(reason?: any): Promise; + } + interface ReadableStreamDefaultReadValueResult { + done: false; + value: T; + } + interface ReadableStreamDefaultReadDoneResult { + done: true; + value?: undefined; + } + type ReadableStreamController = ReadableStreamDefaultController; + type ReadableStreamDefaultReadResult = + | ReadableStreamDefaultReadValueResult + | ReadableStreamDefaultReadDoneResult; + interface ReadableStreamReadValueResult { + done: false; + value: T; + } + interface ReadableStreamReadDoneResult { + done: true; + value?: T; + } + type ReadableStreamReadResult = ReadableStreamReadValueResult | ReadableStreamReadDoneResult; + interface ReadableByteStreamControllerCallback { + (controller: ReadableByteStreamController): void | PromiseLike; + } + interface UnderlyingSinkAbortCallback { + (reason?: any): void | PromiseLike; + } + interface UnderlyingSinkCloseCallback { + (): void | PromiseLike; + } + interface UnderlyingSinkStartCallback { + (controller: WritableStreamDefaultController): any; + } + interface UnderlyingSinkWriteCallback { + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + } + interface UnderlyingSourceCancelCallback { + (reason?: any): void | PromiseLike; + } + interface UnderlyingSourcePullCallback { + (controller: ReadableStreamController): void | PromiseLike; + } + interface UnderlyingSourceStartCallback { + (controller: ReadableStreamController): any; + } + interface TransformerFlushCallback { + (controller: TransformStreamDefaultController): void | PromiseLike; + } + interface TransformerStartCallback { + (controller: TransformStreamDefaultController): any; + } + interface TransformerTransformCallback { + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + } + interface UnderlyingByteSource { + autoAllocateChunkSize?: number; + cancel?: ReadableStreamErrorCallback; + pull?: ReadableByteStreamControllerCallback; + start?: ReadableByteStreamControllerCallback; + type: "bytes"; + } + interface UnderlyingSource { + cancel?: UnderlyingSourceCancelCallback; + pull?: UnderlyingSourcePullCallback; + start?: UnderlyingSourceStartCallback; + type?: undefined; + } + interface UnderlyingSink { + abort?: UnderlyingSinkAbortCallback; + close?: UnderlyingSinkCloseCallback; + start?: UnderlyingSinkStartCallback; + type?: undefined; + write?: UnderlyingSinkWriteCallback; + } + interface ReadableStreamErrorCallback { + (reason: any): void | PromiseLike; + } + /** This Streams API interface represents a readable stream of byte data. */ + interface ReadableStream { + readonly locked: boolean; + cancel(reason?: any): Promise; + getReader(): ReadableStreamDefaultReader; + getReader(options: { mode: "byob" }): ReadableStreamBYOBReader; + pipeThrough(transform: ReadableWritablePair, options?: StreamPipeOptions): ReadableStream; + pipeTo(destination: WritableStream, options?: StreamPipeOptions): Promise; + tee(): [ReadableStream, ReadableStream]; + values(options?: { preventCancel?: boolean }): AsyncIterableIterator; + [Symbol.asyncIterator](): AsyncIterableIterator; + } + const ReadableStream: { + prototype: ReadableStream; + new(underlyingSource: UnderlyingByteSource, strategy?: QueuingStrategy): ReadableStream; + new(underlyingSource?: UnderlyingSource, strategy?: QueuingStrategy): ReadableStream; + }; + interface ReadableStreamDefaultReader extends ReadableStreamGenericReader { + read(): Promise>; + releaseLock(): void; + } + interface ReadableStreamBYOBReader extends ReadableStreamGenericReader { + read(view: T): Promise>; + releaseLock(): void; + } + const ReadableStreamDefaultReader: { + prototype: ReadableStreamDefaultReader; + new(stream: ReadableStream): ReadableStreamDefaultReader; + }; + const ReadableStreamBYOBReader: any; + const ReadableStreamBYOBRequest: any; + interface ReadableByteStreamController { + readonly byobRequest: undefined; + readonly desiredSize: number | null; + close(): void; + enqueue(chunk: ArrayBufferView): void; + error(error?: any): void; + } + const ReadableByteStreamController: { + prototype: ReadableByteStreamController; + new(): ReadableByteStreamController; + }; + interface ReadableStreamDefaultController { + readonly desiredSize: number | null; + close(): void; + enqueue(chunk?: R): void; + error(e?: any): void; + } + const ReadableStreamDefaultController: { + prototype: ReadableStreamDefaultController; + new(): ReadableStreamDefaultController; + }; + interface Transformer { + flush?: TransformerFlushCallback; + readableType?: undefined; + start?: TransformerStartCallback; + transform?: TransformerTransformCallback; + writableType?: undefined; + } + interface TransformStream { + readonly readable: ReadableStream; + readonly writable: WritableStream; + } + const TransformStream: { + prototype: TransformStream; + new( + transformer?: Transformer, + writableStrategy?: QueuingStrategy, + readableStrategy?: QueuingStrategy, + ): TransformStream; + }; + interface TransformStreamDefaultController { + readonly desiredSize: number | null; + enqueue(chunk?: O): void; + error(reason?: any): void; + terminate(): void; + } + const TransformStreamDefaultController: { + prototype: TransformStreamDefaultController; + new(): TransformStreamDefaultController; + }; + /** + * This Streams API interface provides a standard abstraction for writing + * streaming data to a destination, known as a sink. This object comes with + * built-in back pressure and queuing. + */ + interface WritableStream { + readonly locked: boolean; + abort(reason?: any): Promise; + close(): Promise; + getWriter(): WritableStreamDefaultWriter; + } + const WritableStream: { + prototype: WritableStream; + new(underlyingSink?: UnderlyingSink, strategy?: QueuingStrategy): WritableStream; + }; + /** + * This Streams API interface is the object returned by + * WritableStream.getWriter() and once created locks the < writer to the + * WritableStream ensuring that no other streams can write to the underlying + * sink. + */ + interface WritableStreamDefaultWriter { + readonly closed: Promise; + readonly desiredSize: number | null; + readonly ready: Promise; + abort(reason?: any): Promise; + close(): Promise; + releaseLock(): void; + write(chunk?: W): Promise; + } + const WritableStreamDefaultWriter: { + prototype: WritableStreamDefaultWriter; + new(stream: WritableStream): WritableStreamDefaultWriter; + }; + /** + * This Streams API interface represents a controller allowing control of a + * WritableStream's state. When constructing a WritableStream, the + * underlying sink is given a corresponding WritableStreamDefaultController + * instance to manipulate. + */ + interface WritableStreamDefaultController { + error(e?: any): void; + } + const WritableStreamDefaultController: { + prototype: WritableStreamDefaultController; + new(): WritableStreamDefaultController; + }; + interface QueuingStrategy { + highWaterMark?: number; + size?: QueuingStrategySize; + } + interface QueuingStrategySize { + (chunk?: T): number; + } + interface QueuingStrategyInit { + /** + * Creates a new ByteLengthQueuingStrategy with the provided high water + * mark. + * + * Note that the provided high water mark will not be validated ahead of + * time. Instead, if it is negative, NaN, or not a number, the resulting + * ByteLengthQueuingStrategy will cause the corresponding stream + * constructor to throw. + */ + highWaterMark: number; + } + /** + * This Streams API interface provides a built-in byte length queuing + * strategy that can be used when constructing streams. + */ + interface ByteLengthQueuingStrategy extends QueuingStrategy { + readonly highWaterMark: number; + readonly size: QueuingStrategySize; + } + const ByteLengthQueuingStrategy: { + prototype: ByteLengthQueuingStrategy; + new(init: QueuingStrategyInit): ByteLengthQueuingStrategy; + }; + /** + * This Streams API interface provides a built-in byte length queuing + * strategy that can be used when constructing streams. + */ + interface CountQueuingStrategy extends QueuingStrategy { + readonly highWaterMark: number; + readonly size: QueuingStrategySize; + } + const CountQueuingStrategy: { + prototype: CountQueuingStrategy; + new(init: QueuingStrategyInit): CountQueuingStrategy; + }; + interface TextEncoderStream { + /** Returns "utf-8". */ + readonly encoding: "utf-8"; + readonly readable: ReadableStream; + readonly writable: WritableStream; + readonly [Symbol.toStringTag]: string; + } + const TextEncoderStream: { + prototype: TextEncoderStream; + new(): TextEncoderStream; + }; + interface TextDecoderOptions { + fatal?: boolean; + ignoreBOM?: boolean; + } + type BufferSource = ArrayBufferView | ArrayBuffer; + interface TextDecoderStream { + /** Returns encoding's name, lower cased. */ + readonly encoding: string; + /** Returns `true` if error mode is "fatal", and `false` otherwise. */ + readonly fatal: boolean; + /** Returns `true` if ignore BOM flag is set, and `false` otherwise. */ + readonly ignoreBOM: boolean; + readonly readable: ReadableStream; + readonly writable: WritableStream; + readonly [Symbol.toStringTag]: string; + } + const TextDecoderStream: { + prototype: TextDecoderStream; + new(label?: string, options?: TextDecoderOptions): TextDecoderStream; + }; +} +declare module "node:stream/web" { + export * from "stream/web"; +} diff --git a/node_modules/@types/node/ts4.8/string_decoder.d.ts b/node_modules/@types/node/ts4.8/string_decoder.d.ts new file mode 100644 index 00000000..b8691e1f --- /dev/null +++ b/node_modules/@types/node/ts4.8/string_decoder.d.ts @@ -0,0 +1,67 @@ +/** + * The `node:string_decoder` module provides an API for decoding `Buffer` objects + * into strings in a manner that preserves encoded multi-byte UTF-8 and UTF-16 + * characters. It can be accessed using: + * + * ```js + * const { StringDecoder } = require('node:string_decoder'); + * ``` + * + * The following example shows the basic use of the `StringDecoder` class. + * + * ```js + * const { StringDecoder } = require('node:string_decoder'); + * const decoder = new StringDecoder('utf8'); + * + * const cent = Buffer.from([0xC2, 0xA2]); + * console.log(decoder.write(cent)); // Prints: ¢ + * + * const euro = Buffer.from([0xE2, 0x82, 0xAC]); + * console.log(decoder.write(euro)); // Prints: € + * ``` + * + * When a `Buffer` instance is written to the `StringDecoder` instance, an + * internal buffer is used to ensure that the decoded string does not contain + * any incomplete multibyte characters. These are held in the buffer until the + * next call to `stringDecoder.write()` or until `stringDecoder.end()` is called. + * + * In the following example, the three UTF-8 encoded bytes of the European Euro + * symbol (`€`) are written over three separate operations: + * + * ```js + * const { StringDecoder } = require('node:string_decoder'); + * const decoder = new StringDecoder('utf8'); + * + * decoder.write(Buffer.from([0xE2])); + * decoder.write(Buffer.from([0x82])); + * console.log(decoder.end(Buffer.from([0xAC]))); // Prints: € + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/string_decoder.js) + */ +declare module "string_decoder" { + class StringDecoder { + constructor(encoding?: BufferEncoding); + /** + * Returns a decoded string, ensuring that any incomplete multibyte characters at + * the end of the `Buffer`, or `TypedArray`, or `DataView` are omitted from the + * returned string and stored in an internal buffer for the next call to`stringDecoder.write()` or `stringDecoder.end()`. + * @since v0.1.99 + * @param buffer The bytes to decode. + */ + write(buffer: Buffer): string; + /** + * Returns any remaining input stored in the internal buffer as a string. Bytes + * representing incomplete UTF-8 and UTF-16 characters will be replaced with + * substitution characters appropriate for the character encoding. + * + * If the `buffer` argument is provided, one final call to `stringDecoder.write()`is performed before returning the remaining input. + * After `end()` is called, the `stringDecoder` object can be reused for new input. + * @since v0.9.3 + * @param buffer The bytes to decode. + */ + end(buffer?: Buffer): string; + } +} +declare module "node:string_decoder" { + export * from "string_decoder"; +} diff --git a/node_modules/@types/node/ts4.8/test.d.ts b/node_modules/@types/node/ts4.8/test.d.ts new file mode 100644 index 00000000..04504fdf --- /dev/null +++ b/node_modules/@types/node/ts4.8/test.d.ts @@ -0,0 +1,1382 @@ +/** + * The `node:test` module facilitates the creation of JavaScript tests. + * To access it: + * + * ```js + * import test from 'node:test'; + * ``` + * + * This module is only available under the `node:` scheme. The following will not + * work: + * + * ```js + * import test from 'test'; + * ``` + * + * Tests created via the `test` module consist of a single function that is + * processed in one of three ways: + * + * 1. A synchronous function that is considered failing if it throws an exception, + * and is considered passing otherwise. + * 2. A function that returns a `Promise` that is considered failing if the`Promise` rejects, and is considered passing if the `Promise` resolves. + * 3. A function that receives a callback function. If the callback receives any + * truthy value as its first argument, the test is considered failing. If a + * falsy value is passed as the first argument to the callback, the test is + * considered passing. If the test function receives a callback function and + * also returns a `Promise`, the test will fail. + * + * The following example illustrates how tests are written using the`test` module. + * + * ```js + * test('synchronous passing test', (t) => { + * // This test passes because it does not throw an exception. + * assert.strictEqual(1, 1); + * }); + * + * test('synchronous failing test', (t) => { + * // This test fails because it throws an exception. + * assert.strictEqual(1, 2); + * }); + * + * test('asynchronous passing test', async (t) => { + * // This test passes because the Promise returned by the async + * // function is not rejected. + * assert.strictEqual(1, 1); + * }); + * + * test('asynchronous failing test', async (t) => { + * // This test fails because the Promise returned by the async + * // function is rejected. + * assert.strictEqual(1, 2); + * }); + * + * test('failing test using Promises', (t) => { + * // Promises can be used directly as well. + * return new Promise((resolve, reject) => { + * setImmediate(() => { + * reject(new Error('this will cause the test to fail')); + * }); + * }); + * }); + * + * test('callback passing test', (t, done) => { + * // done() is the callback function. When the setImmediate() runs, it invokes + * // done() with no arguments. + * setImmediate(done); + * }); + * + * test('callback failing test', (t, done) => { + * // When the setImmediate() runs, done() is invoked with an Error object and + * // the test fails. + * setImmediate(() => { + * done(new Error('callback failure')); + * }); + * }); + * ``` + * + * If any tests fail, the process exit code is set to `1`. + * @since v18.0.0, v16.17.0 + * @see [source](https://github.com/nodejs/node/blob/v20.4.0/lib/test.js) + */ +declare module "node:test" { + import { Readable } from "node:stream"; + import { AsyncResource } from "node:async_hooks"; + /** + * ```js + * import { tap } from 'node:test/reporters'; + * import { run } from 'node:test'; + * import process from 'node:process'; + * import path from 'node:path'; + * + * run({ files: [path.resolve('./tests/test.js')] }) + * .compose(tap) + * .pipe(process.stdout); + * ``` + * @since v18.9.0, v16.19.0 + * @param options Configuration options for running tests. The following properties are supported: + */ + function run(options?: RunOptions): TestsStream; + /** + * The `test()` function is the value imported from the `test` module. Each + * invocation of this function results in reporting the test to the `TestsStream`. + * + * The `TestContext` object passed to the `fn` argument can be used to perform + * actions related to the current test. Examples include skipping the test, adding + * additional diagnostic information, or creating subtests. + * + * `test()` returns a `Promise` that resolves once the test completes. + * if `test()` is called within a `describe()` block, it resolve immediately. + * The return value can usually be discarded for top level tests. + * However, the return value from subtests should be used to prevent the parent + * test from finishing first and cancelling the subtest + * as shown in the following example. + * + * ```js + * test('top level test', async (t) => { + * // The setTimeout() in the following subtest would cause it to outlive its + * // parent test if 'await' is removed on the next line. Once the parent test + * // completes, it will cancel any outstanding subtests. + * await t.test('longer running subtest', async (t) => { + * return new Promise((resolve, reject) => { + * setTimeout(resolve, 1000); + * }); + * }); + * }); + * ``` + * + * The `timeout` option can be used to fail the test if it takes longer than`timeout` milliseconds to complete. However, it is not a reliable mechanism for + * canceling tests because a running test might block the application thread and + * thus prevent the scheduled cancellation. + * @since v18.0.0, v16.17.0 + * @param [name='The name'] The name of the test, which is displayed when reporting test results. + * @param options Configuration options for the test. The following properties are supported: + * @param [fn='A no-op function'] The function under test. The first argument to this function is a {@link TestContext} object. If the test uses callbacks, the callback function is passed as the + * second argument. + * @return Resolved with `undefined` once the test completes, or immediately if the test runs within {@link describe}. + */ + function test(name?: string, fn?: TestFn): Promise; + function test(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function test(options?: TestOptions, fn?: TestFn): Promise; + function test(fn?: TestFn): Promise; + namespace test { + export { after, afterEach, before, beforeEach, describe, it, mock, only, run, skip, test, todo }; + } + /** + * The `describe()` function imported from the `node:test` module. Each + * invocation of this function results in the creation of a Subtest. + * After invocation of top level `describe` functions, + * all top level tests and suites will execute. + * @param [name='The name'] The name of the suite, which is displayed when reporting test results. + * @param options Configuration options for the suite. supports the same options as `test([name][, options][, fn])`. + * @param [fn='A no-op function'] The function under suite declaring all subtests and subsuites. The first argument to this function is a {@link SuiteContext} object. + * @return Immediately fulfilled with `undefined`. + */ + function describe(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; + function describe(name?: string, fn?: SuiteFn): Promise; + function describe(options?: TestOptions, fn?: SuiteFn): Promise; + function describe(fn?: SuiteFn): Promise; + namespace describe { + /** + * Shorthand for skipping a suite, same as `describe([name], { skip: true }[, fn])`. + */ + function skip(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; + function skip(name?: string, fn?: SuiteFn): Promise; + function skip(options?: TestOptions, fn?: SuiteFn): Promise; + function skip(fn?: SuiteFn): Promise; + /** + * Shorthand for marking a suite as `TODO`, same as `describe([name], { todo: true }[, fn])`. + */ + function todo(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; + function todo(name?: string, fn?: SuiteFn): Promise; + function todo(options?: TestOptions, fn?: SuiteFn): Promise; + function todo(fn?: SuiteFn): Promise; + /** + * Shorthand for marking a suite as `only`, same as `describe([name], { only: true }[, fn])`. + * @since v18.15.0 + */ + function only(name?: string, options?: TestOptions, fn?: SuiteFn): Promise; + function only(name?: string, fn?: SuiteFn): Promise; + function only(options?: TestOptions, fn?: SuiteFn): Promise; + function only(fn?: SuiteFn): Promise; + } + /** + * Shorthand for `test()`. + * + * The `it()` function is imported from the `node:test` module. + * @since v18.6.0, v16.17.0 + */ + function it(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function it(name?: string, fn?: TestFn): Promise; + function it(options?: TestOptions, fn?: TestFn): Promise; + function it(fn?: TestFn): Promise; + namespace it { + /** + * Shorthand for skipping a test, same as `it([name], { skip: true }[, fn])`. + */ + function skip(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function skip(name?: string, fn?: TestFn): Promise; + function skip(options?: TestOptions, fn?: TestFn): Promise; + function skip(fn?: TestFn): Promise; + /** + * Shorthand for marking a test as `TODO`, same as `it([name], { todo: true }[, fn])`. + */ + function todo(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function todo(name?: string, fn?: TestFn): Promise; + function todo(options?: TestOptions, fn?: TestFn): Promise; + function todo(fn?: TestFn): Promise; + /** + * Shorthand for marking a test as `only`, same as `it([name], { only: true }[, fn])`. + * @since v18.15.0 + */ + function only(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function only(name?: string, fn?: TestFn): Promise; + function only(options?: TestOptions, fn?: TestFn): Promise; + function only(fn?: TestFn): Promise; + } + /** + * Shorthand for skipping a test, same as `test([name], { skip: true }[, fn])`. + * @since v20.2.0 + */ + function skip(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function skip(name?: string, fn?: TestFn): Promise; + function skip(options?: TestOptions, fn?: TestFn): Promise; + function skip(fn?: TestFn): Promise; + /** + * Shorthand for marking a test as `TODO`, same as `test([name], { todo: true }[, fn])`. + * @since v20.2.0 + */ + function todo(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function todo(name?: string, fn?: TestFn): Promise; + function todo(options?: TestOptions, fn?: TestFn): Promise; + function todo(fn?: TestFn): Promise; + /** + * Shorthand for marking a test as `only`, same as `test([name], { only: true }[, fn])`. + * @since v20.2.0 + */ + function only(name?: string, options?: TestOptions, fn?: TestFn): Promise; + function only(name?: string, fn?: TestFn): Promise; + function only(options?: TestOptions, fn?: TestFn): Promise; + function only(fn?: TestFn): Promise; + /** + * The type of a function under test. The first argument to this function is a + * {@link TestContext} object. If the test uses callbacks, the callback function is passed as + * the second argument. + */ + type TestFn = (t: TestContext, done: (result?: any) => void) => void | Promise; + /** + * The type of a function under Suite. + */ + type SuiteFn = (s: SuiteContext) => void | Promise; + interface TestShard { + /** + * A positive integer between 1 and `` that specifies the index of the shard to run. + */ + index: number; + /** + * A positive integer that specifies the total number of shards to split the test files to. + */ + total: number; + } + interface RunOptions { + /** + * If a number is provided, then that many files would run in parallel. + * If truthy, it would run (number of cpu cores - 1) files in parallel. + * If falsy, it would only run one file at a time. + * If unspecified, subtests inherit this value from their parent. + * @default true + */ + concurrency?: number | boolean | undefined; + /** + * An array containing the list of files to run. + * If unspecified, the test runner execution model will be used. + */ + files?: readonly string[] | undefined; + /** + * Allows aborting an in-progress test execution. + * @default undefined + */ + signal?: AbortSignal | undefined; + /** + * A number of milliseconds the test will fail after. + * If unspecified, subtests inherit this value from their parent. + * @default Infinity + */ + timeout?: number | undefined; + /** + * Sets inspector port of test child process. + * If a nullish value is provided, each process gets its own port, + * incremented from the primary's `process.debugPort`. + */ + inspectPort?: number | (() => number) | undefined; + /** + * That can be used to only run tests whose name matches the provided pattern. + * Test name patterns are interpreted as JavaScript regular expressions. + * For each test that is executed, any corresponding test hooks, such as `beforeEach()`, are also run. + */ + testNamePatterns?: string | RegExp | string[] | RegExp[]; + /** + * If truthy, the test context will only run tests that have the `only` option set + */ + only?: boolean; + /** + * A function that accepts the TestsStream instance and can be used to setup listeners before any tests are run. + */ + setup?: (root: Test) => void | Promise; + /** + * Whether to run in watch mode or not. + * @default false + */ + watch?: boolean | undefined; + /** + * Running tests in a specific shard. + * @default undefined + */ + shard?: TestShard | undefined; + } + class Test extends AsyncResource { + concurrency: number; + nesting: number; + only: boolean; + reporter: TestsStream; + runOnlySubtests: boolean; + testNumber: number; + timeout: number | null; + } + /** + * A successful call to `run()` method will return a new `TestsStream` object, streaming a series of events representing the execution of the tests.`TestsStream` will emit events, in the + * order of the tests definition + * @since v18.9.0, v16.19.0 + */ + class TestsStream extends Readable implements NodeJS.ReadableStream { + addListener(event: "test:diagnostic", listener: (data: DiagnosticData) => void): this; + addListener(event: "test:fail", listener: (data: TestFail) => void): this; + addListener(event: "test:pass", listener: (data: TestPass) => void): this; + addListener(event: "test:plan", listener: (data: TestPlan) => void): this; + addListener(event: "test:start", listener: (data: TestStart) => void): this; + addListener(event: "test:stderr", listener: (data: TestStderr) => void): this; + addListener(event: "test:stdout", listener: (data: TestStdout) => void): this; + addListener(event: string, listener: (...args: any[]) => void): this; + emit(event: "test:diagnostic", data: DiagnosticData): boolean; + emit(event: "test:fail", data: TestFail): boolean; + emit(event: "test:pass", data: TestPass): boolean; + emit(event: "test:plan", data: TestPlan): boolean; + emit(event: "test:start", data: TestStart): boolean; + emit(event: "test:stderr", data: TestStderr): boolean; + emit(event: "test:stdout", data: TestStdout): boolean; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: "test:diagnostic", listener: (data: DiagnosticData) => void): this; + on(event: "test:fail", listener: (data: TestFail) => void): this; + on(event: "test:pass", listener: (data: TestPass) => void): this; + on(event: "test:plan", listener: (data: TestPlan) => void): this; + on(event: "test:start", listener: (data: TestStart) => void): this; + on(event: "test:stderr", listener: (data: TestStderr) => void): this; + on(event: "test:stdout", listener: (data: TestStdout) => void): this; + on(event: string, listener: (...args: any[]) => void): this; + once(event: "test:diagnostic", listener: (data: DiagnosticData) => void): this; + once(event: "test:fail", listener: (data: TestFail) => void): this; + once(event: "test:pass", listener: (data: TestPass) => void): this; + once(event: "test:plan", listener: (data: TestPlan) => void): this; + once(event: "test:start", listener: (data: TestStart) => void): this; + once(event: "test:stderr", listener: (data: TestStderr) => void): this; + once(event: "test:stdout", listener: (data: TestStdout) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "test:diagnostic", listener: (data: DiagnosticData) => void): this; + prependListener(event: "test:fail", listener: (data: TestFail) => void): this; + prependListener(event: "test:pass", listener: (data: TestPass) => void): this; + prependListener(event: "test:plan", listener: (data: TestPlan) => void): this; + prependListener(event: "test:start", listener: (data: TestStart) => void): this; + prependListener(event: "test:stderr", listener: (data: TestStderr) => void): this; + prependListener(event: "test:stdout", listener: (data: TestStdout) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "test:diagnostic", listener: (data: DiagnosticData) => void): this; + prependOnceListener(event: "test:fail", listener: (data: TestFail) => void): this; + prependOnceListener(event: "test:pass", listener: (data: TestPass) => void): this; + prependOnceListener(event: "test:plan", listener: (data: TestPlan) => void): this; + prependOnceListener(event: "test:start", listener: (data: TestStart) => void): this; + prependOnceListener(event: "test:stderr", listener: (data: TestStderr) => void): this; + prependOnceListener(event: "test:stdout", listener: (data: TestStdout) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + } + /** + * An instance of `TestContext` is passed to each test function in order to + * interact with the test runner. However, the `TestContext` constructor is not + * exposed as part of the API. + * @since v18.0.0, v16.17.0 + */ + class TestContext { + /** + * This function is used to create a hook running before subtest of the current test. + * @param fn The hook function. If the hook uses callbacks, the callback function is passed as + * the second argument. Default: A no-op function. + * @param options Configuration options for the hook. + * @since v20.1.0 + */ + before: typeof before; + /** + * This function is used to create a hook running before each subtest of the current test. + * @param fn The hook function. If the hook uses callbacks, the callback function is passed as + * the second argument. Default: A no-op function. + * @param options Configuration options for the hook. + * @since v18.8.0 + */ + beforeEach: typeof beforeEach; + /** + * This function is used to create a hook that runs after the current test finishes. + * @param fn The hook function. If the hook uses callbacks, the callback function is passed as + * the second argument. Default: A no-op function. + * @param options Configuration options for the hook. + * @since v18.13.0 + */ + after: typeof after; + /** + * This function is used to create a hook running after each subtest of the current test. + * @param fn The hook function. If the hook uses callbacks, the callback function is passed as + * the second argument. Default: A no-op function. + * @param options Configuration options for the hook. + * @since v18.8.0 + */ + afterEach: typeof afterEach; + /** + * This function is used to write diagnostics to the output. Any diagnostic + * information is included at the end of the test's results. This function does + * not return a value. + * + * ```js + * test('top level test', (t) => { + * t.diagnostic('A diagnostic message'); + * }); + * ``` + * @since v18.0.0, v16.17.0 + * @param message Message to be reported. + */ + diagnostic(message: string): void; + /** + * The name of the test. + * @since v18.8.0, v16.18.0 + */ + readonly name: string; + /** + * If `shouldRunOnlyTests` is truthy, the test context will only run tests that + * have the `only` option set. Otherwise, all tests are run. If Node.js was not + * started with the `--test-only` command-line option, this function is a + * no-op. + * + * ```js + * test('top level test', (t) => { + * // The test context can be set to run subtests with the 'only' option. + * t.runOnly(true); + * return Promise.all([ + * t.test('this subtest is now skipped'), + * t.test('this subtest is run', { only: true }), + * ]); + * }); + * ``` + * @since v18.0.0, v16.17.0 + * @param shouldRunOnlyTests Whether or not to run `only` tests. + */ + runOnly(shouldRunOnlyTests: boolean): void; + /** + * ```js + * test('top level test', async (t) => { + * await fetch('some/uri', { signal: t.signal }); + * }); + * ``` + * @since v18.7.0, v16.17.0 + */ + readonly signal: AbortSignal; + /** + * This function causes the test's output to indicate the test as skipped. If`message` is provided, it is included in the output. Calling `skip()` does + * not terminate execution of the test function. This function does not return a + * value. + * + * ```js + * test('top level test', (t) => { + * // Make sure to return here as well if the test contains additional logic. + * t.skip('this is skipped'); + * }); + * ``` + * @since v18.0.0, v16.17.0 + * @param message Optional skip message. + */ + skip(message?: string): void; + /** + * This function adds a `TODO` directive to the test's output. If `message` is + * provided, it is included in the output. Calling `todo()` does not terminate + * execution of the test function. This function does not return a value. + * + * ```js + * test('top level test', (t) => { + * // This test is marked as `TODO` + * t.todo('this is a todo'); + * }); + * ``` + * @since v18.0.0, v16.17.0 + * @param message Optional `TODO` message. + */ + todo(message?: string): void; + /** + * This function is used to create subtests under the current test. This function behaves in + * the same fashion as the top level {@link test} function. + * @since v18.0.0 + * @param name The name of the test, which is displayed when reporting test results. + * Default: The `name` property of fn, or `''` if `fn` does not have a name. + * @param options Configuration options for the test + * @param fn The function under test. This first argument to this function is a + * {@link TestContext} object. If the test uses callbacks, the callback function is + * passed as the second argument. Default: A no-op function. + * @returns A {@link Promise} resolved with `undefined` once the test completes. + */ + test: typeof test; + /** + * Each test provides its own MockTracker instance. + */ + readonly mock: MockTracker; + } + /** + * An instance of `SuiteContext` is passed to each suite function in order to + * interact with the test runner. However, the `SuiteContext` constructor is not + * exposed as part of the API. + * @since v18.7.0, v16.17.0 + */ + class SuiteContext { + /** + * The name of the suite. + * @since v18.8.0, v16.18.0 + */ + readonly name: string; + /** + * Can be used to abort test subtasks when the test has been aborted. + * @since v18.7.0, v16.17.0 + */ + readonly signal: AbortSignal; + } + interface TestOptions { + /** + * If a number is provided, then that many tests would run in parallel. + * If truthy, it would run (number of cpu cores - 1) tests in parallel. + * For subtests, it will be `Infinity` tests in parallel. + * If falsy, it would only run one test at a time. + * If unspecified, subtests inherit this value from their parent. + * @default false + */ + concurrency?: number | boolean | undefined; + /** + * If truthy, and the test context is configured to run `only` tests, then this test will be + * run. Otherwise, the test is skipped. + * @default false + */ + only?: boolean | undefined; + /** + * Allows aborting an in-progress test. + * @since v18.8.0 + */ + signal?: AbortSignal | undefined; + /** + * If truthy, the test is skipped. If a string is provided, that string is displayed in the + * test results as the reason for skipping the test. + * @default false + */ + skip?: boolean | string | undefined; + /** + * A number of milliseconds the test will fail after. If unspecified, subtests inherit this + * value from their parent. + * @default Infinity + * @since v18.7.0 + */ + timeout?: number | undefined; + /** + * If truthy, the test marked as `TODO`. If a string is provided, that string is displayed in + * the test results as the reason why the test is `TODO`. + * @default false + */ + todo?: boolean | string | undefined; + } + /** + * This function is used to create a hook running before running a suite. + * + * ```js + * describe('tests', async () => { + * before(() => console.log('about to run some test')); + * it('is a subtest', () => { + * assert.ok('some relevant assertion here'); + * }); + * }); + * ``` + * @since v18.8.0, v16.18.0 + * @param [fn='A no-op function'] The hook function. If the hook uses callbacks, the callback function is passed as the second argument. + * @param options Configuration options for the hook. The following properties are supported: + */ + function before(fn?: HookFn, options?: HookOptions): void; + /** + * This function is used to create a hook running after running a suite. + * + * ```js + * describe('tests', async () => { + * after(() => console.log('finished running tests')); + * it('is a subtest', () => { + * assert.ok('some relevant assertion here'); + * }); + * }); + * ``` + * @since v18.8.0, v16.18.0 + * @param [fn='A no-op function'] The hook function. If the hook uses callbacks, the callback function is passed as the second argument. + * @param options Configuration options for the hook. The following properties are supported: + */ + function after(fn?: HookFn, options?: HookOptions): void; + /** + * This function is used to create a hook running + * before each subtest of the current suite. + * + * ```js + * describe('tests', async () => { + * beforeEach(() => console.log('about to run a test')); + * it('is a subtest', () => { + * assert.ok('some relevant assertion here'); + * }); + * }); + * ``` + * @since v18.8.0, v16.18.0 + * @param [fn='A no-op function'] The hook function. If the hook uses callbacks, the callback function is passed as the second argument. + * @param options Configuration options for the hook. The following properties are supported: + */ + function beforeEach(fn?: HookFn, options?: HookOptions): void; + /** + * This function is used to create a hook running + * after each subtest of the current test. + * + * ```js + * describe('tests', async () => { + * afterEach(() => console.log('finished running a test')); + * it('is a subtest', () => { + * assert.ok('some relevant assertion here'); + * }); + * }); + * ``` + * @since v18.8.0, v16.18.0 + * @param [fn='A no-op function'] The hook function. If the hook uses callbacks, the callback function is passed as the second argument. + * @param options Configuration options for the hook. The following properties are supported: + */ + function afterEach(fn?: HookFn, options?: HookOptions): void; + /** + * The hook function. If the hook uses callbacks, the callback function is passed as the + * second argument. + */ + type HookFn = (s: SuiteContext, done: (result?: any) => void) => any; + /** + * Configuration options for hooks. + * @since v18.8.0 + */ + interface HookOptions { + /** + * Allows aborting an in-progress hook. + */ + signal?: AbortSignal | undefined; + /** + * A number of milliseconds the hook will fail after. If unspecified, subtests inherit this + * value from their parent. + * @default Infinity + */ + timeout?: number | undefined; + } + interface MockFunctionOptions { + /** + * The number of times that the mock will use the behavior of `implementation`. + * Once the mock function has been called `times` times, + * it will automatically restore the behavior of `original`. + * This value must be an integer greater than zero. + * @default Infinity + */ + times?: number | undefined; + } + interface MockMethodOptions extends MockFunctionOptions { + /** + * If `true`, `object[methodName]` is treated as a getter. + * This option cannot be used with the `setter` option. + */ + getter?: boolean | undefined; + /** + * If `true`, `object[methodName]` is treated as a setter. + * This option cannot be used with the `getter` option. + */ + setter?: boolean | undefined; + } + type Mock = F & { + mock: MockFunctionContext; + }; + type NoOpFunction = (...args: any[]) => undefined; + type FunctionPropertyNames = { + [K in keyof T]: T[K] extends Function ? K : never; + }[keyof T]; + /** + * The `MockTracker` class is used to manage mocking functionality. The test runner + * module provides a top level `mock` export which is a `MockTracker` instance. + * Each test also provides its own `MockTracker` instance via the test context's`mock` property. + * @since v19.1.0, v18.13.0 + */ + class MockTracker { + /** + * This function is used to create a mock function. + * + * The following example creates a mock function that increments a counter by one + * on each invocation. The `times` option is used to modify the mock behavior such + * that the first two invocations add two to the counter instead of one. + * + * ```js + * test('mocks a counting function', (t) => { + * let cnt = 0; + * + * function addOne() { + * cnt++; + * return cnt; + * } + * + * function addTwo() { + * cnt += 2; + * return cnt; + * } + * + * const fn = t.mock.fn(addOne, addTwo, { times: 2 }); + * + * assert.strictEqual(fn(), 2); + * assert.strictEqual(fn(), 4); + * assert.strictEqual(fn(), 5); + * assert.strictEqual(fn(), 6); + * }); + * ``` + * @since v19.1.0, v18.13.0 + * @param [original='A no-op function'] An optional function to create a mock on. + * @param implementation An optional function used as the mock implementation for `original`. This is useful for creating mocks that exhibit one behavior for a specified number of calls and + * then restore the behavior of `original`. + * @param options Optional configuration options for the mock function. The following properties are supported: + * @return The mocked function. The mocked function contains a special `mock` property, which is an instance of {@link MockFunctionContext}, and can be used for inspecting and changing the + * behavior of the mocked function. + */ + fn(original?: F, options?: MockFunctionOptions): Mock; + fn( + original?: F, + implementation?: Implementation, + options?: MockFunctionOptions, + ): Mock; + /** + * This function is used to create a mock on an existing object method. The + * following example demonstrates how a mock is created on an existing object + * method. + * + * ```js + * test('spies on an object method', (t) => { + * const number = { + * value: 5, + * subtract(a) { + * return this.value - a; + * }, + * }; + * + * t.mock.method(number, 'subtract'); + * assert.strictEqual(number.subtract.mock.calls.length, 0); + * assert.strictEqual(number.subtract(3), 2); + * assert.strictEqual(number.subtract.mock.calls.length, 1); + * + * const call = number.subtract.mock.calls[0]; + * + * assert.deepStrictEqual(call.arguments, [3]); + * assert.strictEqual(call.result, 2); + * assert.strictEqual(call.error, undefined); + * assert.strictEqual(call.target, undefined); + * assert.strictEqual(call.this, number); + * }); + * ``` + * @since v19.1.0, v18.13.0 + * @param object The object whose method is being mocked. + * @param methodName The identifier of the method on `object` to mock. If `object[methodName]` is not a function, an error is thrown. + * @param implementation An optional function used as the mock implementation for `object[methodName]`. + * @param options Optional configuration options for the mock method. The following properties are supported: + * @return The mocked method. The mocked method contains a special `mock` property, which is an instance of {@link MockFunctionContext}, and can be used for inspecting and changing the + * behavior of the mocked method. + */ + method< + MockedObject extends object, + MethodName extends FunctionPropertyNames, + >( + object: MockedObject, + methodName: MethodName, + options?: MockFunctionOptions, + ): MockedObject[MethodName] extends Function ? Mock + : never; + method< + MockedObject extends object, + MethodName extends FunctionPropertyNames, + Implementation extends Function, + >( + object: MockedObject, + methodName: MethodName, + implementation: Implementation, + options?: MockFunctionOptions, + ): MockedObject[MethodName] extends Function ? Mock + : never; + method( + object: MockedObject, + methodName: keyof MockedObject, + options: MockMethodOptions, + ): Mock; + method( + object: MockedObject, + methodName: keyof MockedObject, + implementation: Function, + options: MockMethodOptions, + ): Mock; + + /** + * This function is syntax sugar for `MockTracker.method` with `options.getter`set to `true`. + * @since v19.3.0, v18.13.0 + */ + getter< + MockedObject extends object, + MethodName extends keyof MockedObject, + >( + object: MockedObject, + methodName: MethodName, + options?: MockFunctionOptions, + ): Mock<() => MockedObject[MethodName]>; + getter< + MockedObject extends object, + MethodName extends keyof MockedObject, + Implementation extends Function, + >( + object: MockedObject, + methodName: MethodName, + implementation?: Implementation, + options?: MockFunctionOptions, + ): Mock<(() => MockedObject[MethodName]) | Implementation>; + /** + * This function is syntax sugar for `MockTracker.method` with `options.setter`set to `true`. + * @since v19.3.0, v18.13.0 + */ + setter< + MockedObject extends object, + MethodName extends keyof MockedObject, + >( + object: MockedObject, + methodName: MethodName, + options?: MockFunctionOptions, + ): Mock<(value: MockedObject[MethodName]) => void>; + setter< + MockedObject extends object, + MethodName extends keyof MockedObject, + Implementation extends Function, + >( + object: MockedObject, + methodName: MethodName, + implementation?: Implementation, + options?: MockFunctionOptions, + ): Mock<((value: MockedObject[MethodName]) => void) | Implementation>; + /** + * This function restores the default behavior of all mocks that were previously + * created by this `MockTracker` and disassociates the mocks from the`MockTracker` instance. Once disassociated, the mocks can still be used, but the`MockTracker` instance can no longer be + * used to reset their behavior or + * otherwise interact with them. + * + * After each test completes, this function is called on the test context's`MockTracker`. If the global `MockTracker` is used extensively, calling this + * function manually is recommended. + * @since v19.1.0, v18.13.0 + */ + reset(): void; + /** + * This function restores the default behavior of all mocks that were previously + * created by this `MockTracker`. Unlike `mock.reset()`, `mock.restoreAll()` does + * not disassociate the mocks from the `MockTracker` instance. + * @since v19.1.0, v18.13.0 + */ + restoreAll(): void; + timers: MockTimers; + } + const mock: MockTracker; + interface MockFunctionCall< + F extends Function, + ReturnType = F extends (...args: any) => infer T ? T + : F extends abstract new(...args: any) => infer T ? T + : unknown, + Args = F extends (...args: infer Y) => any ? Y + : F extends abstract new(...args: infer Y) => any ? Y + : unknown[], + > { + /** + * An array of the arguments passed to the mock function. + */ + arguments: Args; + /** + * If the mocked function threw then this property contains the thrown value. + */ + error: unknown | undefined; + /** + * The value returned by the mocked function. + * + * If the mocked function threw, it will be `undefined`. + */ + result: ReturnType | undefined; + /** + * An `Error` object whose stack can be used to determine the callsite of the mocked function invocation. + */ + stack: Error; + /** + * If the mocked function is a constructor, this field contains the class being constructed. + * Otherwise this will be `undefined`. + */ + target: F extends abstract new(...args: any) => any ? F : undefined; + /** + * The mocked function's `this` value. + */ + this: unknown; + } + /** + * The `MockFunctionContext` class is used to inspect or manipulate the behavior of + * mocks created via the `MockTracker` APIs. + * @since v19.1.0, v18.13.0 + */ + class MockFunctionContext { + /** + * A getter that returns a copy of the internal array used to track calls to the + * mock. Each entry in the array is an object with the following properties. + * @since v19.1.0, v18.13.0 + */ + readonly calls: Array>; + /** + * This function returns the number of times that this mock has been invoked. This + * function is more efficient than checking `ctx.calls.length` because `ctx.calls`is a getter that creates a copy of the internal call tracking array. + * @since v19.1.0, v18.13.0 + * @return The number of times that this mock has been invoked. + */ + callCount(): number; + /** + * This function is used to change the behavior of an existing mock. + * + * The following example creates a mock function using `t.mock.fn()`, calls the + * mock function, and then changes the mock implementation to a different function. + * + * ```js + * test('changes a mock behavior', (t) => { + * let cnt = 0; + * + * function addOne() { + * cnt++; + * return cnt; + * } + * + * function addTwo() { + * cnt += 2; + * return cnt; + * } + * + * const fn = t.mock.fn(addOne); + * + * assert.strictEqual(fn(), 1); + * fn.mock.mockImplementation(addTwo); + * assert.strictEqual(fn(), 3); + * assert.strictEqual(fn(), 5); + * }); + * ``` + * @since v19.1.0, v18.13.0 + * @param implementation The function to be used as the mock's new implementation. + */ + mockImplementation(implementation: Function): void; + /** + * This function is used to change the behavior of an existing mock for a single + * invocation. Once invocation `onCall` has occurred, the mock will revert to + * whatever behavior it would have used had `mockImplementationOnce()` not been + * called. + * + * The following example creates a mock function using `t.mock.fn()`, calls the + * mock function, changes the mock implementation to a different function for the + * next invocation, and then resumes its previous behavior. + * + * ```js + * test('changes a mock behavior once', (t) => { + * let cnt = 0; + * + * function addOne() { + * cnt++; + * return cnt; + * } + * + * function addTwo() { + * cnt += 2; + * return cnt; + * } + * + * const fn = t.mock.fn(addOne); + * + * assert.strictEqual(fn(), 1); + * fn.mock.mockImplementationOnce(addTwo); + * assert.strictEqual(fn(), 3); + * assert.strictEqual(fn(), 4); + * }); + * ``` + * @since v19.1.0, v18.13.0 + * @param implementation The function to be used as the mock's implementation for the invocation number specified by `onCall`. + * @param onCall The invocation number that will use `implementation`. If the specified invocation has already occurred then an exception is thrown. + */ + mockImplementationOnce(implementation: Function, onCall?: number): void; + /** + * Resets the call history of the mock function. + * @since v19.3.0, v18.13.0 + */ + resetCalls(): void; + /** + * Resets the implementation of the mock function to its original behavior. The + * mock can still be used after calling this function. + * @since v19.1.0, v18.13.0 + */ + restore(): void; + } + type Timer = "setInterval" | "clearInterval" | "setTimeout" | "clearTimeout"; + /** + * Mocking timers is a technique commonly used in software testing to simulate and + * control the behavior of timers, such as `setInterval` and `setTimeout`, + * without actually waiting for the specified time intervals. + * + * The `MockTracker` provides a top-level `timers` export + * which is a `MockTimers` instance. + * @since v20.4.0 + * @experimental + */ + class MockTimers { + /** + * Enables timer mocking for the specified timers. + * + * **Note:** When you enable mocking for a specific timer, its associated + * clear function will also be implicitly mocked. + * + * Example usage: + * + * ```js + * import { mock } from 'node:test'; + * mock.timers.enable(['setInterval']); + * ``` + * + * The above example enables mocking for the `setInterval` timer and + * implicitly mocks the `clearInterval` function. Only the `setInterval`and `clearInterval` functions from `node:timers`,`node:timers/promises`, and`globalThis` will be mocked. + * + * Alternatively, if you call `mock.timers.enable()` without any parameters: + * + * All timers (`'setInterval'`, `'clearInterval'`, `'setTimeout'`, and `'clearTimeout'`) + * will be mocked. The `setInterval`, `clearInterval`, `setTimeout`, and `clearTimeout`functions from `node:timers`, `node:timers/promises`, + * and `globalThis` will be mocked. + * @since v20.4.0 + */ + enable(timers?: Timer[]): void; + /** + * This function restores the default behavior of all mocks that were previously + * created by this `MockTimers` instance and disassociates the mocks + * from the `MockTracker` instance. + * + * **Note:** After each test completes, this function is called on + * the test context's `MockTracker`. + * + * ```js + * import { mock } from 'node:test'; + * mock.timers.reset(); + * ``` + * @since v20.4.0 + */ + reset(): void; + /** + * Advances time for all mocked timers. + * + * **Note:** This diverges from how `setTimeout` in Node.js behaves and accepts + * only positive numbers. In Node.js, `setTimeout` with negative numbers is + * only supported for web compatibility reasons. + * + * The following example mocks a `setTimeout` function and + * by using `.tick` advances in + * time triggering all pending timers. + * + * ```js + * import assert from 'node:assert'; + * import { test } from 'node:test'; + * + * test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => { + * const fn = context.mock.fn(); + * + * context.mock.timers.enable(['setTimeout']); + * + * setTimeout(fn, 9999); + * + * assert.strictEqual(fn.mock.callCount(), 0); + * + * // Advance in time + * context.mock.timers.tick(9999); + * + * assert.strictEqual(fn.mock.callCount(), 1); + * }); + * ``` + * + * Alternativelly, the `.tick` function can be called many times + * + * ```js + * import assert from 'node:assert'; + * import { test } from 'node:test'; + * + * test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => { + * const fn = context.mock.fn(); + * context.mock.timers.enable(['setTimeout']); + * const nineSecs = 9000; + * setTimeout(fn, nineSecs); + * + * const twoSeconds = 3000; + * context.mock.timers.tick(twoSeconds); + * context.mock.timers.tick(twoSeconds); + * context.mock.timers.tick(twoSeconds); + * + * assert.strictEqual(fn.mock.callCount(), 1); + * }); + * ``` + * @since v20.4.0 + */ + tick(milliseconds: number): void; + /** + * Triggers all pending mocked timers immediately. + * + * The example below triggers all pending timers immediately, + * causing them to execute without any delay. + * + * ```js + * import assert from 'node:assert'; + * import { test } from 'node:test'; + * + * test('runAll functions following the given order', (context) => { + * context.mock.timers.enable(['setTimeout']); + * const results = []; + * setTimeout(() => results.push(1), 9999); + * + * // Notice that if both timers have the same timeout, + * // the order of execution is guaranteed + * setTimeout(() => results.push(3), 8888); + * setTimeout(() => results.push(2), 8888); + * + * assert.deepStrictEqual(results, []); + * + * context.mock.timers.runAll(); + * + * assert.deepStrictEqual(results, [3, 2, 1]); + * }); + * ``` + * + * **Note:** The `runAll()` function is specifically designed for + * triggering timers in the context of timer mocking. + * It does not have any effect on real-time system + * clocks or actual timers outside of the mocking environment. + * @since v20.4.0 + */ + runAll(): void; + /** + * Calls {@link MockTimers.reset()}. + */ + [Symbol.dispose](): void; + } + export { + after, + afterEach, + before, + beforeEach, + describe, + it, + Mock, + mock, + only, + run, + skip, + test, + test as default, + todo, + }; +} + +interface TestLocationInfo { + /** + * The column number where the test is defined, or + * `undefined` if the test was run through the REPL. + */ + column?: number; + /** + * The path of the test file, `undefined` if test is not ran through a file. + */ + file?: string; + /** + * The line number where the test is defined, or + * `undefined` if the test was run through the REPL. + */ + line?: number; +} +interface DiagnosticData extends TestLocationInfo { + /** + * The diagnostic message. + */ + message: string; + /** + * The nesting level of the test. + */ + nesting: number; +} +interface TestFail extends TestLocationInfo { + /** + * Additional execution metadata. + */ + details: { + /** + * The duration of the test in milliseconds. + */ + duration_ms: number; + /** + * The error thrown by the test. + */ + error: Error; + /** + * The type of the test, used to denote whether this is a suite. + * @since 20.0.0, 19.9.0, 18.17.0 + */ + type?: "suite"; + }; + /** + * The test name. + */ + name: string; + /** + * The nesting level of the test. + */ + nesting: number; + /** + * The ordinal number of the test. + */ + testNumber: number; + /** + * Present if `context.todo` is called. + */ + todo?: string | boolean; + /** + * Present if `context.skip` is called. + */ + skip?: string | boolean; +} +interface TestPass extends TestLocationInfo { + /** + * Additional execution metadata. + */ + details: { + /** + * The duration of the test in milliseconds. + */ + duration_ms: number; + /** + * The type of the test, used to denote whether this is a suite. + * @since 20.0.0, 19.9.0, 18.17.0 + */ + type?: "suite"; + }; + /** + * The test name. + */ + name: string; + /** + * The nesting level of the test. + */ + nesting: number; + /** + * The ordinal number of the test. + */ + testNumber: number; + /** + * Present if `context.todo` is called. + */ + todo?: string | boolean; + /** + * Present if `context.skip` is called. + */ + skip?: string | boolean; +} +interface TestPlan extends TestLocationInfo { + /** + * The nesting level of the test. + */ + nesting: number; + /** + * The number of subtests that have ran. + */ + count: number; +} +interface TestStart extends TestLocationInfo { + /** + * The test name. + */ + name: string; + /** + * The nesting level of the test. + */ + nesting: number; +} +interface TestStderr extends TestLocationInfo { + /** + * The message written to `stderr` + */ + message: string; +} +interface TestStdout extends TestLocationInfo { + /** + * The message written to `stdout` + */ + message: string; +} +interface TestEnqueue extends TestLocationInfo { + /** + * The test name + */ + name: string; + /** + * The nesting level of the test. + */ + nesting: number; +} +interface TestDequeue extends TestLocationInfo { + /** + * The test name + */ + name: string; + /** + * The nesting level of the test. + */ + nesting: number; +} + +/** + * The `node:test/reporters` module exposes the builtin-reporters for `node:test`. + * To access it: + * + * ```js + * import test from 'node:test/reporters'; + * ``` + * + * This module is only available under the `node:` scheme. The following will not + * work: + * + * ```js + * import test from 'test/reporters'; + * ``` + * @since v19.9.0 + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/test/reporters.js) + */ +declare module "node:test/reporters" { + import { Transform } from "node:stream"; + + type TestEvent = + | { type: "test:diagnostic"; data: DiagnosticData } + | { type: "test:fail"; data: TestFail } + | { type: "test:pass"; data: TestPass } + | { type: "test:plan"; data: TestPlan } + | { type: "test:start"; data: TestStart } + | { type: "test:stderr"; data: TestStderr } + | { type: "test:stdout"; data: TestStdout } + | { type: "test:enqueue"; data: TestEnqueue } + | { type: "test:dequeue"; data: TestDequeue } + | { type: "test:watch:drained" }; + type TestEventGenerator = AsyncGenerator; + + /** + * The `dot` reporter outputs the test results in a compact format, + * where each passing test is represented by a `.`, + * and each failing test is represented by a `X`. + */ + function dot(source: TestEventGenerator): AsyncGenerator<"\n" | "." | "X", void>; + /** + * The `tap` reporter outputs the test results in the [TAP](https://testanything.org/) format. + */ + function tap(source: TestEventGenerator): AsyncGenerator; + /** + * The `spec` reporter outputs the test results in a human-readable format. + */ + class Spec extends Transform { + constructor(); + } + /** + * The `junit` reporter outputs test results in a jUnit XML format + */ + function junit(source: TestEventGenerator): AsyncGenerator; + export { dot, junit, Spec as spec, tap, TestEvent }; +} diff --git a/node_modules/@types/node/ts4.8/timers.d.ts b/node_modules/@types/node/ts4.8/timers.d.ts new file mode 100644 index 00000000..1434e7dd --- /dev/null +++ b/node_modules/@types/node/ts4.8/timers.d.ts @@ -0,0 +1,240 @@ +/** + * The `timer` module exposes a global API for scheduling functions to + * be called at some future period of time. Because the timer functions are + * globals, there is no need to call `require('node:timers')` to use the API. + * + * The timer functions within Node.js implement a similar API as the timers API + * provided by Web Browsers but use a different internal implementation that is + * built around the Node.js [Event Loop](https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/#setimmediate-vs-settimeout). + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/timers.js) + */ +declare module "timers" { + import { Abortable } from "node:events"; + import { + setImmediate as setImmediatePromise, + setInterval as setIntervalPromise, + setTimeout as setTimeoutPromise, + } from "node:timers/promises"; + interface TimerOptions extends Abortable { + /** + * Set to `false` to indicate that the scheduled `Timeout` + * should not require the Node.js event loop to remain active. + * @default true + */ + ref?: boolean | undefined; + } + let setTimeout: typeof global.setTimeout; + let clearTimeout: typeof global.clearTimeout; + let setInterval: typeof global.setInterval; + let clearInterval: typeof global.clearInterval; + let setImmediate: typeof global.setImmediate; + let clearImmediate: typeof global.clearImmediate; + global { + namespace NodeJS { + // compatibility with older typings + interface Timer extends RefCounted { + hasRef(): boolean; + refresh(): this; + [Symbol.toPrimitive](): number; + } + /** + * This object is created internally and is returned from `setImmediate()`. It + * can be passed to `clearImmediate()` in order to cancel the scheduled + * actions. + * + * By default, when an immediate is scheduled, the Node.js event loop will continue + * running as long as the immediate is active. The `Immediate` object returned by `setImmediate()` exports both `immediate.ref()` and `immediate.unref()`functions that can be used to + * control this default behavior. + */ + class Immediate implements RefCounted { + /** + * When called, requests that the Node.js event loop _not_ exit so long as the`Immediate` is active. Calling `immediate.ref()` multiple times will have no + * effect. + * + * By default, all `Immediate` objects are "ref'ed", making it normally unnecessary + * to call `immediate.ref()` unless `immediate.unref()` had been called previously. + * @since v9.7.0 + * @return a reference to `immediate` + */ + ref(): this; + /** + * When called, the active `Immediate` object will not require the Node.js event + * loop to remain active. If there is no other activity keeping the event loop + * running, the process may exit before the `Immediate` object's callback is + * invoked. Calling `immediate.unref()` multiple times will have no effect. + * @since v9.7.0 + * @return a reference to `immediate` + */ + unref(): this; + /** + * If true, the `Immediate` object will keep the Node.js event loop active. + * @since v11.0.0 + */ + hasRef(): boolean; + _onImmediate: Function; // to distinguish it from the Timeout class + /** + * Cancels the immediate. This is similar to calling `clearImmediate()`. + * @since v20.5.0 + */ + [Symbol.dispose](): void; + } + /** + * This object is created internally and is returned from `setTimeout()` and `setInterval()`. It can be passed to either `clearTimeout()` or `clearInterval()` in order to cancel the + * scheduled actions. + * + * By default, when a timer is scheduled using either `setTimeout()` or `setInterval()`, the Node.js event loop will continue running as long as the + * timer is active. Each of the `Timeout` objects returned by these functions + * export both `timeout.ref()` and `timeout.unref()` functions that can be used to + * control this default behavior. + */ + class Timeout implements Timer { + /** + * When called, requests that the Node.js event loop _not_ exit so long as the`Timeout` is active. Calling `timeout.ref()` multiple times will have no effect. + * + * By default, all `Timeout` objects are "ref'ed", making it normally unnecessary + * to call `timeout.ref()` unless `timeout.unref()` had been called previously. + * @since v0.9.1 + * @return a reference to `timeout` + */ + ref(): this; + /** + * When called, the active `Timeout` object will not require the Node.js event loop + * to remain active. If there is no other activity keeping the event loop running, + * the process may exit before the `Timeout` object's callback is invoked. Calling`timeout.unref()` multiple times will have no effect. + * @since v0.9.1 + * @return a reference to `timeout` + */ + unref(): this; + /** + * If true, the `Timeout` object will keep the Node.js event loop active. + * @since v11.0.0 + */ + hasRef(): boolean; + /** + * Sets the timer's start time to the current time, and reschedules the timer to + * call its callback at the previously specified duration adjusted to the current + * time. This is useful for refreshing a timer without allocating a new + * JavaScript object. + * + * Using this on a timer that has already called its callback will reactivate the + * timer. + * @since v10.2.0 + * @return a reference to `timeout` + */ + refresh(): this; + [Symbol.toPrimitive](): number; + /** + * Cancels the timeout. + * @since v20.5.0 + */ + [Symbol.dispose](): void; + } + } + /** + * Schedules execution of a one-time `callback` after `delay` milliseconds. + * + * The `callback` will likely not be invoked in precisely `delay` milliseconds. + * Node.js makes no guarantees about the exact timing of when callbacks will fire, + * nor of their ordering. The callback will be called as close as possible to the + * time specified. + * + * When `delay` is larger than `2147483647` or less than `1`, the `delay`will be set to `1`. Non-integer delays are truncated to an integer. + * + * If `callback` is not a function, a `TypeError` will be thrown. + * + * This method has a custom variant for promises that is available using `timersPromises.setTimeout()`. + * @since v0.0.1 + * @param callback The function to call when the timer elapses. + * @param [delay=1] The number of milliseconds to wait before calling the `callback`. + * @param args Optional arguments to pass when the `callback` is called. + * @return for use with {@link clearTimeout} + */ + function setTimeout( + callback: (...args: TArgs) => void, + ms?: number, + ...args: TArgs + ): NodeJS.Timeout; + // util.promisify no rest args compability + // tslint:disable-next-line void-return + function setTimeout(callback: (args: void) => void, ms?: number): NodeJS.Timeout; + namespace setTimeout { + const __promisify__: typeof setTimeoutPromise; + } + /** + * Cancels a `Timeout` object created by `setTimeout()`. + * @since v0.0.1 + * @param timeout A `Timeout` object as returned by {@link setTimeout} or the `primitive` of the `Timeout` object as a string or a number. + */ + function clearTimeout(timeoutId: NodeJS.Timeout | string | number | undefined): void; + /** + * Schedules repeated execution of `callback` every `delay` milliseconds. + * + * When `delay` is larger than `2147483647` or less than `1`, the `delay` will be + * set to `1`. Non-integer delays are truncated to an integer. + * + * If `callback` is not a function, a `TypeError` will be thrown. + * + * This method has a custom variant for promises that is available using `timersPromises.setInterval()`. + * @since v0.0.1 + * @param callback The function to call when the timer elapses. + * @param [delay=1] The number of milliseconds to wait before calling the `callback`. + * @param args Optional arguments to pass when the `callback` is called. + * @return for use with {@link clearInterval} + */ + function setInterval( + callback: (...args: TArgs) => void, + ms?: number, + ...args: TArgs + ): NodeJS.Timeout; + // util.promisify no rest args compability + // tslint:disable-next-line void-return + function setInterval(callback: (args: void) => void, ms?: number): NodeJS.Timeout; + namespace setInterval { + const __promisify__: typeof setIntervalPromise; + } + /** + * Cancels a `Timeout` object created by `setInterval()`. + * @since v0.0.1 + * @param timeout A `Timeout` object as returned by {@link setInterval} or the `primitive` of the `Timeout` object as a string or a number. + */ + function clearInterval(intervalId: NodeJS.Timeout | string | number | undefined): void; + /** + * Schedules the "immediate" execution of the `callback` after I/O events' + * callbacks. + * + * When multiple calls to `setImmediate()` are made, the `callback` functions are + * queued for execution in the order in which they are created. The entire callback + * queue is processed every event loop iteration. If an immediate timer is queued + * from inside an executing callback, that timer will not be triggered until the + * next event loop iteration. + * + * If `callback` is not a function, a `TypeError` will be thrown. + * + * This method has a custom variant for promises that is available using `timersPromises.setImmediate()`. + * @since v0.9.1 + * @param callback The function to call at the end of this turn of the Node.js `Event Loop` + * @param args Optional arguments to pass when the `callback` is called. + * @return for use with {@link clearImmediate} + */ + function setImmediate( + callback: (...args: TArgs) => void, + ...args: TArgs + ): NodeJS.Immediate; + // util.promisify no rest args compability + // tslint:disable-next-line void-return + function setImmediate(callback: (args: void) => void): NodeJS.Immediate; + namespace setImmediate { + const __promisify__: typeof setImmediatePromise; + } + /** + * Cancels an `Immediate` object created by `setImmediate()`. + * @since v0.9.1 + * @param immediate An `Immediate` object as returned by {@link setImmediate}. + */ + function clearImmediate(immediateId: NodeJS.Immediate | undefined): void; + function queueMicrotask(callback: () => void): void; + } +} +declare module "node:timers" { + export * from "timers"; +} diff --git a/node_modules/@types/node/ts4.8/timers/promises.d.ts b/node_modules/@types/node/ts4.8/timers/promises.d.ts new file mode 100644 index 00000000..5a54dc77 --- /dev/null +++ b/node_modules/@types/node/ts4.8/timers/promises.d.ts @@ -0,0 +1,93 @@ +/** + * The `timers/promises` API provides an alternative set of timer functions + * that return `Promise` objects. The API is accessible via`require('node:timers/promises')`. + * + * ```js + * import { + * setTimeout, + * setImmediate, + * setInterval, + * } from 'timers/promises'; + * ``` + * @since v15.0.0 + */ +declare module "timers/promises" { + import { TimerOptions } from "node:timers"; + /** + * ```js + * import { + * setTimeout, + * } from 'timers/promises'; + * + * const res = await setTimeout(100, 'result'); + * + * console.log(res); // Prints 'result' + * ``` + * @since v15.0.0 + * @param [delay=1] The number of milliseconds to wait before fulfilling the promise. + * @param value A value with which the promise is fulfilled. + */ + function setTimeout(delay?: number, value?: T, options?: TimerOptions): Promise; + /** + * ```js + * import { + * setImmediate, + * } from 'timers/promises'; + * + * const res = await setImmediate('result'); + * + * console.log(res); // Prints 'result' + * ``` + * @since v15.0.0 + * @param value A value with which the promise is fulfilled. + */ + function setImmediate(value?: T, options?: TimerOptions): Promise; + /** + * Returns an async iterator that generates values in an interval of `delay` ms. + * If `ref` is `true`, you need to call `next()` of async iterator explicitly + * or implicitly to keep the event loop alive. + * + * ```js + * import { + * setInterval, + * } from 'timers/promises'; + * + * const interval = 100; + * for await (const startTime of setInterval(interval, Date.now())) { + * const now = Date.now(); + * console.log(now); + * if ((now - startTime) > 1000) + * break; + * } + * console.log(Date.now()); + * ``` + * @since v15.9.0 + */ + function setInterval(delay?: number, value?: T, options?: TimerOptions): AsyncIterable; + interface Scheduler { + /** + * ```js + * import { scheduler } from 'node:timers/promises'; + * + * await scheduler.wait(1000); // Wait one second before continuing + * ``` + * An experimental API defined by the Scheduling APIs draft specification being developed as a standard Web Platform API. + * Calling timersPromises.scheduler.wait(delay, options) is roughly equivalent to calling timersPromises.setTimeout(delay, undefined, options) except that the ref option is not supported. + * @since v16.14.0 + * @experimental + * @param [delay=1] The number of milliseconds to wait before fulfilling the promise. + */ + wait: (delay?: number, options?: TimerOptions) => Promise; + /** + * An experimental API defined by the Scheduling APIs draft specification being developed as a standard Web Platform API. + * Calling timersPromises.scheduler.yield() is equivalent to calling timersPromises.setImmediate() with no arguments. + * @since v16.14.0 + * @experimental + */ + yield: () => Promise; + } + const scheduler: Scheduler; +} +declare module "node:timers/promises" { + export * from "timers/promises"; +} diff --git a/node_modules/@types/node/ts4.8/tls.d.ts b/node_modules/@types/node/ts4.8/tls.d.ts new file mode 100644 index 00000000..141af8e1 --- /dev/null +++ b/node_modules/@types/node/ts4.8/tls.d.ts @@ -0,0 +1,1210 @@ +/** + * The `node:tls` module provides an implementation of the Transport Layer Security + * (TLS) and Secure Socket Layer (SSL) protocols that is built on top of OpenSSL. + * The module can be accessed using: + * + * ```js + * const tls = require('node:tls'); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/tls.js) + */ +declare module "tls" { + import { X509Certificate } from "node:crypto"; + import * as net from "node:net"; + import * as stream from "stream"; + const CLIENT_RENEG_LIMIT: number; + const CLIENT_RENEG_WINDOW: number; + interface Certificate { + /** + * Country code. + */ + C: string; + /** + * Street. + */ + ST: string; + /** + * Locality. + */ + L: string; + /** + * Organization. + */ + O: string; + /** + * Organizational unit. + */ + OU: string; + /** + * Common name. + */ + CN: string; + } + interface PeerCertificate { + /** + * `true` if a Certificate Authority (CA), `false` otherwise. + * @since v18.13.0 + */ + ca: boolean; + /** + * The DER encoded X.509 certificate data. + */ + raw: Buffer; + /** + * The certificate subject. + */ + subject: Certificate; + /** + * The certificate issuer, described in the same terms as the `subject`. + */ + issuer: Certificate; + /** + * The date-time the certificate is valid from. + */ + valid_from: string; + /** + * The date-time the certificate is valid to. + */ + valid_to: string; + /** + * The certificate serial number, as a hex string. + */ + serialNumber: string; + /** + * The SHA-1 digest of the DER encoded certificate. + * It is returned as a `:` separated hexadecimal string. + */ + fingerprint: string; + /** + * The SHA-256 digest of the DER encoded certificate. + * It is returned as a `:` separated hexadecimal string. + */ + fingerprint256: string; + /** + * The SHA-512 digest of the DER encoded certificate. + * It is returned as a `:` separated hexadecimal string. + */ + fingerprint512: string; + /** + * The extended key usage, a set of OIDs. + */ + ext_key_usage?: string[]; + /** + * A string containing concatenated names for the subject, + * an alternative to the `subject` names. + */ + subjectaltname?: string; + /** + * An array describing the AuthorityInfoAccess, used with OCSP. + */ + infoAccess?: NodeJS.Dict; + /** + * For RSA keys: The RSA bit size. + * + * For EC keys: The key size in bits. + */ + bits?: number; + /** + * The RSA exponent, as a string in hexadecimal number notation. + */ + exponent?: string; + /** + * The RSA modulus, as a hexadecimal string. + */ + modulus?: string; + /** + * The public key. + */ + pubkey?: Buffer; + /** + * The ASN.1 name of the OID of the elliptic curve. + * Well-known curves are identified by an OID. + * While it is unusual, it is possible that the curve + * is identified by its mathematical properties, + * in which case it will not have an OID. + */ + asn1Curve?: string; + /** + * The NIST name for the elliptic curve,if it has one + * (not all well-known curves have been assigned names by NIST). + */ + nistCurve?: string; + } + interface DetailedPeerCertificate extends PeerCertificate { + /** + * The issuer certificate object. + * For self-signed certificates, this may be a circular reference. + */ + issuerCertificate: DetailedPeerCertificate; + } + interface CipherNameAndProtocol { + /** + * The cipher name. + */ + name: string; + /** + * SSL/TLS protocol version. + */ + version: string; + /** + * IETF name for the cipher suite. + */ + standardName: string; + } + interface EphemeralKeyInfo { + /** + * The supported types are 'DH' and 'ECDH'. + */ + type: string; + /** + * The name property is available only when type is 'ECDH'. + */ + name?: string | undefined; + /** + * The size of parameter of an ephemeral key exchange. + */ + size: number; + } + interface KeyObject { + /** + * Private keys in PEM format. + */ + pem: string | Buffer; + /** + * Optional passphrase. + */ + passphrase?: string | undefined; + } + interface PxfObject { + /** + * PFX or PKCS12 encoded private key and certificate chain. + */ + buf: string | Buffer; + /** + * Optional passphrase. + */ + passphrase?: string | undefined; + } + interface TLSSocketOptions extends SecureContextOptions, CommonConnectionOptions { + /** + * If true the TLS socket will be instantiated in server-mode. + * Defaults to false. + */ + isServer?: boolean | undefined; + /** + * An optional net.Server instance. + */ + server?: net.Server | undefined; + /** + * An optional Buffer instance containing a TLS session. + */ + session?: Buffer | undefined; + /** + * If true, specifies that the OCSP status request extension will be + * added to the client hello and an 'OCSPResponse' event will be + * emitted on the socket before establishing a secure communication + */ + requestOCSP?: boolean | undefined; + } + /** + * Performs transparent encryption of written data and all required TLS + * negotiation. + * + * Instances of `tls.TLSSocket` implement the duplex `Stream` interface. + * + * Methods that return TLS connection metadata (e.g.{@link TLSSocket.getPeerCertificate}) will only return data while the + * connection is open. + * @since v0.11.4 + */ + class TLSSocket extends net.Socket { + /** + * Construct a new tls.TLSSocket object from an existing TCP socket. + */ + constructor(socket: net.Socket, options?: TLSSocketOptions); + /** + * This property is `true` if the peer certificate was signed by one of the CAs + * specified when creating the `tls.TLSSocket` instance, otherwise `false`. + * @since v0.11.4 + */ + authorized: boolean; + /** + * Returns the reason why the peer's certificate was not been verified. This + * property is set only when `tlsSocket.authorized === false`. + * @since v0.11.4 + */ + authorizationError: Error; + /** + * Always returns `true`. This may be used to distinguish TLS sockets from regular`net.Socket` instances. + * @since v0.11.4 + */ + encrypted: true; + /** + * String containing the selected ALPN protocol. + * Before a handshake has completed, this value is always null. + * When a handshake is completed but not ALPN protocol was selected, tlsSocket.alpnProtocol equals false. + */ + alpnProtocol: string | false | null; + /** + * Returns an object representing the local certificate. The returned object has + * some properties corresponding to the fields of the certificate. + * + * See {@link TLSSocket.getPeerCertificate} for an example of the certificate + * structure. + * + * If there is no local certificate, an empty object will be returned. If the + * socket has been destroyed, `null` will be returned. + * @since v11.2.0 + */ + getCertificate(): PeerCertificate | object | null; + /** + * Returns an object containing information on the negotiated cipher suite. + * + * For example, a TLSv1.2 protocol with AES256-SHA cipher: + * + * ```json + * { + * "name": "AES256-SHA", + * "standardName": "TLS_RSA_WITH_AES_256_CBC_SHA", + * "version": "SSLv3" + * } + * ``` + * + * See [SSL\_CIPHER\_get\_name](https://www.openssl.org/docs/man1.1.1/man3/SSL_CIPHER_get_name.html) for more information. + * @since v0.11.4 + */ + getCipher(): CipherNameAndProtocol; + /** + * Returns an object representing the type, name, and size of parameter of + * an ephemeral key exchange in `perfect forward secrecy` on a client + * connection. It returns an empty object when the key exchange is not + * ephemeral. As this is only supported on a client socket; `null` is returned + * if called on a server socket. The supported types are `'DH'` and `'ECDH'`. The`name` property is available only when type is `'ECDH'`. + * + * For example: `{ type: 'ECDH', name: 'prime256v1', size: 256 }`. + * @since v5.0.0 + */ + getEphemeralKeyInfo(): EphemeralKeyInfo | object | null; + /** + * As the `Finished` messages are message digests of the complete handshake + * (with a total of 192 bits for TLS 1.0 and more for SSL 3.0), they can + * be used for external authentication procedures when the authentication + * provided by SSL/TLS is not desired or is not enough. + * + * Corresponds to the `SSL_get_finished` routine in OpenSSL and may be used + * to implement the `tls-unique` channel binding from [RFC 5929](https://tools.ietf.org/html/rfc5929). + * @since v9.9.0 + * @return The latest `Finished` message that has been sent to the socket as part of a SSL/TLS handshake, or `undefined` if no `Finished` message has been sent yet. + */ + getFinished(): Buffer | undefined; + /** + * Returns an object representing the peer's certificate. If the peer does not + * provide a certificate, an empty object will be returned. If the socket has been + * destroyed, `null` will be returned. + * + * If the full certificate chain was requested, each certificate will include an`issuerCertificate` property containing an object representing its issuer's + * certificate. + * @since v0.11.4 + * @param detailed Include the full certificate chain if `true`, otherwise include just the peer's certificate. + * @return A certificate object. + */ + getPeerCertificate(detailed: true): DetailedPeerCertificate; + getPeerCertificate(detailed?: false): PeerCertificate; + getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate; + /** + * As the `Finished` messages are message digests of the complete handshake + * (with a total of 192 bits for TLS 1.0 and more for SSL 3.0), they can + * be used for external authentication procedures when the authentication + * provided by SSL/TLS is not desired or is not enough. + * + * Corresponds to the `SSL_get_peer_finished` routine in OpenSSL and may be used + * to implement the `tls-unique` channel binding from [RFC 5929](https://tools.ietf.org/html/rfc5929). + * @since v9.9.0 + * @return The latest `Finished` message that is expected or has actually been received from the socket as part of a SSL/TLS handshake, or `undefined` if there is no `Finished` message so + * far. + */ + getPeerFinished(): Buffer | undefined; + /** + * Returns a string containing the negotiated SSL/TLS protocol version of the + * current connection. The value `'unknown'` will be returned for connected + * sockets that have not completed the handshaking process. The value `null` will + * be returned for server sockets or disconnected client sockets. + * + * Protocol versions are: + * + * * `'SSLv3'` + * * `'TLSv1'` + * * `'TLSv1.1'` + * * `'TLSv1.2'` + * * `'TLSv1.3'` + * + * See the OpenSSL [`SSL_get_version`](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html) documentation for more information. + * @since v5.7.0 + */ + getProtocol(): string | null; + /** + * Returns the TLS session data or `undefined` if no session was + * negotiated. On the client, the data can be provided to the `session` option of {@link connect} to resume the connection. On the server, it may be useful + * for debugging. + * + * See `Session Resumption` for more information. + * + * Note: `getSession()` works only for TLSv1.2 and below. For TLSv1.3, applications + * must use the `'session'` event (it also works for TLSv1.2 and below). + * @since v0.11.4 + */ + getSession(): Buffer | undefined; + /** + * See [SSL\_get\_shared\_sigalgs](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_shared_sigalgs.html) for more information. + * @since v12.11.0 + * @return List of signature algorithms shared between the server and the client in the order of decreasing preference. + */ + getSharedSigalgs(): string[]; + /** + * For a client, returns the TLS session ticket if one is available, or`undefined`. For a server, always returns `undefined`. + * + * It may be useful for debugging. + * + * See `Session Resumption` for more information. + * @since v0.11.4 + */ + getTLSTicket(): Buffer | undefined; + /** + * See `Session Resumption` for more information. + * @since v0.5.6 + * @return `true` if the session was reused, `false` otherwise. + */ + isSessionReused(): boolean; + /** + * The `tlsSocket.renegotiate()` method initiates a TLS renegotiation process. + * Upon completion, the `callback` function will be passed a single argument + * that is either an `Error` (if the request failed) or `null`. + * + * This method can be used to request a peer's certificate after the secure + * connection has been established. + * + * When running as the server, the socket will be destroyed with an error after`handshakeTimeout` timeout. + * + * For TLSv1.3, renegotiation cannot be initiated, it is not supported by the + * protocol. + * @since v0.11.8 + * @param callback If `renegotiate()` returned `true`, callback is attached once to the `'secure'` event. If `renegotiate()` returned `false`, `callback` will be called in the next tick with + * an error, unless the `tlsSocket` has been destroyed, in which case `callback` will not be called at all. + * @return `true` if renegotiation was initiated, `false` otherwise. + */ + renegotiate( + options: { + rejectUnauthorized?: boolean | undefined; + requestCert?: boolean | undefined; + }, + callback: (err: Error | null) => void, + ): undefined | boolean; + /** + * The `tlsSocket.setMaxSendFragment()` method sets the maximum TLS fragment size. + * Returns `true` if setting the limit succeeded; `false` otherwise. + * + * Smaller fragment sizes decrease the buffering latency on the client: larger + * fragments are buffered by the TLS layer until the entire fragment is received + * and its integrity is verified; large fragments can span multiple roundtrips + * and their processing can be delayed due to packet loss or reordering. However, + * smaller fragments add extra TLS framing bytes and CPU overhead, which may + * decrease overall server throughput. + * @since v0.11.11 + * @param [size=16384] The maximum TLS fragment size. The maximum value is `16384`. + */ + setMaxSendFragment(size: number): boolean; + /** + * Disables TLS renegotiation for this `TLSSocket` instance. Once called, attempts + * to renegotiate will trigger an `'error'` event on the `TLSSocket`. + * @since v8.4.0 + */ + disableRenegotiation(): void; + /** + * When enabled, TLS packet trace information is written to `stderr`. This can be + * used to debug TLS connection problems. + * + * The format of the output is identical to the output of`openssl s_client -trace` or `openssl s_server -trace`. While it is produced by + * OpenSSL's `SSL_trace()` function, the format is undocumented, can change + * without notice, and should not be relied on. + * @since v12.2.0 + */ + enableTrace(): void; + /** + * Returns the peer certificate as an `X509Certificate` object. + * + * If there is no peer certificate, or the socket has been destroyed,`undefined` will be returned. + * @since v15.9.0 + */ + getPeerX509Certificate(): X509Certificate | undefined; + /** + * Returns the local certificate as an `X509Certificate` object. + * + * If there is no local certificate, or the socket has been destroyed,`undefined` will be returned. + * @since v15.9.0 + */ + getX509Certificate(): X509Certificate | undefined; + /** + * Keying material is used for validations to prevent different kind of attacks in + * network protocols, for example in the specifications of IEEE 802.1X. + * + * Example + * + * ```js + * const keyingMaterial = tlsSocket.exportKeyingMaterial( + * 128, + * 'client finished'); + * + * /* + * Example return value of keyingMaterial: + * + * + * ``` + * + * See the OpenSSL [`SSL_export_keying_material`](https://www.openssl.org/docs/man1.1.1/man3/SSL_export_keying_material.html) documentation for more + * information. + * @since v13.10.0, v12.17.0 + * @param length number of bytes to retrieve from keying material + * @param label an application specific label, typically this will be a value from the [IANA Exporter Label + * Registry](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#exporter-labels). + * @param context Optionally provide a context. + * @return requested bytes of the keying material + */ + exportKeyingMaterial(length: number, label: string, context: Buffer): Buffer; + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + addListener(event: "secureConnect", listener: () => void): this; + addListener(event: "session", listener: (session: Buffer) => void): this; + addListener(event: "keylog", listener: (line: Buffer) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "OCSPResponse", response: Buffer): boolean; + emit(event: "secureConnect"): boolean; + emit(event: "session", session: Buffer): boolean; + emit(event: "keylog", line: Buffer): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "OCSPResponse", listener: (response: Buffer) => void): this; + on(event: "secureConnect", listener: () => void): this; + on(event: "session", listener: (session: Buffer) => void): this; + on(event: "keylog", listener: (line: Buffer) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "OCSPResponse", listener: (response: Buffer) => void): this; + once(event: "secureConnect", listener: () => void): this; + once(event: "session", listener: (session: Buffer) => void): this; + once(event: "keylog", listener: (line: Buffer) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + prependListener(event: "secureConnect", listener: () => void): this; + prependListener(event: "session", listener: (session: Buffer) => void): this; + prependListener(event: "keylog", listener: (line: Buffer) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "OCSPResponse", listener: (response: Buffer) => void): this; + prependOnceListener(event: "secureConnect", listener: () => void): this; + prependOnceListener(event: "session", listener: (session: Buffer) => void): this; + prependOnceListener(event: "keylog", listener: (line: Buffer) => void): this; + } + interface CommonConnectionOptions { + /** + * An optional TLS context object from tls.createSecureContext() + */ + secureContext?: SecureContext | undefined; + /** + * When enabled, TLS packet trace information is written to `stderr`. This can be + * used to debug TLS connection problems. + * @default false + */ + enableTrace?: boolean | undefined; + /** + * If true the server will request a certificate from clients that + * connect and attempt to verify that certificate. Defaults to + * false. + */ + requestCert?: boolean | undefined; + /** + * An array of strings or a Buffer naming possible ALPN protocols. + * (Protocols should be ordered by their priority.) + */ + ALPNProtocols?: string[] | Uint8Array[] | Uint8Array | undefined; + /** + * SNICallback(servername, cb) A function that will be + * called if the client supports SNI TLS extension. Two arguments + * will be passed when called: servername and cb. SNICallback should + * invoke cb(null, ctx), where ctx is a SecureContext instance. + * (tls.createSecureContext(...) can be used to get a proper + * SecureContext.) If SNICallback wasn't provided the default callback + * with high-level API will be used (see below). + */ + SNICallback?: ((servername: string, cb: (err: Error | null, ctx?: SecureContext) => void) => void) | undefined; + /** + * If true the server will reject any connection which is not + * authorized with the list of supplied CAs. This option only has an + * effect if requestCert is true. + * @default true + */ + rejectUnauthorized?: boolean | undefined; + } + interface TlsOptions extends SecureContextOptions, CommonConnectionOptions, net.ServerOpts { + /** + * Abort the connection if the SSL/TLS handshake does not finish in the + * specified number of milliseconds. A 'tlsClientError' is emitted on + * the tls.Server object whenever a handshake times out. Default: + * 120000 (120 seconds). + */ + handshakeTimeout?: number | undefined; + /** + * The number of seconds after which a TLS session created by the + * server will no longer be resumable. See Session Resumption for more + * information. Default: 300. + */ + sessionTimeout?: number | undefined; + /** + * 48-bytes of cryptographically strong pseudo-random data. + */ + ticketKeys?: Buffer | undefined; + /** + * @param socket + * @param identity identity parameter sent from the client. + * @return pre-shared key that must either be + * a buffer or `null` to stop the negotiation process. Returned PSK must be + * compatible with the selected cipher's digest. + * + * When negotiating TLS-PSK (pre-shared keys), this function is called + * with the identity provided by the client. + * If the return value is `null` the negotiation process will stop and an + * "unknown_psk_identity" alert message will be sent to the other party. + * If the server wishes to hide the fact that the PSK identity was not known, + * the callback must provide some random data as `psk` to make the connection + * fail with "decrypt_error" before negotiation is finished. + * PSK ciphers are disabled by default, and using TLS-PSK thus + * requires explicitly specifying a cipher suite with the `ciphers` option. + * More information can be found in the RFC 4279. + */ + pskCallback?(socket: TLSSocket, identity: string): DataView | NodeJS.TypedArray | null; + /** + * hint to send to a client to help + * with selecting the identity during TLS-PSK negotiation. Will be ignored + * in TLS 1.3. Upon failing to set pskIdentityHint `tlsClientError` will be + * emitted with `ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED` code. + */ + pskIdentityHint?: string | undefined; + } + interface PSKCallbackNegotation { + psk: DataView | NodeJS.TypedArray; + identity: string; + } + interface ConnectionOptions extends SecureContextOptions, CommonConnectionOptions { + host?: string | undefined; + port?: number | undefined; + path?: string | undefined; // Creates unix socket connection to path. If this option is specified, `host` and `port` are ignored. + socket?: stream.Duplex | undefined; // Establish secure connection on a given socket rather than creating a new socket + checkServerIdentity?: typeof checkServerIdentity | undefined; + servername?: string | undefined; // SNI TLS Extension + session?: Buffer | undefined; + minDHSize?: number | undefined; + lookup?: net.LookupFunction | undefined; + timeout?: number | undefined; + /** + * When negotiating TLS-PSK (pre-shared keys), this function is called + * with optional identity `hint` provided by the server or `null` + * in case of TLS 1.3 where `hint` was removed. + * It will be necessary to provide a custom `tls.checkServerIdentity()` + * for the connection as the default one will try to check hostname/IP + * of the server against the certificate but that's not applicable for PSK + * because there won't be a certificate present. + * More information can be found in the RFC 4279. + * + * @param hint message sent from the server to help client + * decide which identity to use during negotiation. + * Always `null` if TLS 1.3 is used. + * @returns Return `null` to stop the negotiation process. `psk` must be + * compatible with the selected cipher's digest. + * `identity` must use UTF-8 encoding. + */ + pskCallback?(hint: string | null): PSKCallbackNegotation | null; + } + /** + * Accepts encrypted connections using TLS or SSL. + * @since v0.3.2 + */ + class Server extends net.Server { + constructor(secureConnectionListener?: (socket: TLSSocket) => void); + constructor(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void); + /** + * The `server.addContext()` method adds a secure context that will be used if + * the client request's SNI name matches the supplied `hostname` (or wildcard). + * + * When there are multiple matching contexts, the most recently added one is + * used. + * @since v0.5.3 + * @param hostname A SNI host name or wildcard (e.g. `'*'`) + * @param context An object containing any of the possible properties from the {@link createSecureContext} `options` arguments (e.g. `key`, `cert`, `ca`, etc), or a TLS context object created + * with {@link createSecureContext} itself. + */ + addContext(hostname: string, context: SecureContextOptions): void; + /** + * Returns the session ticket keys. + * + * See `Session Resumption` for more information. + * @since v3.0.0 + * @return A 48-byte buffer containing the session ticket keys. + */ + getTicketKeys(): Buffer; + /** + * The `server.setSecureContext()` method replaces the secure context of an + * existing server. Existing connections to the server are not interrupted. + * @since v11.0.0 + * @param options An object containing any of the possible properties from the {@link createSecureContext} `options` arguments (e.g. `key`, `cert`, `ca`, etc). + */ + setSecureContext(options: SecureContextOptions): void; + /** + * Sets the session ticket keys. + * + * Changes to the ticket keys are effective only for future server connections. + * Existing or currently pending server connections will use the previous keys. + * + * See `Session Resumption` for more information. + * @since v3.0.0 + * @param keys A 48-byte buffer containing the session ticket keys. + */ + setTicketKeys(keys: Buffer): void; + /** + * events.EventEmitter + * 1. tlsClientError + * 2. newSession + * 3. OCSPRequest + * 4. resumeSession + * 5. secureConnection + * 6. keylog + */ + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + addListener( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void, + ): this; + addListener( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + addListener( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, + ): this; + addListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + addListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "tlsClientError", err: Error, tlsSocket: TLSSocket): boolean; + emit(event: "newSession", sessionId: Buffer, sessionData: Buffer, callback: () => void): boolean; + emit( + event: "OCSPRequest", + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ): boolean; + emit( + event: "resumeSession", + sessionId: Buffer, + callback: (err: Error | null, sessionData: Buffer | null) => void, + ): boolean; + emit(event: "secureConnection", tlsSocket: TLSSocket): boolean; + emit(event: "keylog", line: Buffer, tlsSocket: TLSSocket): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + on(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void): this; + on( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + on( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, + ): this; + on(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + on(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + once( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void, + ): this; + once( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + once( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, + ): this; + once(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + once(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + prependListener( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void, + ): this; + prependListener( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + prependListener( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, + ): this; + prependListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + prependListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this; + prependOnceListener( + event: "newSession", + listener: (sessionId: Buffer, sessionData: Buffer, callback: () => void) => void, + ): this; + prependOnceListener( + event: "OCSPRequest", + listener: ( + certificate: Buffer, + issuer: Buffer, + callback: (err: Error | null, resp: Buffer) => void, + ) => void, + ): this; + prependOnceListener( + event: "resumeSession", + listener: (sessionId: Buffer, callback: (err: Error | null, sessionData: Buffer | null) => void) => void, + ): this; + prependOnceListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this; + prependOnceListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this; + } + /** + * @deprecated since v0.11.3 Use `tls.TLSSocket` instead. + */ + interface SecurePair { + encrypted: TLSSocket; + cleartext: TLSSocket; + } + type SecureVersion = "TLSv1.3" | "TLSv1.2" | "TLSv1.1" | "TLSv1"; + interface SecureContextOptions { + /** + * If set, this will be called when a client opens a connection using the ALPN extension. + * One argument will be passed to the callback: an object containing `servername` and `protocols` fields, + * respectively containing the server name from the SNI extension (if any) and an array of + * ALPN protocol name strings. The callback must return either one of the strings listed in `protocols`, + * which will be returned to the client as the selected ALPN protocol, or `undefined`, + * to reject the connection with a fatal alert. If a string is returned that does not match one of + * the client's ALPN protocols, an error will be thrown. + * This option cannot be used with the `ALPNProtocols` option, and setting both options will throw an error. + */ + ALPNCallback?: ((arg: { servername: string; protocols: string[] }) => string | undefined) | undefined; + /** + * Optionally override the trusted CA certificates. Default is to trust + * the well-known CAs curated by Mozilla. Mozilla's CAs are completely + * replaced when CAs are explicitly specified using this option. + */ + ca?: string | Buffer | Array | undefined; + /** + * Cert chains in PEM format. One cert chain should be provided per + * private key. Each cert chain should consist of the PEM formatted + * certificate for a provided private key, followed by the PEM + * formatted intermediate certificates (if any), in order, and not + * including the root CA (the root CA must be pre-known to the peer, + * see ca). When providing multiple cert chains, they do not have to + * be in the same order as their private keys in key. If the + * intermediate certificates are not provided, the peer will not be + * able to validate the certificate, and the handshake will fail. + */ + cert?: string | Buffer | Array | undefined; + /** + * Colon-separated list of supported signature algorithms. The list + * can contain digest algorithms (SHA256, MD5 etc.), public key + * algorithms (RSA-PSS, ECDSA etc.), combination of both (e.g + * 'RSA+SHA384') or TLS v1.3 scheme names (e.g. rsa_pss_pss_sha512). + */ + sigalgs?: string | undefined; + /** + * Cipher suite specification, replacing the default. For more + * information, see modifying the default cipher suite. Permitted + * ciphers can be obtained via tls.getCiphers(). Cipher names must be + * uppercased in order for OpenSSL to accept them. + */ + ciphers?: string | undefined; + /** + * Name of an OpenSSL engine which can provide the client certificate. + */ + clientCertEngine?: string | undefined; + /** + * PEM formatted CRLs (Certificate Revocation Lists). + */ + crl?: string | Buffer | Array | undefined; + /** + * `'auto'` or custom Diffie-Hellman parameters, required for non-ECDHE perfect forward secrecy. + * If omitted or invalid, the parameters are silently discarded and DHE ciphers will not be available. + * ECDHE-based perfect forward secrecy will still be available. + */ + dhparam?: string | Buffer | undefined; + /** + * A string describing a named curve or a colon separated list of curve + * NIDs or names, for example P-521:P-384:P-256, to use for ECDH key + * agreement. Set to auto to select the curve automatically. Use + * crypto.getCurves() to obtain a list of available curve names. On + * recent releases, openssl ecparam -list_curves will also display the + * name and description of each available elliptic curve. Default: + * tls.DEFAULT_ECDH_CURVE. + */ + ecdhCurve?: string | undefined; + /** + * Attempt to use the server's cipher suite preferences instead of the + * client's. When true, causes SSL_OP_CIPHER_SERVER_PREFERENCE to be + * set in secureOptions + */ + honorCipherOrder?: boolean | undefined; + /** + * Private keys in PEM format. PEM allows the option of private keys + * being encrypted. Encrypted keys will be decrypted with + * options.passphrase. Multiple keys using different algorithms can be + * provided either as an array of unencrypted key strings or buffers, + * or an array of objects in the form {pem: [, + * passphrase: ]}. The object form can only occur in an array. + * object.passphrase is optional. Encrypted keys will be decrypted with + * object.passphrase if provided, or options.passphrase if it is not. + */ + key?: string | Buffer | Array | undefined; + /** + * Name of an OpenSSL engine to get private key from. Should be used + * together with privateKeyIdentifier. + */ + privateKeyEngine?: string | undefined; + /** + * Identifier of a private key managed by an OpenSSL engine. Should be + * used together with privateKeyEngine. Should not be set together with + * key, because both options define a private key in different ways. + */ + privateKeyIdentifier?: string | undefined; + /** + * Optionally set the maximum TLS version to allow. One + * of `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the + * `secureProtocol` option, use one or the other. + * **Default:** `'TLSv1.3'`, unless changed using CLI options. Using + * `--tls-max-v1.2` sets the default to `'TLSv1.2'`. Using `--tls-max-v1.3` sets the default to + * `'TLSv1.3'`. If multiple of the options are provided, the highest maximum is used. + */ + maxVersion?: SecureVersion | undefined; + /** + * Optionally set the minimum TLS version to allow. One + * of `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the + * `secureProtocol` option, use one or the other. It is not recommended to use + * less than TLSv1.2, but it may be required for interoperability. + * **Default:** `'TLSv1.2'`, unless changed using CLI options. Using + * `--tls-v1.0` sets the default to `'TLSv1'`. Using `--tls-v1.1` sets the default to + * `'TLSv1.1'`. Using `--tls-min-v1.3` sets the default to + * 'TLSv1.3'. If multiple of the options are provided, the lowest minimum is used. + */ + minVersion?: SecureVersion | undefined; + /** + * Shared passphrase used for a single private key and/or a PFX. + */ + passphrase?: string | undefined; + /** + * PFX or PKCS12 encoded private key and certificate chain. pfx is an + * alternative to providing key and cert individually. PFX is usually + * encrypted, if it is, passphrase will be used to decrypt it. Multiple + * PFX can be provided either as an array of unencrypted PFX buffers, + * or an array of objects in the form {buf: [, + * passphrase: ]}. The object form can only occur in an array. + * object.passphrase is optional. Encrypted PFX will be decrypted with + * object.passphrase if provided, or options.passphrase if it is not. + */ + pfx?: string | Buffer | Array | undefined; + /** + * Optionally affect the OpenSSL protocol behavior, which is not + * usually necessary. This should be used carefully if at all! Value is + * a numeric bitmask of the SSL_OP_* options from OpenSSL Options + */ + secureOptions?: number | undefined; // Value is a numeric bitmask of the `SSL_OP_*` options + /** + * Legacy mechanism to select the TLS protocol version to use, it does + * not support independent control of the minimum and maximum version, + * and does not support limiting the protocol to TLSv1.3. Use + * minVersion and maxVersion instead. The possible values are listed as + * SSL_METHODS, use the function names as strings. For example, use + * 'TLSv1_1_method' to force TLS version 1.1, or 'TLS_method' to allow + * any TLS protocol version up to TLSv1.3. It is not recommended to use + * TLS versions less than 1.2, but it may be required for + * interoperability. Default: none, see minVersion. + */ + secureProtocol?: string | undefined; + /** + * Opaque identifier used by servers to ensure session state is not + * shared between applications. Unused by clients. + */ + sessionIdContext?: string | undefined; + /** + * 48-bytes of cryptographically strong pseudo-random data. + * See Session Resumption for more information. + */ + ticketKeys?: Buffer | undefined; + /** + * The number of seconds after which a TLS session created by the + * server will no longer be resumable. See Session Resumption for more + * information. Default: 300. + */ + sessionTimeout?: number | undefined; + } + interface SecureContext { + context: any; + } + /** + * Verifies the certificate `cert` is issued to `hostname`. + * + * Returns [Error](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) object, populating it with `reason`, `host`, and `cert` on + * failure. On success, returns [undefined](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Undefined_type). + * + * This function is intended to be used in combination with the`checkServerIdentity` option that can be passed to {@link connect} and as + * such operates on a `certificate object`. For other purposes, consider using `x509.checkHost()` instead. + * + * This function can be overwritten by providing an alternative function as the`options.checkServerIdentity` option that is passed to `tls.connect()`. The + * overwriting function can call `tls.checkServerIdentity()` of course, to augment + * the checks done with additional verification. + * + * This function is only called if the certificate passed all other checks, such as + * being issued by trusted CA (`options.ca`). + * + * Earlier versions of Node.js incorrectly accepted certificates for a given`hostname` if a matching `uniformResourceIdentifier` subject alternative name + * was present (see [CVE-2021-44531](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44531)). Applications that wish to accept`uniformResourceIdentifier` subject alternative names can use + * a custom`options.checkServerIdentity` function that implements the desired behavior. + * @since v0.8.4 + * @param hostname The host name or IP address to verify the certificate against. + * @param cert A `certificate object` representing the peer's certificate. + */ + function checkServerIdentity(hostname: string, cert: PeerCertificate): Error | undefined; + /** + * Creates a new {@link Server}. The `secureConnectionListener`, if provided, is + * automatically set as a listener for the `'secureConnection'` event. + * + * The `ticketKeys` options is automatically shared between `node:cluster` module + * workers. + * + * The following illustrates a simple echo server: + * + * ```js + * const tls = require('node:tls'); + * const fs = require('node:fs'); + * + * const options = { + * key: fs.readFileSync('server-key.pem'), + * cert: fs.readFileSync('server-cert.pem'), + * + * // This is necessary only if using client certificate authentication. + * requestCert: true, + * + * // This is necessary only if the client uses a self-signed certificate. + * ca: [ fs.readFileSync('client-cert.pem') ], + * }; + * + * const server = tls.createServer(options, (socket) => { + * console.log('server connected', + * socket.authorized ? 'authorized' : 'unauthorized'); + * socket.write('welcome!\n'); + * socket.setEncoding('utf8'); + * socket.pipe(socket); + * }); + * server.listen(8000, () => { + * console.log('server bound'); + * }); + * ``` + * + * The server can be tested by connecting to it using the example client from {@link connect}. + * @since v0.3.2 + */ + function createServer(secureConnectionListener?: (socket: TLSSocket) => void): Server; + function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server; + /** + * The `callback` function, if specified, will be added as a listener for the `'secureConnect'` event. + * + * `tls.connect()` returns a {@link TLSSocket} object. + * + * Unlike the `https` API, `tls.connect()` does not enable the + * SNI (Server Name Indication) extension by default, which may cause some + * servers to return an incorrect certificate or reject the connection + * altogether. To enable SNI, set the `servername` option in addition + * to `host`. + * + * The following illustrates a client for the echo server example from {@link createServer}: + * + * ```js + * // Assumes an echo server that is listening on port 8000. + * const tls = require('node:tls'); + * const fs = require('node:fs'); + * + * const options = { + * // Necessary only if the server requires client certificate authentication. + * key: fs.readFileSync('client-key.pem'), + * cert: fs.readFileSync('client-cert.pem'), + * + * // Necessary only if the server uses a self-signed certificate. + * ca: [ fs.readFileSync('server-cert.pem') ], + * + * // Necessary only if the server's cert isn't for "localhost". + * checkServerIdentity: () => { return null; }, + * }; + * + * const socket = tls.connect(8000, options, () => { + * console.log('client connected', + * socket.authorized ? 'authorized' : 'unauthorized'); + * process.stdin.pipe(socket); + * process.stdin.resume(); + * }); + * socket.setEncoding('utf8'); + * socket.on('data', (data) => { + * console.log(data); + * }); + * socket.on('end', () => { + * console.log('server ends connection'); + * }); + * ``` + * @since v0.11.3 + */ + function connect(options: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; + function connect( + port: number, + host?: string, + options?: ConnectionOptions, + secureConnectListener?: () => void, + ): TLSSocket; + function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; + /** + * Creates a new secure pair object with two streams, one of which reads and writes + * the encrypted data and the other of which reads and writes the cleartext data. + * Generally, the encrypted stream is piped to/from an incoming encrypted data + * stream and the cleartext one is used as a replacement for the initial encrypted + * stream. + * + * `tls.createSecurePair()` returns a `tls.SecurePair` object with `cleartext` and`encrypted` stream properties. + * + * Using `cleartext` has the same API as {@link TLSSocket}. + * + * The `tls.createSecurePair()` method is now deprecated in favor of`tls.TLSSocket()`. For example, the code: + * + * ```js + * pair = tls.createSecurePair(// ... ); + * pair.encrypted.pipe(socket); + * socket.pipe(pair.encrypted); + * ``` + * + * can be replaced by: + * + * ```js + * secureSocket = tls.TLSSocket(socket, options); + * ``` + * + * where `secureSocket` has the same API as `pair.cleartext`. + * @since v0.3.2 + * @deprecated Since v0.11.3 - Use {@link TLSSocket} instead. + * @param context A secure context object as returned by `tls.createSecureContext()` + * @param isServer `true` to specify that this TLS connection should be opened as a server. + * @param requestCert `true` to specify whether a server should request a certificate from a connecting client. Only applies when `isServer` is `true`. + * @param rejectUnauthorized If not `false` a server automatically reject clients with invalid certificates. Only applies when `isServer` is `true`. + */ + function createSecurePair( + context?: SecureContext, + isServer?: boolean, + requestCert?: boolean, + rejectUnauthorized?: boolean, + ): SecurePair; + /** + * {@link createServer} sets the default value of the `honorCipherOrder` option + * to `true`, other APIs that create secure contexts leave it unset. + * + * {@link createServer} uses a 128 bit truncated SHA1 hash value generated + * from `process.argv` as the default value of the `sessionIdContext` option, other + * APIs that create secure contexts have no default value. + * + * The `tls.createSecureContext()` method creates a `SecureContext` object. It is + * usable as an argument to several `tls` APIs, such as `server.addContext()`, + * but has no public methods. The {@link Server} constructor and the {@link createServer} method do not support the `secureContext` option. + * + * A key is _required_ for ciphers that use certificates. Either `key` or`pfx` can be used to provide it. + * + * If the `ca` option is not given, then Node.js will default to using [Mozilla's publicly trusted list of + * CAs](https://hg.mozilla.org/mozilla-central/raw-file/tip/security/nss/lib/ckfw/builtins/certdata.txt). + * + * Custom DHE parameters are discouraged in favor of the new `dhparam: 'auto'`option. When set to `'auto'`, well-known DHE parameters of sufficient strength + * will be selected automatically. Otherwise, if necessary, `openssl dhparam` can + * be used to create custom parameters. The key length must be greater than or + * equal to 1024 bits or else an error will be thrown. Although 1024 bits is + * permissible, use 2048 bits or larger for stronger security. + * @since v0.11.13 + */ + function createSecureContext(options?: SecureContextOptions): SecureContext; + /** + * Returns an array with the names of the supported TLS ciphers. The names are + * lower-case for historical reasons, but must be uppercased to be used in + * the `ciphers` option of {@link createSecureContext}. + * + * Not all supported ciphers are enabled by default. See `Modifying the default TLS cipher suite`. + * + * Cipher names that start with `'tls_'` are for TLSv1.3, all the others are for + * TLSv1.2 and below. + * + * ```js + * console.log(tls.getCiphers()); // ['aes128-gcm-sha256', 'aes128-sha', ...] + * ``` + * @since v0.10.2 + */ + function getCiphers(): string[]; + /** + * The default curve name to use for ECDH key agreement in a tls server. + * The default value is 'auto'. See tls.createSecureContext() for further + * information. + */ + let DEFAULT_ECDH_CURVE: string; + /** + * The default value of the maxVersion option of + * tls.createSecureContext(). It can be assigned any of the supported TLS + * protocol versions, 'TLSv1.3', 'TLSv1.2', 'TLSv1.1', or 'TLSv1'. Default: + * 'TLSv1.3', unless changed using CLI options. Using --tls-max-v1.2 sets + * the default to 'TLSv1.2'. Using --tls-max-v1.3 sets the default to + * 'TLSv1.3'. If multiple of the options are provided, the highest maximum + * is used. + */ + let DEFAULT_MAX_VERSION: SecureVersion; + /** + * The default value of the minVersion option of tls.createSecureContext(). + * It can be assigned any of the supported TLS protocol versions, + * 'TLSv1.3', 'TLSv1.2', 'TLSv1.1', or 'TLSv1'. Default: 'TLSv1.2', unless + * changed using CLI options. Using --tls-min-v1.0 sets the default to + * 'TLSv1'. Using --tls-min-v1.1 sets the default to 'TLSv1.1'. Using + * --tls-min-v1.3 sets the default to 'TLSv1.3'. If multiple of the options + * are provided, the lowest minimum is used. + */ + let DEFAULT_MIN_VERSION: SecureVersion; + /** + * The default value of the ciphers option of tls.createSecureContext(). + * It can be assigned any of the supported OpenSSL ciphers. + * Defaults to the content of crypto.constants.defaultCoreCipherList, unless + * changed using CLI options using --tls-default-ciphers. + */ + let DEFAULT_CIPHERS: string; + /** + * An immutable array of strings representing the root certificates (in PEM + * format) used for verifying peer certificates. This is the default value + * of the ca option to tls.createSecureContext(). + */ + const rootCertificates: ReadonlyArray; +} +declare module "node:tls" { + export * from "tls"; +} diff --git a/node_modules/@types/node/ts4.8/trace_events.d.ts b/node_modules/@types/node/ts4.8/trace_events.d.ts new file mode 100644 index 00000000..33613595 --- /dev/null +++ b/node_modules/@types/node/ts4.8/trace_events.d.ts @@ -0,0 +1,182 @@ +/** + * The `node:trace_events` module provides a mechanism to centralize tracing + * information generated by V8, Node.js core, and userspace code. + * + * Tracing can be enabled with the `--trace-event-categories` command-line flag + * or by using the `node:trace_events` module. The `--trace-event-categories` flag + * accepts a list of comma-separated category names. + * + * The available categories are: + * + * * `node`: An empty placeholder. + * * `node.async_hooks`: Enables capture of detailed `async_hooks` trace data. + * The `async_hooks` events have a unique `asyncId` and a special `triggerId` `triggerAsyncId` property. + * * `node.bootstrap`: Enables capture of Node.js bootstrap milestones. + * * `node.console`: Enables capture of `console.time()` and `console.count()`output. + * * `node.threadpoolwork.sync`: Enables capture of trace data for threadpool + * synchronous operations, such as `blob`, `zlib`, `crypto` and `node_api`. + * * `node.threadpoolwork.async`: Enables capture of trace data for threadpool + * asynchronous operations, such as `blob`, `zlib`, `crypto` and `node_api`. + * * `node.dns.native`: Enables capture of trace data for DNS queries. + * * `node.net.native`: Enables capture of trace data for network. + * * `node.environment`: Enables capture of Node.js Environment milestones. + * * `node.fs.sync`: Enables capture of trace data for file system sync methods. + * * `node.fs_dir.sync`: Enables capture of trace data for file system sync + * directory methods. + * * `node.fs.async`: Enables capture of trace data for file system async methods. + * * `node.fs_dir.async`: Enables capture of trace data for file system async + * directory methods. + * * `node.perf`: Enables capture of `Performance API` measurements. + * * `node.perf.usertiming`: Enables capture of only Performance API User Timing + * measures and marks. + * * `node.perf.timerify`: Enables capture of only Performance API timerify + * measurements. + * * `node.promises.rejections`: Enables capture of trace data tracking the number + * of unhandled Promise rejections and handled-after-rejections. + * * `node.vm.script`: Enables capture of trace data for the `node:vm` module's`runInNewContext()`, `runInContext()`, and `runInThisContext()` methods. + * * `v8`: The `V8` events are GC, compiling, and execution related. + * * `node.http`: Enables capture of trace data for http request / response. + * + * By default the `node`, `node.async_hooks`, and `v8` categories are enabled. + * + * ```bash + * node --trace-event-categories v8,node,node.async_hooks server.js + * ``` + * + * Prior versions of Node.js required the use of the `--trace-events-enabled`flag to enable trace events. This requirement has been removed. However, the`--trace-events-enabled` flag _may_ still be + * used and will enable the`node`, `node.async_hooks`, and `v8` trace event categories by default. + * + * ```bash + * node --trace-events-enabled + * + * # is equivalent to + * + * node --trace-event-categories v8,node,node.async_hooks + * ``` + * + * Alternatively, trace events may be enabled using the `node:trace_events` module: + * + * ```js + * const trace_events = require('node:trace_events'); + * const tracing = trace_events.createTracing({ categories: ['node.perf'] }); + * tracing.enable(); // Enable trace event capture for the 'node.perf' category + * + * // do work + * + * tracing.disable(); // Disable trace event capture for the 'node.perf' category + * ``` + * + * Running Node.js with tracing enabled will produce log files that can be opened + * in the [`chrome://tracing`](https://www.chromium.org/developers/how-tos/trace-event-profiling-tool) tab of Chrome. + * + * The logging file is by default called `node_trace.${rotation}.log`, where`${rotation}` is an incrementing log-rotation id. The filepath pattern can + * be specified with `--trace-event-file-pattern` that accepts a template + * string that supports `${rotation}` and `${pid}`: + * + * ```bash + * node --trace-event-categories v8 --trace-event-file-pattern '${pid}-${rotation}.log' server.js + * ``` + * + * To guarantee that the log file is properly generated after signal events like`SIGINT`, `SIGTERM`, or `SIGBREAK`, make sure to have the appropriate handlers + * in your code, such as: + * + * ```js + * process.on('SIGINT', function onSigint() { + * console.info('Received SIGINT.'); + * process.exit(130); // Or applicable exit code depending on OS and signal + * }); + * ``` + * + * The tracing system uses the same time source + * as the one used by `process.hrtime()`. + * However the trace-event timestamps are expressed in microseconds, + * unlike `process.hrtime()` which returns nanoseconds. + * + * The features from this module are not available in `Worker` threads. + * @experimental + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/trace_events.js) + */ +declare module "trace_events" { + /** + * The `Tracing` object is used to enable or disable tracing for sets of + * categories. Instances are created using the + * `trace_events.createTracing()` method. + * + * When created, the `Tracing` object is disabled. Calling the + * `tracing.enable()` method adds the categories to the set of enabled trace + * event categories. Calling `tracing.disable()` will remove the categories + * from the set of enabled trace event categories. + */ + interface Tracing { + /** + * A comma-separated list of the trace event categories covered by this + * `Tracing` object. + */ + readonly categories: string; + /** + * Disables this `Tracing` object. + * + * Only trace event categories _not_ covered by other enabled `Tracing` + * objects and _not_ specified by the `--trace-event-categories` flag + * will be disabled. + */ + disable(): void; + /** + * Enables this `Tracing` object for the set of categories covered by + * the `Tracing` object. + */ + enable(): void; + /** + * `true` only if the `Tracing` object has been enabled. + */ + readonly enabled: boolean; + } + interface CreateTracingOptions { + /** + * An array of trace category names. Values included in the array are + * coerced to a string when possible. An error will be thrown if the + * value cannot be coerced. + */ + categories: string[]; + } + /** + * Creates and returns a `Tracing` object for the given set of `categories`. + * + * ```js + * const trace_events = require('node:trace_events'); + * const categories = ['node.perf', 'node.async_hooks']; + * const tracing = trace_events.createTracing({ categories }); + * tracing.enable(); + * // do stuff + * tracing.disable(); + * ``` + * @since v10.0.0 + * @return . + */ + function createTracing(options: CreateTracingOptions): Tracing; + /** + * Returns a comma-separated list of all currently-enabled trace event + * categories. The current set of enabled trace event categories is determined + * by the _union_ of all currently-enabled `Tracing` objects and any categories + * enabled using the `--trace-event-categories` flag. + * + * Given the file `test.js` below, the command`node --trace-event-categories node.perf test.js` will print`'node.async_hooks,node.perf'` to the console. + * + * ```js + * const trace_events = require('node:trace_events'); + * const t1 = trace_events.createTracing({ categories: ['node.async_hooks'] }); + * const t2 = trace_events.createTracing({ categories: ['node.perf'] }); + * const t3 = trace_events.createTracing({ categories: ['v8'] }); + * + * t1.enable(); + * t2.enable(); + * + * console.log(trace_events.getEnabledCategories()); + * ``` + * @since v10.0.0 + */ + function getEnabledCategories(): string | undefined; +} +declare module "node:trace_events" { + export * from "trace_events"; +} diff --git a/node_modules/@types/node/ts4.8/tty.d.ts b/node_modules/@types/node/ts4.8/tty.d.ts new file mode 100644 index 00000000..1c0dafd3 --- /dev/null +++ b/node_modules/@types/node/ts4.8/tty.d.ts @@ -0,0 +1,208 @@ +/** + * The `node:tty` module provides the `tty.ReadStream` and `tty.WriteStream`classes. In most cases, it will not be necessary or possible to use this module + * directly. However, it can be accessed using: + * + * ```js + * const tty = require('node:tty'); + * ``` + * + * When Node.js detects that it is being run with a text terminal ("TTY") + * attached, `process.stdin` will, by default, be initialized as an instance of`tty.ReadStream` and both `process.stdout` and `process.stderr` will, by + * default, be instances of `tty.WriteStream`. The preferred method of determining + * whether Node.js is being run within a TTY context is to check that the value of + * the `process.stdout.isTTY` property is `true`: + * + * ```console + * $ node -p -e "Boolean(process.stdout.isTTY)" + * true + * $ node -p -e "Boolean(process.stdout.isTTY)" | cat + * false + * ``` + * + * In most cases, there should be little to no reason for an application to + * manually create instances of the `tty.ReadStream` and `tty.WriteStream`classes. + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/tty.js) + */ +declare module "tty" { + import * as net from "node:net"; + /** + * The `tty.isatty()` method returns `true` if the given `fd` is associated with + * a TTY and `false` if it is not, including whenever `fd` is not a non-negative + * integer. + * @since v0.5.8 + * @param fd A numeric file descriptor + */ + function isatty(fd: number): boolean; + /** + * Represents the readable side of a TTY. In normal circumstances `process.stdin` will be the only `tty.ReadStream` instance in a Node.js + * process and there should be no reason to create additional instances. + * @since v0.5.8 + */ + class ReadStream extends net.Socket { + constructor(fd: number, options?: net.SocketConstructorOpts); + /** + * A `boolean` that is `true` if the TTY is currently configured to operate as a + * raw device. + * + * This flag is always `false` when a process starts, even if the terminal is + * operating in raw mode. Its value will change with subsequent calls to`setRawMode`. + * @since v0.7.7 + */ + isRaw: boolean; + /** + * Allows configuration of `tty.ReadStream` so that it operates as a raw device. + * + * When in raw mode, input is always available character-by-character, not + * including modifiers. Additionally, all special processing of characters by the + * terminal is disabled, including echoing input + * characters. Ctrl+C will no longer cause a `SIGINT` when + * in this mode. + * @since v0.7.7 + * @param mode If `true`, configures the `tty.ReadStream` to operate as a raw device. If `false`, configures the `tty.ReadStream` to operate in its default mode. The `readStream.isRaw` + * property will be set to the resulting mode. + * @return The read stream instance. + */ + setRawMode(mode: boolean): this; + /** + * A `boolean` that is always `true` for `tty.ReadStream` instances. + * @since v0.5.8 + */ + isTTY: boolean; + } + /** + * -1 - to the left from cursor + * 0 - the entire line + * 1 - to the right from cursor + */ + type Direction = -1 | 0 | 1; + /** + * Represents the writable side of a TTY. In normal circumstances,`process.stdout` and `process.stderr` will be the only`tty.WriteStream` instances created for a Node.js process and there + * should be no reason to create additional instances. + * @since v0.5.8 + */ + class WriteStream extends net.Socket { + constructor(fd: number); + addListener(event: string, listener: (...args: any[]) => void): this; + addListener(event: "resize", listener: () => void): this; + emit(event: string | symbol, ...args: any[]): boolean; + emit(event: "resize"): boolean; + on(event: string, listener: (...args: any[]) => void): this; + on(event: "resize", listener: () => void): this; + once(event: string, listener: (...args: any[]) => void): this; + once(event: "resize", listener: () => void): this; + prependListener(event: string, listener: (...args: any[]) => void): this; + prependListener(event: "resize", listener: () => void): this; + prependOnceListener(event: string, listener: (...args: any[]) => void): this; + prependOnceListener(event: "resize", listener: () => void): this; + /** + * `writeStream.clearLine()` clears the current line of this `WriteStream` in a + * direction identified by `dir`. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if the stream wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + clearLine(dir: Direction, callback?: () => void): boolean; + /** + * `writeStream.clearScreenDown()` clears this `WriteStream` from the current + * cursor down. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if the stream wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + clearScreenDown(callback?: () => void): boolean; + /** + * `writeStream.cursorTo()` moves this `WriteStream`'s cursor to the specified + * position. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if the stream wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + cursorTo(x: number, y?: number, callback?: () => void): boolean; + cursorTo(x: number, callback: () => void): boolean; + /** + * `writeStream.moveCursor()` moves this `WriteStream`'s cursor _relative_ to its + * current position. + * @since v0.7.7 + * @param callback Invoked once the operation completes. + * @return `false` if the stream wishes for the calling code to wait for the `'drain'` event to be emitted before continuing to write additional data; otherwise `true`. + */ + moveCursor(dx: number, dy: number, callback?: () => void): boolean; + /** + * Returns: + * + * * `1` for 2, + * * `4` for 16, + * * `8` for 256, + * * `24` for 16,777,216 colors supported. + * + * Use this to determine what colors the terminal supports. Due to the nature of + * colors in terminals it is possible to either have false positives or false + * negatives. It depends on process information and the environment variables that + * may lie about what terminal is used. + * It is possible to pass in an `env` object to simulate the usage of a specific + * terminal. This can be useful to check how specific environment settings behave. + * + * To enforce a specific color support, use one of the below environment settings. + * + * * 2 colors: `FORCE_COLOR = 0` (Disables colors) + * * 16 colors: `FORCE_COLOR = 1` + * * 256 colors: `FORCE_COLOR = 2` + * * 16,777,216 colors: `FORCE_COLOR = 3` + * + * Disabling color support is also possible by using the `NO_COLOR` and`NODE_DISABLE_COLORS` environment variables. + * @since v9.9.0 + * @param [env=process.env] An object containing the environment variables to check. This enables simulating the usage of a specific terminal. + */ + getColorDepth(env?: object): number; + /** + * Returns `true` if the `writeStream` supports at least as many colors as provided + * in `count`. Minimum support is 2 (black and white). + * + * This has the same false positives and negatives as described in `writeStream.getColorDepth()`. + * + * ```js + * process.stdout.hasColors(); + * // Returns true or false depending on if `stdout` supports at least 16 colors. + * process.stdout.hasColors(256); + * // Returns true or false depending on if `stdout` supports at least 256 colors. + * process.stdout.hasColors({ TMUX: '1' }); + * // Returns true. + * process.stdout.hasColors(2 ** 24, { TMUX: '1' }); + * // Returns false (the environment setting pretends to support 2 ** 8 colors). + * ``` + * @since v11.13.0, v10.16.0 + * @param [count=16] The number of colors that are requested (minimum 2). + * @param [env=process.env] An object containing the environment variables to check. This enables simulating the usage of a specific terminal. + */ + hasColors(count?: number): boolean; + hasColors(env?: object): boolean; + hasColors(count: number, env?: object): boolean; + /** + * `writeStream.getWindowSize()` returns the size of the TTY + * corresponding to this `WriteStream`. The array is of the type`[numColumns, numRows]` where `numColumns` and `numRows` represent the number + * of columns and rows in the corresponding TTY. + * @since v0.7.7 + */ + getWindowSize(): [number, number]; + /** + * A `number` specifying the number of columns the TTY currently has. This property + * is updated whenever the `'resize'` event is emitted. + * @since v0.7.7 + */ + columns: number; + /** + * A `number` specifying the number of rows the TTY currently has. This property + * is updated whenever the `'resize'` event is emitted. + * @since v0.7.7 + */ + rows: number; + /** + * A `boolean` that is always `true`. + * @since v0.5.8 + */ + isTTY: boolean; + } +} +declare module "node:tty" { + export * from "tty"; +} diff --git a/node_modules/@types/node/ts4.8/url.d.ts b/node_modules/@types/node/ts4.8/url.d.ts new file mode 100644 index 00000000..f465a2b5 --- /dev/null +++ b/node_modules/@types/node/ts4.8/url.d.ts @@ -0,0 +1,927 @@ +/** + * The `node:url` module provides utilities for URL resolution and parsing. It can + * be accessed using: + * + * ```js + * import url from 'node:url'; + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/url.js) + */ +declare module "url" { + import { Blob as NodeBlob } from "node:buffer"; + import { ClientRequestArgs } from "node:http"; + import { ParsedUrlQuery, ParsedUrlQueryInput } from "node:querystring"; + // Input to `url.format` + interface UrlObject { + auth?: string | null | undefined; + hash?: string | null | undefined; + host?: string | null | undefined; + hostname?: string | null | undefined; + href?: string | null | undefined; + pathname?: string | null | undefined; + protocol?: string | null | undefined; + search?: string | null | undefined; + slashes?: boolean | null | undefined; + port?: string | number | null | undefined; + query?: string | null | ParsedUrlQueryInput | undefined; + } + // Output of `url.parse` + interface Url { + auth: string | null; + hash: string | null; + host: string | null; + hostname: string | null; + href: string; + path: string | null; + pathname: string | null; + protocol: string | null; + search: string | null; + slashes: boolean | null; + port: string | null; + query: string | null | ParsedUrlQuery; + } + interface UrlWithParsedQuery extends Url { + query: ParsedUrlQuery; + } + interface UrlWithStringQuery extends Url { + query: string | null; + } + /** + * The `url.parse()` method takes a URL string, parses it, and returns a URL + * object. + * + * A `TypeError` is thrown if `urlString` is not a string. + * + * A `URIError` is thrown if the `auth` property is present but cannot be decoded. + * + * `url.parse()` uses a lenient, non-standard algorithm for parsing URL + * strings. It is prone to security issues such as [host name spoofing](https://hackerone.com/reports/678487) and incorrect handling of usernames and passwords. Do not use with untrusted + * input. CVEs are not issued for `url.parse()` vulnerabilities. Use the `WHATWG URL` API instead. + * @since v0.1.25 + * @deprecated Use the WHATWG URL API instead. + * @param urlString The URL string to parse. + * @param [parseQueryString=false] If `true`, the `query` property will always be set to an object returned by the {@link querystring} module's `parse()` method. If `false`, the `query` property + * on the returned URL object will be an unparsed, undecoded string. + * @param [slashesDenoteHost=false] If `true`, the first token after the literal string `//` and preceding the next `/` will be interpreted as the `host`. For instance, given `//foo/bar`, the + * result would be `{host: 'foo', pathname: '/bar'}` rather than `{pathname: '//foo/bar'}`. + */ + function parse(urlString: string): UrlWithStringQuery; + function parse( + urlString: string, + parseQueryString: false | undefined, + slashesDenoteHost?: boolean, + ): UrlWithStringQuery; + function parse(urlString: string, parseQueryString: true, slashesDenoteHost?: boolean): UrlWithParsedQuery; + function parse(urlString: string, parseQueryString: boolean, slashesDenoteHost?: boolean): Url; + /** + * The `url.format()` method returns a formatted URL string derived from`urlObject`. + * + * ```js + * const url = require('node:url'); + * url.format({ + * protocol: 'https', + * hostname: 'example.com', + * pathname: '/some/path', + * query: { + * page: 1, + * format: 'json', + * }, + * }); + * + * // => 'https://example.com/some/path?page=1&format=json' + * ``` + * + * If `urlObject` is not an object or a string, `url.format()` will throw a `TypeError`. + * + * The formatting process operates as follows: + * + * * A new empty string `result` is created. + * * If `urlObject.protocol` is a string, it is appended as-is to `result`. + * * Otherwise, if `urlObject.protocol` is not `undefined` and is not a string, an `Error` is thrown. + * * For all string values of `urlObject.protocol` that _do not end_ with an ASCII + * colon (`:`) character, the literal string `:` will be appended to `result`. + * * If either of the following conditions is true, then the literal string `//`will be appended to `result`: + * * `urlObject.slashes` property is true; + * * `urlObject.protocol` begins with `http`, `https`, `ftp`, `gopher`, or`file`; + * * If the value of the `urlObject.auth` property is truthy, and either`urlObject.host` or `urlObject.hostname` are not `undefined`, the value of`urlObject.auth` will be coerced into a string + * and appended to `result`followed by the literal string `@`. + * * If the `urlObject.host` property is `undefined` then: + * * If the `urlObject.hostname` is a string, it is appended to `result`. + * * Otherwise, if `urlObject.hostname` is not `undefined` and is not a string, + * an `Error` is thrown. + * * If the `urlObject.port` property value is truthy, and `urlObject.hostname`is not `undefined`: + * * The literal string `:` is appended to `result`, and + * * The value of `urlObject.port` is coerced to a string and appended to`result`. + * * Otherwise, if the `urlObject.host` property value is truthy, the value of`urlObject.host` is coerced to a string and appended to `result`. + * * If the `urlObject.pathname` property is a string that is not an empty string: + * * If the `urlObject.pathname`_does not start_ with an ASCII forward slash + * (`/`), then the literal string `'/'` is appended to `result`. + * * The value of `urlObject.pathname` is appended to `result`. + * * Otherwise, if `urlObject.pathname` is not `undefined` and is not a string, an `Error` is thrown. + * * If the `urlObject.search` property is `undefined` and if the `urlObject.query`property is an `Object`, the literal string `?` is appended to `result`followed by the output of calling the + * `querystring` module's `stringify()`method passing the value of `urlObject.query`. + * * Otherwise, if `urlObject.search` is a string: + * * If the value of `urlObject.search`_does not start_ with the ASCII question + * mark (`?`) character, the literal string `?` is appended to `result`. + * * The value of `urlObject.search` is appended to `result`. + * * Otherwise, if `urlObject.search` is not `undefined` and is not a string, an `Error` is thrown. + * * If the `urlObject.hash` property is a string: + * * If the value of `urlObject.hash`_does not start_ with the ASCII hash (`#`) + * character, the literal string `#` is appended to `result`. + * * The value of `urlObject.hash` is appended to `result`. + * * Otherwise, if the `urlObject.hash` property is not `undefined` and is not a + * string, an `Error` is thrown. + * * `result` is returned. + * @since v0.1.25 + * @legacy Use the WHATWG URL API instead. + * @param urlObject A URL object (as returned by `url.parse()` or constructed otherwise). If a string, it is converted to an object by passing it to `url.parse()`. + */ + function format(urlObject: URL, options?: URLFormatOptions): string; + /** + * The `url.format()` method returns a formatted URL string derived from`urlObject`. + * + * ```js + * const url = require('url'); + * url.format({ + * protocol: 'https', + * hostname: 'example.com', + * pathname: '/some/path', + * query: { + * page: 1, + * format: 'json' + * } + * }); + * + * // => 'https://example.com/some/path?page=1&format=json' + * ``` + * + * If `urlObject` is not an object or a string, `url.format()` will throw a `TypeError`. + * + * The formatting process operates as follows: + * + * * A new empty string `result` is created. + * * If `urlObject.protocol` is a string, it is appended as-is to `result`. + * * Otherwise, if `urlObject.protocol` is not `undefined` and is not a string, an `Error` is thrown. + * * For all string values of `urlObject.protocol` that _do not end_ with an ASCII + * colon (`:`) character, the literal string `:` will be appended to `result`. + * * If either of the following conditions is true, then the literal string `//`will be appended to `result`: + * * `urlObject.slashes` property is true; + * * `urlObject.protocol` begins with `http`, `https`, `ftp`, `gopher`, or`file`; + * * If the value of the `urlObject.auth` property is truthy, and either`urlObject.host` or `urlObject.hostname` are not `undefined`, the value of`urlObject.auth` will be coerced into a string + * and appended to `result`followed by the literal string `@`. + * * If the `urlObject.host` property is `undefined` then: + * * If the `urlObject.hostname` is a string, it is appended to `result`. + * * Otherwise, if `urlObject.hostname` is not `undefined` and is not a string, + * an `Error` is thrown. + * * If the `urlObject.port` property value is truthy, and `urlObject.hostname`is not `undefined`: + * * The literal string `:` is appended to `result`, and + * * The value of `urlObject.port` is coerced to a string and appended to`result`. + * * Otherwise, if the `urlObject.host` property value is truthy, the value of`urlObject.host` is coerced to a string and appended to `result`. + * * If the `urlObject.pathname` property is a string that is not an empty string: + * * If the `urlObject.pathname`_does not start_ with an ASCII forward slash + * (`/`), then the literal string `'/'` is appended to `result`. + * * The value of `urlObject.pathname` is appended to `result`. + * * Otherwise, if `urlObject.pathname` is not `undefined` and is not a string, an `Error` is thrown. + * * If the `urlObject.search` property is `undefined` and if the `urlObject.query`property is an `Object`, the literal string `?` is appended to `result`followed by the output of calling the + * `querystring` module's `stringify()`method passing the value of `urlObject.query`. + * * Otherwise, if `urlObject.search` is a string: + * * If the value of `urlObject.search`_does not start_ with the ASCII question + * mark (`?`) character, the literal string `?` is appended to `result`. + * * The value of `urlObject.search` is appended to `result`. + * * Otherwise, if `urlObject.search` is not `undefined` and is not a string, an `Error` is thrown. + * * If the `urlObject.hash` property is a string: + * * If the value of `urlObject.hash`_does not start_ with the ASCII hash (`#`) + * character, the literal string `#` is appended to `result`. + * * The value of `urlObject.hash` is appended to `result`. + * * Otherwise, if the `urlObject.hash` property is not `undefined` and is not a + * string, an `Error` is thrown. + * * `result` is returned. + * @since v0.1.25 + * @legacy Use the WHATWG URL API instead. + * @param urlObject A URL object (as returned by `url.parse()` or constructed otherwise). If a string, it is converted to an object by passing it to `url.parse()`. + */ + function format(urlObject: UrlObject | string): string; + /** + * The `url.resolve()` method resolves a target URL relative to a base URL in a + * manner similar to that of a web browser resolving an anchor tag. + * + * ```js + * const url = require('node:url'); + * url.resolve('/one/two/three', 'four'); // '/one/two/four' + * url.resolve('http://example.com/', '/one'); // 'http://example.com/one' + * url.resolve('http://example.com/one', '/two'); // 'http://example.com/two' + * ``` + * + * To achieve the same result using the WHATWG URL API: + * + * ```js + * function resolve(from, to) { + * const resolvedUrl = new URL(to, new URL(from, 'resolve://')); + * if (resolvedUrl.protocol === 'resolve:') { + * // `from` is a relative URL. + * const { pathname, search, hash } = resolvedUrl; + * return pathname + search + hash; + * } + * return resolvedUrl.toString(); + * } + * + * resolve('/one/two/three', 'four'); // '/one/two/four' + * resolve('http://example.com/', '/one'); // 'http://example.com/one' + * resolve('http://example.com/one', '/two'); // 'http://example.com/two' + * ``` + * @since v0.1.25 + * @legacy Use the WHATWG URL API instead. + * @param from The base URL to use if `to` is a relative URL. + * @param to The target URL to resolve. + */ + function resolve(from: string, to: string): string; + /** + * Returns the [Punycode](https://tools.ietf.org/html/rfc5891#section-4.4) ASCII serialization of the `domain`. If `domain` is an + * invalid domain, the empty string is returned. + * + * It performs the inverse operation to {@link domainToUnicode}. + * + * ```js + * import url from 'node:url'; + * + * console.log(url.domainToASCII('español.com')); + * // Prints xn--espaol-zwa.com + * console.log(url.domainToASCII('中文.com')); + * // Prints xn--fiq228c.com + * console.log(url.domainToASCII('xn--iñvalid.com')); + * // Prints an empty string + * ``` + * @since v7.4.0, v6.13.0 + */ + function domainToASCII(domain: string): string; + /** + * Returns the Unicode serialization of the `domain`. If `domain` is an invalid + * domain, the empty string is returned. + * + * It performs the inverse operation to {@link domainToASCII}. + * + * ```js + * import url from 'node:url'; + * + * console.log(url.domainToUnicode('xn--espaol-zwa.com')); + * // Prints español.com + * console.log(url.domainToUnicode('xn--fiq228c.com')); + * // Prints 中文.com + * console.log(url.domainToUnicode('xn--iñvalid.com')); + * // Prints an empty string + * ``` + * @since v7.4.0, v6.13.0 + */ + function domainToUnicode(domain: string): string; + /** + * This function ensures the correct decodings of percent-encoded characters as + * well as ensuring a cross-platform valid absolute path string. + * + * ```js + * import { fileURLToPath } from 'node:url'; + * + * const __filename = fileURLToPath(import.meta.url); + * + * new URL('file:///C:/path/').pathname; // Incorrect: /C:/path/ + * fileURLToPath('file:///C:/path/'); // Correct: C:\path\ (Windows) + * + * new URL('file://nas/foo.txt').pathname; // Incorrect: /foo.txt + * fileURLToPath('file://nas/foo.txt'); // Correct: \\nas\foo.txt (Windows) + * + * new URL('file:///你好.txt').pathname; // Incorrect: /%E4%BD%A0%E5%A5%BD.txt + * fileURLToPath('file:///你好.txt'); // Correct: /你好.txt (POSIX) + * + * new URL('file:///hello world').pathname; // Incorrect: /hello%20world + * fileURLToPath('file:///hello world'); // Correct: /hello world (POSIX) + * ``` + * @since v10.12.0 + * @param url The file URL string or URL object to convert to a path. + * @return The fully-resolved platform-specific Node.js file path. + */ + function fileURLToPath(url: string | URL): string; + /** + * This function ensures that `path` is resolved absolutely, and that the URL + * control characters are correctly encoded when converting into a File URL. + * + * ```js + * import { pathToFileURL } from 'node:url'; + * + * new URL('/foo#1', 'file:'); // Incorrect: file:///foo#1 + * pathToFileURL('/foo#1'); // Correct: file:///foo%231 (POSIX) + * + * new URL('/some/path%.c', 'file:'); // Incorrect: file:///some/path%.c + * pathToFileURL('/some/path%.c'); // Correct: file:///some/path%25.c (POSIX) + * ``` + * @since v10.12.0 + * @param path The path to convert to a File URL. + * @return The file URL object. + */ + function pathToFileURL(path: string): URL; + /** + * This utility function converts a URL object into an ordinary options object as + * expected by the `http.request()` and `https.request()` APIs. + * + * ```js + * import { urlToHttpOptions } from 'node:url'; + * const myURL = new URL('https://a:b@測試?abc#foo'); + * + * console.log(urlToHttpOptions(myURL)); + * /* + * { + * protocol: 'https:', + * hostname: 'xn--g6w251d', + * hash: '#foo', + * search: '?abc', + * pathname: '/', + * path: '/?abc', + * href: 'https://a:b@xn--g6w251d/?abc#foo', + * auth: 'a:b' + * } + * + * ``` + * @since v15.7.0, v14.18.0 + * @param url The `WHATWG URL` object to convert to an options object. + * @return Options object + */ + function urlToHttpOptions(url: URL): ClientRequestArgs; + interface URLFormatOptions { + auth?: boolean | undefined; + fragment?: boolean | undefined; + search?: boolean | undefined; + unicode?: boolean | undefined; + } + /** + * Browser-compatible `URL` class, implemented by following the WHATWG URL + * Standard. [Examples of parsed URLs](https://url.spec.whatwg.org/#example-url-parsing) may be found in the Standard itself. + * The `URL` class is also available on the global object. + * + * In accordance with browser conventions, all properties of `URL` objects + * are implemented as getters and setters on the class prototype, rather than as + * data properties on the object itself. Thus, unlike `legacy urlObject` s, + * using the `delete` keyword on any properties of `URL` objects (e.g. `delete myURL.protocol`, `delete myURL.pathname`, etc) has no effect but will still + * return `true`. + * @since v7.0.0, v6.13.0 + */ + class URL { + /** + * Creates a `'blob:nodedata:...'` URL string that represents the given `Blob` object and can be used to retrieve the `Blob` later. + * + * ```js + * const { + * Blob, + * resolveObjectURL, + * } = require('node:buffer'); + * + * const blob = new Blob(['hello']); + * const id = URL.createObjectURL(blob); + * + * // later... + * + * const otherBlob = resolveObjectURL(id); + * console.log(otherBlob.size); + * ``` + * + * The data stored by the registered `Blob` will be retained in memory until`URL.revokeObjectURL()` is called to remove it. + * + * `Blob` objects are registered within the current thread. If using Worker + * Threads, `Blob` objects registered within one Worker will not be available + * to other workers or the main thread. + * @since v16.7.0 + * @experimental + */ + static createObjectURL(blob: NodeBlob): string; + /** + * Removes the stored `Blob` identified by the given ID. Attempting to revoke a + * ID that isn't registered will silently fail. + * @since v16.7.0 + * @experimental + * @param id A `'blob:nodedata:...` URL string returned by a prior call to `URL.createObjectURL()`. + */ + static revokeObjectURL(objectUrl: string): void; + /** + * Checks if an `input` relative to the `base` can be parsed to a `URL`. + * + * ```js + * const isValid = URL.canParse('/foo', 'https://example.org/'); // true + * + * const isNotValid = URL.canParse('/foo'); // false + * ``` + * @since v19.9.0 + * @param input The absolute or relative input URL to parse. If `input` is relative, then `base` is required. If `input` is absolute, the `base` is ignored. If `input` is not a string, it is + * `converted to a string` first. + * @param base The base URL to resolve against if the `input` is not absolute. If `base` is not a string, it is `converted to a string` first. + */ + static canParse(input: string, base?: string): boolean; + constructor(input: string, base?: string | URL); + /** + * Gets and sets the fragment portion of the URL. + * + * ```js + * const myURL = new URL('https://example.org/foo#bar'); + * console.log(myURL.hash); + * // Prints #bar + * + * myURL.hash = 'baz'; + * console.log(myURL.href); + * // Prints https://example.org/foo#baz + * ``` + * + * Invalid URL characters included in the value assigned to the `hash` property + * are `percent-encoded`. The selection of which characters to + * percent-encode may vary somewhat from what the {@link parse} and {@link format} methods would produce. + */ + hash: string; + /** + * Gets and sets the host portion of the URL. + * + * ```js + * const myURL = new URL('https://example.org:81/foo'); + * console.log(myURL.host); + * // Prints example.org:81 + * + * myURL.host = 'example.com:82'; + * console.log(myURL.href); + * // Prints https://example.com:82/foo + * ``` + * + * Invalid host values assigned to the `host` property are ignored. + */ + host: string; + /** + * Gets and sets the host name portion of the URL. The key difference between`url.host` and `url.hostname` is that `url.hostname` does _not_ include the + * port. + * + * ```js + * const myURL = new URL('https://example.org:81/foo'); + * console.log(myURL.hostname); + * // Prints example.org + * + * // Setting the hostname does not change the port + * myURL.hostname = 'example.com'; + * console.log(myURL.href); + * // Prints https://example.com:81/foo + * + * // Use myURL.host to change the hostname and port + * myURL.host = 'example.org:82'; + * console.log(myURL.href); + * // Prints https://example.org:82/foo + * ``` + * + * Invalid host name values assigned to the `hostname` property are ignored. + */ + hostname: string; + /** + * Gets and sets the serialized URL. + * + * ```js + * const myURL = new URL('https://example.org/foo'); + * console.log(myURL.href); + * // Prints https://example.org/foo + * + * myURL.href = 'https://example.com/bar'; + * console.log(myURL.href); + * // Prints https://example.com/bar + * ``` + * + * Getting the value of the `href` property is equivalent to calling {@link toString}. + * + * Setting the value of this property to a new value is equivalent to creating a + * new `URL` object using `new URL(value)`. Each of the `URL`object's properties will be modified. + * + * If the value assigned to the `href` property is not a valid URL, a `TypeError`will be thrown. + */ + href: string; + /** + * Gets the read-only serialization of the URL's origin. + * + * ```js + * const myURL = new URL('https://example.org/foo/bar?baz'); + * console.log(myURL.origin); + * // Prints https://example.org + * ``` + * + * ```js + * const idnURL = new URL('https://測試'); + * console.log(idnURL.origin); + * // Prints https://xn--g6w251d + * + * console.log(idnURL.hostname); + * // Prints xn--g6w251d + * ``` + */ + readonly origin: string; + /** + * Gets and sets the password portion of the URL. + * + * ```js + * const myURL = new URL('https://abc:xyz@example.com'); + * console.log(myURL.password); + * // Prints xyz + * + * myURL.password = '123'; + * console.log(myURL.href); + * // Prints https://abc:123@example.com/ + * ``` + * + * Invalid URL characters included in the value assigned to the `password` property + * are `percent-encoded`. The selection of which characters to + * percent-encode may vary somewhat from what the {@link parse} and {@link format} methods would produce. + */ + password: string; + /** + * Gets and sets the path portion of the URL. + * + * ```js + * const myURL = new URL('https://example.org/abc/xyz?123'); + * console.log(myURL.pathname); + * // Prints /abc/xyz + * + * myURL.pathname = '/abcdef'; + * console.log(myURL.href); + * // Prints https://example.org/abcdef?123 + * ``` + * + * Invalid URL characters included in the value assigned to the `pathname`property are `percent-encoded`. The selection of which characters + * to percent-encode may vary somewhat from what the {@link parse} and {@link format} methods would produce. + */ + pathname: string; + /** + * Gets and sets the port portion of the URL. + * + * The port value may be a number or a string containing a number in the range`0` to `65535` (inclusive). Setting the value to the default port of the`URL` objects given `protocol` will + * result in the `port` value becoming + * the empty string (`''`). + * + * The port value can be an empty string in which case the port depends on + * the protocol/scheme: + * + * + * + * Upon assigning a value to the port, the value will first be converted to a + * string using `.toString()`. + * + * If that string is invalid but it begins with a number, the leading number is + * assigned to `port`. + * If the number lies outside the range denoted above, it is ignored. + * + * ```js + * const myURL = new URL('https://example.org:8888'); + * console.log(myURL.port); + * // Prints 8888 + * + * // Default ports are automatically transformed to the empty string + * // (HTTPS protocol's default port is 443) + * myURL.port = '443'; + * console.log(myURL.port); + * // Prints the empty string + * console.log(myURL.href); + * // Prints https://example.org/ + * + * myURL.port = 1234; + * console.log(myURL.port); + * // Prints 1234 + * console.log(myURL.href); + * // Prints https://example.org:1234/ + * + * // Completely invalid port strings are ignored + * myURL.port = 'abcd'; + * console.log(myURL.port); + * // Prints 1234 + * + * // Leading numbers are treated as a port number + * myURL.port = '5678abcd'; + * console.log(myURL.port); + * // Prints 5678 + * + * // Non-integers are truncated + * myURL.port = 1234.5678; + * console.log(myURL.port); + * // Prints 1234 + * + * // Out-of-range numbers which are not represented in scientific notation + * // will be ignored. + * myURL.port = 1e10; // 10000000000, will be range-checked as described below + * console.log(myURL.port); + * // Prints 1234 + * ``` + * + * Numbers which contain a decimal point, + * such as floating-point numbers or numbers in scientific notation, + * are not an exception to this rule. + * Leading numbers up to the decimal point will be set as the URL's port, + * assuming they are valid: + * + * ```js + * myURL.port = 4.567e21; + * console.log(myURL.port); + * // Prints 4 (because it is the leading number in the string '4.567e21') + * ``` + */ + port: string; + /** + * Gets and sets the protocol portion of the URL. + * + * ```js + * const myURL = new URL('https://example.org'); + * console.log(myURL.protocol); + * // Prints https: + * + * myURL.protocol = 'ftp'; + * console.log(myURL.href); + * // Prints ftp://example.org/ + * ``` + * + * Invalid URL protocol values assigned to the `protocol` property are ignored. + */ + protocol: string; + /** + * Gets and sets the serialized query portion of the URL. + * + * ```js + * const myURL = new URL('https://example.org/abc?123'); + * console.log(myURL.search); + * // Prints ?123 + * + * myURL.search = 'abc=xyz'; + * console.log(myURL.href); + * // Prints https://example.org/abc?abc=xyz + * ``` + * + * Any invalid URL characters appearing in the value assigned the `search`property will be `percent-encoded`. The selection of which + * characters to percent-encode may vary somewhat from what the {@link parse} and {@link format} methods would produce. + */ + search: string; + /** + * Gets the `URLSearchParams` object representing the query parameters of the + * URL. This property is read-only but the `URLSearchParams` object it provides + * can be used to mutate the URL instance; to replace the entirety of query + * parameters of the URL, use the {@link search} setter. See `URLSearchParams` documentation for details. + * + * Use care when using `.searchParams` to modify the `URL` because, + * per the WHATWG specification, the `URLSearchParams` object uses + * different rules to determine which characters to percent-encode. For + * instance, the `URL` object will not percent encode the ASCII tilde (`~`) + * character, while `URLSearchParams` will always encode it: + * + * ```js + * const myURL = new URL('https://example.org/abc?foo=~bar'); + * + * console.log(myURL.search); // prints ?foo=~bar + * + * // Modify the URL via searchParams... + * myURL.searchParams.sort(); + * + * console.log(myURL.search); // prints ?foo=%7Ebar + * ``` + */ + readonly searchParams: URLSearchParams; + /** + * Gets and sets the username portion of the URL. + * + * ```js + * const myURL = new URL('https://abc:xyz@example.com'); + * console.log(myURL.username); + * // Prints abc + * + * myURL.username = '123'; + * console.log(myURL.href); + * // Prints https://123:xyz@example.com/ + * ``` + * + * Any invalid URL characters appearing in the value assigned the `username`property will be `percent-encoded`. The selection of which + * characters to percent-encode may vary somewhat from what the {@link parse} and {@link format} methods would produce. + */ + username: string; + /** + * The `toString()` method on the `URL` object returns the serialized URL. The + * value returned is equivalent to that of {@link href} and {@link toJSON}. + */ + toString(): string; + /** + * The `toJSON()` method on the `URL` object returns the serialized URL. The + * value returned is equivalent to that of {@link href} and {@link toString}. + * + * This method is automatically called when an `URL` object is serialized + * with [`JSON.stringify()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify). + * + * ```js + * const myURLs = [ + * new URL('https://www.example.com'), + * new URL('https://test.example.org'), + * ]; + * console.log(JSON.stringify(myURLs)); + * // Prints ["https://www.example.com/","https://test.example.org/"] + * ``` + */ + toJSON(): string; + } + /** + * The `URLSearchParams` API provides read and write access to the query of a`URL`. The `URLSearchParams` class can also be used standalone with one of the + * four following constructors. + * The `URLSearchParams` class is also available on the global object. + * + * The WHATWG `URLSearchParams` interface and the `querystring` module have + * similar purpose, but the purpose of the `querystring` module is more + * general, as it allows the customization of delimiter characters (`&` and `=`). + * On the other hand, this API is designed purely for URL query strings. + * + * ```js + * const myURL = new URL('https://example.org/?abc=123'); + * console.log(myURL.searchParams.get('abc')); + * // Prints 123 + * + * myURL.searchParams.append('abc', 'xyz'); + * console.log(myURL.href); + * // Prints https://example.org/?abc=123&abc=xyz + * + * myURL.searchParams.delete('abc'); + * myURL.searchParams.set('a', 'b'); + * console.log(myURL.href); + * // Prints https://example.org/?a=b + * + * const newSearchParams = new URLSearchParams(myURL.searchParams); + * // The above is equivalent to + * // const newSearchParams = new URLSearchParams(myURL.search); + * + * newSearchParams.append('a', 'c'); + * console.log(myURL.href); + * // Prints https://example.org/?a=b + * console.log(newSearchParams.toString()); + * // Prints a=b&a=c + * + * // newSearchParams.toString() is implicitly called + * myURL.search = newSearchParams; + * console.log(myURL.href); + * // Prints https://example.org/?a=b&a=c + * newSearchParams.delete('a'); + * console.log(myURL.href); + * // Prints https://example.org/?a=b&a=c + * ``` + * @since v7.5.0, v6.13.0 + */ + class URLSearchParams implements Iterable<[string, string]> { + constructor( + init?: + | URLSearchParams + | string + | Record> + | Iterable<[string, string]> + | ReadonlyArray<[string, string]>, + ); + /** + * Append a new name-value pair to the query string. + */ + append(name: string, value: string): void; + /** + * If `value` is provided, removes all name-value pairs + * where name is `name` and value is `value`.. + * + * If `value` is not provided, removes all name-value pairs whose name is `name`. + */ + delete(name: string, value?: string): void; + /** + * Returns an ES6 `Iterator` over each of the name-value pairs in the query. + * Each item of the iterator is a JavaScript `Array`. The first item of the `Array`is the `name`, the second item of the `Array` is the `value`. + * + * Alias for `urlSearchParams[@@iterator]()`. + */ + entries(): IterableIterator<[string, string]>; + /** + * Iterates over each name-value pair in the query and invokes the given function. + * + * ```js + * const myURL = new URL('https://example.org/?a=b&c=d'); + * myURL.searchParams.forEach((value, name, searchParams) => { + * console.log(name, value, myURL.searchParams === searchParams); + * }); + * // Prints: + * // a b true + * // c d true + * ``` + * @param fn Invoked for each name-value pair in the query + * @param thisArg To be used as `this` value for when `fn` is called + */ + forEach( + callback: (this: TThis, value: string, name: string, searchParams: URLSearchParams) => void, + thisArg?: TThis, + ): void; + /** + * Returns the value of the first name-value pair whose name is `name`. If there + * are no such pairs, `null` is returned. + * @return or `null` if there is no name-value pair with the given `name`. + */ + get(name: string): string | null; + /** + * Returns the values of all name-value pairs whose name is `name`. If there are + * no such pairs, an empty array is returned. + */ + getAll(name: string): string[]; + /** + * Checks if the `URLSearchParams` object contains key-value pair(s) based on`name` and an optional `value` argument. + * + * If `value` is provided, returns `true` when name-value pair with + * same `name` and `value` exists. + * + * If `value` is not provided, returns `true` if there is at least one name-value + * pair whose name is `name`. + */ + has(name: string, value?: string): boolean; + /** + * Returns an ES6 `Iterator` over the names of each name-value pair. + * + * ```js + * const params = new URLSearchParams('foo=bar&foo=baz'); + * for (const name of params.keys()) { + * console.log(name); + * } + * // Prints: + * // foo + * // foo + * ``` + */ + keys(): IterableIterator; + /** + * Sets the value in the `URLSearchParams` object associated with `name` to`value`. If there are any pre-existing name-value pairs whose names are `name`, + * set the first such pair's value to `value` and remove all others. If not, + * append the name-value pair to the query string. + * + * ```js + * const params = new URLSearchParams(); + * params.append('foo', 'bar'); + * params.append('foo', 'baz'); + * params.append('abc', 'def'); + * console.log(params.toString()); + * // Prints foo=bar&foo=baz&abc=def + * + * params.set('foo', 'def'); + * params.set('xyz', 'opq'); + * console.log(params.toString()); + * // Prints foo=def&abc=def&xyz=opq + * ``` + */ + set(name: string, value: string): void; + /** + * The total number of parameter entries. + * @since v19.8.0 + */ + readonly size: number; + /** + * Sort all existing name-value pairs in-place by their names. Sorting is done + * with a [stable sorting algorithm](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability), so relative order between name-value pairs + * with the same name is preserved. + * + * This method can be used, in particular, to increase cache hits. + * + * ```js + * const params = new URLSearchParams('query[]=abc&type=search&query[]=123'); + * params.sort(); + * console.log(params.toString()); + * // Prints query%5B%5D=abc&query%5B%5D=123&type=search + * ``` + * @since v7.7.0, v6.13.0 + */ + sort(): void; + /** + * Returns the search parameters serialized as a string, with characters + * percent-encoded where necessary. + */ + toString(): string; + /** + * Returns an ES6 `Iterator` over the values of each name-value pair. + */ + values(): IterableIterator; + [Symbol.iterator](): IterableIterator<[string, string]>; + } + import { URL as _URL, URLSearchParams as _URLSearchParams } from "url"; + global { + interface URLSearchParams extends _URLSearchParams {} + interface URL extends _URL {} + interface Global { + URL: typeof _URL; + URLSearchParams: typeof _URLSearchParams; + } + /** + * `URL` class is a global reference for `require('url').URL` + * https://nodejs.org/api/url.html#the-whatwg-url-api + * @since v10.0.0 + */ + var URL: typeof globalThis extends { + onmessage: any; + URL: infer T; + } ? T + : typeof _URL; + /** + * `URLSearchParams` class is a global reference for `require('url').URLSearchParams` + * https://nodejs.org/api/url.html#class-urlsearchparams + * @since v10.0.0 + */ + var URLSearchParams: typeof globalThis extends { + onmessage: any; + URLSearchParams: infer T; + } ? T + : typeof _URLSearchParams; + } +} +declare module "node:url" { + export * from "url"; +} diff --git a/node_modules/@types/node/ts4.8/util.d.ts b/node_modules/@types/node/ts4.8/util.d.ts new file mode 100644 index 00000000..7d55c350 --- /dev/null +++ b/node_modules/@types/node/ts4.8/util.d.ts @@ -0,0 +1,2186 @@ +/** + * The `node:util` module supports the needs of Node.js internal APIs. Many of the + * utilities are useful for application and module developers as well. To access + * it: + * + * ```js + * const util = require('node:util'); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/util.js) + */ +declare module "util" { + import * as types from "node:util/types"; + export interface InspectOptions { + /** + * If `true`, object's non-enumerable symbols and properties are included in the formatted result. + * `WeakMap` and `WeakSet` entries are also included as well as user defined prototype properties (excluding method properties). + * @default false + */ + showHidden?: boolean | undefined; + /** + * Specifies the number of times to recurse while formatting object. + * This is useful for inspecting large objects. + * To recurse up to the maximum call stack size pass `Infinity` or `null`. + * @default 2 + */ + depth?: number | null | undefined; + /** + * If `true`, the output is styled with ANSI color codes. Colors are customizable. + */ + colors?: boolean | undefined; + /** + * If `false`, `[util.inspect.custom](depth, opts, inspect)` functions are not invoked. + * @default true + */ + customInspect?: boolean | undefined; + /** + * If `true`, `Proxy` inspection includes the target and handler objects. + * @default false + */ + showProxy?: boolean | undefined; + /** + * Specifies the maximum number of `Array`, `TypedArray`, `WeakMap`, and `WeakSet` elements + * to include when formatting. Set to `null` or `Infinity` to show all elements. + * Set to `0` or negative to show no elements. + * @default 100 + */ + maxArrayLength?: number | null | undefined; + /** + * Specifies the maximum number of characters to + * include when formatting. Set to `null` or `Infinity` to show all elements. + * Set to `0` or negative to show no characters. + * @default 10000 + */ + maxStringLength?: number | null | undefined; + /** + * The length at which input values are split across multiple lines. + * Set to `Infinity` to format the input as a single line + * (in combination with `compact` set to `true` or any number >= `1`). + * @default 80 + */ + breakLength?: number | undefined; + /** + * Setting this to `false` causes each object key + * to be displayed on a new line. It will also add new lines to text that is + * longer than `breakLength`. If set to a number, the most `n` inner elements + * are united on a single line as long as all properties fit into + * `breakLength`. Short array elements are also grouped together. Note that no + * text will be reduced below 16 characters, no matter the `breakLength` size. + * For more information, see the example below. + * @default true + */ + compact?: boolean | number | undefined; + /** + * If set to `true` or a function, all properties of an object, and `Set` and `Map` + * entries are sorted in the resulting string. + * If set to `true` the default sort is used. + * If set to a function, it is used as a compare function. + */ + sorted?: boolean | ((a: string, b: string) => number) | undefined; + /** + * If set to `true`, getters are going to be + * inspected as well. If set to `'get'` only getters without setter are going + * to be inspected. If set to `'set'` only getters having a corresponding + * setter are going to be inspected. This might cause side effects depending on + * the getter function. + * @default false + */ + getters?: "get" | "set" | boolean | undefined; + /** + * If set to `true`, an underscore is used to separate every three digits in all bigints and numbers. + * @default false + */ + numericSeparator?: boolean | undefined; + } + export type Style = + | "special" + | "number" + | "bigint" + | "boolean" + | "undefined" + | "null" + | "string" + | "symbol" + | "date" + | "regexp" + | "module"; + export type CustomInspectFunction = (depth: number, options: InspectOptionsStylized) => any; // TODO: , inspect: inspect + export interface InspectOptionsStylized extends InspectOptions { + stylize(text: string, styleType: Style): string; + } + /** + * The `util.format()` method returns a formatted string using the first argument + * as a `printf`\-like format string which can contain zero or more format + * specifiers. Each specifier is replaced with the converted value from the + * corresponding argument. Supported specifiers are: + * + * If a specifier does not have a corresponding argument, it is not replaced: + * + * ```js + * util.format('%s:%s', 'foo'); + * // Returns: 'foo:%s' + * ``` + * + * Values that are not part of the format string are formatted using`util.inspect()` if their type is not `string`. + * + * If there are more arguments passed to the `util.format()` method than the + * number of specifiers, the extra arguments are concatenated to the returned + * string, separated by spaces: + * + * ```js + * util.format('%s:%s', 'foo', 'bar', 'baz'); + * // Returns: 'foo:bar baz' + * ``` + * + * If the first argument does not contain a valid format specifier, `util.format()`returns a string that is the concatenation of all arguments separated by spaces: + * + * ```js + * util.format(1, 2, 3); + * // Returns: '1 2 3' + * ``` + * + * If only one argument is passed to `util.format()`, it is returned as it is + * without any formatting: + * + * ```js + * util.format('%% %s'); + * // Returns: '%% %s' + * ``` + * + * `util.format()` is a synchronous method that is intended as a debugging tool. + * Some input values can have a significant performance overhead that can block the + * event loop. Use this function with care and never in a hot code path. + * @since v0.5.3 + * @param format A `printf`-like format string. + */ + export function format(format?: any, ...param: any[]): string; + /** + * This function is identical to {@link format}, except in that it takes + * an `inspectOptions` argument which specifies options that are passed along to {@link inspect}. + * + * ```js + * util.formatWithOptions({ colors: true }, 'See object %O', { foo: 42 }); + * // Returns 'See object { foo: 42 }', where `42` is colored as a number + * // when printed to a terminal. + * ``` + * @since v10.0.0 + */ + export function formatWithOptions(inspectOptions: InspectOptions, format?: any, ...param: any[]): string; + /** + * Returns the string name for a numeric error code that comes from a Node.js API. + * The mapping between error codes and error names is platform-dependent. + * See `Common System Errors` for the names of common errors. + * + * ```js + * fs.access('file/that/does/not/exist', (err) => { + * const name = util.getSystemErrorName(err.errno); + * console.error(name); // ENOENT + * }); + * ``` + * @since v9.7.0 + */ + export function getSystemErrorName(err: number): string; + /** + * Returns a Map of all system error codes available from the Node.js API. + * The mapping between error codes and error names is platform-dependent. + * See `Common System Errors` for the names of common errors. + * + * ```js + * fs.access('file/that/does/not/exist', (err) => { + * const errorMap = util.getSystemErrorMap(); + * const name = errorMap.get(err.errno); + * console.error(name); // ENOENT + * }); + * ``` + * @since v16.0.0, v14.17.0 + */ + export function getSystemErrorMap(): Map; + /** + * The `util.log()` method prints the given `string` to `stdout` with an included + * timestamp. + * + * ```js + * const util = require('node:util'); + * + * util.log('Timestamped message.'); + * ``` + * @since v0.3.0 + * @deprecated Since v6.0.0 - Use a third party module instead. + */ + export function log(string: string): void; + /** + * Returns the `string` after replacing any surrogate code points + * (or equivalently, any unpaired surrogate code units) with the + * Unicode "replacement character" U+FFFD. + * @since v16.8.0, v14.18.0 + */ + export function toUSVString(string: string): string; + /** + * Creates and returns an `AbortController` instance whose `AbortSignal` is marked + * as transferable and can be used with `structuredClone()` or `postMessage()`. + * @since v18.11.0 + * @experimental + * @returns A transferable AbortController + */ + export function transferableAbortController(): AbortController; + /** + * Marks the given `AbortSignal` as transferable so that it can be used with`structuredClone()` and `postMessage()`. + * + * ```js + * const signal = transferableAbortSignal(AbortSignal.timeout(100)); + * const channel = new MessageChannel(); + * channel.port2.postMessage(signal, [signal]); + * ``` + * @since v18.11.0 + * @experimental + * @param signal The AbortSignal + * @returns The same AbortSignal + */ + export function transferableAbortSignal(signal: AbortSignal): AbortSignal; + /** + * Listens to abort event on the provided `signal` and + * returns a promise that is fulfilled when the `signal` is + * aborted. If the passed `resource` is garbage collected before the `signal` is + * aborted, the returned promise shall remain pending indefinitely. + * + * ```js + * import { aborted } from 'node:util'; + * + * const dependent = obtainSomethingAbortable(); + * + * aborted(dependent.signal, dependent).then(() => { + * // Do something when dependent is aborted. + * }); + * + * dependent.on('event', () => { + * dependent.abort(); + * }); + * ``` + * @since v19.7.0 + * @experimental + * @param resource Any non-null entity, reference to which is held weakly. + */ + export function aborted(signal: AbortSignal, resource: any): Promise; + /** + * The `util.inspect()` method returns a string representation of `object` that is + * intended for debugging. The output of `util.inspect` may change at any time + * and should not be depended upon programmatically. Additional `options` may be + * passed that alter the result.`util.inspect()` will use the constructor's name and/or `@@toStringTag` to make + * an identifiable tag for an inspected value. + * + * ```js + * class Foo { + * get [Symbol.toStringTag]() { + * return 'bar'; + * } + * } + * + * class Bar {} + * + * const baz = Object.create(null, { [Symbol.toStringTag]: { value: 'foo' } }); + * + * util.inspect(new Foo()); // 'Foo [bar] {}' + * util.inspect(new Bar()); // 'Bar {}' + * util.inspect(baz); // '[foo] {}' + * ``` + * + * Circular references point to their anchor by using a reference index: + * + * ```js + * const { inspect } = require('node:util'); + * + * const obj = {}; + * obj.a = [obj]; + * obj.b = {}; + * obj.b.inner = obj.b; + * obj.b.obj = obj; + * + * console.log(inspect(obj)); + * // { + * // a: [ [Circular *1] ], + * // b: { inner: [Circular *2], obj: [Circular *1] } + * // } + * ``` + * + * The following example inspects all properties of the `util` object: + * + * ```js + * const util = require('node:util'); + * + * console.log(util.inspect(util, { showHidden: true, depth: null })); + * ``` + * + * The following example highlights the effect of the `compact` option: + * + * ```js + * const util = require('node:util'); + * + * const o = { + * a: [1, 2, [[ + * 'Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit, sed do ' + + * 'eiusmod \ntempor incididunt ut labore et dolore magna aliqua.', + * 'test', + * 'foo']], 4], + * b: new Map([['za', 1], ['zb', 'test']]), + * }; + * console.log(util.inspect(o, { compact: true, depth: 5, breakLength: 80 })); + * + * // { a: + * // [ 1, + * // 2, + * // [ [ 'Lorem ipsum dolor sit amet,\nconsectetur [...]', // A long line + * // 'test', + * // 'foo' ] ], + * // 4 ], + * // b: Map(2) { 'za' => 1, 'zb' => 'test' } } + * + * // Setting `compact` to false or an integer creates more reader friendly output. + * console.log(util.inspect(o, { compact: false, depth: 5, breakLength: 80 })); + * + * // { + * // a: [ + * // 1, + * // 2, + * // [ + * // [ + * // 'Lorem ipsum dolor sit amet,\n' + + * // 'consectetur adipiscing elit, sed do eiusmod \n' + + * // 'tempor incididunt ut labore et dolore magna aliqua.', + * // 'test', + * // 'foo' + * // ] + * // ], + * // 4 + * // ], + * // b: Map(2) { + * // 'za' => 1, + * // 'zb' => 'test' + * // } + * // } + * + * // Setting `breakLength` to e.g. 150 will print the "Lorem ipsum" text in a + * // single line. + * ``` + * + * The `showHidden` option allows [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) and + * [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) entries to be + * inspected. If there are more entries than `maxArrayLength`, there is no + * guarantee which entries are displayed. That means retrieving the same [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) entries twice may + * result in different output. Furthermore, entries + * with no remaining strong references may be garbage collected at any time. + * + * ```js + * const { inspect } = require('node:util'); + * + * const obj = { a: 1 }; + * const obj2 = { b: 2 }; + * const weakSet = new WeakSet([obj, obj2]); + * + * console.log(inspect(weakSet, { showHidden: true })); + * // WeakSet { { a: 1 }, { b: 2 } } + * ``` + * + * The `sorted` option ensures that an object's property insertion order does not + * impact the result of `util.inspect()`. + * + * ```js + * const { inspect } = require('node:util'); + * const assert = require('node:assert'); + * + * const o1 = { + * b: [2, 3, 1], + * a: '`a` comes before `b`', + * c: new Set([2, 3, 1]), + * }; + * console.log(inspect(o1, { sorted: true })); + * // { a: '`a` comes before `b`', b: [ 2, 3, 1 ], c: Set(3) { 1, 2, 3 } } + * console.log(inspect(o1, { sorted: (a, b) => b.localeCompare(a) })); + * // { c: Set(3) { 3, 2, 1 }, b: [ 2, 3, 1 ], a: '`a` comes before `b`' } + * + * const o2 = { + * c: new Set([2, 1, 3]), + * a: '`a` comes before `b`', + * b: [2, 3, 1], + * }; + * assert.strict.equal( + * inspect(o1, { sorted: true }), + * inspect(o2, { sorted: true }), + * ); + * ``` + * + * The `numericSeparator` option adds an underscore every three digits to all + * numbers. + * + * ```js + * const { inspect } = require('node:util'); + * + * const thousand = 1_000; + * const million = 1_000_000; + * const bigNumber = 123_456_789n; + * const bigDecimal = 1_234.123_45; + * + * console.log(inspect(thousand, { numericSeparator: true })); + * // 1_000 + * console.log(inspect(million, { numericSeparator: true })); + * // 1_000_000 + * console.log(inspect(bigNumber, { numericSeparator: true })); + * // 123_456_789n + * console.log(inspect(bigDecimal, { numericSeparator: true })); + * // 1_234.123_45 + * ``` + * + * `util.inspect()` is a synchronous method intended for debugging. Its maximum + * output length is approximately 128 MiB. Inputs that result in longer output will + * be truncated. + * @since v0.3.0 + * @param object Any JavaScript primitive or `Object`. + * @return The representation of `object`. + */ + export function inspect(object: any, showHidden?: boolean, depth?: number | null, color?: boolean): string; + export function inspect(object: any, options?: InspectOptions): string; + export namespace inspect { + let colors: NodeJS.Dict<[number, number]>; + let styles: { + [K in Style]: string; + }; + let defaultOptions: InspectOptions; + /** + * Allows changing inspect settings from the repl. + */ + let replDefaults: InspectOptions; + /** + * That can be used to declare custom inspect functions. + */ + const custom: unique symbol; + } + /** + * Alias for [`Array.isArray()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray). + * + * Returns `true` if the given `object` is an `Array`. Otherwise, returns `false`. + * + * ```js + * const util = require('node:util'); + * + * util.isArray([]); + * // Returns: true + * util.isArray(new Array()); + * // Returns: true + * util.isArray({}); + * // Returns: false + * ``` + * @since v0.6.0 + * @deprecated Since v4.0.0 - Use `isArray` instead. + */ + export function isArray(object: unknown): object is unknown[]; + /** + * Returns `true` if the given `object` is a `RegExp`. Otherwise, returns `false`. + * + * ```js + * const util = require('node:util'); + * + * util.isRegExp(/some regexp/); + * // Returns: true + * util.isRegExp(new RegExp('another regexp')); + * // Returns: true + * util.isRegExp({}); + * // Returns: false + * ``` + * @since v0.6.0 + * @deprecated Since v4.0.0 - Deprecated + */ + export function isRegExp(object: unknown): object is RegExp; + /** + * Returns `true` if the given `object` is a `Date`. Otherwise, returns `false`. + * + * ```js + * const util = require('node:util'); + * + * util.isDate(new Date()); + * // Returns: true + * util.isDate(Date()); + * // false (without 'new' returns a String) + * util.isDate({}); + * // Returns: false + * ``` + * @since v0.6.0 + * @deprecated Since v4.0.0 - Use {@link types.isDate} instead. + */ + export function isDate(object: unknown): object is Date; + /** + * Returns `true` if the given `object` is an `Error`. Otherwise, returns`false`. + * + * ```js + * const util = require('node:util'); + * + * util.isError(new Error()); + * // Returns: true + * util.isError(new TypeError()); + * // Returns: true + * util.isError({ name: 'Error', message: 'an error occurred' }); + * // Returns: false + * ``` + * + * This method relies on `Object.prototype.toString()` behavior. It is + * possible to obtain an incorrect result when the `object` argument manipulates`@@toStringTag`. + * + * ```js + * const util = require('node:util'); + * const obj = { name: 'Error', message: 'an error occurred' }; + * + * util.isError(obj); + * // Returns: false + * obj[Symbol.toStringTag] = 'Error'; + * util.isError(obj); + * // Returns: true + * ``` + * @since v0.6.0 + * @deprecated Since v4.0.0 - Use {@link types.isNativeError} instead. + */ + export function isError(object: unknown): object is Error; + /** + * Usage of `util.inherits()` is discouraged. Please use the ES6 `class` and`extends` keywords to get language level inheritance support. Also note + * that the two styles are [semantically incompatible](https://github.com/nodejs/node/issues/4179). + * + * Inherit the prototype methods from one [constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor) into another. The + * prototype of `constructor` will be set to a new object created from`superConstructor`. + * + * This mainly adds some input validation on top of`Object.setPrototypeOf(constructor.prototype, superConstructor.prototype)`. + * As an additional convenience, `superConstructor` will be accessible + * through the `constructor.super_` property. + * + * ```js + * const util = require('node:util'); + * const EventEmitter = require('node:events'); + * + * function MyStream() { + * EventEmitter.call(this); + * } + * + * util.inherits(MyStream, EventEmitter); + * + * MyStream.prototype.write = function(data) { + * this.emit('data', data); + * }; + * + * const stream = new MyStream(); + * + * console.log(stream instanceof EventEmitter); // true + * console.log(MyStream.super_ === EventEmitter); // true + * + * stream.on('data', (data) => { + * console.log(`Received data: "${data}"`); + * }); + * stream.write('It works!'); // Received data: "It works!" + * ``` + * + * ES6 example using `class` and `extends`: + * + * ```js + * const EventEmitter = require('node:events'); + * + * class MyStream extends EventEmitter { + * write(data) { + * this.emit('data', data); + * } + * } + * + * const stream = new MyStream(); + * + * stream.on('data', (data) => { + * console.log(`Received data: "${data}"`); + * }); + * stream.write('With ES6'); + * ``` + * @since v0.3.0 + * @legacy Use ES2015 class syntax and `extends` keyword instead. + */ + export function inherits(constructor: unknown, superConstructor: unknown): void; + export type DebugLoggerFunction = (msg: string, ...param: unknown[]) => void; + export interface DebugLogger extends DebugLoggerFunction { + enabled: boolean; + } + /** + * The `util.debuglog()` method is used to create a function that conditionally + * writes debug messages to `stderr` based on the existence of the `NODE_DEBUG`environment variable. If the `section` name appears within the value of that + * environment variable, then the returned function operates similar to `console.error()`. If not, then the returned function is a no-op. + * + * ```js + * const util = require('node:util'); + * const debuglog = util.debuglog('foo'); + * + * debuglog('hello from foo [%d]', 123); + * ``` + * + * If this program is run with `NODE_DEBUG=foo` in the environment, then + * it will output something like: + * + * ```console + * FOO 3245: hello from foo [123] + * ``` + * + * where `3245` is the process id. If it is not run with that + * environment variable set, then it will not print anything. + * + * The `section` supports wildcard also: + * + * ```js + * const util = require('node:util'); + * const debuglog = util.debuglog('foo-bar'); + * + * debuglog('hi there, it\'s foo-bar [%d]', 2333); + * ``` + * + * if it is run with `NODE_DEBUG=foo*` in the environment, then it will output + * something like: + * + * ```console + * FOO-BAR 3257: hi there, it's foo-bar [2333] + * ``` + * + * Multiple comma-separated `section` names may be specified in the `NODE_DEBUG`environment variable: `NODE_DEBUG=fs,net,tls`. + * + * The optional `callback` argument can be used to replace the logging function + * with a different function that doesn't have any initialization or + * unnecessary wrapping. + * + * ```js + * const util = require('node:util'); + * let debuglog = util.debuglog('internals', (debug) => { + * // Replace with a logging function that optimizes out + * // testing if the section is enabled + * debuglog = debug; + * }); + * ``` + * @since v0.11.3 + * @param section A string identifying the portion of the application for which the `debuglog` function is being created. + * @param callback A callback invoked the first time the logging function is called with a function argument that is a more optimized logging function. + * @return The logging function + */ + export function debuglog(section: string, callback?: (fn: DebugLoggerFunction) => void): DebugLogger; + export const debug: typeof debuglog; + /** + * Returns `true` if the given `object` is a `Boolean`. Otherwise, returns `false`. + * + * ```js + * const util = require('node:util'); + * + * util.isBoolean(1); + * // Returns: false + * util.isBoolean(0); + * // Returns: false + * util.isBoolean(false); + * // Returns: true + * ``` + * @since v0.11.5 + * @deprecated Since v4.0.0 - Use `typeof value === 'boolean'` instead. + */ + export function isBoolean(object: unknown): object is boolean; + /** + * Returns `true` if the given `object` is a `Buffer`. Otherwise, returns `false`. + * + * ```js + * const util = require('node:util'); + * + * util.isBuffer({ length: 0 }); + * // Returns: false + * util.isBuffer([]); + * // Returns: false + * util.isBuffer(Buffer.from('hello world')); + * // Returns: true + * ``` + * @since v0.11.5 + * @deprecated Since v4.0.0 - Use `isBuffer` instead. + */ + export function isBuffer(object: unknown): object is Buffer; + /** + * Returns `true` if the given `object` is a `Function`. Otherwise, returns`false`. + * + * ```js + * const util = require('node:util'); + * + * function Foo() {} + * const Bar = () => {}; + * + * util.isFunction({}); + * // Returns: false + * util.isFunction(Foo); + * // Returns: true + * util.isFunction(Bar); + * // Returns: true + * ``` + * @since v0.11.5 + * @deprecated Since v4.0.0 - Use `typeof value === 'function'` instead. + */ + export function isFunction(object: unknown): boolean; + /** + * Returns `true` if the given `object` is strictly `null`. Otherwise, returns`false`. + * + * ```js + * const util = require('node:util'); + * + * util.isNull(0); + * // Returns: false + * util.isNull(undefined); + * // Returns: false + * util.isNull(null); + * // Returns: true + * ``` + * @since v0.11.5 + * @deprecated Since v4.0.0 - Use `value === null` instead. + */ + export function isNull(object: unknown): object is null; + /** + * Returns `true` if the given `object` is `null` or `undefined`. Otherwise, + * returns `false`. + * + * ```js + * const util = require('node:util'); + * + * util.isNullOrUndefined(0); + * // Returns: false + * util.isNullOrUndefined(undefined); + * // Returns: true + * util.isNullOrUndefined(null); + * // Returns: true + * ``` + * @since v0.11.5 + * @deprecated Since v4.0.0 - Use `value === undefined || value === null` instead. + */ + export function isNullOrUndefined(object: unknown): object is null | undefined; + /** + * Returns `true` if the given `object` is a `Number`. Otherwise, returns `false`. + * + * ```js + * const util = require('node:util'); + * + * util.isNumber(false); + * // Returns: false + * util.isNumber(Infinity); + * // Returns: true + * util.isNumber(0); + * // Returns: true + * util.isNumber(NaN); + * // Returns: true + * ``` + * @since v0.11.5 + * @deprecated Since v4.0.0 - Use `typeof value === 'number'` instead. + */ + export function isNumber(object: unknown): object is number; + /** + * Returns `true` if the given `object` is strictly an `Object`**and** not a`Function` (even though functions are objects in JavaScript). + * Otherwise, returns `false`. + * + * ```js + * const util = require('node:util'); + * + * util.isObject(5); + * // Returns: false + * util.isObject(null); + * // Returns: false + * util.isObject({}); + * // Returns: true + * util.isObject(() => {}); + * // Returns: false + * ``` + * @since v0.11.5 + * @deprecated Since v4.0.0 - Use `value !== null && typeof value === 'object'` instead. + */ + export function isObject(object: unknown): boolean; + /** + * Returns `true` if the given `object` is a primitive type. Otherwise, returns`false`. + * + * ```js + * const util = require('node:util'); + * + * util.isPrimitive(5); + * // Returns: true + * util.isPrimitive('foo'); + * // Returns: true + * util.isPrimitive(false); + * // Returns: true + * util.isPrimitive(null); + * // Returns: true + * util.isPrimitive(undefined); + * // Returns: true + * util.isPrimitive({}); + * // Returns: false + * util.isPrimitive(() => {}); + * // Returns: false + * util.isPrimitive(/^$/); + * // Returns: false + * util.isPrimitive(new Date()); + * // Returns: false + * ``` + * @since v0.11.5 + * @deprecated Since v4.0.0 - Use `(typeof value !== 'object' && typeof value !== 'function') || value === null` instead. + */ + export function isPrimitive(object: unknown): boolean; + /** + * Returns `true` if the given `object` is a `string`. Otherwise, returns `false`. + * + * ```js + * const util = require('node:util'); + * + * util.isString(''); + * // Returns: true + * util.isString('foo'); + * // Returns: true + * util.isString(String('foo')); + * // Returns: true + * util.isString(5); + * // Returns: false + * ``` + * @since v0.11.5 + * @deprecated Since v4.0.0 - Use `typeof value === 'string'` instead. + */ + export function isString(object: unknown): object is string; + /** + * Returns `true` if the given `object` is a `Symbol`. Otherwise, returns `false`. + * + * ```js + * const util = require('node:util'); + * + * util.isSymbol(5); + * // Returns: false + * util.isSymbol('foo'); + * // Returns: false + * util.isSymbol(Symbol('foo')); + * // Returns: true + * ``` + * @since v0.11.5 + * @deprecated Since v4.0.0 - Use `typeof value === 'symbol'` instead. + */ + export function isSymbol(object: unknown): object is symbol; + /** + * Returns `true` if the given `object` is `undefined`. Otherwise, returns `false`. + * + * ```js + * const util = require('node:util'); + * + * const foo = undefined; + * util.isUndefined(5); + * // Returns: false + * util.isUndefined(foo); + * // Returns: true + * util.isUndefined(null); + * // Returns: false + * ``` + * @since v0.11.5 + * @deprecated Since v4.0.0 - Use `value === undefined` instead. + */ + export function isUndefined(object: unknown): object is undefined; + /** + * The `util.deprecate()` method wraps `fn` (which may be a function or class) in + * such a way that it is marked as deprecated. + * + * ```js + * const util = require('node:util'); + * + * exports.obsoleteFunction = util.deprecate(() => { + * // Do something here. + * }, 'obsoleteFunction() is deprecated. Use newShinyFunction() instead.'); + * ``` + * + * When called, `util.deprecate()` will return a function that will emit a`DeprecationWarning` using the `'warning'` event. The warning will + * be emitted and printed to `stderr` the first time the returned function is + * called. After the warning is emitted, the wrapped function is called without + * emitting a warning. + * + * If the same optional `code` is supplied in multiple calls to `util.deprecate()`, + * the warning will be emitted only once for that `code`. + * + * ```js + * const util = require('node:util'); + * + * const fn1 = util.deprecate(someFunction, someMessage, 'DEP0001'); + * const fn2 = util.deprecate(someOtherFunction, someOtherMessage, 'DEP0001'); + * fn1(); // Emits a deprecation warning with code DEP0001 + * fn2(); // Does not emit a deprecation warning because it has the same code + * ``` + * + * If either the `--no-deprecation` or `--no-warnings` command-line flags are + * used, or if the `process.noDeprecation` property is set to `true`_prior_ to + * the first deprecation warning, the `util.deprecate()` method does nothing. + * + * If the `--trace-deprecation` or `--trace-warnings` command-line flags are set, + * or the `process.traceDeprecation` property is set to `true`, a warning and a + * stack trace are printed to `stderr` the first time the deprecated function is + * called. + * + * If the `--throw-deprecation` command-line flag is set, or the`process.throwDeprecation` property is set to `true`, then an exception will be + * thrown when the deprecated function is called. + * + * The `--throw-deprecation` command-line flag and `process.throwDeprecation`property take precedence over `--trace-deprecation` and`process.traceDeprecation`. + * @since v0.8.0 + * @param fn The function that is being deprecated. + * @param msg A warning message to display when the deprecated function is invoked. + * @param code A deprecation code. See the `list of deprecated APIs` for a list of codes. + * @return The deprecated function wrapped to emit a warning. + */ + export function deprecate(fn: T, msg: string, code?: string): T; + /** + * Returns `true` if there is deep strict equality between `val1` and `val2`. + * Otherwise, returns `false`. + * + * See `assert.deepStrictEqual()` for more information about deep strict + * equality. + * @since v9.0.0 + */ + export function isDeepStrictEqual(val1: unknown, val2: unknown): boolean; + /** + * Returns `str` with any ANSI escape codes removed. + * + * ```js + * console.log(util.stripVTControlCharacters('\u001B[4mvalue\u001B[0m')); + * // Prints "value" + * ``` + * @since v16.11.0 + */ + export function stripVTControlCharacters(str: string): string; + /** + * Takes an `async` function (or a function that returns a `Promise`) and returns a + * function following the error-first callback style, i.e. taking + * an `(err, value) => ...` callback as the last argument. In the callback, the + * first argument will be the rejection reason (or `null` if the `Promise`resolved), and the second argument will be the resolved value. + * + * ```js + * const util = require('node:util'); + * + * async function fn() { + * return 'hello world'; + * } + * const callbackFunction = util.callbackify(fn); + * + * callbackFunction((err, ret) => { + * if (err) throw err; + * console.log(ret); + * }); + * ``` + * + * Will print: + * + * ```text + * hello world + * ``` + * + * The callback is executed asynchronously, and will have a limited stack trace. + * If the callback throws, the process will emit an `'uncaughtException'` event, and if not handled will exit. + * + * Since `null` has a special meaning as the first argument to a callback, if a + * wrapped function rejects a `Promise` with a falsy value as a reason, the value + * is wrapped in an `Error` with the original value stored in a field named`reason`. + * + * ```js + * function fn() { + * return Promise.reject(null); + * } + * const callbackFunction = util.callbackify(fn); + * + * callbackFunction((err, ret) => { + * // When the Promise was rejected with `null` it is wrapped with an Error and + * // the original value is stored in `reason`. + * err && Object.hasOwn(err, 'reason') && err.reason === null; // true + * }); + * ``` + * @since v8.2.0 + * @param fn An `async` function + * @return a callback style function + */ + export function callbackify(fn: () => Promise): (callback: (err: NodeJS.ErrnoException) => void) => void; + export function callbackify( + fn: () => Promise, + ): (callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; + export function callbackify( + fn: (arg1: T1) => Promise, + ): (arg1: T1, callback: (err: NodeJS.ErrnoException) => void) => void; + export function callbackify( + fn: (arg1: T1) => Promise, + ): (arg1: T1, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2) => Promise, + ): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2) => Promise, + ): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2, arg3: T3) => Promise, + ): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2, arg3: T3) => Promise, + ): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise, + ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise, + ): ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + callback: (err: NodeJS.ErrnoException | null, result: TResult) => void, + ) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise, + ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise, + ): ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + callback: (err: NodeJS.ErrnoException | null, result: TResult) => void, + ) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise, + ): ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + callback: (err: NodeJS.ErrnoException) => void, + ) => void; + export function callbackify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise, + ): ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + callback: (err: NodeJS.ErrnoException | null, result: TResult) => void, + ) => void; + export interface CustomPromisifyLegacy extends Function { + __promisify__: TCustom; + } + export interface CustomPromisifySymbol extends Function { + [promisify.custom]: TCustom; + } + export type CustomPromisify = + | CustomPromisifySymbol + | CustomPromisifyLegacy; + /** + * Takes a function following the common error-first callback style, i.e. taking + * an `(err, value) => ...` callback as the last argument, and returns a version + * that returns promises. + * + * ```js + * const util = require('node:util'); + * const fs = require('node:fs'); + * + * const stat = util.promisify(fs.stat); + * stat('.').then((stats) => { + * // Do something with `stats` + * }).catch((error) => { + * // Handle the error. + * }); + * ``` + * + * Or, equivalently using `async function`s: + * + * ```js + * const util = require('node:util'); + * const fs = require('node:fs'); + * + * const stat = util.promisify(fs.stat); + * + * async function callStat() { + * const stats = await stat('.'); + * console.log(`This directory is owned by ${stats.uid}`); + * } + * + * callStat(); + * ``` + * + * If there is an `original[util.promisify.custom]` property present, `promisify`will return its value, see `Custom promisified functions`. + * + * `promisify()` assumes that `original` is a function taking a callback as its + * final argument in all cases. If `original` is not a function, `promisify()`will throw an error. If `original` is a function but its last argument is not + * an error-first callback, it will still be passed an error-first + * callback as its last argument. + * + * Using `promisify()` on class methods or other methods that use `this` may not + * work as expected unless handled specially: + * + * ```js + * const util = require('node:util'); + * + * class Foo { + * constructor() { + * this.a = 42; + * } + * + * bar(callback) { + * callback(null, this.a); + * } + * } + * + * const foo = new Foo(); + * + * const naiveBar = util.promisify(foo.bar); + * // TypeError: Cannot read property 'a' of undefined + * // naiveBar().then(a => console.log(a)); + * + * naiveBar.call(foo).then((a) => console.log(a)); // '42' + * + * const bindBar = naiveBar.bind(foo); + * bindBar().then((a) => console.log(a)); // '42' + * ``` + * @since v8.0.0 + */ + export function promisify(fn: CustomPromisify): TCustom; + export function promisify( + fn: (callback: (err: any, result: TResult) => void) => void, + ): () => Promise; + export function promisify(fn: (callback: (err?: any) => void) => void): () => Promise; + export function promisify( + fn: (arg1: T1, callback: (err: any, result: TResult) => void) => void, + ): (arg1: T1) => Promise; + export function promisify(fn: (arg1: T1, callback: (err?: any) => void) => void): (arg1: T1) => Promise; + export function promisify( + fn: (arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void, + ): (arg1: T1, arg2: T2) => Promise; + export function promisify( + fn: (arg1: T1, arg2: T2, callback: (err?: any) => void) => void, + ): (arg1: T1, arg2: T2) => Promise; + export function promisify( + fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void, + ): (arg1: T1, arg2: T2, arg3: T3) => Promise; + export function promisify( + fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void, + ): (arg1: T1, arg2: T2, arg3: T3) => Promise; + export function promisify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void, + ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise; + export function promisify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void, + ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise; + export function promisify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void, + ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise; + export function promisify( + fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void, + ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise; + export function promisify(fn: Function): Function; + export namespace promisify { + /** + * That can be used to declare custom promisified variants of functions. + */ + const custom: unique symbol; + } + /** + * An implementation of the [WHATWG Encoding Standard](https://encoding.spec.whatwg.org/) `TextDecoder` API. + * + * ```js + * const decoder = new TextDecoder(); + * const u8arr = new Uint8Array([72, 101, 108, 108, 111]); + * console.log(decoder.decode(u8arr)); // Hello + * ``` + * @since v8.3.0 + */ + export class TextDecoder { + /** + * The encoding supported by the `TextDecoder` instance. + */ + readonly encoding: string; + /** + * The value will be `true` if decoding errors result in a `TypeError` being + * thrown. + */ + readonly fatal: boolean; + /** + * The value will be `true` if the decoding result will include the byte order + * mark. + */ + readonly ignoreBOM: boolean; + constructor( + encoding?: string, + options?: { + fatal?: boolean | undefined; + ignoreBOM?: boolean | undefined; + }, + ); + /** + * Decodes the `input` and returns a string. If `options.stream` is `true`, any + * incomplete byte sequences occurring at the end of the `input` are buffered + * internally and emitted after the next call to `textDecoder.decode()`. + * + * If `textDecoder.fatal` is `true`, decoding errors that occur will result in a`TypeError` being thrown. + * @param input An `ArrayBuffer`, `DataView`, or `TypedArray` instance containing the encoded data. + */ + decode( + input?: NodeJS.ArrayBufferView | ArrayBuffer | null, + options?: { + stream?: boolean | undefined; + }, + ): string; + } + export interface EncodeIntoResult { + /** + * The read Unicode code units of input. + */ + read: number; + /** + * The written UTF-8 bytes of output. + */ + written: number; + } + export { types }; + + //// TextEncoder/Decoder + /** + * An implementation of the [WHATWG Encoding Standard](https://encoding.spec.whatwg.org/) `TextEncoder` API. All + * instances of `TextEncoder` only support UTF-8 encoding. + * + * ```js + * const encoder = new TextEncoder(); + * const uint8array = encoder.encode('this is some data'); + * ``` + * + * The `TextEncoder` class is also available on the global object. + * @since v8.3.0 + */ + export class TextEncoder { + /** + * The encoding supported by the `TextEncoder` instance. Always set to `'utf-8'`. + */ + readonly encoding: string; + /** + * UTF-8 encodes the `input` string and returns a `Uint8Array` containing the + * encoded bytes. + * @param [input='an empty string'] The text to encode. + */ + encode(input?: string): Uint8Array; + /** + * UTF-8 encodes the `src` string to the `dest` Uint8Array and returns an object + * containing the read Unicode code units and written UTF-8 bytes. + * + * ```js + * const encoder = new TextEncoder(); + * const src = 'this is some data'; + * const dest = new Uint8Array(10); + * const { read, written } = encoder.encodeInto(src, dest); + * ``` + * @param src The text to encode. + * @param dest The array to hold the encode result. + */ + encodeInto(src: string, dest: Uint8Array): EncodeIntoResult; + } + import { TextDecoder as _TextDecoder, TextEncoder as _TextEncoder } from "util"; + global { + /** + * `TextDecoder` class is a global reference for `require('util').TextDecoder` + * https://nodejs.org/api/globals.html#textdecoder + * @since v11.0.0 + */ + var TextDecoder: typeof globalThis extends { + onmessage: any; + TextDecoder: infer TextDecoder; + } ? TextDecoder + : typeof _TextDecoder; + /** + * `TextEncoder` class is a global reference for `require('util').TextEncoder` + * https://nodejs.org/api/globals.html#textencoder + * @since v11.0.0 + */ + var TextEncoder: typeof globalThis extends { + onmessage: any; + TextEncoder: infer TextEncoder; + } ? TextEncoder + : typeof _TextEncoder; + } + + //// parseArgs + /** + * Provides a higher level API for command-line argument parsing than interacting + * with `process.argv` directly. Takes a specification for the expected arguments + * and returns a structured object with the parsed options and positionals. + * + * ```js + * import { parseArgs } from 'node:util'; + * const args = ['-f', '--bar', 'b']; + * const options = { + * foo: { + * type: 'boolean', + * short: 'f', + * }, + * bar: { + * type: 'string', + * }, + * }; + * const { + * values, + * positionals, + * } = parseArgs({ args, options }); + * console.log(values, positionals); + * // Prints: [Object: null prototype] { foo: true, bar: 'b' } [] + * ``` + * @since v18.3.0, v16.17.0 + * @param config Used to provide arguments for parsing and to configure the parser. `config` supports the following properties: + * @return The parsed command line arguments: + */ + export function parseArgs(config?: T): ParsedResults; + interface ParseArgsOptionConfig { + /** + * Type of argument. + */ + type: "string" | "boolean"; + /** + * Whether this option can be provided multiple times. + * If `true`, all values will be collected in an array. + * If `false`, values for the option are last-wins. + * @default false. + */ + multiple?: boolean | undefined; + /** + * A single character alias for the option. + */ + short?: string | undefined; + /** + * The default option value when it is not set by args. + * It must be of the same type as the the `type` property. + * When `multiple` is `true`, it must be an array. + * @since v18.11.0 + */ + default?: string | boolean | string[] | boolean[] | undefined; + } + interface ParseArgsOptionsConfig { + [longOption: string]: ParseArgsOptionConfig; + } + export interface ParseArgsConfig { + /** + * Array of argument strings. + */ + args?: string[] | undefined; + /** + * Used to describe arguments known to the parser. + */ + options?: ParseArgsOptionsConfig | undefined; + /** + * Should an error be thrown when unknown arguments are encountered, + * or when arguments are passed that do not match the `type` configured in `options`. + * @default true + */ + strict?: boolean | undefined; + /** + * Whether this command accepts positional arguments. + */ + allowPositionals?: boolean | undefined; + /** + * Return the parsed tokens. This is useful for extending the built-in behavior, + * from adding additional checks through to reprocessing the tokens in different ways. + * @default false + */ + tokens?: boolean | undefined; + } + /* + IfDefaultsTrue and IfDefaultsFalse are helpers to handle default values for missing boolean properties. + TypeScript does not have exact types for objects: https://github.com/microsoft/TypeScript/issues/12936 + This means it is impossible to distinguish between "field X is definitely not present" and "field X may or may not be present". + But we expect users to generally provide their config inline or `as const`, which means TS will always know whether a given field is present. + So this helper treats "not definitely present" (i.e., not `extends boolean`) as being "definitely not present", i.e. it should have its default value. + This is technically incorrect but is a much nicer UX for the common case. + The IfDefaultsTrue version is for things which default to true; the IfDefaultsFalse version is for things which default to false. + */ + type IfDefaultsTrue = T extends true ? IfTrue + : T extends false ? IfFalse + : IfTrue; + + // we put the `extends false` condition first here because `undefined` compares like `any` when `strictNullChecks: false` + type IfDefaultsFalse = T extends false ? IfFalse + : T extends true ? IfTrue + : IfFalse; + + type ExtractOptionValue = IfDefaultsTrue< + T["strict"], + O["type"] extends "string" ? string : O["type"] extends "boolean" ? boolean : string | boolean, + string | boolean + >; + + type ParsedValues = + & IfDefaultsTrue + & (T["options"] extends ParseArgsOptionsConfig ? { + -readonly [LongOption in keyof T["options"]]: IfDefaultsFalse< + T["options"][LongOption]["multiple"], + undefined | Array>, + undefined | ExtractOptionValue + >; + } + : {}); + + type ParsedPositionals = IfDefaultsTrue< + T["strict"], + IfDefaultsFalse, + IfDefaultsTrue + >; + + type PreciseTokenForOptions< + K extends string, + O extends ParseArgsOptionConfig, + > = O["type"] extends "string" ? { + kind: "option"; + index: number; + name: K; + rawName: string; + value: string; + inlineValue: boolean; + } + : O["type"] extends "boolean" ? { + kind: "option"; + index: number; + name: K; + rawName: string; + value: undefined; + inlineValue: undefined; + } + : OptionToken & { name: K }; + + type TokenForOptions< + T extends ParseArgsConfig, + K extends keyof T["options"] = keyof T["options"], + > = K extends unknown + ? T["options"] extends ParseArgsOptionsConfig ? PreciseTokenForOptions + : OptionToken + : never; + + type ParsedOptionToken = IfDefaultsTrue, OptionToken>; + + type ParsedPositionalToken = IfDefaultsTrue< + T["strict"], + IfDefaultsFalse, + IfDefaultsTrue + >; + + type ParsedTokens = Array< + ParsedOptionToken | ParsedPositionalToken | { kind: "option-terminator"; index: number } + >; + + type PreciseParsedResults = IfDefaultsFalse< + T["tokens"], + { + values: ParsedValues; + positionals: ParsedPositionals; + tokens: ParsedTokens; + }, + { + values: ParsedValues; + positionals: ParsedPositionals; + } + >; + + type OptionToken = + | { kind: "option"; index: number; name: string; rawName: string; value: string; inlineValue: boolean } + | { + kind: "option"; + index: number; + name: string; + rawName: string; + value: undefined; + inlineValue: undefined; + }; + + type Token = + | OptionToken + | { kind: "positional"; index: number; value: string } + | { kind: "option-terminator"; index: number }; + + // If ParseArgsConfig extends T, then the user passed config constructed elsewhere. + // So we can't rely on the `"not definitely present" implies "definitely not present"` assumption mentioned above. + type ParsedResults = ParseArgsConfig extends T ? { + values: { + [longOption: string]: undefined | string | boolean | Array; + }; + positionals: string[]; + tokens?: Token[]; + } + : PreciseParsedResults; + + /** + * An implementation of [the MIMEType class](https://bmeck.github.io/node-proposal-mime-api/). + * + * In accordance with browser conventions, all properties of `MIMEType` objects + * are implemented as getters and setters on the class prototype, rather than as + * data properties on the object itself. + * + * A MIME string is a structured string containing multiple meaningful + * components. When parsed, a `MIMEType` object is returned containing + * properties for each of these components. + * @since v19.1.0, v18.13.0 + * @experimental + */ + export class MIMEType { + /** + * Creates a new MIMEType object by parsing the input. + * + * A `TypeError` will be thrown if the `input` is not a valid MIME. + * Note that an effort will be made to coerce the given values into strings. + * @param input The input MIME to parse. + */ + constructor(input: string | { toString: () => string }); + + /** + * Gets and sets the type portion of the MIME. + * + * ```js + * import { MIMEType } from 'node:util'; + * + * const myMIME = new MIMEType('text/javascript'); + * console.log(myMIME.type); + * // Prints: text + * myMIME.type = 'application'; + * console.log(myMIME.type); + * // Prints: application + * console.log(String(myMIME)); + * // Prints: application/javascript + * ``` + */ + type: string; + /** + * Gets and sets the subtype portion of the MIME. + * + * ```js + * import { MIMEType } from 'node:util'; + * + * const myMIME = new MIMEType('text/ecmascript'); + * console.log(myMIME.subtype); + * // Prints: ecmascript + * myMIME.subtype = 'javascript'; + * console.log(myMIME.subtype); + * // Prints: javascript + * console.log(String(myMIME)); + * // Prints: text/javascript + * ``` + */ + subtype: string; + /** + * Gets the essence of the MIME. This property is read only. + * Use `mime.type` or `mime.subtype` to alter the MIME. + * + * ```js + * import { MIMEType } from 'node:util'; + * + * const myMIME = new MIMEType('text/javascript;key=value'); + * console.log(myMIME.essence); + * // Prints: text/javascript + * myMIME.type = 'application'; + * console.log(myMIME.essence); + * // Prints: application/javascript + * console.log(String(myMIME)); + * // Prints: application/javascript;key=value + * ``` + */ + readonly essence: string; + /** + * Gets the `MIMEParams` object representing the + * parameters of the MIME. This property is read-only. See `MIMEParams` documentation for details. + */ + readonly params: MIMEParams; + /** + * The `toString()` method on the `MIMEType` object returns the serialized MIME. + * + * Because of the need for standard compliance, this method does not allow users + * to customize the serialization process of the MIME. + */ + toString(): string; + } + /** + * The `MIMEParams` API provides read and write access to the parameters of a`MIMEType`. + * @since v19.1.0, v18.13.0 + */ + export class MIMEParams { + /** + * Remove all name-value pairs whose name is `name`. + */ + delete(name: string): void; + /** + * Returns an iterator over each of the name-value pairs in the parameters. + * Each item of the iterator is a JavaScript `Array`. The first item of the array + * is the `name`, the second item of the array is the `value`. + */ + entries(): IterableIterator<[string, string]>; + /** + * Returns the value of the first name-value pair whose name is `name`. If there + * are no such pairs, `null` is returned. + * @return or `null` if there is no name-value pair with the given `name`. + */ + get(name: string): string | null; + /** + * Returns `true` if there is at least one name-value pair whose name is `name`. + */ + has(name: string): boolean; + /** + * Returns an iterator over the names of each name-value pair. + * + * ```js + * import { MIMEType } from 'node:util'; + * + * const { params } = new MIMEType('text/plain;foo=0;bar=1'); + * for (const name of params.keys()) { + * console.log(name); + * } + * // Prints: + * // foo + * // bar + * ``` + */ + keys(): IterableIterator; + /** + * Sets the value in the `MIMEParams` object associated with `name` to`value`. If there are any pre-existing name-value pairs whose names are `name`, + * set the first such pair's value to `value`. + * + * ```js + * import { MIMEType } from 'node:util'; + * + * const { params } = new MIMEType('text/plain;foo=0;bar=1'); + * params.set('foo', 'def'); + * params.set('baz', 'xyz'); + * console.log(params.toString()); + * // Prints: foo=def;bar=1;baz=xyz + * ``` + */ + set(name: string, value: string): void; + /** + * Returns an iterator over the values of each name-value pair. + */ + values(): IterableIterator; + /** + * Returns an iterator over each of the name-value pairs in the parameters. + */ + [Symbol.iterator]: typeof MIMEParams.prototype.entries; + } +} +declare module "util/types" { + export * from "util/types"; +} +declare module "util/types" { + import { KeyObject, webcrypto } from "node:crypto"; + /** + * Returns `true` if the value is a built-in [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) or + * [`SharedArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) instance. + * + * See also `util.types.isArrayBuffer()` and `util.types.isSharedArrayBuffer()`. + * + * ```js + * util.types.isAnyArrayBuffer(new ArrayBuffer()); // Returns true + * util.types.isAnyArrayBuffer(new SharedArrayBuffer()); // Returns true + * ``` + * @since v10.0.0 + */ + function isAnyArrayBuffer(object: unknown): object is ArrayBufferLike; + /** + * Returns `true` if the value is an `arguments` object. + * + * ```js + * function foo() { + * util.types.isArgumentsObject(arguments); // Returns true + * } + * ``` + * @since v10.0.0 + */ + function isArgumentsObject(object: unknown): object is IArguments; + /** + * Returns `true` if the value is a built-in [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) instance. + * This does _not_ include [`SharedArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) instances. Usually, it is + * desirable to test for both; See `util.types.isAnyArrayBuffer()` for that. + * + * ```js + * util.types.isArrayBuffer(new ArrayBuffer()); // Returns true + * util.types.isArrayBuffer(new SharedArrayBuffer()); // Returns false + * ``` + * @since v10.0.0 + */ + function isArrayBuffer(object: unknown): object is ArrayBuffer; + /** + * Returns `true` if the value is an instance of one of the [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) views, such as typed + * array objects or [`DataView`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView). Equivalent to + * [`ArrayBuffer.isView()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView). + * + * ```js + * util.types.isArrayBufferView(new Int8Array()); // true + * util.types.isArrayBufferView(Buffer.from('hello world')); // true + * util.types.isArrayBufferView(new DataView(new ArrayBuffer(16))); // true + * util.types.isArrayBufferView(new ArrayBuffer()); // false + * ``` + * @since v10.0.0 + */ + function isArrayBufferView(object: unknown): object is NodeJS.ArrayBufferView; + /** + * Returns `true` if the value is an [async function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function). + * This only reports back what the JavaScript engine is seeing; + * in particular, the return value may not match the original source code if + * a transpilation tool was used. + * + * ```js + * util.types.isAsyncFunction(function foo() {}); // Returns false + * util.types.isAsyncFunction(async function foo() {}); // Returns true + * ``` + * @since v10.0.0 + */ + function isAsyncFunction(object: unknown): boolean; + /** + * Returns `true` if the value is a `BigInt64Array` instance. + * + * ```js + * util.types.isBigInt64Array(new BigInt64Array()); // Returns true + * util.types.isBigInt64Array(new BigUint64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isBigInt64Array(value: unknown): value is BigInt64Array; + /** + * Returns `true` if the value is a `BigUint64Array` instance. + * + * ```js + * util.types.isBigUint64Array(new BigInt64Array()); // Returns false + * util.types.isBigUint64Array(new BigUint64Array()); // Returns true + * ``` + * @since v10.0.0 + */ + function isBigUint64Array(value: unknown): value is BigUint64Array; + /** + * Returns `true` if the value is a boolean object, e.g. created + * by `new Boolean()`. + * + * ```js + * util.types.isBooleanObject(false); // Returns false + * util.types.isBooleanObject(true); // Returns false + * util.types.isBooleanObject(new Boolean(false)); // Returns true + * util.types.isBooleanObject(new Boolean(true)); // Returns true + * util.types.isBooleanObject(Boolean(false)); // Returns false + * util.types.isBooleanObject(Boolean(true)); // Returns false + * ``` + * @since v10.0.0 + */ + function isBooleanObject(object: unknown): object is Boolean; + /** + * Returns `true` if the value is any boxed primitive object, e.g. created + * by `new Boolean()`, `new String()` or `Object(Symbol())`. + * + * For example: + * + * ```js + * util.types.isBoxedPrimitive(false); // Returns false + * util.types.isBoxedPrimitive(new Boolean(false)); // Returns true + * util.types.isBoxedPrimitive(Symbol('foo')); // Returns false + * util.types.isBoxedPrimitive(Object(Symbol('foo'))); // Returns true + * util.types.isBoxedPrimitive(Object(BigInt(5))); // Returns true + * ``` + * @since v10.11.0 + */ + function isBoxedPrimitive(object: unknown): object is String | Number | BigInt | Boolean | Symbol; + /** + * Returns `true` if the value is a built-in [`DataView`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView) instance. + * + * ```js + * const ab = new ArrayBuffer(20); + * util.types.isDataView(new DataView(ab)); // Returns true + * util.types.isDataView(new Float64Array()); // Returns false + * ``` + * + * See also [`ArrayBuffer.isView()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView). + * @since v10.0.0 + */ + function isDataView(object: unknown): object is DataView; + /** + * Returns `true` if the value is a built-in [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) instance. + * + * ```js + * util.types.isDate(new Date()); // Returns true + * ``` + * @since v10.0.0 + */ + function isDate(object: unknown): object is Date; + /** + * Returns `true` if the value is a native `External` value. + * + * A native `External` value is a special type of object that contains a + * raw C++ pointer (`void*`) for access from native code, and has no other + * properties. Such objects are created either by Node.js internals or native + * addons. In JavaScript, they are [frozen](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze) objects with a`null` prototype. + * + * ```c + * #include + * #include + * napi_value result; + * static napi_value MyNapi(napi_env env, napi_callback_info info) { + * int* raw = (int*) malloc(1024); + * napi_status status = napi_create_external(env, (void*) raw, NULL, NULL, &result); + * if (status != napi_ok) { + * napi_throw_error(env, NULL, "napi_create_external failed"); + * return NULL; + * } + * return result; + * } + * ... + * DECLARE_NAPI_PROPERTY("myNapi", MyNapi) + * ... + * ``` + * + * ```js + * const native = require('napi_addon.node'); + * const data = native.myNapi(); + * util.types.isExternal(data); // returns true + * util.types.isExternal(0); // returns false + * util.types.isExternal(new String('foo')); // returns false + * ``` + * + * For further information on `napi_create_external`, refer to `napi_create_external()`. + * @since v10.0.0 + */ + function isExternal(object: unknown): boolean; + /** + * Returns `true` if the value is a built-in [`Float32Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array) instance. + * + * ```js + * util.types.isFloat32Array(new ArrayBuffer()); // Returns false + * util.types.isFloat32Array(new Float32Array()); // Returns true + * util.types.isFloat32Array(new Float64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isFloat32Array(object: unknown): object is Float32Array; + /** + * Returns `true` if the value is a built-in [`Float64Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array) instance. + * + * ```js + * util.types.isFloat64Array(new ArrayBuffer()); // Returns false + * util.types.isFloat64Array(new Uint8Array()); // Returns false + * util.types.isFloat64Array(new Float64Array()); // Returns true + * ``` + * @since v10.0.0 + */ + function isFloat64Array(object: unknown): object is Float64Array; + /** + * Returns `true` if the value is a generator function. + * This only reports back what the JavaScript engine is seeing; + * in particular, the return value may not match the original source code if + * a transpilation tool was used. + * + * ```js + * util.types.isGeneratorFunction(function foo() {}); // Returns false + * util.types.isGeneratorFunction(function* foo() {}); // Returns true + * ``` + * @since v10.0.0 + */ + function isGeneratorFunction(object: unknown): object is GeneratorFunction; + /** + * Returns `true` if the value is a generator object as returned from a + * built-in generator function. + * This only reports back what the JavaScript engine is seeing; + * in particular, the return value may not match the original source code if + * a transpilation tool was used. + * + * ```js + * function* foo() {} + * const generator = foo(); + * util.types.isGeneratorObject(generator); // Returns true + * ``` + * @since v10.0.0 + */ + function isGeneratorObject(object: unknown): object is Generator; + /** + * Returns `true` if the value is a built-in [`Int8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array) instance. + * + * ```js + * util.types.isInt8Array(new ArrayBuffer()); // Returns false + * util.types.isInt8Array(new Int8Array()); // Returns true + * util.types.isInt8Array(new Float64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isInt8Array(object: unknown): object is Int8Array; + /** + * Returns `true` if the value is a built-in [`Int16Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array) instance. + * + * ```js + * util.types.isInt16Array(new ArrayBuffer()); // Returns false + * util.types.isInt16Array(new Int16Array()); // Returns true + * util.types.isInt16Array(new Float64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isInt16Array(object: unknown): object is Int16Array; + /** + * Returns `true` if the value is a built-in [`Int32Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array) instance. + * + * ```js + * util.types.isInt32Array(new ArrayBuffer()); // Returns false + * util.types.isInt32Array(new Int32Array()); // Returns true + * util.types.isInt32Array(new Float64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isInt32Array(object: unknown): object is Int32Array; + /** + * Returns `true` if the value is a built-in [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) instance. + * + * ```js + * util.types.isMap(new Map()); // Returns true + * ``` + * @since v10.0.0 + */ + function isMap( + object: T | {}, + ): object is T extends ReadonlyMap ? (unknown extends T ? never : ReadonlyMap) + : Map; + /** + * Returns `true` if the value is an iterator returned for a built-in [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) instance. + * + * ```js + * const map = new Map(); + * util.types.isMapIterator(map.keys()); // Returns true + * util.types.isMapIterator(map.values()); // Returns true + * util.types.isMapIterator(map.entries()); // Returns true + * util.types.isMapIterator(map[Symbol.iterator]()); // Returns true + * ``` + * @since v10.0.0 + */ + function isMapIterator(object: unknown): boolean; + /** + * Returns `true` if the value is an instance of a [Module Namespace Object](https://tc39.github.io/ecma262/#sec-module-namespace-exotic-objects). + * + * ```js + * import * as ns from './a.js'; + * + * util.types.isModuleNamespaceObject(ns); // Returns true + * ``` + * @since v10.0.0 + */ + function isModuleNamespaceObject(value: unknown): boolean; + /** + * Returns `true` if the value was returned by the constructor of a [built-in `Error` type](https://tc39.es/ecma262/#sec-error-objects). + * + * ```js + * console.log(util.types.isNativeError(new Error())); // true + * console.log(util.types.isNativeError(new TypeError())); // true + * console.log(util.types.isNativeError(new RangeError())); // true + * ``` + * + * Subclasses of the native error types are also native errors: + * + * ```js + * class MyError extends Error {} + * console.log(util.types.isNativeError(new MyError())); // true + * ``` + * + * A value being `instanceof` a native error class is not equivalent to `isNativeError()`returning `true` for that value. `isNativeError()` returns `true` for errors + * which come from a different [realm](https://tc39.es/ecma262/#realm) while `instanceof Error` returns `false`for these errors: + * + * ```js + * const vm = require('node:vm'); + * const context = vm.createContext({}); + * const myError = vm.runInContext('new Error()', context); + * console.log(util.types.isNativeError(myError)); // true + * console.log(myError instanceof Error); // false + * ``` + * + * Conversely, `isNativeError()` returns `false` for all objects which were not + * returned by the constructor of a native error. That includes values + * which are `instanceof` native errors: + * + * ```js + * const myError = { __proto__: Error.prototype }; + * console.log(util.types.isNativeError(myError)); // false + * console.log(myError instanceof Error); // true + * ``` + * @since v10.0.0 + */ + function isNativeError(object: unknown): object is Error; + /** + * Returns `true` if the value is a number object, e.g. created + * by `new Number()`. + * + * ```js + * util.types.isNumberObject(0); // Returns false + * util.types.isNumberObject(new Number(0)); // Returns true + * ``` + * @since v10.0.0 + */ + function isNumberObject(object: unknown): object is Number; + /** + * Returns `true` if the value is a built-in [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise). + * + * ```js + * util.types.isPromise(Promise.resolve(42)); // Returns true + * ``` + * @since v10.0.0 + */ + function isPromise(object: unknown): object is Promise; + /** + * Returns `true` if the value is a [`Proxy`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) instance. + * + * ```js + * const target = {}; + * const proxy = new Proxy(target, {}); + * util.types.isProxy(target); // Returns false + * util.types.isProxy(proxy); // Returns true + * ``` + * @since v10.0.0 + */ + function isProxy(object: unknown): boolean; + /** + * Returns `true` if the value is a regular expression object. + * + * ```js + * util.types.isRegExp(/abc/); // Returns true + * util.types.isRegExp(new RegExp('abc')); // Returns true + * ``` + * @since v10.0.0 + */ + function isRegExp(object: unknown): object is RegExp; + /** + * Returns `true` if the value is a built-in [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) instance. + * + * ```js + * util.types.isSet(new Set()); // Returns true + * ``` + * @since v10.0.0 + */ + function isSet( + object: T | {}, + ): object is T extends ReadonlySet ? (unknown extends T ? never : ReadonlySet) : Set; + /** + * Returns `true` if the value is an iterator returned for a built-in [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) instance. + * + * ```js + * const set = new Set(); + * util.types.isSetIterator(set.keys()); // Returns true + * util.types.isSetIterator(set.values()); // Returns true + * util.types.isSetIterator(set.entries()); // Returns true + * util.types.isSetIterator(set[Symbol.iterator]()); // Returns true + * ``` + * @since v10.0.0 + */ + function isSetIterator(object: unknown): boolean; + /** + * Returns `true` if the value is a built-in [`SharedArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) instance. + * This does _not_ include [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) instances. Usually, it is + * desirable to test for both; See `util.types.isAnyArrayBuffer()` for that. + * + * ```js + * util.types.isSharedArrayBuffer(new ArrayBuffer()); // Returns false + * util.types.isSharedArrayBuffer(new SharedArrayBuffer()); // Returns true + * ``` + * @since v10.0.0 + */ + function isSharedArrayBuffer(object: unknown): object is SharedArrayBuffer; + /** + * Returns `true` if the value is a string object, e.g. created + * by `new String()`. + * + * ```js + * util.types.isStringObject('foo'); // Returns false + * util.types.isStringObject(new String('foo')); // Returns true + * ``` + * @since v10.0.0 + */ + function isStringObject(object: unknown): object is String; + /** + * Returns `true` if the value is a symbol object, created + * by calling `Object()` on a `Symbol` primitive. + * + * ```js + * const symbol = Symbol('foo'); + * util.types.isSymbolObject(symbol); // Returns false + * util.types.isSymbolObject(Object(symbol)); // Returns true + * ``` + * @since v10.0.0 + */ + function isSymbolObject(object: unknown): object is Symbol; + /** + * Returns `true` if the value is a built-in [`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray) instance. + * + * ```js + * util.types.isTypedArray(new ArrayBuffer()); // Returns false + * util.types.isTypedArray(new Uint8Array()); // Returns true + * util.types.isTypedArray(new Float64Array()); // Returns true + * ``` + * + * See also [`ArrayBuffer.isView()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView). + * @since v10.0.0 + */ + function isTypedArray(object: unknown): object is NodeJS.TypedArray; + /** + * Returns `true` if the value is a built-in [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) instance. + * + * ```js + * util.types.isUint8Array(new ArrayBuffer()); // Returns false + * util.types.isUint8Array(new Uint8Array()); // Returns true + * util.types.isUint8Array(new Float64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isUint8Array(object: unknown): object is Uint8Array; + /** + * Returns `true` if the value is a built-in [`Uint8ClampedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray) instance. + * + * ```js + * util.types.isUint8ClampedArray(new ArrayBuffer()); // Returns false + * util.types.isUint8ClampedArray(new Uint8ClampedArray()); // Returns true + * util.types.isUint8ClampedArray(new Float64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isUint8ClampedArray(object: unknown): object is Uint8ClampedArray; + /** + * Returns `true` if the value is a built-in [`Uint16Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array) instance. + * + * ```js + * util.types.isUint16Array(new ArrayBuffer()); // Returns false + * util.types.isUint16Array(new Uint16Array()); // Returns true + * util.types.isUint16Array(new Float64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isUint16Array(object: unknown): object is Uint16Array; + /** + * Returns `true` if the value is a built-in [`Uint32Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array) instance. + * + * ```js + * util.types.isUint32Array(new ArrayBuffer()); // Returns false + * util.types.isUint32Array(new Uint32Array()); // Returns true + * util.types.isUint32Array(new Float64Array()); // Returns false + * ``` + * @since v10.0.0 + */ + function isUint32Array(object: unknown): object is Uint32Array; + /** + * Returns `true` if the value is a built-in [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) instance. + * + * ```js + * util.types.isWeakMap(new WeakMap()); // Returns true + * ``` + * @since v10.0.0 + */ + function isWeakMap(object: unknown): object is WeakMap; + /** + * Returns `true` if the value is a built-in [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) instance. + * + * ```js + * util.types.isWeakSet(new WeakSet()); // Returns true + * ``` + * @since v10.0.0 + */ + function isWeakSet(object: unknown): object is WeakSet; + /** + * Returns `true` if `value` is a `KeyObject`, `false` otherwise. + * @since v16.2.0 + */ + function isKeyObject(object: unknown): object is KeyObject; + /** + * Returns `true` if `value` is a `CryptoKey`, `false` otherwise. + * @since v16.2.0 + */ + function isCryptoKey(object: unknown): object is webcrypto.CryptoKey; +} +declare module "node:util" { + export * from "util"; +} +declare module "node:util/types" { + export * from "util/types"; +} diff --git a/node_modules/@types/node/ts4.8/v8.d.ts b/node_modules/@types/node/ts4.8/v8.d.ts new file mode 100644 index 00000000..6790e762 --- /dev/null +++ b/node_modules/@types/node/ts4.8/v8.d.ts @@ -0,0 +1,635 @@ +/** + * The `node:v8` module exposes APIs that are specific to the version of [V8](https://developers.google.com/v8/) built into the Node.js binary. It can be accessed using: + * + * ```js + * const v8 = require('node:v8'); + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/v8.js) + */ +declare module "v8" { + import { Readable } from "node:stream"; + interface HeapSpaceInfo { + space_name: string; + space_size: number; + space_used_size: number; + space_available_size: number; + physical_space_size: number; + } + // ** Signifies if the --zap_code_space option is enabled or not. 1 == enabled, 0 == disabled. */ + type DoesZapCodeSpaceFlag = 0 | 1; + interface HeapInfo { + total_heap_size: number; + total_heap_size_executable: number; + total_physical_size: number; + total_available_size: number; + used_heap_size: number; + heap_size_limit: number; + malloced_memory: number; + peak_malloced_memory: number; + does_zap_garbage: DoesZapCodeSpaceFlag; + number_of_native_contexts: number; + number_of_detached_contexts: number; + total_global_handles_size: number; + used_global_handles_size: number; + external_memory: number; + } + interface HeapCodeStatistics { + code_and_metadata_size: number; + bytecode_and_metadata_size: number; + external_script_source_size: number; + } + /** + * Returns an integer representing a version tag derived from the V8 version, + * command-line flags, and detected CPU features. This is useful for determining + * whether a `vm.Script` `cachedData` buffer is compatible with this instance + * of V8. + * + * ```js + * console.log(v8.cachedDataVersionTag()); // 3947234607 + * // The value returned by v8.cachedDataVersionTag() is derived from the V8 + * // version, command-line flags, and detected CPU features. Test that the value + * // does indeed update when flags are toggled. + * v8.setFlagsFromString('--allow_natives_syntax'); + * console.log(v8.cachedDataVersionTag()); // 183726201 + * ``` + * @since v8.0.0 + */ + function cachedDataVersionTag(): number; + /** + * Returns an object with the following properties: + * + * `does_zap_garbage` is a 0/1 boolean, which signifies whether the`--zap_code_space` option is enabled or not. This makes V8 overwrite heap + * garbage with a bit pattern. The RSS footprint (resident set size) gets bigger + * because it continuously touches all heap pages and that makes them less likely + * to get swapped out by the operating system. + * + * `number_of_native_contexts` The value of native\_context is the number of the + * top-level contexts currently active. Increase of this number over time indicates + * a memory leak. + * + * `number_of_detached_contexts` The value of detached\_context is the number + * of contexts that were detached and not yet garbage collected. This number + * being non-zero indicates a potential memory leak. + * + * `total_global_handles_size` The value of total\_global\_handles\_size is the + * total memory size of V8 global handles. + * + * `used_global_handles_size` The value of used\_global\_handles\_size is the + * used memory size of V8 global handles. + * + * `external_memory` The value of external\_memory is the memory size of array + * buffers and external strings. + * + * ```js + * { + * total_heap_size: 7326976, + * total_heap_size_executable: 4194304, + * total_physical_size: 7326976, + * total_available_size: 1152656, + * used_heap_size: 3476208, + * heap_size_limit: 1535115264, + * malloced_memory: 16384, + * peak_malloced_memory: 1127496, + * does_zap_garbage: 0, + * number_of_native_contexts: 1, + * number_of_detached_contexts: 0, + * total_global_handles_size: 8192, + * used_global_handles_size: 3296, + * external_memory: 318824 + * } + * ``` + * @since v1.0.0 + */ + function getHeapStatistics(): HeapInfo; + /** + * Returns statistics about the V8 heap spaces, i.e. the segments which make up + * the V8 heap. Neither the ordering of heap spaces, nor the availability of a + * heap space can be guaranteed as the statistics are provided via the + * V8[`GetHeapSpaceStatistics`](https://v8docs.nodesource.com/node-13.2/d5/dda/classv8_1_1_isolate.html#ac673576f24fdc7a33378f8f57e1d13a4) function and may change from one V8 version to the + * next. + * + * The value returned is an array of objects containing the following properties: + * + * ```json + * [ + * { + * "space_name": "new_space", + * "space_size": 2063872, + * "space_used_size": 951112, + * "space_available_size": 80824, + * "physical_space_size": 2063872 + * }, + * { + * "space_name": "old_space", + * "space_size": 3090560, + * "space_used_size": 2493792, + * "space_available_size": 0, + * "physical_space_size": 3090560 + * }, + * { + * "space_name": "code_space", + * "space_size": 1260160, + * "space_used_size": 644256, + * "space_available_size": 960, + * "physical_space_size": 1260160 + * }, + * { + * "space_name": "map_space", + * "space_size": 1094160, + * "space_used_size": 201608, + * "space_available_size": 0, + * "physical_space_size": 1094160 + * }, + * { + * "space_name": "large_object_space", + * "space_size": 0, + * "space_used_size": 0, + * "space_available_size": 1490980608, + * "physical_space_size": 0 + * } + * ] + * ``` + * @since v6.0.0 + */ + function getHeapSpaceStatistics(): HeapSpaceInfo[]; + /** + * The `v8.setFlagsFromString()` method can be used to programmatically set + * V8 command-line flags. This method should be used with care. Changing settings + * after the VM has started may result in unpredictable behavior, including + * crashes and data loss; or it may simply do nothing. + * + * The V8 options available for a version of Node.js may be determined by running`node --v8-options`. + * + * Usage: + * + * ```js + * // Print GC events to stdout for one minute. + * const v8 = require('node:v8'); + * v8.setFlagsFromString('--trace_gc'); + * setTimeout(() => { v8.setFlagsFromString('--notrace_gc'); }, 60e3); + * ``` + * @since v1.0.0 + */ + function setFlagsFromString(flags: string): void; + /** + * Generates a snapshot of the current V8 heap and returns a Readable + * Stream that may be used to read the JSON serialized representation. + * This JSON stream format is intended to be used with tools such as + * Chrome DevTools. The JSON schema is undocumented and specific to the + * V8 engine. Therefore, the schema may change from one version of V8 to the next. + * + * Creating a heap snapshot requires memory about twice the size of the heap at + * the time the snapshot is created. This results in the risk of OOM killers + * terminating the process. + * + * Generating a snapshot is a synchronous operation which blocks the event loop + * for a duration depending on the heap size. + * + * ```js + * // Print heap snapshot to the console + * const v8 = require('node:v8'); + * const stream = v8.getHeapSnapshot(); + * stream.pipe(process.stdout); + * ``` + * @since v11.13.0 + * @return A Readable containing the V8 heap snapshot. + */ + function getHeapSnapshot(): Readable; + /** + * Generates a snapshot of the current V8 heap and writes it to a JSON + * file. This file is intended to be used with tools such as Chrome + * DevTools. The JSON schema is undocumented and specific to the V8 + * engine, and may change from one version of V8 to the next. + * + * A heap snapshot is specific to a single V8 isolate. When using `worker threads`, a heap snapshot generated from the main thread will + * not contain any information about the workers, and vice versa. + * + * Creating a heap snapshot requires memory about twice the size of the heap at + * the time the snapshot is created. This results in the risk of OOM killers + * terminating the process. + * + * Generating a snapshot is a synchronous operation which blocks the event loop + * for a duration depending on the heap size. + * + * ```js + * const { writeHeapSnapshot } = require('node:v8'); + * const { + * Worker, + * isMainThread, + * parentPort, + * } = require('node:worker_threads'); + * + * if (isMainThread) { + * const worker = new Worker(__filename); + * + * worker.once('message', (filename) => { + * console.log(`worker heapdump: ${filename}`); + * // Now get a heapdump for the main thread. + * console.log(`main thread heapdump: ${writeHeapSnapshot()}`); + * }); + * + * // Tell the worker to create a heapdump. + * worker.postMessage('heapdump'); + * } else { + * parentPort.once('message', (message) => { + * if (message === 'heapdump') { + * // Generate a heapdump for the worker + * // and return the filename to the parent. + * parentPort.postMessage(writeHeapSnapshot()); + * } + * }); + * } + * ``` + * @since v11.13.0 + * @param filename The file path where the V8 heap snapshot is to be saved. If not specified, a file name with the pattern `'Heap-${yyyymmdd}-${hhmmss}-${pid}-${thread_id}.heapsnapshot'` will be + * generated, where `{pid}` will be the PID of the Node.js process, `{thread_id}` will be `0` when `writeHeapSnapshot()` is called from the main Node.js thread or the id of a + * worker thread. + * @return The filename where the snapshot was saved. + */ + function writeHeapSnapshot(filename?: string): string; + /** + * Get statistics about code and its metadata in the heap, see + * V8[`GetHeapCodeAndMetadataStatistics`](https://v8docs.nodesource.com/node-13.2/d5/dda/classv8_1_1_isolate.html#a6079122af17612ef54ef3348ce170866) API. Returns an object with the + * following properties: + * + * ```js + * { + * code_and_metadata_size: 212208, + * bytecode_and_metadata_size: 161368, + * external_script_source_size: 1410794, + * cpu_profiler_metadata_size: 0, + * } + * ``` + * @since v12.8.0 + */ + function getHeapCodeStatistics(): HeapCodeStatistics; + /** + * @since v8.0.0 + */ + class Serializer { + /** + * Writes out a header, which includes the serialization format version. + */ + writeHeader(): void; + /** + * Serializes a JavaScript value and adds the serialized representation to the + * internal buffer. + * + * This throws an error if `value` cannot be serialized. + */ + writeValue(val: any): boolean; + /** + * Returns the stored internal buffer. This serializer should not be used once + * the buffer is released. Calling this method results in undefined behavior + * if a previous write has failed. + */ + releaseBuffer(): Buffer; + /** + * Marks an `ArrayBuffer` as having its contents transferred out of band. + * Pass the corresponding `ArrayBuffer` in the deserializing context to `deserializer.transferArrayBuffer()`. + * @param id A 32-bit unsigned integer. + * @param arrayBuffer An `ArrayBuffer` instance. + */ + transferArrayBuffer(id: number, arrayBuffer: ArrayBuffer): void; + /** + * Write a raw 32-bit unsigned integer. + * For use inside of a custom `serializer._writeHostObject()`. + */ + writeUint32(value: number): void; + /** + * Write a raw 64-bit unsigned integer, split into high and low 32-bit parts. + * For use inside of a custom `serializer._writeHostObject()`. + */ + writeUint64(hi: number, lo: number): void; + /** + * Write a JS `number` value. + * For use inside of a custom `serializer._writeHostObject()`. + */ + writeDouble(value: number): void; + /** + * Write raw bytes into the serializer's internal buffer. The deserializer + * will require a way to compute the length of the buffer. + * For use inside of a custom `serializer._writeHostObject()`. + */ + writeRawBytes(buffer: NodeJS.TypedArray): void; + } + /** + * A subclass of `Serializer` that serializes `TypedArray`(in particular `Buffer`) and `DataView` objects as host objects, and only + * stores the part of their underlying `ArrayBuffer`s that they are referring to. + * @since v8.0.0 + */ + class DefaultSerializer extends Serializer {} + /** + * @since v8.0.0 + */ + class Deserializer { + constructor(data: NodeJS.TypedArray); + /** + * Reads and validates a header (including the format version). + * May, for example, reject an invalid or unsupported wire format. In that case, + * an `Error` is thrown. + */ + readHeader(): boolean; + /** + * Deserializes a JavaScript value from the buffer and returns it. + */ + readValue(): any; + /** + * Marks an `ArrayBuffer` as having its contents transferred out of band. + * Pass the corresponding `ArrayBuffer` in the serializing context to `serializer.transferArrayBuffer()` (or return the `id` from `serializer._getSharedArrayBufferId()` in the case of + * `SharedArrayBuffer`s). + * @param id A 32-bit unsigned integer. + * @param arrayBuffer An `ArrayBuffer` instance. + */ + transferArrayBuffer(id: number, arrayBuffer: ArrayBuffer): void; + /** + * Reads the underlying wire format version. Likely mostly to be useful to + * legacy code reading old wire format versions. May not be called before`.readHeader()`. + */ + getWireFormatVersion(): number; + /** + * Read a raw 32-bit unsigned integer and return it. + * For use inside of a custom `deserializer._readHostObject()`. + */ + readUint32(): number; + /** + * Read a raw 64-bit unsigned integer and return it as an array `[hi, lo]`with two 32-bit unsigned integer entries. + * For use inside of a custom `deserializer._readHostObject()`. + */ + readUint64(): [number, number]; + /** + * Read a JS `number` value. + * For use inside of a custom `deserializer._readHostObject()`. + */ + readDouble(): number; + /** + * Read raw bytes from the deserializer's internal buffer. The `length` parameter + * must correspond to the length of the buffer that was passed to `serializer.writeRawBytes()`. + * For use inside of a custom `deserializer._readHostObject()`. + */ + readRawBytes(length: number): Buffer; + } + /** + * A subclass of `Deserializer` corresponding to the format written by `DefaultSerializer`. + * @since v8.0.0 + */ + class DefaultDeserializer extends Deserializer {} + /** + * Uses a `DefaultSerializer` to serialize `value` into a buffer. + * + * `ERR_BUFFER_TOO_LARGE` will be thrown when trying to + * serialize a huge object which requires buffer + * larger than `buffer.constants.MAX_LENGTH`. + * @since v8.0.0 + */ + function serialize(value: any): Buffer; + /** + * Uses a `DefaultDeserializer` with default options to read a JS value + * from a buffer. + * @since v8.0.0 + * @param buffer A buffer returned by {@link serialize}. + */ + function deserialize(buffer: NodeJS.TypedArray): any; + /** + * The `v8.takeCoverage()` method allows the user to write the coverage started by `NODE_V8_COVERAGE` to disk on demand. This method can be invoked multiple + * times during the lifetime of the process. Each time the execution counter will + * be reset and a new coverage report will be written to the directory specified + * by `NODE_V8_COVERAGE`. + * + * When the process is about to exit, one last coverage will still be written to + * disk unless {@link stopCoverage} is invoked before the process exits. + * @since v15.1.0, v14.18.0, v12.22.0 + */ + function takeCoverage(): void; + /** + * The `v8.stopCoverage()` method allows the user to stop the coverage collection + * started by `NODE_V8_COVERAGE`, so that V8 can release the execution count + * records and optimize code. This can be used in conjunction with {@link takeCoverage} if the user wants to collect the coverage on demand. + * @since v15.1.0, v14.18.0, v12.22.0 + */ + function stopCoverage(): void; + /** + * This API collects GC data in current thread. + * @since v19.6.0, v18.15.0 + */ + class GCProfiler { + /** + * Start collecting GC data. + * @since v19.6.0, v18.15.0 + */ + start(): void; + /** + * Stop collecting GC data and return an object.The content of object + * is as follows. + * + * ```json + * { + * "version": 1, + * "startTime": 1674059033862, + * "statistics": [ + * { + * "gcType": "Scavenge", + * "beforeGC": { + * "heapStatistics": { + * "totalHeapSize": 5005312, + * "totalHeapSizeExecutable": 524288, + * "totalPhysicalSize": 5226496, + * "totalAvailableSize": 4341325216, + * "totalGlobalHandlesSize": 8192, + * "usedGlobalHandlesSize": 2112, + * "usedHeapSize": 4883840, + * "heapSizeLimit": 4345298944, + * "mallocedMemory": 254128, + * "externalMemory": 225138, + * "peakMallocedMemory": 181760 + * }, + * "heapSpaceStatistics": [ + * { + * "spaceName": "read_only_space", + * "spaceSize": 0, + * "spaceUsedSize": 0, + * "spaceAvailableSize": 0, + * "physicalSpaceSize": 0 + * } + * ] + * }, + * "cost": 1574.14, + * "afterGC": { + * "heapStatistics": { + * "totalHeapSize": 6053888, + * "totalHeapSizeExecutable": 524288, + * "totalPhysicalSize": 5500928, + * "totalAvailableSize": 4341101384, + * "totalGlobalHandlesSize": 8192, + * "usedGlobalHandlesSize": 2112, + * "usedHeapSize": 4059096, + * "heapSizeLimit": 4345298944, + * "mallocedMemory": 254128, + * "externalMemory": 225138, + * "peakMallocedMemory": 181760 + * }, + * "heapSpaceStatistics": [ + * { + * "spaceName": "read_only_space", + * "spaceSize": 0, + * "spaceUsedSize": 0, + * "spaceAvailableSize": 0, + * "physicalSpaceSize": 0 + * } + * ] + * } + * } + * ], + * "endTime": 1674059036865 + * } + * ``` + * + * Here's an example. + * + * ```js + * const { GCProfiler } = require('v8'); + * const profiler = new GCProfiler(); + * profiler.start(); + * setTimeout(() => { + * console.log(profiler.stop()); + * }, 1000); + * ``` + * @since v19.6.0, v18.15.0 + */ + stop(): GCProfilerResult; + } + interface GCProfilerResult { + version: number; + startTime: number; + endTime: number; + statistics: Array<{ + gcType: string; + cost: number; + beforeGC: { + heapStatistics: HeapStatistics; + heapSpaceStatistics: HeapSpaceStatistics[]; + }; + afterGC: { + heapStatistics: HeapStatistics; + heapSpaceStatistics: HeapSpaceStatistics[]; + }; + }>; + } + interface HeapStatistics { + totalHeapSize: number; + totalHeapSizeExecutable: number; + totalPhysicalSize: number; + totalAvailableSize: number; + totalGlobalHandlesSize: number; + usedGlobalHandlesSize: number; + usedHeapSize: number; + heapSizeLimit: number; + mallocedMemory: number; + externalMemory: number; + peakMallocedMemory: number; + } + interface HeapSpaceStatistics { + spaceName: string; + spaceSize: number; + spaceUsedSize: number; + spaceAvailableSize: number; + physicalSpaceSize: number; + } + /** + * Called when a promise is constructed. This does not mean that corresponding before/after events will occur, only that the possibility exists. This will + * happen if a promise is created without ever getting a continuation. + * @since v17.1.0, v16.14.0 + * @param promise The promise being created. + * @param parent The promise continued from, if applicable. + */ + interface Init { + (promise: Promise, parent: Promise): void; + } + /** + * Called before a promise continuation executes. This can be in the form of `then()`, `catch()`, or `finally()` handlers or an await resuming. + * + * The before callback will be called 0 to N times. The before callback will typically be called 0 times if no continuation was ever made for the promise. + * The before callback may be called many times in the case where many continuations have been made from the same promise. + * @since v17.1.0, v16.14.0 + */ + interface Before { + (promise: Promise): void; + } + /** + * Called immediately after a promise continuation executes. This may be after a `then()`, `catch()`, or `finally()` handler or before an await after another await. + * @since v17.1.0, v16.14.0 + */ + interface After { + (promise: Promise): void; + } + /** + * Called when the promise receives a resolution or rejection value. This may occur synchronously in the case of {@link Promise.resolve()} or + * {@link Promise.reject()}. + * @since v17.1.0, v16.14.0 + */ + interface Settled { + (promise: Promise): void; + } + /** + * Key events in the lifetime of a promise have been categorized into four areas: creation of a promise, before/after a continuation handler is called or + * around an await, and when the promise resolves or rejects. + * + * Because promises are asynchronous resources whose lifecycle is tracked via the promise hooks mechanism, the `init()`, `before()`, `after()`, and + * `settled()` callbacks must not be async functions as they create more promises which would produce an infinite loop. + * @since v17.1.0, v16.14.0 + */ + interface HookCallbacks { + init?: Init; + before?: Before; + after?: After; + settled?: Settled; + } + interface PromiseHooks { + /** + * The `init` hook must be a plain function. Providing an async function will throw as it would produce an infinite microtask loop. + * @since v17.1.0, v16.14.0 + * @param init The {@link Init | `init` callback} to call when a promise is created. + * @return Call to stop the hook. + */ + onInit: (init: Init) => Function; + /** + * The `settled` hook must be a plain function. Providing an async function will throw as it would produce an infinite microtask loop. + * @since v17.1.0, v16.14.0 + * @param settled The {@link Settled | `settled` callback} to call when a promise is created. + * @return Call to stop the hook. + */ + onSettled: (settled: Settled) => Function; + /** + * The `before` hook must be a plain function. Providing an async function will throw as it would produce an infinite microtask loop. + * @since v17.1.0, v16.14.0 + * @param before The {@link Before | `before` callback} to call before a promise continuation executes. + * @return Call to stop the hook. + */ + onBefore: (before: Before) => Function; + /** + * The `after` hook must be a plain function. Providing an async function will throw as it would produce an infinite microtask loop. + * @since v17.1.0, v16.14.0 + * @param after The {@link After | `after` callback} to call after a promise continuation executes. + * @return Call to stop the hook. + */ + onAfter: (after: After) => Function; + /** + * Registers functions to be called for different lifetime events of each promise. + * The callbacks `init()`/`before()`/`after()`/`settled()` are called for the respective events during a promise's lifetime. + * All callbacks are optional. For example, if only promise creation needs to be tracked, then only the init callback needs to be passed. + * The hook callbacks must be plain functions. Providing async functions will throw as it would produce an infinite microtask loop. + * @since v17.1.0, v16.14.0 + * @param callbacks The {@link HookCallbacks | Hook Callbacks} to register + * @return Used for disabling hooks + */ + createHook: (callbacks: HookCallbacks) => Function; + } + /** + * The `promiseHooks` interface can be used to track promise lifecycle events. + * @since v17.1.0, v16.14.0 + */ + const promiseHooks: PromiseHooks; +} +declare module "node:v8" { + export * from "v8"; +} diff --git a/node_modules/@types/node/ts4.8/vm.d.ts b/node_modules/@types/node/ts4.8/vm.d.ts new file mode 100644 index 00000000..e44faacd --- /dev/null +++ b/node_modules/@types/node/ts4.8/vm.d.ts @@ -0,0 +1,901 @@ +/** + * The `node:vm` module enables compiling and running code within V8 Virtual + * Machine contexts. + * + * **The `node:vm` module is not a security** + * **mechanism. Do not use it to run untrusted code.** + * + * JavaScript code can be compiled and run immediately or + * compiled, saved, and run later. + * + * A common use case is to run the code in a different V8 Context. This means + * invoked code has a different global object than the invoking code. + * + * One can provide the context by `contextifying` an + * object. The invoked code treats any property in the context like a + * global variable. Any changes to global variables caused by the invoked + * code are reflected in the context object. + * + * ```js + * const vm = require('node:vm'); + * + * const x = 1; + * + * const context = { x: 2 }; + * vm.createContext(context); // Contextify the object. + * + * const code = 'x += 40; var y = 17;'; + * // `x` and `y` are global variables in the context. + * // Initially, x has the value 2 because that is the value of context.x. + * vm.runInContext(code, context); + * + * console.log(context.x); // 42 + * console.log(context.y); // 17 + * + * console.log(x); // 1; y is not defined. + * ``` + * @see [source](https://github.com/nodejs/node/blob/v20.2.0/lib/vm.js) + */ +declare module "vm" { + import { ImportAssertions } from "node:module"; + interface Context extends NodeJS.Dict {} + interface BaseOptions { + /** + * Specifies the filename used in stack traces produced by this script. + * Default: `''`. + */ + filename?: string | undefined; + /** + * Specifies the line number offset that is displayed in stack traces produced by this script. + * Default: `0`. + */ + lineOffset?: number | undefined; + /** + * Specifies the column number offset that is displayed in stack traces produced by this script. + * @default 0 + */ + columnOffset?: number | undefined; + } + interface ScriptOptions extends BaseOptions { + /** + * V8's code cache data for the supplied source. + */ + cachedData?: Buffer | NodeJS.ArrayBufferView | undefined; + /** @deprecated in favor of `script.createCachedData()` */ + produceCachedData?: boolean | undefined; + /** + * Called during evaluation of this module when `import()` is called. + * If this option is not specified, calls to `import()` will reject with `ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING`. + */ + importModuleDynamically?: + | ((specifier: string, script: Script, importAssertions: ImportAssertions) => Module) + | undefined; + } + interface RunningScriptOptions extends BaseOptions { + /** + * When `true`, if an `Error` occurs while compiling the `code`, the line of code causing the error is attached to the stack trace. + * Default: `true`. + */ + displayErrors?: boolean | undefined; + /** + * Specifies the number of milliseconds to execute code before terminating execution. + * If execution is terminated, an `Error` will be thrown. This value must be a strictly positive integer. + */ + timeout?: number | undefined; + /** + * If `true`, the execution will be terminated when `SIGINT` (Ctrl+C) is received. + * Existing handlers for the event that have been attached via `process.on('SIGINT')` will be disabled during script execution, but will continue to work after that. + * If execution is terminated, an `Error` will be thrown. + * Default: `false`. + */ + breakOnSigint?: boolean | undefined; + } + interface RunningScriptInNewContextOptions extends RunningScriptOptions { + /** + * Human-readable name of the newly created context. + */ + contextName?: CreateContextOptions["name"]; + /** + * Origin corresponding to the newly created context for display purposes. The origin should be formatted like a URL, + * but with only the scheme, host, and port (if necessary), like the value of the `url.origin` property of a `URL` object. + * Most notably, this string should omit the trailing slash, as that denotes a path. + */ + contextOrigin?: CreateContextOptions["origin"]; + contextCodeGeneration?: CreateContextOptions["codeGeneration"]; + /** + * If set to `afterEvaluate`, microtasks will be run immediately after the script has run. + */ + microtaskMode?: CreateContextOptions["microtaskMode"]; + } + interface RunningCodeOptions extends RunningScriptOptions { + cachedData?: ScriptOptions["cachedData"]; + importModuleDynamically?: ScriptOptions["importModuleDynamically"]; + } + interface RunningCodeInNewContextOptions extends RunningScriptInNewContextOptions { + cachedData?: ScriptOptions["cachedData"]; + importModuleDynamically?: ScriptOptions["importModuleDynamically"]; + } + interface CompileFunctionOptions extends BaseOptions { + /** + * Provides an optional data with V8's code cache data for the supplied source. + */ + cachedData?: Buffer | undefined; + /** + * Specifies whether to produce new cache data. + * Default: `false`, + */ + produceCachedData?: boolean | undefined; + /** + * The sandbox/context in which the said function should be compiled in. + */ + parsingContext?: Context | undefined; + /** + * An array containing a collection of context extensions (objects wrapping the current scope) to be applied while compiling + */ + contextExtensions?: Object[] | undefined; + } + interface CreateContextOptions { + /** + * Human-readable name of the newly created context. + * @default 'VM Context i' Where i is an ascending numerical index of the created context. + */ + name?: string | undefined; + /** + * Corresponds to the newly created context for display purposes. + * The origin should be formatted like a `URL`, but with only the scheme, host, and port (if necessary), + * like the value of the `url.origin` property of a URL object. + * Most notably, this string should omit the trailing slash, as that denotes a path. + * @default '' + */ + origin?: string | undefined; + codeGeneration?: + | { + /** + * If set to false any calls to eval or function constructors (Function, GeneratorFunction, etc) + * will throw an EvalError. + * @default true + */ + strings?: boolean | undefined; + /** + * If set to false any attempt to compile a WebAssembly module will throw a WebAssembly.CompileError. + * @default true + */ + wasm?: boolean | undefined; + } + | undefined; + /** + * If set to `afterEvaluate`, microtasks will be run immediately after the script has run. + */ + microtaskMode?: "afterEvaluate" | undefined; + } + type MeasureMemoryMode = "summary" | "detailed"; + interface MeasureMemoryOptions { + /** + * @default 'summary' + */ + mode?: MeasureMemoryMode | undefined; + /** + * @default 'default' + */ + execution?: "default" | "eager" | undefined; + } + interface MemoryMeasurement { + total: { + jsMemoryEstimate: number; + jsMemoryRange: [number, number]; + }; + } + /** + * Instances of the `vm.Script` class contain precompiled scripts that can be + * executed in specific contexts. + * @since v0.3.1 + */ + class Script { + constructor(code: string, options?: ScriptOptions | string); + /** + * Runs the compiled code contained by the `vm.Script` object within the given`contextifiedObject` and returns the result. Running code does not have access + * to local scope. + * + * The following example compiles code that increments a global variable, sets + * the value of another global variable, then execute the code multiple times. + * The globals are contained in the `context` object. + * + * ```js + * const vm = require('node:vm'); + * + * const context = { + * animal: 'cat', + * count: 2, + * }; + * + * const script = new vm.Script('count += 1; name = "kitty";'); + * + * vm.createContext(context); + * for (let i = 0; i < 10; ++i) { + * script.runInContext(context); + * } + * + * console.log(context); + * // Prints: { animal: 'cat', count: 12, name: 'kitty' } + * ``` + * + * Using the `timeout` or `breakOnSigint` options will result in new event loops + * and corresponding threads being started, which have a non-zero performance + * overhead. + * @since v0.3.1 + * @param contextifiedObject A `contextified` object as returned by the `vm.createContext()` method. + * @return the result of the very last statement executed in the script. + */ + runInContext(contextifiedObject: Context, options?: RunningScriptOptions): any; + /** + * First contextifies the given `contextObject`, runs the compiled code contained + * by the `vm.Script` object within the created context, and returns the result. + * Running code does not have access to local scope. + * + * The following example compiles code that sets a global variable, then executes + * the code multiple times in different contexts. The globals are set on and + * contained within each individual `context`. + * + * ```js + * const vm = require('node:vm'); + * + * const script = new vm.Script('globalVar = "set"'); + * + * const contexts = [{}, {}, {}]; + * contexts.forEach((context) => { + * script.runInNewContext(context); + * }); + * + * console.log(contexts); + * // Prints: [{ globalVar: 'set' }, { globalVar: 'set' }, { globalVar: 'set' }] + * ``` + * @since v0.3.1 + * @param contextObject An object that will be `contextified`. If `undefined`, a new object will be created. + * @return the result of the very last statement executed in the script. + */ + runInNewContext(contextObject?: Context, options?: RunningScriptInNewContextOptions): any; + /** + * Runs the compiled code contained by the `vm.Script` within the context of the + * current `global` object. Running code does not have access to local scope, but _does_ have access to the current `global` object. + * + * The following example compiles code that increments a `global` variable then + * executes that code multiple times: + * + * ```js + * const vm = require('node:vm'); + * + * global.globalVar = 0; + * + * const script = new vm.Script('globalVar += 1', { filename: 'myfile.vm' }); + * + * for (let i = 0; i < 1000; ++i) { + * script.runInThisContext(); + * } + * + * console.log(globalVar); + * + * // 1000 + * ``` + * @since v0.3.1 + * @return the result of the very last statement executed in the script. + */ + runInThisContext(options?: RunningScriptOptions): any; + /** + * Creates a code cache that can be used with the `Script` constructor's`cachedData` option. Returns a `Buffer`. This method may be called at any + * time and any number of times. + * + * The code cache of the `Script` doesn't contain any JavaScript observable + * states. The code cache is safe to be saved along side the script source and + * used to construct new `Script` instances multiple times. + * + * Functions in the `Script` source can be marked as lazily compiled and they are + * not compiled at construction of the `Script`. These functions are going to be + * compiled when they are invoked the first time. The code cache serializes the + * metadata that V8 currently knows about the `Script` that it can use to speed up + * future compilations. + * + * ```js + * const script = new vm.Script(` + * function add(a, b) { + * return a + b; + * } + * + * const x = add(1, 2); + * `); + * + * const cacheWithoutAdd = script.createCachedData(); + * // In `cacheWithoutAdd` the function `add()` is marked for full compilation + * // upon invocation. + * + * script.runInThisContext(); + * + * const cacheWithAdd = script.createCachedData(); + * // `cacheWithAdd` contains fully compiled function `add()`. + * ``` + * @since v10.6.0 + */ + createCachedData(): Buffer; + /** @deprecated in favor of `script.createCachedData()` */ + cachedDataProduced?: boolean | undefined; + /** + * When `cachedData` is supplied to create the `vm.Script`, this value will be set + * to either `true` or `false` depending on acceptance of the data by V8\. + * Otherwise the value is `undefined`. + * @since v5.7.0 + */ + cachedDataRejected?: boolean | undefined; + cachedData?: Buffer | undefined; + /** + * When the script is compiled from a source that contains a source map magic + * comment, this property will be set to the URL of the source map. + * + * ```js + * import vm from 'node:vm'; + * + * const script = new vm.Script(` + * function myFunc() {} + * //# sourceMappingURL=sourcemap.json + * `); + * + * console.log(script.sourceMapURL); + * // Prints: sourcemap.json + * ``` + * @since v19.1.0, v18.13.0 + */ + sourceMapURL?: string | undefined; + } + /** + * If given a `contextObject`, the `vm.createContext()` method will `prepare + * that object` so that it can be used in calls to {@link runInContext} or `script.runInContext()`. Inside such scripts, + * the `contextObject` will be the global object, retaining all of its existing + * properties but also having the built-in objects and functions any standard [global object](https://es5.github.io/#x15.1) has. Outside of scripts run by the vm module, global variables + * will remain unchanged. + * + * ```js + * const vm = require('node:vm'); + * + * global.globalVar = 3; + * + * const context = { globalVar: 1 }; + * vm.createContext(context); + * + * vm.runInContext('globalVar *= 2;', context); + * + * console.log(context); + * // Prints: { globalVar: 2 } + * + * console.log(global.globalVar); + * // Prints: 3 + * ``` + * + * If `contextObject` is omitted (or passed explicitly as `undefined`), a new, + * empty `contextified` object will be returned. + * + * The `vm.createContext()` method is primarily useful for creating a single + * context that can be used to run multiple scripts. For instance, if emulating a + * web browser, the method can be used to create a single context representing a + * window's global object, then run all ` +``` + +This bundle can be used with different module systems; it creates global `Ajv` if no module system is found. + +The browser bundle is available on [cdnjs](https://cdnjs.com/libraries/ajv). + +Ajv is tested with these browsers: + +[![Sauce Test Status](https://saucelabs.com/browser-matrix/epoberezkin.svg)](https://saucelabs.com/u/epoberezkin) + +__Please note__: some frameworks, e.g. Dojo, may redefine global require in such way that is not compatible with CommonJS module format. In such case Ajv bundle has to be loaded before the framework and then you can use global Ajv (see issue [#234](https://github.com/ajv-validator/ajv/issues/234)). + + +### Ajv and Content Security Policies (CSP) + +If you're using Ajv to compile a schema (the typical use) in a browser document that is loaded with a Content Security Policy (CSP), that policy will require a `script-src` directive that includes the value `'unsafe-eval'`. +:warning: NOTE, however, that `unsafe-eval` is NOT recommended in a secure CSP[[1]](https://developer.chrome.com/extensions/contentSecurityPolicy#relaxing-eval), as it has the potential to open the document to cross-site scripting (XSS) attacks. + +In order to make use of Ajv without easing your CSP, you can [pre-compile a schema using the CLI](https://github.com/ajv-validator/ajv-cli#compile-schemas). This will transpile the schema JSON into a JavaScript file that exports a `validate` function that works simlarly to a schema compiled at runtime. + +Note that pre-compilation of schemas is performed using [ajv-pack](https://github.com/ajv-validator/ajv-pack) and there are [some limitations to the schema features it can compile](https://github.com/ajv-validator/ajv-pack#limitations). A successfully pre-compiled schema is equivalent to the same schema compiled at runtime. + + +## Command line interface + +CLI is available as a separate npm package [ajv-cli](https://github.com/ajv-validator/ajv-cli). It supports: + +- compiling JSON Schemas to test their validity +- BETA: generating standalone module exporting a validation function to be used without Ajv (using [ajv-pack](https://github.com/ajv-validator/ajv-pack)) +- migrate schemas to draft-07 (using [json-schema-migrate](https://github.com/epoberezkin/json-schema-migrate)) +- validating data file(s) against JSON Schema +- testing expected validity of data against JSON Schema +- referenced schemas +- custom meta-schemas +- files in JSON, JSON5, YAML, and JavaScript format +- all Ajv options +- reporting changes in data after validation in [JSON-patch](https://tools.ietf.org/html/rfc6902) format + + +## Validation keywords + +Ajv supports all validation keywords from draft-07 of JSON Schema standard: + +- [type](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#type) +- [for numbers](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#keywords-for-numbers) - maximum, minimum, exclusiveMaximum, exclusiveMinimum, multipleOf +- [for strings](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#keywords-for-strings) - maxLength, minLength, pattern, format +- [for arrays](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#keywords-for-arrays) - maxItems, minItems, uniqueItems, items, additionalItems, [contains](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#contains) +- [for objects](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#keywords-for-objects) - maxProperties, minProperties, required, properties, patternProperties, additionalProperties, dependencies, [propertyNames](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#propertynames) +- [for all types](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#keywords-for-all-types) - enum, [const](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#const) +- [compound keywords](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#compound-keywords) - not, oneOf, anyOf, allOf, [if/then/else](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#ifthenelse) + +With [ajv-keywords](https://github.com/ajv-validator/ajv-keywords) package Ajv also supports validation keywords from [JSON Schema extension proposals](https://github.com/json-schema/json-schema/wiki/v5-Proposals) for JSON Schema standard: + +- [patternRequired](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#patternrequired-proposed) - like `required` but with patterns that some property should match. +- [formatMaximum, formatMinimum, formatExclusiveMaximum, formatExclusiveMinimum](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md#formatmaximum--formatminimum-and-exclusiveformatmaximum--exclusiveformatminimum-proposed) - setting limits for date, time, etc. + +See [JSON Schema validation keywords](https://github.com/ajv-validator/ajv/blob/master/KEYWORDS.md) for more details. + + +## Annotation keywords + +JSON Schema specification defines several annotation keywords that describe schema itself but do not perform any validation. + +- `title` and `description`: information about the data represented by that schema +- `$comment` (NEW in draft-07): information for developers. With option `$comment` Ajv logs or passes the comment string to the user-supplied function. See [Options](#options). +- `default`: a default value of the data instance, see [Assigning defaults](#assigning-defaults). +- `examples` (NEW in draft-06): an array of data instances. Ajv does not check the validity of these instances against the schema. +- `readOnly` and `writeOnly` (NEW in draft-07): marks data-instance as read-only or write-only in relation to the source of the data (database, api, etc.). +- `contentEncoding`: [RFC 2045](https://tools.ietf.org/html/rfc2045#section-6.1 ), e.g., "base64". +- `contentMediaType`: [RFC 2046](https://tools.ietf.org/html/rfc2046), e.g., "image/png". + +__Please note__: Ajv does not implement validation of the keywords `examples`, `contentEncoding` and `contentMediaType` but it reserves them. If you want to create a plugin that implements some of them, it should remove these keywords from the instance. + + +## Formats + +Ajv implements formats defined by JSON Schema specification and several other formats. It is recommended NOT to use "format" keyword implementations with untrusted data, as they use potentially unsafe regular expressions - see [ReDoS attack](#redos-attack). + +__Please note__: if you need to use "format" keyword to validate untrusted data, you MUST assess their suitability and safety for your validation scenarios. + +The following formats are implemented for string validation with "format" keyword: + +- _date_: full-date according to [RFC3339](http://tools.ietf.org/html/rfc3339#section-5.6). +- _time_: time with optional time-zone. +- _date-time_: date-time from the same source (time-zone is mandatory). `date`, `time` and `date-time` validate ranges in `full` mode and only regexp in `fast` mode (see [options](#options)). +- _uri_: full URI. +- _uri-reference_: URI reference, including full and relative URIs. +- _uri-template_: URI template according to [RFC6570](https://tools.ietf.org/html/rfc6570) +- _url_ (deprecated): [URL record](https://url.spec.whatwg.org/#concept-url). +- _email_: email address. +- _hostname_: host name according to [RFC1034](http://tools.ietf.org/html/rfc1034#section-3.5). +- _ipv4_: IP address v4. +- _ipv6_: IP address v6. +- _regex_: tests whether a string is a valid regular expression by passing it to RegExp constructor. +- _uuid_: Universally Unique IDentifier according to [RFC4122](http://tools.ietf.org/html/rfc4122). +- _json-pointer_: JSON-pointer according to [RFC6901](https://tools.ietf.org/html/rfc6901). +- _relative-json-pointer_: relative JSON-pointer according to [this draft](http://tools.ietf.org/html/draft-luff-relative-json-pointer-00). + +__Please note__: JSON Schema draft-07 also defines formats `iri`, `iri-reference`, `idn-hostname` and `idn-email` for URLs, hostnames and emails with international characters. Ajv does not implement these formats. If you create Ajv plugin that implements them please make a PR to mention this plugin here. + +There are two modes of format validation: `fast` and `full`. This mode affects formats `date`, `time`, `date-time`, `uri`, `uri-reference`, and `email`. See [Options](#options) for details. + +You can add additional formats and replace any of the formats above using [addFormat](#api-addformat) method. + +The option `unknownFormats` allows changing the default behaviour when an unknown format is encountered. In this case Ajv can either fail schema compilation (default) or ignore it (default in versions before 5.0.0). You also can allow specific format(s) that will be ignored. See [Options](#options) for details. + +You can find regular expressions used for format validation and the sources that were used in [formats.js](https://github.com/ajv-validator/ajv/blob/master/lib/compile/formats.js). + + +## Combining schemas with $ref + +You can structure your validation logic across multiple schema files and have schemas reference each other using `$ref` keyword. + +Example: + +```javascript +var schema = { + "$id": "http://example.com/schemas/schema.json", + "type": "object", + "properties": { + "foo": { "$ref": "defs.json#/definitions/int" }, + "bar": { "$ref": "defs.json#/definitions/str" } + } +}; + +var defsSchema = { + "$id": "http://example.com/schemas/defs.json", + "definitions": { + "int": { "type": "integer" }, + "str": { "type": "string" } + } +}; +``` + +Now to compile your schema you can either pass all schemas to Ajv instance: + +```javascript +var ajv = new Ajv({schemas: [schema, defsSchema]}); +var validate = ajv.getSchema('http://example.com/schemas/schema.json'); +``` + +or use `addSchema` method: + +```javascript +var ajv = new Ajv; +var validate = ajv.addSchema(defsSchema) + .compile(schema); +``` + +See [Options](#options) and [addSchema](#api) method. + +__Please note__: +- `$ref` is resolved as the uri-reference using schema $id as the base URI (see the example). +- References can be recursive (and mutually recursive) to implement the schemas for different data structures (such as linked lists, trees, graphs, etc.). +- You don't have to host your schema files at the URIs that you use as schema $id. These URIs are only used to identify the schemas, and according to JSON Schema specification validators should not expect to be able to download the schemas from these URIs. +- The actual location of the schema file in the file system is not used. +- You can pass the identifier of the schema as the second parameter of `addSchema` method or as a property name in `schemas` option. This identifier can be used instead of (or in addition to) schema $id. +- You cannot have the same $id (or the schema identifier) used for more than one schema - the exception will be thrown. +- You can implement dynamic resolution of the referenced schemas using `compileAsync` method. In this way you can store schemas in any system (files, web, database, etc.) and reference them without explicitly adding to Ajv instance. See [Asynchronous schema compilation](#asynchronous-schema-compilation). + + +## $data reference + +With `$data` option you can use values from the validated data as the values for the schema keywords. See [proposal](https://github.com/json-schema-org/json-schema-spec/issues/51) for more information about how it works. + +`$data` reference is supported in the keywords: const, enum, format, maximum/minimum, exclusiveMaximum / exclusiveMinimum, maxLength / minLength, maxItems / minItems, maxProperties / minProperties, formatMaximum / formatMinimum, formatExclusiveMaximum / formatExclusiveMinimum, multipleOf, pattern, required, uniqueItems. + +The value of "$data" should be a [JSON-pointer](https://tools.ietf.org/html/rfc6901) to the data (the root is always the top level data object, even if the $data reference is inside a referenced subschema) or a [relative JSON-pointer](http://tools.ietf.org/html/draft-luff-relative-json-pointer-00) (it is relative to the current point in data; if the $data reference is inside a referenced subschema it cannot point to the data outside of the root level for this subschema). + +Examples. + +This schema requires that the value in property `smaller` is less or equal than the value in the property larger: + +```javascript +var ajv = new Ajv({$data: true}); + +var schema = { + "properties": { + "smaller": { + "type": "number", + "maximum": { "$data": "1/larger" } + }, + "larger": { "type": "number" } + } +}; + +var validData = { + smaller: 5, + larger: 7 +}; + +ajv.validate(schema, validData); // true +``` + +This schema requires that the properties have the same format as their field names: + +```javascript +var schema = { + "additionalProperties": { + "type": "string", + "format": { "$data": "0#" } + } +}; + +var validData = { + 'date-time': '1963-06-19T08:30:06.283185Z', + email: 'joe.bloggs@example.com' +} +``` + +`$data` reference is resolved safely - it won't throw even if some property is undefined. If `$data` resolves to `undefined` the validation succeeds (with the exclusion of `const` keyword). If `$data` resolves to incorrect type (e.g. not "number" for maximum keyword) the validation fails. + + +## $merge and $patch keywords + +With the package [ajv-merge-patch](https://github.com/ajv-validator/ajv-merge-patch) you can use the keywords `$merge` and `$patch` that allow extending JSON Schemas with patches using formats [JSON Merge Patch (RFC 7396)](https://tools.ietf.org/html/rfc7396) and [JSON Patch (RFC 6902)](https://tools.ietf.org/html/rfc6902). + +To add keywords `$merge` and `$patch` to Ajv instance use this code: + +```javascript +require('ajv-merge-patch')(ajv); +``` + +Examples. + +Using `$merge`: + +```json +{ + "$merge": { + "source": { + "type": "object", + "properties": { "p": { "type": "string" } }, + "additionalProperties": false + }, + "with": { + "properties": { "q": { "type": "number" } } + } + } +} +``` + +Using `$patch`: + +```json +{ + "$patch": { + "source": { + "type": "object", + "properties": { "p": { "type": "string" } }, + "additionalProperties": false + }, + "with": [ + { "op": "add", "path": "/properties/q", "value": { "type": "number" } } + ] + } +} +``` + +The schemas above are equivalent to this schema: + +```json +{ + "type": "object", + "properties": { + "p": { "type": "string" }, + "q": { "type": "number" } + }, + "additionalProperties": false +} +``` + +The properties `source` and `with` in the keywords `$merge` and `$patch` can use absolute or relative `$ref` to point to other schemas previously added to the Ajv instance or to the fragments of the current schema. + +See the package [ajv-merge-patch](https://github.com/ajv-validator/ajv-merge-patch) for more information. + + +## Defining custom keywords + +The advantages of using custom keywords are: + +- allow creating validation scenarios that cannot be expressed using JSON Schema +- simplify your schemas +- help bringing a bigger part of the validation logic to your schemas +- make your schemas more expressive, less verbose and closer to your application domain +- implement custom data processors that modify your data (`modifying` option MUST be used in keyword definition) and/or create side effects while the data is being validated + +If a keyword is used only for side-effects and its validation result is pre-defined, use option `valid: true/false` in keyword definition to simplify both generated code (no error handling in case of `valid: true`) and your keyword functions (no need to return any validation result). + +The concerns you have to be aware of when extending JSON Schema standard with custom keywords are the portability and understanding of your schemas. You will have to support these custom keywords on other platforms and to properly document these keywords so that everybody can understand them in your schemas. + +You can define custom keywords with [addKeyword](#api-addkeyword) method. Keywords are defined on the `ajv` instance level - new instances will not have previously defined keywords. + +Ajv allows defining keywords with: +- validation function +- compilation function +- macro function +- inline compilation function that should return code (as string) that will be inlined in the currently compiled schema. + +Example. `range` and `exclusiveRange` keywords using compiled schema: + +```javascript +ajv.addKeyword('range', { + type: 'number', + compile: function (sch, parentSchema) { + var min = sch[0]; + var max = sch[1]; + + return parentSchema.exclusiveRange === true + ? function (data) { return data > min && data < max; } + : function (data) { return data >= min && data <= max; } + } +}); + +var schema = { "range": [2, 4], "exclusiveRange": true }; +var validate = ajv.compile(schema); +console.log(validate(2.01)); // true +console.log(validate(3.99)); // true +console.log(validate(2)); // false +console.log(validate(4)); // false +``` + +Several custom keywords (typeof, instanceof, range and propertyNames) are defined in [ajv-keywords](https://github.com/ajv-validator/ajv-keywords) package - they can be used for your schemas and as a starting point for your own custom keywords. + +See [Defining custom keywords](https://github.com/ajv-validator/ajv/blob/master/CUSTOM.md) for more details. + + +## Asynchronous schema compilation + +During asynchronous compilation remote references are loaded using supplied function. See `compileAsync` [method](#api-compileAsync) and `loadSchema` [option](#options). + +Example: + +```javascript +var ajv = new Ajv({ loadSchema: loadSchema }); + +ajv.compileAsync(schema).then(function (validate) { + var valid = validate(data); + // ... +}); + +function loadSchema(uri) { + return request.json(uri).then(function (res) { + if (res.statusCode >= 400) + throw new Error('Loading error: ' + res.statusCode); + return res.body; + }); +} +``` + +__Please note__: [Option](#options) `missingRefs` should NOT be set to `"ignore"` or `"fail"` for asynchronous compilation to work. + + +## Asynchronous validation + +Example in Node.js REPL: https://tonicdev.com/esp/ajv-asynchronous-validation + +You can define custom formats and keywords that perform validation asynchronously by accessing database or some other service. You should add `async: true` in the keyword or format definition (see [addFormat](#api-addformat), [addKeyword](#api-addkeyword) and [Defining custom keywords](#defining-custom-keywords)). + +If your schema uses asynchronous formats/keywords or refers to some schema that contains them it should have `"$async": true` keyword so that Ajv can compile it correctly. If asynchronous format/keyword or reference to asynchronous schema is used in the schema without `$async` keyword Ajv will throw an exception during schema compilation. + +__Please note__: all asynchronous subschemas that are referenced from the current or other schemas should have `"$async": true` keyword as well, otherwise the schema compilation will fail. + +Validation function for an asynchronous custom format/keyword should return a promise that resolves with `true` or `false` (or rejects with `new Ajv.ValidationError(errors)` if you want to return custom errors from the keyword function). + +Ajv compiles asynchronous schemas to [es7 async functions](http://tc39.github.io/ecmascript-asyncawait/) that can optionally be transpiled with [nodent](https://github.com/MatAtBread/nodent). Async functions are supported in Node.js 7+ and all modern browsers. You can also supply any other transpiler as a function via `processCode` option. See [Options](#options). + +The compiled validation function has `$async: true` property (if the schema is asynchronous), so you can differentiate these functions if you are using both synchronous and asynchronous schemas. + +Validation result will be a promise that resolves with validated data or rejects with an exception `Ajv.ValidationError` that contains the array of validation errors in `errors` property. + + +Example: + +```javascript +var ajv = new Ajv; +// require('ajv-async')(ajv); + +ajv.addKeyword('idExists', { + async: true, + type: 'number', + validate: checkIdExists +}); + + +function checkIdExists(schema, data) { + return knex(schema.table) + .select('id') + .where('id', data) + .then(function (rows) { + return !!rows.length; // true if record is found + }); +} + +var schema = { + "$async": true, + "properties": { + "userId": { + "type": "integer", + "idExists": { "table": "users" } + }, + "postId": { + "type": "integer", + "idExists": { "table": "posts" } + } + } +}; + +var validate = ajv.compile(schema); + +validate({ userId: 1, postId: 19 }) +.then(function (data) { + console.log('Data is valid', data); // { userId: 1, postId: 19 } +}) +.catch(function (err) { + if (!(err instanceof Ajv.ValidationError)) throw err; + // data is invalid + console.log('Validation errors:', err.errors); +}); +``` + +### Using transpilers with asynchronous validation functions. + +[ajv-async](https://github.com/ajv-validator/ajv-async) uses [nodent](https://github.com/MatAtBread/nodent) to transpile async functions. To use another transpiler you should separately install it (or load its bundle in the browser). + + +#### Using nodent + +```javascript +var ajv = new Ajv; +require('ajv-async')(ajv); +// in the browser if you want to load ajv-async bundle separately you can: +// window.ajvAsync(ajv); +var validate = ajv.compile(schema); // transpiled es7 async function +validate(data).then(successFunc).catch(errorFunc); +``` + + +#### Using other transpilers + +```javascript +var ajv = new Ajv({ processCode: transpileFunc }); +var validate = ajv.compile(schema); // transpiled es7 async function +validate(data).then(successFunc).catch(errorFunc); +``` + +See [Options](#options). + + +## Security considerations + +JSON Schema, if properly used, can replace data sanitisation. It doesn't replace other API security considerations. It also introduces additional security aspects to consider. + + +##### Security contact + +To report a security vulnerability, please use the +[Tidelift security contact](https://tidelift.com/security). +Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerabilities via GitHub issues. + + +##### Untrusted schemas + +Ajv treats JSON schemas as trusted as your application code. This security model is based on the most common use case, when the schemas are static and bundled together with the application. + +If your schemas are received from untrusted sources (or generated from untrusted data) there are several scenarios you need to prevent: +- compiling schemas can cause stack overflow (if they are too deep) +- compiling schemas can be slow (e.g. [#557](https://github.com/ajv-validator/ajv/issues/557)) +- validating certain data can be slow + +It is difficult to predict all the scenarios, but at the very least it may help to limit the size of untrusted schemas (e.g. limit JSON string length) and also the maximum schema object depth (that can be high for relatively small JSON strings). You also may want to mitigate slow regular expressions in `pattern` and `patternProperties` keywords. + +Regardless the measures you take, using untrusted schemas increases security risks. + + +##### Circular references in JavaScript objects + +Ajv does not support schemas and validated data that have circular references in objects. See [issue #802](https://github.com/ajv-validator/ajv/issues/802). + +An attempt to compile such schemas or validate such data would cause stack overflow (or will not complete in case of asynchronous validation). Depending on the parser you use, untrusted data can lead to circular references. + + +##### Security risks of trusted schemas + +Some keywords in JSON Schemas can lead to very slow validation for certain data. These keywords include (but may be not limited to): + +- `pattern` and `format` for large strings - in some cases using `maxLength` can help mitigate it, but certain regular expressions can lead to exponential validation time even with relatively short strings (see [ReDoS attack](#redos-attack)). +- `patternProperties` for large property names - use `propertyNames` to mitigate, but some regular expressions can have exponential evaluation time as well. +- `uniqueItems` for large non-scalar arrays - use `maxItems` to mitigate + +__Please note__: The suggestions above to prevent slow validation would only work if you do NOT use `allErrors: true` in production code (using it would continue validation after validation errors). + +You can validate your JSON schemas against [this meta-schema](https://github.com/ajv-validator/ajv/blob/master/lib/refs/json-schema-secure.json) to check that these recommendations are followed: + +```javascript +const isSchemaSecure = ajv.compile(require('ajv/lib/refs/json-schema-secure.json')); + +const schema1 = {format: 'email'}; +isSchemaSecure(schema1); // false + +const schema2 = {format: 'email', maxLength: MAX_LENGTH}; +isSchemaSecure(schema2); // true +``` + +__Please note__: following all these recommendation is not a guarantee that validation of untrusted data is safe - it can still lead to some undesirable results. + + +##### Content Security Policies (CSP) +See [Ajv and Content Security Policies (CSP)](#ajv-and-content-security-policies-csp) + + +## ReDoS attack + +Certain regular expressions can lead to the exponential evaluation time even with relatively short strings. + +Please assess the regular expressions you use in the schemas on their vulnerability to this attack - see [safe-regex](https://github.com/substack/safe-regex), for example. + +__Please note__: some formats that Ajv implements use [regular expressions](https://github.com/ajv-validator/ajv/blob/master/lib/compile/formats.js) that can be vulnerable to ReDoS attack, so if you use Ajv to validate data from untrusted sources __it is strongly recommended__ to consider the following: + +- making assessment of "format" implementations in Ajv. +- using `format: 'fast'` option that simplifies some of the regular expressions (although it does not guarantee that they are safe). +- replacing format implementations provided by Ajv with your own implementations of "format" keyword that either uses different regular expressions or another approach to format validation. Please see [addFormat](#api-addformat) method. +- disabling format validation by ignoring "format" keyword with option `format: false` + +Whatever mitigation you choose, please assume all formats provided by Ajv as potentially unsafe and make your own assessment of their suitability for your validation scenarios. + + +## Filtering data + +With [option `removeAdditional`](#options) (added by [andyscott](https://github.com/andyscott)) you can filter data during the validation. + +This option modifies original data. + +Example: + +```javascript +var ajv = new Ajv({ removeAdditional: true }); +var schema = { + "additionalProperties": false, + "properties": { + "foo": { "type": "number" }, + "bar": { + "additionalProperties": { "type": "number" }, + "properties": { + "baz": { "type": "string" } + } + } + } +} + +var data = { + "foo": 0, + "additional1": 1, // will be removed; `additionalProperties` == false + "bar": { + "baz": "abc", + "additional2": 2 // will NOT be removed; `additionalProperties` != false + }, +} + +var validate = ajv.compile(schema); + +console.log(validate(data)); // true +console.log(data); // { "foo": 0, "bar": { "baz": "abc", "additional2": 2 } +``` + +If `removeAdditional` option in the example above were `"all"` then both `additional1` and `additional2` properties would have been removed. + +If the option were `"failing"` then property `additional1` would have been removed regardless of its value and property `additional2` would have been removed only if its value were failing the schema in the inner `additionalProperties` (so in the example above it would have stayed because it passes the schema, but any non-number would have been removed). + +__Please note__: If you use `removeAdditional` option with `additionalProperties` keyword inside `anyOf`/`oneOf` keywords your validation can fail with this schema, for example: + +```json +{ + "type": "object", + "oneOf": [ + { + "properties": { + "foo": { "type": "string" } + }, + "required": [ "foo" ], + "additionalProperties": false + }, + { + "properties": { + "bar": { "type": "integer" } + }, + "required": [ "bar" ], + "additionalProperties": false + } + ] +} +``` + +The intention of the schema above is to allow objects with either the string property "foo" or the integer property "bar", but not with both and not with any other properties. + +With the option `removeAdditional: true` the validation will pass for the object `{ "foo": "abc"}` but will fail for the object `{"bar": 1}`. It happens because while the first subschema in `oneOf` is validated, the property `bar` is removed because it is an additional property according to the standard (because it is not included in `properties` keyword in the same schema). + +While this behaviour is unexpected (issues [#129](https://github.com/ajv-validator/ajv/issues/129), [#134](https://github.com/ajv-validator/ajv/issues/134)), it is correct. To have the expected behaviour (both objects are allowed and additional properties are removed) the schema has to be refactored in this way: + +```json +{ + "type": "object", + "properties": { + "foo": { "type": "string" }, + "bar": { "type": "integer" } + }, + "additionalProperties": false, + "oneOf": [ + { "required": [ "foo" ] }, + { "required": [ "bar" ] } + ] +} +``` + +The schema above is also more efficient - it will compile into a faster function. + + +## Assigning defaults + +With [option `useDefaults`](#options) Ajv will assign values from `default` keyword in the schemas of `properties` and `items` (when it is the array of schemas) to the missing properties and items. + +With the option value `"empty"` properties and items equal to `null` or `""` (empty string) will be considered missing and assigned defaults. + +This option modifies original data. + +__Please note__: the default value is inserted in the generated validation code as a literal, so the value inserted in the data will be the deep clone of the default in the schema. + + +Example 1 (`default` in `properties`): + +```javascript +var ajv = new Ajv({ useDefaults: true }); +var schema = { + "type": "object", + "properties": { + "foo": { "type": "number" }, + "bar": { "type": "string", "default": "baz" } + }, + "required": [ "foo", "bar" ] +}; + +var data = { "foo": 1 }; + +var validate = ajv.compile(schema); + +console.log(validate(data)); // true +console.log(data); // { "foo": 1, "bar": "baz" } +``` + +Example 2 (`default` in `items`): + +```javascript +var schema = { + "type": "array", + "items": [ + { "type": "number" }, + { "type": "string", "default": "foo" } + ] +} + +var data = [ 1 ]; + +var validate = ajv.compile(schema); + +console.log(validate(data)); // true +console.log(data); // [ 1, "foo" ] +``` + +`default` keywords in other cases are ignored: + +- not in `properties` or `items` subschemas +- in schemas inside `anyOf`, `oneOf` and `not` (see [#42](https://github.com/ajv-validator/ajv/issues/42)) +- in `if` subschema of `switch` keyword +- in schemas generated by custom macro keywords + +The [`strictDefaults` option](#options) customizes Ajv's behavior for the defaults that Ajv ignores (`true` raises an error, and `"log"` outputs a warning). + + +## Coercing data types + +When you are validating user inputs all your data properties are usually strings. The option `coerceTypes` allows you to have your data types coerced to the types specified in your schema `type` keywords, both to pass the validation and to use the correctly typed data afterwards. + +This option modifies original data. + +__Please note__: if you pass a scalar value to the validating function its type will be coerced and it will pass the validation, but the value of the variable you pass won't be updated because scalars are passed by value. + + +Example 1: + +```javascript +var ajv = new Ajv({ coerceTypes: true }); +var schema = { + "type": "object", + "properties": { + "foo": { "type": "number" }, + "bar": { "type": "boolean" } + }, + "required": [ "foo", "bar" ] +}; + +var data = { "foo": "1", "bar": "false" }; + +var validate = ajv.compile(schema); + +console.log(validate(data)); // true +console.log(data); // { "foo": 1, "bar": false } +``` + +Example 2 (array coercions): + +```javascript +var ajv = new Ajv({ coerceTypes: 'array' }); +var schema = { + "properties": { + "foo": { "type": "array", "items": { "type": "number" } }, + "bar": { "type": "boolean" } + } +}; + +var data = { "foo": "1", "bar": ["false"] }; + +var validate = ajv.compile(schema); + +console.log(validate(data)); // true +console.log(data); // { "foo": [1], "bar": false } +``` + +The coercion rules, as you can see from the example, are different from JavaScript both to validate user input as expected and to have the coercion reversible (to correctly validate cases where different types are defined in subschemas of "anyOf" and other compound keywords). + +See [Coercion rules](https://github.com/ajv-validator/ajv/blob/master/COERCION.md) for details. + + +## API + +##### new Ajv(Object options) -> Object + +Create Ajv instance. + + +##### .compile(Object schema) -> Function<Object data> + +Generate validating function and cache the compiled schema for future use. + +Validating function returns a boolean value. This function has properties `errors` and `schema`. Errors encountered during the last validation are assigned to `errors` property (it is assigned `null` if there was no errors). `schema` property contains the reference to the original schema. + +The schema passed to this method will be validated against meta-schema unless `validateSchema` option is false. If schema is invalid, an error will be thrown. See [options](#options). + + +##### .compileAsync(Object schema [, Boolean meta] [, Function callback]) -> Promise + +Asynchronous version of `compile` method that loads missing remote schemas using asynchronous function in `options.loadSchema`. This function returns a Promise that resolves to a validation function. An optional callback passed to `compileAsync` will be called with 2 parameters: error (or null) and validating function. The returned promise will reject (and the callback will be called with an error) when: + +- missing schema can't be loaded (`loadSchema` returns a Promise that rejects). +- a schema containing a missing reference is loaded, but the reference cannot be resolved. +- schema (or some loaded/referenced schema) is invalid. + +The function compiles schema and loads the first missing schema (or meta-schema) until all missing schemas are loaded. + +You can asynchronously compile meta-schema by passing `true` as the second parameter. + +See example in [Asynchronous compilation](#asynchronous-schema-compilation). + + +##### .validate(Object schema|String key|String ref, data) -> Boolean + +Validate data using passed schema (it will be compiled and cached). + +Instead of the schema you can use the key that was previously passed to `addSchema`, the schema id if it was present in the schema or any previously resolved reference. + +Validation errors will be available in the `errors` property of Ajv instance (`null` if there were no errors). + +__Please note__: every time this method is called the errors are overwritten so you need to copy them to another variable if you want to use them later. + +If the schema is asynchronous (has `$async` keyword on the top level) this method returns a Promise. See [Asynchronous validation](#asynchronous-validation). + + +##### .addSchema(Array<Object>|Object schema [, String key]) -> Ajv + +Add schema(s) to validator instance. This method does not compile schemas (but it still validates them). Because of that dependencies can be added in any order and circular dependencies are supported. It also prevents unnecessary compilation of schemas that are containers for other schemas but not used as a whole. + +Array of schemas can be passed (schemas should have ids), the second parameter will be ignored. + +Key can be passed that can be used to reference the schema and will be used as the schema id if there is no id inside the schema. If the key is not passed, the schema id will be used as the key. + + +Once the schema is added, it (and all the references inside it) can be referenced in other schemas and used to validate data. + +Although `addSchema` does not compile schemas, explicit compilation is not required - the schema will be compiled when it is used first time. + +By default the schema is validated against meta-schema before it is added, and if the schema does not pass validation the exception is thrown. This behaviour is controlled by `validateSchema` option. + +__Please note__: Ajv uses the [method chaining syntax](https://en.wikipedia.org/wiki/Method_chaining) for all methods with the prefix `add*` and `remove*`. +This allows you to do nice things like the following. + +```javascript +var validate = new Ajv().addSchema(schema).addFormat(name, regex).getSchema(uri); +``` + +##### .addMetaSchema(Array<Object>|Object schema [, String key]) -> Ajv + +Adds meta schema(s) that can be used to validate other schemas. That function should be used instead of `addSchema` because there may be instance options that would compile a meta schema incorrectly (at the moment it is `removeAdditional` option). + +There is no need to explicitly add draft-07 meta schema (http://json-schema.org/draft-07/schema) - it is added by default, unless option `meta` is set to `false`. You only need to use it if you have a changed meta-schema that you want to use to validate your schemas. See `validateSchema`. + + +##### .validateSchema(Object schema) -> Boolean + +Validates schema. This method should be used to validate schemas rather than `validate` due to the inconsistency of `uri` format in JSON Schema standard. + +By default this method is called automatically when the schema is added, so you rarely need to use it directly. + +If schema doesn't have `$schema` property, it is validated against draft 6 meta-schema (option `meta` should not be false). + +If schema has `$schema` property, then the schema with this id (that should be previously added) is used to validate passed schema. + +Errors will be available at `ajv.errors`. + + +##### .getSchema(String key) -> Function<Object data> + +Retrieve compiled schema previously added with `addSchema` by the key passed to `addSchema` or by its full reference (id). The returned validating function has `schema` property with the reference to the original schema. + + +##### .removeSchema([Object schema|String key|String ref|RegExp pattern]) -> Ajv + +Remove added/cached schema. Even if schema is referenced by other schemas it can be safely removed as dependent schemas have local references. + +Schema can be removed using: +- key passed to `addSchema` +- it's full reference (id) +- RegExp that should match schema id or key (meta-schemas won't be removed) +- actual schema object that will be stable-stringified to remove schema from cache + +If no parameter is passed all schemas but meta-schemas will be removed and the cache will be cleared. + + +##### .addFormat(String name, String|RegExp|Function|Object format) -> Ajv + +Add custom format to validate strings or numbers. It can also be used to replace pre-defined formats for Ajv instance. + +Strings are converted to RegExp. + +Function should return validation result as `true` or `false`. + +If object is passed it should have properties `validate`, `compare` and `async`: + +- _validate_: a string, RegExp or a function as described above. +- _compare_: an optional comparison function that accepts two strings and compares them according to the format meaning. This function is used with keywords `formatMaximum`/`formatMinimum` (defined in [ajv-keywords](https://github.com/ajv-validator/ajv-keywords) package). It should return `1` if the first value is bigger than the second value, `-1` if it is smaller and `0` if it is equal. +- _async_: an optional `true` value if `validate` is an asynchronous function; in this case it should return a promise that resolves with a value `true` or `false`. +- _type_: an optional type of data that the format applies to. It can be `"string"` (default) or `"number"` (see https://github.com/ajv-validator/ajv/issues/291#issuecomment-259923858). If the type of data is different, the validation will pass. + +Custom formats can be also added via `formats` option. + + +##### .addKeyword(String keyword, Object definition) -> Ajv + +Add custom validation keyword to Ajv instance. + +Keyword should be different from all standard JSON Schema keywords and different from previously defined keywords. There is no way to redefine keywords or to remove keyword definition from the instance. + +Keyword must start with a letter, `_` or `$`, and may continue with letters, numbers, `_`, `$`, or `-`. +It is recommended to use an application-specific prefix for keywords to avoid current and future name collisions. + +Example Keywords: +- `"xyz-example"`: valid, and uses prefix for the xyz project to avoid name collisions. +- `"example"`: valid, but not recommended as it could collide with future versions of JSON Schema etc. +- `"3-example"`: invalid as numbers are not allowed to be the first character in a keyword + +Keyword definition is an object with the following properties: + +- _type_: optional string or array of strings with data type(s) that the keyword applies to. If not present, the keyword will apply to all types. +- _validate_: validating function +- _compile_: compiling function +- _macro_: macro function +- _inline_: compiling function that returns code (as string) +- _schema_: an optional `false` value used with "validate" keyword to not pass schema +- _metaSchema_: an optional meta-schema for keyword schema +- _dependencies_: an optional list of properties that must be present in the parent schema - it will be checked during schema compilation +- _modifying_: `true` MUST be passed if keyword modifies data +- _statements_: `true` can be passed in case inline keyword generates statements (as opposed to expression) +- _valid_: pass `true`/`false` to pre-define validation result, the result returned from validation function will be ignored. This option cannot be used with macro keywords. +- _$data_: an optional `true` value to support [$data reference](#data-reference) as the value of custom keyword. The reference will be resolved at validation time. If the keyword has meta-schema it would be extended to allow $data and it will be used to validate the resolved value. Supporting $data reference requires that keyword has validating function (as the only option or in addition to compile, macro or inline function). +- _async_: an optional `true` value if the validation function is asynchronous (whether it is compiled or passed in _validate_ property); in this case it should return a promise that resolves with a value `true` or `false`. This option is ignored in case of "macro" and "inline" keywords. +- _errors_: an optional boolean or string `"full"` indicating whether keyword returns errors. If this property is not set Ajv will determine if the errors were set in case of failed validation. + +_compile_, _macro_ and _inline_ are mutually exclusive, only one should be used at a time. _validate_ can be used separately or in addition to them to support $data reference. + +__Please note__: If the keyword is validating data type that is different from the type(s) in its definition, the validation function will not be called (and expanded macro will not be used), so there is no need to check for data type inside validation function or inside schema returned by macro function (unless you want to enforce a specific type and for some reason do not want to use a separate `type` keyword for that). In the same way as standard keywords work, if the keyword does not apply to the data type being validated, the validation of this keyword will succeed. + +See [Defining custom keywords](#defining-custom-keywords) for more details. + + +##### .getKeyword(String keyword) -> Object|Boolean + +Returns custom keyword definition, `true` for pre-defined keywords and `false` if the keyword is unknown. + + +##### .removeKeyword(String keyword) -> Ajv + +Removes custom or pre-defined keyword so you can redefine them. + +While this method can be used to extend pre-defined keywords, it can also be used to completely change their meaning - it may lead to unexpected results. + +__Please note__: schemas compiled before the keyword is removed will continue to work without changes. To recompile schemas use `removeSchema` method and compile them again. + + +##### .errorsText([Array<Object> errors [, Object options]]) -> String + +Returns the text with all errors in a String. + +Options can have properties `separator` (string used to separate errors, ", " by default) and `dataVar` (the variable name that dataPaths are prefixed with, "data" by default). + + +## Options + +Defaults: + +```javascript +{ + // validation and reporting options: + $data: false, + allErrors: false, + verbose: false, + $comment: false, // NEW in Ajv version 6.0 + jsonPointers: false, + uniqueItems: true, + unicode: true, + nullable: false, + format: 'fast', + formats: {}, + unknownFormats: true, + schemas: {}, + logger: undefined, + // referenced schema options: + schemaId: '$id', + missingRefs: true, + extendRefs: 'ignore', // recommended 'fail' + loadSchema: undefined, // function(uri: string): Promise {} + // options to modify validated data: + removeAdditional: false, + useDefaults: false, + coerceTypes: false, + // strict mode options + strictDefaults: false, + strictKeywords: false, + strictNumbers: false, + // asynchronous validation options: + transpile: undefined, // requires ajv-async package + // advanced options: + meta: true, + validateSchema: true, + addUsedSchema: true, + inlineRefs: true, + passContext: false, + loopRequired: Infinity, + ownProperties: false, + multipleOfPrecision: false, + errorDataPath: 'object', // deprecated + messages: true, + sourceCode: false, + processCode: undefined, // function (str: string, schema: object): string {} + cache: new Cache, + serialize: undefined +} +``` + +##### Validation and reporting options + +- _$data_: support [$data references](#data-reference). Draft 6 meta-schema that is added by default will be extended to allow them. If you want to use another meta-schema you need to use $dataMetaSchema method to add support for $data reference. See [API](#api). +- _allErrors_: check all rules collecting all errors. Default is to return after the first error. +- _verbose_: include the reference to the part of the schema (`schema` and `parentSchema`) and validated data in errors (false by default). +- _$comment_ (NEW in Ajv version 6.0): log or pass the value of `$comment` keyword to a function. Option values: + - `false` (default): ignore $comment keyword. + - `true`: log the keyword value to console. + - function: pass the keyword value, its schema path and root schema to the specified function +- _jsonPointers_: set `dataPath` property of errors using [JSON Pointers](https://tools.ietf.org/html/rfc6901) instead of JavaScript property access notation. +- _uniqueItems_: validate `uniqueItems` keyword (true by default). +- _unicode_: calculate correct length of strings with unicode pairs (true by default). Pass `false` to use `.length` of strings that is faster, but gives "incorrect" lengths of strings with unicode pairs - each unicode pair is counted as two characters. +- _nullable_: support keyword "nullable" from [Open API 3 specification](https://swagger.io/docs/specification/data-models/data-types/). +- _format_: formats validation mode. Option values: + - `"fast"` (default) - simplified and fast validation (see [Formats](#formats) for details of which formats are available and affected by this option). + - `"full"` - more restrictive and slow validation. E.g., 25:00:00 and 2015/14/33 will be invalid time and date in 'full' mode but it will be valid in 'fast' mode. + - `false` - ignore all format keywords. +- _formats_: an object with custom formats. Keys and values will be passed to `addFormat` method. +- _keywords_: an object with custom keywords. Keys and values will be passed to `addKeyword` method. +- _unknownFormats_: handling of unknown formats. Option values: + - `true` (default) - if an unknown format is encountered the exception is thrown during schema compilation. If `format` keyword value is [$data reference](#data-reference) and it is unknown the validation will fail. + - `[String]` - an array of unknown format names that will be ignored. This option can be used to allow usage of third party schemas with format(s) for which you don't have definitions, but still fail if another unknown format is used. If `format` keyword value is [$data reference](#data-reference) and it is not in this array the validation will fail. + - `"ignore"` - to log warning during schema compilation and always pass validation (the default behaviour in versions before 5.0.0). This option is not recommended, as it allows to mistype format name and it won't be validated without any error message. This behaviour is required by JSON Schema specification. +- _schemas_: an array or object of schemas that will be added to the instance. In case you pass the array the schemas must have IDs in them. When the object is passed the method `addSchema(value, key)` will be called for each schema in this object. +- _logger_: sets the logging method. Default is the global `console` object that should have methods `log`, `warn` and `error`. See [Error logging](#error-logging). Option values: + - custom logger - it should have methods `log`, `warn` and `error`. If any of these methods is missing an exception will be thrown. + - `false` - logging is disabled. + + +##### Referenced schema options + +- _schemaId_: this option defines which keywords are used as schema URI. Option value: + - `"$id"` (default) - only use `$id` keyword as schema URI (as specified in JSON Schema draft-06/07), ignore `id` keyword (if it is present a warning will be logged). + - `"id"` - only use `id` keyword as schema URI (as specified in JSON Schema draft-04), ignore `$id` keyword (if it is present a warning will be logged). + - `"auto"` - use both `$id` and `id` keywords as schema URI. If both are present (in the same schema object) and different the exception will be thrown during schema compilation. +- _missingRefs_: handling of missing referenced schemas. Option values: + - `true` (default) - if the reference cannot be resolved during compilation the exception is thrown. The thrown error has properties `missingRef` (with hash fragment) and `missingSchema` (without it). Both properties are resolved relative to the current base id (usually schema id, unless it was substituted). + - `"ignore"` - to log error during compilation and always pass validation. + - `"fail"` - to log error and successfully compile schema but fail validation if this rule is checked. +- _extendRefs_: validation of other keywords when `$ref` is present in the schema. Option values: + - `"ignore"` (default) - when `$ref` is used other keywords are ignored (as per [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03#section-3) standard). A warning will be logged during the schema compilation. + - `"fail"` (recommended) - if other validation keywords are used together with `$ref` the exception will be thrown when the schema is compiled. This option is recommended to make sure schema has no keywords that are ignored, which can be confusing. + - `true` - validate all keywords in the schemas with `$ref` (the default behaviour in versions before 5.0.0). +- _loadSchema_: asynchronous function that will be used to load remote schemas when `compileAsync` [method](#api-compileAsync) is used and some reference is missing (option `missingRefs` should NOT be 'fail' or 'ignore'). This function should accept remote schema uri as a parameter and return a Promise that resolves to a schema. See example in [Asynchronous compilation](#asynchronous-schema-compilation). + + +##### Options to modify validated data + +- _removeAdditional_: remove additional properties - see example in [Filtering data](#filtering-data). This option is not used if schema is added with `addMetaSchema` method. Option values: + - `false` (default) - not to remove additional properties + - `"all"` - all additional properties are removed, regardless of `additionalProperties` keyword in schema (and no validation is made for them). + - `true` - only additional properties with `additionalProperties` keyword equal to `false` are removed. + - `"failing"` - additional properties that fail schema validation will be removed (where `additionalProperties` keyword is `false` or schema). +- _useDefaults_: replace missing or undefined properties and items with the values from corresponding `default` keywords. Default behaviour is to ignore `default` keywords. This option is not used if schema is added with `addMetaSchema` method. See examples in [Assigning defaults](#assigning-defaults). Option values: + - `false` (default) - do not use defaults + - `true` - insert defaults by value (object literal is used). + - `"empty"` - in addition to missing or undefined, use defaults for properties and items that are equal to `null` or `""` (an empty string). + - `"shared"` (deprecated) - insert defaults by reference. If the default is an object, it will be shared by all instances of validated data. If you modify the inserted default in the validated data, it will be modified in the schema as well. +- _coerceTypes_: change data type of data to match `type` keyword. See the example in [Coercing data types](#coercing-data-types) and [coercion rules](https://github.com/ajv-validator/ajv/blob/master/COERCION.md). Option values: + - `false` (default) - no type coercion. + - `true` - coerce scalar data types. + - `"array"` - in addition to coercions between scalar types, coerce scalar data to an array with one element and vice versa (as required by the schema). + + +##### Strict mode options + +- _strictDefaults_: report ignored `default` keywords in schemas. Option values: + - `false` (default) - ignored defaults are not reported + - `true` - if an ignored default is present, throw an error + - `"log"` - if an ignored default is present, log warning +- _strictKeywords_: report unknown keywords in schemas. Option values: + - `false` (default) - unknown keywords are not reported + - `true` - if an unknown keyword is present, throw an error + - `"log"` - if an unknown keyword is present, log warning +- _strictNumbers_: validate numbers strictly, failing validation for NaN and Infinity. Option values: + - `false` (default) - NaN or Infinity will pass validation for numeric types + - `true` - NaN or Infinity will not pass validation for numeric types + +##### Asynchronous validation options + +- _transpile_: Requires [ajv-async](https://github.com/ajv-validator/ajv-async) package. It determines whether Ajv transpiles compiled asynchronous validation function. Option values: + - `undefined` (default) - transpile with [nodent](https://github.com/MatAtBread/nodent) if async functions are not supported. + - `true` - always transpile with nodent. + - `false` - do not transpile; if async functions are not supported an exception will be thrown. + + +##### Advanced options + +- _meta_: add [meta-schema](http://json-schema.org/documentation.html) so it can be used by other schemas (true by default). If an object is passed, it will be used as the default meta-schema for schemas that have no `$schema` keyword. This default meta-schema MUST have `$schema` keyword. +- _validateSchema_: validate added/compiled schemas against meta-schema (true by default). `$schema` property in the schema can be http://json-schema.org/draft-07/schema or absent (draft-07 meta-schema will be used) or can be a reference to the schema previously added with `addMetaSchema` method. Option values: + - `true` (default) - if the validation fails, throw the exception. + - `"log"` - if the validation fails, log error. + - `false` - skip schema validation. +- _addUsedSchema_: by default methods `compile` and `validate` add schemas to the instance if they have `$id` (or `id`) property that doesn't start with "#". If `$id` is present and it is not unique the exception will be thrown. Set this option to `false` to skip adding schemas to the instance and the `$id` uniqueness check when these methods are used. This option does not affect `addSchema` method. +- _inlineRefs_: Affects compilation of referenced schemas. Option values: + - `true` (default) - the referenced schemas that don't have refs in them are inlined, regardless of their size - that substantially improves performance at the cost of the bigger size of compiled schema functions. + - `false` - to not inline referenced schemas (they will be compiled as separate functions). + - integer number - to limit the maximum number of keywords of the schema that will be inlined. +- _passContext_: pass validation context to custom keyword functions. If this option is `true` and you pass some context to the compiled validation function with `validate.call(context, data)`, the `context` will be available as `this` in your custom keywords. By default `this` is Ajv instance. +- _loopRequired_: by default `required` keyword is compiled into a single expression (or a sequence of statements in `allErrors` mode). In case of a very large number of properties in this keyword it may result in a very big validation function. Pass integer to set the number of properties above which `required` keyword will be validated in a loop - smaller validation function size but also worse performance. +- _ownProperties_: by default Ajv iterates over all enumerable object properties; when this option is `true` only own enumerable object properties (i.e. found directly on the object rather than on its prototype) are iterated. Contributed by @mbroadst. +- _multipleOfPrecision_: by default `multipleOf` keyword is validated by comparing the result of division with parseInt() of that result. It works for dividers that are bigger than 1. For small dividers such as 0.01 the result of the division is usually not integer (even when it should be integer, see issue [#84](https://github.com/ajv-validator/ajv/issues/84)). If you need to use fractional dividers set this option to some positive integer N to have `multipleOf` validated using this formula: `Math.abs(Math.round(division) - division) < 1e-N` (it is slower but allows for float arithmetics deviations). +- _errorDataPath_ (deprecated): set `dataPath` to point to 'object' (default) or to 'property' when validating keywords `required`, `additionalProperties` and `dependencies`. +- _messages_: Include human-readable messages in errors. `true` by default. `false` can be passed when custom messages are used (e.g. with [ajv-i18n](https://github.com/ajv-validator/ajv-i18n)). +- _sourceCode_: add `sourceCode` property to validating function (for debugging; this code can be different from the result of toString call). +- _processCode_: an optional function to process generated code before it is passed to Function constructor. It can be used to either beautify (the validating function is generated without line-breaks) or to transpile code. Starting from version 5.0.0 this option replaced options: + - `beautify` that formatted the generated function using [js-beautify](https://github.com/beautify-web/js-beautify). If you want to beautify the generated code pass a function calling `require('js-beautify').js_beautify` as `processCode: code => js_beautify(code)`. + - `transpile` that transpiled asynchronous validation function. You can still use `transpile` option with [ajv-async](https://github.com/ajv-validator/ajv-async) package. See [Asynchronous validation](#asynchronous-validation) for more information. +- _cache_: an optional instance of cache to store compiled schemas using stable-stringified schema as a key. For example, set-associative cache [sacjs](https://github.com/epoberezkin/sacjs) can be used. If not passed then a simple hash is used which is good enough for the common use case (a limited number of statically defined schemas). Cache should have methods `put(key, value)`, `get(key)`, `del(key)` and `clear()`. +- _serialize_: an optional function to serialize schema to cache key. Pass `false` to use schema itself as a key (e.g., if WeakMap used as a cache). By default [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used. + + +## Validation errors + +In case of validation failure, Ajv assigns the array of errors to `errors` property of validation function (or to `errors` property of Ajv instance when `validate` or `validateSchema` methods were called). In case of [asynchronous validation](#asynchronous-validation), the returned promise is rejected with exception `Ajv.ValidationError` that has `errors` property. + + +### Error objects + +Each error is an object with the following properties: + +- _keyword_: validation keyword. +- _dataPath_: the path to the part of the data that was validated. By default `dataPath` uses JavaScript property access notation (e.g., `".prop[1].subProp"`). When the option `jsonPointers` is true (see [Options](#options)) `dataPath` will be set using JSON pointer standard (e.g., `"/prop/1/subProp"`). +- _schemaPath_: the path (JSON-pointer as a URI fragment) to the schema of the keyword that failed validation. +- _params_: the object with the additional information about error that can be used to create custom error messages (e.g., using [ajv-i18n](https://github.com/ajv-validator/ajv-i18n) package). See below for parameters set by all keywords. +- _message_: the standard error message (can be excluded with option `messages` set to false). +- _schema_: the schema of the keyword (added with `verbose` option). +- _parentSchema_: the schema containing the keyword (added with `verbose` option) +- _data_: the data validated by the keyword (added with `verbose` option). + +__Please note__: `propertyNames` keyword schema validation errors have an additional property `propertyName`, `dataPath` points to the object. After schema validation for each property name, if it is invalid an additional error is added with the property `keyword` equal to `"propertyNames"`. + + +### Error parameters + +Properties of `params` object in errors depend on the keyword that failed validation. + +- `maxItems`, `minItems`, `maxLength`, `minLength`, `maxProperties`, `minProperties` - property `limit` (number, the schema of the keyword). +- `additionalItems` - property `limit` (the maximum number of allowed items in case when `items` keyword is an array of schemas and `additionalItems` is false). +- `additionalProperties` - property `additionalProperty` (the property not used in `properties` and `patternProperties` keywords). +- `dependencies` - properties: + - `property` (dependent property), + - `missingProperty` (required missing dependency - only the first one is reported currently) + - `deps` (required dependencies, comma separated list as a string), + - `depsCount` (the number of required dependencies). +- `format` - property `format` (the schema of the keyword). +- `maximum`, `minimum` - properties: + - `limit` (number, the schema of the keyword), + - `exclusive` (boolean, the schema of `exclusiveMaximum` or `exclusiveMinimum`), + - `comparison` (string, comparison operation to compare the data to the limit, with the data on the left and the limit on the right; can be "<", "<=", ">", ">=") +- `multipleOf` - property `multipleOf` (the schema of the keyword) +- `pattern` - property `pattern` (the schema of the keyword) +- `required` - property `missingProperty` (required property that is missing). +- `propertyNames` - property `propertyName` (an invalid property name). +- `patternRequired` (in ajv-keywords) - property `missingPattern` (required pattern that did not match any property). +- `type` - property `type` (required type(s), a string, can be a comma-separated list) +- `uniqueItems` - properties `i` and `j` (indices of duplicate items). +- `const` - property `allowedValue` pointing to the value (the schema of the keyword). +- `enum` - property `allowedValues` pointing to the array of values (the schema of the keyword). +- `$ref` - property `ref` with the referenced schema URI. +- `oneOf` - property `passingSchemas` (array of indices of passing schemas, null if no schema passes). +- custom keywords (in case keyword definition doesn't create errors) - property `keyword` (the keyword name). + + +### Error logging + +Using the `logger` option when initiallizing Ajv will allow you to define custom logging. Here you can build upon the exisiting logging. The use of other logging packages is supported as long as the package or its associated wrapper exposes the required methods. If any of the required methods are missing an exception will be thrown. +- **Required Methods**: `log`, `warn`, `error` + +```javascript +var otherLogger = new OtherLogger(); +var ajv = new Ajv({ + logger: { + log: console.log.bind(console), + warn: function warn() { + otherLogger.logWarn.apply(otherLogger, arguments); + }, + error: function error() { + otherLogger.logError.apply(otherLogger, arguments); + console.error.apply(console, arguments); + } + } +}); +``` + + +## Plugins + +Ajv can be extended with plugins that add custom keywords, formats or functions to process generated code. When such plugin is published as npm package it is recommended that it follows these conventions: + +- it exports a function +- this function accepts ajv instance as the first parameter and returns the same instance to allow chaining +- this function can accept an optional configuration as the second parameter + +If you have published a useful plugin please submit a PR to add it to the next section. + + +## Related packages + +- [ajv-async](https://github.com/ajv-validator/ajv-async) - plugin to configure async validation mode +- [ajv-bsontype](https://github.com/BoLaMN/ajv-bsontype) - plugin to validate mongodb's bsonType formats +- [ajv-cli](https://github.com/jessedc/ajv-cli) - command line interface +- [ajv-errors](https://github.com/ajv-validator/ajv-errors) - plugin for custom error messages +- [ajv-i18n](https://github.com/ajv-validator/ajv-i18n) - internationalised error messages +- [ajv-istanbul](https://github.com/ajv-validator/ajv-istanbul) - plugin to instrument generated validation code to measure test coverage of your schemas +- [ajv-keywords](https://github.com/ajv-validator/ajv-keywords) - plugin with custom validation keywords (select, typeof, etc.) +- [ajv-merge-patch](https://github.com/ajv-validator/ajv-merge-patch) - plugin with keywords $merge and $patch +- [ajv-pack](https://github.com/ajv-validator/ajv-pack) - produces a compact module exporting validation functions +- [ajv-formats-draft2019](https://github.com/luzlab/ajv-formats-draft2019) - format validators for draft2019 that aren't already included in ajv (ie. `idn-hostname`, `idn-email`, `iri`, `iri-reference` and `duration`). + +## Some packages using Ajv + +- [webpack](https://github.com/webpack/webpack) - a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser +- [jsonscript-js](https://github.com/JSONScript/jsonscript-js) - the interpreter for [JSONScript](http://www.jsonscript.org) - scripted processing of existing endpoints and services +- [osprey-method-handler](https://github.com/mulesoft-labs/osprey-method-handler) - Express middleware for validating requests and responses based on a RAML method object, used in [osprey](https://github.com/mulesoft/osprey) - validating API proxy generated from a RAML definition +- [har-validator](https://github.com/ahmadnassri/har-validator) - HTTP Archive (HAR) validator +- [jsoneditor](https://github.com/josdejong/jsoneditor) - a web-based tool to view, edit, format, and validate JSON http://jsoneditoronline.org +- [JSON Schema Lint](https://github.com/nickcmaynard/jsonschemalint) - a web tool to validate JSON/YAML document against a single JSON Schema http://jsonschemalint.com +- [objection](https://github.com/vincit/objection.js) - SQL-friendly ORM for Node.js +- [table](https://github.com/gajus/table) - formats data into a string table +- [ripple-lib](https://github.com/ripple/ripple-lib) - a JavaScript API for interacting with [Ripple](https://ripple.com) in Node.js and the browser +- [restbase](https://github.com/wikimedia/restbase) - distributed storage with REST API & dispatcher for backend services built to provide a low-latency & high-throughput API for Wikipedia / Wikimedia content +- [hippie-swagger](https://github.com/CacheControl/hippie-swagger) - [Hippie](https://github.com/vesln/hippie) wrapper that provides end to end API testing with swagger validation +- [react-form-controlled](https://github.com/seeden/react-form-controlled) - React controlled form components with validation +- [rabbitmq-schema](https://github.com/tjmehta/rabbitmq-schema) - a schema definition module for RabbitMQ graphs and messages +- [@query/schema](https://www.npmjs.com/package/@query/schema) - stream filtering with a URI-safe query syntax parsing to JSON Schema +- [chai-ajv-json-schema](https://github.com/peon374/chai-ajv-json-schema) - chai plugin to us JSON Schema with expect in mocha tests +- [grunt-jsonschema-ajv](https://github.com/SignpostMarv/grunt-jsonschema-ajv) - Grunt plugin for validating files against JSON Schema +- [extract-text-webpack-plugin](https://github.com/webpack-contrib/extract-text-webpack-plugin) - extract text from bundle into a file +- [electron-builder](https://github.com/electron-userland/electron-builder) - a solution to package and build a ready for distribution Electron app +- [addons-linter](https://github.com/mozilla/addons-linter) - Mozilla Add-ons Linter +- [gh-pages-generator](https://github.com/epoberezkin/gh-pages-generator) - multi-page site generator converting markdown files to GitHub pages +- [ESLint](https://github.com/eslint/eslint) - the pluggable linting utility for JavaScript and JSX + + +## Tests + +``` +npm install +git submodule update --init +npm test +``` + +## Contributing + +All validation functions are generated using doT templates in [dot](https://github.com/ajv-validator/ajv/tree/master/lib/dot) folder. Templates are precompiled so doT is not a run-time dependency. + +`npm run build` - compiles templates to [dotjs](https://github.com/ajv-validator/ajv/tree/master/lib/dotjs) folder. + +`npm run watch` - automatically compiles templates when files in dot folder change + +Please see [Contributing guidelines](https://github.com/ajv-validator/ajv/blob/master/CONTRIBUTING.md) + + +## Changes history + +See https://github.com/ajv-validator/ajv/releases + +__Please note__: [Changes in version 7.0.0-beta](https://github.com/ajv-validator/ajv/releases/tag/v7.0.0-beta.0) + +[Version 6.0.0](https://github.com/ajv-validator/ajv/releases/tag/v6.0.0). + +## Code of conduct + +Please review and follow the [Code of conduct](https://github.com/ajv-validator/ajv/blob/master/CODE_OF_CONDUCT.md). + +Please report any unacceptable behaviour to ajv.validator@gmail.com - it will be reviewed by the project team. + + +## Open-source software support + +Ajv is a part of [Tidelift subscription](https://tidelift.com/subscription/pkg/npm-ajv?utm_source=npm-ajv&utm_medium=referral&utm_campaign=readme) - it provides a centralised support to open-source software users, in addition to the support provided by software maintainers. + + +## License + +[MIT](https://github.com/ajv-validator/ajv/blob/master/LICENSE) diff --git a/node_modules/ajv/package.json b/node_modules/ajv/package.json new file mode 100644 index 00000000..559a933c --- /dev/null +++ b/node_modules/ajv/package.json @@ -0,0 +1,106 @@ +{ + "name": "ajv", + "version": "6.12.6", + "description": "Another JSON Schema Validator", + "main": "lib/ajv.js", + "typings": "lib/ajv.d.ts", + "files": [ + "lib/", + "dist/", + "scripts/", + "LICENSE", + ".tonic_example.js" + ], + "scripts": { + "eslint": "eslint lib/{compile/,}*.js spec/{**/,}*.js scripts --ignore-pattern spec/JSON-Schema-Test-Suite", + "jshint": "jshint lib/{compile/,}*.js", + "lint": "npm run jshint && npm run eslint", + "test-spec": "mocha spec/{**/,}*.spec.js -R spec", + "test-fast": "AJV_FAST_TEST=true npm run test-spec", + "test-debug": "npm run test-spec -- --inspect-brk", + "test-cov": "nyc npm run test-spec", + "test-ts": "tsc --target ES5 --noImplicitAny --noEmit spec/typescript/index.ts", + "bundle": "del-cli dist && node ./scripts/bundle.js . Ajv pure_getters", + "bundle-beautify": "node ./scripts/bundle.js js-beautify", + "build": "del-cli lib/dotjs/*.js \"!lib/dotjs/index.js\" && node scripts/compile-dots.js", + "test-karma": "karma start", + "test-browser": "del-cli .browser && npm run bundle && scripts/prepare-tests && npm run test-karma", + "test-all": "npm run test-cov && if-node-version 10 npm run test-browser", + "test": "npm run lint && npm run build && npm run test-all", + "prepublish": "npm run build && npm run bundle", + "watch": "watch \"npm run build\" ./lib/dot" + }, + "nyc": { + "exclude": [ + "**/spec/**", + "node_modules" + ], + "reporter": [ + "lcov", + "text-summary" + ] + }, + "repository": { + "type": "git", + "url": "https://github.com/ajv-validator/ajv.git" + }, + "keywords": [ + "JSON", + "schema", + "validator", + "validation", + "jsonschema", + "json-schema", + "json-schema-validator", + "json-schema-validation" + ], + "author": "Evgeny Poberezkin", + "license": "MIT", + "bugs": { + "url": "https://github.com/ajv-validator/ajv/issues" + }, + "homepage": "https://github.com/ajv-validator/ajv", + "tonicExampleFilename": ".tonic_example.js", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "devDependencies": { + "ajv-async": "^1.0.0", + "bluebird": "^3.5.3", + "brfs": "^2.0.0", + "browserify": "^16.2.0", + "chai": "^4.0.1", + "coveralls": "^3.0.1", + "del-cli": "^3.0.0", + "dot": "^1.0.3", + "eslint": "^7.3.1", + "gh-pages-generator": "^0.2.3", + "glob": "^7.0.0", + "if-node-version": "^1.0.0", + "js-beautify": "^1.7.3", + "jshint": "^2.10.2", + "json-schema-test": "^2.0.0", + "karma": "^5.0.0", + "karma-chrome-launcher": "^3.0.0", + "karma-mocha": "^2.0.0", + "karma-sauce-launcher": "^4.1.3", + "mocha": "^8.0.1", + "nyc": "^15.0.0", + "pre-commit": "^1.1.1", + "require-globify": "^1.3.0", + "typescript": "^3.9.5", + "uglify-js": "^3.6.9", + "watch": "^1.0.0" + }, + "collective": { + "type": "opencollective", + "url": "https://opencollective.com/ajv" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } +} diff --git a/node_modules/ajv/scripts/.eslintrc.yml b/node_modules/ajv/scripts/.eslintrc.yml new file mode 100644 index 00000000..493d7d31 --- /dev/null +++ b/node_modules/ajv/scripts/.eslintrc.yml @@ -0,0 +1,3 @@ +rules: + no-console: 0 + no-empty: [2, allowEmptyCatch: true] diff --git a/node_modules/ajv/scripts/bundle.js b/node_modules/ajv/scripts/bundle.js new file mode 100644 index 00000000..e381a762 --- /dev/null +++ b/node_modules/ajv/scripts/bundle.js @@ -0,0 +1,61 @@ +'use strict'; + +var fs = require('fs') + , path = require('path') + , browserify = require('browserify') + , uglify = require('uglify-js'); + +var pkg = process.argv[2] + , standalone = process.argv[3] + , compress = process.argv[4]; + +var packageDir = path.join(__dirname, '..'); +if (pkg != '.') packageDir = path.join(packageDir, 'node_modules', pkg); + +var json = require(path.join(packageDir, 'package.json')); + +var distDir = path.join(__dirname, '..', 'dist'); +if (!fs.existsSync(distDir)) fs.mkdirSync(distDir); + +var bOpts = {}; +if (standalone) bOpts.standalone = standalone; + +browserify(bOpts) +.require(path.join(packageDir, json.main), {expose: json.name}) +.bundle(function (err, buf) { + if (err) { + console.error('browserify error:', err); + process.exit(1); + } + + var outputFile = path.join(distDir, json.name); + var uglifyOpts = { + warnings: true, + compress: {}, + output: { + preamble: '/* ' + json.name + ' ' + json.version + ': ' + json.description + ' */' + } + }; + if (compress) { + var compressOpts = compress.split(','); + for (var i=0, il = compressOpts.length; i ../ajv-dist/bower.json + cd ../ajv-dist + + if [[ `git status --porcelain` ]]; then + echo "Changes detected. Updating master branch..." + git add -A + git commit -m "updated by travis build #$TRAVIS_BUILD_NUMBER" + git push --quiet origin master > /dev/null 2>&1 + fi + + echo "Publishing tag..." + + git tag $TRAVIS_TAG + git push --tags > /dev/null 2>&1 + + echo "Done" +fi diff --git a/node_modules/ajv/scripts/travis-gh-pages b/node_modules/ajv/scripts/travis-gh-pages new file mode 100644 index 00000000..b3d4f3d0 --- /dev/null +++ b/node_modules/ajv/scripts/travis-gh-pages @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -e + +if [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_PULL_REQUEST" == "false" && $TRAVIS_JOB_NUMBER =~ ".3" ]]; then + git diff --name-only $TRAVIS_COMMIT_RANGE | grep -qE '\.md$|^LICENSE$|travis-gh-pages$' && { + rm -rf ../gh-pages + git clone -b gh-pages --single-branch https://${GITHUB_TOKEN}@github.com/ajv-validator/ajv.git ../gh-pages + mkdir -p ../gh-pages/_source + cp *.md ../gh-pages/_source + cp LICENSE ../gh-pages/_source + currentDir=$(pwd) + cd ../gh-pages + $currentDir/node_modules/.bin/gh-pages-generator + # remove logo from README + sed -i -E "s/]+ajv_logo[^>]+>//" index.md + git config user.email "$GIT_USER_EMAIL" + git config user.name "$GIT_USER_NAME" + git add . + git commit -am "updated by travis build #$TRAVIS_BUILD_NUMBER" + git push --quiet origin gh-pages > /dev/null 2>&1 + } +fi diff --git a/node_modules/ansi-align/CHANGELOG.md b/node_modules/ansi-align/CHANGELOG.md new file mode 100644 index 00000000..36eeb52c --- /dev/null +++ b/node_modules/ansi-align/CHANGELOG.md @@ -0,0 +1,58 @@ +# Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +### [3.0.1](https://github.com/nexdrew/ansi-align/compare/v3.0.0...v3.0.1) (2021-09-27) + + +### Bug Fixes + +* **package:** update string-width to version 4.1.0 ([#52](https://github.com/nexdrew/ansi-align/issues/52)) ([ab5b733](https://github.com/nexdrew/ansi-align/commit/ab5b733b1c30eef87b75e15459f2216db28d7ed3)) + + +# [3.0.0](https://github.com/nexdrew/ansi-align/compare/v2.0.0...v3.0.0) (2018-12-17) + + +### Bug Fixes + +* **package:** update string-width to version 3.0.0 ([#50](https://github.com/nexdrew/ansi-align/issues/50)) ([67f0d8f](https://github.com/nexdrew/ansi-align/commit/67f0d8f)) + + +### BREAKING CHANGES + +* **package:** Node 4 no longer supported, please update to Node 6+ or use ansi-align@2.0.0 + + + + +# [2.0.0](https://github.com/nexdrew/ansi-align/compare/v1.1.0...v2.0.0) (2017-05-01) + + +### Features + +* ES2015ify, dropping support for Node <4 ([#30](https://github.com/nexdrew/ansi-align/issues/30)) ([7b43f48](https://github.com/nexdrew/ansi-align/commit/7b43f48)) + + +### BREAKING CHANGES + +* Node 0.10 or 0.12 no longer supported, please update to Node 4+ or use ansi-align@1.1.0 + + + + +# [1.1.0](https://github.com/nexdrew/ansi-align/compare/v1.0.0...v1.1.0) (2016-06-06) + + +### Features + +* support left-alignment as no-op ([#3](https://github.com/nexdrew/ansi-align/issues/3)) ([e581db6](https://github.com/nexdrew/ansi-align/commit/e581db6)) + + + + +# 1.0.0 (2016-04-30) + + +### Features + +* initial commit ([1914d90](https://github.com/nexdrew/ansi-align/commit/1914d90)) diff --git a/node_modules/ansi-align/LICENSE b/node_modules/ansi-align/LICENSE new file mode 100644 index 00000000..ab601b65 --- /dev/null +++ b/node_modules/ansi-align/LICENSE @@ -0,0 +1,13 @@ +Copyright (c) 2016, Contributors + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/node_modules/ansi-align/README.md b/node_modules/ansi-align/README.md new file mode 100644 index 00000000..5e516825 --- /dev/null +++ b/node_modules/ansi-align/README.md @@ -0,0 +1,80 @@ +# ansi-align + +> align-text with ANSI support for CLIs + +[![Build Status](https://travis-ci.org/nexdrew/ansi-align.svg?branch=master)](https://travis-ci.org/nexdrew/ansi-align) +[![Coverage Status](https://coveralls.io/repos/github/nexdrew/ansi-align/badge.svg?branch=master)](https://coveralls.io/github/nexdrew/ansi-align?branch=master) +[![Standard Version](https://img.shields.io/badge/release-standard%20version-brightgreen.svg)](https://github.com/conventional-changelog/standard-version) +[![Greenkeeper badge](https://badges.greenkeeper.io/nexdrew/ansi-align.svg)](https://greenkeeper.io/) + +Easily center- or right- align a block of text, carefully ignoring ANSI escape codes. + +E.g. turn this: + +ansi text block no alignment :( + +Into this: + +ansi text block center aligned! + +## Install + +```sh +npm install --save ansi-align +``` + +```js +var ansiAlign = require('ansi-align') +``` + +## API + +### `ansiAlign(text, [opts])` + +Align the given text per the line with the greatest [`string-width`](https://github.com/sindresorhus/string-width), returning a new string (or array). + +#### Arguments + +- `text`: required, string or array + + The text to align. If a string is given, it will be split using either the `opts.split` value or `'\n'` by default. If an array is given, a different array of modified strings will be returned. + +- `opts`: optional, object + + Options to change behavior, see below. + +#### Options + +- `opts.align`: string, default `'center'` + + The alignment mode. Use `'center'` for center-alignment, `'right'` for right-alignment, or `'left'` for left-alignment. Note that the given `text` is assumed to be left-aligned already, so specifying `align: 'left'` just returns the `text` as is (no-op). + +- `opts.split`: string or RegExp, default `'\n'` + + The separator to use when splitting the text. Only used if text is given as a string. + +- `opts.pad`: string, default `' '` + + The value used to left-pad (prepend to) lines of lesser width. Will be repeated as necessary to adjust alignment to the line with the greatest width. + +### `ansiAlign.center(text)` + +Alias for `ansiAlign(text, { align: 'center' })`. + +### `ansiAlign.right(text)` + +Alias for `ansiAlign(text, { align: 'right' })`. + +### `ansiAlign.left(text)` + +Alias for `ansiAlign(text, { align: 'left' })`, which is a no-op. + +## Similar Packages + +- [`center-align`](https://github.com/jonschlinkert/center-align): Very close to this package, except it doesn't support ANSI codes. +- [`left-pad`](https://github.com/camwest/left-pad): Great for left-padding but does not support center alignment or ANSI codes. +- Pretty much anything by the [chalk](https://github.com/chalk) team + +## License + +ISC © Contributors diff --git a/node_modules/ansi-align/index.js b/node_modules/ansi-align/index.js new file mode 100644 index 00000000..67fa826d --- /dev/null +++ b/node_modules/ansi-align/index.js @@ -0,0 +1,61 @@ +'use strict' + +const stringWidth = require('string-width') + +function ansiAlign (text, opts) { + if (!text) return text + + opts = opts || {} + const align = opts.align || 'center' + + // short-circuit `align: 'left'` as no-op + if (align === 'left') return text + + const split = opts.split || '\n' + const pad = opts.pad || ' ' + const widthDiffFn = align !== 'right' ? halfDiff : fullDiff + + let returnString = false + if (!Array.isArray(text)) { + returnString = true + text = String(text).split(split) + } + + let width + let maxWidth = 0 + text = text.map(function (str) { + str = String(str) + width = stringWidth(str) + maxWidth = Math.max(width, maxWidth) + return { + str, + width + } + }).map(function (obj) { + return new Array(widthDiffFn(maxWidth, obj.width) + 1).join(pad) + obj.str + }) + + return returnString ? text.join(split) : text +} + +ansiAlign.left = function left (text) { + return ansiAlign(text, { align: 'left' }) +} + +ansiAlign.center = function center (text) { + return ansiAlign(text, { align: 'center' }) +} + +ansiAlign.right = function right (text) { + return ansiAlign(text, { align: 'right' }) +} + +module.exports = ansiAlign + +function halfDiff (maxWidth, curWidth) { + return Math.floor((maxWidth - curWidth) / 2) +} + +function fullDiff (maxWidth, curWidth) { + return maxWidth - curWidth +} diff --git a/node_modules/ansi-align/node_modules/emoji-regex/LICENSE-MIT.txt b/node_modules/ansi-align/node_modules/emoji-regex/LICENSE-MIT.txt new file mode 100644 index 00000000..a41e0a7e --- /dev/null +++ b/node_modules/ansi-align/node_modules/emoji-regex/LICENSE-MIT.txt @@ -0,0 +1,20 @@ +Copyright Mathias Bynens + +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. diff --git a/node_modules/ansi-align/node_modules/emoji-regex/README.md b/node_modules/ansi-align/node_modules/emoji-regex/README.md new file mode 100644 index 00000000..f10e1733 --- /dev/null +++ b/node_modules/ansi-align/node_modules/emoji-regex/README.md @@ -0,0 +1,73 @@ +# emoji-regex [![Build status](https://travis-ci.org/mathiasbynens/emoji-regex.svg?branch=master)](https://travis-ci.org/mathiasbynens/emoji-regex) + +_emoji-regex_ offers a regular expression to match all emoji symbols (including textual representations of emoji) as per the Unicode Standard. + +This repository contains a script that generates this regular expression based on [the data from Unicode v12](https://github.com/mathiasbynens/unicode-12.0.0). Because of this, the regular expression can easily be updated whenever new emoji are added to the Unicode standard. + +## Installation + +Via [npm](https://www.npmjs.com/): + +```bash +npm install emoji-regex +``` + +In [Node.js](https://nodejs.org/): + +```js +const emojiRegex = require('emoji-regex'); +// Note: because the regular expression has the global flag set, this module +// exports a function that returns the regex rather than exporting the regular +// expression itself, to make it impossible to (accidentally) mutate the +// original regular expression. + +const text = ` +\u{231A}: ⌚ default emoji presentation character (Emoji_Presentation) +\u{2194}\u{FE0F}: ↔️ default text presentation character rendered as emoji +\u{1F469}: 👩 emoji modifier base (Emoji_Modifier_Base) +\u{1F469}\u{1F3FF}: 👩🏿 emoji modifier base followed by a modifier +`; + +const regex = emojiRegex(); +let match; +while (match = regex.exec(text)) { + const emoji = match[0]; + console.log(`Matched sequence ${ emoji } — code points: ${ [...emoji].length }`); +} +``` + +Console output: + +``` +Matched sequence ⌚ — code points: 1 +Matched sequence ⌚ — code points: 1 +Matched sequence ↔️ — code points: 2 +Matched sequence ↔️ — code points: 2 +Matched sequence 👩 — code points: 1 +Matched sequence 👩 — code points: 1 +Matched sequence 👩🏿 — code points: 2 +Matched sequence 👩🏿 — code points: 2 +``` + +To match emoji in their textual representation as well (i.e. emoji that are not `Emoji_Presentation` symbols and that aren’t forced to render as emoji by a variation selector), `require` the other regex: + +```js +const emojiRegex = require('emoji-regex/text.js'); +``` + +Additionally, in environments which support ES2015 Unicode escapes, you may `require` ES2015-style versions of the regexes: + +```js +const emojiRegex = require('emoji-regex/es2015/index.js'); +const emojiRegexText = require('emoji-regex/es2015/text.js'); +``` + +## Author + +| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | +|---| +| [Mathias Bynens](https://mathiasbynens.be/) | + +## License + +_emoji-regex_ is available under the [MIT](https://mths.be/mit) license. diff --git a/node_modules/ansi-align/node_modules/emoji-regex/es2015/index.js b/node_modules/ansi-align/node_modules/emoji-regex/es2015/index.js new file mode 100644 index 00000000..b4cf3dcd --- /dev/null +++ b/node_modules/ansi-align/node_modules/emoji-regex/es2015/index.js @@ -0,0 +1,6 @@ +"use strict"; + +module.exports = () => { + // https://mths.be/emoji + return /\u{1F3F4}\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0073}\u{E0063}\u{E0074}|\u{E0077}\u{E006C}\u{E0073})\u{E007F}|\u{1F468}(?:\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}\u{1F3FB}|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FE}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u2695\u2696\u2708]\uFE0F|[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|(?:\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F3FB}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}]|[\u{1F3FB}-\u{1F3FF}])|(?:\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469})\u{1F3FB}|\u{1F9D1}(?:\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u200D\u{1F91D}\u200D\u{1F9D1})|(?:\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D[\u{1F468}\u{1F469}])[\u{1F3FB}-\u{1F3FE}]|(?:\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}\u{1F3FC}]|\u{1F469}(?:\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FD}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FB}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FC}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}\u{1F3FE}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|(?:\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}-\u{1F3FD}]|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}(?:\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708]|\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F3F4}\u200D\u2620)\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F415}\u200D\u{1F9BA}|\u{1F469}\u200D\u{1F466}|\u{1F469}\u200D\u{1F467}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F1F6}\u{1F1E6}|[#\*0-9]\uFE0F\u20E3|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F46B}-\u{1F46D}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9BB}\u{1F9D2}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6D5}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6D5}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]\uFE0F|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F48F}\u{1F491}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93C}-\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9BB}\u{1F9CD}-\u{1F9CF}\u{1F9D1}-\u{1F9DD}]/gu; +}; diff --git a/node_modules/ansi-align/node_modules/emoji-regex/es2015/text.js b/node_modules/ansi-align/node_modules/emoji-regex/es2015/text.js new file mode 100644 index 00000000..780309df --- /dev/null +++ b/node_modules/ansi-align/node_modules/emoji-regex/es2015/text.js @@ -0,0 +1,6 @@ +"use strict"; + +module.exports = () => { + // https://mths.be/emoji + return /\u{1F3F4}\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0073}\u{E0063}\u{E0074}|\u{E0077}\u{E006C}\u{E0073})\u{E007F}|\u{1F468}(?:\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}\u{1F3FB}|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FE}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u2695\u2696\u2708]\uFE0F|[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|(?:\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F3FB}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}]|[\u{1F3FB}-\u{1F3FF}])|(?:\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469})\u{1F3FB}|\u{1F9D1}(?:\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u200D\u{1F91D}\u200D\u{1F9D1})|(?:\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D[\u{1F468}\u{1F469}])[\u{1F3FB}-\u{1F3FE}]|(?:\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}\u{1F3FC}]|\u{1F469}(?:\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FD}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FB}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FC}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}\u{1F3FE}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|(?:\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}-\u{1F3FD}]|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}(?:\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708]|\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F3F4}\u200D\u2620)\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F415}\u200D\u{1F9BA}|\u{1F469}\u200D\u{1F466}|\u{1F469}\u200D\u{1F467}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F1F6}\u{1F1E6}|[#\*0-9]\uFE0F\u20E3|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F46B}-\u{1F46D}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9BB}\u{1F9D2}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6D5}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6D5}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]\uFE0F?|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F48F}\u{1F491}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93C}-\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9BB}\u{1F9CD}-\u{1F9CF}\u{1F9D1}-\u{1F9DD}]/gu; +}; diff --git a/node_modules/ansi-align/node_modules/emoji-regex/index.d.ts b/node_modules/ansi-align/node_modules/emoji-regex/index.d.ts new file mode 100644 index 00000000..1955b470 --- /dev/null +++ b/node_modules/ansi-align/node_modules/emoji-regex/index.d.ts @@ -0,0 +1,23 @@ +declare module 'emoji-regex' { + function emojiRegex(): RegExp; + + export default emojiRegex; +} + +declare module 'emoji-regex/text' { + function emojiRegex(): RegExp; + + export default emojiRegex; +} + +declare module 'emoji-regex/es2015' { + function emojiRegex(): RegExp; + + export default emojiRegex; +} + +declare module 'emoji-regex/es2015/text' { + function emojiRegex(): RegExp; + + export default emojiRegex; +} diff --git a/node_modules/ansi-align/node_modules/emoji-regex/index.js b/node_modules/ansi-align/node_modules/emoji-regex/index.js new file mode 100644 index 00000000..d993a3a9 --- /dev/null +++ b/node_modules/ansi-align/node_modules/emoji-regex/index.js @@ -0,0 +1,6 @@ +"use strict"; + +module.exports = function () { + // https://mths.be/emoji + return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g; +}; diff --git a/node_modules/ansi-align/node_modules/emoji-regex/package.json b/node_modules/ansi-align/node_modules/emoji-regex/package.json new file mode 100644 index 00000000..6d323528 --- /dev/null +++ b/node_modules/ansi-align/node_modules/emoji-regex/package.json @@ -0,0 +1,50 @@ +{ + "name": "emoji-regex", + "version": "8.0.0", + "description": "A regular expression to match all Emoji-only symbols as per the Unicode Standard.", + "homepage": "https://mths.be/emoji-regex", + "main": "index.js", + "types": "index.d.ts", + "keywords": [ + "unicode", + "regex", + "regexp", + "regular expressions", + "code points", + "symbols", + "characters", + "emoji" + ], + "license": "MIT", + "author": { + "name": "Mathias Bynens", + "url": "https://mathiasbynens.be/" + }, + "repository": { + "type": "git", + "url": "https://github.com/mathiasbynens/emoji-regex.git" + }, + "bugs": "https://github.com/mathiasbynens/emoji-regex/issues", + "files": [ + "LICENSE-MIT.txt", + "index.js", + "index.d.ts", + "text.js", + "es2015/index.js", + "es2015/text.js" + ], + "scripts": { + "build": "rm -rf -- es2015; babel src -d .; NODE_ENV=es2015 babel src -d ./es2015; node script/inject-sequences.js", + "test": "mocha", + "test:watch": "npm run test -- --watch" + }, + "devDependencies": { + "@babel/cli": "^7.2.3", + "@babel/core": "^7.3.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", + "@babel/preset-env": "^7.3.4", + "mocha": "^6.0.2", + "regexgen": "^1.3.0", + "unicode-12.0.0": "^0.7.9" + } +} diff --git a/node_modules/ansi-align/node_modules/emoji-regex/text.js b/node_modules/ansi-align/node_modules/emoji-regex/text.js new file mode 100644 index 00000000..0a55ce2f --- /dev/null +++ b/node_modules/ansi-align/node_modules/emoji-regex/text.js @@ -0,0 +1,6 @@ +"use strict"; + +module.exports = function () { + // https://mths.be/emoji + return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F?|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g; +}; diff --git a/node_modules/ansi-align/node_modules/string-width/index.d.ts b/node_modules/ansi-align/node_modules/string-width/index.d.ts new file mode 100644 index 00000000..12b53097 --- /dev/null +++ b/node_modules/ansi-align/node_modules/string-width/index.d.ts @@ -0,0 +1,29 @@ +declare const stringWidth: { + /** + Get the visual width of a string - the number of columns required to display it. + + Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width. + + @example + ``` + import stringWidth = require('string-width'); + + stringWidth('a'); + //=> 1 + + stringWidth('古'); + //=> 2 + + stringWidth('\u001B[1m古\u001B[22m'); + //=> 2 + ``` + */ + (string: string): number; + + // TODO: remove this in the next major version, refactor the whole definition to: + // declare function stringWidth(string: string): number; + // export = stringWidth; + default: typeof stringWidth; +} + +export = stringWidth; diff --git a/node_modules/ansi-align/node_modules/string-width/index.js b/node_modules/ansi-align/node_modules/string-width/index.js new file mode 100644 index 00000000..f4d261a9 --- /dev/null +++ b/node_modules/ansi-align/node_modules/string-width/index.js @@ -0,0 +1,47 @@ +'use strict'; +const stripAnsi = require('strip-ansi'); +const isFullwidthCodePoint = require('is-fullwidth-code-point'); +const emojiRegex = require('emoji-regex'); + +const stringWidth = string => { + if (typeof string !== 'string' || string.length === 0) { + return 0; + } + + string = stripAnsi(string); + + if (string.length === 0) { + return 0; + } + + string = string.replace(emojiRegex(), ' '); + + let width = 0; + + for (let i = 0; i < string.length; i++) { + const code = string.codePointAt(i); + + // Ignore control characters + if (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) { + continue; + } + + // Ignore combining characters + if (code >= 0x300 && code <= 0x36F) { + continue; + } + + // Surrogates + if (code > 0xFFFF) { + i++; + } + + width += isFullwidthCodePoint(code) ? 2 : 1; + } + + return width; +}; + +module.exports = stringWidth; +// TODO: remove this in the next major version +module.exports.default = stringWidth; diff --git a/node_modules/ansi-align/node_modules/string-width/license b/node_modules/ansi-align/node_modules/string-width/license new file mode 100644 index 00000000..e7af2f77 --- /dev/null +++ b/node_modules/ansi-align/node_modules/string-width/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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. diff --git a/node_modules/ansi-align/node_modules/string-width/package.json b/node_modules/ansi-align/node_modules/string-width/package.json new file mode 100644 index 00000000..28ba7b4c --- /dev/null +++ b/node_modules/ansi-align/node_modules/string-width/package.json @@ -0,0 +1,56 @@ +{ + "name": "string-width", + "version": "4.2.3", + "description": "Get the visual width of a string - the number of columns required to display it", + "license": "MIT", + "repository": "sindresorhus/string-width", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "string", + "character", + "unicode", + "width", + "visual", + "column", + "columns", + "fullwidth", + "full-width", + "full", + "ansi", + "escape", + "codes", + "cli", + "command-line", + "terminal", + "console", + "cjk", + "chinese", + "japanese", + "korean", + "fixed-width" + ], + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "devDependencies": { + "ava": "^1.4.1", + "tsd": "^0.7.1", + "xo": "^0.24.0" + } +} diff --git a/node_modules/ansi-align/node_modules/string-width/readme.md b/node_modules/ansi-align/node_modules/string-width/readme.md new file mode 100644 index 00000000..bdd31412 --- /dev/null +++ b/node_modules/ansi-align/node_modules/string-width/readme.md @@ -0,0 +1,50 @@ +# string-width + +> Get the visual width of a string - the number of columns required to display it + +Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width. + +Useful to be able to measure the actual width of command-line output. + + +## Install + +``` +$ npm install string-width +``` + + +## Usage + +```js +const stringWidth = require('string-width'); + +stringWidth('a'); +//=> 1 + +stringWidth('古'); +//=> 2 + +stringWidth('\u001B[1m古\u001B[22m'); +//=> 2 +``` + + +## Related + +- [string-width-cli](https://github.com/sindresorhus/string-width-cli) - CLI for this module +- [string-length](https://github.com/sindresorhus/string-length) - Get the real length of a string +- [widest-line](https://github.com/sindresorhus/widest-line) - Get the visual width of the widest line in a string + + +--- + +
+ + Get professional support for this package with a Tidelift subscription + +
+ + Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies. +
+
diff --git a/node_modules/ansi-align/package.json b/node_modules/ansi-align/package.json new file mode 100644 index 00000000..96a9471c --- /dev/null +++ b/node_modules/ansi-align/package.json @@ -0,0 +1,43 @@ +{ + "name": "ansi-align", + "version": "3.0.1", + "description": "align-text with ANSI support for CLIs", + "main": "index.js", + "scripts": { + "pretest": "standard", + "test": "nyc ava", + "coverage": "nyc report --reporter=text-lcov | coveralls", + "release": "standard-version" + }, + "files": [ + "index.js" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/nexdrew/ansi-align.git" + }, + "keywords": [ + "ansi", + "align", + "cli", + "center", + "pad" + ], + "author": "nexdrew", + "license": "ISC", + "bugs": { + "url": "https://github.com/nexdrew/ansi-align/issues" + }, + "homepage": "https://github.com/nexdrew/ansi-align#readme", + "dependencies": { + "string-width": "^4.1.0" + }, + "devDependencies": { + "ava": "^2.0.0", + "chalk": "^2.4.2", + "coveralls": "^3.0.3", + "nyc": "^14.0.0", + "standard": "^14.0.0", + "standard-version": "^7.0.0" + } +} diff --git a/node_modules/ansi-html-community/LICENSE b/node_modules/ansi-html-community/LICENSE new file mode 100644 index 00000000..e06d2081 --- /dev/null +++ b/node_modules/ansi-html-community/LICENSE @@ -0,0 +1,202 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/node_modules/ansi-html-community/README.md b/node_modules/ansi-html-community/README.md new file mode 100644 index 00000000..e80188e9 --- /dev/null +++ b/node_modules/ansi-html-community/README.md @@ -0,0 +1,62 @@ +ansi-html [![NPM version](https://badge.fury.io/js/ansi-html-community.svg)](http://badge.fury.io/js/ansi-html) [![Build Status](https://app.travis-ci.com/mahdyar/ansi-html-community.svg?branch=master)](https://app.travis-ci.com/mahdyar/ansi-html-community) +========= +An elegant lib that converts the chalked (ANSI) text to HTML. + +# Coverage +- All styles of [chalk](https://github.com/sindresorhus/chalk) (100%) and [colors](https://github.com/Marak/colors.js). +- There are over **150** randomized test cases under `test`. + +# Installation +``` +$ npm install ansi-html-community +``` + +# Usage +```javascript +var ansiHTML = require('ansi-html-community'); +var str = ansiHTML('[ANSI_TEXT]'); +``` + +e.g.: +```javascript +var chalk = require('chalk'); + +var str = chalk.bold.red('foo') + ' bar'; +console.log('[ANSI]', str) +console.log('[HTML]', ansiHTML(str)); +``` + +See complete examples under `test` / `examples` directory. + +# Set Colors +```javascript +ansiHTML.setColors({ + reset: ['555', '666'], // FOREGROUND-COLOR or [FOREGROUND-COLOR] or [, BACKGROUND-COLOR] or [FOREGROUND-COLOR, BACKGROUND-COLOR] + black: 'aaa', // String + red: 'bbb', + green: 'ccc', + yellow: 'ddd', + blue: 'eee', + magenta: 'fff', + cyan: '999', + lightgrey: '888', + darkgrey: '777' +}); +``` + +# Reset +```javascript +ansiHTML.reset(); +``` + +# Exposed Tags +```javascript +var openTags = ansiHTML.tags.open; +var closeTags = ansiHTML.tags.close; +``` + +# Test +``` +$ npm install -l +$ npm test +``` diff --git a/node_modules/ansi-html-community/bin/ansi-html b/node_modules/ansi-html-community/bin/ansi-html new file mode 100755 index 00000000..e58f668c --- /dev/null +++ b/node_modules/ansi-html-community/bin/ansi-html @@ -0,0 +1,102 @@ +#!/usr/bin/env node + +var ansiHTML = require('../') +var pkg = require('../package.json') +var l = console.log +var w = console.warn + +var stdoutFlushed = true +var readingStdin = false + +function logLine (line) { + if (!line) { + return + } + line = ansiHTML(line) + try { + stdoutFlushed = process.stdout.write(line) + } catch (e) {} +} + +function safeExit (code) { + l('') + process.exit(code) +} + +function processStdin (finish) { + readingStdin = true + var chunks = '' + process.stdin.resume() + process.stdin.setEncoding('utf-8') + process.stdin.on('data', function (chunk) { + var lines = chunk.split(/[\r\n]+/g).filter(function (line) { + return line + }) + var length = lines.length + if (length === 1) { + chunks += lines[0] + return + } + if (length > 1) { + logLine(chunks + (chunks ? '\n' : '') + lines[0] + '\n') + } + chunks = lines.pop() + length -= 1 + for (var i = 1; i < length; i++) { + logLine(lines[i] + '\n') + } + }) + process.stdin.on('end', function () { + if (chunks) { + logLine(chunks) + } + finish() + }) +} + +function stdoutDrain (code) { + process.stdout.on('drain', function () { + safeExit(code) + }) + if (stdoutFlushed) { + safeExit(code) + } +} + +function startup (args) { + if (args.indexOf('-h') > 0 || args.indexOf('--help') > 0) { + l(pkg.name + '@' + pkg.version) + l('Usage:') + l(' ansi-html [options]') + l(' ... | ansi-html [options]') + l('Options:') + l(' -h, --help print help information') + return + } + + process.stdout.on('error', function (err) { + if (err.code === 'EPIPE') { + stdoutDrain(0) + } else { + w('stdout error:', err) + stdoutDrain(1) + } + }) + + processStdin(function () { + safeExit(0) + }) +} + +if (require.main === module) { + startup(process.argv) +} + +process.on('SIGINT', function () { + if (!readingStdin) { + safeExit(1) + } +}) +process.on('SIGQUIT', function () { safeExit(1) }) +process.on('SIGTERM', function () { safeExit(1) }) +process.on('SIGHUP', function () { safeExit(1) }) diff --git a/node_modules/ansi-html-community/index.js b/node_modules/ansi-html-community/index.js new file mode 100644 index 00000000..1f65826e --- /dev/null +++ b/node_modules/ansi-html-community/index.js @@ -0,0 +1,176 @@ +'use strict' + +module.exports = ansiHTML + +// Reference to https://github.com/sindresorhus/ansi-regex +var _regANSI = /(?:(?:\u001b\[)|\u009b)(?:(?:[0-9]{1,3})?(?:(?:;[0-9]{0,3})*)?[A-M|f-m])|\u001b[A-M]/ + +var _defColors = { + reset: ['fff', '000'], // [FOREGROUD_COLOR, BACKGROUND_COLOR] + black: '000', + red: 'ff0000', + green: '209805', + yellow: 'e8bf03', + blue: '0000ff', + magenta: 'ff00ff', + cyan: '00ffee', + lightgrey: 'f0f0f0', + darkgrey: '888' +} +var _styles = { + 30: 'black', + 31: 'red', + 32: 'green', + 33: 'yellow', + 34: 'blue', + 35: 'magenta', + 36: 'cyan', + 37: 'lightgrey' +} +var _openTags = { + '1': 'font-weight:bold', // bold + '2': 'opacity:0.5', // dim + '3': '', // italic + '4': '', // underscore + '8': 'display:none', // hidden + '9': '' // delete +} +var _closeTags = { + '23': '', // reset italic + '24': '', // reset underscore + '29': '' // reset delete +} + +;[0, 21, 22, 27, 28, 39, 49].forEach(function (n) { + _closeTags[n] = '' +}) + +/** + * Converts text with ANSI color codes to HTML markup. + * @param {String} text + * @returns {*} + */ +function ansiHTML (text) { + // Returns the text if the string has no ANSI escape code. + if (!_regANSI.test(text)) { + return text + } + + // Cache opened sequence. + var ansiCodes = [] + // Replace with markup. + var ret = text.replace(/\033\[(\d+)m/g, function (match, seq) { + var ot = _openTags[seq] + if (ot) { + // If current sequence has been opened, close it. + if (!!~ansiCodes.indexOf(seq)) { // eslint-disable-line no-extra-boolean-cast + ansiCodes.pop() + return '' + } + // Open tag. + ansiCodes.push(seq) + return ot[0] === '<' ? ot : '' + } + + var ct = _closeTags[seq] + if (ct) { + // Pop sequence + ansiCodes.pop() + return ct + } + return '' + }) + + // Make sure tags are closed. + var l = ansiCodes.length + ;(l > 0) && (ret += Array(l + 1).join('')) + + return ret +} + +/** + * Customize colors. + * @param {Object} colors reference to _defColors + */ +ansiHTML.setColors = function (colors) { + if (typeof colors !== 'object') { + throw new Error('`colors` parameter must be an Object.') + } + + var _finalColors = {} + for (var key in _defColors) { + var hex = colors.hasOwnProperty(key) ? colors[key] : null + if (!hex) { + _finalColors[key] = _defColors[key] + continue + } + if ('reset' === key) { + if (typeof hex === 'string') { + hex = [hex] + } + if (!Array.isArray(hex) || hex.length === 0 || hex.some(function (h) { + return typeof h !== 'string' + })) { + throw new Error('The value of `' + key + '` property must be an Array and each item could only be a hex string, e.g.: FF0000') + } + var defHexColor = _defColors[key] + if (!hex[0]) { + hex[0] = defHexColor[0] + } + if (hex.length === 1 || !hex[1]) { + hex = [hex[0]] + hex.push(defHexColor[1]) + } + + hex = hex.slice(0, 2) + } else if (typeof hex !== 'string') { + throw new Error('The value of `' + key + '` property must be a hex string, e.g.: FF0000') + } + _finalColors[key] = hex + } + _setTags(_finalColors) +} + +/** + * Reset colors. + */ +ansiHTML.reset = function () { + _setTags(_defColors) +} + +/** + * Expose tags, including open and close. + * @type {Object} + */ +ansiHTML.tags = {} + +if (Object.defineProperty) { + Object.defineProperty(ansiHTML.tags, 'open', { + get: function () { return _openTags } + }) + Object.defineProperty(ansiHTML.tags, 'close', { + get: function () { return _closeTags } + }) +} else { + ansiHTML.tags.open = _openTags + ansiHTML.tags.close = _closeTags +} + +function _setTags (colors) { + // reset all + _openTags['0'] = 'font-weight:normal;opacity:1;color:#' + colors.reset[0] + ';background:#' + colors.reset[1] + // inverse + _openTags['7'] = 'color:#' + colors.reset[1] + ';background:#' + colors.reset[0] + // dark grey + _openTags['90'] = 'color:#' + colors.darkgrey + + for (var code in _styles) { + var color = _styles[code] + var oriColor = colors[color] || '000' + _openTags[code] = 'color:#' + oriColor + code = parseInt(code) + _openTags[(code + 10).toString()] = 'background:#' + oriColor + } +} + +ansiHTML.reset() diff --git a/node_modules/ansi-html-community/package.json b/node_modules/ansi-html-community/package.json new file mode 100644 index 00000000..10b6e001 --- /dev/null +++ b/node_modules/ansi-html-community/package.json @@ -0,0 +1,50 @@ +{ + "name": "ansi-html-community", + "version": "0.0.8", + "description": "An elegant lib that converts the chalked (ANSI) text to HTML. (Community)", + "main": "index.js", + "scripts": { + "test": "./node_modules/.bin/mocha -R spec -t 5000" + }, + "bin": { + "ansi-html": "./bin/ansi-html" + }, + "repository": { + "type": "git", + "url": "git://github.com/mahdyar/ansi-html-community.git" + }, + "keywords": [ + "ansi", + "ansi html", + "chalk html" + ], + "author": { + "name": "mahdyar" + }, + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/mahdyar/ansi-html-community/issues" + }, + "engines": [ + "node >= 0.8.0" + ], + "dependencies": { + }, + "devDependencies": { + "mocha": "^1.21.4", + "chai": "^1.9.1", + "chalk": "^1.1.3", + "lodash": "^2.4.2" + }, + "readmeFilename": "README.md", + "homepage": "https://github.com/mahdyar/ansi-html-community", + "standard": { + "ignore": [], + "globals": [ + "describe", + "it", + "before", + "after" + ] + } +} diff --git a/node_modules/ansi-regex/index.d.ts b/node_modules/ansi-regex/index.d.ts new file mode 100644 index 00000000..2dbf6af2 --- /dev/null +++ b/node_modules/ansi-regex/index.d.ts @@ -0,0 +1,37 @@ +declare namespace ansiRegex { + interface Options { + /** + Match only the first ANSI escape. + + @default false + */ + onlyFirst: boolean; + } +} + +/** +Regular expression for matching ANSI escape codes. + +@example +``` +import ansiRegex = require('ansi-regex'); + +ansiRegex().test('\u001B[4mcake\u001B[0m'); +//=> true + +ansiRegex().test('cake'); +//=> false + +'\u001B[4mcake\u001B[0m'.match(ansiRegex()); +//=> ['\u001B[4m', '\u001B[0m'] + +'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true})); +//=> ['\u001B[4m'] + +'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex()); +//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007'] +``` +*/ +declare function ansiRegex(options?: ansiRegex.Options): RegExp; + +export = ansiRegex; diff --git a/node_modules/ansi-regex/index.js b/node_modules/ansi-regex/index.js new file mode 100644 index 00000000..616ff837 --- /dev/null +++ b/node_modules/ansi-regex/index.js @@ -0,0 +1,10 @@ +'use strict'; + +module.exports = ({onlyFirst = false} = {}) => { + const pattern = [ + '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)', + '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))' + ].join('|'); + + return new RegExp(pattern, onlyFirst ? undefined : 'g'); +}; diff --git a/node_modules/ansi-regex/license b/node_modules/ansi-regex/license new file mode 100644 index 00000000..e7af2f77 --- /dev/null +++ b/node_modules/ansi-regex/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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. diff --git a/node_modules/ansi-regex/package.json b/node_modules/ansi-regex/package.json new file mode 100644 index 00000000..017f5311 --- /dev/null +++ b/node_modules/ansi-regex/package.json @@ -0,0 +1,55 @@ +{ + "name": "ansi-regex", + "version": "5.0.1", + "description": "Regular expression for matching ANSI escape codes", + "license": "MIT", + "repository": "chalk/ansi-regex", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava && tsd", + "view-supported": "node fixtures/view-codes.js" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "command-line", + "text", + "regex", + "regexp", + "re", + "match", + "test", + "find", + "pattern" + ], + "devDependencies": { + "ava": "^2.4.0", + "tsd": "^0.9.0", + "xo": "^0.25.3" + } +} diff --git a/node_modules/ansi-regex/readme.md b/node_modules/ansi-regex/readme.md new file mode 100644 index 00000000..4d848bc3 --- /dev/null +++ b/node_modules/ansi-regex/readme.md @@ -0,0 +1,78 @@ +# ansi-regex + +> Regular expression for matching [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) + + +## Install + +``` +$ npm install ansi-regex +``` + + +## Usage + +```js +const ansiRegex = require('ansi-regex'); + +ansiRegex().test('\u001B[4mcake\u001B[0m'); +//=> true + +ansiRegex().test('cake'); +//=> false + +'\u001B[4mcake\u001B[0m'.match(ansiRegex()); +//=> ['\u001B[4m', '\u001B[0m'] + +'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true})); +//=> ['\u001B[4m'] + +'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex()); +//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007'] +``` + + +## API + +### ansiRegex(options?) + +Returns a regex for matching ANSI escape codes. + +#### options + +Type: `object` + +##### onlyFirst + +Type: `boolean`
+Default: `false` *(Matches any ANSI escape codes in a string)* + +Match only the first ANSI escape. + + +## FAQ + +### Why do you test for codes not in the ECMA 48 standard? + +Some of the codes we run as a test are codes that we acquired finding various lists of non-standard or manufacturer specific codes. We test for both standard and non-standard codes, as most of them follow the same or similar format and can be safely matched in strings without the risk of removing actual string content. There are a few non-standard control codes that do not follow the traditional format (i.e. they end in numbers) thus forcing us to exclude them from the test because we cannot reliably match them. + +On the historical side, those ECMA standards were established in the early 90's whereas the VT100, for example, was designed in the mid/late 70's. At that point in time, control codes were still pretty ungoverned and engineers used them for a multitude of things, namely to activate hardware ports that may have been proprietary. Somewhere else you see a similar 'anarchy' of codes is in the x86 architecture for processors; there are a ton of "interrupts" that can mean different things on certain brands of processors, most of which have been phased out. + + +## Maintainers + +- [Sindre Sorhus](https://github.com/sindresorhus) +- [Josh Junon](https://github.com/qix-) + + +--- + +
+ + Get professional support for this package with a Tidelift subscription + +
+ + Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies. +
+
diff --git a/node_modules/ansi-styles/index.d.ts b/node_modules/ansi-styles/index.d.ts new file mode 100644 index 00000000..44a907e5 --- /dev/null +++ b/node_modules/ansi-styles/index.d.ts @@ -0,0 +1,345 @@ +declare type CSSColor = + | 'aliceblue' + | 'antiquewhite' + | 'aqua' + | 'aquamarine' + | 'azure' + | 'beige' + | 'bisque' + | 'black' + | 'blanchedalmond' + | 'blue' + | 'blueviolet' + | 'brown' + | 'burlywood' + | 'cadetblue' + | 'chartreuse' + | 'chocolate' + | 'coral' + | 'cornflowerblue' + | 'cornsilk' + | 'crimson' + | 'cyan' + | 'darkblue' + | 'darkcyan' + | 'darkgoldenrod' + | 'darkgray' + | 'darkgreen' + | 'darkgrey' + | 'darkkhaki' + | 'darkmagenta' + | 'darkolivegreen' + | 'darkorange' + | 'darkorchid' + | 'darkred' + | 'darksalmon' + | 'darkseagreen' + | 'darkslateblue' + | 'darkslategray' + | 'darkslategrey' + | 'darkturquoise' + | 'darkviolet' + | 'deeppink' + | 'deepskyblue' + | 'dimgray' + | 'dimgrey' + | 'dodgerblue' + | 'firebrick' + | 'floralwhite' + | 'forestgreen' + | 'fuchsia' + | 'gainsboro' + | 'ghostwhite' + | 'gold' + | 'goldenrod' + | 'gray' + | 'green' + | 'greenyellow' + | 'grey' + | 'honeydew' + | 'hotpink' + | 'indianred' + | 'indigo' + | 'ivory' + | 'khaki' + | 'lavender' + | 'lavenderblush' + | 'lawngreen' + | 'lemonchiffon' + | 'lightblue' + | 'lightcoral' + | 'lightcyan' + | 'lightgoldenrodyellow' + | 'lightgray' + | 'lightgreen' + | 'lightgrey' + | 'lightpink' + | 'lightsalmon' + | 'lightseagreen' + | 'lightskyblue' + | 'lightslategray' + | 'lightslategrey' + | 'lightsteelblue' + | 'lightyellow' + | 'lime' + | 'limegreen' + | 'linen' + | 'magenta' + | 'maroon' + | 'mediumaquamarine' + | 'mediumblue' + | 'mediumorchid' + | 'mediumpurple' + | 'mediumseagreen' + | 'mediumslateblue' + | 'mediumspringgreen' + | 'mediumturquoise' + | 'mediumvioletred' + | 'midnightblue' + | 'mintcream' + | 'mistyrose' + | 'moccasin' + | 'navajowhite' + | 'navy' + | 'oldlace' + | 'olive' + | 'olivedrab' + | 'orange' + | 'orangered' + | 'orchid' + | 'palegoldenrod' + | 'palegreen' + | 'paleturquoise' + | 'palevioletred' + | 'papayawhip' + | 'peachpuff' + | 'peru' + | 'pink' + | 'plum' + | 'powderblue' + | 'purple' + | 'rebeccapurple' + | 'red' + | 'rosybrown' + | 'royalblue' + | 'saddlebrown' + | 'salmon' + | 'sandybrown' + | 'seagreen' + | 'seashell' + | 'sienna' + | 'silver' + | 'skyblue' + | 'slateblue' + | 'slategray' + | 'slategrey' + | 'snow' + | 'springgreen' + | 'steelblue' + | 'tan' + | 'teal' + | 'thistle' + | 'tomato' + | 'turquoise' + | 'violet' + | 'wheat' + | 'white' + | 'whitesmoke' + | 'yellow' + | 'yellowgreen'; + +declare namespace ansiStyles { + interface ColorConvert { + /** + The RGB color space. + + @param red - (`0`-`255`) + @param green - (`0`-`255`) + @param blue - (`0`-`255`) + */ + rgb(red: number, green: number, blue: number): string; + + /** + The RGB HEX color space. + + @param hex - A hexadecimal string containing RGB data. + */ + hex(hex: string): string; + + /** + @param keyword - A CSS color name. + */ + keyword(keyword: CSSColor): string; + + /** + The HSL color space. + + @param hue - (`0`-`360`) + @param saturation - (`0`-`100`) + @param lightness - (`0`-`100`) + */ + hsl(hue: number, saturation: number, lightness: number): string; + + /** + The HSV color space. + + @param hue - (`0`-`360`) + @param saturation - (`0`-`100`) + @param value - (`0`-`100`) + */ + hsv(hue: number, saturation: number, value: number): string; + + /** + The HSV color space. + + @param hue - (`0`-`360`) + @param whiteness - (`0`-`100`) + @param blackness - (`0`-`100`) + */ + hwb(hue: number, whiteness: number, blackness: number): string; + + /** + Use a [4-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4-bit) to set text color. + */ + ansi(ansi: number): string; + + /** + Use an [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set text color. + */ + ansi256(ansi: number): string; + } + + interface CSPair { + /** + The ANSI terminal control sequence for starting this style. + */ + readonly open: string; + + /** + The ANSI terminal control sequence for ending this style. + */ + readonly close: string; + } + + interface ColorBase { + readonly ansi: ColorConvert; + readonly ansi256: ColorConvert; + readonly ansi16m: ColorConvert; + + /** + The ANSI terminal control sequence for ending this color. + */ + readonly close: string; + } + + interface Modifier { + /** + Resets the current color chain. + */ + readonly reset: CSPair; + + /** + Make text bold. + */ + readonly bold: CSPair; + + /** + Emitting only a small amount of light. + */ + readonly dim: CSPair; + + /** + Make text italic. (Not widely supported) + */ + readonly italic: CSPair; + + /** + Make text underline. (Not widely supported) + */ + readonly underline: CSPair; + + /** + Inverse background and foreground colors. + */ + readonly inverse: CSPair; + + /** + Prints the text, but makes it invisible. + */ + readonly hidden: CSPair; + + /** + Puts a horizontal line through the center of the text. (Not widely supported) + */ + readonly strikethrough: CSPair; + } + + interface ForegroundColor { + readonly black: CSPair; + readonly red: CSPair; + readonly green: CSPair; + readonly yellow: CSPair; + readonly blue: CSPair; + readonly cyan: CSPair; + readonly magenta: CSPair; + readonly white: CSPair; + + /** + Alias for `blackBright`. + */ + readonly gray: CSPair; + + /** + Alias for `blackBright`. + */ + readonly grey: CSPair; + + readonly blackBright: CSPair; + readonly redBright: CSPair; + readonly greenBright: CSPair; + readonly yellowBright: CSPair; + readonly blueBright: CSPair; + readonly cyanBright: CSPair; + readonly magentaBright: CSPair; + readonly whiteBright: CSPair; + } + + interface BackgroundColor { + readonly bgBlack: CSPair; + readonly bgRed: CSPair; + readonly bgGreen: CSPair; + readonly bgYellow: CSPair; + readonly bgBlue: CSPair; + readonly bgCyan: CSPair; + readonly bgMagenta: CSPair; + readonly bgWhite: CSPair; + + /** + Alias for `bgBlackBright`. + */ + readonly bgGray: CSPair; + + /** + Alias for `bgBlackBright`. + */ + readonly bgGrey: CSPair; + + readonly bgBlackBright: CSPair; + readonly bgRedBright: CSPair; + readonly bgGreenBright: CSPair; + readonly bgYellowBright: CSPair; + readonly bgBlueBright: CSPair; + readonly bgCyanBright: CSPair; + readonly bgMagentaBright: CSPair; + readonly bgWhiteBright: CSPair; + } +} + +declare const ansiStyles: { + readonly modifier: ansiStyles.Modifier; + readonly color: ansiStyles.ForegroundColor & ansiStyles.ColorBase; + readonly bgColor: ansiStyles.BackgroundColor & ansiStyles.ColorBase; + readonly codes: ReadonlyMap; +} & ansiStyles.BackgroundColor & ansiStyles.ForegroundColor & ansiStyles.Modifier; + +export = ansiStyles; diff --git a/node_modules/ansi-styles/index.js b/node_modules/ansi-styles/index.js new file mode 100644 index 00000000..5d82581a --- /dev/null +++ b/node_modules/ansi-styles/index.js @@ -0,0 +1,163 @@ +'use strict'; + +const wrapAnsi16 = (fn, offset) => (...args) => { + const code = fn(...args); + return `\u001B[${code + offset}m`; +}; + +const wrapAnsi256 = (fn, offset) => (...args) => { + const code = fn(...args); + return `\u001B[${38 + offset};5;${code}m`; +}; + +const wrapAnsi16m = (fn, offset) => (...args) => { + const rgb = fn(...args); + return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; +}; + +const ansi2ansi = n => n; +const rgb2rgb = (r, g, b) => [r, g, b]; + +const setLazyProperty = (object, property, get) => { + Object.defineProperty(object, property, { + get: () => { + const value = get(); + + Object.defineProperty(object, property, { + value, + enumerable: true, + configurable: true + }); + + return value; + }, + enumerable: true, + configurable: true + }); +}; + +/** @type {typeof import('color-convert')} */ +let colorConvert; +const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => { + if (colorConvert === undefined) { + colorConvert = require('color-convert'); + } + + const offset = isBackground ? 10 : 0; + const styles = {}; + + for (const [sourceSpace, suite] of Object.entries(colorConvert)) { + const name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace; + if (sourceSpace === targetSpace) { + styles[name] = wrap(identity, offset); + } else if (typeof suite === 'object') { + styles[name] = wrap(suite[targetSpace], offset); + } + } + + return styles; +}; + +function assembleStyles() { + const codes = new Map(); + const styles = { + modifier: { + reset: [0, 0], + // 21 isn't widely supported and 22 does the same thing + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + + // Bright color + blackBright: [90, 39], + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + + // Bright color + bgBlackBright: [100, 49], + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } + }; + + // Alias bright black as gray (and grey) + styles.color.gray = styles.color.blackBright; + styles.bgColor.bgGray = styles.bgColor.bgBlackBright; + styles.color.grey = styles.color.blackBright; + styles.bgColor.bgGrey = styles.bgColor.bgBlackBright; + + for (const [groupName, group] of Object.entries(styles)) { + for (const [styleName, style] of Object.entries(group)) { + styles[styleName] = { + open: `\u001B[${style[0]}m`, + close: `\u001B[${style[1]}m` + }; + + group[styleName] = styles[styleName]; + + codes.set(style[0], style[1]); + } + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + } + + Object.defineProperty(styles, 'codes', { + value: codes, + enumerable: false + }); + + styles.color.close = '\u001B[39m'; + styles.bgColor.close = '\u001B[49m'; + + setLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false)); + setLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false)); + setLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false)); + setLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true)); + setLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true)); + setLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true)); + + return styles; +} + +// Make the export immutable +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); diff --git a/node_modules/ansi-styles/license b/node_modules/ansi-styles/license new file mode 100644 index 00000000..e7af2f77 --- /dev/null +++ b/node_modules/ansi-styles/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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. diff --git a/node_modules/ansi-styles/package.json b/node_modules/ansi-styles/package.json new file mode 100644 index 00000000..75393284 --- /dev/null +++ b/node_modules/ansi-styles/package.json @@ -0,0 +1,56 @@ +{ + "name": "ansi-styles", + "version": "4.3.0", + "description": "ANSI escape codes for styling strings in the terminal", + "license": "MIT", + "repository": "chalk/ansi-styles", + "funding": "https://github.com/chalk/ansi-styles?sponsor=1", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava && tsd", + "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "color-convert": "^2.0.1" + }, + "devDependencies": { + "@types/color-convert": "^1.9.0", + "ava": "^2.3.0", + "svg-term-cli": "^2.1.1", + "tsd": "^0.11.0", + "xo": "^0.25.3" + } +} diff --git a/node_modules/ansi-styles/readme.md b/node_modules/ansi-styles/readme.md new file mode 100644 index 00000000..24883de8 --- /dev/null +++ b/node_modules/ansi-styles/readme.md @@ -0,0 +1,152 @@ +# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles) + +> [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal + +You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings. + + + +## Install + +``` +$ npm install ansi-styles +``` + +## Usage + +```js +const style = require('ansi-styles'); + +console.log(`${style.green.open}Hello world!${style.green.close}`); + + +// Color conversion between 16/256/truecolor +// NOTE: If conversion goes to 16 colors or 256 colors, the original color +// may be degraded to fit that color palette. This means terminals +// that do not support 16 million colors will best-match the +// original color. +console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close); +console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close); +console.log(style.color.ansi16m.hex('#abcdef') + 'Hello world!' + style.color.close); +``` + +## API + +Each style has an `open` and `close` property. + +## Styles + +### Modifiers + +- `reset` +- `bold` +- `dim` +- `italic` *(Not widely supported)* +- `underline` +- `inverse` +- `hidden` +- `strikethrough` *(Not widely supported)* + +### Colors + +- `black` +- `red` +- `green` +- `yellow` +- `blue` +- `magenta` +- `cyan` +- `white` +- `blackBright` (alias: `gray`, `grey`) +- `redBright` +- `greenBright` +- `yellowBright` +- `blueBright` +- `magentaBright` +- `cyanBright` +- `whiteBright` + +### Background colors + +- `bgBlack` +- `bgRed` +- `bgGreen` +- `bgYellow` +- `bgBlue` +- `bgMagenta` +- `bgCyan` +- `bgWhite` +- `bgBlackBright` (alias: `bgGray`, `bgGrey`) +- `bgRedBright` +- `bgGreenBright` +- `bgYellowBright` +- `bgBlueBright` +- `bgMagentaBright` +- `bgCyanBright` +- `bgWhiteBright` + +## Advanced usage + +By default, you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module. + +- `style.modifier` +- `style.color` +- `style.bgColor` + +###### Example + +```js +console.log(style.color.green.open); +``` + +Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values. + +###### Example + +```js +console.log(style.codes.get(36)); +//=> 39 +``` + +## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728) + +`ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors. + +The following color spaces from `color-convert` are supported: + +- `rgb` +- `hex` +- `keyword` +- `hsl` +- `hsv` +- `hwb` +- `ansi` +- `ansi256` + +To use these, call the associated conversion function with the intended output, for example: + +```js +style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code +style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code + +style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code +style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code + +style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code +style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code +``` + +## Related + +- [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal + +## Maintainers + +- [Sindre Sorhus](https://github.com/sindresorhus) +- [Josh Junon](https://github.com/qix-) + +## For enterprise + +Available as part of the Tidelift Subscription. + +The maintainers of `ansi-styles` and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-ansi-styles?utm_source=npm-ansi-styles&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/node_modules/anymatch/LICENSE b/node_modules/anymatch/LICENSE new file mode 100644 index 00000000..491766ca --- /dev/null +++ b/node_modules/anymatch/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) 2019 Elan Shanker, Paul Miller (https://paulmillr.com) + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/anymatch/README.md b/node_modules/anymatch/README.md new file mode 100644 index 00000000..1dd67f53 --- /dev/null +++ b/node_modules/anymatch/README.md @@ -0,0 +1,87 @@ +anymatch [![Build Status](https://travis-ci.org/micromatch/anymatch.svg?branch=master)](https://travis-ci.org/micromatch/anymatch) [![Coverage Status](https://img.shields.io/coveralls/micromatch/anymatch.svg?branch=master)](https://coveralls.io/r/micromatch/anymatch?branch=master) +====== +Javascript module to match a string against a regular expression, glob, string, +or function that takes the string as an argument and returns a truthy or falsy +value. The matcher can also be an array of any or all of these. Useful for +allowing a very flexible user-defined config to define things like file paths. + +__Note: This module has Bash-parity, please be aware that Windows-style backslashes are not supported as separators. See https://github.com/micromatch/micromatch#backslashes for more information.__ + + +Usage +----- +```sh +npm install anymatch +``` + +#### anymatch(matchers, testString, [returnIndex], [options]) +* __matchers__: (_Array|String|RegExp|Function_) +String to be directly matched, string with glob patterns, regular expression +test, function that takes the testString as an argument and returns a truthy +value if it should be matched, or an array of any number and mix of these types. +* __testString__: (_String|Array_) The string to test against the matchers. If +passed as an array, the first element of the array will be used as the +`testString` for non-function matchers, while the entire array will be applied +as the arguments for function matchers. +* __options__: (_Object_ [optional]_) Any of the [picomatch](https://github.com/micromatch/picomatch#options) options. + * __returnIndex__: (_Boolean [optional]_) If true, return the array index of +the first matcher that that testString matched, or -1 if no match, instead of a +boolean result. + +```js +const anymatch = require('anymatch'); + +const matchers = [ 'path/to/file.js', 'path/anyjs/**/*.js', /foo.js$/, string => string.includes('bar') && string.length > 10 ] ; + +anymatch(matchers, 'path/to/file.js'); // true +anymatch(matchers, 'path/anyjs/baz.js'); // true +anymatch(matchers, 'path/to/foo.js'); // true +anymatch(matchers, 'path/to/bar.js'); // true +anymatch(matchers, 'bar.js'); // false + +// returnIndex = true +anymatch(matchers, 'foo.js', {returnIndex: true}); // 2 +anymatch(matchers, 'path/anyjs/foo.js', {returnIndex: true}); // 1 + +// any picomatc + +// using globs to match directories and their children +anymatch('node_modules', 'node_modules'); // true +anymatch('node_modules', 'node_modules/somelib/index.js'); // false +anymatch('node_modules/**', 'node_modules/somelib/index.js'); // true +anymatch('node_modules/**', '/absolute/path/to/node_modules/somelib/index.js'); // false +anymatch('**/node_modules/**', '/absolute/path/to/node_modules/somelib/index.js'); // true + +const matcher = anymatch(matchers); +['foo.js', 'bar.js'].filter(matcher); // [ 'foo.js' ] +anymatch master* ❯ + +``` + +#### anymatch(matchers) +You can also pass in only your matcher(s) to get a curried function that has +already been bound to the provided matching criteria. This can be used as an +`Array#filter` callback. + +```js +var matcher = anymatch(matchers); + +matcher('path/to/file.js'); // true +matcher('path/anyjs/baz.js', true); // 1 + +['foo.js', 'bar.js'].filter(matcher); // ['foo.js'] +``` + +Changelog +---------- +[See release notes page on GitHub](https://github.com/micromatch/anymatch/releases) + +- **v3.0:** Removed `startIndex` and `endIndex` arguments. Node 8.x-only. +- **v2.0:** [micromatch](https://github.com/jonschlinkert/micromatch) moves away from minimatch-parity and inline with Bash. This includes handling backslashes differently (see https://github.com/micromatch/micromatch#backslashes for more information). +- **v1.2:** anymatch uses [micromatch](https://github.com/jonschlinkert/micromatch) +for glob pattern matching. Issues with glob pattern matching should be +reported directly to the [micromatch issue tracker](https://github.com/jonschlinkert/micromatch/issues). + +License +------- +[ISC](https://raw.github.com/micromatch/anymatch/master/LICENSE) diff --git a/node_modules/anymatch/index.d.ts b/node_modules/anymatch/index.d.ts new file mode 100644 index 00000000..3ef7eaad --- /dev/null +++ b/node_modules/anymatch/index.d.ts @@ -0,0 +1,20 @@ +type AnymatchFn = (testString: string) => boolean; +type AnymatchPattern = string|RegExp|AnymatchFn; +type AnymatchMatcher = AnymatchPattern|AnymatchPattern[] +type AnymatchTester = { + (testString: string|any[], returnIndex: true): number; + (testString: string|any[]): boolean; +} + +type PicomatchOptions = {dot: boolean}; + +declare const anymatch: { + (matchers: AnymatchMatcher): AnymatchTester; + (matchers: AnymatchMatcher, testString: null, returnIndex: true | PicomatchOptions): AnymatchTester; + (matchers: AnymatchMatcher, testString: string|any[], returnIndex: true | PicomatchOptions): number; + (matchers: AnymatchMatcher, testString: string|any[]): boolean; +} + +export {AnymatchMatcher as Matcher} +export {AnymatchTester as Tester} +export default anymatch diff --git a/node_modules/anymatch/index.js b/node_modules/anymatch/index.js new file mode 100644 index 00000000..8eb73e9c --- /dev/null +++ b/node_modules/anymatch/index.js @@ -0,0 +1,104 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { value: true }); + +const picomatch = require('picomatch'); +const normalizePath = require('normalize-path'); + +/** + * @typedef {(testString: string) => boolean} AnymatchFn + * @typedef {string|RegExp|AnymatchFn} AnymatchPattern + * @typedef {AnymatchPattern|AnymatchPattern[]} AnymatchMatcher + */ +const BANG = '!'; +const DEFAULT_OPTIONS = {returnIndex: false}; +const arrify = (item) => Array.isArray(item) ? item : [item]; + +/** + * @param {AnymatchPattern} matcher + * @param {object} options + * @returns {AnymatchFn} + */ +const createPattern = (matcher, options) => { + if (typeof matcher === 'function') { + return matcher; + } + if (typeof matcher === 'string') { + const glob = picomatch(matcher, options); + return (string) => matcher === string || glob(string); + } + if (matcher instanceof RegExp) { + return (string) => matcher.test(string); + } + return (string) => false; +}; + +/** + * @param {Array} patterns + * @param {Array} negPatterns + * @param {String|Array} args + * @param {Boolean} returnIndex + * @returns {boolean|number} + */ +const matchPatterns = (patterns, negPatterns, args, returnIndex) => { + const isList = Array.isArray(args); + const _path = isList ? args[0] : args; + if (!isList && typeof _path !== 'string') { + throw new TypeError('anymatch: second argument must be a string: got ' + + Object.prototype.toString.call(_path)) + } + const path = normalizePath(_path, false); + + for (let index = 0; index < negPatterns.length; index++) { + const nglob = negPatterns[index]; + if (nglob(path)) { + return returnIndex ? -1 : false; + } + } + + const applied = isList && [path].concat(args.slice(1)); + for (let index = 0; index < patterns.length; index++) { + const pattern = patterns[index]; + if (isList ? pattern(...applied) : pattern(path)) { + return returnIndex ? index : true; + } + } + + return returnIndex ? -1 : false; +}; + +/** + * @param {AnymatchMatcher} matchers + * @param {Array|string} testString + * @param {object} options + * @returns {boolean|number|Function} + */ +const anymatch = (matchers, testString, options = DEFAULT_OPTIONS) => { + if (matchers == null) { + throw new TypeError('anymatch: specify first argument'); + } + const opts = typeof options === 'boolean' ? {returnIndex: options} : options; + const returnIndex = opts.returnIndex || false; + + // Early cache for matchers. + const mtchers = arrify(matchers); + const negatedGlobs = mtchers + .filter(item => typeof item === 'string' && item.charAt(0) === BANG) + .map(item => item.slice(1)) + .map(item => picomatch(item, opts)); + const patterns = mtchers + .filter(item => typeof item !== 'string' || (typeof item === 'string' && item.charAt(0) !== BANG)) + .map(matcher => createPattern(matcher, opts)); + + if (testString == null) { + return (testString, ri = false) => { + const returnIndex = typeof ri === 'boolean' ? ri : false; + return matchPatterns(patterns, negatedGlobs, testString, returnIndex); + } + } + + return matchPatterns(patterns, negatedGlobs, testString, returnIndex); +}; + +anymatch.default = anymatch; +module.exports = anymatch; diff --git a/node_modules/anymatch/package.json b/node_modules/anymatch/package.json new file mode 100644 index 00000000..2cb2307e --- /dev/null +++ b/node_modules/anymatch/package.json @@ -0,0 +1,48 @@ +{ + "name": "anymatch", + "version": "3.1.3", + "description": "Matches strings against configurable strings, globs, regular expressions, and/or functions", + "files": [ + "index.js", + "index.d.ts" + ], + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "author": { + "name": "Elan Shanker", + "url": "https://github.com/es128" + }, + "license": "ISC", + "homepage": "https://github.com/micromatch/anymatch", + "repository": { + "type": "git", + "url": "https://github.com/micromatch/anymatch" + }, + "keywords": [ + "match", + "any", + "string", + "file", + "fs", + "list", + "glob", + "regex", + "regexp", + "regular", + "expression", + "function" + ], + "scripts": { + "test": "nyc mocha", + "mocha": "mocha" + }, + "devDependencies": { + "mocha": "^6.1.3", + "nyc": "^14.0.0" + }, + "engines": { + "node": ">= 8" + } +} diff --git a/node_modules/argparse/CHANGELOG.md b/node_modules/argparse/CHANGELOG.md new file mode 100644 index 00000000..dc39ed69 --- /dev/null +++ b/node_modules/argparse/CHANGELOG.md @@ -0,0 +1,216 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + + +## [2.0.1] - 2020-08-29 +### Fixed +- Fix issue with `process.argv` when used with interpreters (`coffee`, `ts-node`, etc.), #150. + + +## [2.0.0] - 2020-08-14 +### Changed +- Full rewrite. Now port from python 3.9.0 & more precise following. + See [doc](./doc) for difference and migration info. +- node.js 10+ required +- Removed most of local docs in favour of original ones. + + +## [1.0.10] - 2018-02-15 +### Fixed +- Use .concat instead of + for arrays, #122. + + +## [1.0.9] - 2016-09-29 +### Changed +- Rerelease after 1.0.8 - deps cleanup. + + +## [1.0.8] - 2016-09-29 +### Changed +- Maintenance (deps bump, fix node 6.5+ tests, coverage report). + + +## [1.0.7] - 2016-03-17 +### Changed +- Teach `addArgument` to accept string arg names. #97, @tomxtobin. + + +## [1.0.6] - 2016-02-06 +### Changed +- Maintenance: moved to eslint & updated CS. + + +## [1.0.5] - 2016-02-05 +### Changed +- Removed lodash dependency to significantly reduce install size. + Thanks to @mourner. + + +## [1.0.4] - 2016-01-17 +### Changed +- Maintenance: lodash update to 4.0.0. + + +## [1.0.3] - 2015-10-27 +### Fixed +- Fix parse `=` in args: `--examplepath="C:\myfolder\env=x64"`. #84, @CatWithApple. + + +## [1.0.2] - 2015-03-22 +### Changed +- Relaxed lodash version dependency. + + +## [1.0.1] - 2015-02-20 +### Changed +- Changed dependencies to be compatible with ancient nodejs. + + +## [1.0.0] - 2015-02-19 +### Changed +- Maintenance release. +- Replaced `underscore` with `lodash`. +- Bumped version to 1.0.0 to better reflect semver meaning. +- HISTORY.md -> CHANGELOG.md + + +## [0.1.16] - 2013-12-01 +### Changed +- Maintenance release. Updated dependencies and docs. + + +## [0.1.15] - 2013-05-13 +### Fixed +- Fixed #55, @trebor89 + + +## [0.1.14] - 2013-05-12 +### Fixed +- Fixed #62, @maxtaco + + +## [0.1.13] - 2013-04-08 +### Changed +- Added `.npmignore` to reduce package size + + +## [0.1.12] - 2013-02-10 +### Fixed +- Fixed conflictHandler (#46), @hpaulj + + +## [0.1.11] - 2013-02-07 +### Added +- Added 70+ tests (ported from python), @hpaulj +- Added conflictHandler, @applepicke +- Added fromfilePrefixChar, @hpaulj + +### Fixed +- Multiple bugfixes, @hpaulj + + +## [0.1.10] - 2012-12-30 +### Added +- Added [mutual exclusion](http://docs.python.org/dev/library/argparse.html#mutual-exclusion) + support, thanks to @hpaulj + +### Fixed +- Fixed options check for `storeConst` & `appendConst` actions, thanks to @hpaulj + + +## [0.1.9] - 2012-12-27 +### Fixed +- Fixed option dest interferens with other options (issue #23), thanks to @hpaulj +- Fixed default value behavior with `*` positionals, thanks to @hpaulj +- Improve `getDefault()` behavior, thanks to @hpaulj +- Improve negative argument parsing, thanks to @hpaulj + + +## [0.1.8] - 2012-12-01 +### Fixed +- Fixed parser parents (issue #19), thanks to @hpaulj +- Fixed negative argument parse (issue #20), thanks to @hpaulj + + +## [0.1.7] - 2012-10-14 +### Fixed +- Fixed 'choices' argument parse (issue #16) +- Fixed stderr output (issue #15) + + +## [0.1.6] - 2012-09-09 +### Fixed +- Fixed check for conflict of options (thanks to @tomxtobin) + + +## [0.1.5] - 2012-09-03 +### Fixed +- Fix parser #setDefaults method (thanks to @tomxtobin) + + +## [0.1.4] - 2012-07-30 +### Fixed +- Fixed pseudo-argument support (thanks to @CGamesPlay) +- Fixed addHelp default (should be true), if not set (thanks to @benblank) + + +## [0.1.3] - 2012-06-27 +### Fixed +- Fixed formatter api name: Formatter -> HelpFormatter + + +## [0.1.2] - 2012-05-29 +### Fixed +- Removed excess whitespace in help +- Fixed error reporting, when parcer with subcommands + called with empty arguments + +### Added +- Added basic tests + + +## [0.1.1] - 2012-05-23 +### Fixed +- Fixed line wrapping in help formatter +- Added better error reporting on invalid arguments + + +## [0.1.0] - 2012-05-16 +### Added +- First release. + + +[2.0.1]: https://github.com/nodeca/argparse/compare/2.0.0...2.0.1 +[2.0.0]: https://github.com/nodeca/argparse/compare/1.0.10...2.0.0 +[1.0.10]: https://github.com/nodeca/argparse/compare/1.0.9...1.0.10 +[1.0.9]: https://github.com/nodeca/argparse/compare/1.0.8...1.0.9 +[1.0.8]: https://github.com/nodeca/argparse/compare/1.0.7...1.0.8 +[1.0.7]: https://github.com/nodeca/argparse/compare/1.0.6...1.0.7 +[1.0.6]: https://github.com/nodeca/argparse/compare/1.0.5...1.0.6 +[1.0.5]: https://github.com/nodeca/argparse/compare/1.0.4...1.0.5 +[1.0.4]: https://github.com/nodeca/argparse/compare/1.0.3...1.0.4 +[1.0.3]: https://github.com/nodeca/argparse/compare/1.0.2...1.0.3 +[1.0.2]: https://github.com/nodeca/argparse/compare/1.0.1...1.0.2 +[1.0.1]: https://github.com/nodeca/argparse/compare/1.0.0...1.0.1 +[1.0.0]: https://github.com/nodeca/argparse/compare/0.1.16...1.0.0 +[0.1.16]: https://github.com/nodeca/argparse/compare/0.1.15...0.1.16 +[0.1.15]: https://github.com/nodeca/argparse/compare/0.1.14...0.1.15 +[0.1.14]: https://github.com/nodeca/argparse/compare/0.1.13...0.1.14 +[0.1.13]: https://github.com/nodeca/argparse/compare/0.1.12...0.1.13 +[0.1.12]: https://github.com/nodeca/argparse/compare/0.1.11...0.1.12 +[0.1.11]: https://github.com/nodeca/argparse/compare/0.1.10...0.1.11 +[0.1.10]: https://github.com/nodeca/argparse/compare/0.1.9...0.1.10 +[0.1.9]: https://github.com/nodeca/argparse/compare/0.1.8...0.1.9 +[0.1.8]: https://github.com/nodeca/argparse/compare/0.1.7...0.1.8 +[0.1.7]: https://github.com/nodeca/argparse/compare/0.1.6...0.1.7 +[0.1.6]: https://github.com/nodeca/argparse/compare/0.1.5...0.1.6 +[0.1.5]: https://github.com/nodeca/argparse/compare/0.1.4...0.1.5 +[0.1.4]: https://github.com/nodeca/argparse/compare/0.1.3...0.1.4 +[0.1.3]: https://github.com/nodeca/argparse/compare/0.1.2...0.1.3 +[0.1.2]: https://github.com/nodeca/argparse/compare/0.1.1...0.1.2 +[0.1.1]: https://github.com/nodeca/argparse/compare/0.1.0...0.1.1 +[0.1.0]: https://github.com/nodeca/argparse/releases/tag/0.1.0 diff --git a/node_modules/argparse/LICENSE b/node_modules/argparse/LICENSE new file mode 100644 index 00000000..66a3ac80 --- /dev/null +++ b/node_modules/argparse/LICENSE @@ -0,0 +1,254 @@ +A. HISTORY OF THE SOFTWARE +========================== + +Python was created in the early 1990s by Guido van Rossum at Stichting +Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands +as a successor of a language called ABC. Guido remains Python's +principal author, although it includes many contributions from others. + +In 1995, Guido continued his work on Python at the Corporation for +National Research Initiatives (CNRI, see http://www.cnri.reston.va.us) +in Reston, Virginia where he released several versions of the +software. + +In May 2000, Guido and the Python core development team moved to +BeOpen.com to form the BeOpen PythonLabs team. In October of the same +year, the PythonLabs team moved to Digital Creations, which became +Zope Corporation. In 2001, the Python Software Foundation (PSF, see +https://www.python.org/psf/) was formed, a non-profit organization +created specifically to own Python-related Intellectual Property. +Zope Corporation was a sponsoring member of the PSF. + +All Python releases are Open Source (see http://www.opensource.org for +the Open Source Definition). Historically, most, but not all, Python +releases have also been GPL-compatible; the table below summarizes +the various releases. + + Release Derived Year Owner GPL- + from compatible? (1) + + 0.9.0 thru 1.2 1991-1995 CWI yes + 1.3 thru 1.5.2 1.2 1995-1999 CNRI yes + 1.6 1.5.2 2000 CNRI no + 2.0 1.6 2000 BeOpen.com no + 1.6.1 1.6 2001 CNRI yes (2) + 2.1 2.0+1.6.1 2001 PSF no + 2.0.1 2.0+1.6.1 2001 PSF yes + 2.1.1 2.1+2.0.1 2001 PSF yes + 2.1.2 2.1.1 2002 PSF yes + 2.1.3 2.1.2 2002 PSF yes + 2.2 and above 2.1.1 2001-now PSF yes + +Footnotes: + +(1) GPL-compatible doesn't mean that we're distributing Python under + the GPL. All Python licenses, unlike the GPL, let you distribute + a modified version without making your changes open source. The + GPL-compatible licenses make it possible to combine Python with + other software that is released under the GPL; the others don't. + +(2) According to Richard Stallman, 1.6.1 is not GPL-compatible, + because its license has a choice of law clause. According to + CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1 + is "not incompatible" with the GPL. + +Thanks to the many outside volunteers who have worked under Guido's +direction to make these releases possible. + + +B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON +=============================================================== + +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +-------------------------------------------- + +1. This LICENSE AGREEMENT is between the Python Software Foundation +("PSF"), and the Individual or Organization ("Licensee") accessing and +otherwise using this software ("Python") in source or binary form and +its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF hereby +grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, +analyze, test, perform and/or display publicly, prepare derivative works, +distribute, and otherwise use Python alone or in any derivative version, +provided, however, that PSF's License Agreement and PSF's notice of copyright, +i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Python Software Foundation; +All Rights Reserved" are retained in Python alone or in any derivative version +prepared by Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python. + +4. PSF is making Python available to Licensee on an "AS IS" +basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between PSF and +Licensee. This License Agreement does not grant permission to use PSF +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using Python, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 +------------------------------------------- + +BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 + +1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an +office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the +Individual or Organization ("Licensee") accessing and otherwise using +this software in source or binary form and its associated +documentation ("the Software"). + +2. Subject to the terms and conditions of this BeOpen Python License +Agreement, BeOpen hereby grants Licensee a non-exclusive, +royalty-free, world-wide license to reproduce, analyze, test, perform +and/or display publicly, prepare derivative works, distribute, and +otherwise use the Software alone or in any derivative version, +provided, however, that the BeOpen Python License is retained in the +Software, alone or in any derivative version prepared by Licensee. + +3. BeOpen is making the Software available to Licensee on an "AS IS" +basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE +SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS +AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY +DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +5. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +6. This License Agreement shall be governed by and interpreted in all +respects by the law of the State of California, excluding conflict of +law provisions. Nothing in this License Agreement shall be deemed to +create any relationship of agency, partnership, or joint venture +between BeOpen and Licensee. This License Agreement does not grant +permission to use BeOpen trademarks or trade names in a trademark +sense to endorse or promote products or services of Licensee, or any +third party. As an exception, the "BeOpen Python" logos available at +http://www.pythonlabs.com/logos.html may be used according to the +permissions granted on that web page. + +7. By copying, installing or otherwise using the software, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1 +--------------------------------------- + +1. This LICENSE AGREEMENT is between the Corporation for National +Research Initiatives, having an office at 1895 Preston White Drive, +Reston, VA 20191 ("CNRI"), and the Individual or Organization +("Licensee") accessing and otherwise using Python 1.6.1 software in +source or binary form and its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, CNRI +hereby grants Licensee a nonexclusive, royalty-free, world-wide +license to reproduce, analyze, test, perform and/or display publicly, +prepare derivative works, distribute, and otherwise use Python 1.6.1 +alone or in any derivative version, provided, however, that CNRI's +License Agreement and CNRI's notice of copyright, i.e., "Copyright (c) +1995-2001 Corporation for National Research Initiatives; All Rights +Reserved" are retained in Python 1.6.1 alone or in any derivative +version prepared by Licensee. Alternately, in lieu of CNRI's License +Agreement, Licensee may substitute the following text (omitting the +quotes): "Python 1.6.1 is made available subject to the terms and +conditions in CNRI's License Agreement. This Agreement together with +Python 1.6.1 may be located on the Internet using the following +unique, persistent identifier (known as a handle): 1895.22/1013. This +Agreement may also be obtained from a proxy server on the Internet +using the following URL: http://hdl.handle.net/1895.22/1013". + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python 1.6.1 or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python 1.6.1. + +4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" +basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. This License Agreement shall be governed by the federal +intellectual property law of the United States, including without +limitation the federal copyright law, and, to the extent such +U.S. federal law does not apply, by the law of the Commonwealth of +Virginia, excluding Virginia's conflict of law provisions. +Notwithstanding the foregoing, with regard to derivative works based +on Python 1.6.1 that incorporate non-separable material that was +previously distributed under the GNU General Public License (GPL), the +law of the Commonwealth of Virginia shall govern this License +Agreement only as to issues arising under or with respect to +Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this +License Agreement shall be deemed to create any relationship of +agency, partnership, or joint venture between CNRI and Licensee. This +License Agreement does not grant permission to use CNRI trademarks or +trade name in a trademark sense to endorse or promote products or +services of Licensee, or any third party. + +8. By clicking on the "ACCEPT" button where indicated, or by copying, +installing or otherwise using Python 1.6.1, Licensee agrees to be +bound by the terms and conditions of this License Agreement. + + ACCEPT + + +CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 +-------------------------------------------------- + +Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, +The Netherlands. All rights reserved. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/argparse/README.md b/node_modules/argparse/README.md new file mode 100644 index 00000000..550b5c9b --- /dev/null +++ b/node_modules/argparse/README.md @@ -0,0 +1,84 @@ +argparse +======== + +[![Build Status](https://secure.travis-ci.org/nodeca/argparse.svg?branch=master)](http://travis-ci.org/nodeca/argparse) +[![NPM version](https://img.shields.io/npm/v/argparse.svg)](https://www.npmjs.org/package/argparse) + +CLI arguments parser for node.js, with [sub-commands](https://docs.python.org/3.9/library/argparse.html#sub-commands) support. Port of python's [argparse](http://docs.python.org/dev/library/argparse.html) (version [3.9.0](https://github.com/python/cpython/blob/v3.9.0rc1/Lib/argparse.py)). + +**Difference with original.** + +- JS has no keyword arguments support. + - Pass options instead: `new ArgumentParser({ description: 'example', add_help: true })`. +- JS has no python's types `int`, `float`, ... + - Use string-typed names: `.add_argument('-b', { type: 'int', help: 'help' })`. +- `%r` format specifier uses `require('util').inspect()`. + +More details in [doc](./doc). + + +Example +------- + +`test.js` file: + +```javascript +#!/usr/bin/env node +'use strict'; + +const { ArgumentParser } = require('argparse'); +const { version } = require('./package.json'); + +const parser = new ArgumentParser({ + description: 'Argparse example' +}); + +parser.add_argument('-v', '--version', { action: 'version', version }); +parser.add_argument('-f', '--foo', { help: 'foo bar' }); +parser.add_argument('-b', '--bar', { help: 'bar foo' }); +parser.add_argument('--baz', { help: 'baz bar' }); + +console.dir(parser.parse_args()); +``` + +Display help: + +``` +$ ./test.js -h +usage: test.js [-h] [-v] [-f FOO] [-b BAR] [--baz BAZ] + +Argparse example + +optional arguments: + -h, --help show this help message and exit + -v, --version show program's version number and exit + -f FOO, --foo FOO foo bar + -b BAR, --bar BAR bar foo + --baz BAZ baz bar +``` + +Parse arguments: + +``` +$ ./test.js -f=3 --bar=4 --baz 5 +{ foo: '3', bar: '4', baz: '5' } +``` + + +API docs +-------- + +Since this is a port with minimal divergence, there's no separate documentation. +Use original one instead, with notes about difference. + +1. [Original doc](https://docs.python.org/3.9/library/argparse.html). +2. [Original tutorial](https://docs.python.org/3.9/howto/argparse.html). +3. [Difference with python](./doc). + + +argparse for enterprise +----------------------- + +Available as part of the Tidelift Subscription + +The maintainers of argparse and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-argparse?utm_source=npm-argparse&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/node_modules/argparse/argparse.js b/node_modules/argparse/argparse.js new file mode 100644 index 00000000..2b8c8c63 --- /dev/null +++ b/node_modules/argparse/argparse.js @@ -0,0 +1,3707 @@ +// Port of python's argparse module, version 3.9.0: +// https://github.com/python/cpython/blob/v3.9.0rc1/Lib/argparse.py + +'use strict' + +// Copyright (C) 2010-2020 Python Software Foundation. +// Copyright (C) 2020 argparse.js authors + +/* + * Command-line parsing library + * + * This module is an optparse-inspired command-line parsing library that: + * + * - handles both optional and positional arguments + * - produces highly informative usage messages + * - supports parsers that dispatch to sub-parsers + * + * The following is a simple usage example that sums integers from the + * command-line and writes the result to a file:: + * + * parser = argparse.ArgumentParser( + * description='sum the integers at the command line') + * parser.add_argument( + * 'integers', metavar='int', nargs='+', type=int, + * help='an integer to be summed') + * parser.add_argument( + * '--log', default=sys.stdout, type=argparse.FileType('w'), + * help='the file where the sum should be written') + * args = parser.parse_args() + * args.log.write('%s' % sum(args.integers)) + * args.log.close() + * + * The module contains the following public classes: + * + * - ArgumentParser -- The main entry point for command-line parsing. As the + * example above shows, the add_argument() method is used to populate + * the parser with actions for optional and positional arguments. Then + * the parse_args() method is invoked to convert the args at the + * command-line into an object with attributes. + * + * - ArgumentError -- The exception raised by ArgumentParser objects when + * there are errors with the parser's actions. Errors raised while + * parsing the command-line are caught by ArgumentParser and emitted + * as command-line messages. + * + * - FileType -- A factory for defining types of files to be created. As the + * example above shows, instances of FileType are typically passed as + * the type= argument of add_argument() calls. + * + * - Action -- The base class for parser actions. Typically actions are + * selected by passing strings like 'store_true' or 'append_const' to + * the action= argument of add_argument(). However, for greater + * customization of ArgumentParser actions, subclasses of Action may + * be defined and passed as the action= argument. + * + * - HelpFormatter, RawDescriptionHelpFormatter, RawTextHelpFormatter, + * ArgumentDefaultsHelpFormatter -- Formatter classes which + * may be passed as the formatter_class= argument to the + * ArgumentParser constructor. HelpFormatter is the default, + * RawDescriptionHelpFormatter and RawTextHelpFormatter tell the parser + * not to change the formatting for help text, and + * ArgumentDefaultsHelpFormatter adds information about argument defaults + * to the help. + * + * All other classes in this module are considered implementation details. + * (Also note that HelpFormatter and RawDescriptionHelpFormatter are only + * considered public as object names -- the API of the formatter objects is + * still considered an implementation detail.) + */ + +const SUPPRESS = '==SUPPRESS==' + +const OPTIONAL = '?' +const ZERO_OR_MORE = '*' +const ONE_OR_MORE = '+' +const PARSER = 'A...' +const REMAINDER = '...' +const _UNRECOGNIZED_ARGS_ATTR = '_unrecognized_args' + + +// ================================== +// Utility functions used for porting +// ================================== +const assert = require('assert') +const util = require('util') +const fs = require('fs') +const sub = require('./lib/sub') +const path = require('path') +const repr = util.inspect + +function get_argv() { + // omit first argument (which is assumed to be interpreter - `node`, `coffee`, `ts-node`, etc.) + return process.argv.slice(1) +} + +function get_terminal_size() { + return { + columns: +process.env.COLUMNS || process.stdout.columns || 80 + } +} + +function hasattr(object, name) { + return Object.prototype.hasOwnProperty.call(object, name) +} + +function getattr(object, name, value) { + return hasattr(object, name) ? object[name] : value +} + +function setattr(object, name, value) { + object[name] = value +} + +function setdefault(object, name, value) { + if (!hasattr(object, name)) object[name] = value + return object[name] +} + +function delattr(object, name) { + delete object[name] +} + +function range(from, to, step=1) { + // range(10) is equivalent to range(0, 10) + if (arguments.length === 1) [ to, from ] = [ from, 0 ] + if (typeof from !== 'number' || typeof to !== 'number' || typeof step !== 'number') { + throw new TypeError('argument cannot be interpreted as an integer') + } + if (step === 0) throw new TypeError('range() arg 3 must not be zero') + + let result = [] + if (step > 0) { + for (let i = from; i < to; i += step) result.push(i) + } else { + for (let i = from; i > to; i += step) result.push(i) + } + return result +} + +function splitlines(str, keepends = false) { + let result + if (!keepends) { + result = str.split(/\r\n|[\n\r\v\f\x1c\x1d\x1e\x85\u2028\u2029]/) + } else { + result = [] + let parts = str.split(/(\r\n|[\n\r\v\f\x1c\x1d\x1e\x85\u2028\u2029])/) + for (let i = 0; i < parts.length; i += 2) { + result.push(parts[i] + (i + 1 < parts.length ? parts[i + 1] : '')) + } + } + if (!result[result.length - 1]) result.pop() + return result +} + +function _string_lstrip(string, prefix_chars) { + let idx = 0 + while (idx < string.length && prefix_chars.includes(string[idx])) idx++ + return idx ? string.slice(idx) : string +} + +function _string_split(string, sep, maxsplit) { + let result = string.split(sep) + if (result.length > maxsplit) { + result = result.slice(0, maxsplit).concat([ result.slice(maxsplit).join(sep) ]) + } + return result +} + +function _array_equal(array1, array2) { + if (array1.length !== array2.length) return false + for (let i = 0; i < array1.length; i++) { + if (array1[i] !== array2[i]) return false + } + return true +} + +function _array_remove(array, item) { + let idx = array.indexOf(item) + if (idx === -1) throw new TypeError(sub('%r not in list', item)) + array.splice(idx, 1) +} + +// normalize choices to array; +// this isn't required in python because `in` and `map` operators work with anything, +// but in js dealing with multiple types here is too clunky +function _choices_to_array(choices) { + if (choices === undefined) { + return [] + } else if (Array.isArray(choices)) { + return choices + } else if (choices !== null && typeof choices[Symbol.iterator] === 'function') { + return Array.from(choices) + } else if (typeof choices === 'object' && choices !== null) { + return Object.keys(choices) + } else { + throw new Error(sub('invalid choices value: %r', choices)) + } +} + +// decorator that allows a class to be called without new +function _callable(cls) { + let result = { // object is needed for inferred class name + [cls.name]: function (...args) { + let this_class = new.target === result || !new.target + return Reflect.construct(cls, args, this_class ? cls : new.target) + } + } + result[cls.name].prototype = cls.prototype + // fix default tag for toString, e.g. [object Action] instead of [object Object] + cls.prototype[Symbol.toStringTag] = cls.name + return result[cls.name] +} + +function _alias(object, from, to) { + try { + let name = object.constructor.name + Object.defineProperty(object, from, { + value: util.deprecate(object[to], sub('%s.%s() is renamed to %s.%s()', + name, from, name, to)), + enumerable: false + }) + } catch {} +} + +// decorator that allows snake_case class methods to be called with camelCase and vice versa +function _camelcase_alias(_class) { + for (let name of Object.getOwnPropertyNames(_class.prototype)) { + let camelcase = name.replace(/\w_[a-z]/g, s => s[0] + s[2].toUpperCase()) + if (camelcase !== name) _alias(_class.prototype, camelcase, name) + } + return _class +} + +function _to_legacy_name(key) { + key = key.replace(/\w_[a-z]/g, s => s[0] + s[2].toUpperCase()) + if (key === 'default') key = 'defaultValue' + if (key === 'const') key = 'constant' + return key +} + +function _to_new_name(key) { + if (key === 'defaultValue') key = 'default' + if (key === 'constant') key = 'const' + key = key.replace(/[A-Z]/g, c => '_' + c.toLowerCase()) + return key +} + +// parse options +let no_default = Symbol('no_default_value') +function _parse_opts(args, descriptor) { + function get_name() { + let stack = new Error().stack.split('\n') + .map(x => x.match(/^ at (.*) \(.*\)$/)) + .filter(Boolean) + .map(m => m[1]) + .map(fn => fn.match(/[^ .]*$/)[0]) + + if (stack.length && stack[0] === get_name.name) stack.shift() + if (stack.length && stack[0] === _parse_opts.name) stack.shift() + return stack.length ? stack[0] : '' + } + + args = Array.from(args) + let kwargs = {} + let result = [] + let last_opt = args.length && args[args.length - 1] + + if (typeof last_opt === 'object' && last_opt !== null && !Array.isArray(last_opt) && + (!last_opt.constructor || last_opt.constructor.name === 'Object')) { + kwargs = Object.assign({}, args.pop()) + } + + // LEGACY (v1 compatibility): camelcase + let renames = [] + for (let key of Object.keys(descriptor)) { + let old_name = _to_legacy_name(key) + if (old_name !== key && (old_name in kwargs)) { + if (key in kwargs) { + // default and defaultValue specified at the same time, happens often in old tests + //throw new TypeError(sub('%s() got multiple values for argument %r', get_name(), key)) + } else { + kwargs[key] = kwargs[old_name] + } + renames.push([ old_name, key ]) + delete kwargs[old_name] + } + } + if (renames.length) { + let name = get_name() + deprecate('camelcase_' + name, sub('%s(): following options are renamed: %s', + name, renames.map(([ a, b ]) => sub('%r -> %r', a, b)))) + } + // end + + let missing_positionals = [] + let positional_count = args.length + + for (let [ key, def ] of Object.entries(descriptor)) { + if (key[0] === '*') { + if (key.length > 0 && key[1] === '*') { + // LEGACY (v1 compatibility): camelcase + let renames = [] + for (let key of Object.keys(kwargs)) { + let new_name = _to_new_name(key) + if (new_name !== key && (key in kwargs)) { + if (new_name in kwargs) { + // default and defaultValue specified at the same time, happens often in old tests + //throw new TypeError(sub('%s() got multiple values for argument %r', get_name(), new_name)) + } else { + kwargs[new_name] = kwargs[key] + } + renames.push([ key, new_name ]) + delete kwargs[key] + } + } + if (renames.length) { + let name = get_name() + deprecate('camelcase_' + name, sub('%s(): following options are renamed: %s', + name, renames.map(([ a, b ]) => sub('%r -> %r', a, b)))) + } + // end + result.push(kwargs) + kwargs = {} + } else { + result.push(args) + args = [] + } + } else if (key in kwargs && args.length > 0) { + throw new TypeError(sub('%s() got multiple values for argument %r', get_name(), key)) + } else if (key in kwargs) { + result.push(kwargs[key]) + delete kwargs[key] + } else if (args.length > 0) { + result.push(args.shift()) + } else if (def !== no_default) { + result.push(def) + } else { + missing_positionals.push(key) + } + } + + if (Object.keys(kwargs).length) { + throw new TypeError(sub('%s() got an unexpected keyword argument %r', + get_name(), Object.keys(kwargs)[0])) + } + + if (args.length) { + let from = Object.entries(descriptor).filter(([ k, v ]) => k[0] !== '*' && v !== no_default).length + let to = Object.entries(descriptor).filter(([ k ]) => k[0] !== '*').length + throw new TypeError(sub('%s() takes %s positional argument%s but %s %s given', + get_name(), + from === to ? sub('from %s to %s', from, to) : to, + from === to && to === 1 ? '' : 's', + positional_count, + positional_count === 1 ? 'was' : 'were')) + } + + if (missing_positionals.length) { + let strs = missing_positionals.map(repr) + if (strs.length > 1) strs[strs.length - 1] = 'and ' + strs[strs.length - 1] + let str_joined = strs.join(strs.length === 2 ? '' : ', ') + throw new TypeError(sub('%s() missing %i required positional argument%s: %s', + get_name(), strs.length, strs.length === 1 ? '' : 's', str_joined)) + } + + return result +} + +let _deprecations = {} +function deprecate(id, string) { + _deprecations[id] = _deprecations[id] || util.deprecate(() => {}, string) + _deprecations[id]() +} + + +// ============================= +// Utility functions and classes +// ============================= +function _AttributeHolder(cls = Object) { + /* + * Abstract base class that provides __repr__. + * + * The __repr__ method returns a string in the format:: + * ClassName(attr=name, attr=name, ...) + * The attributes are determined either by a class-level attribute, + * '_kwarg_names', or by inspecting the instance __dict__. + */ + + return class _AttributeHolder extends cls { + [util.inspect.custom]() { + let type_name = this.constructor.name + let arg_strings = [] + let star_args = {} + for (let arg of this._get_args()) { + arg_strings.push(repr(arg)) + } + for (let [ name, value ] of this._get_kwargs()) { + if (/^[a-z_][a-z0-9_$]*$/i.test(name)) { + arg_strings.push(sub('%s=%r', name, value)) + } else { + star_args[name] = value + } + } + if (Object.keys(star_args).length) { + arg_strings.push(sub('**%s', repr(star_args))) + } + return sub('%s(%s)', type_name, arg_strings.join(', ')) + } + + toString() { + return this[util.inspect.custom]() + } + + _get_kwargs() { + return Object.entries(this) + } + + _get_args() { + return [] + } + } +} + + +function _copy_items(items) { + if (items === undefined) { + return [] + } + return items.slice(0) +} + + +// =============== +// Formatting Help +// =============== +const HelpFormatter = _camelcase_alias(_callable(class HelpFormatter { + /* + * Formatter for generating usage messages and argument help strings. + * + * Only the name of this class is considered a public API. All the methods + * provided by the class are considered an implementation detail. + */ + + constructor() { + let [ + prog, + indent_increment, + max_help_position, + width + ] = _parse_opts(arguments, { + prog: no_default, + indent_increment: 2, + max_help_position: 24, + width: undefined + }) + + // default setting for width + if (width === undefined) { + width = get_terminal_size().columns + width -= 2 + } + + this._prog = prog + this._indent_increment = indent_increment + this._max_help_position = Math.min(max_help_position, + Math.max(width - 20, indent_increment * 2)) + this._width = width + + this._current_indent = 0 + this._level = 0 + this._action_max_length = 0 + + this._root_section = this._Section(this, undefined) + this._current_section = this._root_section + + this._whitespace_matcher = /[ \t\n\r\f\v]+/g // equivalent to python /\s+/ with ASCII flag + this._long_break_matcher = /\n\n\n+/g + } + + // =============================== + // Section and indentation methods + // =============================== + _indent() { + this._current_indent += this._indent_increment + this._level += 1 + } + + _dedent() { + this._current_indent -= this._indent_increment + assert(this._current_indent >= 0, 'Indent decreased below 0.') + this._level -= 1 + } + + _add_item(func, args) { + this._current_section.items.push([ func, args ]) + } + + // ======================== + // Message building methods + // ======================== + start_section(heading) { + this._indent() + let section = this._Section(this, this._current_section, heading) + this._add_item(section.format_help.bind(section), []) + this._current_section = section + } + + end_section() { + this._current_section = this._current_section.parent + this._dedent() + } + + add_text(text) { + if (text !== SUPPRESS && text !== undefined) { + this._add_item(this._format_text.bind(this), [text]) + } + } + + add_usage(usage, actions, groups, prefix = undefined) { + if (usage !== SUPPRESS) { + let args = [ usage, actions, groups, prefix ] + this._add_item(this._format_usage.bind(this), args) + } + } + + add_argument(action) { + if (action.help !== SUPPRESS) { + + // find all invocations + let invocations = [this._format_action_invocation(action)] + for (let subaction of this._iter_indented_subactions(action)) { + invocations.push(this._format_action_invocation(subaction)) + } + + // update the maximum item length + let invocation_length = Math.max(...invocations.map(invocation => invocation.length)) + let action_length = invocation_length + this._current_indent + this._action_max_length = Math.max(this._action_max_length, + action_length) + + // add the item to the list + this._add_item(this._format_action.bind(this), [action]) + } + } + + add_arguments(actions) { + for (let action of actions) { + this.add_argument(action) + } + } + + // ======================= + // Help-formatting methods + // ======================= + format_help() { + let help = this._root_section.format_help() + if (help) { + help = help.replace(this._long_break_matcher, '\n\n') + help = help.replace(/^\n+|\n+$/g, '') + '\n' + } + return help + } + + _join_parts(part_strings) { + return part_strings.filter(part => part && part !== SUPPRESS).join('') + } + + _format_usage(usage, actions, groups, prefix) { + if (prefix === undefined) { + prefix = 'usage: ' + } + + // if usage is specified, use that + if (usage !== undefined) { + usage = sub(usage, { prog: this._prog }) + + // if no optionals or positionals are available, usage is just prog + } else if (usage === undefined && !actions.length) { + usage = sub('%(prog)s', { prog: this._prog }) + + // if optionals and positionals are available, calculate usage + } else if (usage === undefined) { + let prog = sub('%(prog)s', { prog: this._prog }) + + // split optionals from positionals + let optionals = [] + let positionals = [] + for (let action of actions) { + if (action.option_strings.length) { + optionals.push(action) + } else { + positionals.push(action) + } + } + + // build full usage string + let action_usage = this._format_actions_usage([].concat(optionals).concat(positionals), groups) + usage = [ prog, action_usage ].map(String).join(' ') + + // wrap the usage parts if it's too long + let text_width = this._width - this._current_indent + if (prefix.length + usage.length > text_width) { + + // break usage into wrappable parts + let part_regexp = /\(.*?\)+(?=\s|$)|\[.*?\]+(?=\s|$)|\S+/g + let opt_usage = this._format_actions_usage(optionals, groups) + let pos_usage = this._format_actions_usage(positionals, groups) + let opt_parts = opt_usage.match(part_regexp) || [] + let pos_parts = pos_usage.match(part_regexp) || [] + assert(opt_parts.join(' ') === opt_usage) + assert(pos_parts.join(' ') === pos_usage) + + // helper for wrapping lines + let get_lines = (parts, indent, prefix = undefined) => { + let lines = [] + let line = [] + let line_len + if (prefix !== undefined) { + line_len = prefix.length - 1 + } else { + line_len = indent.length - 1 + } + for (let part of parts) { + if (line_len + 1 + part.length > text_width && line) { + lines.push(indent + line.join(' ')) + line = [] + line_len = indent.length - 1 + } + line.push(part) + line_len += part.length + 1 + } + if (line.length) { + lines.push(indent + line.join(' ')) + } + if (prefix !== undefined) { + lines[0] = lines[0].slice(indent.length) + } + return lines + } + + let lines + + // if prog is short, follow it with optionals or positionals + if (prefix.length + prog.length <= 0.75 * text_width) { + let indent = ' '.repeat(prefix.length + prog.length + 1) + if (opt_parts.length) { + lines = get_lines([prog].concat(opt_parts), indent, prefix) + lines = lines.concat(get_lines(pos_parts, indent)) + } else if (pos_parts.length) { + lines = get_lines([prog].concat(pos_parts), indent, prefix) + } else { + lines = [prog] + } + + // if prog is long, put it on its own line + } else { + let indent = ' '.repeat(prefix.length) + let parts = [].concat(opt_parts).concat(pos_parts) + lines = get_lines(parts, indent) + if (lines.length > 1) { + lines = [] + lines = lines.concat(get_lines(opt_parts, indent)) + lines = lines.concat(get_lines(pos_parts, indent)) + } + lines = [prog].concat(lines) + } + + // join lines into usage + usage = lines.join('\n') + } + } + + // prefix with 'usage:' + return sub('%s%s\n\n', prefix, usage) + } + + _format_actions_usage(actions, groups) { + // find group indices and identify actions in groups + let group_actions = new Set() + let inserts = {} + for (let group of groups) { + let start = actions.indexOf(group._group_actions[0]) + if (start === -1) { + continue + } else { + let end = start + group._group_actions.length + if (_array_equal(actions.slice(start, end), group._group_actions)) { + for (let action of group._group_actions) { + group_actions.add(action) + } + if (!group.required) { + if (start in inserts) { + inserts[start] += ' [' + } else { + inserts[start] = '[' + } + if (end in inserts) { + inserts[end] += ']' + } else { + inserts[end] = ']' + } + } else { + if (start in inserts) { + inserts[start] += ' (' + } else { + inserts[start] = '(' + } + if (end in inserts) { + inserts[end] += ')' + } else { + inserts[end] = ')' + } + } + for (let i of range(start + 1, end)) { + inserts[i] = '|' + } + } + } + } + + // collect all actions format strings + let parts = [] + for (let [ i, action ] of Object.entries(actions)) { + + // suppressed arguments are marked with None + // remove | separators for suppressed arguments + if (action.help === SUPPRESS) { + parts.push(undefined) + if (inserts[+i] === '|') { + delete inserts[+i] + } else if (inserts[+i + 1] === '|') { + delete inserts[+i + 1] + } + + // produce all arg strings + } else if (!action.option_strings.length) { + let default_value = this._get_default_metavar_for_positional(action) + let part = this._format_args(action, default_value) + + // if it's in a group, strip the outer [] + if (group_actions.has(action)) { + if (part[0] === '[' && part[part.length - 1] === ']') { + part = part.slice(1, -1) + } + } + + // add the action string to the list + parts.push(part) + + // produce the first way to invoke the option in brackets + } else { + let option_string = action.option_strings[0] + let part + + // if the Optional doesn't take a value, format is: + // -s or --long + if (action.nargs === 0) { + part = action.format_usage() + + // if the Optional takes a value, format is: + // -s ARGS or --long ARGS + } else { + let default_value = this._get_default_metavar_for_optional(action) + let args_string = this._format_args(action, default_value) + part = sub('%s %s', option_string, args_string) + } + + // make it look optional if it's not required or in a group + if (!action.required && !group_actions.has(action)) { + part = sub('[%s]', part) + } + + // add the action string to the list + parts.push(part) + } + } + + // insert things at the necessary indices + for (let i of Object.keys(inserts).map(Number).sort((a, b) => b - a)) { + parts.splice(+i, 0, inserts[+i]) + } + + // join all the action items with spaces + let text = parts.filter(Boolean).join(' ') + + // clean up separators for mutually exclusive groups + text = text.replace(/([\[(]) /g, '$1') + text = text.replace(/ ([\])])/g, '$1') + text = text.replace(/[\[(] *[\])]/g, '') + text = text.replace(/\(([^|]*)\)/g, '$1', text) + text = text.trim() + + // return the text + return text + } + + _format_text(text) { + if (text.includes('%(prog)')) { + text = sub(text, { prog: this._prog }) + } + let text_width = Math.max(this._width - this._current_indent, 11) + let indent = ' '.repeat(this._current_indent) + return this._fill_text(text, text_width, indent) + '\n\n' + } + + _format_action(action) { + // determine the required width and the entry label + let help_position = Math.min(this._action_max_length + 2, + this._max_help_position) + let help_width = Math.max(this._width - help_position, 11) + let action_width = help_position - this._current_indent - 2 + let action_header = this._format_action_invocation(action) + let indent_first + + // no help; start on same line and add a final newline + if (!action.help) { + let tup = [ this._current_indent, '', action_header ] + action_header = sub('%*s%s\n', ...tup) + + // short action name; start on the same line and pad two spaces + } else if (action_header.length <= action_width) { + let tup = [ this._current_indent, '', action_width, action_header ] + action_header = sub('%*s%-*s ', ...tup) + indent_first = 0 + + // long action name; start on the next line + } else { + let tup = [ this._current_indent, '', action_header ] + action_header = sub('%*s%s\n', ...tup) + indent_first = help_position + } + + // collect the pieces of the action help + let parts = [action_header] + + // if there was help for the action, add lines of help text + if (action.help) { + let help_text = this._expand_help(action) + let help_lines = this._split_lines(help_text, help_width) + parts.push(sub('%*s%s\n', indent_first, '', help_lines[0])) + for (let line of help_lines.slice(1)) { + parts.push(sub('%*s%s\n', help_position, '', line)) + } + + // or add a newline if the description doesn't end with one + } else if (!action_header.endsWith('\n')) { + parts.push('\n') + } + + // if there are any sub-actions, add their help as well + for (let subaction of this._iter_indented_subactions(action)) { + parts.push(this._format_action(subaction)) + } + + // return a single string + return this._join_parts(parts) + } + + _format_action_invocation(action) { + if (!action.option_strings.length) { + let default_value = this._get_default_metavar_for_positional(action) + let metavar = this._metavar_formatter(action, default_value)(1)[0] + return metavar + + } else { + let parts = [] + + // if the Optional doesn't take a value, format is: + // -s, --long + if (action.nargs === 0) { + parts = parts.concat(action.option_strings) + + // if the Optional takes a value, format is: + // -s ARGS, --long ARGS + } else { + let default_value = this._get_default_metavar_for_optional(action) + let args_string = this._format_args(action, default_value) + for (let option_string of action.option_strings) { + parts.push(sub('%s %s', option_string, args_string)) + } + } + + return parts.join(', ') + } + } + + _metavar_formatter(action, default_metavar) { + let result + if (action.metavar !== undefined) { + result = action.metavar + } else if (action.choices !== undefined) { + let choice_strs = _choices_to_array(action.choices).map(String) + result = sub('{%s}', choice_strs.join(',')) + } else { + result = default_metavar + } + + function format(tuple_size) { + if (Array.isArray(result)) { + return result + } else { + return Array(tuple_size).fill(result) + } + } + return format + } + + _format_args(action, default_metavar) { + let get_metavar = this._metavar_formatter(action, default_metavar) + let result + if (action.nargs === undefined) { + result = sub('%s', ...get_metavar(1)) + } else if (action.nargs === OPTIONAL) { + result = sub('[%s]', ...get_metavar(1)) + } else if (action.nargs === ZERO_OR_MORE) { + let metavar = get_metavar(1) + if (metavar.length === 2) { + result = sub('[%s [%s ...]]', ...metavar) + } else { + result = sub('[%s ...]', ...metavar) + } + } else if (action.nargs === ONE_OR_MORE) { + result = sub('%s [%s ...]', ...get_metavar(2)) + } else if (action.nargs === REMAINDER) { + result = '...' + } else if (action.nargs === PARSER) { + result = sub('%s ...', ...get_metavar(1)) + } else if (action.nargs === SUPPRESS) { + result = '' + } else { + let formats + try { + formats = range(action.nargs).map(() => '%s') + } catch (err) { + throw new TypeError('invalid nargs value') + } + result = sub(formats.join(' '), ...get_metavar(action.nargs)) + } + return result + } + + _expand_help(action) { + let params = Object.assign({ prog: this._prog }, action) + for (let name of Object.keys(params)) { + if (params[name] === SUPPRESS) { + delete params[name] + } + } + for (let name of Object.keys(params)) { + if (params[name] && params[name].name) { + params[name] = params[name].name + } + } + if (params.choices !== undefined) { + let choices_str = _choices_to_array(params.choices).map(String).join(', ') + params.choices = choices_str + } + // LEGACY (v1 compatibility): camelcase + for (let key of Object.keys(params)) { + let old_name = _to_legacy_name(key) + if (old_name !== key) { + params[old_name] = params[key] + } + } + // end + return sub(this._get_help_string(action), params) + } + + * _iter_indented_subactions(action) { + if (typeof action._get_subactions === 'function') { + this._indent() + yield* action._get_subactions() + this._dedent() + } + } + + _split_lines(text, width) { + text = text.replace(this._whitespace_matcher, ' ').trim() + // The textwrap module is used only for formatting help. + // Delay its import for speeding up the common usage of argparse. + let textwrap = require('./lib/textwrap') + return textwrap.wrap(text, { width }) + } + + _fill_text(text, width, indent) { + text = text.replace(this._whitespace_matcher, ' ').trim() + let textwrap = require('./lib/textwrap') + return textwrap.fill(text, { width, + initial_indent: indent, + subsequent_indent: indent }) + } + + _get_help_string(action) { + return action.help + } + + _get_default_metavar_for_optional(action) { + return action.dest.toUpperCase() + } + + _get_default_metavar_for_positional(action) { + return action.dest + } +})) + +HelpFormatter.prototype._Section = _callable(class _Section { + + constructor(formatter, parent, heading = undefined) { + this.formatter = formatter + this.parent = parent + this.heading = heading + this.items = [] + } + + format_help() { + // format the indented section + if (this.parent !== undefined) { + this.formatter._indent() + } + let item_help = this.formatter._join_parts(this.items.map(([ func, args ]) => func.apply(null, args))) + if (this.parent !== undefined) { + this.formatter._dedent() + } + + // return nothing if the section was empty + if (!item_help) { + return '' + } + + // add the heading if the section was non-empty + let heading + if (this.heading !== SUPPRESS && this.heading !== undefined) { + let current_indent = this.formatter._current_indent + heading = sub('%*s%s:\n', current_indent, '', this.heading) + } else { + heading = '' + } + + // join the section-initial newline, the heading and the help + return this.formatter._join_parts(['\n', heading, item_help, '\n']) + } +}) + + +const RawDescriptionHelpFormatter = _camelcase_alias(_callable(class RawDescriptionHelpFormatter extends HelpFormatter { + /* + * Help message formatter which retains any formatting in descriptions. + * + * Only the name of this class is considered a public API. All the methods + * provided by the class are considered an implementation detail. + */ + + _fill_text(text, width, indent) { + return splitlines(text, true).map(line => indent + line).join('') + } +})) + + +const RawTextHelpFormatter = _camelcase_alias(_callable(class RawTextHelpFormatter extends RawDescriptionHelpFormatter { + /* + * Help message formatter which retains formatting of all help text. + * + * Only the name of this class is considered a public API. All the methods + * provided by the class are considered an implementation detail. + */ + + _split_lines(text/*, width*/) { + return splitlines(text) + } +})) + + +const ArgumentDefaultsHelpFormatter = _camelcase_alias(_callable(class ArgumentDefaultsHelpFormatter extends HelpFormatter { + /* + * Help message formatter which adds default values to argument help. + * + * Only the name of this class is considered a public API. All the methods + * provided by the class are considered an implementation detail. + */ + + _get_help_string(action) { + let help = action.help + // LEGACY (v1 compatibility): additional check for defaultValue needed + if (!action.help.includes('%(default)') && !action.help.includes('%(defaultValue)')) { + if (action.default !== SUPPRESS) { + let defaulting_nargs = [OPTIONAL, ZERO_OR_MORE] + if (action.option_strings.length || defaulting_nargs.includes(action.nargs)) { + help += ' (default: %(default)s)' + } + } + } + return help + } +})) + + +const MetavarTypeHelpFormatter = _camelcase_alias(_callable(class MetavarTypeHelpFormatter extends HelpFormatter { + /* + * Help message formatter which uses the argument 'type' as the default + * metavar value (instead of the argument 'dest') + * + * Only the name of this class is considered a public API. All the methods + * provided by the class are considered an implementation detail. + */ + + _get_default_metavar_for_optional(action) { + return typeof action.type === 'function' ? action.type.name : action.type + } + + _get_default_metavar_for_positional(action) { + return typeof action.type === 'function' ? action.type.name : action.type + } +})) + + +// ===================== +// Options and Arguments +// ===================== +function _get_action_name(argument) { + if (argument === undefined) { + return undefined + } else if (argument.option_strings.length) { + return argument.option_strings.join('/') + } else if (![ undefined, SUPPRESS ].includes(argument.metavar)) { + return argument.metavar + } else if (![ undefined, SUPPRESS ].includes(argument.dest)) { + return argument.dest + } else { + return undefined + } +} + + +const ArgumentError = _callable(class ArgumentError extends Error { + /* + * An error from creating or using an argument (optional or positional). + * + * The string value of this exception is the message, augmented with + * information about the argument that caused it. + */ + + constructor(argument, message) { + super() + this.name = 'ArgumentError' + this._argument_name = _get_action_name(argument) + this._message = message + this.message = this.str() + } + + str() { + let format + if (this._argument_name === undefined) { + format = '%(message)s' + } else { + format = 'argument %(argument_name)s: %(message)s' + } + return sub(format, { message: this._message, + argument_name: this._argument_name }) + } +}) + + +const ArgumentTypeError = _callable(class ArgumentTypeError extends Error { + /* + * An error from trying to convert a command line string to a type. + */ + + constructor(message) { + super(message) + this.name = 'ArgumentTypeError' + } +}) + + +// ============== +// Action classes +// ============== +const Action = _camelcase_alias(_callable(class Action extends _AttributeHolder(Function) { + /* + * Information about how to convert command line strings to Python objects. + * + * Action objects are used by an ArgumentParser to represent the information + * needed to parse a single argument from one or more strings from the + * command line. The keyword arguments to the Action constructor are also + * all attributes of Action instances. + * + * Keyword Arguments: + * + * - option_strings -- A list of command-line option strings which + * should be associated with this action. + * + * - dest -- The name of the attribute to hold the created object(s) + * + * - nargs -- The number of command-line arguments that should be + * consumed. By default, one argument will be consumed and a single + * value will be produced. Other values include: + * - N (an integer) consumes N arguments (and produces a list) + * - '?' consumes zero or one arguments + * - '*' consumes zero or more arguments (and produces a list) + * - '+' consumes one or more arguments (and produces a list) + * Note that the difference between the default and nargs=1 is that + * with the default, a single value will be produced, while with + * nargs=1, a list containing a single value will be produced. + * + * - const -- The value to be produced if the option is specified and the + * option uses an action that takes no values. + * + * - default -- The value to be produced if the option is not specified. + * + * - type -- A callable that accepts a single string argument, and + * returns the converted value. The standard Python types str, int, + * float, and complex are useful examples of such callables. If None, + * str is used. + * + * - choices -- A container of values that should be allowed. If not None, + * after a command-line argument has been converted to the appropriate + * type, an exception will be raised if it is not a member of this + * collection. + * + * - required -- True if the action must always be specified at the + * command line. This is only meaningful for optional command-line + * arguments. + * + * - help -- The help string describing the argument. + * + * - metavar -- The name to be used for the option's argument with the + * help string. If None, the 'dest' value will be used as the name. + */ + + constructor() { + let [ + option_strings, + dest, + nargs, + const_value, + default_value, + type, + choices, + required, + help, + metavar + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + nargs: undefined, + const: undefined, + default: undefined, + type: undefined, + choices: undefined, + required: false, + help: undefined, + metavar: undefined + }) + + // when this class is called as a function, redirect it to .call() method of itself + super('return arguments.callee.call.apply(arguments.callee, arguments)') + + this.option_strings = option_strings + this.dest = dest + this.nargs = nargs + this.const = const_value + this.default = default_value + this.type = type + this.choices = choices + this.required = required + this.help = help + this.metavar = metavar + } + + _get_kwargs() { + let names = [ + 'option_strings', + 'dest', + 'nargs', + 'const', + 'default', + 'type', + 'choices', + 'help', + 'metavar' + ] + return names.map(name => [ name, getattr(this, name) ]) + } + + format_usage() { + return this.option_strings[0] + } + + call(/*parser, namespace, values, option_string = undefined*/) { + throw new Error('.call() not defined') + } +})) + + +const BooleanOptionalAction = _camelcase_alias(_callable(class BooleanOptionalAction extends Action { + + constructor() { + let [ + option_strings, + dest, + default_value, + type, + choices, + required, + help, + metavar + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + default: undefined, + type: undefined, + choices: undefined, + required: false, + help: undefined, + metavar: undefined + }) + + let _option_strings = [] + for (let option_string of option_strings) { + _option_strings.push(option_string) + + if (option_string.startsWith('--')) { + option_string = '--no-' + option_string.slice(2) + _option_strings.push(option_string) + } + } + + if (help !== undefined && default_value !== undefined) { + help += ` (default: ${default_value})` + } + + super({ + option_strings: _option_strings, + dest, + nargs: 0, + default: default_value, + type, + choices, + required, + help, + metavar + }) + } + + call(parser, namespace, values, option_string = undefined) { + if (this.option_strings.includes(option_string)) { + setattr(namespace, this.dest, !option_string.startsWith('--no-')) + } + } + + format_usage() { + return this.option_strings.join(' | ') + } +})) + + +const _StoreAction = _callable(class _StoreAction extends Action { + + constructor() { + let [ + option_strings, + dest, + nargs, + const_value, + default_value, + type, + choices, + required, + help, + metavar + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + nargs: undefined, + const: undefined, + default: undefined, + type: undefined, + choices: undefined, + required: false, + help: undefined, + metavar: undefined + }) + + if (nargs === 0) { + throw new TypeError('nargs for store actions must be != 0; if you ' + + 'have nothing to store, actions such as store ' + + 'true or store const may be more appropriate') + } + if (const_value !== undefined && nargs !== OPTIONAL) { + throw new TypeError(sub('nargs must be %r to supply const', OPTIONAL)) + } + super({ + option_strings, + dest, + nargs, + const: const_value, + default: default_value, + type, + choices, + required, + help, + metavar + }) + } + + call(parser, namespace, values/*, option_string = undefined*/) { + setattr(namespace, this.dest, values) + } +}) + + +const _StoreConstAction = _callable(class _StoreConstAction extends Action { + + constructor() { + let [ + option_strings, + dest, + const_value, + default_value, + required, + help + //, metavar + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + const: no_default, + default: undefined, + required: false, + help: undefined, + metavar: undefined + }) + + super({ + option_strings, + dest, + nargs: 0, + const: const_value, + default: default_value, + required, + help + }) + } + + call(parser, namespace/*, values, option_string = undefined*/) { + setattr(namespace, this.dest, this.const) + } +}) + + +const _StoreTrueAction = _callable(class _StoreTrueAction extends _StoreConstAction { + + constructor() { + let [ + option_strings, + dest, + default_value, + required, + help + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + default: false, + required: false, + help: undefined + }) + + super({ + option_strings, + dest, + const: true, + default: default_value, + required, + help + }) + } +}) + + +const _StoreFalseAction = _callable(class _StoreFalseAction extends _StoreConstAction { + + constructor() { + let [ + option_strings, + dest, + default_value, + required, + help + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + default: true, + required: false, + help: undefined + }) + + super({ + option_strings, + dest, + const: false, + default: default_value, + required, + help + }) + } +}) + + +const _AppendAction = _callable(class _AppendAction extends Action { + + constructor() { + let [ + option_strings, + dest, + nargs, + const_value, + default_value, + type, + choices, + required, + help, + metavar + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + nargs: undefined, + const: undefined, + default: undefined, + type: undefined, + choices: undefined, + required: false, + help: undefined, + metavar: undefined + }) + + if (nargs === 0) { + throw new TypeError('nargs for append actions must be != 0; if arg ' + + 'strings are not supplying the value to append, ' + + 'the append const action may be more appropriate') + } + if (const_value !== undefined && nargs !== OPTIONAL) { + throw new TypeError(sub('nargs must be %r to supply const', OPTIONAL)) + } + super({ + option_strings, + dest, + nargs, + const: const_value, + default: default_value, + type, + choices, + required, + help, + metavar + }) + } + + call(parser, namespace, values/*, option_string = undefined*/) { + let items = getattr(namespace, this.dest, undefined) + items = _copy_items(items) + items.push(values) + setattr(namespace, this.dest, items) + } +}) + + +const _AppendConstAction = _callable(class _AppendConstAction extends Action { + + constructor() { + let [ + option_strings, + dest, + const_value, + default_value, + required, + help, + metavar + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + const: no_default, + default: undefined, + required: false, + help: undefined, + metavar: undefined + }) + + super({ + option_strings, + dest, + nargs: 0, + const: const_value, + default: default_value, + required, + help, + metavar + }) + } + + call(parser, namespace/*, values, option_string = undefined*/) { + let items = getattr(namespace, this.dest, undefined) + items = _copy_items(items) + items.push(this.const) + setattr(namespace, this.dest, items) + } +}) + + +const _CountAction = _callable(class _CountAction extends Action { + + constructor() { + let [ + option_strings, + dest, + default_value, + required, + help + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + default: undefined, + required: false, + help: undefined + }) + + super({ + option_strings, + dest, + nargs: 0, + default: default_value, + required, + help + }) + } + + call(parser, namespace/*, values, option_string = undefined*/) { + let count = getattr(namespace, this.dest, undefined) + if (count === undefined) { + count = 0 + } + setattr(namespace, this.dest, count + 1) + } +}) + + +const _HelpAction = _callable(class _HelpAction extends Action { + + constructor() { + let [ + option_strings, + dest, + default_value, + help + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: SUPPRESS, + default: SUPPRESS, + help: undefined + }) + + super({ + option_strings, + dest, + default: default_value, + nargs: 0, + help + }) + } + + call(parser/*, namespace, values, option_string = undefined*/) { + parser.print_help() + parser.exit() + } +}) + + +const _VersionAction = _callable(class _VersionAction extends Action { + + constructor() { + let [ + option_strings, + version, + dest, + default_value, + help + ] = _parse_opts(arguments, { + option_strings: no_default, + version: undefined, + dest: SUPPRESS, + default: SUPPRESS, + help: "show program's version number and exit" + }) + + super({ + option_strings, + dest, + default: default_value, + nargs: 0, + help + }) + this.version = version + } + + call(parser/*, namespace, values, option_string = undefined*/) { + let version = this.version + if (version === undefined) { + version = parser.version + } + let formatter = parser._get_formatter() + formatter.add_text(version) + parser._print_message(formatter.format_help(), process.stdout) + parser.exit() + } +}) + + +const _SubParsersAction = _camelcase_alias(_callable(class _SubParsersAction extends Action { + + constructor() { + let [ + option_strings, + prog, + parser_class, + dest, + required, + help, + metavar + ] = _parse_opts(arguments, { + option_strings: no_default, + prog: no_default, + parser_class: no_default, + dest: SUPPRESS, + required: false, + help: undefined, + metavar: undefined + }) + + let name_parser_map = {} + + super({ + option_strings, + dest, + nargs: PARSER, + choices: name_parser_map, + required, + help, + metavar + }) + + this._prog_prefix = prog + this._parser_class = parser_class + this._name_parser_map = name_parser_map + this._choices_actions = [] + } + + add_parser() { + let [ + name, + kwargs + ] = _parse_opts(arguments, { + name: no_default, + '**kwargs': no_default + }) + + // set prog from the existing prefix + if (kwargs.prog === undefined) { + kwargs.prog = sub('%s %s', this._prog_prefix, name) + } + + let aliases = getattr(kwargs, 'aliases', []) + delete kwargs.aliases + + // create a pseudo-action to hold the choice help + if ('help' in kwargs) { + let help = kwargs.help + delete kwargs.help + let choice_action = this._ChoicesPseudoAction(name, aliases, help) + this._choices_actions.push(choice_action) + } + + // create the parser and add it to the map + let parser = new this._parser_class(kwargs) + this._name_parser_map[name] = parser + + // make parser available under aliases also + for (let alias of aliases) { + this._name_parser_map[alias] = parser + } + + return parser + } + + _get_subactions() { + return this._choices_actions + } + + call(parser, namespace, values/*, option_string = undefined*/) { + let parser_name = values[0] + let arg_strings = values.slice(1) + + // set the parser name if requested + if (this.dest !== SUPPRESS) { + setattr(namespace, this.dest, parser_name) + } + + // select the parser + if (hasattr(this._name_parser_map, parser_name)) { + parser = this._name_parser_map[parser_name] + } else { + let args = {parser_name, + choices: this._name_parser_map.join(', ')} + let msg = sub('unknown parser %(parser_name)r (choices: %(choices)s)', args) + throw new ArgumentError(this, msg) + } + + // parse all the remaining options into the namespace + // store any unrecognized options on the object, so that the top + // level parser can decide what to do with them + + // In case this subparser defines new defaults, we parse them + // in a new namespace object and then update the original + // namespace for the relevant parts. + let subnamespace + [ subnamespace, arg_strings ] = parser.parse_known_args(arg_strings, undefined) + for (let [ key, value ] of Object.entries(subnamespace)) { + setattr(namespace, key, value) + } + + if (arg_strings.length) { + setdefault(namespace, _UNRECOGNIZED_ARGS_ATTR, []) + getattr(namespace, _UNRECOGNIZED_ARGS_ATTR).push(...arg_strings) + } + } +})) + + +_SubParsersAction.prototype._ChoicesPseudoAction = _callable(class _ChoicesPseudoAction extends Action { + constructor(name, aliases, help) { + let metavar = name, dest = name + if (aliases.length) { + metavar += sub(' (%s)', aliases.join(', ')) + } + super({ option_strings: [], dest, help, metavar }) + } +}) + + +const _ExtendAction = _callable(class _ExtendAction extends _AppendAction { + call(parser, namespace, values/*, option_string = undefined*/) { + let items = getattr(namespace, this.dest, undefined) + items = _copy_items(items) + items = items.concat(values) + setattr(namespace, this.dest, items) + } +}) + + +// ============== +// Type classes +// ============== +const FileType = _callable(class FileType extends Function { + /* + * Factory for creating file object types + * + * Instances of FileType are typically passed as type= arguments to the + * ArgumentParser add_argument() method. + * + * Keyword Arguments: + * - mode -- A string indicating how the file is to be opened. Accepts the + * same values as the builtin open() function. + * - bufsize -- The file's desired buffer size. Accepts the same values as + * the builtin open() function. + * - encoding -- The file's encoding. Accepts the same values as the + * builtin open() function. + * - errors -- A string indicating how encoding and decoding errors are to + * be handled. Accepts the same value as the builtin open() function. + */ + + constructor() { + let [ + flags, + encoding, + mode, + autoClose, + emitClose, + start, + end, + highWaterMark, + fs + ] = _parse_opts(arguments, { + flags: 'r', + encoding: undefined, + mode: undefined, // 0o666 + autoClose: undefined, // true + emitClose: undefined, // false + start: undefined, // 0 + end: undefined, // Infinity + highWaterMark: undefined, // 64 * 1024 + fs: undefined + }) + + // when this class is called as a function, redirect it to .call() method of itself + super('return arguments.callee.call.apply(arguments.callee, arguments)') + + Object.defineProperty(this, 'name', { + get() { + return sub('FileType(%r)', flags) + } + }) + this._flags = flags + this._options = {} + if (encoding !== undefined) this._options.encoding = encoding + if (mode !== undefined) this._options.mode = mode + if (autoClose !== undefined) this._options.autoClose = autoClose + if (emitClose !== undefined) this._options.emitClose = emitClose + if (start !== undefined) this._options.start = start + if (end !== undefined) this._options.end = end + if (highWaterMark !== undefined) this._options.highWaterMark = highWaterMark + if (fs !== undefined) this._options.fs = fs + } + + call(string) { + // the special argument "-" means sys.std{in,out} + if (string === '-') { + if (this._flags.includes('r')) { + return process.stdin + } else if (this._flags.includes('w')) { + return process.stdout + } else { + let msg = sub('argument "-" with mode %r', this._flags) + throw new TypeError(msg) + } + } + + // all other arguments are used as file names + let fd + try { + fd = fs.openSync(string, this._flags, this._options.mode) + } catch (e) { + let args = { filename: string, error: e.message } + let message = "can't open '%(filename)s': %(error)s" + throw new ArgumentTypeError(sub(message, args)) + } + + let options = Object.assign({ fd, flags: this._flags }, this._options) + if (this._flags.includes('r')) { + return fs.createReadStream(undefined, options) + } else if (this._flags.includes('w')) { + return fs.createWriteStream(undefined, options) + } else { + let msg = sub('argument "%s" with mode %r', string, this._flags) + throw new TypeError(msg) + } + } + + [util.inspect.custom]() { + let args = [ this._flags ] + let kwargs = Object.entries(this._options).map(([ k, v ]) => { + if (k === 'mode') v = { value: v, [util.inspect.custom]() { return '0o' + this.value.toString(8) } } + return [ k, v ] + }) + let args_str = [] + .concat(args.filter(arg => arg !== -1).map(repr)) + .concat(kwargs.filter(([/*kw*/, arg]) => arg !== undefined) + .map(([kw, arg]) => sub('%s=%r', kw, arg))) + .join(', ') + return sub('%s(%s)', this.constructor.name, args_str) + } + + toString() { + return this[util.inspect.custom]() + } +}) + +// =========================== +// Optional and Positional Parsing +// =========================== +const Namespace = _callable(class Namespace extends _AttributeHolder() { + /* + * Simple object for storing attributes. + * + * Implements equality by attribute names and values, and provides a simple + * string representation. + */ + + constructor(options = {}) { + super() + Object.assign(this, options) + } +}) + +// unset string tag to mimic plain object +Namespace.prototype[Symbol.toStringTag] = undefined + + +const _ActionsContainer = _camelcase_alias(_callable(class _ActionsContainer { + + constructor() { + let [ + description, + prefix_chars, + argument_default, + conflict_handler + ] = _parse_opts(arguments, { + description: no_default, + prefix_chars: no_default, + argument_default: no_default, + conflict_handler: no_default + }) + + this.description = description + this.argument_default = argument_default + this.prefix_chars = prefix_chars + this.conflict_handler = conflict_handler + + // set up registries + this._registries = {} + + // register actions + this.register('action', undefined, _StoreAction) + this.register('action', 'store', _StoreAction) + this.register('action', 'store_const', _StoreConstAction) + this.register('action', 'store_true', _StoreTrueAction) + this.register('action', 'store_false', _StoreFalseAction) + this.register('action', 'append', _AppendAction) + this.register('action', 'append_const', _AppendConstAction) + this.register('action', 'count', _CountAction) + this.register('action', 'help', _HelpAction) + this.register('action', 'version', _VersionAction) + this.register('action', 'parsers', _SubParsersAction) + this.register('action', 'extend', _ExtendAction) + // LEGACY (v1 compatibility): camelcase variants + ;[ 'storeConst', 'storeTrue', 'storeFalse', 'appendConst' ].forEach(old_name => { + let new_name = _to_new_name(old_name) + this.register('action', old_name, util.deprecate(this._registry_get('action', new_name), + sub('{action: "%s"} is renamed to {action: "%s"}', old_name, new_name))) + }) + // end + + // raise an exception if the conflict handler is invalid + this._get_handler() + + // action storage + this._actions = [] + this._option_string_actions = {} + + // groups + this._action_groups = [] + this._mutually_exclusive_groups = [] + + // defaults storage + this._defaults = {} + + // determines whether an "option" looks like a negative number + this._negative_number_matcher = /^-\d+$|^-\d*\.\d+$/ + + // whether or not there are any optionals that look like negative + // numbers -- uses a list so it can be shared and edited + this._has_negative_number_optionals = [] + } + + // ==================== + // Registration methods + // ==================== + register(registry_name, value, object) { + let registry = setdefault(this._registries, registry_name, {}) + registry[value] = object + } + + _registry_get(registry_name, value, default_value = undefined) { + return getattr(this._registries[registry_name], value, default_value) + } + + // ================================== + // Namespace default accessor methods + // ================================== + set_defaults(kwargs) { + Object.assign(this._defaults, kwargs) + + // if these defaults match any existing arguments, replace + // the previous default on the object with the new one + for (let action of this._actions) { + if (action.dest in kwargs) { + action.default = kwargs[action.dest] + } + } + } + + get_default(dest) { + for (let action of this._actions) { + if (action.dest === dest && action.default !== undefined) { + return action.default + } + } + return this._defaults[dest] + } + + + // ======================= + // Adding argument actions + // ======================= + add_argument() { + /* + * add_argument(dest, ..., name=value, ...) + * add_argument(option_string, option_string, ..., name=value, ...) + */ + let [ + args, + kwargs + ] = _parse_opts(arguments, { + '*args': no_default, + '**kwargs': no_default + }) + // LEGACY (v1 compatibility), old-style add_argument([ args ], { options }) + if (args.length === 1 && Array.isArray(args[0])) { + args = args[0] + deprecate('argument-array', + sub('use add_argument(%(args)s, {...}) instead of add_argument([ %(args)s ], { ... })', { + args: args.map(repr).join(', ') + })) + } + // end + + // if no positional args are supplied or only one is supplied and + // it doesn't look like an option string, parse a positional + // argument + let chars = this.prefix_chars + if (!args.length || args.length === 1 && !chars.includes(args[0][0])) { + if (args.length && 'dest' in kwargs) { + throw new TypeError('dest supplied twice for positional argument') + } + kwargs = this._get_positional_kwargs(...args, kwargs) + + // otherwise, we're adding an optional argument + } else { + kwargs = this._get_optional_kwargs(...args, kwargs) + } + + // if no default was supplied, use the parser-level default + if (!('default' in kwargs)) { + let dest = kwargs.dest + if (dest in this._defaults) { + kwargs.default = this._defaults[dest] + } else if (this.argument_default !== undefined) { + kwargs.default = this.argument_default + } + } + + // create the action object, and add it to the parser + let action_class = this._pop_action_class(kwargs) + if (typeof action_class !== 'function') { + throw new TypeError(sub('unknown action "%s"', action_class)) + } + // eslint-disable-next-line new-cap + let action = new action_class(kwargs) + + // raise an error if the action type is not callable + let type_func = this._registry_get('type', action.type, action.type) + if (typeof type_func !== 'function') { + throw new TypeError(sub('%r is not callable', type_func)) + } + + if (type_func === FileType) { + throw new TypeError(sub('%r is a FileType class object, instance of it' + + ' must be passed', type_func)) + } + + // raise an error if the metavar does not match the type + if ('_get_formatter' in this) { + try { + this._get_formatter()._format_args(action, undefined) + } catch (err) { + // check for 'invalid nargs value' is an artifact of TypeError and ValueError in js being the same + if (err instanceof TypeError && err.message !== 'invalid nargs value') { + throw new TypeError('length of metavar tuple does not match nargs') + } else { + throw err + } + } + } + + return this._add_action(action) + } + + add_argument_group() { + let group = _ArgumentGroup(this, ...arguments) + this._action_groups.push(group) + return group + } + + add_mutually_exclusive_group() { + // eslint-disable-next-line no-use-before-define + let group = _MutuallyExclusiveGroup(this, ...arguments) + this._mutually_exclusive_groups.push(group) + return group + } + + _add_action(action) { + // resolve any conflicts + this._check_conflict(action) + + // add to actions list + this._actions.push(action) + action.container = this + + // index the action by any option strings it has + for (let option_string of action.option_strings) { + this._option_string_actions[option_string] = action + } + + // set the flag if any option strings look like negative numbers + for (let option_string of action.option_strings) { + if (this._negative_number_matcher.test(option_string)) { + if (!this._has_negative_number_optionals.length) { + this._has_negative_number_optionals.push(true) + } + } + } + + // return the created action + return action + } + + _remove_action(action) { + _array_remove(this._actions, action) + } + + _add_container_actions(container) { + // collect groups by titles + let title_group_map = {} + for (let group of this._action_groups) { + if (group.title in title_group_map) { + let msg = 'cannot merge actions - two groups are named %r' + throw new TypeError(sub(msg, group.title)) + } + title_group_map[group.title] = group + } + + // map each action to its group + let group_map = new Map() + for (let group of container._action_groups) { + + // if a group with the title exists, use that, otherwise + // create a new group matching the container's group + if (!(group.title in title_group_map)) { + title_group_map[group.title] = this.add_argument_group({ + title: group.title, + description: group.description, + conflict_handler: group.conflict_handler + }) + } + + // map the actions to their new group + for (let action of group._group_actions) { + group_map.set(action, title_group_map[group.title]) + } + } + + // add container's mutually exclusive groups + // NOTE: if add_mutually_exclusive_group ever gains title= and + // description= then this code will need to be expanded as above + for (let group of container._mutually_exclusive_groups) { + let mutex_group = this.add_mutually_exclusive_group({ + required: group.required + }) + + // map the actions to their new mutex group + for (let action of group._group_actions) { + group_map.set(action, mutex_group) + } + } + + // add all actions to this container or their group + for (let action of container._actions) { + group_map.get(action)._add_action(action) + } + } + + _get_positional_kwargs() { + let [ + dest, + kwargs + ] = _parse_opts(arguments, { + dest: no_default, + '**kwargs': no_default + }) + + // make sure required is not specified + if ('required' in kwargs) { + let msg = "'required' is an invalid argument for positionals" + throw new TypeError(msg) + } + + // mark positional arguments as required if at least one is + // always required + if (![OPTIONAL, ZERO_OR_MORE].includes(kwargs.nargs)) { + kwargs.required = true + } + if (kwargs.nargs === ZERO_OR_MORE && !('default' in kwargs)) { + kwargs.required = true + } + + // return the keyword arguments with no option strings + return Object.assign(kwargs, { dest, option_strings: [] }) + } + + _get_optional_kwargs() { + let [ + args, + kwargs + ] = _parse_opts(arguments, { + '*args': no_default, + '**kwargs': no_default + }) + + // determine short and long option strings + let option_strings = [] + let long_option_strings = [] + let option_string + for (option_string of args) { + // error on strings that don't start with an appropriate prefix + if (!this.prefix_chars.includes(option_string[0])) { + let args = {option: option_string, + prefix_chars: this.prefix_chars} + let msg = 'invalid option string %(option)r: ' + + 'must start with a character %(prefix_chars)r' + throw new TypeError(sub(msg, args)) + } + + // strings starting with two prefix characters are long options + option_strings.push(option_string) + if (option_string.length > 1 && this.prefix_chars.includes(option_string[1])) { + long_option_strings.push(option_string) + } + } + + // infer destination, '--foo-bar' -> 'foo_bar' and '-x' -> 'x' + let dest = kwargs.dest + delete kwargs.dest + if (dest === undefined) { + let dest_option_string + if (long_option_strings.length) { + dest_option_string = long_option_strings[0] + } else { + dest_option_string = option_strings[0] + } + dest = _string_lstrip(dest_option_string, this.prefix_chars) + if (!dest) { + let msg = 'dest= is required for options like %r' + throw new TypeError(sub(msg, option_string)) + } + dest = dest.replace(/-/g, '_') + } + + // return the updated keyword arguments + return Object.assign(kwargs, { dest, option_strings }) + } + + _pop_action_class(kwargs, default_value = undefined) { + let action = getattr(kwargs, 'action', default_value) + delete kwargs.action + return this._registry_get('action', action, action) + } + + _get_handler() { + // determine function from conflict handler string + let handler_func_name = sub('_handle_conflict_%s', this.conflict_handler) + if (typeof this[handler_func_name] === 'function') { + return this[handler_func_name] + } else { + let msg = 'invalid conflict_resolution value: %r' + throw new TypeError(sub(msg, this.conflict_handler)) + } + } + + _check_conflict(action) { + + // find all options that conflict with this option + let confl_optionals = [] + for (let option_string of action.option_strings) { + if (hasattr(this._option_string_actions, option_string)) { + let confl_optional = this._option_string_actions[option_string] + confl_optionals.push([ option_string, confl_optional ]) + } + } + + // resolve any conflicts + if (confl_optionals.length) { + let conflict_handler = this._get_handler() + conflict_handler.call(this, action, confl_optionals) + } + } + + _handle_conflict_error(action, conflicting_actions) { + let message = conflicting_actions.length === 1 ? + 'conflicting option string: %s' : + 'conflicting option strings: %s' + let conflict_string = conflicting_actions.map(([ option_string/*, action*/ ]) => option_string).join(', ') + throw new ArgumentError(action, sub(message, conflict_string)) + } + + _handle_conflict_resolve(action, conflicting_actions) { + + // remove all conflicting options + for (let [ option_string, action ] of conflicting_actions) { + + // remove the conflicting option + _array_remove(action.option_strings, option_string) + delete this._option_string_actions[option_string] + + // if the option now has no option string, remove it from the + // container holding it + if (!action.option_strings.length) { + action.container._remove_action(action) + } + } + } +})) + + +const _ArgumentGroup = _callable(class _ArgumentGroup extends _ActionsContainer { + + constructor() { + let [ + container, + title, + description, + kwargs + ] = _parse_opts(arguments, { + container: no_default, + title: undefined, + description: undefined, + '**kwargs': no_default + }) + + // add any missing keyword arguments by checking the container + setdefault(kwargs, 'conflict_handler', container.conflict_handler) + setdefault(kwargs, 'prefix_chars', container.prefix_chars) + setdefault(kwargs, 'argument_default', container.argument_default) + super(Object.assign({ description }, kwargs)) + + // group attributes + this.title = title + this._group_actions = [] + + // share most attributes with the container + this._registries = container._registries + this._actions = container._actions + this._option_string_actions = container._option_string_actions + this._defaults = container._defaults + this._has_negative_number_optionals = + container._has_negative_number_optionals + this._mutually_exclusive_groups = container._mutually_exclusive_groups + } + + _add_action(action) { + action = super._add_action(action) + this._group_actions.push(action) + return action + } + + _remove_action(action) { + super._remove_action(action) + _array_remove(this._group_actions, action) + } +}) + + +const _MutuallyExclusiveGroup = _callable(class _MutuallyExclusiveGroup extends _ArgumentGroup { + + constructor() { + let [ + container, + required + ] = _parse_opts(arguments, { + container: no_default, + required: false + }) + + super(container) + this.required = required + this._container = container + } + + _add_action(action) { + if (action.required) { + let msg = 'mutually exclusive arguments must be optional' + throw new TypeError(msg) + } + action = this._container._add_action(action) + this._group_actions.push(action) + return action + } + + _remove_action(action) { + this._container._remove_action(action) + _array_remove(this._group_actions, action) + } +}) + + +const ArgumentParser = _camelcase_alias(_callable(class ArgumentParser extends _AttributeHolder(_ActionsContainer) { + /* + * Object for parsing command line strings into Python objects. + * + * Keyword Arguments: + * - prog -- The name of the program (default: sys.argv[0]) + * - usage -- A usage message (default: auto-generated from arguments) + * - description -- A description of what the program does + * - epilog -- Text following the argument descriptions + * - parents -- Parsers whose arguments should be copied into this one + * - formatter_class -- HelpFormatter class for printing help messages + * - prefix_chars -- Characters that prefix optional arguments + * - fromfile_prefix_chars -- Characters that prefix files containing + * additional arguments + * - argument_default -- The default value for all arguments + * - conflict_handler -- String indicating how to handle conflicts + * - add_help -- Add a -h/-help option + * - allow_abbrev -- Allow long options to be abbreviated unambiguously + * - exit_on_error -- Determines whether or not ArgumentParser exits with + * error info when an error occurs + */ + + constructor() { + let [ + prog, + usage, + description, + epilog, + parents, + formatter_class, + prefix_chars, + fromfile_prefix_chars, + argument_default, + conflict_handler, + add_help, + allow_abbrev, + exit_on_error, + debug, // LEGACY (v1 compatibility), debug mode + version // LEGACY (v1 compatibility), version + ] = _parse_opts(arguments, { + prog: undefined, + usage: undefined, + description: undefined, + epilog: undefined, + parents: [], + formatter_class: HelpFormatter, + prefix_chars: '-', + fromfile_prefix_chars: undefined, + argument_default: undefined, + conflict_handler: 'error', + add_help: true, + allow_abbrev: true, + exit_on_error: true, + debug: undefined, // LEGACY (v1 compatibility), debug mode + version: undefined // LEGACY (v1 compatibility), version + }) + + // LEGACY (v1 compatibility) + if (debug !== undefined) { + deprecate('debug', + 'The "debug" argument to ArgumentParser is deprecated. Please ' + + 'override ArgumentParser.exit function instead.' + ) + } + + if (version !== undefined) { + deprecate('version', + 'The "version" argument to ArgumentParser is deprecated. Please use ' + + "add_argument(..., { action: 'version', version: 'N', ... }) instead." + ) + } + // end + + super({ + description, + prefix_chars, + argument_default, + conflict_handler + }) + + // default setting for prog + if (prog === undefined) { + prog = path.basename(get_argv()[0] || '') + } + + this.prog = prog + this.usage = usage + this.epilog = epilog + this.formatter_class = formatter_class + this.fromfile_prefix_chars = fromfile_prefix_chars + this.add_help = add_help + this.allow_abbrev = allow_abbrev + this.exit_on_error = exit_on_error + // LEGACY (v1 compatibility), debug mode + this.debug = debug + // end + + this._positionals = this.add_argument_group('positional arguments') + this._optionals = this.add_argument_group('optional arguments') + this._subparsers = undefined + + // register types + function identity(string) { + return string + } + this.register('type', undefined, identity) + this.register('type', null, identity) + this.register('type', 'auto', identity) + this.register('type', 'int', function (x) { + let result = Number(x) + if (!Number.isInteger(result)) { + throw new TypeError(sub('could not convert string to int: %r', x)) + } + return result + }) + this.register('type', 'float', function (x) { + let result = Number(x) + if (isNaN(result)) { + throw new TypeError(sub('could not convert string to float: %r', x)) + } + return result + }) + this.register('type', 'str', String) + // LEGACY (v1 compatibility): custom types + this.register('type', 'string', + util.deprecate(String, 'use {type:"str"} or {type:String} instead of {type:"string"}')) + // end + + // add help argument if necessary + // (using explicit default to override global argument_default) + let default_prefix = prefix_chars.includes('-') ? '-' : prefix_chars[0] + if (this.add_help) { + this.add_argument( + default_prefix + 'h', + default_prefix.repeat(2) + 'help', + { + action: 'help', + default: SUPPRESS, + help: 'show this help message and exit' + } + ) + } + // LEGACY (v1 compatibility), version + if (version) { + this.add_argument( + default_prefix + 'v', + default_prefix.repeat(2) + 'version', + { + action: 'version', + default: SUPPRESS, + version: this.version, + help: "show program's version number and exit" + } + ) + } + // end + + // add parent arguments and defaults + for (let parent of parents) { + this._add_container_actions(parent) + Object.assign(this._defaults, parent._defaults) + } + } + + // ======================= + // Pretty __repr__ methods + // ======================= + _get_kwargs() { + let names = [ + 'prog', + 'usage', + 'description', + 'formatter_class', + 'conflict_handler', + 'add_help' + ] + return names.map(name => [ name, getattr(this, name) ]) + } + + // ================================== + // Optional/Positional adding methods + // ================================== + add_subparsers() { + let [ + kwargs + ] = _parse_opts(arguments, { + '**kwargs': no_default + }) + + if (this._subparsers !== undefined) { + this.error('cannot have multiple subparser arguments') + } + + // add the parser class to the arguments if it's not present + setdefault(kwargs, 'parser_class', this.constructor) + + if ('title' in kwargs || 'description' in kwargs) { + let title = getattr(kwargs, 'title', 'subcommands') + let description = getattr(kwargs, 'description', undefined) + delete kwargs.title + delete kwargs.description + this._subparsers = this.add_argument_group(title, description) + } else { + this._subparsers = this._positionals + } + + // prog defaults to the usage message of this parser, skipping + // optional arguments and with no "usage:" prefix + if (kwargs.prog === undefined) { + let formatter = this._get_formatter() + let positionals = this._get_positional_actions() + let groups = this._mutually_exclusive_groups + formatter.add_usage(this.usage, positionals, groups, '') + kwargs.prog = formatter.format_help().trim() + } + + // create the parsers action and add it to the positionals list + let parsers_class = this._pop_action_class(kwargs, 'parsers') + // eslint-disable-next-line new-cap + let action = new parsers_class(Object.assign({ option_strings: [] }, kwargs)) + this._subparsers._add_action(action) + + // return the created parsers action + return action + } + + _add_action(action) { + if (action.option_strings.length) { + this._optionals._add_action(action) + } else { + this._positionals._add_action(action) + } + return action + } + + _get_optional_actions() { + return this._actions.filter(action => action.option_strings.length) + } + + _get_positional_actions() { + return this._actions.filter(action => !action.option_strings.length) + } + + // ===================================== + // Command line argument parsing methods + // ===================================== + parse_args(args = undefined, namespace = undefined) { + let argv + [ args, argv ] = this.parse_known_args(args, namespace) + if (argv && argv.length > 0) { + let msg = 'unrecognized arguments: %s' + this.error(sub(msg, argv.join(' '))) + } + return args + } + + parse_known_args(args = undefined, namespace = undefined) { + if (args === undefined) { + args = get_argv().slice(1) + } + + // default Namespace built from parser defaults + if (namespace === undefined) { + namespace = new Namespace() + } + + // add any action defaults that aren't present + for (let action of this._actions) { + if (action.dest !== SUPPRESS) { + if (!hasattr(namespace, action.dest)) { + if (action.default !== SUPPRESS) { + setattr(namespace, action.dest, action.default) + } + } + } + } + + // add any parser defaults that aren't present + for (let dest of Object.keys(this._defaults)) { + if (!hasattr(namespace, dest)) { + setattr(namespace, dest, this._defaults[dest]) + } + } + + // parse the arguments and exit if there are any errors + if (this.exit_on_error) { + try { + [ namespace, args ] = this._parse_known_args(args, namespace) + } catch (err) { + if (err instanceof ArgumentError) { + this.error(err.message) + } else { + throw err + } + } + } else { + [ namespace, args ] = this._parse_known_args(args, namespace) + } + + if (hasattr(namespace, _UNRECOGNIZED_ARGS_ATTR)) { + args = args.concat(getattr(namespace, _UNRECOGNIZED_ARGS_ATTR)) + delattr(namespace, _UNRECOGNIZED_ARGS_ATTR) + } + + return [ namespace, args ] + } + + _parse_known_args(arg_strings, namespace) { + // replace arg strings that are file references + if (this.fromfile_prefix_chars !== undefined) { + arg_strings = this._read_args_from_files(arg_strings) + } + + // map all mutually exclusive arguments to the other arguments + // they can't occur with + let action_conflicts = new Map() + for (let mutex_group of this._mutually_exclusive_groups) { + let group_actions = mutex_group._group_actions + for (let [ i, mutex_action ] of Object.entries(mutex_group._group_actions)) { + let conflicts = action_conflicts.get(mutex_action) || [] + conflicts = conflicts.concat(group_actions.slice(0, +i)) + conflicts = conflicts.concat(group_actions.slice(+i + 1)) + action_conflicts.set(mutex_action, conflicts) + } + } + + // find all option indices, and determine the arg_string_pattern + // which has an 'O' if there is an option at an index, + // an 'A' if there is an argument, or a '-' if there is a '--' + let option_string_indices = {} + let arg_string_pattern_parts = [] + let arg_strings_iter = Object.entries(arg_strings)[Symbol.iterator]() + for (let [ i, arg_string ] of arg_strings_iter) { + + // all args after -- are non-options + if (arg_string === '--') { + arg_string_pattern_parts.push('-') + for ([ i, arg_string ] of arg_strings_iter) { + arg_string_pattern_parts.push('A') + } + + // otherwise, add the arg to the arg strings + // and note the index if it was an option + } else { + let option_tuple = this._parse_optional(arg_string) + let pattern + if (option_tuple === undefined) { + pattern = 'A' + } else { + option_string_indices[i] = option_tuple + pattern = 'O' + } + arg_string_pattern_parts.push(pattern) + } + } + + // join the pieces together to form the pattern + let arg_strings_pattern = arg_string_pattern_parts.join('') + + // converts arg strings to the appropriate and then takes the action + let seen_actions = new Set() + let seen_non_default_actions = new Set() + let extras + + let take_action = (action, argument_strings, option_string = undefined) => { + seen_actions.add(action) + let argument_values = this._get_values(action, argument_strings) + + // error if this argument is not allowed with other previously + // seen arguments, assuming that actions that use the default + // value don't really count as "present" + if (argument_values !== action.default) { + seen_non_default_actions.add(action) + for (let conflict_action of action_conflicts.get(action) || []) { + if (seen_non_default_actions.has(conflict_action)) { + let msg = 'not allowed with argument %s' + let action_name = _get_action_name(conflict_action) + throw new ArgumentError(action, sub(msg, action_name)) + } + } + } + + // take the action if we didn't receive a SUPPRESS value + // (e.g. from a default) + if (argument_values !== SUPPRESS) { + action(this, namespace, argument_values, option_string) + } + } + + // function to convert arg_strings into an optional action + let consume_optional = start_index => { + + // get the optional identified at this index + let option_tuple = option_string_indices[start_index] + let [ action, option_string, explicit_arg ] = option_tuple + + // identify additional optionals in the same arg string + // (e.g. -xyz is the same as -x -y -z if no args are required) + let action_tuples = [] + let stop + for (;;) { + + // if we found no optional action, skip it + if (action === undefined) { + extras.push(arg_strings[start_index]) + return start_index + 1 + } + + // if there is an explicit argument, try to match the + // optional's string arguments to only this + if (explicit_arg !== undefined) { + let arg_count = this._match_argument(action, 'A') + + // if the action is a single-dash option and takes no + // arguments, try to parse more single-dash options out + // of the tail of the option string + let chars = this.prefix_chars + if (arg_count === 0 && !chars.includes(option_string[1])) { + action_tuples.push([ action, [], option_string ]) + let char = option_string[0] + option_string = char + explicit_arg[0] + let new_explicit_arg = explicit_arg.slice(1) || undefined + let optionals_map = this._option_string_actions + if (hasattr(optionals_map, option_string)) { + action = optionals_map[option_string] + explicit_arg = new_explicit_arg + } else { + let msg = 'ignored explicit argument %r' + throw new ArgumentError(action, sub(msg, explicit_arg)) + } + + // if the action expect exactly one argument, we've + // successfully matched the option; exit the loop + } else if (arg_count === 1) { + stop = start_index + 1 + let args = [ explicit_arg ] + action_tuples.push([ action, args, option_string ]) + break + + // error if a double-dash option did not use the + // explicit argument + } else { + let msg = 'ignored explicit argument %r' + throw new ArgumentError(action, sub(msg, explicit_arg)) + } + + // if there is no explicit argument, try to match the + // optional's string arguments with the following strings + // if successful, exit the loop + } else { + let start = start_index + 1 + let selected_patterns = arg_strings_pattern.slice(start) + let arg_count = this._match_argument(action, selected_patterns) + stop = start + arg_count + let args = arg_strings.slice(start, stop) + action_tuples.push([ action, args, option_string ]) + break + } + } + + // add the Optional to the list and return the index at which + // the Optional's string args stopped + assert(action_tuples.length) + for (let [ action, args, option_string ] of action_tuples) { + take_action(action, args, option_string) + } + return stop + } + + // the list of Positionals left to be parsed; this is modified + // by consume_positionals() + let positionals = this._get_positional_actions() + + // function to convert arg_strings into positional actions + let consume_positionals = start_index => { + // match as many Positionals as possible + let selected_pattern = arg_strings_pattern.slice(start_index) + let arg_counts = this._match_arguments_partial(positionals, selected_pattern) + + // slice off the appropriate arg strings for each Positional + // and add the Positional and its args to the list + for (let i = 0; i < positionals.length && i < arg_counts.length; i++) { + let action = positionals[i] + let arg_count = arg_counts[i] + let args = arg_strings.slice(start_index, start_index + arg_count) + start_index += arg_count + take_action(action, args) + } + + // slice off the Positionals that we just parsed and return the + // index at which the Positionals' string args stopped + positionals = positionals.slice(arg_counts.length) + return start_index + } + + // consume Positionals and Optionals alternately, until we have + // passed the last option string + extras = [] + let start_index = 0 + let max_option_string_index = Math.max(-1, ...Object.keys(option_string_indices).map(Number)) + while (start_index <= max_option_string_index) { + + // consume any Positionals preceding the next option + let next_option_string_index = Math.min( + // eslint-disable-next-line no-loop-func + ...Object.keys(option_string_indices).map(Number).filter(index => index >= start_index) + ) + if (start_index !== next_option_string_index) { + let positionals_end_index = consume_positionals(start_index) + + // only try to parse the next optional if we didn't consume + // the option string during the positionals parsing + if (positionals_end_index > start_index) { + start_index = positionals_end_index + continue + } else { + start_index = positionals_end_index + } + } + + // if we consumed all the positionals we could and we're not + // at the index of an option string, there were extra arguments + if (!(start_index in option_string_indices)) { + let strings = arg_strings.slice(start_index, next_option_string_index) + extras = extras.concat(strings) + start_index = next_option_string_index + } + + // consume the next optional and any arguments for it + start_index = consume_optional(start_index) + } + + // consume any positionals following the last Optional + let stop_index = consume_positionals(start_index) + + // if we didn't consume all the argument strings, there were extras + extras = extras.concat(arg_strings.slice(stop_index)) + + // make sure all required actions were present and also convert + // action defaults which were not given as arguments + let required_actions = [] + for (let action of this._actions) { + if (!seen_actions.has(action)) { + if (action.required) { + required_actions.push(_get_action_name(action)) + } else { + // Convert action default now instead of doing it before + // parsing arguments to avoid calling convert functions + // twice (which may fail) if the argument was given, but + // only if it was defined already in the namespace + if (action.default !== undefined && + typeof action.default === 'string' && + hasattr(namespace, action.dest) && + action.default === getattr(namespace, action.dest)) { + setattr(namespace, action.dest, + this._get_value(action, action.default)) + } + } + } + } + + if (required_actions.length) { + this.error(sub('the following arguments are required: %s', + required_actions.join(', '))) + } + + // make sure all required groups had one option present + for (let group of this._mutually_exclusive_groups) { + if (group.required) { + let no_actions_used = true + for (let action of group._group_actions) { + if (seen_non_default_actions.has(action)) { + no_actions_used = false + break + } + } + + // if no actions were used, report the error + if (no_actions_used) { + let names = group._group_actions + .filter(action => action.help !== SUPPRESS) + .map(action => _get_action_name(action)) + let msg = 'one of the arguments %s is required' + this.error(sub(msg, names.join(' '))) + } + } + } + + // return the updated namespace and the extra arguments + return [ namespace, extras ] + } + + _read_args_from_files(arg_strings) { + // expand arguments referencing files + let new_arg_strings = [] + for (let arg_string of arg_strings) { + + // for regular arguments, just add them back into the list + if (!arg_string || !this.fromfile_prefix_chars.includes(arg_string[0])) { + new_arg_strings.push(arg_string) + + // replace arguments referencing files with the file content + } else { + try { + let args_file = fs.readFileSync(arg_string.slice(1), 'utf8') + let arg_strings = [] + for (let arg_line of splitlines(args_file)) { + for (let arg of this.convert_arg_line_to_args(arg_line)) { + arg_strings.push(arg) + } + } + arg_strings = this._read_args_from_files(arg_strings) + new_arg_strings = new_arg_strings.concat(arg_strings) + } catch (err) { + this.error(err.message) + } + } + } + + // return the modified argument list + return new_arg_strings + } + + convert_arg_line_to_args(arg_line) { + return [arg_line] + } + + _match_argument(action, arg_strings_pattern) { + // match the pattern for this action to the arg strings + let nargs_pattern = this._get_nargs_pattern(action) + let match = arg_strings_pattern.match(new RegExp('^' + nargs_pattern)) + + // raise an exception if we weren't able to find a match + if (match === null) { + let nargs_errors = { + undefined: 'expected one argument', + [OPTIONAL]: 'expected at most one argument', + [ONE_OR_MORE]: 'expected at least one argument' + } + let msg = nargs_errors[action.nargs] + if (msg === undefined) { + msg = sub(action.nargs === 1 ? 'expected %s argument' : 'expected %s arguments', action.nargs) + } + throw new ArgumentError(action, msg) + } + + // return the number of arguments matched + return match[1].length + } + + _match_arguments_partial(actions, arg_strings_pattern) { + // progressively shorten the actions list by slicing off the + // final actions until we find a match + let result = [] + for (let i of range(actions.length, 0, -1)) { + let actions_slice = actions.slice(0, i) + let pattern = actions_slice.map(action => this._get_nargs_pattern(action)).join('') + let match = arg_strings_pattern.match(new RegExp('^' + pattern)) + if (match !== null) { + result = result.concat(match.slice(1).map(string => string.length)) + break + } + } + + // return the list of arg string counts + return result + } + + _parse_optional(arg_string) { + // if it's an empty string, it was meant to be a positional + if (!arg_string) { + return undefined + } + + // if it doesn't start with a prefix, it was meant to be positional + if (!this.prefix_chars.includes(arg_string[0])) { + return undefined + } + + // if the option string is present in the parser, return the action + if (arg_string in this._option_string_actions) { + let action = this._option_string_actions[arg_string] + return [ action, arg_string, undefined ] + } + + // if it's just a single character, it was meant to be positional + if (arg_string.length === 1) { + return undefined + } + + // if the option string before the "=" is present, return the action + if (arg_string.includes('=')) { + let [ option_string, explicit_arg ] = _string_split(arg_string, '=', 1) + if (option_string in this._option_string_actions) { + let action = this._option_string_actions[option_string] + return [ action, option_string, explicit_arg ] + } + } + + // search through all possible prefixes of the option string + // and all actions in the parser for possible interpretations + let option_tuples = this._get_option_tuples(arg_string) + + // if multiple actions match, the option string was ambiguous + if (option_tuples.length > 1) { + let options = option_tuples.map(([ /*action*/, option_string/*, explicit_arg*/ ]) => option_string).join(', ') + let args = {option: arg_string, matches: options} + let msg = 'ambiguous option: %(option)s could match %(matches)s' + this.error(sub(msg, args)) + + // if exactly one action matched, this segmentation is good, + // so return the parsed action + } else if (option_tuples.length === 1) { + let [ option_tuple ] = option_tuples + return option_tuple + } + + // if it was not found as an option, but it looks like a negative + // number, it was meant to be positional + // unless there are negative-number-like options + if (this._negative_number_matcher.test(arg_string)) { + if (!this._has_negative_number_optionals.length) { + return undefined + } + } + + // if it contains a space, it was meant to be a positional + if (arg_string.includes(' ')) { + return undefined + } + + // it was meant to be an optional but there is no such option + // in this parser (though it might be a valid option in a subparser) + return [ undefined, arg_string, undefined ] + } + + _get_option_tuples(option_string) { + let result = [] + + // option strings starting with two prefix characters are only + // split at the '=' + let chars = this.prefix_chars + if (chars.includes(option_string[0]) && chars.includes(option_string[1])) { + if (this.allow_abbrev) { + let option_prefix, explicit_arg + if (option_string.includes('=')) { + [ option_prefix, explicit_arg ] = _string_split(option_string, '=', 1) + } else { + option_prefix = option_string + explicit_arg = undefined + } + for (let option_string of Object.keys(this._option_string_actions)) { + if (option_string.startsWith(option_prefix)) { + let action = this._option_string_actions[option_string] + let tup = [ action, option_string, explicit_arg ] + result.push(tup) + } + } + } + + // single character options can be concatenated with their arguments + // but multiple character options always have to have their argument + // separate + } else if (chars.includes(option_string[0]) && !chars.includes(option_string[1])) { + let option_prefix = option_string + let explicit_arg = undefined + let short_option_prefix = option_string.slice(0, 2) + let short_explicit_arg = option_string.slice(2) + + for (let option_string of Object.keys(this._option_string_actions)) { + if (option_string === short_option_prefix) { + let action = this._option_string_actions[option_string] + let tup = [ action, option_string, short_explicit_arg ] + result.push(tup) + } else if (option_string.startsWith(option_prefix)) { + let action = this._option_string_actions[option_string] + let tup = [ action, option_string, explicit_arg ] + result.push(tup) + } + } + + // shouldn't ever get here + } else { + this.error(sub('unexpected option string: %s', option_string)) + } + + // return the collected option tuples + return result + } + + _get_nargs_pattern(action) { + // in all examples below, we have to allow for '--' args + // which are represented as '-' in the pattern + let nargs = action.nargs + let nargs_pattern + + // the default (None) is assumed to be a single argument + if (nargs === undefined) { + nargs_pattern = '(-*A-*)' + + // allow zero or one arguments + } else if (nargs === OPTIONAL) { + nargs_pattern = '(-*A?-*)' + + // allow zero or more arguments + } else if (nargs === ZERO_OR_MORE) { + nargs_pattern = '(-*[A-]*)' + + // allow one or more arguments + } else if (nargs === ONE_OR_MORE) { + nargs_pattern = '(-*A[A-]*)' + + // allow any number of options or arguments + } else if (nargs === REMAINDER) { + nargs_pattern = '([-AO]*)' + + // allow one argument followed by any number of options or arguments + } else if (nargs === PARSER) { + nargs_pattern = '(-*A[-AO]*)' + + // suppress action, like nargs=0 + } else if (nargs === SUPPRESS) { + nargs_pattern = '(-*-*)' + + // all others should be integers + } else { + nargs_pattern = sub('(-*%s-*)', 'A'.repeat(nargs).split('').join('-*')) + } + + // if this is an optional action, -- is not allowed + if (action.option_strings.length) { + nargs_pattern = nargs_pattern.replace(/-\*/g, '') + nargs_pattern = nargs_pattern.replace(/-/g, '') + } + + // return the pattern + return nargs_pattern + } + + // ======================== + // Alt command line argument parsing, allowing free intermix + // ======================== + + parse_intermixed_args(args = undefined, namespace = undefined) { + let argv + [ args, argv ] = this.parse_known_intermixed_args(args, namespace) + if (argv.length) { + let msg = 'unrecognized arguments: %s' + this.error(sub(msg, argv.join(' '))) + } + return args + } + + parse_known_intermixed_args(args = undefined, namespace = undefined) { + // returns a namespace and list of extras + // + // positional can be freely intermixed with optionals. optionals are + // first parsed with all positional arguments deactivated. The 'extras' + // are then parsed. If the parser definition is incompatible with the + // intermixed assumptions (e.g. use of REMAINDER, subparsers) a + // TypeError is raised. + // + // positionals are 'deactivated' by setting nargs and default to + // SUPPRESS. This blocks the addition of that positional to the + // namespace + + let extras + let positionals = this._get_positional_actions() + let a = positionals.filter(action => [ PARSER, REMAINDER ].includes(action.nargs)) + if (a.length) { + throw new TypeError(sub('parse_intermixed_args: positional arg' + + ' with nargs=%s', a[0].nargs)) + } + + for (let group of this._mutually_exclusive_groups) { + for (let action of group._group_actions) { + if (positionals.includes(action)) { + throw new TypeError('parse_intermixed_args: positional in' + + ' mutuallyExclusiveGroup') + } + } + } + + let save_usage + try { + save_usage = this.usage + let remaining_args + try { + if (this.usage === undefined) { + // capture the full usage for use in error messages + this.usage = this.format_usage().slice(7) + } + for (let action of positionals) { + // deactivate positionals + action.save_nargs = action.nargs + // action.nargs = 0 + action.nargs = SUPPRESS + action.save_default = action.default + action.default = SUPPRESS + } + [ namespace, remaining_args ] = this.parse_known_args(args, + namespace) + for (let action of positionals) { + // remove the empty positional values from namespace + let attr = getattr(namespace, action.dest) + if (Array.isArray(attr) && attr.length === 0) { + // eslint-disable-next-line no-console + console.warn(sub('Do not expect %s in %s', action.dest, namespace)) + delattr(namespace, action.dest) + } + } + } finally { + // restore nargs and usage before exiting + for (let action of positionals) { + action.nargs = action.save_nargs + action.default = action.save_default + } + } + let optionals = this._get_optional_actions() + try { + // parse positionals. optionals aren't normally required, but + // they could be, so make sure they aren't. + for (let action of optionals) { + action.save_required = action.required + action.required = false + } + for (let group of this._mutually_exclusive_groups) { + group.save_required = group.required + group.required = false + } + [ namespace, extras ] = this.parse_known_args(remaining_args, + namespace) + } finally { + // restore parser values before exiting + for (let action of optionals) { + action.required = action.save_required + } + for (let group of this._mutually_exclusive_groups) { + group.required = group.save_required + } + } + } finally { + this.usage = save_usage + } + return [ namespace, extras ] + } + + // ======================== + // Value conversion methods + // ======================== + _get_values(action, arg_strings) { + // for everything but PARSER, REMAINDER args, strip out first '--' + if (![PARSER, REMAINDER].includes(action.nargs)) { + try { + _array_remove(arg_strings, '--') + } catch (err) {} + } + + let value + // optional argument produces a default when not present + if (!arg_strings.length && action.nargs === OPTIONAL) { + if (action.option_strings.length) { + value = action.const + } else { + value = action.default + } + if (typeof value === 'string') { + value = this._get_value(action, value) + this._check_value(action, value) + } + + // when nargs='*' on a positional, if there were no command-line + // args, use the default if it is anything other than None + } else if (!arg_strings.length && action.nargs === ZERO_OR_MORE && + !action.option_strings.length) { + if (action.default !== undefined) { + value = action.default + } else { + value = arg_strings + } + this._check_value(action, value) + + // single argument or optional argument produces a single value + } else if (arg_strings.length === 1 && [undefined, OPTIONAL].includes(action.nargs)) { + let arg_string = arg_strings[0] + value = this._get_value(action, arg_string) + this._check_value(action, value) + + // REMAINDER arguments convert all values, checking none + } else if (action.nargs === REMAINDER) { + value = arg_strings.map(v => this._get_value(action, v)) + + // PARSER arguments convert all values, but check only the first + } else if (action.nargs === PARSER) { + value = arg_strings.map(v => this._get_value(action, v)) + this._check_value(action, value[0]) + + // SUPPRESS argument does not put anything in the namespace + } else if (action.nargs === SUPPRESS) { + value = SUPPRESS + + // all other types of nargs produce a list + } else { + value = arg_strings.map(v => this._get_value(action, v)) + for (let v of value) { + this._check_value(action, v) + } + } + + // return the converted value + return value + } + + _get_value(action, arg_string) { + let type_func = this._registry_get('type', action.type, action.type) + if (typeof type_func !== 'function') { + let msg = '%r is not callable' + throw new ArgumentError(action, sub(msg, type_func)) + } + + // convert the value to the appropriate type + let result + try { + try { + result = type_func(arg_string) + } catch (err) { + // Dear TC39, why would you ever consider making es6 classes not callable? + // We had one universal interface, [[Call]], which worked for anything + // (with familiar this-instanceof guard for classes). Now we have two. + if (err instanceof TypeError && + /Class constructor .* cannot be invoked without 'new'/.test(err.message)) { + // eslint-disable-next-line new-cap + result = new type_func(arg_string) + } else { + throw err + } + } + + } catch (err) { + // ArgumentTypeErrors indicate errors + if (err instanceof ArgumentTypeError) { + //let name = getattr(action.type, 'name', repr(action.type)) + let msg = err.message + throw new ArgumentError(action, msg) + + // TypeErrors or ValueErrors also indicate errors + } else if (err instanceof TypeError) { + let name = getattr(action.type, 'name', repr(action.type)) + let args = {type: name, value: arg_string} + let msg = 'invalid %(type)s value: %(value)r' + throw new ArgumentError(action, sub(msg, args)) + } else { + throw err + } + } + + // return the converted value + return result + } + + _check_value(action, value) { + // converted value must be one of the choices (if specified) + if (action.choices !== undefined && !_choices_to_array(action.choices).includes(value)) { + let args = {value, + choices: _choices_to_array(action.choices).map(repr).join(', ')} + let msg = 'invalid choice: %(value)r (choose from %(choices)s)' + throw new ArgumentError(action, sub(msg, args)) + } + } + + // ======================= + // Help-formatting methods + // ======================= + format_usage() { + let formatter = this._get_formatter() + formatter.add_usage(this.usage, this._actions, + this._mutually_exclusive_groups) + return formatter.format_help() + } + + format_help() { + let formatter = this._get_formatter() + + // usage + formatter.add_usage(this.usage, this._actions, + this._mutually_exclusive_groups) + + // description + formatter.add_text(this.description) + + // positionals, optionals and user-defined groups + for (let action_group of this._action_groups) { + formatter.start_section(action_group.title) + formatter.add_text(action_group.description) + formatter.add_arguments(action_group._group_actions) + formatter.end_section() + } + + // epilog + formatter.add_text(this.epilog) + + // determine help from format above + return formatter.format_help() + } + + _get_formatter() { + // eslint-disable-next-line new-cap + return new this.formatter_class({ prog: this.prog }) + } + + // ===================== + // Help-printing methods + // ===================== + print_usage(file = undefined) { + if (file === undefined) file = process.stdout + this._print_message(this.format_usage(), file) + } + + print_help(file = undefined) { + if (file === undefined) file = process.stdout + this._print_message(this.format_help(), file) + } + + _print_message(message, file = undefined) { + if (message) { + if (file === undefined) file = process.stderr + file.write(message) + } + } + + // =============== + // Exiting methods + // =============== + exit(status = 0, message = undefined) { + if (message) { + this._print_message(message, process.stderr) + } + process.exit(status) + } + + error(message) { + /* + * error(message: string) + * + * Prints a usage message incorporating the message to stderr and + * exits. + * + * If you override this in a subclass, it should not return -- it + * should either exit or raise an exception. + */ + + // LEGACY (v1 compatibility), debug mode + if (this.debug === true) throw new Error(message) + // end + this.print_usage(process.stderr) + let args = {prog: this.prog, message: message} + this.exit(2, sub('%(prog)s: error: %(message)s\n', args)) + } +})) + + +module.exports = { + ArgumentParser, + ArgumentError, + ArgumentTypeError, + BooleanOptionalAction, + FileType, + HelpFormatter, + ArgumentDefaultsHelpFormatter, + RawDescriptionHelpFormatter, + RawTextHelpFormatter, + MetavarTypeHelpFormatter, + Namespace, + Action, + ONE_OR_MORE, + OPTIONAL, + PARSER, + REMAINDER, + SUPPRESS, + ZERO_OR_MORE +} + +// LEGACY (v1 compatibility), Const alias +Object.defineProperty(module.exports, 'Const', { + get() { + let result = {} + Object.entries({ ONE_OR_MORE, OPTIONAL, PARSER, REMAINDER, SUPPRESS, ZERO_OR_MORE }).forEach(([ n, v ]) => { + Object.defineProperty(result, n, { + get() { + deprecate(n, sub('use argparse.%s instead of argparse.Const.%s', n, n)) + return v + } + }) + }) + Object.entries({ _UNRECOGNIZED_ARGS_ATTR }).forEach(([ n, v ]) => { + Object.defineProperty(result, n, { + get() { + deprecate(n, sub('argparse.Const.%s is an internal symbol and will no longer be available', n)) + return v + } + }) + }) + return result + }, + enumerable: false +}) +// end diff --git a/node_modules/argparse/package.json b/node_modules/argparse/package.json new file mode 100644 index 00000000..647d2aff --- /dev/null +++ b/node_modules/argparse/package.json @@ -0,0 +1,31 @@ +{ + "name": "argparse", + "description": "CLI arguments parser. Native port of python's argparse.", + "version": "2.0.1", + "keywords": [ + "cli", + "parser", + "argparse", + "option", + "args" + ], + "main": "argparse.js", + "files": [ + "argparse.js", + "lib/" + ], + "license": "Python-2.0", + "repository": "nodeca/argparse", + "scripts": { + "lint": "eslint .", + "test": "npm run lint && nyc mocha", + "coverage": "npm run test && nyc report --reporter html" + }, + "devDependencies": { + "@babel/eslint-parser": "^7.11.0", + "@babel/plugin-syntax-class-properties": "^7.10.4", + "eslint": "^7.5.0", + "mocha": "^8.0.1", + "nyc": "^15.1.0" + } +} diff --git a/node_modules/array-flatten/LICENSE b/node_modules/array-flatten/LICENSE new file mode 100644 index 00000000..983fbe8a --- /dev/null +++ b/node_modules/array-flatten/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +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. diff --git a/node_modules/array-flatten/README.md b/node_modules/array-flatten/README.md new file mode 100644 index 00000000..91fa5b63 --- /dev/null +++ b/node_modules/array-flatten/README.md @@ -0,0 +1,43 @@ +# Array Flatten + +[![NPM version][npm-image]][npm-url] +[![NPM downloads][downloads-image]][downloads-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] + +> Flatten an array of nested arrays into a single flat array. Accepts an optional depth. + +## Installation + +``` +npm install array-flatten --save +``` + +## Usage + +```javascript +var flatten = require('array-flatten') + +flatten([1, [2, [3, [4, [5], 6], 7], 8], 9]) +//=> [1, 2, 3, 4, 5, 6, 7, 8, 9] + +flatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2) +//=> [1, 2, 3, [4, [5], 6], 7, 8, 9] + +(function () { + flatten(arguments) //=> [1, 2, 3] +})(1, [2, 3]) +``` + +## License + +MIT + +[npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat +[npm-url]: https://npmjs.org/package/array-flatten +[downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat +[downloads-url]: https://npmjs.org/package/array-flatten +[travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat +[travis-url]: https://travis-ci.org/blakeembrey/array-flatten +[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat +[coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master diff --git a/node_modules/array-flatten/array-flatten.js b/node_modules/array-flatten/array-flatten.js new file mode 100644 index 00000000..089117b3 --- /dev/null +++ b/node_modules/array-flatten/array-flatten.js @@ -0,0 +1,64 @@ +'use strict' + +/** + * Expose `arrayFlatten`. + */ +module.exports = arrayFlatten + +/** + * Recursive flatten function with depth. + * + * @param {Array} array + * @param {Array} result + * @param {Number} depth + * @return {Array} + */ +function flattenWithDepth (array, result, depth) { + for (var i = 0; i < array.length; i++) { + var value = array[i] + + if (depth > 0 && Array.isArray(value)) { + flattenWithDepth(value, result, depth - 1) + } else { + result.push(value) + } + } + + return result +} + +/** + * Recursive flatten function. Omitting depth is slightly faster. + * + * @param {Array} array + * @param {Array} result + * @return {Array} + */ +function flattenForever (array, result) { + for (var i = 0; i < array.length; i++) { + var value = array[i] + + if (Array.isArray(value)) { + flattenForever(value, result) + } else { + result.push(value) + } + } + + return result +} + +/** + * Flatten an array, with the ability to define a depth. + * + * @param {Array} array + * @param {Number} depth + * @return {Array} + */ +function arrayFlatten (array, depth) { + if (depth == null) { + return flattenForever(array, []) + } + + return flattenWithDepth(array, [], depth) +} diff --git a/node_modules/array-flatten/package.json b/node_modules/array-flatten/package.json new file mode 100644 index 00000000..1a24e2a1 --- /dev/null +++ b/node_modules/array-flatten/package.json @@ -0,0 +1,39 @@ +{ + "name": "array-flatten", + "version": "1.1.1", + "description": "Flatten an array of nested arrays into a single flat array", + "main": "array-flatten.js", + "files": [ + "array-flatten.js", + "LICENSE" + ], + "scripts": { + "test": "istanbul cover _mocha -- -R spec" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/array-flatten.git" + }, + "keywords": [ + "array", + "flatten", + "arguments", + "depth" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/array-flatten/issues" + }, + "homepage": "https://github.com/blakeembrey/array-flatten", + "devDependencies": { + "istanbul": "^0.3.13", + "mocha": "^2.2.4", + "pre-commit": "^1.0.7", + "standard": "^3.7.3" + } +} diff --git a/node_modules/array-union/index.d.ts b/node_modules/array-union/index.d.ts new file mode 100644 index 00000000..379fc1d2 --- /dev/null +++ b/node_modules/array-union/index.d.ts @@ -0,0 +1,25 @@ +/** +Create an array of unique values, in order, from the input arrays. + +@example +``` +import arrayUnion = require('array-union'); + +arrayUnion([1, 1, 2, 3], [2, 3]); +//=> [1, 2, 3] + +arrayUnion(['foo', 'foo', 'bar']); +//=> ['foo', 'bar'] + +arrayUnion(['🐱', '🦄', '🐻'], ['🦄', '🌈']); +//=> ['🐱', '🦄', '🐻', '🌈'] + +arrayUnion(['🐱', '🦄'], ['🐻', '🦄'], ['🐶', '🌈', '🌈']); +//=> ['🐱', '🦄', '🐻', '🐶', '🌈'] +``` +*/ +declare function arrayUnion( + ...arguments: readonly ArgumentsType[] +): ArgumentsType; + +export = arrayUnion; diff --git a/node_modules/array-union/index.js b/node_modules/array-union/index.js new file mode 100644 index 00000000..7f85d3d1 --- /dev/null +++ b/node_modules/array-union/index.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = (...arguments_) => { + return [...new Set([].concat(...arguments_))]; +}; diff --git a/node_modules/array-union/license b/node_modules/array-union/license new file mode 100644 index 00000000..e7af2f77 --- /dev/null +++ b/node_modules/array-union/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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. diff --git a/node_modules/array-union/package.json b/node_modules/array-union/package.json new file mode 100644 index 00000000..5ad5afa7 --- /dev/null +++ b/node_modules/array-union/package.json @@ -0,0 +1,38 @@ +{ + "name": "array-union", + "version": "2.1.0", + "description": "Create an array of unique values, in order, from the input arrays", + "license": "MIT", + "repository": "sindresorhus/array-union", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "array", + "set", + "uniq", + "unique", + "duplicate", + "remove", + "union", + "combine", + "merge" + ], + "devDependencies": { + "ava": "^1.4.1", + "tsd": "^0.7.2", + "xo": "^0.24.0" + } +} diff --git a/node_modules/array-union/readme.md b/node_modules/array-union/readme.md new file mode 100644 index 00000000..2474a1ae --- /dev/null +++ b/node_modules/array-union/readme.md @@ -0,0 +1,34 @@ +# array-union [![Build Status](https://travis-ci.org/sindresorhus/array-union.svg?branch=master)](https://travis-ci.org/sindresorhus/array-union) + +> Create an array of unique values, in order, from the input arrays + + +## Install + +``` +$ npm install array-union +``` + + +## Usage + +```js +const arrayUnion = require('array-union'); + +arrayUnion([1, 1, 2, 3], [2, 3]); +//=> [1, 2, 3] + +arrayUnion(['foo', 'foo', 'bar']); +//=> ['foo', 'bar'] + +arrayUnion(['🐱', '🦄', '🐻'], ['🦄', '🌈']); +//=> ['🐱', '🦄', '🐻', '🌈'] + +arrayUnion(['🐱', '🦄'], ['🐻', '🦄'], ['🐶', '🌈', '🌈']); +//=> ['🐱', '🦄', '🐻', '🐶', '🌈'] +``` + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/node_modules/astring/.eslintrc.json b/node_modules/astring/.eslintrc.json new file mode 100644 index 00000000..76e551ed --- /dev/null +++ b/node_modules/astring/.eslintrc.json @@ -0,0 +1,49 @@ +{ + "plugins": ["import"], + "extends": ["eslint:recommended", "plugin:import/errors", "prettier"], + "env": { + "es6": true + }, + "parserOptions": { + "ecmaVersion": 13, + "sourceType": "module" + }, + "globals": { + "console": true, + "global": true, + "module": true, + "process": true, + "require": true, + "window": true, + "__dirname": true + }, + "overrides": [ + { + "files": ["src/tests/fixtures/**/*.js"], + "rules": { + "constructor-super": 0, + "getter-return": 0, + "no-cond-assign": 0, + "no-constant-condition": 0, + "no-control-regex": 0, + "no-debugger": 0, + "no-dupe-class-members": 0, + "no-dupe-keys": 0, + "no-duplicate-case": 0, + "no-empty": 0, + "no-inner-declarations": 0, + "no-irregular-whitespace": 0, + "no-redeclare": 0, + "no-sparse-arrays": 0, + "no-undef": 0, + "no-unreachable": 0, + "no-unsafe-negation": 0, + "no-unused-labels": 0, + "no-unused-vars": 0, + "no-useless-escape": 0, + "no-var": 0, + "no-loss-of-precision": 0 + } + } + ] +} diff --git a/node_modules/astring/LICENSE b/node_modules/astring/LICENSE new file mode 100644 index 00000000..4714dd6f --- /dev/null +++ b/node_modules/astring/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015, David Bonnet + +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. \ No newline at end of file diff --git a/node_modules/astring/README.md b/node_modules/astring/README.md new file mode 100644 index 00000000..fa2529a7 --- /dev/null +++ b/node_modules/astring/README.md @@ -0,0 +1,322 @@ +# Astring + +[![NPM Version](https://img.shields.io/npm/v/astring.svg)](https://www.npmjs.org/package/astring) +[![Build Status](https://travis-ci.org/davidbonnet/astring.svg?branch=master)](https://travis-ci.org/davidbonnet/astring) +[![Coverage](https://codecov.io/gh/davidbonnet/astring/branch/master/graph/badge.svg)](https://codecov.io/gh/davidbonnet/astring) +[![devDependency Status](https://david-dm.org/davidbonnet/astring/dev-status.svg)](https://david-dm.org/davidbonnet/astring?type=dev) + +🌳 Tiny and fast JavaScript code generator from an [ESTree](https://github.com/estree/estree)-compliant AST. + +🎁 Checkout the [live demo](https://david.bonnet.cc/astring/demo/). + +### Key features + +- Generates JavaScript code up to [version 13 (2022)](https://tc39.github.io/ecma262/) and [finished proposals](https://github.com/tc39/proposals/blob/master/finished-proposals.md). +- Works on [ESTree](https://github.com/estree/estree)-compliant ASTs such as the ones produced by [Meriyah](https://github.com/meriyah/meriyah) or [Acorn](https://github.com/acornjs/acorn). +- Extendable with custom AST node handlers. +- Considerably faster than [Bublé](https://gitlab.com/Rich-Harris/buble) (up to 5×), [Escodegen](https://github.com/estools/escodegen) (up to 10×), [Babel](https://github.com/babel/babel) (up to 50×), [UglifyJS](https://github.com/mishoo/UglifyJS2) (up to 125×), and [Prettier](https://github.com/prettier/prettier) (up to 380×). +- Supports source map generation with [Source Map](https://github.com/mozilla/source-map#sourcemapgenerator). +- Supports comment generation with [Astravel](https://github.com/davidbonnet/astravel). +- No dependencies and small footprint (≈ 16 KB minified, ≈ 4 KB gziped). +- Runs on [🦕 Deno](https://deno.land). + +## Contents + + + +- [Installation](#installation) +- [Import](#import) +- [API](#api) + - [`generate(node: object, options: object): string | object`](#generatenode-object-options-object-string-%7C-object) + - [`GENERATOR: object`](#generator-object) + - [`EXPRESSIONS_PRECEDENCE: object`](#expressions_precedence-object) + - [`NEEDS_PARENTHESES: number`](#needs_parentheses-number) + - [`baseGenerator: object`](#basegenerator-object) +- [Benchmark](#benchmark) + - [Generating code](#generating-code) + - [Parsing and generating code](#parsing-and-generating-code) +- [Examples](#examples) + - [Generating code](#generating-code-1) + - [Generating source maps](#generating-source-maps) + - [Using writable streams](#using-writable-streams) + - [Generating comments](#generating-comments) + - [Extending](#extending) +- [Command line interface](#command-line-interface) + - [Example](#example) + + + +## Installation + +> :warning: Astring relies on `String.prototype.repeat(amount)` and `String.prototype.endsWith(string)`. If the environment running Astring does not define these methods, use [`string.prototype.repeat`](https://www.npmjs.com/package/string.prototype.repeat), [`string.prototype.endsWith`](https://www.npmjs.com/package/string.prototype.endswith) or [`babel-polyfill`](https://www.npmjs.com/package/babel-polyfill). + +Install with the [Node Package Manager](https://www.npmjs.com/package/astring): + +```bash +npm install astring +``` + +Alternatively, checkout this repository and install the development dependencies to build the module file: + +```bash +git clone https://github.com/davidbonnet/astring.git +cd astring +npm install +``` + +## Import + +Import it from [Deno's third party module repository](https://deno.land/x/astring/src/astring.js): + +```js +const { generate } = await import('https://deno.land/x/astring/src/astring.js') +``` + +With JavaScript 6 modules: + +```js +import { generate } from 'astring' +``` + +With CommonJS: + +```js +const { generate } = require('astring') +``` + +A browser-ready minified bundle containing Astring is available at `dist/astring.min.js`. The module exposes a global variable `astring`: + +```html + + +``` + +## API + +The `astring` module exposes the following properties: + +### `generate(node: object, options: object): string | object` + +Returns a string representing the rendered code of the provided AST `node`. However, if an `output` stream is provided in the `options`, it writes to that stream and returns it. + +The `options` are: + +- `indent`: string to use for indentation (defaults to `"␣␣"`) +- `lineEnd`: string to use for line endings (defaults to `"\n"`) +- `startingIndentLevel`: indent level to start from (defaults to `0`) +- `comments`: generate comments if `true` (defaults to `false`) +- `output`: output stream to write the rendered code to (defaults to `null`) +- `generator`: custom code generator (defaults to `GENERATOR`) +- `sourceMap`: [source map generator](https://github.com/mozilla/source-map#sourcemapgenerator) (defaults to `null`) +- `expressionsPrecedence`: custom map of node types and their precedence level (defaults to `EXPRESSIONS_PRECEDENCE`) + +### `GENERATOR: object` + +Base generator that can be used to [extend Astring](#extending). + +### `EXPRESSIONS_PRECEDENCE: object` + +Mapping of node types and their precedence level to let the generator know when to use parentheses. + +### `NEEDS_PARENTHESES: number` + +Default precedence level that always triggers the use of parentheses. + +### `baseGenerator: object` + +> :warning: Deprecated, use `GENERATOR` instead. + +## Benchmark + +### Generating code + +Operations per second for generating each sample code from a pre-parsed AST: + +| code sample (length) | escodegen | astring | uglify | babel | prettier | +| :------------------- | --------: | --------: | ------: | ------: | -------: | +| tiny code (11) | 1,257,527 | 7,185,642 | 129,467 | 156,184 | 333 | +| everything (8532) | 1,366 | 8,008 | 0 | 346 | 64 | + +### Parsing and generating code + +Operations per second for parsing and generating each sample code: + +| code sample (length) | acorn + astring | meriyah + astring | buble | sucrase | +| :------------------- | --------------: | ----------------: | -----: | ------: | +| tiny code (11) | 92,578 | 864,665 | 25,911 | 575,370 | +| everything (8532) | 706 | 1,425 | 132 | 1,403 | + +## Examples + +The following examples are written in JavaScript 5 with Astring imported _à la CommonJS_. + +### Generating code + +This example uses [Acorn](https://github.com/acornjs/acorn), a blazingly fast JavaScript AST producer and therefore the perfect companion of Astring. + +```javascript +// Make sure acorn and astring modules are imported + +// Set example code +var code = 'let answer = 4 + 7 * 5 + 3;\n' +// Parse it into an AST +var ast = acorn.parse(code, { ecmaVersion: 6 }) +// Format it into a code string +var formattedCode = astring.generate(ast) +// Check it +console.log(code === formattedCode ? 'It works!' : 'Something went wrong…') +``` + +### Generating source maps + +This example uses the source map generator from the [Source Map](https://github.com/mozilla/source-map#sourcemapgenerator) module. + +```javascript +// Make sure acorn, sourceMap and astring modules are imported + +var code = 'function add(a, b) { return a + b; }\n' +var ast = acorn.parse(code, { + ecmaVersion: 6, + sourceType: 'module', + // Locations are needed in order for the source map generator to work + locations: true, +}) +// Create empty source map generator +var map = new sourceMap.SourceMapGenerator({ + // Source file name must be set and will be used for mappings + file: 'script.js', +}) +var formattedCode = generate(ast, { + // Enable source maps + sourceMap: map, +}) +// Display generated source map +console.log(map.toString()) +``` + +### Using writable streams + +This example for [Node](http://nodejs.org) shows how to use writable streams to get the rendered code. + +```javascript +// Make sure acorn and astring modules are imported + +// Set example code +var code = 'let answer = 4 + 7 * 5 + 3;\n' +// Parse it into an AST +var ast = acorn.parse(code, { ecmaVersion: 6 }) +// Format it and write the result to stdout +var stream = astring.generate(ast, { + output: process.stdout, +}) +// The returned value is the output stream +console.log('Does stream equal process.stdout?', stream === process.stdout) +``` + +### Generating comments + +Astring supports comment generation, provided they are stored on the AST nodes. To do so, this example uses [Astravel](https://github.com/davidbonnet/astravel), a fast AST traveller and modifier. + +```javascript +// Make sure acorn, astravel and astring modules are imported + +// Set example code +var code = + [ + '// Compute the answer to everything', + 'let answer = 4 + 7 * 5 + 3;', + '// Display it', + 'console.log(answer);', + ].join('\n') + '\n' +// Parse it into an AST and retrieve the list of comments +var comments = [] +var ast = acorn.parse(code, { + ecmaVersion: 6, + locations: true, + onComment: comments, +}) +// Attach comments to AST nodes +astravel.attachComments(ast, comments) +// Format it into a code string +var formattedCode = astring.generate(ast, { + comments: true, +}) +// Check it +console.log(code === formattedCode ? 'It works!' : 'Something went wrong…') +``` + +### Extending + +Astring can easily be extended by updating or passing a custom code `generator`. A code `generator` consists of a mapping of node names and functions that take two arguments: `node` and `state`. The `node` points to the node from which to generate the code and the `state` exposes the `write` method that takes generated code strings. + +This example shows how to support the `await` keyword which is part of the [asynchronous functions proposal](https://github.com/tc39/ecmascript-asyncawait). The corresponding `AwaitExpression` node is based on [this suggested definition](https://github.com/estree/estree/blob/master/es2017.md). + +```javascript +// Make sure the astring module is imported and that `Object.assign` is defined + +// Create a custom generator that inherits from Astring's base generator +var customGenerator = Object.assign({}, astring.GENERATOR, { + AwaitExpression: function (node, state) { + state.write('await ') + var argument = node.argument + if (argument != null) { + this[argument.type](argument, state) + } + }, +}) +// Obtain a custom AST somehow (note that this AST is not obtained from a valid code) +var ast = { + type: 'AwaitExpression', + argument: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'callable', + }, + arguments: [], + }, +} +// Format it +var code = astring.generate(ast, { + generator: customGenerator, +}) +// Check it +console.log( + code === 'await callable();\n' ? 'It works!' : 'Something went wrong…', +) +``` + +## Command line interface + +The `bin/astring` utility can be used to convert a JSON-formatted ESTree compliant AST of a JavaScript code. It accepts the following arguments: + +- `-i`, `--indent`: string to use as indentation (defaults to `"␣␣"`) +- `-l`, `--line-end`: string to use for line endings (defaults to `"\n"`) +- `-s`, `--starting-indent-level`: indent level to start from (defaults to `0`) +- `-h`, `--help`: print a usage message and exit +- `-v`, `--version`: print package version and exit + +The utility reads the AST from a provided list of files or from `stdin` if none is supplied and prints the generated code. + +### Example + +As in the previous example, these examples use [Acorn](https://github.com/acornjs/acorn) to get the JSON-formatted AST. This command pipes the AST output by Acorn from a `script.js` file to Astring and writes the formatted JavaScript code into a `result.js` file: + +```bash +acorn --ecma6 script.js | astring > result.js +``` + +This command does the same, but reads the AST from an intermediary file: + +```bash +acorn --ecma6 script.js > ast.json +astring ast.json > result.js +``` + +This command reads JavaScript 6 code from `stdin` and outputs a prettified version: + +```bash +cat | acorn --ecma6 | astring +``` diff --git a/node_modules/astring/astring.d.ts b/node_modules/astring/astring.d.ts new file mode 100644 index 00000000..1c6cdbee --- /dev/null +++ b/node_modules/astring/astring.d.ts @@ -0,0 +1,89 @@ +import type { Node as EstreeNode } from 'estree' +import type { Mapping, SourceMapGenerator } from 'source-map' +import type { Writable } from 'stream' + +/** + * State object passed to generator functions. + */ +export interface State { + output: string + write(code: string, node?: EstreeNode): void + writeComments: boolean + indent: string + lineEnd: string + indentLevel: number + line?: number + column?: number + lineEndSize?: number + mapping?: Mapping +} + +/** + * Code generator for each node type. + */ +export type Generator = { + [T in EstreeNode['type']]: ( + node: EstreeNode & { type: T }, + state: State, + ) => void +} + +/** + * Code generator options. + */ +export interface Options { + /** + * If present, source mappings will be written to the generator. + */ + sourceMap?: SourceMapGenerator + /** + * String to use for indentation, defaults to `"␣␣"`. + */ + indent?: string + /** + * String to use for line endings, defaults to `"\n"`. + */ + lineEnd?: string + /** + * Indent level to start from, defaults to `0`. + */ + startingIndentLevel?: number + /** + * Generate comments if `true`, defaults to `false`. + */ + comments?: boolean + /** + * Output stream to write the render code to, defaults to `null`. + */ + output?: Output + /** + * Custom code generator logic. + */ + generator?: Generator +} + +/** + * Core Estree Node type to accommodate derived node types from parsers. + */ +interface Node { + type: string +} + +/** + * Returns a string representing the rendered code of the provided AST `node`. + * However, if an `output` stream is provided in the `options`, it writes to that stream and returns it. + */ +export function generate(node: Node, options?: Options): string +export function generate(node: Node, options?: Options): Writable + +/** + * Base code generator. + */ +export const GENERATOR: Generator + +/** + * Base code generator. + * + * @deprecated Use {@link GENERATOR} instead. + */ +export const baseGenerator: Generator diff --git a/node_modules/astring/bin/astring b/node_modules/astring/bin/astring new file mode 100755 index 00000000..43872a86 --- /dev/null +++ b/node_modules/astring/bin/astring @@ -0,0 +1,103 @@ +#!/usr/bin/env node + +const generate = require('../dist/astring').generate +const version = require('../package').version +const fs = require('fs') +const path = require('path') + +const argv = process.argv.slice(2) +const options = { + indent: ' ', + lindeEnd: '\n', + startingIndentLevel: 0, +} +const files = [] + +function printHelp(status) { + // eslint-disable-next-line no-console + const print = status === 0 ? console.log : console.error + const binName = path.basename(process.argv[1]) + print('Usage: ' + binName + ' [-h, --help] [-v, --version]') + print( + ' ' + + binName + + ' [-i, --indent INDENT] [-l, --line-end LINE_END] [-s, --starting-indent-level LEVEL] files...', + ) + process.exit(status) +} + +function printVersion() { + // eslint-disable-next-line no-console + console.log(version) + process.exit(0) +} + +for (let i = 0, length = argv.length; i < length; i++) { + let arg = argv[i] + if (arg[0] === '-') { + switch (arg) { + case '-i': + case '--indent': + options.indent = argv[++i] + break + case '-l': + case '--line-end': + options.lineEnd = argv[++i] + break + case '-s': + case '--starting-indent-level': + options.startingIndentLevel = parseInt(argv[++i]) + break + case '-h': + case '--help': + printHelp(0) + break + case '-v': + case '--version': + printVersion() + break + default: + console.error('Option "' + arg + '" not supported.') + printHelp(1) + break + } + } else { + files.push(arg) + } +} + +options.output = process.stdout + +if (files.length === 0) { + let data = '' + process.stdin.setEncoding('utf8') + process.stdin.resume() + process.stdin + .on('data', function (chunk) { + data += chunk + }) + .on('end', function () { + try { + generate(JSON.parse(data), options) + } catch (error) { + console.error('Error: ' + error.message) + process.exit(1) + } + }) +} else { + let hasError = false + for (let i = 0, length = files.length; i < length; i++) { + try { + let file = files[i] + generate(JSON.parse(fs.readFileSync(file, 'utf8')), options) + } catch (error) { + console.error('Error: ' + error.message) + if (hasError !== true) { + hasError = true + } + } + } + if (hasError) { + process.exit(1) + } +} diff --git a/node_modules/astring/package.json b/node_modules/astring/package.json new file mode 100644 index 00000000..922f7f5b --- /dev/null +++ b/node_modules/astring/package.json @@ -0,0 +1,97 @@ +{ + "name": "astring", + "version": "1.8.6", + "description": "JavaScript code generator from an ESTree-compliant AST.", + "main": "./dist/astring.js", + "module": "./dist/astring.mjs", + "types": "./astring.d.ts", + "exports": { + "types": "./astring.d.ts", + "import": "./dist/astring.mjs", + "require": "./dist/astring.js", + "browser": "./dist/astring.min.js" + }, + "bin": { + "astring": "bin/astring" + }, + "scripts": { + "build": "babel src/astring.js --out-file dist/astring.js --source-maps --no-comments && cp src/astring.js dist/astring.mjs", + "build:watch": "babel src/astring.js --out-file dist/astring.js --source-maps --no-comments --watch", + "build:minified": "cross-env BABEL_MODE=minified babel src/astring.js --out-file dist/astring.min.js --source-maps --no-comments", + "build:demo": "npm run build:minified && cp dist/astring.min.* docs/demo/", + "prepare": "npm run build && npm run build:minified", + "test": "npm run eslint && npm run prettier:check && npm run build:minified && npm run test:coverage", + "dev": "ava --watch src/tests/astring.js", + "test:coverage": "c8 --reporter=html --reporter=text --reporter=lcov --include='src/*.js' --exclude='src/tests/**/*.js' ava src/tests/astring.js", + "test:scripts": "npm run test:scripts:build && ava src/tests/_scripts.js", + "test:performance": "ava src/tests/performance.js", + "benchmark": "node --require esm ./src/tests/benchmark.js", + "eslint": "eslint src", + "prettier": "prettier --write \"{src,scripts}/**/*.js\" \"bin/astring\"", + "prettier:check": "prettier --list-different \"{src,scripts}/**/*.js\" \"bin/astring\"", + "prepush": "npm test", + "release": "standard-version", + "deploy": "git push --follow-tags origin main && npm publish" + }, + "keywords": [ + "ast", + "codegen", + "code generator", + "estree", + "astravel" + ], + "repository": { + "type": "git", + "url": "https://github.com/davidbonnet/astring.git" + }, + "author": "David Bonnet ", + "license": "MIT", + "devDependencies": { + "@babel/cli": "^7.14.3", + "@babel/core": "^7.14.3", + "@babel/generator": "^7.14.3", + "@babel/parser": "^7.16.4", + "@babel/preset-env": "^7.14.4", + "acorn": "^8.6.0", + "astravel": "^0.5.0", + "ava": "^3.15.0", + "babel-preset-minify": "^0.5.1", + "benchmark": "^2.1.4", + "buble": "^0.20.0", + "c8": "^7.10.0", + "cross-env": "^7.0.3", + "escodegen": "^2.0.0", + "eslint": "^8.3.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-import": "^2.25.3", + "esm": "^3.2.25", + "glob": "^7.1.7", + "husky": "^6.0.0", + "lodash": "^4.17.21", + "meriyah": "^4.1.5", + "normalize-newline": "^3.0.0", + "prettier": "^2.4.1", + "standard-version": "^9.3.0", + "sucrase": "^3.18.1", + "uglify-js": "^3.13.8" + }, + "prettier": { + "printWidth": 80, + "tabWidth": 2, + "useTabs": false, + "semi": false, + "singleQuote": true, + "trailingComma": "all", + "bracketSpacing": true + }, + "ava": { + "files": [ + "src/**/tests/astring.js", + "src/**/tests/performance.js" + ], + "require": [ + "esm" + ] + }, + "esm": "auto" +} diff --git a/node_modules/asynckit/LICENSE b/node_modules/asynckit/LICENSE new file mode 100644 index 00000000..c9eca5dd --- /dev/null +++ b/node_modules/asynckit/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Alex Indigo + +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. diff --git a/node_modules/asynckit/README.md b/node_modules/asynckit/README.md new file mode 100644 index 00000000..ddcc7e6b --- /dev/null +++ b/node_modules/asynckit/README.md @@ -0,0 +1,233 @@ +# asynckit [![NPM Module](https://img.shields.io/npm/v/asynckit.svg?style=flat)](https://www.npmjs.com/package/asynckit) + +Minimal async jobs utility library, with streams support. + +[![PhantomJS Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=browser&style=flat)](https://travis-ci.org/alexindigo/asynckit) +[![Linux Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=linux:0.12-6.x&style=flat)](https://travis-ci.org/alexindigo/asynckit) +[![Windows Build](https://img.shields.io/appveyor/ci/alexindigo/asynckit/v0.4.0.svg?label=windows:0.12-6.x&style=flat)](https://ci.appveyor.com/project/alexindigo/asynckit) + +[![Coverage Status](https://img.shields.io/coveralls/alexindigo/asynckit/v0.4.0.svg?label=code+coverage&style=flat)](https://coveralls.io/github/alexindigo/asynckit?branch=master) +[![Dependency Status](https://img.shields.io/david/alexindigo/asynckit/v0.4.0.svg?style=flat)](https://david-dm.org/alexindigo/asynckit) +[![bitHound Overall Score](https://www.bithound.io/github/alexindigo/asynckit/badges/score.svg)](https://www.bithound.io/github/alexindigo/asynckit) + + + +AsyncKit provides harness for `parallel` and `serial` iterators over list of items represented by arrays or objects. +Optionally it accepts abort function (should be synchronously return by iterator for each item), and terminates left over jobs upon an error event. For specific iteration order built-in (`ascending` and `descending`) and custom sort helpers also supported, via `asynckit.serialOrdered` method. + +It ensures async operations to keep behavior more stable and prevent `Maximum call stack size exceeded` errors, from sync iterators. + +| compression | size | +| :----------------- | -------: | +| asynckit.js | 12.34 kB | +| asynckit.min.js | 4.11 kB | +| asynckit.min.js.gz | 1.47 kB | + + +## Install + +```sh +$ npm install --save asynckit +``` + +## Examples + +### Parallel Jobs + +Runs iterator over provided array in parallel. Stores output in the `result` array, +on the matching positions. In unlikely event of an error from one of the jobs, +will terminate rest of the active jobs (if abort function is provided) +and return error along with salvaged data to the main callback function. + +#### Input Array + +```javascript +var parallel = require('asynckit').parallel + , assert = require('assert') + ; + +var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] + , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] + , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] + , target = [] + ; + +parallel(source, asyncJob, function(err, result) +{ + assert.deepEqual(result, expectedResult); + assert.deepEqual(target, expectedTarget); +}); + +// async job accepts one element from the array +// and a callback function +function asyncJob(item, cb) +{ + // different delays (in ms) per item + var delay = item * 25; + + // pretend different jobs take different time to finish + // and not in consequential order + var timeoutId = setTimeout(function() { + target.push(item); + cb(null, item * 2); + }, delay); + + // allow to cancel "leftover" jobs upon error + // return function, invoking of which will abort this job + return clearTimeout.bind(null, timeoutId); +} +``` + +More examples could be found in [test/test-parallel-array.js](test/test-parallel-array.js). + +#### Input Object + +Also it supports named jobs, listed via object. + +```javascript +var parallel = require('asynckit/parallel') + , assert = require('assert') + ; + +var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } + , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } + , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] + , expectedKeys = [ 'first', 'one', 'two', 'four', 'eight', 'sixteen', 'thirtyTwo', 'sixtyFour' ] + , target = [] + , keys = [] + ; + +parallel(source, asyncJob, function(err, result) +{ + assert.deepEqual(result, expectedResult); + assert.deepEqual(target, expectedTarget); + assert.deepEqual(keys, expectedKeys); +}); + +// supports full value, key, callback (shortcut) interface +function asyncJob(item, key, cb) +{ + // different delays (in ms) per item + var delay = item * 25; + + // pretend different jobs take different time to finish + // and not in consequential order + var timeoutId = setTimeout(function() { + keys.push(key); + target.push(item); + cb(null, item * 2); + }, delay); + + // allow to cancel "leftover" jobs upon error + // return function, invoking of which will abort this job + return clearTimeout.bind(null, timeoutId); +} +``` + +More examples could be found in [test/test-parallel-object.js](test/test-parallel-object.js). + +### Serial Jobs + +Runs iterator over provided array sequentially. Stores output in the `result` array, +on the matching positions. In unlikely event of an error from one of the jobs, +will not proceed to the rest of the items in the list +and return error along with salvaged data to the main callback function. + +#### Input Array + +```javascript +var serial = require('asynckit/serial') + , assert = require('assert') + ; + +var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] + , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] + , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] + , target = [] + ; + +serial(source, asyncJob, function(err, result) +{ + assert.deepEqual(result, expectedResult); + assert.deepEqual(target, expectedTarget); +}); + +// extended interface (item, key, callback) +// also supported for arrays +function asyncJob(item, key, cb) +{ + target.push(key); + + // it will be automatically made async + // even it iterator "returns" in the same event loop + cb(null, item * 2); +} +``` + +More examples could be found in [test/test-serial-array.js](test/test-serial-array.js). + +#### Input Object + +Also it supports named jobs, listed via object. + +```javascript +var serial = require('asynckit').serial + , assert = require('assert') + ; + +var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] + , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] + , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] + , target = [] + ; + +var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } + , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } + , expectedTarget = [ 1, 1, 4, 16, 64, 32, 8, 2 ] + , target = [] + ; + + +serial(source, asyncJob, function(err, result) +{ + assert.deepEqual(result, expectedResult); + assert.deepEqual(target, expectedTarget); +}); + +// shortcut interface (item, callback) +// works for object as well as for the arrays +function asyncJob(item, cb) +{ + target.push(item); + + // it will be automatically made async + // even it iterator "returns" in the same event loop + cb(null, item * 2); +} +``` + +More examples could be found in [test/test-serial-object.js](test/test-serial-object.js). + +_Note: Since _object_ is an _unordered_ collection of properties, +it may produce unexpected results with sequential iterations. +Whenever order of the jobs' execution is important please use `serialOrdered` method._ + +### Ordered Serial Iterations + +TBD + +For example [compare-property](compare-property) package. + +### Streaming interface + +TBD + +## Want to Know More? + +More examples can be found in [test folder](test/). + +Or open an [issue](https://github.com/alexindigo/asynckit/issues) with questions and/or suggestions. + +## License + +AsyncKit is licensed under the MIT license. diff --git a/node_modules/asynckit/bench.js b/node_modules/asynckit/bench.js new file mode 100644 index 00000000..c612f1a5 --- /dev/null +++ b/node_modules/asynckit/bench.js @@ -0,0 +1,76 @@ +/* eslint no-console: "off" */ + +var asynckit = require('./') + , async = require('async') + , assert = require('assert') + , expected = 0 + ; + +var Benchmark = require('benchmark'); +var suite = new Benchmark.Suite; + +var source = []; +for (var z = 1; z < 100; z++) +{ + source.push(z); + expected += z; +} + +suite +// add tests + +.add('async.map', function(deferred) +{ + var total = 0; + + async.map(source, + function(i, cb) + { + setImmediate(function() + { + total += i; + cb(null, total); + }); + }, + function(err, result) + { + assert.ifError(err); + assert.equal(result[result.length - 1], expected); + deferred.resolve(); + }); +}, {'defer': true}) + + +.add('asynckit.parallel', function(deferred) +{ + var total = 0; + + asynckit.parallel(source, + function(i, cb) + { + setImmediate(function() + { + total += i; + cb(null, total); + }); + }, + function(err, result) + { + assert.ifError(err); + assert.equal(result[result.length - 1], expected); + deferred.resolve(); + }); +}, {'defer': true}) + + +// add listeners +.on('cycle', function(ev) +{ + console.log(String(ev.target)); +}) +.on('complete', function() +{ + console.log('Fastest is ' + this.filter('fastest').map('name')); +}) +// run async +.run({ 'async': true }); diff --git a/node_modules/asynckit/index.js b/node_modules/asynckit/index.js new file mode 100644 index 00000000..455f9454 --- /dev/null +++ b/node_modules/asynckit/index.js @@ -0,0 +1,6 @@ +module.exports = +{ + parallel : require('./parallel.js'), + serial : require('./serial.js'), + serialOrdered : require('./serialOrdered.js') +}; diff --git a/node_modules/asynckit/package.json b/node_modules/asynckit/package.json new file mode 100644 index 00000000..51147d65 --- /dev/null +++ b/node_modules/asynckit/package.json @@ -0,0 +1,63 @@ +{ + "name": "asynckit", + "version": "0.4.0", + "description": "Minimal async jobs utility library, with streams support", + "main": "index.js", + "scripts": { + "clean": "rimraf coverage", + "lint": "eslint *.js lib/*.js test/*.js", + "test": "istanbul cover --reporter=json tape -- 'test/test-*.js' | tap-spec", + "win-test": "tape test/test-*.js", + "browser": "browserify -t browserify-istanbul test/lib/browserify_adjustment.js test/test-*.js | obake --coverage | tap-spec", + "report": "istanbul report", + "size": "browserify index.js | size-table asynckit", + "debug": "tape test/test-*.js" + }, + "pre-commit": [ + "clean", + "lint", + "test", + "browser", + "report", + "size" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/alexindigo/asynckit.git" + }, + "keywords": [ + "async", + "jobs", + "parallel", + "serial", + "iterator", + "array", + "object", + "stream", + "destroy", + "terminate", + "abort" + ], + "author": "Alex Indigo ", + "license": "MIT", + "bugs": { + "url": "https://github.com/alexindigo/asynckit/issues" + }, + "homepage": "https://github.com/alexindigo/asynckit#readme", + "devDependencies": { + "browserify": "^13.0.0", + "browserify-istanbul": "^2.0.0", + "coveralls": "^2.11.9", + "eslint": "^2.9.0", + "istanbul": "^0.4.3", + "obake": "^0.1.2", + "phantomjs-prebuilt": "^2.1.7", + "pre-commit": "^1.1.3", + "reamde": "^1.1.0", + "rimraf": "^2.5.2", + "size-table": "^0.2.0", + "tap-spec": "^4.1.1", + "tape": "^4.5.1" + }, + "dependencies": {} +} diff --git a/node_modules/asynckit/parallel.js b/node_modules/asynckit/parallel.js new file mode 100644 index 00000000..3c50344d --- /dev/null +++ b/node_modules/asynckit/parallel.js @@ -0,0 +1,43 @@ +var iterate = require('./lib/iterate.js') + , initState = require('./lib/state.js') + , terminator = require('./lib/terminator.js') + ; + +// Public API +module.exports = parallel; + +/** + * Runs iterator over provided array elements in parallel + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function parallel(list, iterator, callback) +{ + var state = initState(list); + + while (state.index < (state['keyedList'] || list).length) + { + iterate(list, iterator, state, function(error, result) + { + if (error) + { + callback(error, result); + return; + } + + // looks like it's the last one + if (Object.keys(state.jobs).length === 0) + { + callback(null, state.results); + return; + } + }); + + state.index++; + } + + return terminator.bind(state, callback); +} diff --git a/node_modules/asynckit/serial.js b/node_modules/asynckit/serial.js new file mode 100644 index 00000000..6cd949a6 --- /dev/null +++ b/node_modules/asynckit/serial.js @@ -0,0 +1,17 @@ +var serialOrdered = require('./serialOrdered.js'); + +// Public API +module.exports = serial; + +/** + * Runs iterator over provided array elements in series + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function serial(list, iterator, callback) +{ + return serialOrdered(list, iterator, null, callback); +} diff --git a/node_modules/asynckit/serialOrdered.js b/node_modules/asynckit/serialOrdered.js new file mode 100644 index 00000000..607eafea --- /dev/null +++ b/node_modules/asynckit/serialOrdered.js @@ -0,0 +1,75 @@ +var iterate = require('./lib/iterate.js') + , initState = require('./lib/state.js') + , terminator = require('./lib/terminator.js') + ; + +// Public API +module.exports = serialOrdered; +// sorting helpers +module.exports.ascending = ascending; +module.exports.descending = descending; + +/** + * Runs iterator over provided sorted array elements in series + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} sortMethod - custom sort function + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function serialOrdered(list, iterator, sortMethod, callback) +{ + var state = initState(list, sortMethod); + + iterate(list, iterator, state, function iteratorHandler(error, result) + { + if (error) + { + callback(error, result); + return; + } + + state.index++; + + // are we there yet? + if (state.index < (state['keyedList'] || list).length) + { + iterate(list, iterator, state, iteratorHandler); + return; + } + + // done here + callback(null, state.results); + }); + + return terminator.bind(state, callback); +} + +/* + * -- Sort methods + */ + +/** + * sort helper to sort array elements in ascending order + * + * @param {mixed} a - an item to compare + * @param {mixed} b - an item to compare + * @returns {number} - comparison result + */ +function ascending(a, b) +{ + return a < b ? -1 : a > b ? 1 : 0; +} + +/** + * sort helper to sort array elements in descending order + * + * @param {mixed} a - an item to compare + * @param {mixed} b - an item to compare + * @returns {number} - comparison result + */ +function descending(a, b) +{ + return -1 * ascending(a, b); +} diff --git a/node_modules/asynckit/stream.js b/node_modules/asynckit/stream.js new file mode 100644 index 00000000..d43465f9 --- /dev/null +++ b/node_modules/asynckit/stream.js @@ -0,0 +1,21 @@ +var inherits = require('util').inherits + , Readable = require('stream').Readable + , ReadableAsyncKit = require('./lib/readable_asynckit.js') + , ReadableParallel = require('./lib/readable_parallel.js') + , ReadableSerial = require('./lib/readable_serial.js') + , ReadableSerialOrdered = require('./lib/readable_serial_ordered.js') + ; + +// API +module.exports = +{ + parallel : ReadableParallel, + serial : ReadableSerial, + serialOrdered : ReadableSerialOrdered, +}; + +inherits(ReadableAsyncKit, Readable); + +inherits(ReadableParallel, ReadableAsyncKit); +inherits(ReadableSerial, ReadableAsyncKit); +inherits(ReadableSerialOrdered, ReadableAsyncKit); diff --git a/node_modules/at-least-node/LICENSE b/node_modules/at-least-node/LICENSE new file mode 100644 index 00000000..5e29ccc5 --- /dev/null +++ b/node_modules/at-least-node/LICENSE @@ -0,0 +1,6 @@ +The ISC License +Copyright (c) 2020 Ryan Zimmerman + +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/at-least-node/README.md b/node_modules/at-least-node/README.md new file mode 100644 index 00000000..fd6e5146 --- /dev/null +++ b/node_modules/at-least-node/README.md @@ -0,0 +1,25 @@ +# at-least-node + +![npm](https://img.shields.io/npm/v/at-least-node) +![node](https://img.shields.io/node/v/at-least-node) +![NPM](https://img.shields.io/npm/l/at-least-node) + +Sometimes you need to check if you're on _at least_ a given Node.js version, but you don't want to pull in the whole [`semver`](https://www.npmjs.com/package/semver) kitchen sink. That's what `at-least-node` is for. + +| Package | Size | +| --------------- | ------- | +| `at-least-node` | 2.6 kB | +| `semver` | 75.5 kB | + +```js +const atLeastNode = require('at-least-node') +atLeastNode('10.12.0') +// -> true on Node 10.12.0+, false on anything below that +``` + +When passing in a version string: + +- You cannot include a leading `v` (i.e. `v10.12.0`) +- You cannot omit sections (i.e. `10.12`) +- You cannot use pre-releases (i.e. `1.0.0-beta`) +- There is no input validation, if you make a mistake, the resulting behavior is undefined diff --git a/node_modules/at-least-node/index.js b/node_modules/at-least-node/index.js new file mode 100644 index 00000000..974a2fa8 --- /dev/null +++ b/node_modules/at-least-node/index.js @@ -0,0 +1,5 @@ +module.exports = r => { + const n = process.versions.node.split('.').map(x => parseInt(x, 10)) + r = r.split('.').map(x => parseInt(x, 10)) + return n[0] > r[0] || (n[0] === r[0] && (n[1] > r[1] || (n[1] === r[1] && n[2] >= r[2]))) +} diff --git a/node_modules/at-least-node/package.json b/node_modules/at-least-node/package.json new file mode 100644 index 00000000..2c13641f --- /dev/null +++ b/node_modules/at-least-node/package.json @@ -0,0 +1,32 @@ +{ + "name": "at-least-node", + "version": "1.0.0", + "description": "Lightweight Node.js version sniffing/comparison", + "keywords": [ + "semver", + "feature" + ], + "homepage": "https://github.com/RyanZim/at-least-node#readme", + "bugs": { + "url": "https://github.com/RyanZim/at-least-node/issues" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/RyanZim/at-least-node.git" + }, + "license": "ISC", + "author": "Ryan Zimmerman ", + "main": "index.js", + "files": [], + "scripts": { + "test": "ava" + }, + "devDependencies": { + "ava": "^3.1.0", + "rewire": "^4.0.1", + "semver": "^7.1.2" + }, + "engines": { + "node": ">= 4.0.0" + } +} diff --git a/node_modules/autoprefixer/LICENSE b/node_modules/autoprefixer/LICENSE new file mode 100644 index 00000000..da057b45 --- /dev/null +++ b/node_modules/autoprefixer/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright 2013 Andrey Sitnik + +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. diff --git a/node_modules/autoprefixer/README.md b/node_modules/autoprefixer/README.md new file mode 100644 index 00000000..4df94b6e --- /dev/null +++ b/node_modules/autoprefixer/README.md @@ -0,0 +1,66 @@ +# Autoprefixer [![Cult Of Martians][cult-img]][cult] + + + +[PostCSS] plugin to parse CSS and add vendor prefixes to CSS rules using values +from [Can I Use]. It is recommended by Google and used in Twitter and Alibaba. + +Write your CSS rules without vendor prefixes (in fact, forget about them +entirely): + +```css +::placeholder { + color: gray; +} + +.image { + background-image: url(image@1x.png); +} +@media (min-resolution: 2dppx) { + .image { + background-image: url(image@2x.png); + } +} +``` + +Autoprefixer will use the data based on current browser popularity and property +support to apply prefixes for you. You can try the [interactive demo] +of Autoprefixer. + +```css +::-moz-placeholder { + color: gray; +} +::placeholder { + color: gray; +} + +.image { + background-image: url(image@1x.png); +} +@media (-webkit-min-device-pixel-ratio: 2), + (min-resolution: 2dppx) { + .image { + background-image: url(image@2x.png); + } +} +``` + +Twitter account for news and releases: [@autoprefixer]. + + +Sponsored by Evil Martians + + +[interactive demo]: https://autoprefixer.github.io/ +[@autoprefixer]: https://twitter.com/autoprefixer +[Can I Use]: https://caniuse.com/ +[cult-img]: https://cultofmartians.com/assets/badges/badge.svg +[PostCSS]: https://github.com/postcss/postcss +[cult]: https://cultofmartians.com/tasks/autoprefixer-grid.html + + +## Docs +Read full docs **[here](https://github.com/postcss/autoprefixer#readme)**. diff --git a/node_modules/autoprefixer/bin/autoprefixer b/node_modules/autoprefixer/bin/autoprefixer new file mode 100755 index 00000000..785830ea --- /dev/null +++ b/node_modules/autoprefixer/bin/autoprefixer @@ -0,0 +1,22 @@ +#!/usr/bin/env node + +let mode = process.argv[2] +if (mode === '--info') { + process.stdout.write(require('../')().info() + '\n') +} else if (mode === '--version') { + process.stdout.write( + 'autoprefixer ' + require('../package.json').version + '\n' + ) +} else { + process.stdout.write( + 'autoprefix\n' + + '\n' + + 'Options:\n' + + ' --info Show target browsers and used prefixes\n' + + ' --version Show version number\n' + + ' --help Show help\n' + + '\n' + + 'Usage:\n' + + ' autoprefixer --info\n' + ) +} diff --git a/node_modules/autoprefixer/data/prefixes.js b/node_modules/autoprefixer/data/prefixes.js new file mode 100644 index 00000000..4af51512 --- /dev/null +++ b/node_modules/autoprefixer/data/prefixes.js @@ -0,0 +1,1128 @@ +let unpack = require('caniuse-lite/dist/unpacker/feature') + +function browsersSort(a, b) { + a = a.split(' ') + b = b.split(' ') + if (a[0] > b[0]) { + return 1 + } else if (a[0] < b[0]) { + return -1 + } else { + return Math.sign(parseFloat(a[1]) - parseFloat(b[1])) + } +} + +// Convert Can I Use data +function f(data, opts, callback) { + data = unpack(data) + + if (!callback) { + ;[callback, opts] = [opts, {}] + } + + let match = opts.match || /\sx($|\s)/ + let need = [] + + for (let browser in data.stats) { + let versions = data.stats[browser] + for (let version in versions) { + let support = versions[version] + if (support.match(match)) { + need.push(browser + ' ' + version) + } + } + } + + callback(need.sort(browsersSort)) +} + +// Add data for all properties +let result = {} + +function prefix(names, data) { + for (let name of names) { + result[name] = Object.assign({}, data) + } +} + +function add(names, data) { + for (let name of names) { + result[name].browsers = result[name].browsers + .concat(data.browsers) + .sort(browsersSort) + } +} + +module.exports = result + +// Border Radius +let prefixBorderRadius = require('caniuse-lite/data/features/border-radius') + +f(prefixBorderRadius, browsers => + prefix( + [ + 'border-radius', + 'border-top-left-radius', + 'border-top-right-radius', + 'border-bottom-right-radius', + 'border-bottom-left-radius' + ], + { + browsers, + feature: 'border-radius', + mistakes: ['-khtml-', '-ms-', '-o-'] + } + ) +) + +// Box Shadow +let prefixBoxshadow = require('caniuse-lite/data/features/css-boxshadow') + +f(prefixBoxshadow, browsers => + prefix(['box-shadow'], { + browsers, + feature: 'css-boxshadow', + mistakes: ['-khtml-'] + }) +) + +// Animation +let prefixAnimation = require('caniuse-lite/data/features/css-animation') + +f(prefixAnimation, browsers => + prefix( + [ + 'animation', + 'animation-name', + 'animation-duration', + 'animation-delay', + 'animation-direction', + 'animation-fill-mode', + 'animation-iteration-count', + 'animation-play-state', + 'animation-timing-function', + '@keyframes' + ], + { + browsers, + feature: 'css-animation', + mistakes: ['-khtml-', '-ms-'] + } + ) +) + +// Transition +let prefixTransition = require('caniuse-lite/data/features/css-transitions') + +f(prefixTransition, browsers => + prefix( + [ + 'transition', + 'transition-property', + 'transition-duration', + 'transition-delay', + 'transition-timing-function' + ], + { + browsers, + feature: 'css-transitions', + mistakes: ['-khtml-', '-ms-'] + } + ) +) + +// Transform 2D +let prefixTransform2d = require('caniuse-lite/data/features/transforms2d') + +f(prefixTransform2d, browsers => + prefix(['transform', 'transform-origin'], { + browsers, + feature: 'transforms2d' + }) +) + +// Transform 3D +let prefixTransforms3d = require('caniuse-lite/data/features/transforms3d') + +f(prefixTransforms3d, browsers => { + prefix(['perspective', 'perspective-origin'], { + browsers, + feature: 'transforms3d' + }) + return prefix(['transform-style'], { + browsers, + feature: 'transforms3d', + mistakes: ['-ms-', '-o-'] + }) +}) + +f(prefixTransforms3d, { match: /y\sx|y\s#2/ }, browsers => + prefix(['backface-visibility'], { + browsers, + feature: 'transforms3d', + mistakes: ['-ms-', '-o-'] + }) +) + +// Gradients +let prefixGradients = require('caniuse-lite/data/features/css-gradients') + +f(prefixGradients, { match: /y\sx/ }, browsers => + prefix( + [ + 'linear-gradient', + 'repeating-linear-gradient', + 'radial-gradient', + 'repeating-radial-gradient' + ], + { + browsers, + feature: 'css-gradients', + mistakes: ['-ms-'], + props: [ + 'background', + 'background-image', + 'border-image', + 'mask', + 'list-style', + 'list-style-image', + 'content', + 'mask-image' + ] + } + ) +) + +f(prefixGradients, { match: /a\sx/ }, browsers => { + browsers = browsers.map(i => { + if (/firefox|op/.test(i)) { + return i + } else { + return `${i} old` + } + }) + return add( + [ + 'linear-gradient', + 'repeating-linear-gradient', + 'radial-gradient', + 'repeating-radial-gradient' + ], + { + browsers, + feature: 'css-gradients' + } + ) +}) + +// Box sizing +let prefixBoxsizing = require('caniuse-lite/data/features/css3-boxsizing') + +f(prefixBoxsizing, browsers => + prefix(['box-sizing'], { + browsers, + feature: 'css3-boxsizing' + }) +) + +// Filter Effects +let prefixFilters = require('caniuse-lite/data/features/css-filters') + +f(prefixFilters, browsers => + prefix(['filter'], { + browsers, + feature: 'css-filters' + }) +) + +// filter() function +let prefixFilterFunction = require('caniuse-lite/data/features/css-filter-function') + +f(prefixFilterFunction, browsers => + prefix(['filter-function'], { + browsers, + feature: 'css-filter-function', + props: [ + 'background', + 'background-image', + 'border-image', + 'mask', + 'list-style', + 'list-style-image', + 'content', + 'mask-image' + ] + }) +) + +// Backdrop-filter +let prefixBackdropFilter = require('caniuse-lite/data/features/css-backdrop-filter') + +f(prefixBackdropFilter, { match: /y\sx|y\s#2/ }, browsers => + prefix(['backdrop-filter'], { + browsers, + feature: 'css-backdrop-filter' + }) +) + +// element() function +let prefixElementFunction = require('caniuse-lite/data/features/css-element-function') + +f(prefixElementFunction, browsers => + prefix(['element'], { + browsers, + feature: 'css-element-function', + props: [ + 'background', + 'background-image', + 'border-image', + 'mask', + 'list-style', + 'list-style-image', + 'content', + 'mask-image' + ] + }) +) + +// Multicolumns +let prefixMulticolumns = require('caniuse-lite/data/features/multicolumn') + +f(prefixMulticolumns, browsers => { + prefix( + [ + 'columns', + 'column-width', + 'column-gap', + 'column-rule', + 'column-rule-color', + 'column-rule-width', + 'column-count', + 'column-rule-style', + 'column-span', + 'column-fill' + ], + { + browsers, + feature: 'multicolumn' + } + ) + + let noff = browsers.filter(i => !/firefox/.test(i)) + prefix(['break-before', 'break-after', 'break-inside'], { + browsers: noff, + feature: 'multicolumn' + }) +}) + +// User select +let prefixUserSelect = require('caniuse-lite/data/features/user-select-none') + +f(prefixUserSelect, browsers => + prefix(['user-select'], { + browsers, + feature: 'user-select-none', + mistakes: ['-khtml-'] + }) +) + +// Flexible Box Layout +let prefixFlexbox = require('caniuse-lite/data/features/flexbox') + +f(prefixFlexbox, { match: /a\sx/ }, browsers => { + browsers = browsers.map(i => { + if (/ie|firefox/.test(i)) { + return i + } else { + return `${i} 2009` + } + }) + prefix(['display-flex', 'inline-flex'], { + browsers, + feature: 'flexbox', + props: ['display'] + }) + prefix(['flex', 'flex-grow', 'flex-shrink', 'flex-basis'], { + browsers, + feature: 'flexbox' + }) + prefix( + [ + 'flex-direction', + 'flex-wrap', + 'flex-flow', + 'justify-content', + 'order', + 'align-items', + 'align-self', + 'align-content' + ], + { + browsers, + feature: 'flexbox' + } + ) +}) + +f(prefixFlexbox, { match: /y\sx/ }, browsers => { + add(['display-flex', 'inline-flex'], { + browsers, + feature: 'flexbox' + }) + add(['flex', 'flex-grow', 'flex-shrink', 'flex-basis'], { + browsers, + feature: 'flexbox' + }) + add( + [ + 'flex-direction', + 'flex-wrap', + 'flex-flow', + 'justify-content', + 'order', + 'align-items', + 'align-self', + 'align-content' + ], + { + browsers, + feature: 'flexbox' + } + ) +}) + +// calc() unit +let prefixCalc = require('caniuse-lite/data/features/calc') + +f(prefixCalc, browsers => + prefix(['calc'], { + browsers, + feature: 'calc', + props: ['*'] + }) +) + +// Background options +let prefixBackgroundOptions = require('caniuse-lite/data/features/background-img-opts') + +f(prefixBackgroundOptions, browsers => + prefix(['background-origin', 'background-size'], { + browsers, + feature: 'background-img-opts' + }) +) + +// background-clip: text +let prefixBackgroundClipText = require('caniuse-lite/data/features/background-clip-text') + +f(prefixBackgroundClipText, browsers => + prefix(['background-clip'], { + browsers, + feature: 'background-clip-text' + }) +) + +// Font feature settings +let prefixFontFeature = require('caniuse-lite/data/features/font-feature') + +f(prefixFontFeature, browsers => + prefix( + [ + 'font-feature-settings', + 'font-variant-ligatures', + 'font-language-override' + ], + { + browsers, + feature: 'font-feature' + } + ) +) + +// CSS font-kerning property +let prefixFontKerning = require('caniuse-lite/data/features/font-kerning') + +f(prefixFontKerning, browsers => + prefix(['font-kerning'], { + browsers, + feature: 'font-kerning' + }) +) + +// Border image +let prefixBorderImage = require('caniuse-lite/data/features/border-image') + +f(prefixBorderImage, browsers => + prefix(['border-image'], { + browsers, + feature: 'border-image' + }) +) + +// Selection selector +let prefixSelection = require('caniuse-lite/data/features/css-selection') + +f(prefixSelection, browsers => + prefix(['::selection'], { + browsers, + feature: 'css-selection', + selector: true + }) +) + +// Placeholder selector +let prefixPlaceholder = require('caniuse-lite/data/features/css-placeholder') + +f(prefixPlaceholder, browsers => { + prefix(['::placeholder'], { + browsers: browsers.concat(['ie 10 old', 'ie 11 old', 'firefox 18 old']), + feature: 'css-placeholder', + selector: true + }) +}) + +// Placeholder-shown selector +let prefixPlaceholderShown = require('caniuse-lite/data/features/css-placeholder-shown') + +f(prefixPlaceholderShown, browsers => { + prefix([':placeholder-shown'], { + browsers, + feature: 'css-placeholder-shown', + selector: true + }) +}) + +// Hyphenation +let prefixHyphens = require('caniuse-lite/data/features/css-hyphens') + +f(prefixHyphens, browsers => + prefix(['hyphens'], { + browsers, + feature: 'css-hyphens' + }) +) + +// Fullscreen selector +let prefixFullscreen = require('caniuse-lite/data/features/fullscreen') + +f(prefixFullscreen, browsers => + prefix([':fullscreen'], { + browsers, + feature: 'fullscreen', + selector: true + }) +) + +// ::backdrop pseudo-element +// https://caniuse.com/mdn-css_selectors_backdrop +let prefixBackdrop = require('caniuse-lite/data/features/mdn-css-backdrop-pseudo-element') + +f(prefixBackdrop, browsers => + prefix(['::backdrop'], { + browsers, + feature: 'backdrop', + selector: true + }) +) + +// File selector button +let prefixFileSelectorButton = require('caniuse-lite/data/features/css-file-selector-button') + +f(prefixFileSelectorButton, browsers => + prefix(['::file-selector-button'], { + browsers, + feature: 'file-selector-button', + selector: true + }) +) + +// :autofill +let prefixAutofill = require('caniuse-lite/data/features/css-autofill') + +f(prefixAutofill, browsers => + prefix([':autofill'], { + browsers, + feature: 'css-autofill', + selector: true + }) +) + +// Tab size +let prefixTabsize = require('caniuse-lite/data/features/css3-tabsize') + +f(prefixTabsize, browsers => + prefix(['tab-size'], { + browsers, + feature: 'css3-tabsize' + }) +) + +// Intrinsic & extrinsic sizing +let prefixIntrinsic = require('caniuse-lite/data/features/intrinsic-width') + +let sizeProps = [ + 'width', + 'min-width', + 'max-width', + 'height', + 'min-height', + 'max-height', + 'inline-size', + 'min-inline-size', + 'max-inline-size', + 'block-size', + 'min-block-size', + 'max-block-size', + 'grid', + 'grid-template', + 'grid-template-rows', + 'grid-template-columns', + 'grid-auto-columns', + 'grid-auto-rows' +] + +f(prefixIntrinsic, browsers => + prefix(['max-content', 'min-content'], { + browsers, + feature: 'intrinsic-width', + props: sizeProps + }) +) + +f(prefixIntrinsic, { match: /x|\s#4/ }, browsers => + prefix(['fill', 'fill-available'], { + browsers, + feature: 'intrinsic-width', + props: sizeProps + }) +) + +f(prefixIntrinsic, { match: /x|\s#5/ }, browsers => + prefix(['fit-content'], { + browsers, + feature: 'intrinsic-width', + props: sizeProps + }) +) + +// Stretch value + +let prefixStretch = require('caniuse-lite/data/features/css-width-stretch') + +f(prefixStretch, browsers => + prefix(['stretch'], { + browsers, + feature: 'css-width-stretch', + props: sizeProps + }) +) + +// Zoom cursors +let prefixCursorsNewer = require('caniuse-lite/data/features/css3-cursors-newer') + +f(prefixCursorsNewer, browsers => + prefix(['zoom-in', 'zoom-out'], { + browsers, + feature: 'css3-cursors-newer', + props: ['cursor'] + }) +) + +// Grab cursors +let prefixCursorsGrab = require('caniuse-lite/data/features/css3-cursors-grab') + +f(prefixCursorsGrab, browsers => + prefix(['grab', 'grabbing'], { + browsers, + feature: 'css3-cursors-grab', + props: ['cursor'] + }) +) + +// Sticky position +let prefixSticky = require('caniuse-lite/data/features/css-sticky') + +f(prefixSticky, browsers => + prefix(['sticky'], { + browsers, + feature: 'css-sticky', + props: ['position'] + }) +) + +// Pointer Events +let prefixPointer = require('caniuse-lite/data/features/pointer') + +f(prefixPointer, browsers => + prefix(['touch-action'], { + browsers, + feature: 'pointer' + }) +) + +// Text decoration +let prefixDecoration = require('caniuse-lite/data/features/text-decoration') + +f(prefixDecoration, { match: /x.*#[235]/ }, browsers => + prefix(['text-decoration-skip', 'text-decoration-skip-ink'], { + browsers, + feature: 'text-decoration' + }) +) + +let prefixDecorationShorthand = require('caniuse-lite/data/features/mdn-text-decoration-shorthand') + +f(prefixDecorationShorthand, browsers => + prefix(['text-decoration'], { + browsers, + feature: 'text-decoration' + }) +) + +let prefixDecorationColor = require('caniuse-lite/data/features/mdn-text-decoration-color') + +f(prefixDecorationColor, browsers => + prefix(['text-decoration-color'], { + browsers, + feature: 'text-decoration' + }) +) + +let prefixDecorationLine = require('caniuse-lite/data/features/mdn-text-decoration-line') + +f(prefixDecorationLine, browsers => + prefix(['text-decoration-line'], { + browsers, + feature: 'text-decoration' + }) +) + +let prefixDecorationStyle = require('caniuse-lite/data/features/mdn-text-decoration-style') + +f(prefixDecorationStyle, browsers => + prefix(['text-decoration-style'], { + browsers, + feature: 'text-decoration' + }) +) + +// Text Size Adjust +let prefixTextSizeAdjust = require('caniuse-lite/data/features/text-size-adjust') + +f(prefixTextSizeAdjust, browsers => + prefix(['text-size-adjust'], { + browsers, + feature: 'text-size-adjust' + }) +) + +// CSS Masks +let prefixCssMasks = require('caniuse-lite/data/features/css-masks') + +f(prefixCssMasks, browsers => { + prefix( + [ + 'mask-clip', + 'mask-composite', + 'mask-image', + 'mask-origin', + 'mask-repeat', + 'mask-border-repeat', + 'mask-border-source' + ], + { + browsers, + feature: 'css-masks' + } + ) + prefix( + [ + 'mask', + 'mask-position', + 'mask-size', + 'mask-border', + 'mask-border-outset', + 'mask-border-width', + 'mask-border-slice' + ], + { + browsers, + feature: 'css-masks' + } + ) +}) + +// CSS clip-path property +let prefixClipPath = require('caniuse-lite/data/features/css-clip-path') + +f(prefixClipPath, browsers => + prefix(['clip-path'], { + browsers, + feature: 'css-clip-path' + }) +) + +// Fragmented Borders and Backgrounds +let prefixBoxdecoration = require('caniuse-lite/data/features/css-boxdecorationbreak') + +f(prefixBoxdecoration, browsers => + prefix(['box-decoration-break'], { + browsers, + feature: 'css-boxdecorationbreak' + }) +) + +// CSS3 object-fit/object-position +let prefixObjectFit = require('caniuse-lite/data/features/object-fit') + +f(prefixObjectFit, browsers => + prefix(['object-fit', 'object-position'], { + browsers, + feature: 'object-fit' + }) +) + +// CSS Shapes +let prefixShapes = require('caniuse-lite/data/features/css-shapes') + +f(prefixShapes, browsers => + prefix(['shape-margin', 'shape-outside', 'shape-image-threshold'], { + browsers, + feature: 'css-shapes' + }) +) + +// CSS3 text-overflow +let prefixTextOverflow = require('caniuse-lite/data/features/text-overflow') + +f(prefixTextOverflow, browsers => + prefix(['text-overflow'], { + browsers, + feature: 'text-overflow' + }) +) + +// Viewport at-rule +let prefixDeviceadaptation = require('caniuse-lite/data/features/css-deviceadaptation') + +f(prefixDeviceadaptation, browsers => + prefix(['@viewport'], { + browsers, + feature: 'css-deviceadaptation' + }) +) + +// Resolution Media Queries +let prefixResolut = require('caniuse-lite/data/features/css-media-resolution') + +f(prefixResolut, { match: /( x($| )|a #2)/ }, browsers => + prefix(['@resolution'], { + browsers, + feature: 'css-media-resolution' + }) +) + +// CSS text-align-last +let prefixTextAlignLast = require('caniuse-lite/data/features/css-text-align-last') + +f(prefixTextAlignLast, browsers => + prefix(['text-align-last'], { + browsers, + feature: 'css-text-align-last' + }) +) + +// Crisp Edges Image Rendering Algorithm +let prefixCrispedges = require('caniuse-lite/data/features/css-crisp-edges') + +f(prefixCrispedges, { match: /y x|a x #1/ }, browsers => + prefix(['pixelated'], { + browsers, + feature: 'css-crisp-edges', + props: ['image-rendering'] + }) +) + +f(prefixCrispedges, { match: /a x #2/ }, browsers => + prefix(['image-rendering'], { + browsers, + feature: 'css-crisp-edges' + }) +) + +// Logical Properties +let prefixLogicalProps = require('caniuse-lite/data/features/css-logical-props') + +f(prefixLogicalProps, browsers => + prefix( + [ + 'border-inline-start', + 'border-inline-end', + 'margin-inline-start', + 'margin-inline-end', + 'padding-inline-start', + 'padding-inline-end' + ], + { + browsers, + feature: 'css-logical-props' + } + ) +) + +f(prefixLogicalProps, { match: /x\s#2/ }, browsers => + prefix( + [ + 'border-block-start', + 'border-block-end', + 'margin-block-start', + 'margin-block-end', + 'padding-block-start', + 'padding-block-end' + ], + { + browsers, + feature: 'css-logical-props' + } + ) +) + +// CSS appearance +let prefixAppearance = require('caniuse-lite/data/features/css-appearance') + +f(prefixAppearance, { match: /#2|x/ }, browsers => + prefix(['appearance'], { + browsers, + feature: 'css-appearance' + }) +) + +// CSS Scroll snap points +let prefixSnappoints = require('caniuse-lite/data/features/css-snappoints') + +f(prefixSnappoints, browsers => + prefix( + [ + 'scroll-snap-type', + 'scroll-snap-coordinate', + 'scroll-snap-destination', + 'scroll-snap-points-x', + 'scroll-snap-points-y' + ], + { + browsers, + feature: 'css-snappoints' + } + ) +) + +// CSS Regions +let prefixRegions = require('caniuse-lite/data/features/css-regions') + +f(prefixRegions, browsers => + prefix(['flow-into', 'flow-from', 'region-fragment'], { + browsers, + feature: 'css-regions' + }) +) + +// CSS image-set +let prefixImageSet = require('caniuse-lite/data/features/css-image-set') + +f(prefixImageSet, browsers => + prefix(['image-set'], { + browsers, + feature: 'css-image-set', + props: [ + 'background', + 'background-image', + 'border-image', + 'cursor', + 'mask', + 'mask-image', + 'list-style', + 'list-style-image', + 'content' + ] + }) +) + +// Writing Mode +let prefixWritingMode = require('caniuse-lite/data/features/css-writing-mode') + +f(prefixWritingMode, { match: /a|x/ }, browsers => + prefix(['writing-mode'], { + browsers, + feature: 'css-writing-mode' + }) +) + +// Cross-Fade Function +let prefixCrossFade = require('caniuse-lite/data/features/css-cross-fade') + +f(prefixCrossFade, browsers => + prefix(['cross-fade'], { + browsers, + feature: 'css-cross-fade', + props: [ + 'background', + 'background-image', + 'border-image', + 'mask', + 'list-style', + 'list-style-image', + 'content', + 'mask-image' + ] + }) +) + +// Read Only selector +let prefixReadOnly = require('caniuse-lite/data/features/css-read-only-write') + +f(prefixReadOnly, browsers => + prefix([':read-only', ':read-write'], { + browsers, + feature: 'css-read-only-write', + selector: true + }) +) + +// Text Emphasize +let prefixTextEmphasis = require('caniuse-lite/data/features/text-emphasis') + +f(prefixTextEmphasis, browsers => + prefix( + [ + 'text-emphasis', + 'text-emphasis-position', + 'text-emphasis-style', + 'text-emphasis-color' + ], + { + browsers, + feature: 'text-emphasis' + } + ) +) + +// CSS Grid Layout +let prefixGrid = require('caniuse-lite/data/features/css-grid') + +f(prefixGrid, browsers => { + prefix(['display-grid', 'inline-grid'], { + browsers, + feature: 'css-grid', + props: ['display'] + }) + prefix( + [ + 'grid-template-columns', + 'grid-template-rows', + 'grid-row-start', + 'grid-column-start', + 'grid-row-end', + 'grid-column-end', + 'grid-row', + 'grid-column', + 'grid-area', + 'grid-template', + 'grid-template-areas', + 'place-self' + ], + { + browsers, + feature: 'css-grid' + } + ) +}) + +f(prefixGrid, { match: /a x/ }, browsers => + prefix(['grid-column-align', 'grid-row-align'], { + browsers, + feature: 'css-grid' + }) +) + +// CSS text-spacing +let prefixTextSpacing = require('caniuse-lite/data/features/css-text-spacing') + +f(prefixTextSpacing, browsers => + prefix(['text-spacing'], { + browsers, + feature: 'css-text-spacing' + }) +) + +// :any-link selector +let prefixAnyLink = require('caniuse-lite/data/features/css-any-link') + +f(prefixAnyLink, browsers => + prefix([':any-link'], { + browsers, + feature: 'css-any-link', + selector: true + }) +) + +// unicode-bidi + +let bidiIsolate = require('caniuse-lite/data/features/mdn-css-unicode-bidi-isolate') + +f(bidiIsolate, browsers => + prefix(['isolate'], { + browsers, + feature: 'css-unicode-bidi', + props: ['unicode-bidi'] + }) +) + +let bidiPlaintext = require('caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext') + +f(bidiPlaintext, browsers => + prefix(['plaintext'], { + browsers, + feature: 'css-unicode-bidi', + props: ['unicode-bidi'] + }) +) + +let bidiOverride = require('caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override') + +f(bidiOverride, { match: /y x/ }, browsers => + prefix(['isolate-override'], { + browsers, + feature: 'css-unicode-bidi', + props: ['unicode-bidi'] + }) +) + +// overscroll-behavior selector +let prefixOverscroll = require('caniuse-lite/data/features/css-overscroll-behavior') + +f(prefixOverscroll, { match: /a #1/ }, browsers => + prefix(['overscroll-behavior'], { + browsers, + feature: 'css-overscroll-behavior' + }) +) + +// text-orientation +let prefixTextOrientation = require('caniuse-lite/data/features/css-text-orientation') + +f(prefixTextOrientation, browsers => + prefix(['text-orientation'], { + browsers, + feature: 'css-text-orientation' + }) +) + +// print-color-adjust +let prefixPrintAdjust = require('caniuse-lite/data/features/css-print-color-adjust') + +f(prefixPrintAdjust, browsers => + prefix(['print-color-adjust', 'color-adjust'], { + browsers, + feature: 'css-print-color-adjust' + }) +) diff --git a/node_modules/autoprefixer/node_modules/.bin/browserslist b/node_modules/autoprefixer/node_modules/.bin/browserslist new file mode 120000 index 00000000..c4cc06e3 --- /dev/null +++ b/node_modules/autoprefixer/node_modules/.bin/browserslist @@ -0,0 +1 @@ +../../../browserslist/cli.js \ No newline at end of file diff --git a/node_modules/autoprefixer/package.json b/node_modules/autoprefixer/package.json new file mode 100644 index 00000000..90e6d4fc --- /dev/null +++ b/node_modules/autoprefixer/package.json @@ -0,0 +1,49 @@ +{ + "name": "autoprefixer", + "version": "10.4.16", + "description": "Parse CSS and add vendor prefixes to CSS rules using values from the Can I Use website", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "keywords": [ + "autoprefixer", + "css", + "prefix", + "postcss", + "postcss-plugin" + ], + "main": "lib/autoprefixer.js", + "bin": "bin/autoprefixer", + "types": "lib/autoprefixer.d.ts", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "author": "Andrey Sitnik ", + "license": "MIT", + "repository": "postcss/autoprefixer", + "bugs": { + "url": "https://github.com/postcss/autoprefixer/issues" + }, + "peerDependencies": { + "postcss": "^8.1.0" + }, + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } +} diff --git a/node_modules/axios/CHANGELOG.md b/node_modules/axios/CHANGELOG.md new file mode 100644 index 00000000..c1995993 --- /dev/null +++ b/node_modules/axios/CHANGELOG.md @@ -0,0 +1,943 @@ +# Changelog + +### 0.27.2 (April 27, 2022) + +Fixes and Functionality: +- Fixed FormData posting in browser environment by reverting #3785 ([#4640](https://github.com/axios/axios/pull/4640)) +- Enhanced protocol parsing implementation ([#4639](https://github.com/axios/axios/pull/4639)) +- Fixed bundle size + +### 0.27.1 (April 26, 2022) + +Fixes and Functionality: +- Removed import of url module in browser build due to huge size overhead and builds being broken ([#4594](https://github.com/axios/axios/pull/4594)) +- Bumped follow-redirects to ^1.14.9 ([#4615](https://github.com/axios/axios/pull/4615)) + +### 0.27.0 (April 25, 2022) + +Breaking changes: +- New toFormData helper function that allows the implementor to pass an object and allow axios to convert it to FormData ([#3757](https://github.com/axios/axios/pull/3757)) +- Removed functionality that removed the the `Content-Type` request header when passing FormData ([#3785](https://github.com/axios/axios/pull/3785)) +- **(*)** Refactored error handling implementing AxiosError as a constructor, this is a large change to error handling on the whole ([#3645](https://github.com/axios/axios/pull/3645)) +- Separated responsibility for FormData instantiation between `transformRequest` and `toFormData` ([#4470](https://github.com/axios/axios/pull/4470)) +- **(*)** Improved and fixed multiple issues with FormData support ([#4448](https://github.com/axios/axios/pull/4448)) + +QOL and DevX improvements: +- Added a multipart/form-data testing playground allowing contributors to debug changes easily ([#4465](https://github.com/axios/axios/pull/4465)) + +Fixes and Functionality: +- Refactored project file structure to avoid circular imports ([#4515](https://github.com/axios/axios/pull/4516)) & ([#4516](https://github.com/axios/axios/pull/4516)) +- Bumped follow-redirects to ^1.14.9 ([#4562](https://github.com/axios/axios/pull/4562)) + +Internal and Tests: +- Updated dev dependencies to latest version + +Documentation: +- Fixing incorrect link in changelog ([#4551](https://github.com/axios/axios/pull/4551)) + +Notes: +- **(*)** Please read these pull requests before updating, these changes are very impactful and far reaching. + +### 0.26.1 (March 9, 2022) + +Fixes and Functionality: +- Refactored project file structure to avoid circular imports ([#4220](https://github.com/axios/axios/pull/4220)) + +### 0.26.0 (February 13, 2022) + +Fixes and Functionality: +- Fixed The timeoutErrorMessage property in config not work with Node.js ([#3581](https://github.com/axios/axios/pull/3581)) +- Added errors to be displayed when the query parsing process itself fails ([#3961](https://github.com/axios/axios/pull/3961)) +- Fix/remove url required ([#4426](https://github.com/axios/axios/pull/4426)) +- Update follow-redirects dependency due to Vulnerability ([#4462](https://github.com/axios/axios/pull/4462)) +- Bump karma from 6.3.11 to 6.3.14 ([#4461](https://github.com/axios/axios/pull/4461)) +- Bump follow-redirects from 1.14.7 to 1.14.8 ([#4473](https://github.com/axios/axios/pull/4473)) + +### 0.25.0 (January 18, 2022) + +Breaking changes: +- Fixing maxBodyLength enforcement ([#3786](https://github.com/axios/axios/pull/3786)) +- Don't rely on strict mode behavior for arguments ([#3470](https://github.com/axios/axios/pull/3470)) +- Adding error handling when missing url ([#3791](https://github.com/axios/axios/pull/3791)) +- Update isAbsoluteURL.js removing escaping of non-special characters ([#3809](https://github.com/axios/axios/pull/3809)) +- Use native Array.isArray() in utils.js ([#3836](https://github.com/axios/axios/pull/3836)) +- Adding error handling inside stream end callback ([#3967](https://github.com/axios/axios/pull/3967)) + +Fixes and Functionality: +- Added aborted even handler ([#3916](https://github.com/axios/axios/pull/3916)) +- Header types expanded allowing `boolean` and `number` types ([#4144](https://github.com/axios/axios/pull/4144)) +- Fix cancel signature allowing cancel message to be `undefined` ([#3153](https://github.com/axios/axios/pull/3153)) +- Updated type checks to be formulated better ([#3342](https://github.com/axios/axios/pull/3342)) +- Avoid unnecessary buffer allocations ([#3321](https://github.com/axios/axios/pull/3321)) +- Adding a socket handler to keep TCP connection live when processing long living requests ([#3422](https://github.com/axios/axios/pull/3422)) +- Added toFormData helper function ([#3757](https://github.com/axios/axios/pull/3757)) +- Adding responseEncoding prop type in AxiosRequestConfig ([#3918](https://github.com/axios/axios/pull/3918)) + +Internal and Tests: +- Adding axios-test-instance to ecosystem ([#3496](https://github.com/axios/axios/pull/3496)) +- Optimize the logic of isAxiosError ([#3546](https://github.com/axios/axios/pull/3546)) +- Add tests and documentation to display how multiple inceptors work ([#3564](https://github.com/axios/axios/pull/3564)) +- Updating follow-redirects to version 1.14.7 ([#4379](https://github.com/axios/axios/pull/4379)) + +Documentation: +- Fixing changelog to show correct pull request ([#4219](https://github.com/axios/axios/pull/4219)) +- Update upgrade guide for https proxy setting ([#3604](https://github.com/axios/axios/pull/3604)) + +Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub: + +- [Jay](mailto:jasonsaayman@gmail.com) +- [Rijk van Zanten](https://github.com/rijkvanzanten) +- [Kohta Ito](https://github.com/koh110) +- [Brandon Faulkner](https://github.com/bfaulk96) +- [Stefano Magni](https://github.com/NoriSte) +- [enofan](https://github.com/fanguangyi) +- [Andrey Pechkurov](https://github.com/puzpuzpuz) +- [Doowonee](https://github.com/doowonee) +- [Emil Broman](https://github.com/emilbroman-eqt) +- [Remco Haszing](https://github.com/remcohaszing) +- [Black-Hole](https://github.com/BlackHole1) +- [Wolfram Kriesing](https://github.com/wolframkriesing) +- [Andrew Ovens](https://github.com/repl-andrew-ovens) +- [Paulo Renato](https://github.com/PauloRSF) +- [Ben Carp](https://github.com/carpben) +- [Hirotaka Tagawa](https://github.com/wafuwafu13) +- [狼族小狈](https://github.com/lzxb) +- [C. Lewis](https://github.com/ctjlewis) +- [Felipe Carvalho](https://github.com/FCarvalhoVII) +- [Daniel](https://github.com/djs113) +- [Gustavo Sales](https://github.com/gussalesdev) + +### 0.24.0 (October 25, 2021) + +Breaking changes: +- Revert: change type of AxiosResponse to any, please read lengthy discussion here: ([#4141](https://github.com/axios/axios/issues/4141)) pull request: ([#4186](https://github.com/axios/axios/pull/4186)) + +Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub: + +- [Jay](mailto:jasonsaayman@gmail.com) +- [Rodry](https://github.com/ImRodry) +- [Remco Haszing](https://github.com/remcohaszing) +- [Isaiah Thomason](https://github.com/ITenthusiasm) + +### 0.23.0 (October 12, 2021) + +Breaking changes: +- Distinguish request and response data types ([#4116](https://github.com/axios/axios/pull/4116)) +- Change never type to unknown ([#4142](https://github.com/axios/axios/pull/4142)) +- Fixed TransitionalOptions typings ([#4147](https://github.com/axios/axios/pull/4147)) + +Fixes and Functionality: +- Adding globalObject: 'this' to webpack config ([#3176](https://github.com/axios/axios/pull/3176)) +- Adding insecureHTTPParser type to AxiosRequestConfig ([#4066](https://github.com/axios/axios/pull/4066)) +- Fix missing semicolon in typings ([#4115](https://github.com/axios/axios/pull/4115)) +- Fix response headers types ([#4136](https://github.com/axios/axios/pull/4136)) + +Internal and Tests: +- Improve timeout error when timeout is browser default ([#3209](https://github.com/axios/axios/pull/3209)) +- Fix node version on CI ([#4069](https://github.com/axios/axios/pull/4069)) +- Added testing to TypeScript portion of project ([#4140](https://github.com/axios/axios/pull/4140)) + +Documentation: +- Rename Angular to AngularJS ([#4114](https://github.com/axios/axios/pull/4114)) + +Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub: + +- [Jay](mailto:jasonsaayman@gmail.com) +- [Evan-Finkelstein](https://github.com/Evan-Finkelstein) +- [Paweł Szymański](https://github.com/Jezorko) +- [Dobes Vandermeer](https://github.com/dobesv) +- [Claas Augner](https://github.com/caugner) +- [Remco Haszing](https://github.com/remcohaszing) +- [Evgeniy](https://github.com/egmen) +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) + +### 0.22.0 (October 01, 2021) + +Fixes and Functionality: +- Caseless header comparing in HTTP adapter ([#2880](https://github.com/axios/axios/pull/2880)) +- Avoid package.json import fixing issues and warnings related to this ([#4041](https://github.com/axios/axios/pull/4041)), ([#4065](https://github.com/axios/axios/pull/4065)) +- Fixed cancelToken leakage and added AbortController support ([#3305](https://github.com/axios/axios/pull/3305)) +- Updating CI to run on release branches +- Bump follow redirects version +- Fixed default transitional config for custom Axios instance; ([#4052](https://github.com/axios/axios/pull/4052)) + +Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub: + +- [Jay](mailto:jasonsaayman@gmail.com) +- [Matt R. Wilson](https://github.com/mastermatt) +- [Xianming Zhong](https://github.com/chinesedfan) +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) + +### 0.21.4 (September 6, 2021) + +Fixes and Functionality: +- Fixing JSON transform when data is stringified. Providing backward compatibility and complying to the JSON RFC standard ([#4020](https://github.com/axios/axios/pull/4020)) + +Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub: + +- [Jay](mailto:jasonsaayman@gmail.com) +- [Guillaume Fortaine](https://github.com/gfortaine) +- [Yusuke Kawasaki](https://github.com/kawanet) +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) + +### 0.21.3 (September 4, 2021) + +Fixes and Functionality: +- Fixing response interceptor not being called when request interceptor is attached ([#4013](https://github.com/axios/axios/pull/4013)) + +Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub: + +- [Jay](mailto:jasonsaayman@gmail.com) +- [Julian Hollmann](https://github.com/nerdbeere) + +### 0.21.2 (September 4, 2021) + +Fixes and Functionality: + +- Updating axios requests to be delayed by pre-emptive promise creation ([#2702](https://github.com/axios/axios/pull/2702)) +- Adding "synchronous" and "runWhen" options to interceptors api ([#2702](https://github.com/axios/axios/pull/2702)) +- Updating of transformResponse ([#3377](https://github.com/axios/axios/pull/3377)) +- Adding ability to omit User-Agent header ([#3703](https://github.com/axios/axios/pull/3703)) +- Adding multiple JSON improvements ([#3688](https://github.com/axios/axios/pull/3688), [#3763](https://github.com/axios/axios/pull/3763)) +- Fixing quadratic runtime and extra memory usage when setting a maxContentLength ([#3738](https://github.com/axios/axios/pull/3738)) +- Adding parseInt to config.timeout ([#3781](https://github.com/axios/axios/pull/3781)) +- Adding custom return type support to interceptor ([#3783](https://github.com/axios/axios/pull/3783)) +- Adding security fix for ReDoS vulnerability ([#3980](https://github.com/axios/axios/pull/3980)) + +Internal and Tests: + +- Updating build dev dependencies ([#3401](https://github.com/axios/axios/pull/3401)) +- Fixing builds running on Travis CI ([#3538](https://github.com/axios/axios/pull/3538)) +- Updating follow redirect version ([#3694](https://github.com/axios/axios/pull/3694), [#3771](https://github.com/axios/axios/pull/3771)) +- Updating karma sauce launcher to fix failing sauce tests ([#3712](https://github.com/axios/axios/pull/3712), [#3717](https://github.com/axios/axios/pull/3717)) +- Updating content-type header for application/json to not contain charset field, according do RFC 8259 ([#2154](https://github.com/axios/axios/pull/2154)) +- Fixing tests by bumping karma-sauce-launcher version ([#3813](https://github.com/axios/axios/pull/3813)) +- Changing testing process from Travis CI to GitHub Actions ([#3938](https://github.com/axios/axios/pull/3938)) + +Documentation: + +- Updating documentation around the use of `AUTH_TOKEN` with multiple domain endpoints ([#3539](https://github.com/axios/axios/pull/3539)) +- Remove duplication of item in changelog ([#3523](https://github.com/axios/axios/pull/3523)) +- Fixing grammatical errors ([#2642](https://github.com/axios/axios/pull/2642)) +- Fixing spelling error ([#3567](https://github.com/axios/axios/pull/3567)) +- Moving gitpod mention ([#2637](https://github.com/axios/axios/pull/2637)) +- Adding new axios documentation website link ([#3681](https://github.com/axios/axios/pull/3681), [#3707](https://github.com/axios/axios/pull/3707)) +- Updating documentation around dispatching requests ([#3772](https://github.com/axios/axios/pull/3772)) +- Adding documentation for the type guard isAxiosError ([#3767](https://github.com/axios/axios/pull/3767)) +- Adding explanation of cancel token ([#3803](https://github.com/axios/axios/pull/3803)) +- Updating CI status badge ([#3953](https://github.com/axios/axios/pull/3953)) +- Fixing errors with JSON documentation ([#3936](https://github.com/axios/axios/pull/3936)) +- Fixing README typo under Request Config ([#3825](https://github.com/axios/axios/pull/3825)) +- Adding axios-multi-api to the ecosystem file ([#3817](https://github.com/axios/axios/pull/3817)) +- Adding SECURITY.md to properly disclose security vulnerabilities ([#3981](https://github.com/axios/axios/pull/3981)) + +Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub: + +- [Jay](mailto:jasonsaayman@gmail.com) +- [Sasha Korotkov](https://github.com/SashaKoro) +- [Daniel Lopretto](https://github.com/timemachine3030) +- [Mike Bishop](https://github.com/MikeBishop) +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- [Mark](https://github.com/bimbiltu) +- [Philipe Gouveia Paixão](https://github.com/piiih) +- [hippo](https://github.com/hippo2cat) +- [ready-research](https://github.com/ready-research) +- [Xianming Zhong](https://github.com/chinesedfan) +- [Christopher Chrapka](https://github.com/OJezu) +- [Brian Anglin](https://github.com/anglinb) +- [Kohta Ito](https://github.com/koh110) +- [Ali Clark](https://github.com/aliclark) +- [caikan](https://github.com/caikan) +- [Elina Gorshkova](https://github.com/elinagorshkova) +- [Ryota Ikezawa](https://github.com/paveg) +- [Nisar Hassan Naqvi](https://github.com/nisarhassan12) +- [Jake](https://github.com/codemaster138) +- [TagawaHirotaka](https://github.com/wafuwafu13) +- [Johannes Jarbratt](https://github.com/johachi) +- [Mo Sattler](https://github.com/MoSattler) +- [Sam Carlton](https://github.com/ThatGuySam) +- [Matt Czapliński](https://github.com/MattCCC) +- [Ziding Zhang](https://github.com/zidingz) + +### 0.21.1 (December 21, 2020) + +Fixes and Functionality: + +- Hotfix: Prevent SSRF ([#3410](https://github.com/axios/axios/pull/3410)) +- Protocol not parsed when setting proxy config from env vars ([#3070](https://github.com/axios/axios/pull/3070)) +- Updating axios in types to be lower case ([#2797](https://github.com/axios/axios/pull/2797)) +- Adding a type guard for `AxiosError` ([#2949](https://github.com/axios/axios/pull/2949)) + +Internal and Tests: + +- Remove the skipping of the `socket` http test ([#3364](https://github.com/axios/axios/pull/3364)) +- Use different socket for Win32 test ([#3375](https://github.com/axios/axios/pull/3375)) + +Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub: + +- Daniel Lopretto +- Jason Kwok +- Jay +- Jonathan Foster +- Remco Haszing +- Xianming Zhong + +### 0.21.0 (October 23, 2020) + +Fixes and Functionality: + +- Fixing requestHeaders.Authorization ([#3287](https://github.com/axios/axios/pull/3287)) +- Fixing node types ([#3237](https://github.com/axios/axios/pull/3237)) +- Fixing axios.delete ignores config.data ([#3282](https://github.com/axios/axios/pull/3282)) +- Revert "Fixing overwrite Blob/File type as Content-Type in browser. (#1773)" ([#3289](https://github.com/axios/axios/pull/3289)) +- Fixing an issue that type 'null' and 'undefined' is not assignable to validateStatus when typescript strict option is enabled ([#3200](https://github.com/axios/axios/pull/3200)) + +Internal and Tests: + +- Lock travis to not use node v15 ([#3361](https://github.com/axios/axios/pull/3361)) + +Documentation: + +- Fixing simple typo, existent -> existent ([#3252](https://github.com/axios/axios/pull/3252)) +- Fixing typos ([#3309](https://github.com/axios/axios/pull/3309)) + +Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub: + +- Allan Cruz <57270969+Allanbcruz@users.noreply.github.com> +- George Cheng +- Jay +- Kevin Kirsche +- Remco Haszing +- Taemin Shin +- Tim Gates +- Xianming Zhong + +### 0.20.0 (August 20, 2020) + +Release of 0.20.0-pre as a full release with no other changes. + +### 0.20.0-pre (July 15, 2020) + +Fixes and Functionality: + +- Fixing response with utf-8 BOM can not parse to json ([#2419](https://github.com/axios/axios/pull/2419)) + - fix: remove byte order marker (UTF-8 BOM) when transform response + - fix: remove BOM only utf-8 + - test: utf-8 BOM + - fix: incorrect param name +- Refactor mergeConfig without utils.deepMerge ([#2844](https://github.com/axios/axios/pull/2844)) + - Adding failing test + - Fixing #2587 default custom config persisting + - Adding Concat keys and filter duplicates + - Fixed value from CPE + - update for review feedbacks + - no deepMerge + - only merge between plain objects + - fix rename + - always merge config by mergeConfig + - extract function mergeDeepProperties + - refactor mergeConfig with all keys, and add special logic for validateStatus + - add test for resetting headers + - add lots of tests and fix a bug + - should not inherit `data` + - use simple toString +- Fixing overwrite Blob/File type as Content-Type in browser. ([#1773](https://github.com/axios/axios/pull/1773)) +- Fixing an issue that type 'null' is not assignable to validateStatus ([#2773](https://github.com/axios/axios/pull/2773)) +- Fixing special char encoding ([#1671](https://github.com/axios/axios/pull/1671)) + - removing @ character from replacement list since it is a reserved character + - Updating buildURL test to not include the @ character + - Removing console logs +- Fixing password encoding with special characters in basic authentication ([#1492](https://github.com/axios/axios/pull/1492)) + - Fixing password encoding with special characters in basic authentication + - Adding test to check if password with non-Latin1 characters pass +- Fixing 'Network Error' in react native android ([#1487](https://github.com/axios/axios/pull/1487)) + There is a bug in react native Android platform when using get method. It will trigger a 'Network Error' when passing the requestData which is an empty string to request.send function. So if the requestData is an empty string we can set it to null as well to fix the bug. +- Fixing Cookie Helper with Async Components ([#1105](https://github.com/axios/axios/pull/1105)) ([#1107](https://github.com/axios/axios/pull/1107)) +- Fixing 'progressEvent' type ([#2851](https://github.com/axios/axios/pull/2851)) + - Fix 'progressEvent' type + - Update axios.ts +- Fixing getting local files (file://) failed ([#2470](https://github.com/axios/axios/pull/2470)) + - fix issue #2416, #2396 + - fix Eslint warn + - Modify judgment conditions + - add unit test + - update unit test + - update unit test +- Allow PURGE method in typings ([#2191](https://github.com/axios/axios/pull/2191)) +- Adding option to disable automatic decompression ([#2661](https://github.com/axios/axios/pull/2661)) + - Adding ability to disable auto decompression + - Updating decompress documentation in README + - Fixing test\unit\adapters\http.js lint errors + - Adding test for disabling auto decompression + - Removing changes that fixed lint errors in tests + - Removing formatting change to unit test +- Add independent `maxBodyLength` option ([#2781](https://github.com/axios/axios/pull/2781)) + - Add independent option to set the maximum size of the request body + - Remove maxBodyLength check + - Update README + - Assert for error code and message +- Adding responseEncoding to mergeConfig ([#1745](https://github.com/axios/axios/pull/1745)) +- Compatible with follow-redirect aborts the request ([#2689](https://github.com/axios/axios/pull/2689)) + - Compatible with follow-redirect aborts the request + - Use the error code +- Fix merging of params ([#2656](https://github.com/axios/axios/pull/2656)) + - Name function to avoid ESLint func-names warning + - Switch params config to merge list and update tests + - Restore testing of both false and null + - Restore test cases for keys without defaults + - Include test for non-object values that aren't false-y. +- Revert `finally` as `then` ([#2683](https://github.com/axios/axios/pull/2683)) + +Internal and Tests: + +- Fix stale bot config ([#3049](https://github.com/axios/axios/pull/3049)) + - fix stale bot config + - fix multiple lines +- Add days and change name to work ([#3035](https://github.com/axios/axios/pull/3035)) +- Update close-issues.yml ([#3031](https://github.com/axios/axios/pull/3031)) + - Update close-issues.yml + Update close message to read better 😄 + - Fix use of quotations + Use single quotes as per other .yml files + - Remove user name form message +- Add GitHub actions to close stale issues/prs ([#3029](https://github.com/axios/axios/pull/3029)) + - prepare stale actions + - update messages + - Add exempt labels and lighten up comments +- Add GitHub actions to close invalid issues ([#3022](https://github.com/axios/axios/pull/3022)) + - add close actions + - fix with checkout + - update issue templates + - add reminder + - update close message +- Add test with Node.js 12 ([#2860](https://github.com/axios/axios/pull/2860)) + - test with Node.js 12 + - test with latest +- Adding console log on sandbox server startup ([#2210](https://github.com/axios/axios/pull/2210)) + - Adding console log on sandbox server startup + - Update server.js + Add server error handling + - Update server.js + Better error message, remove retry. +- Adding tests for method `options` type definitions ([#1996](https://github.com/axios/axios/pull/1996)) + Update tests. +- Add test for redirecting with too large response ([#2695](https://github.com/axios/axios/pull/2695)) +- Fixing unit test failure in Windows OS ([#2601](https://github.com/axios/axios/pull/2601)) +- Fixing issue for HEAD method and gzipped response ([#2666](https://github.com/axios/axios/pull/2666)) +- Fix tests in browsers ([#2748](https://github.com/axios/axios/pull/2748)) +- chore: add `jsdelivr` and `unpkg` support ([#2443](https://github.com/axios/axios/pull/2443)) + +Documentation: + +- Adding support for URLSearchParams in node ([#1900](https://github.com/axios/axios/pull/1900)) + - Adding support for URLSearchParams in node + - Remove un-needed code + - Update utils.js + - Make changes as suggested +- Adding table of content (preview) ([#3050](https://github.com/axios/axios/pull/3050)) + - add toc (preview) + - remove toc in toc + Signed-off-by: Moni + - fix sublinks + - fix indentation + - remove redundant table links + - update caps and indent + - remove axios +- Replace 'blacklist' with 'blocklist' ([#3006](https://github.com/axios/axios/pull/3006)) +- docs(): Detailed config options environment. ([#2088](https://github.com/axios/axios/pull/2088)) + - docs(): Detailed config options environment. + - Update README.md +- Include axios-data-unpacker in ECOSYSTEM.md ([#2080](https://github.com/axios/axios/pull/2080)) +- Allow opening examples in Gitpod ([#1958](https://github.com/axios/axios/pull/1958)) +- Remove axios.all() and axios.spread() from Readme.md ([#2727](https://github.com/axios/axios/pull/2727)) + - remove axios.all(), axios.spread() + - replace example + - axios.all() -> Promise.all() + - axios.spread(function (acct, perms)) -> function (acct, perms) + - add deprecated mark +- Update README.md ([#2887](https://github.com/axios/axios/pull/2887)) + Small change to the data attribute doc of the config. A request body can also be set for DELETE methods but this wasn't mentioned in the documentation (it only mentioned POST, PUT and PATCH). Took my some 10-20 minutes until I realized that I don't need to manipulate the request body with transformRequest in the case of DELETE. +- Include swagger-taxos-codegen in ECOSYSTEM.md ([#2162](https://github.com/axios/axios/pull/2162)) +- Add CDNJS version badge in README.md ([#878](https://github.com/axios/axios/pull/878)) + This badge will show the version on CDNJS! +- Documentation update to clear up ambiguity in code examples ([#2928](https://github.com/axios/axios/pull/2928)) + - Made an adjustment to the documentation to clear up any ambiguity around the use of "fs". This should help clear up that the code examples with "fs" cannot be used on the client side. +- Update README.md about validateStatus ([#2912](https://github.com/axios/axios/pull/2912)) + Rewrote the comment from "Reject only if the status code is greater than or equal to 500" to "Resolve only if the status code is less than 500" +- Updating documentation for usage form-data ([#2805](https://github.com/axios/axios/pull/2805)) + Closes #2049 +- Fixing CHANGELOG.md issue link ([#2784](https://github.com/axios/axios/pull/2784)) +- Include axios-hooks in ECOSYSTEM.md ([#2003](https://github.com/axios/axios/pull/2003)) +- Added Response header access instructions ([#1901](https://github.com/axios/axios/pull/1901)) + - Added Response header access instructions + - Added note about using bracket notation +- Add `onUploadProgress` and `onDownloadProgress` are browser only ([#2763](https://github.com/axios/axios/pull/2763)) + Saw in #928 and #1966 that `onUploadProgress` and `onDownloadProgress` only work in the browser and was missing that from the README. +- Update ' sign to ` in proxy spec ([#2778](https://github.com/axios/axios/pull/2778)) +- Adding jsDelivr link in README ([#1110](https://github.com/axios/axios/pull/1110)) + - Adding jsDelivr link + - Add SRI + - Remove SRI + +Huge thanks to everyone who contributed to this release via code (authors listed +below) or via reviews and triaging on GitHub: + +- Alan Wang +- Alexandru Ungureanu +- Anubhav Srivastava +- Benny Neugebauer +- Cr <631807682@qq.com> +- David +- David Ko +- David Tanner +- Emily Morehouse +- Felipe Martins +- Fonger <5862369+Fonger@users.noreply.github.com> +- Frostack +- George Cheng +- grumblerchester +- Gustavo López +- hexaez <45806662+hexaez@users.noreply.github.com> +- huangzuizui +- Ian Wijma +- Jay +- jeffjing +- jennynju <46782518+jennynju@users.noreply.github.com> +- Jimmy Liao <52391190+jimmy-liao-gogoro@users.noreply.github.com> +- Jonathan Sharpe +- JounQin +- Justin Beckwith +- Kamil Posiadała <3dcreator.pl@gmail.com> +- Lukas Drgon +- marcinx +- Martti Laine +- Michał Zarach +- Moni +- Motonori Iwata <121048+iwata@users.noreply.github.com> +- Nikita Galkin +- Petr Mares +- Philippe Recto +- Remco Haszing +- rockcs1992 +- Ryan Bown +- Samina Fu +- Simone Busoli +- Spencer von der Ohe +- Sven Efftinge +- Taegyeoung Oh +- Taemin Shin +- Thibault Ehrhart <1208424+ehrhart@users.noreply.github.com> +- Xianming Zhong +- Yasu Flores +- Zac Delventhal + +### 0.19.2 (Jan 20, 2020) + +- Remove unnecessary XSS check ([#2679](https://github.com/axios/axios/pull/2679)) (see ([#2646](https://github.com/axios/axios/issues/2646)) for discussion) + +### 0.19.1 (Jan 7, 2020) + +Fixes and Functionality: + +- Fixing invalid agent issue ([#1904](https://github.com/axios/axios/pull/1904)) +- Fix ignore set withCredentials false ([#2582](https://github.com/axios/axios/pull/2582)) +- Delete useless default to hash ([#2458](https://github.com/axios/axios/pull/2458)) +- Fix HTTP/HTTPs agents passing to follow-redirect ([#1904](https://github.com/axios/axios/pull/1904)) +- Fix ignore set withCredentials false ([#2582](https://github.com/axios/axios/pull/2582)) +- Fix CI build failure ([#2570](https://github.com/axios/axios/pull/2570)) +- Remove dependency on is-buffer from package.json ([#1816](https://github.com/axios/axios/pull/1816)) +- Adding options typings ([#2341](https://github.com/axios/axios/pull/2341)) +- Adding Typescript HTTP method definition for LINK and UNLINK. ([#2444](https://github.com/axios/axios/pull/2444)) +- Update dist with newest changes, fixes Custom Attributes issue +- Change syntax to see if build passes ([#2488](https://github.com/axios/axios/pull/2488)) +- Update Webpack + deps, remove now unnecessary polyfills ([#2410](https://github.com/axios/axios/pull/2410)) +- Fix to prevent XSS, throw an error when the URL contains a JS script ([#2464](https://github.com/axios/axios/pull/2464)) +- Add custom timeout error copy in config ([#2275](https://github.com/axios/axios/pull/2275)) +- Add error toJSON example ([#2466](https://github.com/axios/axios/pull/2466)) +- Fixing Vulnerability A Fortify Scan finds a critical Cross-Site Scrip… ([#2451](https://github.com/axios/axios/pull/2451)) +- Fixing subdomain handling on no_proxy ([#2442](https://github.com/axios/axios/pull/2442)) +- Make redirection from HTTP to HTTPS work ([#2426](https://github.com/axios/axios/pull/2426)) and ([#2547](https://github.com/axios/axios/pull/2547)) +- Add toJSON property to AxiosError type ([#2427](https://github.com/axios/axios/pull/2427)) +- Fixing socket hang up error on node side for slow response. ([#1752](https://github.com/axios/axios/pull/1752)) +- Alternative syntax to send data into the body ([#2317](https://github.com/axios/axios/pull/2317)) +- Fixing custom config options ([#2207](https://github.com/axios/axios/pull/2207)) +- Fixing set `config.method` after mergeConfig for Axios.prototype.request ([#2383](https://github.com/axios/axios/pull/2383)) +- Axios create url bug ([#2290](https://github.com/axios/axios/pull/2290)) +- Do not modify config.url when using a relative baseURL (resolves [#1628](https://github.com/axios/axios/issues/1098)) ([#2391](https://github.com/axios/axios/pull/2391)) + +Internal: + +- Revert "Update Webpack + deps, remove now unnecessary polyfills" ([#2479](https://github.com/axios/axios/pull/2479)) +- Order of if/else blocks is causing unit tests mocking XHR. ([#2201](https://github.com/axios/axios/pull/2201)) +- Add license badge ([#2446](https://github.com/axios/axios/pull/2446)) +- Fix travis CI build [#2386](https://github.com/axios/axios/pull/2386) +- Fix cancellation error on build master. #2290 #2207 ([#2407](https://github.com/axios/axios/pull/2407)) + +Documentation: + +- Fixing typo in CHANGELOG.md: s/Functionallity/Functionality ([#2639](https://github.com/axios/axios/pull/2639)) +- Fix badge, use master branch ([#2538](https://github.com/axios/axios/pull/2538)) +- Fix typo in changelog [#2193](https://github.com/axios/axios/pull/2193) +- Document fix ([#2514](https://github.com/axios/axios/pull/2514)) +- Update docs with no_proxy change, issue #2484 ([#2513](https://github.com/axios/axios/pull/2513)) +- Fixing missing words in docs template ([#2259](https://github.com/axios/axios/pull/2259)) +- 🐛Fix request finally documentation in README ([#2189](https://github.com/axios/axios/pull/2189)) +- updating spelling and adding link to docs ([#2212](https://github.com/axios/axios/pull/2212)) +- docs: minor tweak ([#2404](https://github.com/axios/axios/pull/2404)) +- Update response interceptor docs ([#2399](https://github.com/axios/axios/pull/2399)) +- Update README.md ([#2504](https://github.com/axios/axios/pull/2504)) +- Fix word 'sintaxe' to 'syntax' in README.md ([#2432](https://github.com/axios/axios/pull/2432)) +- updating README: notes on CommonJS autocomplete ([#2256](https://github.com/axios/axios/pull/2256)) +- Fix grammar in README.md ([#2271](https://github.com/axios/axios/pull/2271)) +- Doc fixes, minor examples cleanup ([#2198](https://github.com/axios/axios/pull/2198)) + +### 0.19.0 (May 30, 2019) + +Fixes and Functionality: + +- Added support for no_proxy env variable ([#1693](https://github.com/axios/axios/pull/1693/files)) - Chance Dickson +- Unzip response body only for statuses != 204 ([#1129](https://github.com/axios/axios/pull/1129)) - drawski +- Destroy stream on exceeding maxContentLength (fixes [#1098](https://github.com/axios/axios/issues/1098)) ([#1485](https://github.com/axios/axios/pull/1485)) - Gadzhi Gadzhiev +- Makes Axios error generic to use AxiosResponse ([#1738](https://github.com/axios/axios/pull/1738)) - Suman Lama +- Fixing Mocha tests by locking follow-redirects version to 1.5.10 ([#1993](https://github.com/axios/axios/pull/1993)) - grumblerchester +- Allow uppercase methods in typings. ([#1781](https://github.com/axios/axios/pull/1781)) - Ken Powers +- Fixing building url with hash mark ([#1771](https://github.com/axios/axios/pull/1771)) - Anatoly Ryabov +- This commit fix building url with hash map (fragment identifier) when parameters are present: they must not be added after `#`, because client cut everything after `#` +- Preserve HTTP method when following redirect ([#1758](https://github.com/axios/axios/pull/1758)) - Rikki Gibson +- Add `getUri` signature to TypeScript definition. ([#1736](https://github.com/axios/axios/pull/1736)) - Alexander Trauzzi +- Adding isAxiosError flag to errors thrown by axios ([#1419](https://github.com/axios/axios/pull/1419)) - Ayush Gupta + +Internal: + +- Fixing .eslintrc without extension ([#1789](https://github.com/axios/axios/pull/1789)) - Manoel +- Fix failing SauceLabs tests by updating configuration - Emily Morehouse +- Add issue templates - Emily Morehouse + +Documentation: + +- Consistent coding style in README ([#1787](https://github.com/axios/axios/pull/1787)) - Ali Servet Donmez +- Add information about auth parameter to README ([#2166](https://github.com/axios/axios/pull/2166)) - xlaguna +- Add DELETE to list of methods that allow data as a config option ([#2169](https://github.com/axios/axios/pull/2169)) - Daniela Borges Matos de Carvalho +- Update ECOSYSTEM.md - Add Axios Endpoints ([#2176](https://github.com/axios/axios/pull/2176)) - Renan +- Add r2curl in ECOSYSTEM ([#2141](https://github.com/axios/axios/pull/2141)) - 유용우 / CX +- Update README.md - Add instructions for installing with yarn ([#2036](https://github.com/axios/axios/pull/2036)) - Victor Hermes +- Fixing spacing for README.md ([#2066](https://github.com/axios/axios/pull/2066)) - Josh McCarty +- Update README.md. - Change `.then` to `.finally` in example code ([#2090](https://github.com/axios/axios/pull/2090)) - Omar Cai +- Clarify what values responseType can have in Node ([#2121](https://github.com/axios/axios/pull/2121)) - Tyler Breisacher +- docs(ECOSYSTEM): add axios-api-versioning ([#2020](https://github.com/axios/axios/pull/2020)) - Weffe +- It seems that `responseType: 'blob'` doesn't actually work in Node (when I tried using it, response.data was a string, not a Blob, since Node doesn't have Blobs), so this clarifies that this option should only be used in the browser +- Update README.md. - Add Querystring library note ([#1896](https://github.com/axios/axios/pull/1896)) - Dmitriy Eroshenko +- Add react-hooks-axios to Libraries section of ECOSYSTEM.md ([#1925](https://github.com/axios/axios/pull/1925)) - Cody Chan +- Clarify in README that default timeout is 0 (no timeout) ([#1750](https://github.com/axios/axios/pull/1750)) - Ben Standefer + +### 0.19.0-beta.1 (Aug 9, 2018) + +**NOTE:** This is a beta version of this release. There may be functionality that is broken in +certain browsers, though we suspect that builds are hanging and not erroring. See +https://saucelabs.com/u/axios for the most up-to-date information. + +New Functionality: + +- Add getUri method ([#1712](https://github.com/axios/axios/issues/1712)) +- Add support for no_proxy env variable ([#1693](https://github.com/axios/axios/issues/1693)) +- Add toJSON to decorated Axios errors to facilitate serialization ([#1625](https://github.com/axios/axios/issues/1625)) +- Add second then on axios call ([#1623](https://github.com/axios/axios/issues/1623)) +- Typings: allow custom return types +- Add option to specify character set in responses (with http adapter) + +Fixes: + +- Fix Keep defaults local to instance ([#385](https://github.com/axios/axios/issues/385)) +- Correctly catch exception in http test ([#1475](https://github.com/axios/axios/issues/1475)) +- Fix accept header normalization ([#1698](https://github.com/axios/axios/issues/1698)) +- Fix http adapter to allow HTTPS connections via HTTP ([#959](https://github.com/axios/axios/issues/959)) +- Fix Removes usage of deprecated Buffer constructor. ([#1555](https://github.com/axios/axios/issues/1555), [#1622](https://github.com/axios/axios/issues/1622)) +- Fix defaults to use httpAdapter if available ([#1285](https://github.com/axios/axios/issues/1285)) + - Fixing defaults to use httpAdapter if available + - Use a safer, cross-platform method to detect the Node environment +- Fix Reject promise if request is cancelled by the browser ([#537](https://github.com/axios/axios/issues/537)) +- [Typescript] Fix missing type parameters on delete/head methods +- [NS]: Send `false` flag isStandardBrowserEnv for Nativescript +- Fix missing type parameters on delete/head +- Fix Default method for an instance always overwritten by get +- Fix type error when socketPath option in AxiosRequestConfig +- Capture errors on request data streams +- Decorate resolve and reject to clear timeout in all cases + +Huge thanks to everyone who contributed to this release via code (authors listed +below) or via reviews and triaging on GitHub: + +- Andrew Scott +- Anthony Gauthier +- arpit +- ascott18 +- Benedikt Rötsch +- Chance Dickson +- Dave Stewart +- Deric Cain +- Guillaume Briday +- Jacob Wejendorp +- Jim Lynch +- johntron +- Justin Beckwith +- Justin Beckwith +- Khaled Garbaya +- Lim Jing Rong +- Mark van den Broek +- Martti Laine +- mattridley +- mattridley +- Nicolas Del Valle +- Nilegfx +- pbarbiero +- Rikki Gibson +- Sako Hartounian +- Shane Fitzpatrick +- Stephan Schneider +- Steven +- Tim Garthwaite +- Tim Johns +- Yutaro Miyazaki + +### 0.18.0 (Feb 19, 2018) + +- Adding support for UNIX Sockets when running with Node.js ([#1070](https://github.com/axios/axios/pull/1070)) +- Fixing typings ([#1177](https://github.com/axios/axios/pull/1177)): + - AxiosRequestConfig.proxy: allows type false + - AxiosProxyConfig: added auth field +- Adding function signature in AxiosInstance interface so AxiosInstance can be invoked ([#1192](https://github.com/axios/axios/pull/1192), [#1254](https://github.com/axios/axios/pull/1254)) +- Allowing maxContentLength to pass through to redirected calls as maxBodyLength in follow-redirects config ([#1287](https://github.com/axios/axios/pull/1287)) +- Fixing configuration when using an instance - method can now be set ([#1342](https://github.com/axios/axios/pull/1342)) + +### 0.17.1 (Nov 11, 2017) + +- Fixing issue with web workers ([#1160](https://github.com/axios/axios/pull/1160)) +- Allowing overriding transport ([#1080](https://github.com/axios/axios/pull/1080)) +- Updating TypeScript typings ([#1165](https://github.com/axios/axios/pull/1165), [#1125](https://github.com/axios/axios/pull/1125), [#1131](https://github.com/axios/axios/pull/1131)) + +### 0.17.0 (Oct 21, 2017) + +- **BREAKING** Fixing issue with `baseURL` and interceptors ([#950](https://github.com/axios/axios/pull/950)) +- **BREAKING** Improving handing of duplicate headers ([#874](https://github.com/axios/axios/pull/874)) +- Adding support for disabling proxies ([#691](https://github.com/axios/axios/pull/691)) +- Updating TypeScript typings with generic type parameters ([#1061](https://github.com/axios/axios/pull/1061)) + +### 0.16.2 (Jun 3, 2017) + +- Fixing issue with including `buffer` in bundle ([#887](https://github.com/axios/axios/pull/887)) +- Including underlying request in errors ([#830](https://github.com/axios/axios/pull/830)) +- Convert `method` to lowercase ([#930](https://github.com/axios/axios/pull/930)) + +### 0.16.1 (Apr 8, 2017) + +- Improving HTTP adapter to return last request in case of redirects ([#828](https://github.com/axios/axios/pull/828)) +- Updating `follow-redirects` dependency ([#829](https://github.com/axios/axios/pull/829)) +- Adding support for passing `Buffer` in node ([#773](https://github.com/axios/axios/pull/773)) + +### 0.16.0 (Mar 31, 2017) + +- **BREAKING** Removing `Promise` from axios typings in favor of built-in type declarations ([#480](https://github.com/axios/axios/issues/480)) +- Adding `options` shortcut method ([#461](https://github.com/axios/axios/pull/461)) +- Fixing issue with using `responseType: 'json'` in browsers incompatible with XHR Level 2 ([#654](https://github.com/axios/axios/pull/654)) +- Improving React Native detection ([#731](https://github.com/axios/axios/pull/731)) +- Fixing `combineURLs` to support empty `relativeURL` ([#581](https://github.com/axios/axios/pull/581)) +- Removing `PROTECTION_PREFIX` support ([#561](https://github.com/axios/axios/pull/561)) + +### 0.15.3 (Nov 27, 2016) + +- Fixing issue with custom instances and global defaults ([#443](https://github.com/axios/axios/issues/443)) +- Renaming `axios.d.ts` to `index.d.ts` ([#519](https://github.com/axios/axios/issues/519)) +- Adding `get`, `head`, and `delete` to `defaults.headers` ([#509](https://github.com/axios/axios/issues/509)) +- Fixing issue with `btoa` and IE ([#507](https://github.com/axios/axios/issues/507)) +- Adding support for proxy authentication ([#483](https://github.com/axios/axios/pull/483)) +- Improving HTTP adapter to use `http` protocol by default ([#493](https://github.com/axios/axios/pull/493)) +- Fixing proxy issues ([#491](https://github.com/axios/axios/pull/491)) + +### 0.15.2 (Oct 17, 2016) + +- Fixing issue with calling `cancel` after response has been received ([#482](https://github.com/axios/axios/issues/482)) + +### 0.15.1 (Oct 14, 2016) + +- Fixing issue with UMD ([#485](https://github.com/axios/axios/issues/485)) + +### 0.15.0 (Oct 10, 2016) + +- Adding cancellation support ([#452](https://github.com/axios/axios/pull/452)) +- Moving default adapter to global defaults ([#437](https://github.com/axios/axios/pull/437)) +- Fixing issue with `file` URI scheme ([#440](https://github.com/axios/axios/pull/440)) +- Fixing issue with `params` objects that have no prototype ([#445](https://github.com/axios/axios/pull/445)) + +### 0.14.0 (Aug 27, 2016) + +- **BREAKING** Updating TypeScript definitions ([#419](https://github.com/axios/axios/pull/419)) +- **BREAKING** Replacing `agent` option with `httpAgent` and `httpsAgent` ([#387](https://github.com/axios/axios/pull/387)) +- **BREAKING** Splitting `progress` event handlers into `onUploadProgress` and `onDownloadProgress` ([#423](https://github.com/axios/axios/pull/423)) +- Adding support for `http_proxy` and `https_proxy` environment variables ([#366](https://github.com/axios/axios/pull/366)) +- Fixing issue with `auth` config option and `Authorization` header ([#397](https://github.com/axios/axios/pull/397)) +- Don't set XSRF header if `xsrfCookieName` is `null` ([#406](https://github.com/axios/axios/pull/406)) + +### 0.13.1 (Jul 16, 2016) + +- Fixing issue with response data not being transformed on error ([#378](https://github.com/axios/axios/issues/378)) + +### 0.13.0 (Jul 13, 2016) + +- **BREAKING** Improved error handling ([#345](https://github.com/axios/axios/pull/345)) +- **BREAKING** Response transformer now invoked in dispatcher not adapter ([10eb238](https://github.com/axios/axios/commit/10eb23865101f9347570552c04e9d6211376e25e)) +- **BREAKING** Request adapters now return a `Promise` ([157efd5](https://github.com/axios/axios/commit/157efd5615890301824e3121cc6c9d2f9b21f94a)) +- Fixing issue with `withCredentials` not being overwritten ([#343](https://github.com/axios/axios/issues/343)) +- Fixing regression with request transformer being called before request interceptor ([#352](https://github.com/axios/axios/issues/352)) +- Fixing custom instance defaults ([#341](https://github.com/axios/axios/issues/341)) +- Fixing instances created from `axios.create` to have same API as default axios ([#217](https://github.com/axios/axios/issues/217)) + +### 0.12.0 (May 31, 2016) + +- Adding support for `URLSearchParams` ([#317](https://github.com/axios/axios/pull/317)) +- Adding `maxRedirects` option ([#307](https://github.com/axios/axios/pull/307)) + +### 0.11.1 (May 17, 2016) + +- Fixing IE CORS support ([#313](https://github.com/axios/axios/pull/313)) +- Fixing detection of `FormData` ([#325](https://github.com/axios/axios/pull/325)) +- Adding `Axios` class to exports ([#321](https://github.com/axios/axios/pull/321)) + +### 0.11.0 (Apr 26, 2016) + +- Adding support for Stream with HTTP adapter ([#296](https://github.com/axios/axios/pull/296)) +- Adding support for custom HTTP status code error ranges ([#308](https://github.com/axios/axios/pull/308)) +- Fixing issue with ArrayBuffer ([#299](https://github.com/axios/axios/pull/299)) + +### 0.10.0 (Apr 20, 2016) + +- Fixing issue with some requests sending `undefined` instead of `null` ([#250](https://github.com/axios/axios/pull/250)) +- Fixing basic auth for HTTP adapter ([#252](https://github.com/axios/axios/pull/252)) +- Fixing request timeout for XHR adapter ([#227](https://github.com/axios/axios/pull/227)) +- Fixing IE8 support by using `onreadystatechange` instead of `onload` ([#249](https://github.com/axios/axios/pull/249)) +- Fixing IE9 cross domain requests ([#251](https://github.com/axios/axios/pull/251)) +- Adding `maxContentLength` option ([#275](https://github.com/axios/axios/pull/275)) +- Fixing XHR support for WebWorker environment ([#279](https://github.com/axios/axios/pull/279)) +- Adding request instance to response ([#200](https://github.com/axios/axios/pull/200)) + +### 0.9.1 (Jan 24, 2016) + +- Improving handling of request timeout in node ([#124](https://github.com/axios/axios/issues/124)) +- Fixing network errors not rejecting ([#205](https://github.com/axios/axios/pull/205)) +- Fixing issue with IE rejecting on HTTP 204 ([#201](https://github.com/axios/axios/issues/201)) +- Fixing host/port when following redirects ([#198](https://github.com/axios/axios/pull/198)) + +### 0.9.0 (Jan 18, 2016) + +- Adding support for custom adapters +- Fixing Content-Type header being removed when data is false ([#195](https://github.com/axios/axios/pull/195)) +- Improving XDomainRequest implementation ([#185](https://github.com/axios/axios/pull/185)) +- Improving config merging and order of precedence ([#183](https://github.com/axios/axios/pull/183)) +- Fixing XDomainRequest support for only <= IE9 ([#182](https://github.com/axios/axios/pull/182)) + +### 0.8.1 (Dec 14, 2015) + +- Adding support for passing XSRF token for cross domain requests when using `withCredentials` ([#168](https://github.com/axios/axios/pull/168)) +- Fixing error with format of basic auth header ([#178](https://github.com/axios/axios/pull/173)) +- Fixing error with JSON payloads throwing `InvalidStateError` in some cases ([#174](https://github.com/axios/axios/pull/174)) + +### 0.8.0 (Dec 11, 2015) + +- Adding support for creating instances of axios ([#123](https://github.com/axios/axios/pull/123)) +- Fixing http adapter to use `Buffer` instead of `String` in case of `responseType === 'arraybuffer'` ([#128](https://github.com/axios/axios/pull/128)) +- Adding support for using custom parameter serializer with `paramsSerializer` option ([#121](https://github.com/axios/axios/pull/121)) +- Fixing issue in IE8 caused by `forEach` on `arguments` ([#127](https://github.com/axios/axios/pull/127)) +- Adding support for following redirects in node ([#146](https://github.com/axios/axios/pull/146)) +- Adding support for transparent decompression if `content-encoding` is set ([#149](https://github.com/axios/axios/pull/149)) +- Adding support for transparent XDomainRequest to handle cross domain requests in IE9 ([#140](https://github.com/axios/axios/pull/140)) +- Adding support for HTTP basic auth via Authorization header ([#167](https://github.com/axios/axios/pull/167)) +- Adding support for baseURL option ([#160](https://github.com/axios/axios/pull/160)) + +### 0.7.0 (Sep 29, 2015) + +- Fixing issue with minified bundle in IE8 ([#87](https://github.com/axios/axios/pull/87)) +- Adding support for passing agent in node ([#102](https://github.com/axios/axios/pull/102)) +- Adding support for returning result from `axios.spread` for chaining ([#106](https://github.com/axios/axios/pull/106)) +- Fixing typescript definition ([#105](https://github.com/axios/axios/pull/105)) +- Fixing default timeout config for node ([#112](https://github.com/axios/axios/pull/112)) +- Adding support for use in web workers, and react-native ([#70](https://github.com/axios/axios/issue/70)), ([#98](https://github.com/axios/axios/pull/98)) +- Adding support for fetch like API `axios(url[, config])` ([#116](https://github.com/axios/axios/issues/116)) + +### 0.6.0 (Sep 21, 2015) + +- Removing deprecated success/error aliases +- Fixing issue with array params not being properly encoded ([#49](https://github.com/axios/axios/pull/49)) +- Fixing issue with User-Agent getting overridden ([#69](https://github.com/axios/axios/issues/69)) +- Adding support for timeout config ([#56](https://github.com/axios/axios/issues/56)) +- Removing es6-promise dependency +- Fixing issue preventing `length` to be used as a parameter ([#91](https://github.com/axios/axios/pull/91)) +- Fixing issue with IE8 ([#85](https://github.com/axios/axios/pull/85)) +- Converting build to UMD + +### 0.5.4 (Apr 08, 2015) + +- Fixing issue with FormData not being sent ([#53](https://github.com/axios/axios/issues/53)) + +### 0.5.3 (Apr 07, 2015) + +- Using JSON.parse unconditionally when transforming response string ([#55](https://github.com/axios/axios/issues/55)) + +### 0.5.2 (Mar 13, 2015) + +- Adding support for `statusText` in response ([#46](https://github.com/axios/axios/issues/46)) + +### 0.5.1 (Mar 10, 2015) + +- Fixing issue using strict mode ([#45](https://github.com/axios/axios/issues/45)) +- Fixing issue with standalone build ([#47](https://github.com/axios/axios/issues/47)) + +### 0.5.0 (Jan 23, 2015) + +- Adding support for intercepetors ([#14](https://github.com/axios/axios/issues/14)) +- Updating es6-promise dependency + +### 0.4.2 (Dec 10, 2014) + +- Fixing issue with `Content-Type` when using `FormData` ([#22](https://github.com/axios/axios/issues/22)) +- Adding support for TypeScript ([#25](https://github.com/axios/axios/issues/25)) +- Fixing issue with standalone build ([#29](https://github.com/axios/axios/issues/29)) +- Fixing issue with verbs needing to be capitalized in some browsers ([#30](https://github.com/axios/axios/issues/30)) + +### 0.4.1 (Oct 15, 2014) + +- Adding error handling to request for node.js ([#18](https://github.com/axios/axios/issues/18)) + +### 0.4.0 (Oct 03, 2014) + +- Adding support for `ArrayBuffer` and `ArrayBufferView` ([#10](https://github.com/axios/axios/issues/10)) +- Adding support for utf-8 for node.js ([#13](https://github.com/axios/axios/issues/13)) +- Adding support for SSL for node.js ([#12](https://github.com/axios/axios/issues/12)) +- Fixing incorrect `Content-Type` header ([#9](https://github.com/axios/axios/issues/9)) +- Adding standalone build without bundled es6-promise ([#11](https://github.com/axios/axios/issues/11)) +- Deprecating `success`/`error` in favor of `then`/`catch` + +### 0.3.1 (Sep 16, 2014) + +- Fixing missing post body when using node.js ([#3](https://github.com/axios/axios/issues/3)) + +### 0.3.0 (Sep 16, 2014) + +- Fixing `success` and `error` to properly receive response data as individual arguments ([#8](https://github.com/axios/axios/issues/8)) +- Updating `then` and `catch` to receive response data as a single object ([#6](https://github.com/axios/axios/issues/6)) +- Fixing issue with `all` not working ([#7](https://github.com/axios/axios/issues/7)) + +### 0.2.2 (Sep 14, 2014) + +- Fixing bundling with browserify ([#4](https://github.com/axios/axios/issues/4)) + +### 0.2.1 (Sep 12, 2014) + +- Fixing build problem causing ridiculous file sizes + +### 0.2.0 (Sep 12, 2014) + +- Adding support for `all` and `spread` +- Adding support for node.js ([#1](https://github.com/axios/axios/issues/1)) + +### 0.1.0 (Aug 29, 2014) + +- Initial release diff --git a/node_modules/axios/LICENSE b/node_modules/axios/LICENSE new file mode 100644 index 00000000..d36c80ef --- /dev/null +++ b/node_modules/axios/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2014-present Matt Zabriskie + +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. diff --git a/node_modules/axios/README.md b/node_modules/axios/README.md new file mode 100755 index 00000000..66906d85 --- /dev/null +++ b/node_modules/axios/README.md @@ -0,0 +1,991 @@ +# axios + +[![npm version](https://img.shields.io/npm/v/axios.svg?style=flat-square)](https://www.npmjs.org/package/axios) +[![CDNJS](https://img.shields.io/cdnjs/v/axios.svg?style=flat-square)](https://cdnjs.com/libraries/axios) +![Build status](https://github.com/axios/axios/actions/workflows/ci.yml/badge.svg) +[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/axios/axios) +[![code coverage](https://img.shields.io/coveralls/mzabriskie/axios.svg?style=flat-square)](https://coveralls.io/r/mzabriskie/axios) +[![install size](https://packagephobia.now.sh/badge?p=axios)](https://packagephobia.now.sh/result?p=axios) +[![npm downloads](https://img.shields.io/npm/dm/axios.svg?style=flat-square)](http://npm-stat.com/charts.html?package=axios) +[![gitter chat](https://img.shields.io/gitter/room/mzabriskie/axios.svg?style=flat-square)](https://gitter.im/mzabriskie/axios) +[![code helpers](https://www.codetriage.com/axios/axios/badges/users.svg)](https://www.codetriage.com/axios/axios) +[![Known Vulnerabilities](https://snyk.io/test/npm/axios/badge.svg)](https://snyk.io/test/npm/axios) + +Promise based HTTP client for the browser and node.js + +> New axios docs website: [click here](https://axios-http.com/) + +## Table of Contents + + - [Features](#features) + - [Browser Support](#browser-support) + - [Installing](#installing) + - [Example](#example) + - [Axios API](#axios-api) + - [Request method aliases](#request-method-aliases) + - [Concurrency 👎](#concurrency-deprecated) + - [Creating an instance](#creating-an-instance) + - [Instance methods](#instance-methods) + - [Request Config](#request-config) + - [Response Schema](#response-schema) + - [Config Defaults](#config-defaults) + - [Global axios defaults](#global-axios-defaults) + - [Custom instance defaults](#custom-instance-defaults) + - [Config order of precedence](#config-order-of-precedence) + - [Interceptors](#interceptors) + - [Multiple Interceptors](#multiple-interceptors) + - [Handling Errors](#handling-errors) + - [Cancellation](#cancellation) + - [AbortController](#abortcontroller) + - [CancelToken 👎](#canceltoken-deprecated) + - [Using application/x-www-form-urlencoded format](#using-applicationx-www-form-urlencoded-format) + - [Browser](#browser) + - [Node.js](#nodejs) + - [Query string](#query-string) + - [Form data](#form-data) + - [Automatic serialization](#-automatic-serialization) + - [Manual FormData passing](#manual-formdata-passing) + - [Semver](#semver) + - [Promises](#promises) + - [TypeScript](#typescript) + - [Resources](#resources) + - [Credits](#credits) + - [License](#license) + +## Features + +- Make [XMLHttpRequests](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) from the browser +- Make [http](http://nodejs.org/api/http.html) requests from node.js +- Supports the [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) API +- Intercept request and response +- Transform request and response data +- Cancel requests +- Automatic transforms for JSON data +- Client side support for protecting against [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery) + +## Browser Support + +![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | +--- | --- | --- | --- | --- | --- | +Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | 11 ✔ | + +[![Browser Matrix](https://saucelabs.com/open_sauce/build_matrix/axios.svg)](https://saucelabs.com/u/axios) + +## Installing + +Using npm: + +```bash +$ npm install axios +``` + +Using bower: + +```bash +$ bower install axios +``` + +Using yarn: + +```bash +$ yarn add axios +``` + +Using jsDelivr CDN: + +```html + +``` + +Using unpkg CDN: + +```html + +``` + +## Example + +### note: CommonJS usage +In order to gain the TypeScript typings (for intellisense / autocomplete) while using CommonJS imports with `require()` use the following approach: + +```js +const axios = require('axios').default; + +// axios. will now provide autocomplete and parameter typings +``` + +Performing a `GET` request + +```js +const axios = require('axios').default; + +// Make a request for a user with a given ID +axios.get('/user?ID=12345') + .then(function (response) { + // handle success + console.log(response); + }) + .catch(function (error) { + // handle error + console.log(error); + }) + .then(function () { + // always executed + }); + +// Optionally the request above could also be done as +axios.get('/user', { + params: { + ID: 12345 + } + }) + .then(function (response) { + console.log(response); + }) + .catch(function (error) { + console.log(error); + }) + .then(function () { + // always executed + }); + +// Want to use async/await? Add the `async` keyword to your outer function/method. +async function getUser() { + try { + const response = await axios.get('/user?ID=12345'); + console.log(response); + } catch (error) { + console.error(error); + } +} +``` + +> **NOTE:** `async/await` is part of ECMAScript 2017 and is not supported in Internet +> Explorer and older browsers, so use with caution. + +Performing a `POST` request + +```js +axios.post('/user', { + firstName: 'Fred', + lastName: 'Flintstone' + }) + .then(function (response) { + console.log(response); + }) + .catch(function (error) { + console.log(error); + }); +``` + +Performing multiple concurrent requests + +```js +function getUserAccount() { + return axios.get('/user/12345'); +} + +function getUserPermissions() { + return axios.get('/user/12345/permissions'); +} + +Promise.all([getUserAccount(), getUserPermissions()]) + .then(function (results) { + const acct = results[0]; + const perm = results[1]; + }); +``` + +## axios API + +Requests can be made by passing the relevant config to `axios`. + +##### axios(config) + +```js +// Send a POST request +axios({ + method: 'post', + url: '/user/12345', + data: { + firstName: 'Fred', + lastName: 'Flintstone' + } +}); +``` + +```js +// GET request for remote image in node.js +axios({ + method: 'get', + url: 'http://bit.ly/2mTM3nY', + responseType: 'stream' +}) + .then(function (response) { + response.data.pipe(fs.createWriteStream('ada_lovelace.jpg')) + }); +``` + +##### axios(url[, config]) + +```js +// Send a GET request (default method) +axios('/user/12345'); +``` + +### Request method aliases + +For convenience, aliases have been provided for all common request methods. + +##### axios.request(config) +##### axios.get(url[, config]) +##### axios.delete(url[, config]) +##### axios.head(url[, config]) +##### axios.options(url[, config]) +##### axios.post(url[, data[, config]]) +##### axios.put(url[, data[, config]]) +##### axios.patch(url[, data[, config]]) + +###### NOTE +When using the alias methods `url`, `method`, and `data` properties don't need to be specified in config. + +### Concurrency (Deprecated) +Please use `Promise.all` to replace the below functions. + +Helper functions for dealing with concurrent requests. + +axios.all(iterable) +axios.spread(callback) + +### Creating an instance + +You can create a new instance of axios with a custom config. + +##### axios.create([config]) + +```js +const instance = axios.create({ + baseURL: 'https://some-domain.com/api/', + timeout: 1000, + headers: {'X-Custom-Header': 'foobar'} +}); +``` + +### Instance methods + +The available instance methods are listed below. The specified config will be merged with the instance config. + +##### axios#request(config) +##### axios#get(url[, config]) +##### axios#delete(url[, config]) +##### axios#head(url[, config]) +##### axios#options(url[, config]) +##### axios#post(url[, data[, config]]) +##### axios#put(url[, data[, config]]) +##### axios#patch(url[, data[, config]]) +##### axios#getUri([config]) + +## Request Config + +These are the available config options for making requests. Only the `url` is required. Requests will default to `GET` if `method` is not specified. + +```js +{ + // `url` is the server URL that will be used for the request + url: '/user', + + // `method` is the request method to be used when making the request + method: 'get', // default + + // `baseURL` will be prepended to `url` unless `url` is absolute. + // It can be convenient to set `baseURL` for an instance of axios to pass relative URLs + // to methods of that instance. + baseURL: 'https://some-domain.com/api/', + + // `transformRequest` allows changes to the request data before it is sent to the server + // This is only applicable for request methods 'PUT', 'POST', 'PATCH' and 'DELETE' + // The last function in the array must return a string or an instance of Buffer, ArrayBuffer, + // FormData or Stream + // You may modify the headers object. + transformRequest: [function (data, headers) { + // Do whatever you want to transform the data + + return data; + }], + + // `transformResponse` allows changes to the response data to be made before + // it is passed to then/catch + transformResponse: [function (data) { + // Do whatever you want to transform the data + + return data; + }], + + // `headers` are custom headers to be sent + headers: {'X-Requested-With': 'XMLHttpRequest'}, + + // `params` are the URL parameters to be sent with the request + // Must be a plain object or a URLSearchParams object + params: { + ID: 12345 + }, + + // `paramsSerializer` is an optional function in charge of serializing `params` + // (e.g. https://www.npmjs.com/package/qs, http://api.jquery.com/jquery.param/) + paramsSerializer: function (params) { + return Qs.stringify(params, {arrayFormat: 'brackets'}) + }, + + // `data` is the data to be sent as the request body + // Only applicable for request methods 'PUT', 'POST', 'DELETE , and 'PATCH' + // When no `transformRequest` is set, must be of one of the following types: + // - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams + // - Browser only: FormData, File, Blob + // - Node only: Stream, Buffer + data: { + firstName: 'Fred' + }, + + // syntax alternative to send data into the body + // method post + // only the value is sent, not the key + data: 'Country=Brasil&City=Belo Horizonte', + + // `timeout` specifies the number of milliseconds before the request times out. + // If the request takes longer than `timeout`, the request will be aborted. + timeout: 1000, // default is `0` (no timeout) + + // `withCredentials` indicates whether or not cross-site Access-Control requests + // should be made using credentials + withCredentials: false, // default + + // `adapter` allows custom handling of requests which makes testing easier. + // Return a promise and supply a valid response (see lib/adapters/README.md). + adapter: function (config) { + /* ... */ + }, + + // `auth` indicates that HTTP Basic auth should be used, and supplies credentials. + // This will set an `Authorization` header, overwriting any existing + // `Authorization` custom headers you have set using `headers`. + // Please note that only HTTP Basic auth is configurable through this parameter. + // For Bearer tokens and such, use `Authorization` custom headers instead. + auth: { + username: 'janedoe', + password: 's00pers3cret' + }, + + // `responseType` indicates the type of data that the server will respond with + // options are: 'arraybuffer', 'document', 'json', 'text', 'stream' + // browser only: 'blob' + responseType: 'json', // default + + // `responseEncoding` indicates encoding to use for decoding responses (Node.js only) + // Note: Ignored for `responseType` of 'stream' or client-side requests + responseEncoding: 'utf8', // default + + // `xsrfCookieName` is the name of the cookie to use as a value for xsrf token + xsrfCookieName: 'XSRF-TOKEN', // default + + // `xsrfHeaderName` is the name of the http header that carries the xsrf token value + xsrfHeaderName: 'X-XSRF-TOKEN', // default + + // `onUploadProgress` allows handling of progress events for uploads + // browser only + onUploadProgress: function (progressEvent) { + // Do whatever you want with the native progress event + }, + + // `onDownloadProgress` allows handling of progress events for downloads + // browser only + onDownloadProgress: function (progressEvent) { + // Do whatever you want with the native progress event + }, + + // `maxContentLength` defines the max size of the http response content in bytes allowed in node.js + maxContentLength: 2000, + + // `maxBodyLength` (Node only option) defines the max size of the http request content in bytes allowed + maxBodyLength: 2000, + + // `validateStatus` defines whether to resolve or reject the promise for a given + // HTTP response status code. If `validateStatus` returns `true` (or is set to `null` + // or `undefined`), the promise will be resolved; otherwise, the promise will be + // rejected. + validateStatus: function (status) { + return status >= 200 && status < 300; // default + }, + + // `maxRedirects` defines the maximum number of redirects to follow in node.js. + // If set to 0, no redirects will be followed. + maxRedirects: 21, // default + + // `beforeRedirect` defines a function that will be called before redirect. + // Use this to adjust the request options upon redirecting, + // to inspect the latest response headers, + // or to cancel the request by throwing an error + // If maxRedirects is set to 0, `beforeRedirect` is not used. + beforeRedirect: (options, { headers }) => { + if (options.hostname === "example.com") { + options.auth = "user:password"; + } + }; + + // `socketPath` defines a UNIX Socket to be used in node.js. + // e.g. '/var/run/docker.sock' to send requests to the docker daemon. + // Only either `socketPath` or `proxy` can be specified. + // If both are specified, `socketPath` is used. + socketPath: null, // default + + // `httpAgent` and `httpsAgent` define a custom agent to be used when performing http + // and https requests, respectively, in node.js. This allows options to be added like + // `keepAlive` that are not enabled by default. + httpAgent: new http.Agent({ keepAlive: true }), + httpsAgent: new https.Agent({ keepAlive: true }), + + // `proxy` defines the hostname, port, and protocol of the proxy server. + // You can also define your proxy using the conventional `http_proxy` and + // `https_proxy` environment variables. If you are using environment variables + // for your proxy configuration, you can also define a `no_proxy` environment + // variable as a comma-separated list of domains that should not be proxied. + // Use `false` to disable proxies, ignoring environment variables. + // `auth` indicates that HTTP Basic auth should be used to connect to the proxy, and + // supplies credentials. + // This will set an `Proxy-Authorization` header, overwriting any existing + // `Proxy-Authorization` custom headers you have set using `headers`. + // If the proxy server uses HTTPS, then you must set the protocol to `https`. + proxy: { + protocol: 'https', + host: '127.0.0.1', + port: 9000, + auth: { + username: 'mikeymike', + password: 'rapunz3l' + } + }, + + // `cancelToken` specifies a cancel token that can be used to cancel the request + // (see Cancellation section below for details) + cancelToken: new CancelToken(function (cancel) { + }), + + // an alternative way to cancel Axios requests using AbortController + signal: new AbortController().signal, + + // `decompress` indicates whether or not the response body should be decompressed + // automatically. If set to `true` will also remove the 'content-encoding' header + // from the responses objects of all decompressed responses + // - Node only (XHR cannot turn off decompression) + decompress: true // default + + // `insecureHTTPParser` boolean. + // Indicates where to use an insecure HTTP parser that accepts invalid HTTP headers. + // This may allow interoperability with non-conformant HTTP implementations. + // Using the insecure parser should be avoided. + // see options https://nodejs.org/dist/latest-v12.x/docs/api/http.html#http_http_request_url_options_callback + // see also https://nodejs.org/en/blog/vulnerability/february-2020-security-releases/#strict-http-header-parsing-none + insecureHTTPParser: undefined // default + + // transitional options for backward compatibility that may be removed in the newer versions + transitional: { + // silent JSON parsing mode + // `true` - ignore JSON parsing errors and set response.data to null if parsing failed (old behaviour) + // `false` - throw SyntaxError if JSON parsing failed (Note: responseType must be set to 'json') + silentJSONParsing: true, // default value for the current Axios version + + // try to parse the response string as JSON even if `responseType` is not 'json' + forcedJSONParsing: true, + + // throw ETIMEDOUT error instead of generic ECONNABORTED on request timeouts + clarifyTimeoutError: false, + }, + + env: { + // The FormData class to be used to automatically serialize the payload into a FormData object + FormData: window?.FormData || global?.FormData + } +} +``` + +## Response Schema + +The response for a request contains the following information. + +```js +{ + // `data` is the response that was provided by the server + data: {}, + + // `status` is the HTTP status code from the server response + status: 200, + + // `statusText` is the HTTP status message from the server response + statusText: 'OK', + + // `headers` the HTTP headers that the server responded with + // All header names are lower cased and can be accessed using the bracket notation. + // Example: `response.headers['content-type']` + headers: {}, + + // `config` is the config that was provided to `axios` for the request + config: {}, + + // `request` is the request that generated this response + // It is the last ClientRequest instance in node.js (in redirects) + // and an XMLHttpRequest instance in the browser + request: {} +} +``` + +When using `then`, you will receive the response as follows: + +```js +axios.get('/user/12345') + .then(function (response) { + console.log(response.data); + console.log(response.status); + console.log(response.statusText); + console.log(response.headers); + console.log(response.config); + }); +``` + +When using `catch`, or passing a [rejection callback](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then) as second parameter of `then`, the response will be available through the `error` object as explained in the [Handling Errors](#handling-errors) section. + +## Config Defaults + +You can specify config defaults that will be applied to every request. + +### Global axios defaults + +```js +axios.defaults.baseURL = 'https://api.example.com'; + +// Important: If axios is used with multiple domains, the AUTH_TOKEN will be sent to all of them. +// See below for an example using Custom instance defaults instead. +axios.defaults.headers.common['Authorization'] = AUTH_TOKEN; + +axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; +``` + +### Custom instance defaults + +```js +// Set config defaults when creating the instance +const instance = axios.create({ + baseURL: 'https://api.example.com' +}); + +// Alter defaults after instance has been created +instance.defaults.headers.common['Authorization'] = AUTH_TOKEN; +``` + +### Config order of precedence + +Config will be merged with an order of precedence. The order is library defaults found in [lib/defaults.js](https://github.com/axios/axios/blob/master/lib/defaults.js#L28), then `defaults` property of the instance, and finally `config` argument for the request. The latter will take precedence over the former. Here's an example. + +```js +// Create an instance using the config defaults provided by the library +// At this point the timeout config value is `0` as is the default for the library +const instance = axios.create(); + +// Override timeout default for the library +// Now all requests using this instance will wait 2.5 seconds before timing out +instance.defaults.timeout = 2500; + +// Override timeout for this request as it's known to take a long time +instance.get('/longRequest', { + timeout: 5000 +}); +``` + +## Interceptors + +You can intercept requests or responses before they are handled by `then` or `catch`. + +```js +// Add a request interceptor +axios.interceptors.request.use(function (config) { + // Do something before request is sent + return config; + }, function (error) { + // Do something with request error + return Promise.reject(error); + }); + +// Add a response interceptor +axios.interceptors.response.use(function (response) { + // Any status code that lie within the range of 2xx cause this function to trigger + // Do something with response data + return response; + }, function (error) { + // Any status codes that falls outside the range of 2xx cause this function to trigger + // Do something with response error + return Promise.reject(error); + }); +``` + +If you need to remove an interceptor later you can. + +```js +const myInterceptor = axios.interceptors.request.use(function () {/*...*/}); +axios.interceptors.request.eject(myInterceptor); +``` + +You can add interceptors to a custom instance of axios. + +```js +const instance = axios.create(); +instance.interceptors.request.use(function () {/*...*/}); +``` + +When you add request interceptors, they are presumed to be asynchronous by default. This can cause a delay +in the execution of your axios request when the main thread is blocked (a promise is created under the hood for +the interceptor and your request gets put on the bottom of the call stack). If your request interceptors are synchronous you can add a flag +to the options object that will tell axios to run the code synchronously and avoid any delays in request execution. + +```js +axios.interceptors.request.use(function (config) { + config.headers.test = 'I am only a header!'; + return config; +}, null, { synchronous: true }); +``` + +If you want to execute a particular interceptor based on a runtime check, +you can add a `runWhen` function to the options object. The interceptor will not be executed **if and only if** the return +of `runWhen` is `false`. The function will be called with the config +object (don't forget that you can bind your own arguments to it as well.) This can be handy when you have an +asynchronous request interceptor that only needs to run at certain times. + +```js +function onGetCall(config) { + return config.method === 'get'; +} +axios.interceptors.request.use(function (config) { + config.headers.test = 'special get headers'; + return config; +}, null, { runWhen: onGetCall }); +``` + +### Multiple Interceptors + +Given you add multiple response interceptors +and when the response was fulfilled +- then each interceptor is executed +- then they are executed in the order they were added +- then only the last interceptor's result is returned +- then every interceptor receives the result of it's predecessor +- and when the fulfillment-interceptor throws + - then the following fulfillment-interceptor is not called + - then the following rejection-interceptor is called + - once caught, another following fulfill-interceptor is called again (just like in a promise chain). + +Read [the interceptor tests](./test/specs/interceptors.spec.js) for seeing all this in code. + +## Handling Errors + +```js +axios.get('/user/12345') + .catch(function (error) { + if (error.response) { + // The request was made and the server responded with a status code + // that falls out of the range of 2xx + console.log(error.response.data); + console.log(error.response.status); + console.log(error.response.headers); + } else if (error.request) { + // The request was made but no response was received + // `error.request` is an instance of XMLHttpRequest in the browser and an instance of + // http.ClientRequest in node.js + console.log(error.request); + } else { + // Something happened in setting up the request that triggered an Error + console.log('Error', error.message); + } + console.log(error.config); + }); +``` + +Using the `validateStatus` config option, you can define HTTP code(s) that should throw an error. + +```js +axios.get('/user/12345', { + validateStatus: function (status) { + return status < 500; // Resolve only if the status code is less than 500 + } +}) +``` + +Using `toJSON` you get an object with more information about the HTTP error. + +```js +axios.get('/user/12345') + .catch(function (error) { + console.log(error.toJSON()); + }); +``` + +## Cancellation + +### AbortController + +Starting from `v0.22.0` Axios supports AbortController to cancel requests in fetch API way: + +```js +const controller = new AbortController(); + +axios.get('/foo/bar', { + signal: controller.signal +}).then(function(response) { + //... +}); +// cancel the request +controller.abort() +``` + +### CancelToken `👎deprecated` + +You can also cancel a request using a *CancelToken*. + +> The axios cancel token API is based on the withdrawn [cancelable promises proposal](https://github.com/tc39/proposal-cancelable-promises). + +> This API is deprecated since v0.22.0 and shouldn't be used in new projects + +You can create a cancel token using the `CancelToken.source` factory as shown below: + +```js +const CancelToken = axios.CancelToken; +const source = CancelToken.source(); + +axios.get('/user/12345', { + cancelToken: source.token +}).catch(function (thrown) { + if (axios.isCancel(thrown)) { + console.log('Request canceled', thrown.message); + } else { + // handle error + } +}); + +axios.post('/user/12345', { + name: 'new name' +}, { + cancelToken: source.token +}) + +// cancel the request (the message parameter is optional) +source.cancel('Operation canceled by the user.'); +``` + +You can also create a cancel token by passing an executor function to the `CancelToken` constructor: + +```js +const CancelToken = axios.CancelToken; +let cancel; + +axios.get('/user/12345', { + cancelToken: new CancelToken(function executor(c) { + // An executor function receives a cancel function as a parameter + cancel = c; + }) +}); + +// cancel the request +cancel(); +``` + +> Note: you can cancel several requests with the same cancel token/abort controller. +> If a cancellation token is already cancelled at the moment of starting an Axios request, then the request is cancelled immediately, without any attempts to make real request. + +> During the transition period, you can use both cancellation APIs, even for the same request: + +## Using application/x-www-form-urlencoded format + +By default, axios serializes JavaScript objects to `JSON`. To send data in the `application/x-www-form-urlencoded` format instead, you can use one of the following options. + +### Browser + +In a browser, you can use the [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) API as follows: + +```js +const params = new URLSearchParams(); +params.append('param1', 'value1'); +params.append('param2', 'value2'); +axios.post('/foo', params); +``` + +> Note that `URLSearchParams` is not supported by all browsers (see [caniuse.com](http://www.caniuse.com/#feat=urlsearchparams)), but there is a [polyfill](https://github.com/WebReflection/url-search-params) available (make sure to polyfill the global environment). + +Alternatively, you can encode data using the [`qs`](https://github.com/ljharb/qs) library: + +```js +const qs = require('qs'); +axios.post('/foo', qs.stringify({ 'bar': 123 })); +``` + +Or in another way (ES6), + +```js +import qs from 'qs'; +const data = { 'bar': 123 }; +const options = { + method: 'POST', + headers: { 'content-type': 'application/x-www-form-urlencoded' }, + data: qs.stringify(data), + url, +}; +axios(options); +``` + +### Node.js + +#### Query string + +In node.js, you can use the [`querystring`](https://nodejs.org/api/querystring.html) module as follows: + +```js +const querystring = require('querystring'); +axios.post('http://something.com/', querystring.stringify({ foo: 'bar' })); +``` + +or ['URLSearchParams'](https://nodejs.org/api/url.html#url_class_urlsearchparams) from ['url module'](https://nodejs.org/api/url.html) as follows: + +```js +const url = require('url'); +const params = new url.URLSearchParams({ foo: 'bar' }); +axios.post('http://something.com/', params.toString()); +``` + +You can also use the [`qs`](https://github.com/ljharb/qs) library. + +> NOTE: +> The `qs` library is preferable if you need to stringify nested objects, as the `querystring` method has [known issues](https://github.com/nodejs/node-v0.x-archive/issues/1665) with that use case. + +#### Form data + +##### 🆕 Automatic serialization + +Starting from `v0.27.0`, Axios supports automatic object serialization to a FormData object if the request `Content-Type` +header is set to `multipart/form-data`. + +The following request will submit the data in a FormData format (Browser & Node.js): + +```js +import axios from 'axios'; + +axios.post('https://httpbin.org/post', {x: 1}, { + headers: { + 'Content-Type': 'multipart/form-data' + } +}).then(({data})=> console.log(data)); +``` + +In the `node.js` build, the ([`form-data`](https://github.com/form-data/form-data)) polyfill is used by default. + +You can overload the FormData class by setting the `env.FormData` config variable, +but you probably won't need it in most cases: + +```js +const axios= require('axios'); +var FormData = require('form-data'); + +axios.post('https://httpbin.org/post', {x: 1, buf: new Buffer(10)}, { + headers: { + 'Content-Type': 'multipart/form-data' + } +}).then(({data})=> console.log(data)); +``` + +Axios FormData serializer supports some special endings to perform the following operations: + +- `{}` - serialize the value with JSON.stringify +- `[]` - unwrap the array like object as separate fields with the same key + +```js +const axios= require('axios'); + +axios.post('https://httpbin.org/post', { + 'myObj{}': {x: 1, s: "foo"}, + 'files[]': document.querySelector('#fileInput').files +}, { + headers: { + 'Content-Type': 'multipart/form-data' + } +}).then(({data})=> console.log(data)); +``` + +Axios supports the following shortcut methods: `postForm`, `putForm`, `patchForm` +which are just the corresponding http methods with a header preset: `Content-Type`: `multipart/form-data`. + +FileList object can be passed directly: + +```js +await axios.postForm('https://httpbin.org/post', document.querySelector('#fileInput').files) +``` + +All files will be sent with the same field names: `files[]`; + +##### Manual FormData passing + +In node.js, you can use the [`form-data`](https://github.com/form-data/form-data) library as follows: + +```js +const FormData = require('form-data'); + +const form = new FormData(); +form.append('my_field', 'my value'); +form.append('my_buffer', new Buffer(10)); +form.append('my_file', fs.createReadStream('/foo/bar.jpg')); + +axios.post('https://example.com', form) +``` + +## Semver + +Until axios reaches a `1.0` release, breaking changes will be released with a new minor version. For example `0.5.1`, and `0.5.4` will have the same API, but `0.6.0` will have breaking changes. + +## Promises + +axios depends on a native ES6 Promise implementation to be [supported](http://caniuse.com/promises). +If your environment doesn't support ES6 Promises, you can [polyfill](https://github.com/jakearchibald/es6-promise). + +## TypeScript + +axios includes [TypeScript](http://typescriptlang.org) definitions and a type guard for axios errors. + +```typescript +let user: User = null; +try { + const { data } = await axios.get('/user?ID=12345'); + user = data.userDetails; +} catch (error) { + if (axios.isAxiosError(error)) { + handleAxiosError(error); + } else { + handleUnexpectedError(error); + } +} +``` + +## Online one-click setup + +You can use Gitpod an online IDE(which is free for Open Source) for contributing or running the examples online. + +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/axios/axios/blob/master/examples/server.js) + + +## Resources + +* [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md) +* [Upgrade Guide](https://github.com/axios/axios/blob/master/UPGRADE_GUIDE.md) +* [Ecosystem](https://github.com/axios/axios/blob/master/ECOSYSTEM.md) +* [Contributing Guide](https://github.com/axios/axios/blob/master/CONTRIBUTING.md) +* [Code of Conduct](https://github.com/axios/axios/blob/master/CODE_OF_CONDUCT.md) + +## Credits + +axios is heavily inspired by the [$http service](https://docs.angularjs.org/api/ng/service/$http) provided in [AngularJS](https://angularjs.org/). Ultimately axios is an effort to provide a standalone `$http`-like service for use outside of AngularJS. + +## License + +[MIT](LICENSE) diff --git a/node_modules/axios/SECURITY.md b/node_modules/axios/SECURITY.md new file mode 100644 index 00000000..353df9a2 --- /dev/null +++ b/node_modules/axios/SECURITY.md @@ -0,0 +1,5 @@ +# Security Policy + +## Reporting a Vulnerability + +Please report security issues to jasonsaayman@gmail.com diff --git a/node_modules/axios/UPGRADE_GUIDE.md b/node_modules/axios/UPGRADE_GUIDE.md new file mode 100644 index 00000000..fdcff1a6 --- /dev/null +++ b/node_modules/axios/UPGRADE_GUIDE.md @@ -0,0 +1,168 @@ +# Upgrade Guide + +### 0.18.x -> 0.19.0 + +#### HTTPS Proxies + +Routing through an https proxy now requires setting the `protocol` attribute of the proxy configuration to `https` + +### 0.15.x -> 0.16.0 + +#### `Promise` Type Declarations + +The `Promise` type declarations have been removed from the axios typings in favor of the built-in type declarations. If you use axios in a TypeScript project that targets `ES5`, please make sure to include the `es2015.promise` lib. Please see [this post](https://blog.mariusschulz.com/2016/11/25/typescript-2-0-built-in-type-declarations) for details. + +### 0.13.x -> 0.14.0 + +#### TypeScript Definitions + +The axios TypeScript definitions have been updated to match the axios API and use the ES2015 module syntax. + +Please use the following `import` statement to import axios in TypeScript: + +```typescript +import axios from 'axios'; + +axios.get('/foo') + .then(response => console.log(response)) + .catch(error => console.log(error)); +``` + +#### `agent` Config Option + +The `agent` config option has been replaced with two new options: `httpAgent` and `httpsAgent`. Please use them instead. + +```js +{ + // Define a custom agent for HTTP + httpAgent: new http.Agent({ keepAlive: true }), + // Define a custom agent for HTTPS + httpsAgent: new https.Agent({ keepAlive: true }) +} +``` + +#### `progress` Config Option + +The `progress` config option has been replaced with the `onUploadProgress` and `onDownloadProgress` options. + +```js +{ + // Define a handler for upload progress events + onUploadProgress: function (progressEvent) { + // ... + }, + + // Define a handler for download progress events + onDownloadProgress: function (progressEvent) { + // ... + } +} +``` + +### 0.12.x -> 0.13.0 + +The `0.13.0` release contains several changes to custom adapters and error handling. + +#### Error Handling + +Previous to this release an error could either be a server response with bad status code or an actual `Error`. With this release Promise will always reject with an `Error`. In the case that a response was received, the `Error` will also include the response. + +```js +axios.get('/user/12345') + .catch((error) => { + console.log(error.message); + console.log(error.code); // Not always specified + console.log(error.config); // The config that was used to make the request + console.log(error.response); // Only available if response was received from the server + }); +``` + +#### Request Adapters + +This release changes a few things about how request adapters work. Please take note if you are using your own custom adapter. + +1. Response transformer is now called outside of adapter. +2. Request adapter returns a `Promise`. + +This means that you no longer need to invoke `transformData` on response data. You will also no longer receive `resolve` and `reject` as arguments in your adapter. + +Previous code: + +```js +function myAdapter(resolve, reject, config) { + var response = { + data: transformData( + responseData, + responseHeaders, + config.transformResponse + ), + status: request.status, + statusText: request.statusText, + headers: responseHeaders + }; + settle(resolve, reject, response); +} +``` + +New code: + +```js +function myAdapter(config) { + return new Promise(function (resolve, reject) { + var response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders + }; + settle(resolve, reject, response); + }); +} +``` + +See the related commits for more details: +- [Response transformers](https://github.com/axios/axios/commit/10eb23865101f9347570552c04e9d6211376e25e) +- [Request adapter Promise](https://github.com/axios/axios/commit/157efd5615890301824e3121cc6c9d2f9b21f94a) + +### 0.5.x -> 0.6.0 + +The `0.6.0` release contains mostly bug fixes, but there are a couple things to be aware of when upgrading. + +#### ES6 Promise Polyfill + +Up until the `0.6.0` release ES6 `Promise` was being polyfilled using [es6-promise](https://github.com/jakearchibald/es6-promise). With this release, the polyfill has been removed, and you will need to supply it yourself if your environment needs it. + +```js +require('es6-promise').polyfill(); +var axios = require('axios'); +``` + +This will polyfill the global environment, and only needs to be done once. + +#### `axios.success`/`axios.error` + +The `success`, and `error` aliases were deprecated in [0.4.0](https://github.com/axios/axios/blob/master/CHANGELOG.md#040-oct-03-2014). As of this release they have been removed entirely. Instead please use `axios.then`, and `axios.catch` respectively. + +```js +axios.get('some/url') + .then(function (res) { + /* ... */ + }) + .catch(function (err) { + /* ... */ + }); +``` + +#### UMD + +Previous versions of axios shipped with an AMD, CommonJS, and Global build. This has all been rolled into a single UMD build. + +```js +// AMD +require(['bower_components/axios/dist/axios'], function (axios) { + /* ... */ +}); + +// CommonJS +var axios = require('axios/dist/axios'); +``` diff --git a/node_modules/axios/index.d.ts b/node_modules/axios/index.d.ts new file mode 100644 index 00000000..0b9e1d35 --- /dev/null +++ b/node_modules/axios/index.d.ts @@ -0,0 +1,254 @@ +// TypeScript Version: 3.0 +export type AxiosRequestHeaders = Record; + +export type AxiosResponseHeaders = Record & { + "set-cookie"?: string[] +}; + +export interface AxiosRequestTransformer { + (data: any, headers?: AxiosRequestHeaders): any; +} + +export interface AxiosResponseTransformer { + (data: any, headers?: AxiosResponseHeaders): any; +} + +export interface AxiosAdapter { + (config: AxiosRequestConfig): AxiosPromise; +} + +export interface AxiosBasicCredentials { + username: string; + password: string; +} + +export interface AxiosProxyConfig { + host: string; + port: number; + auth?: { + username: string; + password: string; + }; + protocol?: string; +} + +export type Method = + | 'get' | 'GET' + | 'delete' | 'DELETE' + | 'head' | 'HEAD' + | 'options' | 'OPTIONS' + | 'post' | 'POST' + | 'put' | 'PUT' + | 'patch' | 'PATCH' + | 'purge' | 'PURGE' + | 'link' | 'LINK' + | 'unlink' | 'UNLINK'; + +export type ResponseType = + | 'arraybuffer' + | 'blob' + | 'document' + | 'json' + | 'text' + | 'stream'; + + export type responseEncoding = + | 'ascii' | 'ASCII' + | 'ansi' | 'ANSI' + | 'binary' | 'BINARY' + | 'base64' | 'BASE64' + | 'base64url' | 'BASE64URL' + | 'hex' | 'HEX' + | 'latin1' | 'LATIN1' + | 'ucs-2' | 'UCS-2' + | 'ucs2' | 'UCS2' + | 'utf-8' | 'UTF-8' + | 'utf8' | 'UTF8' + | 'utf16le' | 'UTF16LE'; + +export interface TransitionalOptions { + silentJSONParsing?: boolean; + forcedJSONParsing?: boolean; + clarifyTimeoutError?: boolean; +} + +export interface AxiosRequestConfig { + url?: string; + method?: Method | string; + baseURL?: string; + transformRequest?: AxiosRequestTransformer | AxiosRequestTransformer[]; + transformResponse?: AxiosResponseTransformer | AxiosResponseTransformer[]; + headers?: AxiosRequestHeaders; + params?: any; + paramsSerializer?: (params: any) => string; + data?: D; + timeout?: number; + timeoutErrorMessage?: string; + withCredentials?: boolean; + adapter?: AxiosAdapter; + auth?: AxiosBasicCredentials; + responseType?: ResponseType; + responseEncoding?: responseEncoding | string; + xsrfCookieName?: string; + xsrfHeaderName?: string; + onUploadProgress?: (progressEvent: any) => void; + onDownloadProgress?: (progressEvent: any) => void; + maxContentLength?: number; + validateStatus?: ((status: number) => boolean) | null; + maxBodyLength?: number; + maxRedirects?: number; + beforeRedirect?: (options: Record, responseDetails: {headers: Record}) => void; + socketPath?: string | null; + httpAgent?: any; + httpsAgent?: any; + proxy?: AxiosProxyConfig | false; + cancelToken?: CancelToken; + decompress?: boolean; + transitional?: TransitionalOptions; + signal?: AbortSignal; + insecureHTTPParser?: boolean; + env?: { + FormData?: new (...args: any[]) => object; + }; +} + +export interface HeadersDefaults { + common: AxiosRequestHeaders; + delete: AxiosRequestHeaders; + get: AxiosRequestHeaders; + head: AxiosRequestHeaders; + post: AxiosRequestHeaders; + put: AxiosRequestHeaders; + patch: AxiosRequestHeaders; + options?: AxiosRequestHeaders; + purge?: AxiosRequestHeaders; + link?: AxiosRequestHeaders; + unlink?: AxiosRequestHeaders; +} + +export interface AxiosDefaults extends Omit, 'headers'> { + headers: HeadersDefaults; +} + +export interface AxiosResponse { + data: T; + status: number; + statusText: string; + headers: AxiosResponseHeaders; + config: AxiosRequestConfig; + request?: any; +} + +export class AxiosError extends Error { + constructor( + message?: string, + code?: string, + config?: AxiosRequestConfig, + request?: any, + response?: AxiosResponse + ); + + config: AxiosRequestConfig; + code?: string; + request?: any; + response?: AxiosResponse; + isAxiosError: boolean; + status?: string; + toJSON: () => object; + static readonly ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS"; + static readonly ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE"; + static readonly ERR_BAD_OPTION = "ERR_BAD_OPTION"; + static readonly ERR_NETWORK = "ERR_NETWORK"; + static readonly ERR_DEPRECATED = "ERR_DEPRECATED"; + static readonly ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE"; + static readonly ERR_BAD_REQUEST = "ERR_BAD_REQUEST"; + static readonly ERR_CANCELED = "ERR_CANCELED"; + static readonly ECONNABORTED = "ECONNABORTED"; + static readonly ETIMEDOUT = "ETIMEDOUT"; +} + +export class CanceledError extends AxiosError { +} + +export interface AxiosPromise extends Promise> { +} + +export interface CancelStatic { + new (message?: string): Cancel; +} + +export interface Cancel { + message: string | undefined; +} + +export interface Canceler { + (message?: string): void; +} + +export interface CancelTokenStatic { + new (executor: (cancel: Canceler) => void): CancelToken; + source(): CancelTokenSource; +} + +export interface CancelToken { + promise: Promise; + reason?: Cancel; + throwIfRequested(): void; +} + +export interface CancelTokenSource { + token: CancelToken; + cancel: Canceler; +} + +export interface AxiosInterceptorOptions { + synchronous?: boolean; + runWhen?: (config: AxiosRequestConfig) => boolean; +} + +export interface AxiosInterceptorManager { + use(onFulfilled?: (value: V) => T | Promise, onRejected?: (error: any) => any, options?: AxiosInterceptorOptions): number; + eject(id: number): void; +} + +export class Axios { + constructor(config?: AxiosRequestConfig); + defaults: AxiosDefaults; + interceptors: { + request: AxiosInterceptorManager; + response: AxiosInterceptorManager; + }; + getUri(config?: AxiosRequestConfig): string; + request, D = any>(config: AxiosRequestConfig): Promise; + get, D = any>(url: string, config?: AxiosRequestConfig): Promise; + delete, D = any>(url: string, config?: AxiosRequestConfig): Promise; + head, D = any>(url: string, config?: AxiosRequestConfig): Promise; + options, D = any>(url: string, config?: AxiosRequestConfig): Promise; + post, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; + put, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; + patch, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; + postForm, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; + putForm, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; + patchForm, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; +} + +export interface AxiosInstance extends Axios { + (config: AxiosRequestConfig): AxiosPromise; + (url: string, config?: AxiosRequestConfig): AxiosPromise; +} + +export interface AxiosStatic extends AxiosInstance { + create(config?: AxiosRequestConfig): AxiosInstance; + Cancel: CancelStatic; + CancelToken: CancelTokenStatic; + Axios: typeof Axios; + readonly VERSION: string; + isCancel(value: any): boolean; + all(values: Array>): Promise; + spread(callback: (...args: T[]) => R): (array: T[]) => R; + isAxiosError(payload: any): payload is AxiosError; +} + +declare const axios: AxiosStatic; + +export default axios; diff --git a/node_modules/axios/index.js b/node_modules/axios/index.js new file mode 100644 index 00000000..79dfd09d --- /dev/null +++ b/node_modules/axios/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/axios'); \ No newline at end of file diff --git a/node_modules/axios/package.json b/node_modules/axios/package.json new file mode 100644 index 00000000..ffd98e6f --- /dev/null +++ b/node_modules/axios/package.json @@ -0,0 +1,87 @@ +{ + "name": "axios", + "version": "0.27.2", + "description": "Promise based HTTP client for the browser and node.js", + "main": "index.js", + "types": "index.d.ts", + "scripts": { + "test": "grunt test && dtslint", + "start": "node ./sandbox/server.js", + "preversion": "grunt version && npm test", + "build": "NODE_ENV=production grunt build", + "examples": "node ./examples/server.js", + "coveralls": "cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js", + "fix": "eslint --fix lib/**/*.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/axios/axios.git" + }, + "keywords": [ + "xhr", + "http", + "ajax", + "promise", + "node" + ], + "author": "Matt Zabriskie", + "license": "MIT", + "bugs": { + "url": "https://github.com/axios/axios/issues" + }, + "homepage": "https://axios-http.com", + "devDependencies": { + "abortcontroller-polyfill": "^1.7.3", + "coveralls": "^3.1.1", + "dtslint": "^4.2.1", + "es6-promise": "^4.2.8", + "formidable": "^2.0.1", + "grunt": "^1.4.1", + "grunt-banner": "^0.6.0", + "grunt-cli": "^1.4.3", + "grunt-contrib-clean": "^2.0.0", + "grunt-contrib-watch": "^1.1.0", + "grunt-eslint": "^24.0.0", + "grunt-karma": "^4.0.2", + "grunt-mocha-test": "^0.13.3", + "grunt-webpack": "^5.0.0", + "istanbul-instrumenter-loader": "^3.0.1", + "jasmine-core": "^2.4.1", + "karma": "^6.3.17", + "karma-chrome-launcher": "^3.1.1", + "karma-firefox-launcher": "^2.1.2", + "karma-jasmine": "^1.1.1", + "karma-jasmine-ajax": "^0.1.13", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^4.3.6", + "karma-sinon": "^1.0.5", + "karma-sourcemap-loader": "^0.3.8", + "karma-webpack": "^4.0.2", + "load-grunt-tasks": "^5.1.0", + "minimist": "^1.2.6", + "mocha": "^8.2.1", + "sinon": "^4.5.0", + "terser-webpack-plugin": "^4.2.3", + "typescript": "^4.6.3", + "url-search-params": "^0.10.0", + "webpack": "^4.44.2", + "webpack-dev-server": "^3.11.0" + }, + "browser": { + "./lib/adapters/http.js": "./lib/adapters/xhr.js", + "./lib/defaults/env/FormData.js": "./lib/helpers/null.js" + }, + "jsdelivr": "dist/axios.min.js", + "unpkg": "dist/axios.min.js", + "typings": "./index.d.ts", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + }, + "bundlesize": [ + { + "path": "./dist/axios.min.js", + "threshold": "5kB" + } + ] +} diff --git a/node_modules/axios/tsconfig.json b/node_modules/axios/tsconfig.json new file mode 100644 index 00000000..66651882 --- /dev/null +++ b/node_modules/axios/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "module": "es2015", + "lib": ["dom", "es2015"], + "types": [], + "moduleResolution": "node", + "strict": true, + "noEmit": true, + "baseUrl": ".", + "paths": { + "axios": ["."] + } + } +} diff --git a/node_modules/axios/tslint.json b/node_modules/axios/tslint.json new file mode 100644 index 00000000..3ec44a76 --- /dev/null +++ b/node_modules/axios/tslint.json @@ -0,0 +1,6 @@ +{ + "extends": "dtslint/dtslint.json", + "rules": { + "no-unnecessary-generics": false + } +} diff --git a/node_modules/babel-loader/CHANGELOG.md b/node_modules/babel-loader/CHANGELOG.md new file mode 100644 index 00000000..0dc39044 --- /dev/null +++ b/node_modules/babel-loader/CHANGELOG.md @@ -0,0 +1,169 @@ +# Changelog + +For changes in version v7.0.0 and up please go to [release](https://github.com/babel/babel-loader/releases) + +# Old Changelog + +## v6.4.1 + +### 🐛 Bug Fix + +- Fixed reset of BABEL_ENV when options.forceEnv is used (#420) @nikopavlica + +## v6.4.0 + +### 🚀 New Feature + +- added metadata passing from babel to webpack, which is currently used by react-intl (#398) @Ognian + +## v6.3.2 + +### 😢 Regression + +- `forceEnv` was interfering with regular environment handling + +## v6.3.1 + +### 🐛 Bug Fix + + - The new `forceEnv` options wasn't working as expected (#379) @chrisvasz + +## v6.3.0 + +### 🚀 New Feature + +- Add new config option `forceEnv` (#368) @moimael + +Allow to override BABEL_ENV/NODE_ENV at loader-level. Useful for isomorphic applications which have separate babel config for client and server. + +### 🐛 Bug Fix + +- Update loader-utils dependency to ^0.2.16 to fix compatibility with webpack 2 (#371) @leonaves + +### 💅 Polish + +- Improve FS caching to do less sync calls which improves performance slightly (#375) @akx + +## v6.2.10 + +Support for webpack 2.2-rc has been added in this release + +### 🐛 Bug Fix + +- If cache directory not writable, try to fallback to tmpdir before failing + +## v6.2.9 + +### 😢 Regression + +Source maps on windows did not work correctly with v6.2.8. +Thanks @josephst + +### 🏠 Internal + +- Add AppVeyor to run tests on windows @danez +- Fix tests on windows (#343) @danez + +## v6.2.8 + +### 🐛 Bug Fix + +- gzipped files should have `.gz` as the extension, not `.gzip` (#326) @bjornstar +- fix options.sourceFileName gennerate bug (#260) @creeperyang + +### 📝 Documentation + +- Update README docs for cacheDirectory's actual behaviour (#245) @sohkai +- updates docs re: transform-runtime (#197) @gbrassey + +### 🏠 Internal + +- Use eslint and nyc (#321) @danez +- Adjust travis config (#320) @danez +- Use babel to compile babel-loader (#319) @danez + +## v6.2.7 + +### 😢 Regression + +Fallback to `os.tmpdir()` if no cachedir found (#318) (fixes #317) @danez + +Fixes an issue with v6.2.6 when using `babel-loader` as a global package. + +## v6.2.6 + +### 🐛 Bug Fix + +- Use standard cache dir as default `cacheDirectory` (#301) @fson + +Use the common cache directory, `./node_modules/.cache/babel-loader`, as the default cache directory (when the cacheDirectory setting is enabled). + +```js +query: { + cacheDirectory: true +} +``` + +## v6.2.5 + +- Don't show the call stack for a Babel error (such as when you have a syntax error) + +screenshot 2016-08-15 15 24 37 + +- resolve the .babelrc relative to the file path rather than the cwd (current working directory). + + * fix: more concise formatting for Babel errors (#287) (Andrey Popp) + * fix(resolve-rc): resolve-rc relative file path (#253) (Luke Page) + * add babel-core and preset-2015 to dev dependencies (#273) (timse) + * chore(docs): add issue and pr templates (#280) (Joshua Wiens) + * chore(docs): fix badge formatting (Joshua Wiens) + * chore(ci): expand travis testing (#278) (Joshua Wiens) + * Update README: add env vars to cacheIdentifier (#267) (Dominik Ferber) + * add npm badge [skip ci] (Henry Zhu) + * update [skip ci] (Henry Zhu) + * remove jsx references as well [skip ci] (Henry Zhu) + * Save the transform to devDependencies (Ray Booysen) + * Remove 'react' preset (Jake Rios) + * Removed babel-preset-react from README.md (Ben Stephenson) + +## v6.2.4 + * change allowed peer deps (all webpack 2 beta versions) + +## v6.2.3 + * change allowed peer deps (2.0.7-beta) + +## v6.2.2 + * Update peerDependencies to accept webpack 2 [#208](https://github.com/babel/babel-loader/pull/208) + * Remove duplicated dependencies + +## v6.2.0 + * Pass true filenames [#106](https://github.com/babel/babel-loader/issues/106) + * Remove babel-core from devDependencies + +## v6.1.0 + + * Merge [PR #146](https://github.com/babel/babel-loader/pull/146) Set source file name relative to options.sourceRoot + * Merge [PR #136](https://github.com/babel/babel-loader/pull/136) use container-based infrastructure for faster build + * Merge [PR #121](https://github.com/babel/babel-loader/pull/121) Make babelrc configurable + * Merge [PR #113](https://github.com/babel/babel-loader/pull/113) Include BABEL_ENV || NODE_ENV in cacheIdentifier + +## v6.0.1 + + * Update to babel v6. + +## v5.3.1 + + * Merge [PR #85](https://github.com/babel/babel-loader/pull/85) - Don't override sourcemap if sourcesContent already exists. + + +## v5.3.1 + + * Merge [PR #82](https://github.com/babel/babel-loader/pull/82) - Fallback global options to empty object to avoid conflicts with object-assign polyfill. + +## v5.3.0 + + * Merge [PR #79](https://github.com/babel/babel-loader/pull/79) - This should allow babel-loader to work with [enhanced-require](https://github.com/webpack/enhanced-require). + +## v5.2.0 + + * Include `.babelrc` file into the `cacheIdentifier` if it exists diff --git a/node_modules/babel-loader/LICENSE b/node_modules/babel-loader/LICENSE new file mode 100644 index 00000000..cc61e19a --- /dev/null +++ b/node_modules/babel-loader/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2014-2019 Luís Couto + +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. diff --git a/node_modules/babel-loader/README.md b/node_modules/babel-loader/README.md new file mode 100644 index 00000000..051792cf --- /dev/null +++ b/node_modules/babel-loader/README.md @@ -0,0 +1,405 @@ +> This README is for babel-loader v8/v9 with Babel v7 +> If you are using legacy Babel v6, see the [7.x branch](https://github.com/babel/babel-loader/tree/7.x) docs + +[![NPM Status](https://img.shields.io/npm/v/babel-loader.svg?style=flat)](https://www.npmjs.com/package/babel-loader) +[![codecov](https://codecov.io/gh/babel/babel-loader/branch/main/graph/badge.svg)](https://codecov.io/gh/babel/babel-loader) + + + +

Babel Loader

+ +This package allows transpiling JavaScript files using [Babel](https://github.com/babel/babel) and [webpack](https://github.com/webpack/webpack). + +**Note**: Issues with the output should be reported on the Babel [Issues](https://github.com/babel/babel/issues) tracker. + +

Install

+ +> | babel-loader | supported webpack versions | supported Babel versions | supported Node.js versions | +> |:-:|:-:|:-:|:-:| +> | 8.x | 4.x or 5.x | 7.x | >= 8.9 | +> | 9.x | 5.x | ^7.12.0 | >= 14.15.0 | + + +```bash +npm install -D babel-loader @babel/core @babel/preset-env webpack +``` + +

Usage

+ +webpack documentation: [Loaders](https://webpack.js.org/loaders/) + +Within your webpack configuration object, you'll need to add the babel-loader to the list of modules, like so: + +```javascript +module: { + rules: [ + { + test: /\.(?:js|mjs|cjs)$/, + exclude: /node_modules/, + use: { + loader: 'babel-loader', + options: { + presets: [ + ['@babel/preset-env', { targets: "defaults" }] + ] + } + } + } + ] +} +``` + +### Options + +See the `babel` [options](https://babeljs.io/docs/en/options). + +You can pass options to the loader by using the [`options`](https://webpack.js.org/configuration/module/#ruleoptions--rulequery) property: + +```javascript +module: { + rules: [ + { + test: /\.(?:js|mjs|cjs)$/, + exclude: /node_modules/, + use: { + loader: 'babel-loader', + options: { + presets: [ + ['@babel/preset-env', { targets: "defaults" }] + ], + plugins: ['@babel/plugin-proposal-class-properties'] + } + } + } + ] +} +``` + +This loader also supports the following loader-specific option: + +* `cacheDirectory`: Default `false`. When set, the given directory will be used to cache the results of the loader. Future webpack builds will attempt to read from the cache to avoid needing to run the potentially expensive Babel recompilation process on each run. If the value is set to `true` in options (`{cacheDirectory: true}`), the loader will use the default cache directory in `node_modules/.cache/babel-loader` or fallback to the default OS temporary file directory if no `node_modules` folder could be found in any root directory. + +* `cacheIdentifier`: Default is a string composed by the `@babel/core`'s version, the `babel-loader`'s version, the contents of `.babelrc` file if it exists, and the value of the environment variable `BABEL_ENV` with a fallback to the `NODE_ENV` environment variable. This can be set to a custom value to force cache busting if the identifier changes. + +* `cacheCompression`: Default `true`. When set, each Babel transform output will be compressed with Gzip. If you want to opt-out of cache compression, set it to `false` -- your project may benefit from this if it transpiles thousands of files. + +* `customize`: Default `null`. The path of a module that exports a `custom` callback [like the one that you'd pass to `.custom()`](#customized-loader). Since you already have to make a new file to use this, it is recommended that you instead use `.custom` to create a wrapper loader. Only use this if you _must_ continue using `babel-loader` directly, but still want to customize. + +* `metadataSubscribers`: Default `[]`. Takes an array of context function names. E.g. if you passed ['myMetadataPlugin'], you'd assign a subscriber function to `context.myMetadataPlugin` within your webpack plugin's hooks & that function will be called with `metadata`. + +## Troubleshooting + +### babel-loader is slow! + +Make sure you are transforming as few files as possible. Because you are probably matching `/\.m?js$/`, you might be transforming the `node_modules` folder or other unwanted source. + +To exclude `node_modules`, see the `exclude` option in the `loaders` config as documented above. + +You can also speed up babel-loader by as much as 2x by using the `cacheDirectory` option. This will cache transformations to the filesystem. + +### Some files in my node_modules are not transpiled for IE 11 + +Although we typically recommend not compiling `node_modules`, you may need to when using libraries that do not support IE 11 or any legacy targets. + +For this, you can either use a combination of `test` and `not`, or [pass a function](https://webpack.js.org/configuration/module/#condition) to your `exclude` option. You can also use negative lookahead regex as suggested [here](https://github.com/webpack/webpack/issues/2031#issuecomment-294706065). + +```javascript +{ + test: /\.(?:js|mjs|cjs)$/, + exclude: { + and: [/node_modules/], // Exclude libraries in node_modules ... + not: [ + // Except for a few of them that needs to be transpiled because they use modern syntax + /unfetch/, + /d3-array|d3-scale/, + /@hapi[\\/]joi-date/, + ] + }, + use: { + loader: 'babel-loader', + options: { + presets: [ + ['@babel/preset-env', { targets: "ie 11" }] + ] + } + } + } +``` + +### Babel is injecting helpers into each file and bloating my code! + +Babel uses very small helpers for common functions such as `_extend`. By default, this will be added to every file that requires it. + +You can instead require the Babel runtime as a separate module to avoid the duplication. + +The following configuration disables automatic per-file runtime injection in Babel, requiring `@babel/plugin-transform-runtime` instead and making all helper references use it. + +See the [docs](https://babeljs.io/docs/plugins/transform-runtime/) for more information. + +**NOTE**: You must run `npm install -D @babel/plugin-transform-runtime` to include this in your project and `@babel/runtime` itself as a dependency with `npm install @babel/runtime`. + +```javascript +rules: [ + // the 'transform-runtime' plugin tells Babel to + // require the runtime instead of inlining it. + { + test: /\.(?:js|mjs|cjs)$/, + exclude: /node_modules/, + use: { + loader: 'babel-loader', + options: { + presets: [ + ['@babel/preset-env', { targets: "defaults" }] + ], + plugins: ['@babel/plugin-transform-runtime'] + } + } + } +] +``` + +#### **NOTE**: transform-runtime & custom polyfills (e.g. Promise library) + +Since [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-runtime) includes a polyfill that includes a custom [regenerator-runtime](https://github.com/facebook/regenerator/blob/master/packages/regenerator-runtime/runtime.js) and [core-js](https://github.com/zloirock/core-js), the following usual shimming method using `webpack.ProvidePlugin` will not work: + +```javascript +// ... + new webpack.ProvidePlugin({ + 'Promise': 'bluebird' + }), +// ... +``` + +The following approach will not work either: + +```javascript +require('@babel/runtime/core-js/promise').default = require('bluebird'); + +var promise = new Promise; +``` + +which outputs to (using `runtime`): + +```javascript +'use strict'; + +var _Promise = require('@babel/runtime/core-js/promise')['default']; + +require('@babel/runtime/core-js/promise')['default'] = require('bluebird'); + +var promise = new _Promise(); +``` + +The previous `Promise` library is referenced and used before it is overridden. + +One approach is to have a "bootstrap" step in your application that would first override the default globals before your application: + +```javascript +// bootstrap.js + +require('@babel/runtime/core-js/promise').default = require('bluebird'); + +// ... + +require('./app'); +``` + +### The Node.js API for `babel` has been moved to `babel-core`. + +If you receive this message, it means that you have the npm package `babel` installed and are using the short notation of the loader in the webpack config (which is not valid anymore as of webpack 2.x): +```javascript + { + test: /\.(?:js|mjs|cjs)$/, + loader: 'babel', + } +``` + +webpack then tries to load the `babel` package instead of the `babel-loader`. + +To fix this, you should uninstall the npm package `babel`, as it is deprecated in Babel v6. (Instead, install `@babel/cli` or `@babel/core`.) +In the case one of your dependencies is installing `babel` and you cannot uninstall it yourself, use the complete name of the loader in the webpack config: +```javascript + { + test: /\.(?:js|mjs|cjs)$/, + loader: 'babel-loader', + } +``` + +### Exclude libraries that should not be transpiled + +`core-js` and `webpack/buildin` will cause errors if they are transpiled by Babel. + +You will need to exclude them form `babel-loader`. + +```js +{ + "loader": "babel-loader", + "options": { + "exclude": [ + // \\ for Windows, / for macOS and Linux + /node_modules[\\/]core-js/, + /node_modules[\\/]webpack[\\/]buildin/, + ], + "presets": [ + "@babel/preset-env" + ] + } +} +``` + +### Top level function (IIFE) is still arrow (on Webpack 5) + +That function is injected by Webpack itself _after_ running `babel-loader`. By default Webpack asumes that your target environment supports some ES2015 features, but you can overwrite this behavior using the `output.environment` Webpack option ([documentation](https://webpack.js.org/configuration/output/#outputenvironment)). + +To avoid the top-level arrow function, you can use `output.environment.arrowFunction`: + +```js +// webpack.config.js +module.exports = { + // ... + output: { + // ... + environment: { + // ... + arrowFunction: false, // <-- this line does the trick + }, + }, +}; +``` + +## Customize config based on webpack target + +Webpack supports bundling multiple [targets](https://webpack.js.org/concepts/targets/). For cases where you may want different Babel configurations for each target (like `web` _and_ `node`), this loader provides a `target` property via Babel's [caller](https://babeljs.io/docs/en/config-files#apicallercb) API. + +For example, to change the environment targets passed to `@babel/preset-env` based on the webpack target: + +```javascript +// babel.config.js + +module.exports = api => { + return { + plugins: [ + "@babel/plugin-proposal-nullish-coalescing-operator", + "@babel/plugin-proposal-optional-chaining" + ], + presets: [ + [ + "@babel/preset-env", + { + useBuiltIns: "entry", + // caller.target will be the same as the target option from webpack + targets: api.caller(caller => caller && caller.target === "node") + ? { node: "current" } + : { chrome: "58", ie: "11" } + } + ] + ] + } +} +``` + +## Customized Loader + +`babel-loader` exposes a loader-builder utility that allows users to add custom handling +of Babel's configuration for each file that it processes. + +`.custom` accepts a callback that will be called with the loader's instance of +`babel` so that tooling can ensure that it using exactly the same `@babel/core` +instance as the loader itself. + +In cases where you want to customize without actually having a file to call `.custom`, you +may also pass the `customize` option with a string pointing at a file that exports +your `custom` callback function. + +### Example + +```js +// Export from "./my-custom-loader.js" or whatever you want. +module.exports = require("babel-loader").custom(babel => { + // Extract the custom options in the custom plugin + function myPlugin(api, { opt1, opt2 }) { + return { + visitor: {}, + }; + } + + return { + // Passed the loader options. + customOptions({ opt1, opt2, ...loader }) { + return { + // Pull out any custom options that the loader might have. + custom: { opt1, opt2 }, + + // Pass the options back with the two custom options removed. + loader, + }; + }, + + // Passed Babel's 'PartialConfig' object. + config(cfg, { customOptions }) { + if (cfg.hasFilesystemConfig()) { + // Use the normal config + return cfg.options; + } + + return { + ...cfg.options, + plugins: [ + ...(cfg.options.plugins || []), + + // Include a custom plugin in the options and passing it the customOptions object. + [myPlugin, customOptions], + ], + }; + }, + + result(result) { + return { + ...result, + code: result.code + "\n// Generated by some custom loader", + }; + }, + }; +}); +``` + +```js +// And in your Webpack config +module.exports = { + // .. + module: { + rules: [{ + // ... + loader: path.join(__dirname, 'my-custom-loader.js'), + // ... + }] + } +}; +``` + +### `customOptions(options: Object): { custom: Object, loader: Object }` + +Given the loader's options, split custom options out of `babel-loader`'s +options. + + +### `config(cfg: PartialConfig, options: { source, customOptions }): Object` + +Given Babel's `PartialConfig` object, return the `options` object that should +be passed to `babel.transform`. + + +### `result(result: Result): Result` + +Given Babel's result object, allow loaders to make additional tweaks to it. + + +## License +[MIT](https://couto.mit-license.org/) diff --git a/node_modules/babel-loader/node_modules/.bin/webpack b/node_modules/babel-loader/node_modules/.bin/webpack new file mode 120000 index 00000000..8a1900f6 --- /dev/null +++ b/node_modules/babel-loader/node_modules/.bin/webpack @@ -0,0 +1 @@ +../../../webpack/bin/webpack.js \ No newline at end of file diff --git a/node_modules/babel-loader/package.json b/node_modules/babel-loader/package.json new file mode 100644 index 00000000..d928b9c3 --- /dev/null +++ b/node_modules/babel-loader/package.json @@ -0,0 +1,125 @@ +{ + "name": "babel-loader", + "version": "9.1.3", + "description": "babel module loader for webpack", + "files": [ + "lib" + ], + "main": "lib/index.js", + "engines": { + "node": ">= 14.15.0" + }, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + }, + "devDependencies": { + "@ava/babel": "^1.0.1", + "@babel/cli": "^7.19.3", + "@babel/core": "^7.19.6", + "@babel/preset-env": "^7.19.4", + "ava": "^3.13.0", + "babel-eslint": "^10.1.0", + "babel-plugin-istanbul": "^6.1.1", + "babel-plugin-react-intl": "^8.2.25", + "cross-env": "^7.0.2", + "eslint": "^7.13.0", + "eslint-config-babel": "^9.0.0", + "eslint-config-prettier": "^6.3.0", + "eslint-plugin-flowtype": "^5.2.0", + "eslint-plugin-prettier": "^3.0.0", + "husky": "^4.3.0", + "lint-staged": "^10.5.1", + "nyc": "^15.1.0", + "pnp-webpack-plugin": "^1.6.4", + "prettier": "^2.1.2", + "react": "^17.0.1", + "react-intl": "^5.9.4", + "react-intl-webpack-plugin": "^0.3.0", + "rimraf": "^3.0.0", + "semver": "7.5.2", + "webpack": "^5.74.0" + }, + "scripts": { + "clean": "rimraf lib/", + "build": "babel src/ --out-dir lib/ --copy-files", + "format": "prettier --write --trailing-comma all 'src/**/*.js' 'test/**/*.test.js' 'test/helpers/*.js' && prettier --write --trailing-comma es5 'scripts/*.js'", + "lint": "eslint src test", + "precommit": "lint-staged", + "prepublish": "yarn run clean && yarn run build", + "preversion": "yarn run test", + "test": "yarn run lint && cross-env BABEL_ENV=test yarn run build && yarn run test-only", + "test-only": "nyc ava" + }, + "repository": { + "type": "git", + "url": "https://github.com/babel/babel-loader.git" + }, + "keywords": [ + "webpack", + "loader", + "babel", + "es6", + "transpiler", + "module" + ], + "author": "Luis Couto ", + "license": "MIT", + "bugs": { + "url": "https://github.com/babel/babel-loader/issues" + }, + "homepage": "https://github.com/babel/babel-loader", + "nyc": { + "all": true, + "include": [ + "src/**/*.js" + ], + "reporter": [ + "text", + "json" + ], + "sourceMap": false, + "instrument": false + }, + "ava": { + "files": [ + "test/**/*.test.js", + "!test/fixtures/**/*", + "!test/helpers/**/*" + ], + "babel": { + "compileAsTests": [ + "test/helpers/**/*" + ] + } + }, + "lint-staged": { + "scripts/*.js": [ + "prettier --trailing-comma es5 --write", + "git add" + ], + "src/**/*.js": [ + "prettier --trailing-comma all --write", + "git add" + ], + "test/**/*.test.js": [ + "prettier --trailing-comma all --write", + "git add" + ], + "test/helpers/*.js": [ + "prettier --trailing-comma all --write", + "git add" + ], + "package.json": [ + "node ./scripts/yarn-install.js", + "git add yarn.lock" + ] + }, + "resolutions": { + "nyc/node-preload": "0.2.0" + } +} \ No newline at end of file diff --git a/node_modules/babel-plugin-dynamic-import-node/.babelrc b/node_modules/babel-plugin-dynamic-import-node/.babelrc new file mode 100644 index 00000000..e6872347 --- /dev/null +++ b/node_modules/babel-plugin-dynamic-import-node/.babelrc @@ -0,0 +1,9 @@ +{ + "presets": [ + "airbnb" + ], + "plugins": [ + "add-module-exports", + ["transform-replace-object-assign", { "moduleSpecifier": "object.assign" }], + ], +} diff --git a/node_modules/babel-plugin-dynamic-import-node/.eslintignore b/node_modules/babel-plugin-dynamic-import-node/.eslintignore new file mode 100644 index 00000000..051cd482 --- /dev/null +++ b/node_modules/babel-plugin-dynamic-import-node/.eslintignore @@ -0,0 +1,2 @@ +test/fixtures +lib/ diff --git a/node_modules/babel-plugin-dynamic-import-node/.eslintrc b/node_modules/babel-plugin-dynamic-import-node/.eslintrc new file mode 100644 index 00000000..391ada0a --- /dev/null +++ b/node_modules/babel-plugin-dynamic-import-node/.eslintrc @@ -0,0 +1,5 @@ +{ + "parser": "babel-eslint", + "extends": "airbnb-base", + "root": true +} diff --git a/node_modules/babel-plugin-dynamic-import-node/.travis.yml b/node_modules/babel-plugin-dynamic-import-node/.travis.yml new file mode 100644 index 00000000..087e932a --- /dev/null +++ b/node_modules/babel-plugin-dynamic-import-node/.travis.yml @@ -0,0 +1,38 @@ +language: node_js +node_js: + - "13" + - "12" + - "11" + - "10" + - "9" + - "8" + - "7" + - "6" + - "5" + - "4" + - "iojs-v3" + - "iojs-v2" + - "iojs-v1" + - "0.12" +import: + - ljharb/travis-ci:node/latest-npm.yml + - ljharb/travis-ci:node/greenkeeper.yml + - ljharb/travis-ci:node/dependabot.yml +script: 'npm run tests-only' +sudo: false +env: + - TEST=true +matrix: + fast_finish: true + include: + - node_js: "lts/*" + env: PRETEST=true + script: 'npm run pretest' + allow_failures: + - node_js: "9" + - node_js: "7" + - node_js: "5" + - node_js: "iojs-v3" + - node_js: "iojs-v2" + - node_js: "iojs-v1" + - env: TEST=true ALLOW_FAILURE=true diff --git a/node_modules/babel-plugin-dynamic-import-node/CHANGELOG.md b/node_modules/babel-plugin-dynamic-import-node/CHANGELOG.md new file mode 100644 index 00000000..4cba133a --- /dev/null +++ b/node_modules/babel-plugin-dynamic-import-node/CHANGELOG.md @@ -0,0 +1,64 @@ +## Unreleased + +## v2.3.3 +- [Fix] Generate webpack-compatible output with static string arg (#84) +- [Fix] Handle visiting the same path gracefully (#71) + +## v2.3.2 +- [Fix] avoid using reserved param name in babel 7 templates +- [Dev Deps] update `airbnb-js-shims` + +## v2.3.1 +- [Fix] Evaluate `import()` argument synchronously (#85) +- [Dev Deps] update `eslint`, `eslint-config-airbnb-base`, `in-publish`, `rimraf`, `safe-publish-latest`, `tape` + +## v2.3.0 +- [New] expose createDynamicImportTransform and getImportSource (#75) +- [Docs] Document noInterop option (#70) + +## v2.2.0 +- [Refactor] remove dependency on babel-plugin-syntax-dynamic-import +- [Dev Deps] update `airbnb-js-shims`, `babel-preset-airbnb`, `eslint` + +## v2.1.0 +- [New] add `noInterop` option (#57) +- [Docs] Fix typo "correct" -> "correctly" in readme (#55) +- [Dev Deps] update `airbnb-js-shims`, `babel-eslint`, `babel-preset-airbnb`, `eslint`, `eslint-config-airbnb-base`, `eslint-plugin-import`, `safe-publish-latest` + +## v2.0.0 +- [Breaking] always return a module namespace object (#52, #47) +- [Breaking] remove `.default` on entry points (#27) +- [Docs] removed $ before npm command (#35) +- [Docs] Improve README.md with a code example (#41) +- [Dev Deps] update `airbnb-js-shims`, `babel-core`, `babel-eslint`, `eslint`, `eslint-plugin-import` +- [Tests] switch from mocha to tape, so we can support older nodes + +## v1.2.0 +- [New] support comments (#37) +- [Refactor] Use template and types from the babel object (#32) +- [Tests] on `node` `v9`; pin included builds to LTS +- [Dev Deps] update `eslint`, `eslint-config-airbnb-base`, `mocha`, `rimraf` + +## v1.1.0 +- Visit Import nodes instead of CallExpressions (#30) +- [Deps] update `babel-template`, `babel-types` +- [Dev Deps] update `airbnb-js-shims`, `babel-cli`, `babel-core`, `babel-preset-airbnb`, `babel-register`, `chai`, `eslint`, `eslint-config-airbnb-base`, `eslint-plugin-import`, `mocha` +- [Tests] on `node` `v8` +- [Tests] use `nvm install-latest-npm` so newer npm doesn’t break older node + +## v1.0.2 +- [Fix] Ensure it works with the ES2015 preset too (#12, #16) +- [Deps] update `babel-template`, `babel-types` +- [Dev Deps] update `babel-cli`, `babel-core`, `babel-eslint`, `babel-register`, `eslint`, `eslint-config-airbnb-base`, `mocha` + +## v1.0.1 +- [Fix] Move `in-publish` to devDeps (#11) +- [Fix] ensure dynamic `import()` input is properly stringified (#2) +- [Fix] async timing of dynamic import to match spec (#3) +- [Fix] Remove spaces in template strings and update Babel (#10) +- [Deps] update `babel-template`, `babel-types` +- [Deps] update `babel-types` (#4, #5, #6) +- [Dev Deps] update `babel-cli`, `babel-core`, `babel-eslint`, `babel-register`, `eslint`, `eslint-config-airbnb-base`, `eslint-plugin-import`, `mocha`, `rimraf` + +## v1.0.0 +- Initial full release. diff --git a/node_modules/babel-plugin-dynamic-import-node/LICENSE b/node_modules/babel-plugin-dynamic-import-node/LICENSE new file mode 100644 index 00000000..87081c13 --- /dev/null +++ b/node_modules/babel-plugin-dynamic-import-node/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Airbnb + +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. diff --git a/node_modules/babel-plugin-dynamic-import-node/README.md b/node_modules/babel-plugin-dynamic-import-node/README.md new file mode 100644 index 00000000..2f2a2164 --- /dev/null +++ b/node_modules/babel-plugin-dynamic-import-node/README.md @@ -0,0 +1,63 @@ +# babel-plugin-dynamic-import-node + +Babel plugin to transpile `import()` to a deferred `require()`, for node. Matches the [proposed spec](https://github.com/domenic/proposal-import-function). + +**NOTE:** Babylon >= v6.12.0 is required to correctly parse dynamic imports. + +## Installation + +```sh +npm install babel-plugin-dynamic-import-node --save-dev +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["dynamic-import-node"] +} +``` + +#### Options + +- *`noInterop`* - A boolean value, that if true will not interop the require calls. Useful to avoid using `require('module').default` on commonjs modules. + +```json +{ + "plugins": [ + ["dynamic-import-node", { "noInterop": true }] + ] +} +``` + +### Via CLI + +```sh +$ babel --plugins dynamic-import-node script.js +``` + +### Via Node API + +```javascript +require('babel-core').transform('code', { + plugins: ['dynamic-import-node'] +}); +``` + +### Code Example +```javascript +Promise.all([ + import('./lib/import1'), + import('./lib/import2') + ]).then(([ + Import1, + Import2 + ]) => { + console.log(Import1); + /* CODE HERE*/ + }); +``` diff --git a/node_modules/babel-plugin-dynamic-import-node/package.json b/node_modules/babel-plugin-dynamic-import-node/package.json new file mode 100644 index 00000000..4182c0e8 --- /dev/null +++ b/node_modules/babel-plugin-dynamic-import-node/package.json @@ -0,0 +1,71 @@ +{ + "name": "babel-plugin-dynamic-import-node", + "version": "2.3.3", + "description": "Babel plugin to transpile import() to a deferred require(), for node", + "main": "lib/index.js", + "directories": { + "test": "test" + }, + "scripts": { + "clean": "rimraf lib", + "prebuild": "npm run clean", + "build": "babel src --out-dir lib", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "tape --require airbnb-js-shims --require babel-register test", + "lint": "eslint .", + "prepublish": "not-in-publish || (safe-publish-latest && npm run build)", + "check-changelog": "expr $(git status --porcelain 2>/dev/null| grep \"^\\s*M.*CHANGELOG.md\" | wc -l) >/dev/null || (echo 'Please edit CHANGELOG.md' && exit 1)", + "check-only-changelog-changed": "(expr $(git status --porcelain 2>/dev/null| grep -v \"CHANGELOG.md\" | wc -l) >/dev/null && echo 'Only CHANGELOG.md may have uncommitted changes' && exit 1) || exit 0", + "version:major": "npm --no-git-tag-version version major", + "version:minor": "npm --no-git-tag-version version minor", + "version:patch": "npm --no-git-tag-version version patch", + "postversion": "git commit package.json CHANGELOG.md -m \"v$npm_package_version\" && npm run tag && git push && git push --tags", + "preversion": "npm run test && npm run check-changelog && npm run check-only-changelog-changed", + "tag": "git tag v$npm_package_version" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/airbnb/babel-plugin-dynamic-import-node.git" + }, + "keywords": [ + "babel", + "plugin", + "dynamic", + "import", + "node" + ], + "author": "Jordan Gensler ", + "license": "MIT", + "bugs": { + "url": "https://github.com/airbnb/babel-plugin-dynamic-import-node/issues" + }, + "homepage": "https://github.com/airbnb/babel-plugin-dynamic-import-node#readme", + "devDependencies": { + "@babel/core": "^7.9.0", + "@babel/plugin-external-helpers": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/preset-env": "^7.9.5", + "airbnb-js-shims": "^2.2.1", + "babel-cli": "^6.26.0", + "babel-core": "^6.26.3", + "babel-eslint": "^9.0.0", + "babel-plugin-add-module-exports": "^0.2.1", + "babel-plugin-external-helpers": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-replace-object-assign": "^1.0.0", + "babel-preset-airbnb": "^2.6.0", + "babel-preset-es2015": "^6.24.1", + "babel-register": "^6.26.0", + "eslint": "^6.8.0", + "eslint-config-airbnb-base": "^14.1.0", + "eslint-plugin-import": "^2.20.2", + "in-publish": "^2.0.1", + "rimraf": "^2.7.1", + "safe-publish-latest": "^1.1.4", + "tape": "^5.0.0-next.5" + }, + "dependencies": { + "object.assign": "^4.1.0" + } +} diff --git a/node_modules/babel-plugin-dynamic-import-node/utils.js b/node_modules/babel-plugin-dynamic-import-node/utils.js new file mode 100644 index 00000000..1dc2e6cc --- /dev/null +++ b/node_modules/babel-plugin-dynamic-import-node/utils.js @@ -0,0 +1,6 @@ +// Re-export lib/utils, so that consumers can import +// babel-plugin-dynamic-import-node/utils instead of +// babel-plugin-dynamic-import-node/lib/utils + +// eslint-disable-next-line import/no-unresolved +module.exports = require('./lib/utils'); diff --git a/node_modules/babel-plugin-polyfill-corejs2/LICENSE b/node_modules/babel-plugin-polyfill-corejs2/LICENSE new file mode 100644 index 00000000..b74971fe --- /dev/null +++ b/node_modules/babel-plugin-polyfill-corejs2/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Nicolò Ribaudo and other contributors + +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. diff --git a/node_modules/babel-plugin-polyfill-corejs2/README.md b/node_modules/babel-plugin-polyfill-corejs2/README.md new file mode 100644 index 00000000..c5dfdc5c --- /dev/null +++ b/node_modules/babel-plugin-polyfill-corejs2/README.md @@ -0,0 +1,28 @@ +# babel-plugin-polyfill-corejs2 + +## Install + +Using npm: + +```sh +npm install --save-dev babel-plugin-polyfill-corejs2 +``` + +or using yarn: + +```sh +yarn add babel-plugin-polyfill-corejs2 --dev +``` + +## Usage + +Add this plugin to your Babel configuration: + +```json +{ + "plugins": [["polyfill-corejs2", { "method": "usage-global" }]] +} +``` + +This package supports the `usage-pure`, `usage-global`, and `entry-global` methods. +When `entry-global` is used, it replaces imports to `core-js`. diff --git a/node_modules/babel-plugin-polyfill-corejs2/esm/index.mjs b/node_modules/babel-plugin-polyfill-corejs2/esm/index.mjs new file mode 100644 index 00000000..d697ca4f --- /dev/null +++ b/node_modules/babel-plugin-polyfill-corejs2/esm/index.mjs @@ -0,0 +1,395 @@ +import corejs2Polyfills from '@babel/compat-data/corejs2-built-ins'; +import semver from 'semver'; +import defineProvider from '@babel/helper-define-polyfill-provider'; +import * as _babel from '@babel/core'; + +const define = (name, pure, global = [], meta) => { + return { + name, + pure, + global, + meta + }; +}; +const pureAndGlobal = (pure, global, minRuntimeVersion = null) => define(global[0], pure, global, { + minRuntimeVersion +}); +const globalOnly = global => define(global[0], null, global); +const pureOnly = (pure, name) => define(name, pure, []); +const ArrayNatureIterators = ["es6.object.to-string", "es6.array.iterator", "web.dom.iterable"]; +const CommonIterators = ["es6.string.iterator", ...ArrayNatureIterators]; +const PromiseDependencies = ["es6.object.to-string", "es6.promise"]; +const BuiltIns = { + DataView: globalOnly(["es6.typed.data-view"]), + Float32Array: globalOnly(["es6.typed.float32-array"]), + Float64Array: globalOnly(["es6.typed.float64-array"]), + Int8Array: globalOnly(["es6.typed.int8-array"]), + Int16Array: globalOnly(["es6.typed.int16-array"]), + Int32Array: globalOnly(["es6.typed.int32-array"]), + Map: pureAndGlobal("map", ["es6.map", ...CommonIterators]), + Number: globalOnly(["es6.number.constructor"]), + Promise: pureAndGlobal("promise", PromiseDependencies), + RegExp: globalOnly(["es6.regexp.constructor"]), + Set: pureAndGlobal("set", ["es6.set", ...CommonIterators]), + Symbol: pureAndGlobal("symbol/index", ["es6.symbol"]), + Uint8Array: globalOnly(["es6.typed.uint8-array"]), + Uint8ClampedArray: globalOnly(["es6.typed.uint8-clamped-array"]), + Uint16Array: globalOnly(["es6.typed.uint16-array"]), + Uint32Array: globalOnly(["es6.typed.uint32-array"]), + WeakMap: pureAndGlobal("weak-map", ["es6.weak-map", ...CommonIterators]), + WeakSet: pureAndGlobal("weak-set", ["es6.weak-set", ...CommonIterators]), + setImmediate: pureOnly("set-immediate", "web.immediate"), + clearImmediate: pureOnly("clear-immediate", "web.immediate"), + parseFloat: pureOnly("parse-float", "es6.parse-float"), + parseInt: pureOnly("parse-int", "es6.parse-int") +}; +const InstanceProperties = { + __defineGetter__: globalOnly(["es7.object.define-getter"]), + __defineSetter__: globalOnly(["es7.object.define-setter"]), + __lookupGetter__: globalOnly(["es7.object.lookup-getter"]), + __lookupSetter__: globalOnly(["es7.object.lookup-setter"]), + anchor: globalOnly(["es6.string.anchor"]), + big: globalOnly(["es6.string.big"]), + bind: globalOnly(["es6.function.bind"]), + blink: globalOnly(["es6.string.blink"]), + bold: globalOnly(["es6.string.bold"]), + codePointAt: globalOnly(["es6.string.code-point-at"]), + copyWithin: globalOnly(["es6.array.copy-within"]), + endsWith: globalOnly(["es6.string.ends-with"]), + entries: globalOnly(ArrayNatureIterators), + every: globalOnly(["es6.array.every"]), + fill: globalOnly(["es6.array.fill"]), + filter: globalOnly(["es6.array.filter"]), + finally: globalOnly(["es7.promise.finally", ...PromiseDependencies]), + find: globalOnly(["es6.array.find"]), + findIndex: globalOnly(["es6.array.find-index"]), + fixed: globalOnly(["es6.string.fixed"]), + flags: globalOnly(["es6.regexp.flags"]), + flatMap: globalOnly(["es7.array.flat-map"]), + fontcolor: globalOnly(["es6.string.fontcolor"]), + fontsize: globalOnly(["es6.string.fontsize"]), + forEach: globalOnly(["es6.array.for-each"]), + includes: globalOnly(["es6.string.includes", "es7.array.includes"]), + indexOf: globalOnly(["es6.array.index-of"]), + italics: globalOnly(["es6.string.italics"]), + keys: globalOnly(ArrayNatureIterators), + lastIndexOf: globalOnly(["es6.array.last-index-of"]), + link: globalOnly(["es6.string.link"]), + map: globalOnly(["es6.array.map"]), + match: globalOnly(["es6.regexp.match"]), + name: globalOnly(["es6.function.name"]), + padStart: globalOnly(["es7.string.pad-start"]), + padEnd: globalOnly(["es7.string.pad-end"]), + reduce: globalOnly(["es6.array.reduce"]), + reduceRight: globalOnly(["es6.array.reduce-right"]), + repeat: globalOnly(["es6.string.repeat"]), + replace: globalOnly(["es6.regexp.replace"]), + search: globalOnly(["es6.regexp.search"]), + small: globalOnly(["es6.string.small"]), + some: globalOnly(["es6.array.some"]), + sort: globalOnly(["es6.array.sort"]), + split: globalOnly(["es6.regexp.split"]), + startsWith: globalOnly(["es6.string.starts-with"]), + strike: globalOnly(["es6.string.strike"]), + sub: globalOnly(["es6.string.sub"]), + sup: globalOnly(["es6.string.sup"]), + toISOString: globalOnly(["es6.date.to-iso-string"]), + toJSON: globalOnly(["es6.date.to-json"]), + toString: globalOnly(["es6.object.to-string", "es6.date.to-string", "es6.regexp.to-string"]), + trim: globalOnly(["es6.string.trim"]), + trimEnd: globalOnly(["es7.string.trim-right"]), + trimLeft: globalOnly(["es7.string.trim-left"]), + trimRight: globalOnly(["es7.string.trim-right"]), + trimStart: globalOnly(["es7.string.trim-left"]), + values: globalOnly(ArrayNatureIterators) +}; + +// This isn't present in older @babel/compat-data versions +if ("es6.array.slice" in corejs2Polyfills) { + InstanceProperties.slice = globalOnly(["es6.array.slice"]); +} +const StaticProperties = { + Array: { + from: pureAndGlobal("array/from", ["es6.symbol", "es6.array.from", ...CommonIterators]), + isArray: pureAndGlobal("array/is-array", ["es6.array.is-array"]), + of: pureAndGlobal("array/of", ["es6.array.of"]) + }, + Date: { + now: pureAndGlobal("date/now", ["es6.date.now"]) + }, + JSON: { + stringify: pureOnly("json/stringify", "es6.symbol") + }, + Math: { + // 'Math' was not included in the 7.0.0 + // release of '@babel/runtime'. See issue https://github.com/babel/babel/pull/8616. + acosh: pureAndGlobal("math/acosh", ["es6.math.acosh"], "7.0.1"), + asinh: pureAndGlobal("math/asinh", ["es6.math.asinh"], "7.0.1"), + atanh: pureAndGlobal("math/atanh", ["es6.math.atanh"], "7.0.1"), + cbrt: pureAndGlobal("math/cbrt", ["es6.math.cbrt"], "7.0.1"), + clz32: pureAndGlobal("math/clz32", ["es6.math.clz32"], "7.0.1"), + cosh: pureAndGlobal("math/cosh", ["es6.math.cosh"], "7.0.1"), + expm1: pureAndGlobal("math/expm1", ["es6.math.expm1"], "7.0.1"), + fround: pureAndGlobal("math/fround", ["es6.math.fround"], "7.0.1"), + hypot: pureAndGlobal("math/hypot", ["es6.math.hypot"], "7.0.1"), + imul: pureAndGlobal("math/imul", ["es6.math.imul"], "7.0.1"), + log1p: pureAndGlobal("math/log1p", ["es6.math.log1p"], "7.0.1"), + log10: pureAndGlobal("math/log10", ["es6.math.log10"], "7.0.1"), + log2: pureAndGlobal("math/log2", ["es6.math.log2"], "7.0.1"), + sign: pureAndGlobal("math/sign", ["es6.math.sign"], "7.0.1"), + sinh: pureAndGlobal("math/sinh", ["es6.math.sinh"], "7.0.1"), + tanh: pureAndGlobal("math/tanh", ["es6.math.tanh"], "7.0.1"), + trunc: pureAndGlobal("math/trunc", ["es6.math.trunc"], "7.0.1") + }, + Number: { + EPSILON: pureAndGlobal("number/epsilon", ["es6.number.epsilon"]), + MIN_SAFE_INTEGER: pureAndGlobal("number/min-safe-integer", ["es6.number.min-safe-integer"]), + MAX_SAFE_INTEGER: pureAndGlobal("number/max-safe-integer", ["es6.number.max-safe-integer"]), + isFinite: pureAndGlobal("number/is-finite", ["es6.number.is-finite"]), + isInteger: pureAndGlobal("number/is-integer", ["es6.number.is-integer"]), + isSafeInteger: pureAndGlobal("number/is-safe-integer", ["es6.number.is-safe-integer"]), + isNaN: pureAndGlobal("number/is-nan", ["es6.number.is-nan"]), + parseFloat: pureAndGlobal("number/parse-float", ["es6.number.parse-float"]), + parseInt: pureAndGlobal("number/parse-int", ["es6.number.parse-int"]) + }, + Object: { + assign: pureAndGlobal("object/assign", ["es6.object.assign"]), + create: pureAndGlobal("object/create", ["es6.object.create"]), + defineProperties: pureAndGlobal("object/define-properties", ["es6.object.define-properties"]), + defineProperty: pureAndGlobal("object/define-property", ["es6.object.define-property"]), + entries: pureAndGlobal("object/entries", ["es7.object.entries"]), + freeze: pureAndGlobal("object/freeze", ["es6.object.freeze"]), + getOwnPropertyDescriptor: pureAndGlobal("object/get-own-property-descriptor", ["es6.object.get-own-property-descriptor"]), + getOwnPropertyDescriptors: pureAndGlobal("object/get-own-property-descriptors", ["es7.object.get-own-property-descriptors"]), + getOwnPropertyNames: pureAndGlobal("object/get-own-property-names", ["es6.object.get-own-property-names"]), + getOwnPropertySymbols: pureAndGlobal("object/get-own-property-symbols", ["es6.symbol"]), + getPrototypeOf: pureAndGlobal("object/get-prototype-of", ["es6.object.get-prototype-of"]), + is: pureAndGlobal("object/is", ["es6.object.is"]), + isExtensible: pureAndGlobal("object/is-extensible", ["es6.object.is-extensible"]), + isFrozen: pureAndGlobal("object/is-frozen", ["es6.object.is-frozen"]), + isSealed: pureAndGlobal("object/is-sealed", ["es6.object.is-sealed"]), + keys: pureAndGlobal("object/keys", ["es6.object.keys"]), + preventExtensions: pureAndGlobal("object/prevent-extensions", ["es6.object.prevent-extensions"]), + seal: pureAndGlobal("object/seal", ["es6.object.seal"]), + setPrototypeOf: pureAndGlobal("object/set-prototype-of", ["es6.object.set-prototype-of"]), + values: pureAndGlobal("object/values", ["es7.object.values"]) + }, + Promise: { + all: globalOnly(CommonIterators), + race: globalOnly(CommonIterators) + }, + Reflect: { + apply: pureAndGlobal("reflect/apply", ["es6.reflect.apply"]), + construct: pureAndGlobal("reflect/construct", ["es6.reflect.construct"]), + defineProperty: pureAndGlobal("reflect/define-property", ["es6.reflect.define-property"]), + deleteProperty: pureAndGlobal("reflect/delete-property", ["es6.reflect.delete-property"]), + get: pureAndGlobal("reflect/get", ["es6.reflect.get"]), + getOwnPropertyDescriptor: pureAndGlobal("reflect/get-own-property-descriptor", ["es6.reflect.get-own-property-descriptor"]), + getPrototypeOf: pureAndGlobal("reflect/get-prototype-of", ["es6.reflect.get-prototype-of"]), + has: pureAndGlobal("reflect/has", ["es6.reflect.has"]), + isExtensible: pureAndGlobal("reflect/is-extensible", ["es6.reflect.is-extensible"]), + ownKeys: pureAndGlobal("reflect/own-keys", ["es6.reflect.own-keys"]), + preventExtensions: pureAndGlobal("reflect/prevent-extensions", ["es6.reflect.prevent-extensions"]), + set: pureAndGlobal("reflect/set", ["es6.reflect.set"]), + setPrototypeOf: pureAndGlobal("reflect/set-prototype-of", ["es6.reflect.set-prototype-of"]) + }, + String: { + at: pureOnly("string/at", "es7.string.at"), + fromCodePoint: pureAndGlobal("string/from-code-point", ["es6.string.from-code-point"]), + raw: pureAndGlobal("string/raw", ["es6.string.raw"]) + }, + Symbol: { + // FIXME: Pure disabled to work around zloirock/core-js#262. + asyncIterator: globalOnly(["es6.symbol", "es7.symbol.async-iterator"]), + for: pureOnly("symbol/for", "es6.symbol"), + hasInstance: pureOnly("symbol/has-instance", "es6.symbol"), + isConcatSpreadable: pureOnly("symbol/is-concat-spreadable", "es6.symbol"), + iterator: define("es6.symbol", "symbol/iterator", CommonIterators), + keyFor: pureOnly("symbol/key-for", "es6.symbol"), + match: pureAndGlobal("symbol/match", ["es6.regexp.match"]), + replace: pureOnly("symbol/replace", "es6.symbol"), + search: pureOnly("symbol/search", "es6.symbol"), + species: pureOnly("symbol/species", "es6.symbol"), + split: pureOnly("symbol/split", "es6.symbol"), + toPrimitive: pureOnly("symbol/to-primitive", "es6.symbol"), + toStringTag: pureOnly("symbol/to-string-tag", "es6.symbol"), + unscopables: pureOnly("symbol/unscopables", "es6.symbol") + } +}; + +const webPolyfills = { + "web.timers": {}, + "web.immediate": {}, + "web.dom.iterable": {} +}; +const purePolyfills = { + "es6.parse-float": {}, + "es6.parse-int": {}, + "es7.string.at": {} +}; +function addPlatformSpecificPolyfills (targets, method, polyfills) { + const targetNames = Object.keys(targets); + const isAnyTarget = !targetNames.length; + const isWebTarget = targetNames.some(name => name !== "node"); + return { + ...polyfills, + ...(method === "usage-pure" ? purePolyfills : null), + ...(isAnyTarget || isWebTarget ? webPolyfills : null) + }; +} + +function hasMinVersion(minVersion, runtimeVersion) { + // If the range is unavailable, we're running the script during Babel's + // build process, and we want to assume that all versions are satisfied so + // that the built output will include all definitions. + if (!runtimeVersion || !minVersion) return true; + + // semver.intersects() has some surprising behavior with comparing ranges + // with preprelease versions. We add '^' to ensure that we are always + // comparing ranges with ranges, which sidesteps this logic. + // For example: + // + // semver.intersects(`<7.0.1`, "7.0.0-beta.0") // false - surprising + // semver.intersects(`<7.0.1`, "^7.0.0-beta.0") // true - expected + // + // This is because the first falls back to + // + // semver.satisfies("7.0.0-beta.0", `<7.0.1`) // false - surprising + // + // and this fails because a prerelease version can only satisfy a range + // if it is a prerelease within the same major/minor/patch range. + // + // Note: If this is found to have issues, please also revist the logic in + // babel-core's availableHelper() API. + if (semver.valid(runtimeVersion)) runtimeVersion = `^${runtimeVersion}`; + return !semver.intersects(`<${minVersion}`, runtimeVersion) && !semver.intersects(`>=8.0.0`, runtimeVersion); +} + +const { + types: t +} = _babel.default || _babel; +const BABEL_RUNTIME = "@babel/runtime-corejs2"; +const presetEnvCompat = "#__secret_key__@babel/preset-env__compatibility"; +const runtimeCompat = "#__secret_key__@babel/runtime__compatibility"; +const has = Function.call.bind(Object.hasOwnProperty); +var index = defineProvider(function (api, { + [presetEnvCompat]: { + entryInjectRegenerator = false, + noRuntimeName = false + } = {}, + [runtimeCompat]: { + useBabelRuntime = false, + runtimeVersion = "", + ext = ".js" + } = {} +}) { + const resolve = api.createMetaResolver({ + global: BuiltIns, + static: StaticProperties, + instance: InstanceProperties + }); + const { + debug, + shouldInjectPolyfill, + method + } = api; + const polyfills = addPlatformSpecificPolyfills(api.targets, method, corejs2Polyfills); + const coreJSBase = useBabelRuntime ? `${BABEL_RUNTIME}/core-js` : method === "usage-pure" ? "core-js/library/fn" : "core-js/modules"; + function inject(name, utils) { + if (typeof name === "string") { + // Some polyfills aren't always available, for example + // web.dom.iterable when targeting node + if (has(polyfills, name) && shouldInjectPolyfill(name)) { + debug(name); + utils.injectGlobalImport(`${coreJSBase}/${name}.js`); + } + return; + } + name.forEach(name => inject(name, utils)); + } + function maybeInjectPure(desc, hint, utils) { + let { + pure, + meta, + name + } = desc; + if (!pure || !shouldInjectPolyfill(name)) return; + if (runtimeVersion && meta && meta.minRuntimeVersion && !hasMinVersion(meta && meta.minRuntimeVersion, runtimeVersion)) { + return; + } + + // Unfortunately core-js and @babel/runtime-corejs2 don't have the same + // directory structure, so we need to special case this. + if (useBabelRuntime && pure === "symbol/index") pure = "symbol"; + return utils.injectDefaultImport(`${coreJSBase}/${pure}${ext}`, hint); + } + return { + name: "corejs2", + runtimeName: noRuntimeName ? null : BABEL_RUNTIME, + polyfills, + entryGlobal(meta, utils, path) { + if (meta.kind === "import" && meta.source === "core-js") { + debug(null); + inject(Object.keys(polyfills), utils); + if (entryInjectRegenerator) { + utils.injectGlobalImport("regenerator-runtime/runtime.js"); + } + path.remove(); + } + }, + usageGlobal(meta, utils) { + const resolved = resolve(meta); + if (!resolved) return; + let deps = resolved.desc.global; + if (resolved.kind !== "global" && "object" in meta && meta.object && meta.placement === "prototype") { + const low = meta.object.toLowerCase(); + deps = deps.filter(m => m.includes(low)); + } + inject(deps, utils); + }, + usagePure(meta, utils, path) { + if (meta.kind === "in") { + if (meta.key === "Symbol.iterator") { + path.replaceWith(t.callExpression(utils.injectDefaultImport(`${coreJSBase}/is-iterable${ext}`, "isIterable"), [path.node.right] // meta.kind === "in" narrows this + )); + } + + return; + } + if (path.parentPath.isUnaryExpression({ + operator: "delete" + })) return; + if (meta.kind === "property") { + // We can't compile destructuring. + if (!path.isMemberExpression()) return; + if (!path.isReferenced()) return; + if (meta.key === "Symbol.iterator" && shouldInjectPolyfill("es6.symbol") && path.parentPath.isCallExpression({ + callee: path.node + }) && path.parentPath.node.arguments.length === 0) { + path.parentPath.replaceWith(t.callExpression(utils.injectDefaultImport(`${coreJSBase}/get-iterator${ext}`, "getIterator"), [path.node.object])); + path.skip(); + return; + } + } + const resolved = resolve(meta); + if (!resolved) return; + const id = maybeInjectPure(resolved.desc, resolved.name, utils); + if (id) path.replaceWith(id); + }, + visitor: method === "usage-global" && { + // yield* + YieldExpression(path) { + if (path.node.delegate) { + inject("web.dom.iterable", api.getUtils(path)); + } + }, + // for-of, [a, b] = c + "ForOfStatement|ArrayPattern"(path) { + CommonIterators.forEach(name => inject(name, api.getUtils(path))); + } + } + }; +}); + +export default index; +//# sourceMappingURL=index.mjs.map diff --git a/node_modules/babel-plugin-polyfill-corejs2/esm/index.mjs.map b/node_modules/babel-plugin-polyfill-corejs2/esm/index.mjs.map new file mode 100644 index 00000000..1d2c4e8d --- /dev/null +++ b/node_modules/babel-plugin-polyfill-corejs2/esm/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs","sources":["../src/built-in-definitions.ts","../src/add-platform-specific-polyfills.ts","../src/helpers.ts","../src/index.ts"],"sourcesContent":["import corejs2Polyfills from \"@babel/compat-data/corejs2-built-ins\";\n\ntype ObjectMap = { [name: string]: V };\n\ntype PolyfillDescriptor = {\n name: string;\n pure: string | null;\n global: string[];\n meta: T | null;\n};\n\ntype CoreJS2Meta = {\n minRuntimeVersion: string | null;\n};\n\nconst define = (\n name: string,\n pure?: string | null,\n global: string[] = [],\n meta?: T | null,\n): PolyfillDescriptor => {\n return { name, pure, global, meta };\n};\n\nconst pureAndGlobal = (\n pure: string,\n global: string[],\n minRuntimeVersion: string | null = null,\n) => define(global[0], pure, global, { minRuntimeVersion });\n\nconst globalOnly = (global: string[]) =>\n define(global[0], null, global);\n\nconst pureOnly = (pure: string, name: string) =>\n define(name, pure, []);\n\nconst ArrayNatureIterators = [\n \"es6.object.to-string\",\n \"es6.array.iterator\",\n \"web.dom.iterable\",\n];\n\nexport const CommonIterators = [\"es6.string.iterator\", ...ArrayNatureIterators];\n\nconst PromiseDependencies = [\"es6.object.to-string\", \"es6.promise\"];\n\nexport const BuiltIns: ObjectMap> = {\n DataView: globalOnly([\"es6.typed.data-view\"]),\n Float32Array: globalOnly([\"es6.typed.float32-array\"]),\n Float64Array: globalOnly([\"es6.typed.float64-array\"]),\n Int8Array: globalOnly([\"es6.typed.int8-array\"]),\n Int16Array: globalOnly([\"es6.typed.int16-array\"]),\n Int32Array: globalOnly([\"es6.typed.int32-array\"]),\n Map: pureAndGlobal(\"map\", [\"es6.map\", ...CommonIterators]),\n Number: globalOnly([\"es6.number.constructor\"]),\n Promise: pureAndGlobal(\"promise\", PromiseDependencies),\n RegExp: globalOnly([\"es6.regexp.constructor\"]),\n Set: pureAndGlobal(\"set\", [\"es6.set\", ...CommonIterators]),\n Symbol: pureAndGlobal(\"symbol/index\", [\"es6.symbol\"]),\n Uint8Array: globalOnly([\"es6.typed.uint8-array\"]),\n Uint8ClampedArray: globalOnly([\"es6.typed.uint8-clamped-array\"]),\n Uint16Array: globalOnly([\"es6.typed.uint16-array\"]),\n Uint32Array: globalOnly([\"es6.typed.uint32-array\"]),\n WeakMap: pureAndGlobal(\"weak-map\", [\"es6.weak-map\", ...CommonIterators]),\n WeakSet: pureAndGlobal(\"weak-set\", [\"es6.weak-set\", ...CommonIterators]),\n\n setImmediate: pureOnly(\"set-immediate\", \"web.immediate\"),\n clearImmediate: pureOnly(\"clear-immediate\", \"web.immediate\"),\n parseFloat: pureOnly(\"parse-float\", \"es6.parse-float\"),\n parseInt: pureOnly(\"parse-int\", \"es6.parse-int\"),\n};\n\nexport const InstanceProperties: ObjectMap> = {\n __defineGetter__: globalOnly([\"es7.object.define-getter\"]),\n __defineSetter__: globalOnly([\"es7.object.define-setter\"]),\n __lookupGetter__: globalOnly([\"es7.object.lookup-getter\"]),\n __lookupSetter__: globalOnly([\"es7.object.lookup-setter\"]),\n anchor: globalOnly([\"es6.string.anchor\"]),\n big: globalOnly([\"es6.string.big\"]),\n bind: globalOnly([\"es6.function.bind\"]),\n blink: globalOnly([\"es6.string.blink\"]),\n bold: globalOnly([\"es6.string.bold\"]),\n codePointAt: globalOnly([\"es6.string.code-point-at\"]),\n copyWithin: globalOnly([\"es6.array.copy-within\"]),\n endsWith: globalOnly([\"es6.string.ends-with\"]),\n entries: globalOnly(ArrayNatureIterators),\n every: globalOnly([\"es6.array.every\"]),\n fill: globalOnly([\"es6.array.fill\"]),\n filter: globalOnly([\"es6.array.filter\"]),\n finally: globalOnly([\"es7.promise.finally\", ...PromiseDependencies]),\n find: globalOnly([\"es6.array.find\"]),\n findIndex: globalOnly([\"es6.array.find-index\"]),\n fixed: globalOnly([\"es6.string.fixed\"]),\n flags: globalOnly([\"es6.regexp.flags\"]),\n flatMap: globalOnly([\"es7.array.flat-map\"]),\n fontcolor: globalOnly([\"es6.string.fontcolor\"]),\n fontsize: globalOnly([\"es6.string.fontsize\"]),\n forEach: globalOnly([\"es6.array.for-each\"]),\n includes: globalOnly([\"es6.string.includes\", \"es7.array.includes\"]),\n indexOf: globalOnly([\"es6.array.index-of\"]),\n italics: globalOnly([\"es6.string.italics\"]),\n keys: globalOnly(ArrayNatureIterators),\n lastIndexOf: globalOnly([\"es6.array.last-index-of\"]),\n link: globalOnly([\"es6.string.link\"]),\n map: globalOnly([\"es6.array.map\"]),\n match: globalOnly([\"es6.regexp.match\"]),\n name: globalOnly([\"es6.function.name\"]),\n padStart: globalOnly([\"es7.string.pad-start\"]),\n padEnd: globalOnly([\"es7.string.pad-end\"]),\n reduce: globalOnly([\"es6.array.reduce\"]),\n reduceRight: globalOnly([\"es6.array.reduce-right\"]),\n repeat: globalOnly([\"es6.string.repeat\"]),\n replace: globalOnly([\"es6.regexp.replace\"]),\n search: globalOnly([\"es6.regexp.search\"]),\n small: globalOnly([\"es6.string.small\"]),\n some: globalOnly([\"es6.array.some\"]),\n sort: globalOnly([\"es6.array.sort\"]),\n split: globalOnly([\"es6.regexp.split\"]),\n startsWith: globalOnly([\"es6.string.starts-with\"]),\n strike: globalOnly([\"es6.string.strike\"]),\n sub: globalOnly([\"es6.string.sub\"]),\n sup: globalOnly([\"es6.string.sup\"]),\n toISOString: globalOnly([\"es6.date.to-iso-string\"]),\n toJSON: globalOnly([\"es6.date.to-json\"]),\n toString: globalOnly([\n \"es6.object.to-string\",\n \"es6.date.to-string\",\n \"es6.regexp.to-string\",\n ]),\n trim: globalOnly([\"es6.string.trim\"]),\n trimEnd: globalOnly([\"es7.string.trim-right\"]),\n trimLeft: globalOnly([\"es7.string.trim-left\"]),\n trimRight: globalOnly([\"es7.string.trim-right\"]),\n trimStart: globalOnly([\"es7.string.trim-left\"]),\n values: globalOnly(ArrayNatureIterators),\n};\n\n// This isn't present in older @babel/compat-data versions\nif (\"es6.array.slice\" in corejs2Polyfills) {\n InstanceProperties.slice = globalOnly([\"es6.array.slice\"]);\n}\n\nexport const StaticProperties: ObjectMap<\n ObjectMap>\n> = {\n Array: {\n from: pureAndGlobal(\"array/from\", [\n \"es6.symbol\",\n \"es6.array.from\",\n ...CommonIterators,\n ]),\n isArray: pureAndGlobal(\"array/is-array\", [\"es6.array.is-array\"]),\n of: pureAndGlobal(\"array/of\", [\"es6.array.of\"]),\n },\n\n Date: {\n now: pureAndGlobal(\"date/now\", [\"es6.date.now\"]),\n },\n\n JSON: {\n stringify: pureOnly(\"json/stringify\", \"es6.symbol\"),\n },\n\n Math: {\n // 'Math' was not included in the 7.0.0\n // release of '@babel/runtime'. See issue https://github.com/babel/babel/pull/8616.\n acosh: pureAndGlobal(\"math/acosh\", [\"es6.math.acosh\"], \"7.0.1\"),\n asinh: pureAndGlobal(\"math/asinh\", [\"es6.math.asinh\"], \"7.0.1\"),\n atanh: pureAndGlobal(\"math/atanh\", [\"es6.math.atanh\"], \"7.0.1\"),\n cbrt: pureAndGlobal(\"math/cbrt\", [\"es6.math.cbrt\"], \"7.0.1\"),\n clz32: pureAndGlobal(\"math/clz32\", [\"es6.math.clz32\"], \"7.0.1\"),\n cosh: pureAndGlobal(\"math/cosh\", [\"es6.math.cosh\"], \"7.0.1\"),\n expm1: pureAndGlobal(\"math/expm1\", [\"es6.math.expm1\"], \"7.0.1\"),\n fround: pureAndGlobal(\"math/fround\", [\"es6.math.fround\"], \"7.0.1\"),\n hypot: pureAndGlobal(\"math/hypot\", [\"es6.math.hypot\"], \"7.0.1\"),\n imul: pureAndGlobal(\"math/imul\", [\"es6.math.imul\"], \"7.0.1\"),\n log1p: pureAndGlobal(\"math/log1p\", [\"es6.math.log1p\"], \"7.0.1\"),\n log10: pureAndGlobal(\"math/log10\", [\"es6.math.log10\"], \"7.0.1\"),\n log2: pureAndGlobal(\"math/log2\", [\"es6.math.log2\"], \"7.0.1\"),\n sign: pureAndGlobal(\"math/sign\", [\"es6.math.sign\"], \"7.0.1\"),\n sinh: pureAndGlobal(\"math/sinh\", [\"es6.math.sinh\"], \"7.0.1\"),\n tanh: pureAndGlobal(\"math/tanh\", [\"es6.math.tanh\"], \"7.0.1\"),\n trunc: pureAndGlobal(\"math/trunc\", [\"es6.math.trunc\"], \"7.0.1\"),\n },\n\n Number: {\n EPSILON: pureAndGlobal(\"number/epsilon\", [\"es6.number.epsilon\"]),\n MIN_SAFE_INTEGER: pureAndGlobal(\"number/min-safe-integer\", [\n \"es6.number.min-safe-integer\",\n ]),\n MAX_SAFE_INTEGER: pureAndGlobal(\"number/max-safe-integer\", [\n \"es6.number.max-safe-integer\",\n ]),\n isFinite: pureAndGlobal(\"number/is-finite\", [\"es6.number.is-finite\"]),\n isInteger: pureAndGlobal(\"number/is-integer\", [\"es6.number.is-integer\"]),\n isSafeInteger: pureAndGlobal(\"number/is-safe-integer\", [\n \"es6.number.is-safe-integer\",\n ]),\n isNaN: pureAndGlobal(\"number/is-nan\", [\"es6.number.is-nan\"]),\n parseFloat: pureAndGlobal(\"number/parse-float\", [\"es6.number.parse-float\"]),\n parseInt: pureAndGlobal(\"number/parse-int\", [\"es6.number.parse-int\"]),\n },\n\n Object: {\n assign: pureAndGlobal(\"object/assign\", [\"es6.object.assign\"]),\n create: pureAndGlobal(\"object/create\", [\"es6.object.create\"]),\n defineProperties: pureAndGlobal(\"object/define-properties\", [\n \"es6.object.define-properties\",\n ]),\n defineProperty: pureAndGlobal(\"object/define-property\", [\n \"es6.object.define-property\",\n ]),\n entries: pureAndGlobal(\"object/entries\", [\"es7.object.entries\"]),\n freeze: pureAndGlobal(\"object/freeze\", [\"es6.object.freeze\"]),\n getOwnPropertyDescriptor: pureAndGlobal(\n \"object/get-own-property-descriptor\",\n [\"es6.object.get-own-property-descriptor\"],\n ),\n getOwnPropertyDescriptors: pureAndGlobal(\n \"object/get-own-property-descriptors\",\n [\"es7.object.get-own-property-descriptors\"],\n ),\n getOwnPropertyNames: pureAndGlobal(\"object/get-own-property-names\", [\n \"es6.object.get-own-property-names\",\n ]),\n getOwnPropertySymbols: pureAndGlobal(\"object/get-own-property-symbols\", [\n \"es6.symbol\",\n ]),\n getPrototypeOf: pureAndGlobal(\"object/get-prototype-of\", [\n \"es6.object.get-prototype-of\",\n ]),\n is: pureAndGlobal(\"object/is\", [\"es6.object.is\"]),\n isExtensible: pureAndGlobal(\"object/is-extensible\", [\n \"es6.object.is-extensible\",\n ]),\n isFrozen: pureAndGlobal(\"object/is-frozen\", [\"es6.object.is-frozen\"]),\n isSealed: pureAndGlobal(\"object/is-sealed\", [\"es6.object.is-sealed\"]),\n keys: pureAndGlobal(\"object/keys\", [\"es6.object.keys\"]),\n preventExtensions: pureAndGlobal(\"object/prevent-extensions\", [\n \"es6.object.prevent-extensions\",\n ]),\n seal: pureAndGlobal(\"object/seal\", [\"es6.object.seal\"]),\n setPrototypeOf: pureAndGlobal(\"object/set-prototype-of\", [\n \"es6.object.set-prototype-of\",\n ]),\n values: pureAndGlobal(\"object/values\", [\"es7.object.values\"]),\n },\n\n Promise: {\n all: globalOnly(CommonIterators),\n race: globalOnly(CommonIterators),\n },\n\n Reflect: {\n apply: pureAndGlobal(\"reflect/apply\", [\"es6.reflect.apply\"]),\n construct: pureAndGlobal(\"reflect/construct\", [\"es6.reflect.construct\"]),\n defineProperty: pureAndGlobal(\"reflect/define-property\", [\n \"es6.reflect.define-property\",\n ]),\n deleteProperty: pureAndGlobal(\"reflect/delete-property\", [\n \"es6.reflect.delete-property\",\n ]),\n get: pureAndGlobal(\"reflect/get\", [\"es6.reflect.get\"]),\n getOwnPropertyDescriptor: pureAndGlobal(\n \"reflect/get-own-property-descriptor\",\n [\"es6.reflect.get-own-property-descriptor\"],\n ),\n getPrototypeOf: pureAndGlobal(\"reflect/get-prototype-of\", [\n \"es6.reflect.get-prototype-of\",\n ]),\n has: pureAndGlobal(\"reflect/has\", [\"es6.reflect.has\"]),\n isExtensible: pureAndGlobal(\"reflect/is-extensible\", [\n \"es6.reflect.is-extensible\",\n ]),\n ownKeys: pureAndGlobal(\"reflect/own-keys\", [\"es6.reflect.own-keys\"]),\n preventExtensions: pureAndGlobal(\"reflect/prevent-extensions\", [\n \"es6.reflect.prevent-extensions\",\n ]),\n set: pureAndGlobal(\"reflect/set\", [\"es6.reflect.set\"]),\n setPrototypeOf: pureAndGlobal(\"reflect/set-prototype-of\", [\n \"es6.reflect.set-prototype-of\",\n ]),\n },\n\n String: {\n at: pureOnly(\"string/at\", \"es7.string.at\"),\n fromCodePoint: pureAndGlobal(\"string/from-code-point\", [\n \"es6.string.from-code-point\",\n ]),\n raw: pureAndGlobal(\"string/raw\", [\"es6.string.raw\"]),\n },\n\n Symbol: {\n // FIXME: Pure disabled to work around zloirock/core-js#262.\n asyncIterator: globalOnly([\"es6.symbol\", \"es7.symbol.async-iterator\"]),\n for: pureOnly(\"symbol/for\", \"es6.symbol\"),\n hasInstance: pureOnly(\"symbol/has-instance\", \"es6.symbol\"),\n isConcatSpreadable: pureOnly(\"symbol/is-concat-spreadable\", \"es6.symbol\"),\n iterator: define(\"es6.symbol\", \"symbol/iterator\", CommonIterators),\n keyFor: pureOnly(\"symbol/key-for\", \"es6.symbol\"),\n match: pureAndGlobal(\"symbol/match\", [\"es6.regexp.match\"]),\n replace: pureOnly(\"symbol/replace\", \"es6.symbol\"),\n search: pureOnly(\"symbol/search\", \"es6.symbol\"),\n species: pureOnly(\"symbol/species\", \"es6.symbol\"),\n split: pureOnly(\"symbol/split\", \"es6.symbol\"),\n toPrimitive: pureOnly(\"symbol/to-primitive\", \"es6.symbol\"),\n toStringTag: pureOnly(\"symbol/to-string-tag\", \"es6.symbol\"),\n unscopables: pureOnly(\"symbol/unscopables\", \"es6.symbol\"),\n },\n};\n","import type { Targets } from \"@babel/helper-define-polyfill-provider\";\n\nconst webPolyfills = {\n \"web.timers\": {},\n \"web.immediate\": {},\n \"web.dom.iterable\": {},\n};\n\nconst purePolyfills = {\n \"es6.parse-float\": {},\n \"es6.parse-int\": {},\n \"es7.string.at\": {},\n};\n\nexport default function (targets: Targets, method: string, polyfills: any) {\n const targetNames = Object.keys(targets);\n const isAnyTarget = !targetNames.length;\n const isWebTarget = targetNames.some(name => name !== \"node\");\n\n return {\n ...polyfills,\n ...(method === \"usage-pure\" ? purePolyfills : null),\n ...(isAnyTarget || isWebTarget ? webPolyfills : null),\n };\n}\n","import semver from \"semver\";\n\nexport function hasMinVersion(\n minVersion?: string | null,\n runtimeVersion?: string | number | null,\n) {\n // If the range is unavailable, we're running the script during Babel's\n // build process, and we want to assume that all versions are satisfied so\n // that the built output will include all definitions.\n if (!runtimeVersion || !minVersion) return true;\n\n // semver.intersects() has some surprising behavior with comparing ranges\n // with preprelease versions. We add '^' to ensure that we are always\n // comparing ranges with ranges, which sidesteps this logic.\n // For example:\n //\n // semver.intersects(`<7.0.1`, \"7.0.0-beta.0\") // false - surprising\n // semver.intersects(`<7.0.1`, \"^7.0.0-beta.0\") // true - expected\n //\n // This is because the first falls back to\n //\n // semver.satisfies(\"7.0.0-beta.0\", `<7.0.1`) // false - surprising\n //\n // and this fails because a prerelease version can only satisfy a range\n // if it is a prerelease within the same major/minor/patch range.\n //\n // Note: If this is found to have issues, please also revist the logic in\n // babel-core's availableHelper() API.\n if (semver.valid(runtimeVersion)) runtimeVersion = `^${runtimeVersion}`;\n\n return (\n !semver.intersects(`<${minVersion}`, runtimeVersion) &&\n !semver.intersects(`>=8.0.0`, runtimeVersion)\n );\n}\n","import corejs2Polyfills from \"@babel/compat-data/corejs2-built-ins\";\nimport {\n BuiltIns,\n StaticProperties,\n InstanceProperties,\n CommonIterators,\n} from \"./built-in-definitions\";\nimport addPlatformSpecificPolyfills from \"./add-platform-specific-polyfills\";\nimport { hasMinVersion } from \"./helpers\";\n\nimport defineProvider from \"@babel/helper-define-polyfill-provider\";\nimport type { NodePath } from \"@babel/traverse\";\nimport { types as t } from \"@babel/core\";\n\nconst BABEL_RUNTIME = \"@babel/runtime-corejs2\";\n\nconst presetEnvCompat = \"#__secret_key__@babel/preset-env__compatibility\";\nconst runtimeCompat = \"#__secret_key__@babel/runtime__compatibility\";\n\nconst has = Function.call.bind(Object.hasOwnProperty);\n\ntype Options = {\n [presetEnvCompat]?: {\n entryInjectRegenerator: boolean;\n noRuntimeName: boolean;\n };\n [runtimeCompat]?: {\n useBabelRuntime: boolean;\n runtimeVersion: string;\n ext: string;\n };\n};\n\nexport default defineProvider(function (\n api,\n {\n [presetEnvCompat]: {\n entryInjectRegenerator = false,\n noRuntimeName = false,\n } = {},\n [runtimeCompat]: {\n useBabelRuntime = false,\n runtimeVersion = \"\",\n ext = \".js\",\n } = {},\n },\n) {\n const resolve = api.createMetaResolver({\n global: BuiltIns,\n static: StaticProperties,\n instance: InstanceProperties,\n });\n\n const { debug, shouldInjectPolyfill, method } = api;\n\n const polyfills = addPlatformSpecificPolyfills(\n api.targets,\n method,\n corejs2Polyfills,\n );\n\n const coreJSBase = useBabelRuntime\n ? `${BABEL_RUNTIME}/core-js`\n : method === \"usage-pure\"\n ? \"core-js/library/fn\"\n : \"core-js/modules\";\n\n function inject(name: string | string[], utils) {\n if (typeof name === \"string\") {\n // Some polyfills aren't always available, for example\n // web.dom.iterable when targeting node\n if (has(polyfills, name) && shouldInjectPolyfill(name)) {\n debug(name);\n utils.injectGlobalImport(`${coreJSBase}/${name}.js`);\n }\n return;\n }\n\n name.forEach(name => inject(name, utils));\n }\n\n function maybeInjectPure(desc, hint, utils) {\n let { pure, meta, name } = desc;\n\n if (!pure || !shouldInjectPolyfill(name)) return;\n\n if (\n runtimeVersion &&\n meta &&\n meta.minRuntimeVersion &&\n !hasMinVersion(meta && meta.minRuntimeVersion, runtimeVersion)\n ) {\n return;\n }\n\n // Unfortunately core-js and @babel/runtime-corejs2 don't have the same\n // directory structure, so we need to special case this.\n if (useBabelRuntime && pure === \"symbol/index\") pure = \"symbol\";\n\n return utils.injectDefaultImport(`${coreJSBase}/${pure}${ext}`, hint);\n }\n\n return {\n name: \"corejs2\",\n\n runtimeName: noRuntimeName ? null : BABEL_RUNTIME,\n\n polyfills,\n\n entryGlobal(meta, utils, path) {\n if (meta.kind === \"import\" && meta.source === \"core-js\") {\n debug(null);\n\n inject(Object.keys(polyfills), utils);\n\n if (entryInjectRegenerator) {\n utils.injectGlobalImport(\"regenerator-runtime/runtime.js\");\n }\n\n path.remove();\n }\n },\n\n usageGlobal(meta, utils) {\n const resolved = resolve(meta);\n if (!resolved) return;\n\n let deps = resolved.desc.global;\n\n if (\n resolved.kind !== \"global\" &&\n \"object\" in meta &&\n meta.object &&\n meta.placement === \"prototype\"\n ) {\n const low = meta.object.toLowerCase();\n deps = deps.filter(m => m.includes(low));\n }\n\n inject(deps, utils);\n },\n\n usagePure(meta, utils, path) {\n if (meta.kind === \"in\") {\n if (meta.key === \"Symbol.iterator\") {\n path.replaceWith(\n t.callExpression(\n utils.injectDefaultImport(\n `${coreJSBase}/is-iterable${ext}`,\n \"isIterable\",\n ),\n [(path.node as t.BinaryExpression).right], // meta.kind === \"in\" narrows this\n ),\n );\n }\n\n return;\n }\n\n if (path.parentPath.isUnaryExpression({ operator: \"delete\" })) return;\n\n if (meta.kind === \"property\") {\n // We can't compile destructuring.\n if (!path.isMemberExpression()) return;\n if (!path.isReferenced()) return;\n\n if (\n meta.key === \"Symbol.iterator\" &&\n shouldInjectPolyfill(\"es6.symbol\") &&\n path.parentPath.isCallExpression({ callee: path.node }) &&\n path.parentPath.node.arguments.length === 0\n ) {\n path.parentPath.replaceWith(\n t.callExpression(\n utils.injectDefaultImport(\n `${coreJSBase}/get-iterator${ext}`,\n \"getIterator\",\n ),\n [path.node.object],\n ),\n );\n path.skip();\n\n return;\n }\n }\n\n const resolved = resolve(meta);\n if (!resolved) return;\n\n const id = maybeInjectPure(resolved.desc, resolved.name, utils);\n if (id) path.replaceWith(id);\n },\n\n visitor: method === \"usage-global\" && {\n // yield*\n YieldExpression(path: NodePath) {\n if (path.node.delegate) {\n inject(\"web.dom.iterable\", api.getUtils(path));\n }\n },\n\n // for-of, [a, b] = c\n \"ForOfStatement|ArrayPattern\"(\n path: NodePath,\n ) {\n CommonIterators.forEach(name => inject(name, api.getUtils(path)));\n },\n },\n };\n});\n"],"names":["define","name","pure","global","meta","pureAndGlobal","minRuntimeVersion","globalOnly","pureOnly","ArrayNatureIterators","CommonIterators","PromiseDependencies","BuiltIns","DataView","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Map","Number","Promise","RegExp","Set","Symbol","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","WeakSet","setImmediate","clearImmediate","parseFloat","parseInt","InstanceProperties","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","anchor","big","bind","blink","bold","codePointAt","copyWithin","endsWith","entries","every","fill","filter","finally","find","findIndex","fixed","flags","flatMap","fontcolor","fontsize","forEach","includes","indexOf","italics","keys","lastIndexOf","link","map","match","padStart","padEnd","reduce","reduceRight","repeat","replace","search","small","some","sort","split","startsWith","strike","sub","sup","toISOString","toJSON","toString","trim","trimEnd","trimLeft","trimRight","trimStart","values","corejs2Polyfills","slice","StaticProperties","Array","from","isArray","of","Date","now","JSON","stringify","Math","acosh","asinh","atanh","cbrt","clz32","cosh","expm1","fround","hypot","imul","log1p","log10","log2","sign","sinh","tanh","trunc","EPSILON","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","isFinite","isInteger","isSafeInteger","isNaN","Object","assign","create","defineProperties","defineProperty","freeze","getOwnPropertyDescriptor","getOwnPropertyDescriptors","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","is","isExtensible","isFrozen","isSealed","preventExtensions","seal","setPrototypeOf","all","race","Reflect","apply","construct","deleteProperty","get","has","ownKeys","set","String","at","fromCodePoint","raw","asyncIterator","for","hasInstance","isConcatSpreadable","iterator","keyFor","species","toPrimitive","toStringTag","unscopables","webPolyfills","purePolyfills","targets","method","polyfills","targetNames","isAnyTarget","length","isWebTarget","hasMinVersion","minVersion","runtimeVersion","semver","valid","intersects","types","t","_babel","default","BABEL_RUNTIME","presetEnvCompat","runtimeCompat","Function","call","hasOwnProperty","defineProvider","api","entryInjectRegenerator","noRuntimeName","useBabelRuntime","ext","resolve","createMetaResolver","static","instance","debug","shouldInjectPolyfill","addPlatformSpecificPolyfills","coreJSBase","inject","utils","injectGlobalImport","maybeInjectPure","desc","hint","injectDefaultImport","runtimeName","entryGlobal","path","kind","source","remove","usageGlobal","resolved","deps","object","placement","low","toLowerCase","m","usagePure","key","replaceWith","callExpression","node","right","parentPath","isUnaryExpression","operator","isMemberExpression","isReferenced","isCallExpression","callee","arguments","skip","id","visitor","YieldExpression","delegate","getUtils","ForOfStatement|ArrayPattern"],"mappings":";;;;;AAeA,MAAMA,MAAM,GAAGA,CACbC,IAAY,EACZC,IAAoB,EACpBC,MAAgB,GAAG,EAAE,EACrBC,IAAe,KACW;EAC1B,OAAO;IAAEH,IAAI;IAAEC,IAAI;IAAEC,MAAM;IAAEC;GAAM;AACrC,CAAC;AAED,MAAMC,aAAa,GAAGA,CACpBH,IAAY,EACZC,MAAgB,EAChBG,iBAAgC,GAAG,IAAI,KACpCN,MAAM,CAAcG,MAAM,CAAC,CAAC,CAAC,EAAED,IAAI,EAAEC,MAAM,EAAE;EAAEG;AAAkB,CAAC,CAAC;AAExE,MAAMC,UAAU,GAAIJ,MAAgB,IAClCH,MAAM,CAAcG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAEA,MAAM,CAAC;AAE9C,MAAMK,QAAQ,GAAGA,CAACN,IAAY,EAAED,IAAY,KAC1CD,MAAM,CAAcC,IAAI,EAAEC,IAAI,EAAE,EAAE,CAAC;AAErC,MAAMO,oBAAoB,GAAG,CAC3B,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,CACnB;AAEM,MAAMC,eAAe,GAAG,CAAC,qBAAqB,EAAE,GAAGD,oBAAoB,CAAC;AAE/E,MAAME,mBAAmB,GAAG,CAAC,sBAAsB,EAAE,aAAa,CAAC;AAE5D,MAAMC,QAAoD,GAAG;EAClEC,QAAQ,EAAEN,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC;EAC7CO,YAAY,EAAEP,UAAU,CAAC,CAAC,yBAAyB,CAAC,CAAC;EACrDQ,YAAY,EAAER,UAAU,CAAC,CAAC,yBAAyB,CAAC,CAAC;EACrDS,SAAS,EAAET,UAAU,CAAC,CAAC,sBAAsB,CAAC,CAAC;EAC/CU,UAAU,EAAEV,UAAU,CAAC,CAAC,uBAAuB,CAAC,CAAC;EACjDW,UAAU,EAAEX,UAAU,CAAC,CAAC,uBAAuB,CAAC,CAAC;EACjDY,GAAG,EAAEd,aAAa,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,GAAGK,eAAe,CAAC,CAAC;EAC1DU,MAAM,EAAEb,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAAC;EAC9Cc,OAAO,EAAEhB,aAAa,CAAC,SAAS,EAAEM,mBAAmB,CAAC;EACtDW,MAAM,EAAEf,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAAC;EAC9CgB,GAAG,EAAElB,aAAa,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,GAAGK,eAAe,CAAC,CAAC;EAC1Dc,MAAM,EAAEnB,aAAa,CAAC,cAAc,EAAE,CAAC,YAAY,CAAC,CAAC;EACrDoB,UAAU,EAAElB,UAAU,CAAC,CAAC,uBAAuB,CAAC,CAAC;EACjDmB,iBAAiB,EAAEnB,UAAU,CAAC,CAAC,+BAA+B,CAAC,CAAC;EAChEoB,WAAW,EAAEpB,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAAC;EACnDqB,WAAW,EAAErB,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAAC;EACnDsB,OAAO,EAAExB,aAAa,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,GAAGK,eAAe,CAAC,CAAC;EACxEoB,OAAO,EAAEzB,aAAa,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,GAAGK,eAAe,CAAC,CAAC;EAExEqB,YAAY,EAAEvB,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;EACxDwB,cAAc,EAAExB,QAAQ,CAAC,iBAAiB,EAAE,eAAe,CAAC;EAC5DyB,UAAU,EAAEzB,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;EACtD0B,QAAQ,EAAE1B,QAAQ,CAAC,WAAW,EAAE,eAAe;AACjD,CAAC;AAEM,MAAM2B,kBAA8D,GAAG;EAC5EC,gBAAgB,EAAE7B,UAAU,CAAC,CAAC,0BAA0B,CAAC,CAAC;EAC1D8B,gBAAgB,EAAE9B,UAAU,CAAC,CAAC,0BAA0B,CAAC,CAAC;EAC1D+B,gBAAgB,EAAE/B,UAAU,CAAC,CAAC,0BAA0B,CAAC,CAAC;EAC1DgC,gBAAgB,EAAEhC,UAAU,CAAC,CAAC,0BAA0B,CAAC,CAAC;EAC1DiC,MAAM,EAAEjC,UAAU,CAAC,CAAC,mBAAmB,CAAC,CAAC;EACzCkC,GAAG,EAAElC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC;EACnCmC,IAAI,EAAEnC,UAAU,CAAC,CAAC,mBAAmB,CAAC,CAAC;EACvCoC,KAAK,EAAEpC,UAAU,CAAC,CAAC,kBAAkB,CAAC,CAAC;EACvCqC,IAAI,EAAErC,UAAU,CAAC,CAAC,iBAAiB,CAAC,CAAC;EACrCsC,WAAW,EAAEtC,UAAU,CAAC,CAAC,0BAA0B,CAAC,CAAC;EACrDuC,UAAU,EAAEvC,UAAU,CAAC,CAAC,uBAAuB,CAAC,CAAC;EACjDwC,QAAQ,EAAExC,UAAU,CAAC,CAAC,sBAAsB,CAAC,CAAC;EAC9CyC,OAAO,EAAEzC,UAAU,CAACE,oBAAoB,CAAC;EACzCwC,KAAK,EAAE1C,UAAU,CAAC,CAAC,iBAAiB,CAAC,CAAC;EACtC2C,IAAI,EAAE3C,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC;EACpC4C,MAAM,EAAE5C,UAAU,CAAC,CAAC,kBAAkB,CAAC,CAAC;EACxC6C,OAAO,EAAE7C,UAAU,CAAC,CAAC,qBAAqB,EAAE,GAAGI,mBAAmB,CAAC,CAAC;EACpE0C,IAAI,EAAE9C,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC;EACpC+C,SAAS,EAAE/C,UAAU,CAAC,CAAC,sBAAsB,CAAC,CAAC;EAC/CgD,KAAK,EAAEhD,UAAU,CAAC,CAAC,kBAAkB,CAAC,CAAC;EACvCiD,KAAK,EAAEjD,UAAU,CAAC,CAAC,kBAAkB,CAAC,CAAC;EACvCkD,OAAO,EAAElD,UAAU,CAAC,CAAC,oBAAoB,CAAC,CAAC;EAC3CmD,SAAS,EAAEnD,UAAU,CAAC,CAAC,sBAAsB,CAAC,CAAC;EAC/CoD,QAAQ,EAAEpD,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC;EAC7CqD,OAAO,EAAErD,UAAU,CAAC,CAAC,oBAAoB,CAAC,CAAC;EAC3CsD,QAAQ,EAAEtD,UAAU,CAAC,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAC;EACnEuD,OAAO,EAAEvD,UAAU,CAAC,CAAC,oBAAoB,CAAC,CAAC;EAC3CwD,OAAO,EAAExD,UAAU,CAAC,CAAC,oBAAoB,CAAC,CAAC;EAC3CyD,IAAI,EAAEzD,UAAU,CAACE,oBAAoB,CAAC;EACtCwD,WAAW,EAAE1D,UAAU,CAAC,CAAC,yBAAyB,CAAC,CAAC;EACpD2D,IAAI,EAAE3D,UAAU,CAAC,CAAC,iBAAiB,CAAC,CAAC;EACrC4D,GAAG,EAAE5D,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC;EAClC6D,KAAK,EAAE7D,UAAU,CAAC,CAAC,kBAAkB,CAAC,CAAC;EACvCN,IAAI,EAAEM,UAAU,CAAC,CAAC,mBAAmB,CAAC,CAAC;EACvC8D,QAAQ,EAAE9D,UAAU,CAAC,CAAC,sBAAsB,CAAC,CAAC;EAC9C+D,MAAM,EAAE/D,UAAU,CAAC,CAAC,oBAAoB,CAAC,CAAC;EAC1CgE,MAAM,EAAEhE,UAAU,CAAC,CAAC,kBAAkB,CAAC,CAAC;EACxCiE,WAAW,EAAEjE,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAAC;EACnDkE,MAAM,EAAElE,UAAU,CAAC,CAAC,mBAAmB,CAAC,CAAC;EACzCmE,OAAO,EAAEnE,UAAU,CAAC,CAAC,oBAAoB,CAAC,CAAC;EAC3CoE,MAAM,EAAEpE,UAAU,CAAC,CAAC,mBAAmB,CAAC,CAAC;EACzCqE,KAAK,EAAErE,UAAU,CAAC,CAAC,kBAAkB,CAAC,CAAC;EACvCsE,IAAI,EAAEtE,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC;EACpCuE,IAAI,EAAEvE,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC;EACpCwE,KAAK,EAAExE,UAAU,CAAC,CAAC,kBAAkB,CAAC,CAAC;EACvCyE,UAAU,EAAEzE,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAAC;EAClD0E,MAAM,EAAE1E,UAAU,CAAC,CAAC,mBAAmB,CAAC,CAAC;EACzC2E,GAAG,EAAE3E,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC;EACnC4E,GAAG,EAAE5E,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC;EACnC6E,WAAW,EAAE7E,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAAC;EACnD8E,MAAM,EAAE9E,UAAU,CAAC,CAAC,kBAAkB,CAAC,CAAC;EACxC+E,QAAQ,EAAE/E,UAAU,CAAC,CACnB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,CACvB,CAAC;EACFgF,IAAI,EAAEhF,UAAU,CAAC,CAAC,iBAAiB,CAAC,CAAC;EACrCiF,OAAO,EAAEjF,UAAU,CAAC,CAAC,uBAAuB,CAAC,CAAC;EAC9CkF,QAAQ,EAAElF,UAAU,CAAC,CAAC,sBAAsB,CAAC,CAAC;EAC9CmF,SAAS,EAAEnF,UAAU,CAAC,CAAC,uBAAuB,CAAC,CAAC;EAChDoF,SAAS,EAAEpF,UAAU,CAAC,CAAC,sBAAsB,CAAC,CAAC;EAC/CqF,MAAM,EAAErF,UAAU,CAACE,oBAAoB;AACzC,CAAC;;AAED;AACA,IAAI,iBAAiB,IAAIoF,gBAAgB,EAAE;EACzC1D,kBAAkB,CAAC2D,KAAK,GAAGvF,UAAU,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC5D;AAEO,MAAMwF,gBAEZ,GAAG;EACFC,KAAK,EAAE;IACLC,IAAI,EAAE5F,aAAa,CAAC,YAAY,EAAE,CAChC,YAAY,EACZ,gBAAgB,EAChB,GAAGK,eAAe,CACnB,CAAC;IACFwF,OAAO,EAAE7F,aAAa,CAAC,gBAAgB,EAAE,CAAC,oBAAoB,CAAC,CAAC;IAChE8F,EAAE,EAAE9F,aAAa,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC;GAC/C;EAED+F,IAAI,EAAE;IACJC,GAAG,EAAEhG,aAAa,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC;GAChD;EAEDiG,IAAI,EAAE;IACJC,SAAS,EAAE/F,QAAQ,CAAC,gBAAgB,EAAE,YAAY;GACnD;EAEDgG,IAAI,EAAE;;;IAGJC,KAAK,EAAEpG,aAAa,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC/DqG,KAAK,EAAErG,aAAa,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC/DsG,KAAK,EAAEtG,aAAa,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC/DuG,IAAI,EAAEvG,aAAa,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC5DwG,KAAK,EAAExG,aAAa,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC/DyG,IAAI,EAAEzG,aAAa,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC5D0G,KAAK,EAAE1G,aAAa,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC/D2G,MAAM,EAAE3G,aAAa,CAAC,aAAa,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAClE4G,KAAK,EAAE5G,aAAa,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC/D6G,IAAI,EAAE7G,aAAa,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC5D8G,KAAK,EAAE9G,aAAa,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC/D+G,KAAK,EAAE/G,aAAa,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC/DgH,IAAI,EAAEhH,aAAa,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC5DiH,IAAI,EAAEjH,aAAa,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC5DkH,IAAI,EAAElH,aAAa,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC5DmH,IAAI,EAAEnH,aAAa,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC5DoH,KAAK,EAAEpH,aAAa,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO;GAC/D;EAEDe,MAAM,EAAE;IACNsG,OAAO,EAAErH,aAAa,CAAC,gBAAgB,EAAE,CAAC,oBAAoB,CAAC,CAAC;IAChEsH,gBAAgB,EAAEtH,aAAa,CAAC,yBAAyB,EAAE,CACzD,6BAA6B,CAC9B,CAAC;IACFuH,gBAAgB,EAAEvH,aAAa,CAAC,yBAAyB,EAAE,CACzD,6BAA6B,CAC9B,CAAC;IACFwH,QAAQ,EAAExH,aAAa,CAAC,kBAAkB,EAAE,CAAC,sBAAsB,CAAC,CAAC;IACrEyH,SAAS,EAAEzH,aAAa,CAAC,mBAAmB,EAAE,CAAC,uBAAuB,CAAC,CAAC;IACxE0H,aAAa,EAAE1H,aAAa,CAAC,wBAAwB,EAAE,CACrD,4BAA4B,CAC7B,CAAC;IACF2H,KAAK,EAAE3H,aAAa,CAAC,eAAe,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAC5D4B,UAAU,EAAE5B,aAAa,CAAC,oBAAoB,EAAE,CAAC,wBAAwB,CAAC,CAAC;IAC3E6B,QAAQ,EAAE7B,aAAa,CAAC,kBAAkB,EAAE,CAAC,sBAAsB,CAAC;GACrE;EAED4H,MAAM,EAAE;IACNC,MAAM,EAAE7H,aAAa,CAAC,eAAe,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAC7D8H,MAAM,EAAE9H,aAAa,CAAC,eAAe,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAC7D+H,gBAAgB,EAAE/H,aAAa,CAAC,0BAA0B,EAAE,CAC1D,8BAA8B,CAC/B,CAAC;IACFgI,cAAc,EAAEhI,aAAa,CAAC,wBAAwB,EAAE,CACtD,4BAA4B,CAC7B,CAAC;IACF2C,OAAO,EAAE3C,aAAa,CAAC,gBAAgB,EAAE,CAAC,oBAAoB,CAAC,CAAC;IAChEiI,MAAM,EAAEjI,aAAa,CAAC,eAAe,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAC7DkI,wBAAwB,EAAElI,aAAa,CACrC,oCAAoC,EACpC,CAAC,wCAAwC,CAC3C,CAAC;IACDmI,yBAAyB,EAAEnI,aAAa,CACtC,qCAAqC,EACrC,CAAC,yCAAyC,CAC5C,CAAC;IACDoI,mBAAmB,EAAEpI,aAAa,CAAC,+BAA+B,EAAE,CAClE,mCAAmC,CACpC,CAAC;IACFqI,qBAAqB,EAAErI,aAAa,CAAC,iCAAiC,EAAE,CACtE,YAAY,CACb,CAAC;IACFsI,cAAc,EAAEtI,aAAa,CAAC,yBAAyB,EAAE,CACvD,6BAA6B,CAC9B,CAAC;IACFuI,EAAE,EAAEvI,aAAa,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,CAAC;IACjDwI,YAAY,EAAExI,aAAa,CAAC,sBAAsB,EAAE,CAClD,0BAA0B,CAC3B,CAAC;IACFyI,QAAQ,EAAEzI,aAAa,CAAC,kBAAkB,EAAE,CAAC,sBAAsB,CAAC,CAAC;IACrE0I,QAAQ,EAAE1I,aAAa,CAAC,kBAAkB,EAAE,CAAC,sBAAsB,CAAC,CAAC;IACrE2D,IAAI,EAAE3D,aAAa,CAAC,aAAa,EAAE,CAAC,iBAAiB,CAAC,CAAC;IACvD2I,iBAAiB,EAAE3I,aAAa,CAAC,2BAA2B,EAAE,CAC5D,+BAA+B,CAChC,CAAC;IACF4I,IAAI,EAAE5I,aAAa,CAAC,aAAa,EAAE,CAAC,iBAAiB,CAAC,CAAC;IACvD6I,cAAc,EAAE7I,aAAa,CAAC,yBAAyB,EAAE,CACvD,6BAA6B,CAC9B,CAAC;IACFuF,MAAM,EAAEvF,aAAa,CAAC,eAAe,EAAE,CAAC,mBAAmB,CAAC;GAC7D;EAEDgB,OAAO,EAAE;IACP8H,GAAG,EAAE5I,UAAU,CAACG,eAAe,CAAC;IAChC0I,IAAI,EAAE7I,UAAU,CAACG,eAAe;GACjC;EAED2I,OAAO,EAAE;IACPC,KAAK,EAAEjJ,aAAa,CAAC,eAAe,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAC5DkJ,SAAS,EAAElJ,aAAa,CAAC,mBAAmB,EAAE,CAAC,uBAAuB,CAAC,CAAC;IACxEgI,cAAc,EAAEhI,aAAa,CAAC,yBAAyB,EAAE,CACvD,6BAA6B,CAC9B,CAAC;IACFmJ,cAAc,EAAEnJ,aAAa,CAAC,yBAAyB,EAAE,CACvD,6BAA6B,CAC9B,CAAC;IACFoJ,GAAG,EAAEpJ,aAAa,CAAC,aAAa,EAAE,CAAC,iBAAiB,CAAC,CAAC;IACtDkI,wBAAwB,EAAElI,aAAa,CACrC,qCAAqC,EACrC,CAAC,yCAAyC,CAC5C,CAAC;IACDsI,cAAc,EAAEtI,aAAa,CAAC,0BAA0B,EAAE,CACxD,8BAA8B,CAC/B,CAAC;IACFqJ,GAAG,EAAErJ,aAAa,CAAC,aAAa,EAAE,CAAC,iBAAiB,CAAC,CAAC;IACtDwI,YAAY,EAAExI,aAAa,CAAC,uBAAuB,EAAE,CACnD,2BAA2B,CAC5B,CAAC;IACFsJ,OAAO,EAAEtJ,aAAa,CAAC,kBAAkB,EAAE,CAAC,sBAAsB,CAAC,CAAC;IACpE2I,iBAAiB,EAAE3I,aAAa,CAAC,4BAA4B,EAAE,CAC7D,gCAAgC,CACjC,CAAC;IACFuJ,GAAG,EAAEvJ,aAAa,CAAC,aAAa,EAAE,CAAC,iBAAiB,CAAC,CAAC;IACtD6I,cAAc,EAAE7I,aAAa,CAAC,0BAA0B,EAAE,CACxD,8BAA8B,CAC/B;GACF;EAEDwJ,MAAM,EAAE;IACNC,EAAE,EAAEtJ,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IAC1CuJ,aAAa,EAAE1J,aAAa,CAAC,wBAAwB,EAAE,CACrD,4BAA4B,CAC7B,CAAC;IACF2J,GAAG,EAAE3J,aAAa,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC;GACpD;EAEDmB,MAAM,EAAE;;IAENyI,aAAa,EAAE1J,UAAU,CAAC,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;IACtE2J,GAAG,EAAE1J,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACzC2J,WAAW,EAAE3J,QAAQ,CAAC,qBAAqB,EAAE,YAAY,CAAC;IAC1D4J,kBAAkB,EAAE5J,QAAQ,CAAC,6BAA6B,EAAE,YAAY,CAAC;IACzE6J,QAAQ,EAAErK,MAAM,CAAC,YAAY,EAAE,iBAAiB,EAAEU,eAAe,CAAC;IAClE4J,MAAM,EAAE9J,QAAQ,CAAC,gBAAgB,EAAE,YAAY,CAAC;IAChD4D,KAAK,EAAE/D,aAAa,CAAC,cAAc,EAAE,CAAC,kBAAkB,CAAC,CAAC;IAC1DqE,OAAO,EAAElE,QAAQ,CAAC,gBAAgB,EAAE,YAAY,CAAC;IACjDmE,MAAM,EAAEnE,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC;IAC/C+J,OAAO,EAAE/J,QAAQ,CAAC,gBAAgB,EAAE,YAAY,CAAC;IACjDuE,KAAK,EAAEvE,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC;IAC7CgK,WAAW,EAAEhK,QAAQ,CAAC,qBAAqB,EAAE,YAAY,CAAC;IAC1DiK,WAAW,EAAEjK,QAAQ,CAAC,sBAAsB,EAAE,YAAY,CAAC;IAC3DkK,WAAW,EAAElK,QAAQ,CAAC,oBAAoB,EAAE,YAAY;;AAE5D,CAAC;;ACnTD,MAAMmK,YAAY,GAAG;EACnB,YAAY,EAAE,EAAE;EAChB,eAAe,EAAE,EAAE;EACnB,kBAAkB,EAAE;AACtB,CAAC;AAED,MAAMC,aAAa,GAAG;EACpB,iBAAiB,EAAE,EAAE;EACrB,eAAe,EAAE,EAAE;EACnB,eAAe,EAAE;AACnB,CAAC;AAEc,uCAAUC,OAAgB,EAAEC,MAAc,EAAEC,SAAc,EAAE;EACzE,MAAMC,WAAW,GAAG/C,MAAM,CAACjE,IAAI,CAAC6G,OAAO,CAAC;EACxC,MAAMI,WAAW,GAAG,CAACD,WAAW,CAACE,MAAM;EACvC,MAAMC,WAAW,GAAGH,WAAW,CAACnG,IAAI,CAAC5E,IAAI,IAAIA,IAAI,KAAK,MAAM,CAAC;EAE7D,OAAO;IACL,GAAG8K,SAAS;IACZ,IAAID,MAAM,KAAK,YAAY,GAAGF,aAAa,GAAG,IAAI,CAAC;IACnD,IAAIK,WAAW,IAAIE,WAAW,GAAGR,YAAY,GAAG,IAAI;GACrD;AACH;;ACtBO,SAASS,aAAaA,CAC3BC,UAA0B,EAC1BC,cAAuC,EACvC;;;;EAIA,IAAI,CAACA,cAAc,IAAI,CAACD,UAAU,EAAE,OAAO,IAAI;;;;;;;;;;;;;;;;;;;EAmB/C,IAAIE,MAAM,CAACC,KAAK,CAACF,cAAc,CAAC,EAAEA,cAAc,GAAI,IAAGA,cAAe,EAAC;EAEvE,OACE,CAACC,MAAM,CAACE,UAAU,CAAE,IAAGJ,UAAW,EAAC,EAAEC,cAAc,CAAC,IACpD,CAACC,MAAM,CAACE,UAAU,CAAE,SAAQ,EAAEH,cAAc,CAAC;AAEjD;;ACxBoE;EAE3DI,KAAK,EAAIC;AAAC,IAAAC,MAAA,CAAAC,OAAA,IAAAD,MAAA;AAEnB,MAAME,aAAa,GAAG,wBAAwB;AAE9C,MAAMC,eAAe,GAAG,iDAAiD;AACzE,MAAMC,aAAa,GAAG,8CAA8C;AAEpE,MAAMtC,GAAG,GAAGuC,QAAQ,CAACC,IAAI,CAACxJ,IAAI,CAACuF,MAAM,CAACkE,cAAc,CAAC;AAcrD,YAAeC,cAAc,CAAU,UACrCC,GAAG,EACH;EACE,CAACN,eAAe,GAAG;IACjBO,sBAAsB,GAAG,KAAK;IAC9BC,aAAa,GAAG;GACjB,GAAG,EAAE;EACN,CAACP,aAAa,GAAG;IACfQ,eAAe,GAAG,KAAK;IACvBlB,cAAc,GAAG,EAAE;IACnBmB,GAAG,GAAG;GACP,GAAG;AACN,CAAC,EACD;EACA,MAAMC,OAAO,GAAGL,GAAG,CAACM,kBAAkB,CAAC;IACrCxM,MAAM,EAAES,QAAQ;IAChBgM,MAAM,EAAE7G,gBAAgB;IACxB8G,QAAQ,EAAE1K;GACX,CAAC;EAEF,MAAM;IAAE2K,KAAK;IAAEC,oBAAoB;IAAEjC;GAAQ,GAAGuB,GAAG;EAEnD,MAAMtB,SAAS,GAAGiC,4BAA4B,CAC5CX,GAAG,CAACxB,OAAO,EACXC,MAAM,EACNjF,gBACF,CAAC;EAED,MAAMoH,UAAU,GAAGT,eAAe,GAC7B,GAAEV,aAAc,UAAS,GAC1BhB,MAAM,KAAK,YAAY,GACvB,oBAAoB,GACpB,iBAAiB;EAErB,SAASoC,MAAMA,CAACjN,IAAuB,EAAEkN,KAAK,EAAE;IAC9C,IAAI,OAAOlN,IAAI,KAAK,QAAQ,EAAE;;;MAG5B,IAAIyJ,GAAG,CAACqB,SAAS,EAAE9K,IAAI,CAAC,IAAI8M,oBAAoB,CAAC9M,IAAI,CAAC,EAAE;QACtD6M,KAAK,CAAC7M,IAAI,CAAC;QACXkN,KAAK,CAACC,kBAAkB,CAAE,GAAEH,UAAW,IAAGhN,IAAK,KAAI,CAAC;;MAEtD;;IAGFA,IAAI,CAAC2D,OAAO,CAAC3D,IAAI,IAAIiN,MAAM,CAACjN,IAAI,EAAEkN,KAAK,CAAC,CAAC;;EAG3C,SAASE,eAAeA,CAACC,IAAI,EAAEC,IAAI,EAAEJ,KAAK,EAAE;IAC1C,IAAI;MAAEjN,IAAI;MAAEE,IAAI;MAAEH;KAAM,GAAGqN,IAAI;IAE/B,IAAI,CAACpN,IAAI,IAAI,CAAC6M,oBAAoB,CAAC9M,IAAI,CAAC,EAAE;IAE1C,IACEqL,cAAc,IACdlL,IAAI,IACJA,IAAI,CAACE,iBAAiB,IACtB,CAAC8K,aAAa,CAAChL,IAAI,IAAIA,IAAI,CAACE,iBAAiB,EAAEgL,cAAc,CAAC,EAC9D;MACA;;;;;IAKF,IAAIkB,eAAe,IAAItM,IAAI,KAAK,cAAc,EAAEA,IAAI,GAAG,QAAQ;IAE/D,OAAOiN,KAAK,CAACK,mBAAmB,CAAE,GAAEP,UAAW,IAAG/M,IAAK,GAAEuM,GAAI,EAAC,EAAEc,IAAI,CAAC;;EAGvE,OAAO;IACLtN,IAAI,EAAE,SAAS;IAEfwN,WAAW,EAAElB,aAAa,GAAG,IAAI,GAAGT,aAAa;IAEjDf,SAAS;IAET2C,WAAWA,CAACtN,IAAI,EAAE+M,KAAK,EAAEQ,IAAI,EAAE;MAC7B,IAAIvN,IAAI,CAACwN,IAAI,KAAK,QAAQ,IAAIxN,IAAI,CAACyN,MAAM,KAAK,SAAS,EAAE;QACvDf,KAAK,CAAC,IAAI,CAAC;QAEXI,MAAM,CAACjF,MAAM,CAACjE,IAAI,CAAC+G,SAAS,CAAC,EAAEoC,KAAK,CAAC;QAErC,IAAIb,sBAAsB,EAAE;UAC1Ba,KAAK,CAACC,kBAAkB,CAAC,gCAAgC,CAAC;;QAG5DO,IAAI,CAACG,MAAM,EAAE;;KAEhB;IAEDC,WAAWA,CAAC3N,IAAI,EAAE+M,KAAK,EAAE;MACvB,MAAMa,QAAQ,GAAGtB,OAAO,CAACtM,IAAI,CAAC;MAC9B,IAAI,CAAC4N,QAAQ,EAAE;MAEf,IAAIC,IAAI,GAAGD,QAAQ,CAACV,IAAI,CAACnN,MAAM;MAE/B,IACE6N,QAAQ,CAACJ,IAAI,KAAK,QAAQ,IAC1B,QAAQ,IAAIxN,IAAI,IAChBA,IAAI,CAAC8N,MAAM,IACX9N,IAAI,CAAC+N,SAAS,KAAK,WAAW,EAC9B;QACA,MAAMC,GAAG,GAAGhO,IAAI,CAAC8N,MAAM,CAACG,WAAW,EAAE;QACrCJ,IAAI,GAAGA,IAAI,CAAC9K,MAAM,CAACmL,CAAC,IAAIA,CAAC,CAACzK,QAAQ,CAACuK,GAAG,CAAC,CAAC;;MAG1ClB,MAAM,CAACe,IAAI,EAAEd,KAAK,CAAC;KACpB;IAEDoB,SAASA,CAACnO,IAAI,EAAE+M,KAAK,EAAEQ,IAAI,EAAE;MAC3B,IAAIvN,IAAI,CAACwN,IAAI,KAAK,IAAI,EAAE;QACtB,IAAIxN,IAAI,CAACoO,GAAG,KAAK,iBAAiB,EAAE;UAClCb,IAAI,CAACc,WAAW,CACd9C,CAAC,CAAC+C,cAAc,CACdvB,KAAK,CAACK,mBAAmB,CACtB,GAAEP,UAAW,eAAcR,GAAI,EAAC,EACjC,YACF,CAAC,EACD,CAAEkB,IAAI,CAACgB,IAAI,CAAwBC,KAAK,CAAC;WAE7C,CAAC;;;QAGH;;MAGF,IAAIjB,IAAI,CAACkB,UAAU,CAACC,iBAAiB,CAAC;QAAEC,QAAQ,EAAE;OAAU,CAAC,EAAE;MAE/D,IAAI3O,IAAI,CAACwN,IAAI,KAAK,UAAU,EAAE;;QAE5B,IAAI,CAACD,IAAI,CAACqB,kBAAkB,EAAE,EAAE;QAChC,IAAI,CAACrB,IAAI,CAACsB,YAAY,EAAE,EAAE;QAE1B,IACE7O,IAAI,CAACoO,GAAG,KAAK,iBAAiB,IAC9BzB,oBAAoB,CAAC,YAAY,CAAC,IAClCY,IAAI,CAACkB,UAAU,CAACK,gBAAgB,CAAC;UAAEC,MAAM,EAAExB,IAAI,CAACgB;SAAM,CAAC,IACvDhB,IAAI,CAACkB,UAAU,CAACF,IAAI,CAACS,SAAS,CAAClE,MAAM,KAAK,CAAC,EAC3C;UACAyC,IAAI,CAACkB,UAAU,CAACJ,WAAW,CACzB9C,CAAC,CAAC+C,cAAc,CACdvB,KAAK,CAACK,mBAAmB,CACtB,GAAEP,UAAW,gBAAeR,GAAI,EAAC,EAClC,aACF,CAAC,EACD,CAACkB,IAAI,CAACgB,IAAI,CAACT,MAAM,CACnB,CACF,CAAC;UACDP,IAAI,CAAC0B,IAAI,EAAE;UAEX;;;MAIJ,MAAMrB,QAAQ,GAAGtB,OAAO,CAACtM,IAAI,CAAC;MAC9B,IAAI,CAAC4N,QAAQ,EAAE;MAEf,MAAMsB,EAAE,GAAGjC,eAAe,CAACW,QAAQ,CAACV,IAAI,EAAEU,QAAQ,CAAC/N,IAAI,EAAEkN,KAAK,CAAC;MAC/D,IAAImC,EAAE,EAAE3B,IAAI,CAACc,WAAW,CAACa,EAAE,CAAC;KAC7B;IAEDC,OAAO,EAAEzE,MAAM,KAAK,cAAc,IAAI;;MAEpC0E,eAAeA,CAAC7B,IAAiC,EAAE;QACjD,IAAIA,IAAI,CAACgB,IAAI,CAACc,QAAQ,EAAE;UACtBvC,MAAM,CAAC,kBAAkB,EAAEb,GAAG,CAACqD,QAAQ,CAAC/B,IAAI,CAAC,CAAC;;OAEjD;;MAGD,6BAA6BgC,CAC3BhC,IAAiD,EACjD;QACAjN,eAAe,CAACkD,OAAO,CAAC3D,IAAI,IAAIiN,MAAM,CAACjN,IAAI,EAAEoM,GAAG,CAACqD,QAAQ,CAAC/B,IAAI,CAAC,CAAC,CAAC;;;GAGtE;AACH,CAAC,CAAC;;;;"} \ No newline at end of file diff --git a/node_modules/babel-plugin-polyfill-corejs2/node_modules/.bin/semver b/node_modules/babel-plugin-polyfill-corejs2/node_modules/.bin/semver new file mode 120000 index 00000000..c3277a7a --- /dev/null +++ b/node_modules/babel-plugin-polyfill-corejs2/node_modules/.bin/semver @@ -0,0 +1 @@ +../../../semver/bin/semver.js \ No newline at end of file diff --git a/node_modules/babel-plugin-polyfill-corejs2/package.json b/node_modules/babel-plugin-polyfill-corejs2/package.json new file mode 100644 index 00000000..f31bd339 --- /dev/null +++ b/node_modules/babel-plugin-polyfill-corejs2/package.json @@ -0,0 +1,43 @@ +{ + "name": "babel-plugin-polyfill-corejs2", + "version": "0.4.6", + "description": "A Babel plugin to inject imports to core-js@2 polyfills", + "repository": { + "type": "git", + "url": "https://github.com/babel/babel-polyfills.git", + "directory": "packages/babel-plugin-polyfill-corejs2" + }, + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "main": "lib/index.js", + "exports": { + ".": [ + { + "import": "./esm/index.mjs", + "default": "./lib/index.js" + }, + "./lib/index.js" + ], + "./package.json": "./package.json" + }, + "keywords": [ + "babel-plugin" + ], + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.3", + "semver": "^6.3.1" + }, + "devDependencies": { + "@babel/core": "^7.22.6", + "@babel/helper-plugin-test-runner": "^7.22.5", + "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.5" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + }, + "gitHead": "66a6819f44a57152798cb3b0a9272c65752bae86" +} \ No newline at end of file diff --git a/node_modules/babel-plugin-polyfill-corejs3/LICENSE b/node_modules/babel-plugin-polyfill-corejs3/LICENSE new file mode 100644 index 00000000..b74971fe --- /dev/null +++ b/node_modules/babel-plugin-polyfill-corejs3/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Nicolò Ribaudo and other contributors + +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. diff --git a/node_modules/babel-plugin-polyfill-corejs3/README.md b/node_modules/babel-plugin-polyfill-corejs3/README.md new file mode 100644 index 00000000..b7281ea6 --- /dev/null +++ b/node_modules/babel-plugin-polyfill-corejs3/README.md @@ -0,0 +1,78 @@ +# babel-plugin-polyfill-corejs3 + +## Install + +Using npm: + +```sh +npm install --save-dev babel-plugin-polyfill-corejs3 +``` + +or using yarn: + +```sh +yarn add babel-plugin-polyfill-corejs3 --dev +``` + +## Usage + +Add this plugin to your Babel configuration: + +```json +{ + "plugins": [["polyfill-corejs3", { "method": "usage-global", "version": "3.20" }]] +} +``` + +This package supports the `usage-pure`, `usage-global`, and `entry-global` methods. +When `entry-global` is used, it replaces imports to `core-js`. + +## Options + +See [here](../../docs/usage.md#options) for a list of options supported by every polyfill provider. + +### `version` + +`string`, defaults to `"3.0"`. + +This option only has an effect when used alongside `"method": "usage-global"` or `"method": "usage-pure"`. It is recommended to specify the minor version you are using as `core-js@3.0` may not include polyfills for the latest features. If you are bundling an app, you can provide the version directly from your node modules: + +```js +{ + plugins: [ + ["polyfill-corejs3", { + "method": "usage-pure", + // use `core-js/package.json` if you are using `usage-global` + "version": require("core-js-pure/package.json").version + }] + ] +} +``` + +If you are a library author, specify a reasonably modern `core-js` version in your +`package.json` and provide the plugin the minimal supported version. + +```json +{ + "dependencies": { + "core-js": "^3.20.0" + } +} +``` +```js +{ + plugins: [ + ["polyfill-corejs3", { + "method": "usage-global", + // improvise if you have more complicated version spec, e.g. > 3.1.4 + "version": require("./package.json").dependencies["core-js"] + }] + ] +} +``` + +### `proposals` + +`boolean`, defaults to `false`. + +This option only has an effect when used alongside `"method": "usage-global"` or `"method": "usage-pure"`. When `proposals` are `true`, any ES proposal supported by core-js will be polyfilled as well. \ No newline at end of file diff --git a/node_modules/babel-plugin-polyfill-corejs3/core-js-compat/README.md b/node_modules/babel-plugin-polyfill-corejs3/core-js-compat/README.md new file mode 100644 index 00000000..ba110c85 --- /dev/null +++ b/node_modules/babel-plugin-polyfill-corejs3/core-js-compat/README.md @@ -0,0 +1,4 @@ +`core-js-compat` exposes some files as JSON, and they cannot be +imported by Node.js ESM files. +This folder proxies `core-js-compat` to ensure that every entry +is CJS and can be safely imported. \ No newline at end of file diff --git a/node_modules/babel-plugin-polyfill-corejs3/core-js-compat/data.js b/node_modules/babel-plugin-polyfill-corejs3/core-js-compat/data.js new file mode 100644 index 00000000..b525c34b --- /dev/null +++ b/node_modules/babel-plugin-polyfill-corejs3/core-js-compat/data.js @@ -0,0 +1 @@ +module.exports = require("core-js-compat/data"); diff --git a/node_modules/babel-plugin-polyfill-corejs3/core-js-compat/entries.js b/node_modules/babel-plugin-polyfill-corejs3/core-js-compat/entries.js new file mode 100644 index 00000000..1afc97e3 --- /dev/null +++ b/node_modules/babel-plugin-polyfill-corejs3/core-js-compat/entries.js @@ -0,0 +1 @@ +module.exports = require("core-js-compat/entries"); diff --git a/node_modules/babel-plugin-polyfill-corejs3/core-js-compat/get-modules-list-for-target-version.js b/node_modules/babel-plugin-polyfill-corejs3/core-js-compat/get-modules-list-for-target-version.js new file mode 100644 index 00000000..35d1fb34 --- /dev/null +++ b/node_modules/babel-plugin-polyfill-corejs3/core-js-compat/get-modules-list-for-target-version.js @@ -0,0 +1 @@ +module.exports = require("core-js-compat/get-modules-list-for-target-version"); diff --git a/node_modules/babel-plugin-polyfill-corejs3/esm/index.mjs b/node_modules/babel-plugin-polyfill-corejs3/esm/index.mjs new file mode 100644 index 00000000..a0da2af6 --- /dev/null +++ b/node_modules/babel-plugin-polyfill-corejs3/esm/index.mjs @@ -0,0 +1,756 @@ +import corejs3Polyfills from '../core-js-compat/data.js'; +import getModulesListForTargetVersion from '../core-js-compat/get-modules-list-for-target-version.js'; +import * as _babel from '@babel/core'; +import corejsEntries from '../core-js-compat/entries.js'; +import defineProvider from '@babel/helper-define-polyfill-provider'; + +// This file is automatically generated by scripts/build-corejs3-shipped-proposals.mjs + +var corejs3ShippedProposalsList = new Set(["esnext.array.from-async", "esnext.array.group", "esnext.array.group-to-map", "esnext.array-buffer.detached", "esnext.array-buffer.transfer", "esnext.array-buffer.transfer-to-fixed-length", "esnext.iterator.constructor", "esnext.iterator.drop", "esnext.iterator.every", "esnext.iterator.filter", "esnext.iterator.find", "esnext.iterator.flat-map", "esnext.iterator.for-each", "esnext.iterator.from", "esnext.iterator.map", "esnext.iterator.reduce", "esnext.iterator.some", "esnext.iterator.take", "esnext.iterator.to-array", "esnext.json.is-raw-json", "esnext.json.parse", "esnext.json.raw-json", "esnext.map.group-by", "esnext.object.group-by", "esnext.promise.with-resolvers", "esnext.set.difference.v2", "esnext.set.intersection.v2", "esnext.set.is-disjoint-from.v2", "esnext.set.is-subset-of.v2", "esnext.set.is-superset-of.v2", "esnext.set.symmetric-difference.v2", "esnext.set.union.v2", "esnext.symbol.async-dispose", "esnext.symbol.dispose"]); + +const polyfillsOrder = {}; +Object.keys(corejs3Polyfills).forEach((name, index) => { + polyfillsOrder[name] = index; +}); +const define = (pure, global, name = global[0], exclude) => { + return { + name, + pure, + global: global.sort((a, b) => polyfillsOrder[a] - polyfillsOrder[b]), + exclude + }; +}; +const typed = name => define(null, [name, ...TypedArrayDependencies]); +const ArrayNatureIterators = ["es.array.iterator", "web.dom-collections.iterator"]; +const CommonIterators = ["es.string.iterator", ...ArrayNatureIterators]; +const ArrayNatureIteratorsWithTag = ["es.object.to-string", ...ArrayNatureIterators]; +const CommonIteratorsWithTag = ["es.object.to-string", ...CommonIterators]; +const ErrorDependencies = ["es.error.cause", "es.error.to-string"]; +const SuppressedErrorDependencies = ["esnext.suppressed-error.constructor", ...ErrorDependencies]; +const TypedArrayDependencies = ["es.typed-array.at", "es.typed-array.copy-within", "es.typed-array.every", "es.typed-array.fill", "es.typed-array.filter", "es.typed-array.find", "es.typed-array.find-index", "es.typed-array.find-last", "es.typed-array.find-last-index", "es.typed-array.for-each", "es.typed-array.includes", "es.typed-array.index-of", "es.typed-array.iterator", "es.typed-array.join", "es.typed-array.last-index-of", "es.typed-array.map", "es.typed-array.reduce", "es.typed-array.reduce-right", "es.typed-array.reverse", "es.typed-array.set", "es.typed-array.slice", "es.typed-array.some", "es.typed-array.sort", "es.typed-array.subarray", "es.typed-array.to-locale-string", "es.typed-array.to-reversed", "es.typed-array.to-sorted", "es.typed-array.to-string", "es.typed-array.with", "es.object.to-string", "es.array.iterator", "es.array-buffer.slice", "esnext.array-buffer.detached", "esnext.array-buffer.transfer", "esnext.array-buffer.transfer-to-fixed-length", "esnext.typed-array.filter-reject", "esnext.typed-array.group-by", "esnext.typed-array.to-spliced", "esnext.typed-array.unique-by"]; +const PromiseDependencies = ["es.promise", "es.object.to-string"]; +const PromiseDependenciesWithIterators = [...PromiseDependencies, ...CommonIterators]; +const SymbolDependencies = ["es.symbol", "es.symbol.description", "es.object.to-string"]; +const MapDependencies = ["es.map", "esnext.map.delete-all", "esnext.map.emplace", "esnext.map.every", "esnext.map.filter", "esnext.map.find", "esnext.map.find-key", "esnext.map.includes", "esnext.map.key-of", "esnext.map.map-keys", "esnext.map.map-values", "esnext.map.merge", "esnext.map.reduce", "esnext.map.some", "esnext.map.update", ...CommonIteratorsWithTag]; +const SetDependencies = ["es.set", "esnext.set.add-all", "esnext.set.delete-all", "esnext.set.difference", "esnext.set.difference.v2", "esnext.set.every", "esnext.set.filter", "esnext.set.find", "esnext.set.intersection", "esnext.set.intersection.v2", "esnext.set.is-disjoint-from", "esnext.set.is-disjoint-from.v2", "esnext.set.is-subset-of", "esnext.set.is-subset-of.v2", "esnext.set.is-superset-of", "esnext.set.is-superset-of.v2", "esnext.set.join", "esnext.set.map", "esnext.set.reduce", "esnext.set.some", "esnext.set.symmetric-difference", "esnext.set.symmetric-difference.v2", "esnext.set.union", "esnext.set.union.v2", ...CommonIteratorsWithTag]; +const WeakMapDependencies = ["es.weak-map", "esnext.weak-map.delete-all", "esnext.weak-map.emplace", ...CommonIteratorsWithTag]; +const WeakSetDependencies = ["es.weak-set", "esnext.weak-set.add-all", "esnext.weak-set.delete-all", ...CommonIteratorsWithTag]; +const DOMExceptionDependencies = ["web.dom-exception.constructor", "web.dom-exception.stack", "web.dom-exception.to-string-tag", "es.error.to-string"]; +const URLSearchParamsDependencies = ["web.url-search-params", "web.url-search-params.delete", "web.url-search-params.has", "web.url-search-params.size", ...CommonIteratorsWithTag]; +const AsyncIteratorDependencies = ["esnext.async-iterator.constructor", ...PromiseDependencies]; +const AsyncIteratorProblemMethods = ["esnext.async-iterator.every", "esnext.async-iterator.filter", "esnext.async-iterator.find", "esnext.async-iterator.flat-map", "esnext.async-iterator.for-each", "esnext.async-iterator.map", "esnext.async-iterator.reduce", "esnext.async-iterator.some"]; +const IteratorDependencies = ["esnext.iterator.constructor", "es.object.to-string"]; +const DecoratorMetadataDependencies = ["esnext.symbol.metadata", "esnext.function.metadata"]; +const TypedArrayStaticMethods = { + from: define(null, ["es.typed-array.from"]), + fromAsync: define(null, ["esnext.typed-array.from-async", ...PromiseDependenciesWithIterators]), + of: define(null, ["es.typed-array.of"]) +}; +const DataViewDependencies = ["es.data-view", "es.array-buffer.slice", "es.object.to-string"]; +const BuiltIns = { + AsyncDisposableStack: define("async-disposable-stack/index", ["esnext.async-disposable-stack.constructor", "es.object.to-string", "esnext.async-iterator.async-dispose", "esnext.iterator.dispose", ...PromiseDependencies, ...SuppressedErrorDependencies]), + AsyncIterator: define("async-iterator/index", AsyncIteratorDependencies), + AggregateError: define("aggregate-error", ["es.aggregate-error", ...ErrorDependencies, ...CommonIteratorsWithTag, "es.aggregate-error.cause"]), + ArrayBuffer: define(null, ["es.array-buffer.constructor", "es.array-buffer.slice", "es.object.to-string"]), + DataView: define(null, DataViewDependencies), + Date: define(null, ["es.date.to-string"]), + DOMException: define("dom-exception/index", DOMExceptionDependencies), + DisposableStack: define("disposable-stack/index", ["esnext.disposable-stack.constructor", "es.object.to-string", "esnext.iterator.dispose", ...SuppressedErrorDependencies]), + Error: define(null, ErrorDependencies), + EvalError: define(null, ErrorDependencies), + Float32Array: typed("es.typed-array.float32-array"), + Float64Array: typed("es.typed-array.float64-array"), + Int8Array: typed("es.typed-array.int8-array"), + Int16Array: typed("es.typed-array.int16-array"), + Int32Array: typed("es.typed-array.int32-array"), + Iterator: define("iterator/index", IteratorDependencies), + Uint8Array: typed("es.typed-array.uint8-array"), + Uint8ClampedArray: typed("es.typed-array.uint8-clamped-array"), + Uint16Array: typed("es.typed-array.uint16-array"), + Uint32Array: typed("es.typed-array.uint32-array"), + Map: define("map/index", MapDependencies), + Number: define(null, ["es.number.constructor"]), + Observable: define("observable/index", ["esnext.observable", "esnext.symbol.observable", "es.object.to-string", ...CommonIteratorsWithTag]), + Promise: define("promise/index", PromiseDependencies), + RangeError: define(null, ErrorDependencies), + ReferenceError: define(null, ErrorDependencies), + Reflect: define(null, ["es.reflect.to-string-tag", "es.object.to-string"]), + RegExp: define(null, ["es.regexp.constructor", "es.regexp.dot-all", "es.regexp.exec", "es.regexp.sticky", "es.regexp.to-string"]), + Set: define("set/index", SetDependencies), + SuppressedError: define("suppressed-error", SuppressedErrorDependencies), + Symbol: define("symbol/index", SymbolDependencies), + SyntaxError: define(null, ErrorDependencies), + TypeError: define(null, ErrorDependencies), + URIError: define(null, ErrorDependencies), + URL: define("url/index", ["web.url", ...URLSearchParamsDependencies]), + URLSearchParams: define("url-search-params/index", URLSearchParamsDependencies), + WeakMap: define("weak-map/index", WeakMapDependencies), + WeakSet: define("weak-set/index", WeakSetDependencies), + atob: define("atob", ["web.atob", ...DOMExceptionDependencies]), + btoa: define("btoa", ["web.btoa", ...DOMExceptionDependencies]), + clearImmediate: define("clear-immediate", ["web.immediate"]), + compositeKey: define("composite-key", ["esnext.composite-key"]), + compositeSymbol: define("composite-symbol", ["esnext.composite-symbol"]), + escape: define("escape", ["es.escape"]), + fetch: define(null, PromiseDependencies), + globalThis: define("global-this", ["es.global-this"]), + parseFloat: define("parse-float", ["es.parse-float"]), + parseInt: define("parse-int", ["es.parse-int"]), + queueMicrotask: define("queue-microtask", ["web.queue-microtask"]), + self: define("self", ["web.self"]), + setImmediate: define("set-immediate", ["web.immediate"]), + setInterval: define("set-interval", ["web.timers"]), + setTimeout: define("set-timeout", ["web.timers"]), + structuredClone: define("structured-clone", ["web.structured-clone", ...DOMExceptionDependencies, "es.array.iterator", "es.object.keys", "es.object.to-string", "es.map", "es.set"]), + unescape: define("unescape", ["es.unescape"]) +}; +const StaticProperties = { + AsyncIterator: { + from: define("async-iterator/from", ["esnext.async-iterator.from", ...AsyncIteratorDependencies, ...AsyncIteratorProblemMethods, ...CommonIterators]) + }, + Array: { + from: define("array/from", ["es.array.from", "es.string.iterator"]), + fromAsync: define("array/from-async", ["esnext.array.from-async", ...PromiseDependenciesWithIterators]), + isArray: define("array/is-array", ["es.array.is-array"]), + isTemplateObject: define("array/is-template-object", ["esnext.array.is-template-object"]), + of: define("array/of", ["es.array.of"]) + }, + ArrayBuffer: { + isView: define(null, ["es.array-buffer.is-view"]) + }, + BigInt: { + range: define("bigint/range", ["esnext.bigint.range", "es.object.to-string"]) + }, + Date: { + now: define("date/now", ["es.date.now"]) + }, + Function: { + isCallable: define("function/is-callable", ["esnext.function.is-callable"]), + isConstructor: define("function/is-constructor", ["esnext.function.is-constructor"]) + }, + Iterator: { + from: define("iterator/from", ["esnext.iterator.from", ...IteratorDependencies, ...CommonIterators]), + range: define("iterator/range", ["esnext.iterator.range", "es.object.to-string"]) + }, + JSON: { + isRawJSON: define("json/is-raw-json", ["esnext.json.is-raw-json"]), + parse: define("json/parse", ["esnext.json.parse", "es.object.keys"]), + rawJSON: define("json/raw-json", ["esnext.json.raw-json", "es.object.create", "es.object.freeze"]), + stringify: define("json/stringify", ["es.json.stringify"], "es.symbol") + }, + Math: { + DEG_PER_RAD: define("math/deg-per-rad", ["esnext.math.deg-per-rad"]), + RAD_PER_DEG: define("math/rad-per-deg", ["esnext.math.rad-per-deg"]), + acosh: define("math/acosh", ["es.math.acosh"]), + asinh: define("math/asinh", ["es.math.asinh"]), + atanh: define("math/atanh", ["es.math.atanh"]), + cbrt: define("math/cbrt", ["es.math.cbrt"]), + clamp: define("math/clamp", ["esnext.math.clamp"]), + clz32: define("math/clz32", ["es.math.clz32"]), + cosh: define("math/cosh", ["es.math.cosh"]), + degrees: define("math/degrees", ["esnext.math.degrees"]), + expm1: define("math/expm1", ["es.math.expm1"]), + fround: define("math/fround", ["es.math.fround"]), + f16round: define("math/f16round", ["esnext.math.f16round"]), + fscale: define("math/fscale", ["esnext.math.fscale"]), + hypot: define("math/hypot", ["es.math.hypot"]), + iaddh: define("math/iaddh", ["esnext.math.iaddh"]), + imul: define("math/imul", ["es.math.imul"]), + imulh: define("math/imulh", ["esnext.math.imulh"]), + isubh: define("math/isubh", ["esnext.math.isubh"]), + log10: define("math/log10", ["es.math.log10"]), + log1p: define("math/log1p", ["es.math.log1p"]), + log2: define("math/log2", ["es.math.log2"]), + radians: define("math/radians", ["esnext.math.radians"]), + scale: define("math/scale", ["esnext.math.scale"]), + seededPRNG: define("math/seeded-prng", ["esnext.math.seeded-prng"]), + sign: define("math/sign", ["es.math.sign"]), + signbit: define("math/signbit", ["esnext.math.signbit"]), + sinh: define("math/sinh", ["es.math.sinh"]), + tanh: define("math/tanh", ["es.math.tanh"]), + trunc: define("math/trunc", ["es.math.trunc"]), + umulh: define("math/umulh", ["esnext.math.umulh"]) + }, + Map: { + from: define(null, ["esnext.map.from", ...MapDependencies]), + groupBy: define(null, ["esnext.map.group-by", ...MapDependencies]), + keyBy: define(null, ["esnext.map.key-by", ...MapDependencies]), + of: define(null, ["esnext.map.of", ...MapDependencies]) + }, + Number: { + EPSILON: define("number/epsilon", ["es.number.epsilon"]), + MAX_SAFE_INTEGER: define("number/max-safe-integer", ["es.number.max-safe-integer"]), + MIN_SAFE_INTEGER: define("number/min-safe-integer", ["es.number.min-safe-integer"]), + fromString: define("number/from-string", ["esnext.number.from-string"]), + isFinite: define("number/is-finite", ["es.number.is-finite"]), + isInteger: define("number/is-integer", ["es.number.is-integer"]), + isNaN: define("number/is-nan", ["es.number.is-nan"]), + isSafeInteger: define("number/is-safe-integer", ["es.number.is-safe-integer"]), + parseFloat: define("number/parse-float", ["es.number.parse-float"]), + parseInt: define("number/parse-int", ["es.number.parse-int"]), + range: define("number/range", ["esnext.number.range", "es.object.to-string"]) + }, + Object: { + assign: define("object/assign", ["es.object.assign"]), + create: define("object/create", ["es.object.create"]), + defineProperties: define("object/define-properties", ["es.object.define-properties"]), + defineProperty: define("object/define-property", ["es.object.define-property"]), + entries: define("object/entries", ["es.object.entries"]), + freeze: define("object/freeze", ["es.object.freeze"]), + fromEntries: define("object/from-entries", ["es.object.from-entries", "es.array.iterator"]), + getOwnPropertyDescriptor: define("object/get-own-property-descriptor", ["es.object.get-own-property-descriptor"]), + getOwnPropertyDescriptors: define("object/get-own-property-descriptors", ["es.object.get-own-property-descriptors"]), + getOwnPropertyNames: define("object/get-own-property-names", ["es.object.get-own-property-names"]), + getOwnPropertySymbols: define("object/get-own-property-symbols", ["es.symbol"]), + getPrototypeOf: define("object/get-prototype-of", ["es.object.get-prototype-of"]), + groupBy: define("object/group-by", ["esnext.object.group-by", "es.object.create"]), + hasOwn: define("object/has-own", ["es.object.has-own"]), + is: define("object/is", ["es.object.is"]), + isExtensible: define("object/is-extensible", ["es.object.is-extensible"]), + isFrozen: define("object/is-frozen", ["es.object.is-frozen"]), + isSealed: define("object/is-sealed", ["es.object.is-sealed"]), + keys: define("object/keys", ["es.object.keys"]), + preventExtensions: define("object/prevent-extensions", ["es.object.prevent-extensions"]), + seal: define("object/seal", ["es.object.seal"]), + setPrototypeOf: define("object/set-prototype-of", ["es.object.set-prototype-of"]), + values: define("object/values", ["es.object.values"]) + }, + Promise: { + all: define(null, PromiseDependenciesWithIterators), + allSettled: define(null, ["es.promise.all-settled", ...PromiseDependenciesWithIterators]), + any: define(null, ["es.promise.any", "es.aggregate-error", ...PromiseDependenciesWithIterators]), + race: define(null, PromiseDependenciesWithIterators), + try: define(null, ["esnext.promise.try", ...PromiseDependencies]), + withResolvers: define(null, ["esnext.promise.with-resolvers", ...PromiseDependencies]) + }, + Reflect: { + apply: define("reflect/apply", ["es.reflect.apply"]), + construct: define("reflect/construct", ["es.reflect.construct"]), + defineMetadata: define("reflect/define-metadata", ["esnext.reflect.define-metadata"]), + defineProperty: define("reflect/define-property", ["es.reflect.define-property"]), + deleteMetadata: define("reflect/delete-metadata", ["esnext.reflect.delete-metadata"]), + deleteProperty: define("reflect/delete-property", ["es.reflect.delete-property"]), + get: define("reflect/get", ["es.reflect.get"]), + getMetadata: define("reflect/get-metadata", ["esnext.reflect.get-metadata"]), + getMetadataKeys: define("reflect/get-metadata-keys", ["esnext.reflect.get-metadata-keys"]), + getOwnMetadata: define("reflect/get-own-metadata", ["esnext.reflect.get-own-metadata"]), + getOwnMetadataKeys: define("reflect/get-own-metadata-keys", ["esnext.reflect.get-own-metadata-keys"]), + getOwnPropertyDescriptor: define("reflect/get-own-property-descriptor", ["es.reflect.get-own-property-descriptor"]), + getPrototypeOf: define("reflect/get-prototype-of", ["es.reflect.get-prototype-of"]), + has: define("reflect/has", ["es.reflect.has"]), + hasMetadata: define("reflect/has-metadata", ["esnext.reflect.has-metadata"]), + hasOwnMetadata: define("reflect/has-own-metadata", ["esnext.reflect.has-own-metadata"]), + isExtensible: define("reflect/is-extensible", ["es.reflect.is-extensible"]), + metadata: define("reflect/metadata", ["esnext.reflect.metadata"]), + ownKeys: define("reflect/own-keys", ["es.reflect.own-keys"]), + preventExtensions: define("reflect/prevent-extensions", ["es.reflect.prevent-extensions"]), + set: define("reflect/set", ["es.reflect.set"]), + setPrototypeOf: define("reflect/set-prototype-of", ["es.reflect.set-prototype-of"]) + }, + RegExp: { + escape: define("regexp/escape", ["esnext.regexp.escape"]) + }, + Set: { + from: define(null, ["esnext.set.from", ...SetDependencies]), + of: define(null, ["esnext.set.of", ...SetDependencies]) + }, + String: { + cooked: define("string/cooked", ["esnext.string.cooked"]), + dedent: define("string/dedent", ["esnext.string.dedent", "es.string.from-code-point", "es.weak-map"]), + fromCodePoint: define("string/from-code-point", ["es.string.from-code-point"]), + raw: define("string/raw", ["es.string.raw"]) + }, + Symbol: { + asyncDispose: define("symbol/async-dispose", ["esnext.symbol.async-dispose", "esnext.async-iterator.async-dispose"]), + asyncIterator: define("symbol/async-iterator", ["es.symbol.async-iterator"]), + dispose: define("symbol/dispose", ["esnext.symbol.dispose", "esnext.iterator.dispose"]), + for: define("symbol/for", [], "es.symbol"), + hasInstance: define("symbol/has-instance", ["es.symbol.has-instance", "es.function.has-instance"]), + isConcatSpreadable: define("symbol/is-concat-spreadable", ["es.symbol.is-concat-spreadable", "es.array.concat"]), + isRegistered: define("symbol/is-registered", ["esnext.symbol.is-registered", "es.symbol"]), + isRegisteredSymbol: define("symbol/is-registered-symbol", ["esnext.symbol.is-registered-symbol", "es.symbol"]), + isWellKnown: define("symbol/is-well-known", ["esnext.symbol.is-well-known", "es.symbol"]), + isWellKnownSymbol: define("symbol/is-well-known-symbol", ["esnext.symbol.is-well-known-symbol", "es.symbol"]), + iterator: define("symbol/iterator", ["es.symbol.iterator", ...CommonIteratorsWithTag]), + keyFor: define("symbol/key-for", [], "es.symbol"), + match: define("symbol/match", ["es.symbol.match", "es.string.match"]), + matcher: define("symbol/matcher", ["esnext.symbol.matcher"]), + matchAll: define("symbol/match-all", ["es.symbol.match-all", "es.string.match-all"]), + metadata: define("symbol/metadata", DecoratorMetadataDependencies), + metadataKey: define("symbol/metadata-key", ["esnext.symbol.metadata-key"]), + observable: define("symbol/observable", ["esnext.symbol.observable"]), + patternMatch: define("symbol/pattern-match", ["esnext.symbol.pattern-match"]), + replace: define("symbol/replace", ["es.symbol.replace", "es.string.replace"]), + search: define("symbol/search", ["es.symbol.search", "es.string.search"]), + species: define("symbol/species", ["es.symbol.species", "es.array.species"]), + split: define("symbol/split", ["es.symbol.split", "es.string.split"]), + toPrimitive: define("symbol/to-primitive", ["es.symbol.to-primitive", "es.date.to-primitive"]), + toStringTag: define("symbol/to-string-tag", ["es.symbol.to-string-tag", "es.object.to-string", "es.math.to-string-tag", "es.json.to-string-tag"]), + unscopables: define("symbol/unscopables", ["es.symbol.unscopables"]) + }, + URL: { + canParse: define("url/can-parse", ["web.url.can-parse", "web.url"]) + }, + WeakMap: { + from: define(null, ["esnext.weak-map.from", ...WeakMapDependencies]), + of: define(null, ["esnext.weak-map.of", ...WeakMapDependencies]) + }, + WeakSet: { + from: define(null, ["esnext.weak-set.from", ...WeakSetDependencies]), + of: define(null, ["esnext.weak-set.of", ...WeakSetDependencies]) + }, + Int8Array: TypedArrayStaticMethods, + Uint8Array: TypedArrayStaticMethods, + Uint8ClampedArray: TypedArrayStaticMethods, + Int16Array: TypedArrayStaticMethods, + Uint16Array: TypedArrayStaticMethods, + Int32Array: TypedArrayStaticMethods, + Uint32Array: TypedArrayStaticMethods, + Float32Array: TypedArrayStaticMethods, + Float64Array: TypedArrayStaticMethods, + WebAssembly: { + CompileError: define(null, ErrorDependencies), + LinkError: define(null, ErrorDependencies), + RuntimeError: define(null, ErrorDependencies) + } +}; +const InstanceProperties = { + asIndexedPairs: define("instance/asIndexedPairs", ["esnext.async-iterator.as-indexed-pairs", ...AsyncIteratorDependencies, "esnext.iterator.as-indexed-pairs", ...IteratorDependencies]), + at: define("instance/at", [ + // TODO: We should introduce overloaded instance methods definition + // Before that is implemented, the `esnext.string.at` must be the first + // In pure mode, the provider resolves the descriptor as a "pure" `esnext.string.at` + // and treats the compat-data of `esnext.string.at` as the compat-data of + // pure import `instance/at`. The first polyfill here should have the lowest corejs + // supported versions. + "esnext.string.at", "es.string.at-alternative", "es.array.at"]), + anchor: define(null, ["es.string.anchor"]), + big: define(null, ["es.string.big"]), + bind: define("instance/bind", ["es.function.bind"]), + blink: define(null, ["es.string.blink"]), + bold: define(null, ["es.string.bold"]), + codePointAt: define("instance/code-point-at", ["es.string.code-point-at"]), + codePoints: define("instance/code-points", ["esnext.string.code-points"]), + concat: define("instance/concat", ["es.array.concat"], undefined, ["String"]), + copyWithin: define("instance/copy-within", ["es.array.copy-within"]), + demethodize: define("instance/demethodize", ["esnext.function.demethodize"]), + description: define(null, ["es.symbol", "es.symbol.description"]), + dotAll: define(null, ["es.regexp.dot-all"]), + drop: define(null, ["esnext.async-iterator.drop", ...AsyncIteratorDependencies, "esnext.iterator.drop", ...IteratorDependencies]), + emplace: define("instance/emplace", ["esnext.map.emplace", "esnext.weak-map.emplace"]), + endsWith: define("instance/ends-with", ["es.string.ends-with"]), + entries: define("instance/entries", ArrayNatureIteratorsWithTag), + every: define("instance/every", ["es.array.every", "esnext.async-iterator.every", + // TODO: add async iterator dependencies when we support sub-dependencies + // esnext.async-iterator.every depends on es.promise + // but we don't want to pull es.promise when esnext.async-iterator is disabled + // + // ...AsyncIteratorDependencies + "esnext.iterator.every", ...IteratorDependencies]), + exec: define(null, ["es.regexp.exec"]), + fill: define("instance/fill", ["es.array.fill"]), + filter: define("instance/filter", ["es.array.filter", "esnext.async-iterator.filter", "esnext.iterator.filter", ...IteratorDependencies]), + filterReject: define("instance/filterReject", ["esnext.array.filter-reject"]), + finally: define(null, ["es.promise.finally", ...PromiseDependencies]), + find: define("instance/find", ["es.array.find", "esnext.async-iterator.find", "esnext.iterator.find", ...IteratorDependencies]), + findIndex: define("instance/find-index", ["es.array.find-index"]), + findLast: define("instance/find-last", ["es.array.find-last"]), + findLastIndex: define("instance/find-last-index", ["es.array.find-last-index"]), + fixed: define(null, ["es.string.fixed"]), + flags: define("instance/flags", ["es.regexp.flags"]), + flatMap: define("instance/flat-map", ["es.array.flat-map", "es.array.unscopables.flat-map", "esnext.async-iterator.flat-map", "esnext.iterator.flat-map", ...IteratorDependencies]), + flat: define("instance/flat", ["es.array.flat", "es.array.unscopables.flat"]), + getFloat16: define(null, ["esnext.data-view.get-float16", ...DataViewDependencies]), + getUint8Clamped: define(null, ["esnext.data-view.get-uint8-clamped", ...DataViewDependencies]), + getYear: define(null, ["es.date.get-year"]), + group: define("instance/group", ["esnext.array.group"]), + groupBy: define("instance/group-by", ["esnext.array.group-by"]), + groupByToMap: define("instance/group-by-to-map", ["esnext.array.group-by-to-map", "es.map", "es.object.to-string"]), + groupToMap: define("instance/group-to-map", ["esnext.array.group-to-map", "es.map", "es.object.to-string"]), + fontcolor: define(null, ["es.string.fontcolor"]), + fontsize: define(null, ["es.string.fontsize"]), + forEach: define("instance/for-each", ["es.array.for-each", "esnext.async-iterator.for-each", "esnext.iterator.for-each", ...IteratorDependencies, "web.dom-collections.for-each"]), + includes: define("instance/includes", ["es.array.includes", "es.string.includes"]), + indexed: define(null, ["esnext.async-iterator.indexed", ...AsyncIteratorDependencies, "esnext.iterator.indexed", ...IteratorDependencies]), + indexOf: define("instance/index-of", ["es.array.index-of"]), + isWellFormed: define("instance/is-well-formed", ["es.string.is-well-formed"]), + italic: define(null, ["es.string.italics"]), + join: define(null, ["es.array.join"]), + keys: define("instance/keys", ArrayNatureIteratorsWithTag), + lastIndex: define(null, ["esnext.array.last-index"]), + lastIndexOf: define("instance/last-index-of", ["es.array.last-index-of"]), + lastItem: define(null, ["esnext.array.last-item"]), + link: define(null, ["es.string.link"]), + map: define("instance/map", ["es.array.map", "esnext.async-iterator.map", "esnext.iterator.map"]), + match: define(null, ["es.string.match", "es.regexp.exec"]), + matchAll: define("instance/match-all", ["es.string.match-all", "es.regexp.exec"]), + name: define(null, ["es.function.name"]), + padEnd: define("instance/pad-end", ["es.string.pad-end"]), + padStart: define("instance/pad-start", ["es.string.pad-start"]), + push: define("instance/push", ["es.array.push"]), + reduce: define("instance/reduce", ["es.array.reduce", "esnext.async-iterator.reduce", "esnext.iterator.reduce", ...IteratorDependencies]), + reduceRight: define("instance/reduce-right", ["es.array.reduce-right"]), + repeat: define("instance/repeat", ["es.string.repeat"]), + replace: define(null, ["es.string.replace", "es.regexp.exec"]), + replaceAll: define("instance/replace-all", ["es.string.replace-all", "es.string.replace", "es.regexp.exec"]), + reverse: define("instance/reverse", ["es.array.reverse"]), + search: define(null, ["es.string.search", "es.regexp.exec"]), + setFloat16: define(null, ["esnext.data-view.set-float16", ...DataViewDependencies]), + setUint8Clamped: define(null, ["esnext.data-view.set-uint8-clamped", ...DataViewDependencies]), + setYear: define(null, ["es.date.set-year"]), + slice: define("instance/slice", ["es.array.slice"]), + small: define(null, ["es.string.small"]), + some: define("instance/some", ["es.array.some", "esnext.async-iterator.some", "esnext.iterator.some", ...IteratorDependencies]), + sort: define("instance/sort", ["es.array.sort"]), + splice: define("instance/splice", ["es.array.splice"]), + split: define(null, ["es.string.split", "es.regexp.exec"]), + startsWith: define("instance/starts-with", ["es.string.starts-with"]), + sticky: define(null, ["es.regexp.sticky"]), + strike: define(null, ["es.string.strike"]), + sub: define(null, ["es.string.sub"]), + substr: define(null, ["es.string.substr"]), + sup: define(null, ["es.string.sup"]), + take: define(null, ["esnext.async-iterator.take", ...AsyncIteratorDependencies, "esnext.iterator.take", ...IteratorDependencies]), + test: define(null, ["es.regexp.test", "es.regexp.exec"]), + toArray: define(null, ["esnext.async-iterator.to-array", ...AsyncIteratorDependencies, "esnext.iterator.to-array", ...IteratorDependencies]), + toAsync: define(null, ["esnext.iterator.to-async", ...IteratorDependencies, ...AsyncIteratorDependencies, ...AsyncIteratorProblemMethods]), + toExponential: define(null, ["es.number.to-exponential"]), + toFixed: define(null, ["es.number.to-fixed"]), + toGMTString: define(null, ["es.date.to-gmt-string"]), + toISOString: define(null, ["es.date.to-iso-string"]), + toJSON: define(null, ["es.date.to-json", "web.url.to-json"]), + toPrecision: define(null, ["es.number.to-precision"]), + toReversed: define("instance/to-reversed", ["es.array.to-reversed"]), + toSorted: define("instance/to-sorted", ["es.array.to-sorted", "es.array.sort"]), + toSpliced: define("instance/to-spliced", ["es.array.to-spliced"]), + toString: define(null, ["es.object.to-string", "es.error.to-string", "es.date.to-string", "es.regexp.to-string"]), + toWellFormed: define("instance/to-well-formed", ["es.string.to-well-formed"]), + trim: define("instance/trim", ["es.string.trim"]), + trimEnd: define("instance/trim-end", ["es.string.trim-end"]), + trimLeft: define("instance/trim-left", ["es.string.trim-start"]), + trimRight: define("instance/trim-right", ["es.string.trim-end"]), + trimStart: define("instance/trim-start", ["es.string.trim-start"]), + uniqueBy: define("instance/unique-by", ["esnext.array.unique-by", "es.map"]), + unshift: define("instance/unshift", ["es.array.unshift"]), + unThis: define("instance/un-this", ["esnext.function.un-this"]), + values: define("instance/values", ArrayNatureIteratorsWithTag), + with: define("instance/with", ["es.array.with"]), + __defineGetter__: define(null, ["es.object.define-getter"]), + __defineSetter__: define(null, ["es.object.define-setter"]), + __lookupGetter__: define(null, ["es.object.lookup-getter"]), + __lookupSetter__: define(null, ["es.object.lookup-setter"]), + ["__proto__"]: define(null, ["es.object.proto"]) +}; + +const { + types: t$2 +} = _babel.default || _babel; +function canSkipPolyfill(desc, path) { + const { + node, + parent + } = path; + switch (desc.name) { + case "es.string.split": + { + if (!t$2.isCallExpression(parent, { + callee: node + })) return false; + if (parent.arguments.length < 1) return true; + const splitter = parent.arguments[0]; + return t$2.isStringLiteral(splitter) || t$2.isTemplateLiteral(splitter); + } + } +} + +const { + types: t$1 +} = _babel.default || _babel; +const BABEL_RUNTIME = "@babel/runtime-corejs3"; +function callMethod(path, id) { + const { + object + } = path.node; + let context1, context2; + if (t$1.isIdentifier(object)) { + context1 = object; + context2 = t$1.cloneNode(object); + } else { + context1 = path.scope.generateDeclaredUidIdentifier("context"); + context2 = t$1.assignmentExpression("=", t$1.cloneNode(context1), object); + } + path.replaceWith(t$1.memberExpression(t$1.callExpression(id, [context2]), t$1.identifier("call"))); + path.parentPath.unshiftContainer("arguments", context1); +} +function isCoreJSSource(source) { + if (typeof source === "string") { + source = source.replace(/\\/g, "/").replace(/(\/(index)?)?(\.js)?$/i, "").toLowerCase(); + } + return Object.prototype.hasOwnProperty.call(corejsEntries, source) && corejsEntries[source]; +} +function coreJSModule(name) { + return `core-js/modules/${name}.js`; +} +function coreJSPureHelper(name, useBabelRuntime, ext) { + return useBabelRuntime ? `${BABEL_RUNTIME}/core-js/${name}${ext}` : `core-js-pure/features/${name}.js`; +} + +const { + types: t +} = _babel.default || _babel; +const presetEnvCompat = "#__secret_key__@babel/preset-env__compatibility"; +const runtimeCompat = "#__secret_key__@babel/runtime__compatibility"; +const uniqueObjects = ["array", "string", "iterator", "async-iterator", "dom-collections"].map(v => new RegExp(`[a-z]*\\.${v}\\..*`)); +const esnextFallback = (name, cb) => { + if (cb(name)) return true; + if (!name.startsWith("es.")) return false; + const fallback = `esnext.${name.slice(3)}`; + if (!corejs3Polyfills[fallback]) return false; + return cb(fallback); +}; +var index = defineProvider(function ({ + getUtils, + method, + shouldInjectPolyfill, + createMetaResolver, + debug, + babel +}, { + version = 3, + proposals, + shippedProposals, + [presetEnvCompat]: { + noRuntimeName = false + } = {}, + [runtimeCompat]: { + useBabelRuntime = false, + ext = ".js" + } = {} +}) { + const isWebpack = babel.caller(caller => (caller == null ? void 0 : caller.name) === "babel-loader"); + const resolve = createMetaResolver({ + global: BuiltIns, + static: StaticProperties, + instance: InstanceProperties + }); + const available = new Set(getModulesListForTargetVersion(version)); + function getCoreJSPureBase(useProposalBase) { + return useBabelRuntime ? useProposalBase ? `${BABEL_RUNTIME}/core-js` : `${BABEL_RUNTIME}/core-js-stable` : useProposalBase ? "core-js-pure/features" : "core-js-pure/stable"; + } + function maybeInjectGlobalImpl(name, utils) { + if (shouldInjectPolyfill(name)) { + debug(name); + utils.injectGlobalImport(coreJSModule(name)); + return true; + } + return false; + } + function maybeInjectGlobal(names, utils, fallback = true) { + for (const name of names) { + if (fallback) { + esnextFallback(name, name => maybeInjectGlobalImpl(name, utils)); + } else { + maybeInjectGlobalImpl(name, utils); + } + } + } + function maybeInjectPure(desc, hint, utils, object) { + if (desc.pure && !(object && desc.exclude && desc.exclude.includes(object)) && esnextFallback(desc.name, shouldInjectPolyfill)) { + const { + name + } = desc; + let useProposalBase = false; + if (proposals || shippedProposals && name.startsWith("esnext.")) { + useProposalBase = true; + } else if (name.startsWith("es.") && !available.has(name)) { + useProposalBase = true; + } + const coreJSPureBase = getCoreJSPureBase(useProposalBase); + return utils.injectDefaultImport(`${coreJSPureBase}/${desc.pure}${ext}`, hint); + } + } + function isFeatureStable(name) { + if (name.startsWith("esnext.")) { + const esName = `es.${name.slice(7)}`; + // If its imaginative esName is not in latest compat data, it means + // the proposal is not stage 4 + return esName in corejs3Polyfills; + } + return true; + } + return { + name: "corejs3", + runtimeName: noRuntimeName ? null : BABEL_RUNTIME, + polyfills: corejs3Polyfills, + filterPolyfills(name) { + if (!available.has(name)) return false; + if (proposals || method === "entry-global") return true; + if (shippedProposals && corejs3ShippedProposalsList.has(name)) { + return true; + } + return isFeatureStable(name); + }, + entryGlobal(meta, utils, path) { + if (meta.kind !== "import") return; + const modules = isCoreJSSource(meta.source); + if (!modules) return; + if (modules.length === 1 && meta.source === coreJSModule(modules[0]) && shouldInjectPolyfill(modules[0])) { + // Avoid infinite loop: do not replace imports with a new copy of + // themselves. + debug(null); + return; + } + const modulesSet = new Set(modules); + const filteredModules = modules.filter(module => { + if (!module.startsWith("esnext.")) return true; + const stable = module.replace("esnext.", "es."); + if (modulesSet.has(stable) && shouldInjectPolyfill(stable)) { + return false; + } + return true; + }); + maybeInjectGlobal(filteredModules, utils, false); + path.remove(); + }, + usageGlobal(meta, utils, path) { + const resolved = resolve(meta); + if (!resolved) return; + if (canSkipPolyfill(resolved.desc, path)) return; + let deps = resolved.desc.global; + if (resolved.kind !== "global" && "object" in meta && meta.object && meta.placement === "prototype") { + const low = meta.object.toLowerCase(); + deps = deps.filter(m => uniqueObjects.some(v => v.test(m)) ? m.includes(low) : true); + } + maybeInjectGlobal(deps, utils); + }, + usagePure(meta, utils, path) { + if (meta.kind === "in") { + if (meta.key === "Symbol.iterator") { + path.replaceWith(t.callExpression(utils.injectDefaultImport(coreJSPureHelper("is-iterable", useBabelRuntime, ext), "isIterable"), [path.node.right] // meta.kind === "in" narrows this + )); + } + + return; + } + if (path.parentPath.isUnaryExpression({ + operator: "delete" + })) return; + if (meta.kind === "property") { + // We can't compile destructuring and updateExpression. + if (!path.isMemberExpression()) return; + if (!path.isReferenced()) return; + if (path.parentPath.isUpdateExpression()) return; + if (t.isSuper(path.node.object)) { + return; + } + if (meta.key === "Symbol.iterator") { + if (!shouldInjectPolyfill("es.symbol.iterator")) return; + const { + parent, + node + } = path; + if (t.isCallExpression(parent, { + callee: node + })) { + if (parent.arguments.length === 0) { + path.parentPath.replaceWith(t.callExpression(utils.injectDefaultImport(coreJSPureHelper("get-iterator", useBabelRuntime, ext), "getIterator"), [node.object])); + path.skip(); + } else { + callMethod(path, utils.injectDefaultImport(coreJSPureHelper("get-iterator-method", useBabelRuntime, ext), "getIteratorMethod")); + } + } else { + path.replaceWith(t.callExpression(utils.injectDefaultImport(coreJSPureHelper("get-iterator-method", useBabelRuntime, ext), "getIteratorMethod"), [path.node.object])); + } + return; + } + } + let resolved = resolve(meta); + if (!resolved) return; + if (canSkipPolyfill(resolved.desc, path)) return; + if (useBabelRuntime && resolved.desc.pure && resolved.desc.pure.slice(-6) === "/index") { + // Remove /index, since it doesn't exist in @babel/runtime-corejs3s + resolved = { + ...resolved, + desc: { + ...resolved.desc, + pure: resolved.desc.pure.slice(0, -6) + } + }; + } + if (resolved.kind === "global") { + const id = maybeInjectPure(resolved.desc, resolved.name, utils); + if (id) path.replaceWith(id); + } else if (resolved.kind === "static") { + const id = maybeInjectPure(resolved.desc, resolved.name, utils, + // @ts-expect-error + meta.object); + if (id) path.replaceWith(id); + } else if (resolved.kind === "instance") { + const id = maybeInjectPure(resolved.desc, `${resolved.name}InstanceProperty`, utils, + // @ts-expect-error + meta.object); + if (!id) return; + const { + node + } = path; + if (t.isCallExpression(path.parent, { + callee: node + })) { + callMethod(path, id); + } else { + path.replaceWith(t.callExpression(id, [node.object])); + } + } + }, + visitor: method === "usage-global" && { + // import("foo") + CallExpression(path) { + if (path.get("callee").isImport()) { + const utils = getUtils(path); + if (isWebpack) { + // Webpack uses Promise.all to handle dynamic import. + maybeInjectGlobal(PromiseDependenciesWithIterators, utils); + } else { + maybeInjectGlobal(PromiseDependencies, utils); + } + } + }, + // (async function () { }).finally(...) + Function(path) { + if (path.node.async) { + maybeInjectGlobal(PromiseDependencies, getUtils(path)); + } + }, + // for-of, [a, b] = c + "ForOfStatement|ArrayPattern"(path) { + maybeInjectGlobal(CommonIterators, getUtils(path)); + }, + // [...spread] + SpreadElement(path) { + if (!path.parentPath.isObjectExpression()) { + maybeInjectGlobal(CommonIterators, getUtils(path)); + } + }, + // yield* + YieldExpression(path) { + if (path.node.delegate) { + maybeInjectGlobal(CommonIterators, getUtils(path)); + } + }, + // Decorators metadata + Class(path) { + var _path$node$decorators; + const hasDecorators = ((_path$node$decorators = path.node.decorators) == null ? void 0 : _path$node$decorators.length) || path.node.body.body.some(el => { + var _decorators; + return (_decorators = el.decorators) == null ? void 0 : _decorators.length; + }); + if (hasDecorators) { + maybeInjectGlobal(DecoratorMetadataDependencies, getUtils(path)); + } + } + } + }; +}); + +export default index; +//# sourceMappingURL=index.mjs.map diff --git a/node_modules/babel-plugin-polyfill-corejs3/esm/index.mjs.map b/node_modules/babel-plugin-polyfill-corejs3/esm/index.mjs.map new file mode 100644 index 00000000..ce532867 --- /dev/null +++ b/node_modules/babel-plugin-polyfill-corejs3/esm/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs","sources":["../src/shipped-proposals.ts","../src/built-in-definitions.ts","../src/usage-filters.ts","../src/utils.ts","../src/index.ts"],"sourcesContent":["// This file is automatically generated by scripts/build-corejs3-shipped-proposals.mjs\n\nexport default new Set([\n \"esnext.array.from-async\",\n \"esnext.array.group\",\n \"esnext.array.group-to-map\",\n \"esnext.array-buffer.detached\",\n \"esnext.array-buffer.transfer\",\n \"esnext.array-buffer.transfer-to-fixed-length\",\n \"esnext.iterator.constructor\",\n \"esnext.iterator.drop\",\n \"esnext.iterator.every\",\n \"esnext.iterator.filter\",\n \"esnext.iterator.find\",\n \"esnext.iterator.flat-map\",\n \"esnext.iterator.for-each\",\n \"esnext.iterator.from\",\n \"esnext.iterator.map\",\n \"esnext.iterator.reduce\",\n \"esnext.iterator.some\",\n \"esnext.iterator.take\",\n \"esnext.iterator.to-array\",\n \"esnext.json.is-raw-json\",\n \"esnext.json.parse\",\n \"esnext.json.raw-json\",\n \"esnext.map.group-by\",\n \"esnext.object.group-by\",\n \"esnext.promise.with-resolvers\",\n \"esnext.set.difference.v2\",\n \"esnext.set.intersection.v2\",\n \"esnext.set.is-disjoint-from.v2\",\n \"esnext.set.is-subset-of.v2\",\n \"esnext.set.is-superset-of.v2\",\n \"esnext.set.symmetric-difference.v2\",\n \"esnext.set.union.v2\",\n \"esnext.symbol.async-dispose\",\n \"esnext.symbol.dispose\",\n]);\n","import corejs3Polyfills from \"../core-js-compat/data.js\";\n\ntype ObjectMap = { [name: string]: V };\ntype ObjectMap2 = ObjectMap>;\n\nexport type CoreJSPolyfillDescriptor = {\n name: string;\n pure: string | null;\n global: string[];\n exclude: string[] | null;\n};\n\nconst polyfillsOrder = {};\nObject.keys(corejs3Polyfills).forEach((name, index) => {\n polyfillsOrder[name] = index;\n});\n\nconst define = (\n pure,\n global,\n name = global[0],\n exclude?,\n): CoreJSPolyfillDescriptor => {\n return {\n name,\n pure,\n global: global.sort((a, b) => polyfillsOrder[a] - polyfillsOrder[b]),\n exclude,\n };\n};\n\nconst typed = (name: string) => define(null, [name, ...TypedArrayDependencies]);\n\nconst ArrayNatureIterators = [\n \"es.array.iterator\",\n \"web.dom-collections.iterator\",\n];\n\nexport const CommonIterators = [\"es.string.iterator\", ...ArrayNatureIterators];\n\nconst ArrayNatureIteratorsWithTag = [\n \"es.object.to-string\",\n ...ArrayNatureIterators,\n];\n\nconst CommonIteratorsWithTag = [\"es.object.to-string\", ...CommonIterators];\n\nconst ErrorDependencies = [\"es.error.cause\", \"es.error.to-string\"];\n\nconst SuppressedErrorDependencies = [\n \"esnext.suppressed-error.constructor\",\n ...ErrorDependencies,\n];\n\nconst TypedArrayDependencies = [\n \"es.typed-array.at\",\n \"es.typed-array.copy-within\",\n \"es.typed-array.every\",\n \"es.typed-array.fill\",\n \"es.typed-array.filter\",\n \"es.typed-array.find\",\n \"es.typed-array.find-index\",\n \"es.typed-array.find-last\",\n \"es.typed-array.find-last-index\",\n \"es.typed-array.for-each\",\n \"es.typed-array.includes\",\n \"es.typed-array.index-of\",\n \"es.typed-array.iterator\",\n \"es.typed-array.join\",\n \"es.typed-array.last-index-of\",\n \"es.typed-array.map\",\n \"es.typed-array.reduce\",\n \"es.typed-array.reduce-right\",\n \"es.typed-array.reverse\",\n \"es.typed-array.set\",\n \"es.typed-array.slice\",\n \"es.typed-array.some\",\n \"es.typed-array.sort\",\n \"es.typed-array.subarray\",\n \"es.typed-array.to-locale-string\",\n \"es.typed-array.to-reversed\",\n \"es.typed-array.to-sorted\",\n \"es.typed-array.to-string\",\n \"es.typed-array.with\",\n \"es.object.to-string\",\n \"es.array.iterator\",\n \"es.array-buffer.slice\",\n \"esnext.array-buffer.detached\",\n \"esnext.array-buffer.transfer\",\n \"esnext.array-buffer.transfer-to-fixed-length\",\n \"esnext.typed-array.filter-reject\",\n \"esnext.typed-array.group-by\",\n \"esnext.typed-array.to-spliced\",\n \"esnext.typed-array.unique-by\",\n];\n\nexport const PromiseDependencies = [\"es.promise\", \"es.object.to-string\"];\n\nexport const PromiseDependenciesWithIterators = [\n ...PromiseDependencies,\n ...CommonIterators,\n];\n\nconst SymbolDependencies = [\n \"es.symbol\",\n \"es.symbol.description\",\n \"es.object.to-string\",\n];\n\nconst MapDependencies = [\n \"es.map\",\n \"esnext.map.delete-all\",\n \"esnext.map.emplace\",\n \"esnext.map.every\",\n \"esnext.map.filter\",\n \"esnext.map.find\",\n \"esnext.map.find-key\",\n \"esnext.map.includes\",\n \"esnext.map.key-of\",\n \"esnext.map.map-keys\",\n \"esnext.map.map-values\",\n \"esnext.map.merge\",\n \"esnext.map.reduce\",\n \"esnext.map.some\",\n \"esnext.map.update\",\n ...CommonIteratorsWithTag,\n];\n\nconst SetDependencies = [\n \"es.set\",\n \"esnext.set.add-all\",\n \"esnext.set.delete-all\",\n \"esnext.set.difference\",\n \"esnext.set.difference.v2\",\n \"esnext.set.every\",\n \"esnext.set.filter\",\n \"esnext.set.find\",\n \"esnext.set.intersection\",\n \"esnext.set.intersection.v2\",\n \"esnext.set.is-disjoint-from\",\n \"esnext.set.is-disjoint-from.v2\",\n \"esnext.set.is-subset-of\",\n \"esnext.set.is-subset-of.v2\",\n \"esnext.set.is-superset-of\",\n \"esnext.set.is-superset-of.v2\",\n \"esnext.set.join\",\n \"esnext.set.map\",\n \"esnext.set.reduce\",\n \"esnext.set.some\",\n \"esnext.set.symmetric-difference\",\n \"esnext.set.symmetric-difference.v2\",\n \"esnext.set.union\",\n \"esnext.set.union.v2\",\n ...CommonIteratorsWithTag,\n];\n\nconst WeakMapDependencies = [\n \"es.weak-map\",\n \"esnext.weak-map.delete-all\",\n \"esnext.weak-map.emplace\",\n ...CommonIteratorsWithTag,\n];\n\nconst WeakSetDependencies = [\n \"es.weak-set\",\n \"esnext.weak-set.add-all\",\n \"esnext.weak-set.delete-all\",\n ...CommonIteratorsWithTag,\n];\n\nconst DOMExceptionDependencies = [\n \"web.dom-exception.constructor\",\n \"web.dom-exception.stack\",\n \"web.dom-exception.to-string-tag\",\n \"es.error.to-string\",\n];\n\nconst URLSearchParamsDependencies = [\n \"web.url-search-params\",\n \"web.url-search-params.delete\",\n \"web.url-search-params.has\",\n \"web.url-search-params.size\",\n ...CommonIteratorsWithTag,\n];\n\nconst AsyncIteratorDependencies = [\n \"esnext.async-iterator.constructor\",\n ...PromiseDependencies,\n];\n\nconst AsyncIteratorProblemMethods = [\n \"esnext.async-iterator.every\",\n \"esnext.async-iterator.filter\",\n \"esnext.async-iterator.find\",\n \"esnext.async-iterator.flat-map\",\n \"esnext.async-iterator.for-each\",\n \"esnext.async-iterator.map\",\n \"esnext.async-iterator.reduce\",\n \"esnext.async-iterator.some\",\n];\n\nconst IteratorDependencies = [\n \"esnext.iterator.constructor\",\n \"es.object.to-string\",\n];\n\nexport const DecoratorMetadataDependencies = [\n \"esnext.symbol.metadata\",\n \"esnext.function.metadata\",\n];\n\nconst TypedArrayStaticMethods = {\n from: define(null, [\"es.typed-array.from\"]),\n fromAsync: define(null, [\n \"esnext.typed-array.from-async\",\n ...PromiseDependenciesWithIterators,\n ]),\n of: define(null, [\"es.typed-array.of\"]),\n};\n\nconst DataViewDependencies = [\n \"es.data-view\",\n \"es.array-buffer.slice\",\n \"es.object.to-string\",\n];\n\nexport const BuiltIns: ObjectMap = {\n AsyncDisposableStack: define(\"async-disposable-stack/index\", [\n \"esnext.async-disposable-stack.constructor\",\n \"es.object.to-string\",\n \"esnext.async-iterator.async-dispose\",\n \"esnext.iterator.dispose\",\n ...PromiseDependencies,\n ...SuppressedErrorDependencies,\n ]),\n AsyncIterator: define(\"async-iterator/index\", AsyncIteratorDependencies),\n AggregateError: define(\"aggregate-error\", [\n \"es.aggregate-error\",\n ...ErrorDependencies,\n ...CommonIteratorsWithTag,\n \"es.aggregate-error.cause\",\n ]),\n ArrayBuffer: define(null, [\n \"es.array-buffer.constructor\",\n \"es.array-buffer.slice\",\n \"es.object.to-string\",\n ]),\n DataView: define(null, DataViewDependencies),\n Date: define(null, [\"es.date.to-string\"]),\n DOMException: define(\"dom-exception/index\", DOMExceptionDependencies),\n DisposableStack: define(\"disposable-stack/index\", [\n \"esnext.disposable-stack.constructor\",\n \"es.object.to-string\",\n \"esnext.iterator.dispose\",\n ...SuppressedErrorDependencies,\n ]),\n Error: define(null, ErrorDependencies),\n EvalError: define(null, ErrorDependencies),\n Float32Array: typed(\"es.typed-array.float32-array\"),\n Float64Array: typed(\"es.typed-array.float64-array\"),\n Int8Array: typed(\"es.typed-array.int8-array\"),\n Int16Array: typed(\"es.typed-array.int16-array\"),\n Int32Array: typed(\"es.typed-array.int32-array\"),\n Iterator: define(\"iterator/index\", IteratorDependencies),\n Uint8Array: typed(\"es.typed-array.uint8-array\"),\n Uint8ClampedArray: typed(\"es.typed-array.uint8-clamped-array\"),\n Uint16Array: typed(\"es.typed-array.uint16-array\"),\n Uint32Array: typed(\"es.typed-array.uint32-array\"),\n Map: define(\"map/index\", MapDependencies),\n Number: define(null, [\"es.number.constructor\"]),\n Observable: define(\"observable/index\", [\n \"esnext.observable\",\n \"esnext.symbol.observable\",\n \"es.object.to-string\",\n ...CommonIteratorsWithTag,\n ]),\n Promise: define(\"promise/index\", PromiseDependencies),\n RangeError: define(null, ErrorDependencies),\n ReferenceError: define(null, ErrorDependencies),\n Reflect: define(null, [\"es.reflect.to-string-tag\", \"es.object.to-string\"]),\n RegExp: define(null, [\n \"es.regexp.constructor\",\n \"es.regexp.dot-all\",\n \"es.regexp.exec\",\n \"es.regexp.sticky\",\n \"es.regexp.to-string\",\n ]),\n Set: define(\"set/index\", SetDependencies),\n SuppressedError: define(\"suppressed-error\", SuppressedErrorDependencies),\n Symbol: define(\"symbol/index\", SymbolDependencies),\n SyntaxError: define(null, ErrorDependencies),\n TypeError: define(null, ErrorDependencies),\n URIError: define(null, ErrorDependencies),\n URL: define(\"url/index\", [\"web.url\", ...URLSearchParamsDependencies]),\n URLSearchParams: define(\n \"url-search-params/index\",\n URLSearchParamsDependencies,\n ),\n WeakMap: define(\"weak-map/index\", WeakMapDependencies),\n WeakSet: define(\"weak-set/index\", WeakSetDependencies),\n\n atob: define(\"atob\", [\"web.atob\", ...DOMExceptionDependencies]),\n btoa: define(\"btoa\", [\"web.btoa\", ...DOMExceptionDependencies]),\n clearImmediate: define(\"clear-immediate\", [\"web.immediate\"]),\n compositeKey: define(\"composite-key\", [\"esnext.composite-key\"]),\n compositeSymbol: define(\"composite-symbol\", [\"esnext.composite-symbol\"]),\n escape: define(\"escape\", [\"es.escape\"]),\n fetch: define(null, PromiseDependencies),\n globalThis: define(\"global-this\", [\"es.global-this\"]),\n parseFloat: define(\"parse-float\", [\"es.parse-float\"]),\n parseInt: define(\"parse-int\", [\"es.parse-int\"]),\n queueMicrotask: define(\"queue-microtask\", [\"web.queue-microtask\"]),\n self: define(\"self\", [\"web.self\"]),\n setImmediate: define(\"set-immediate\", [\"web.immediate\"]),\n setInterval: define(\"set-interval\", [\"web.timers\"]),\n setTimeout: define(\"set-timeout\", [\"web.timers\"]),\n structuredClone: define(\"structured-clone\", [\n \"web.structured-clone\",\n ...DOMExceptionDependencies,\n \"es.array.iterator\",\n \"es.object.keys\",\n \"es.object.to-string\",\n \"es.map\",\n \"es.set\",\n ]),\n unescape: define(\"unescape\", [\"es.unescape\"]),\n};\n\nexport const StaticProperties: ObjectMap2 = {\n AsyncIterator: {\n from: define(\"async-iterator/from\", [\n \"esnext.async-iterator.from\",\n ...AsyncIteratorDependencies,\n ...AsyncIteratorProblemMethods,\n ...CommonIterators,\n ]),\n },\n Array: {\n from: define(\"array/from\", [\"es.array.from\", \"es.string.iterator\"]),\n fromAsync: define(\"array/from-async\", [\n \"esnext.array.from-async\",\n ...PromiseDependenciesWithIterators,\n ]),\n isArray: define(\"array/is-array\", [\"es.array.is-array\"]),\n isTemplateObject: define(\"array/is-template-object\", [\n \"esnext.array.is-template-object\",\n ]),\n of: define(\"array/of\", [\"es.array.of\"]),\n },\n\n ArrayBuffer: {\n isView: define(null, [\"es.array-buffer.is-view\"]),\n },\n\n BigInt: {\n range: define(\"bigint/range\", [\n \"esnext.bigint.range\",\n \"es.object.to-string\",\n ]),\n },\n\n Date: {\n now: define(\"date/now\", [\"es.date.now\"]),\n },\n\n Function: {\n isCallable: define(\"function/is-callable\", [\"esnext.function.is-callable\"]),\n isConstructor: define(\"function/is-constructor\", [\n \"esnext.function.is-constructor\",\n ]),\n },\n\n Iterator: {\n from: define(\"iterator/from\", [\n \"esnext.iterator.from\",\n ...IteratorDependencies,\n ...CommonIterators,\n ]),\n range: define(\"iterator/range\", [\n \"esnext.iterator.range\",\n \"es.object.to-string\",\n ]),\n },\n\n JSON: {\n isRawJSON: define(\"json/is-raw-json\", [\"esnext.json.is-raw-json\"]),\n parse: define(\"json/parse\", [\"esnext.json.parse\", \"es.object.keys\"]),\n rawJSON: define(\"json/raw-json\", [\n \"esnext.json.raw-json\",\n \"es.object.create\",\n \"es.object.freeze\",\n ]),\n stringify: define(\"json/stringify\", [\"es.json.stringify\"], \"es.symbol\"),\n },\n\n Math: {\n DEG_PER_RAD: define(\"math/deg-per-rad\", [\"esnext.math.deg-per-rad\"]),\n RAD_PER_DEG: define(\"math/rad-per-deg\", [\"esnext.math.rad-per-deg\"]),\n acosh: define(\"math/acosh\", [\"es.math.acosh\"]),\n asinh: define(\"math/asinh\", [\"es.math.asinh\"]),\n atanh: define(\"math/atanh\", [\"es.math.atanh\"]),\n cbrt: define(\"math/cbrt\", [\"es.math.cbrt\"]),\n clamp: define(\"math/clamp\", [\"esnext.math.clamp\"]),\n clz32: define(\"math/clz32\", [\"es.math.clz32\"]),\n cosh: define(\"math/cosh\", [\"es.math.cosh\"]),\n degrees: define(\"math/degrees\", [\"esnext.math.degrees\"]),\n expm1: define(\"math/expm1\", [\"es.math.expm1\"]),\n fround: define(\"math/fround\", [\"es.math.fround\"]),\n f16round: define(\"math/f16round\", [\"esnext.math.f16round\"]),\n fscale: define(\"math/fscale\", [\"esnext.math.fscale\"]),\n hypot: define(\"math/hypot\", [\"es.math.hypot\"]),\n iaddh: define(\"math/iaddh\", [\"esnext.math.iaddh\"]),\n imul: define(\"math/imul\", [\"es.math.imul\"]),\n imulh: define(\"math/imulh\", [\"esnext.math.imulh\"]),\n isubh: define(\"math/isubh\", [\"esnext.math.isubh\"]),\n log10: define(\"math/log10\", [\"es.math.log10\"]),\n log1p: define(\"math/log1p\", [\"es.math.log1p\"]),\n log2: define(\"math/log2\", [\"es.math.log2\"]),\n radians: define(\"math/radians\", [\"esnext.math.radians\"]),\n scale: define(\"math/scale\", [\"esnext.math.scale\"]),\n seededPRNG: define(\"math/seeded-prng\", [\"esnext.math.seeded-prng\"]),\n sign: define(\"math/sign\", [\"es.math.sign\"]),\n signbit: define(\"math/signbit\", [\"esnext.math.signbit\"]),\n sinh: define(\"math/sinh\", [\"es.math.sinh\"]),\n tanh: define(\"math/tanh\", [\"es.math.tanh\"]),\n trunc: define(\"math/trunc\", [\"es.math.trunc\"]),\n umulh: define(\"math/umulh\", [\"esnext.math.umulh\"]),\n },\n\n Map: {\n from: define(null, [\"esnext.map.from\", ...MapDependencies]),\n groupBy: define(null, [\"esnext.map.group-by\", ...MapDependencies]),\n keyBy: define(null, [\"esnext.map.key-by\", ...MapDependencies]),\n of: define(null, [\"esnext.map.of\", ...MapDependencies]),\n },\n\n Number: {\n EPSILON: define(\"number/epsilon\", [\"es.number.epsilon\"]),\n MAX_SAFE_INTEGER: define(\"number/max-safe-integer\", [\n \"es.number.max-safe-integer\",\n ]),\n MIN_SAFE_INTEGER: define(\"number/min-safe-integer\", [\n \"es.number.min-safe-integer\",\n ]),\n fromString: define(\"number/from-string\", [\"esnext.number.from-string\"]),\n isFinite: define(\"number/is-finite\", [\"es.number.is-finite\"]),\n isInteger: define(\"number/is-integer\", [\"es.number.is-integer\"]),\n isNaN: define(\"number/is-nan\", [\"es.number.is-nan\"]),\n isSafeInteger: define(\"number/is-safe-integer\", [\n \"es.number.is-safe-integer\",\n ]),\n parseFloat: define(\"number/parse-float\", [\"es.number.parse-float\"]),\n parseInt: define(\"number/parse-int\", [\"es.number.parse-int\"]),\n range: define(\"number/range\", [\n \"esnext.number.range\",\n \"es.object.to-string\",\n ]),\n },\n\n Object: {\n assign: define(\"object/assign\", [\"es.object.assign\"]),\n create: define(\"object/create\", [\"es.object.create\"]),\n defineProperties: define(\"object/define-properties\", [\n \"es.object.define-properties\",\n ]),\n defineProperty: define(\"object/define-property\", [\n \"es.object.define-property\",\n ]),\n entries: define(\"object/entries\", [\"es.object.entries\"]),\n freeze: define(\"object/freeze\", [\"es.object.freeze\"]),\n fromEntries: define(\"object/from-entries\", [\n \"es.object.from-entries\",\n \"es.array.iterator\",\n ]),\n getOwnPropertyDescriptor: define(\"object/get-own-property-descriptor\", [\n \"es.object.get-own-property-descriptor\",\n ]),\n getOwnPropertyDescriptors: define(\"object/get-own-property-descriptors\", [\n \"es.object.get-own-property-descriptors\",\n ]),\n getOwnPropertyNames: define(\"object/get-own-property-names\", [\n \"es.object.get-own-property-names\",\n ]),\n getOwnPropertySymbols: define(\"object/get-own-property-symbols\", [\n \"es.symbol\",\n ]),\n getPrototypeOf: define(\"object/get-prototype-of\", [\n \"es.object.get-prototype-of\",\n ]),\n groupBy: define(\"object/group-by\", [\n \"esnext.object.group-by\",\n \"es.object.create\",\n ]),\n hasOwn: define(\"object/has-own\", [\"es.object.has-own\"]),\n is: define(\"object/is\", [\"es.object.is\"]),\n isExtensible: define(\"object/is-extensible\", [\"es.object.is-extensible\"]),\n isFrozen: define(\"object/is-frozen\", [\"es.object.is-frozen\"]),\n isSealed: define(\"object/is-sealed\", [\"es.object.is-sealed\"]),\n keys: define(\"object/keys\", [\"es.object.keys\"]),\n preventExtensions: define(\"object/prevent-extensions\", [\n \"es.object.prevent-extensions\",\n ]),\n seal: define(\"object/seal\", [\"es.object.seal\"]),\n setPrototypeOf: define(\"object/set-prototype-of\", [\n \"es.object.set-prototype-of\",\n ]),\n values: define(\"object/values\", [\"es.object.values\"]),\n },\n\n Promise: {\n all: define(null, PromiseDependenciesWithIterators),\n allSettled: define(null, [\n \"es.promise.all-settled\",\n ...PromiseDependenciesWithIterators,\n ]),\n any: define(null, [\n \"es.promise.any\",\n \"es.aggregate-error\",\n ...PromiseDependenciesWithIterators,\n ]),\n race: define(null, PromiseDependenciesWithIterators),\n try: define(null, [\"esnext.promise.try\", ...PromiseDependencies]),\n withResolvers: define(null, [\n \"esnext.promise.with-resolvers\",\n ...PromiseDependencies,\n ]),\n },\n\n Reflect: {\n apply: define(\"reflect/apply\", [\"es.reflect.apply\"]),\n construct: define(\"reflect/construct\", [\"es.reflect.construct\"]),\n defineMetadata: define(\"reflect/define-metadata\", [\n \"esnext.reflect.define-metadata\",\n ]),\n defineProperty: define(\"reflect/define-property\", [\n \"es.reflect.define-property\",\n ]),\n deleteMetadata: define(\"reflect/delete-metadata\", [\n \"esnext.reflect.delete-metadata\",\n ]),\n deleteProperty: define(\"reflect/delete-property\", [\n \"es.reflect.delete-property\",\n ]),\n get: define(\"reflect/get\", [\"es.reflect.get\"]),\n getMetadata: define(\"reflect/get-metadata\", [\n \"esnext.reflect.get-metadata\",\n ]),\n getMetadataKeys: define(\"reflect/get-metadata-keys\", [\n \"esnext.reflect.get-metadata-keys\",\n ]),\n getOwnMetadata: define(\"reflect/get-own-metadata\", [\n \"esnext.reflect.get-own-metadata\",\n ]),\n getOwnMetadataKeys: define(\"reflect/get-own-metadata-keys\", [\n \"esnext.reflect.get-own-metadata-keys\",\n ]),\n getOwnPropertyDescriptor: define(\"reflect/get-own-property-descriptor\", [\n \"es.reflect.get-own-property-descriptor\",\n ]),\n getPrototypeOf: define(\"reflect/get-prototype-of\", [\n \"es.reflect.get-prototype-of\",\n ]),\n has: define(\"reflect/has\", [\"es.reflect.has\"]),\n hasMetadata: define(\"reflect/has-metadata\", [\n \"esnext.reflect.has-metadata\",\n ]),\n hasOwnMetadata: define(\"reflect/has-own-metadata\", [\n \"esnext.reflect.has-own-metadata\",\n ]),\n isExtensible: define(\"reflect/is-extensible\", [\"es.reflect.is-extensible\"]),\n metadata: define(\"reflect/metadata\", [\"esnext.reflect.metadata\"]),\n ownKeys: define(\"reflect/own-keys\", [\"es.reflect.own-keys\"]),\n preventExtensions: define(\"reflect/prevent-extensions\", [\n \"es.reflect.prevent-extensions\",\n ]),\n set: define(\"reflect/set\", [\"es.reflect.set\"]),\n setPrototypeOf: define(\"reflect/set-prototype-of\", [\n \"es.reflect.set-prototype-of\",\n ]),\n },\n\n RegExp: {\n escape: define(\"regexp/escape\", [\"esnext.regexp.escape\"]),\n },\n\n Set: {\n from: define(null, [\"esnext.set.from\", ...SetDependencies]),\n of: define(null, [\"esnext.set.of\", ...SetDependencies]),\n },\n\n String: {\n cooked: define(\"string/cooked\", [\"esnext.string.cooked\"]),\n dedent: define(\"string/dedent\", [\n \"esnext.string.dedent\",\n \"es.string.from-code-point\",\n \"es.weak-map\",\n ]),\n fromCodePoint: define(\"string/from-code-point\", [\n \"es.string.from-code-point\",\n ]),\n raw: define(\"string/raw\", [\"es.string.raw\"]),\n },\n\n Symbol: {\n asyncDispose: define(\"symbol/async-dispose\", [\n \"esnext.symbol.async-dispose\",\n \"esnext.async-iterator.async-dispose\",\n ]),\n asyncIterator: define(\"symbol/async-iterator\", [\n \"es.symbol.async-iterator\",\n ]),\n dispose: define(\"symbol/dispose\", [\n \"esnext.symbol.dispose\",\n \"esnext.iterator.dispose\",\n ]),\n for: define(\"symbol/for\", [], \"es.symbol\"),\n hasInstance: define(\"symbol/has-instance\", [\n \"es.symbol.has-instance\",\n \"es.function.has-instance\",\n ]),\n isConcatSpreadable: define(\"symbol/is-concat-spreadable\", [\n \"es.symbol.is-concat-spreadable\",\n \"es.array.concat\",\n ]),\n isRegistered: define(\"symbol/is-registered\", [\n \"esnext.symbol.is-registered\",\n \"es.symbol\",\n ]),\n isRegisteredSymbol: define(\"symbol/is-registered-symbol\", [\n \"esnext.symbol.is-registered-symbol\",\n \"es.symbol\",\n ]),\n isWellKnown: define(\"symbol/is-well-known\", [\n \"esnext.symbol.is-well-known\",\n \"es.symbol\",\n ]),\n isWellKnownSymbol: define(\"symbol/is-well-known-symbol\", [\n \"esnext.symbol.is-well-known-symbol\",\n \"es.symbol\",\n ]),\n iterator: define(\"symbol/iterator\", [\n \"es.symbol.iterator\",\n ...CommonIteratorsWithTag,\n ]),\n keyFor: define(\"symbol/key-for\", [], \"es.symbol\"),\n match: define(\"symbol/match\", [\"es.symbol.match\", \"es.string.match\"]),\n matcher: define(\"symbol/matcher\", [\"esnext.symbol.matcher\"]),\n matchAll: define(\"symbol/match-all\", [\n \"es.symbol.match-all\",\n \"es.string.match-all\",\n ]),\n metadata: define(\"symbol/metadata\", DecoratorMetadataDependencies),\n metadataKey: define(\"symbol/metadata-key\", [\"esnext.symbol.metadata-key\"]),\n observable: define(\"symbol/observable\", [\"esnext.symbol.observable\"]),\n patternMatch: define(\"symbol/pattern-match\", [\n \"esnext.symbol.pattern-match\",\n ]),\n replace: define(\"symbol/replace\", [\n \"es.symbol.replace\",\n \"es.string.replace\",\n ]),\n search: define(\"symbol/search\", [\"es.symbol.search\", \"es.string.search\"]),\n species: define(\"symbol/species\", [\n \"es.symbol.species\",\n \"es.array.species\",\n ]),\n split: define(\"symbol/split\", [\"es.symbol.split\", \"es.string.split\"]),\n toPrimitive: define(\"symbol/to-primitive\", [\n \"es.symbol.to-primitive\",\n \"es.date.to-primitive\",\n ]),\n toStringTag: define(\"symbol/to-string-tag\", [\n \"es.symbol.to-string-tag\",\n \"es.object.to-string\",\n \"es.math.to-string-tag\",\n \"es.json.to-string-tag\",\n ]),\n unscopables: define(\"symbol/unscopables\", [\"es.symbol.unscopables\"]),\n },\n\n URL: {\n canParse: define(\"url/can-parse\", [\"web.url.can-parse\", \"web.url\"]),\n },\n\n WeakMap: {\n from: define(null, [\"esnext.weak-map.from\", ...WeakMapDependencies]),\n of: define(null, [\"esnext.weak-map.of\", ...WeakMapDependencies]),\n },\n\n WeakSet: {\n from: define(null, [\"esnext.weak-set.from\", ...WeakSetDependencies]),\n of: define(null, [\"esnext.weak-set.of\", ...WeakSetDependencies]),\n },\n\n Int8Array: TypedArrayStaticMethods,\n Uint8Array: TypedArrayStaticMethods,\n Uint8ClampedArray: TypedArrayStaticMethods,\n Int16Array: TypedArrayStaticMethods,\n Uint16Array: TypedArrayStaticMethods,\n Int32Array: TypedArrayStaticMethods,\n Uint32Array: TypedArrayStaticMethods,\n Float32Array: TypedArrayStaticMethods,\n Float64Array: TypedArrayStaticMethods,\n\n WebAssembly: {\n CompileError: define(null, ErrorDependencies),\n LinkError: define(null, ErrorDependencies),\n RuntimeError: define(null, ErrorDependencies),\n },\n};\n\nexport const InstanceProperties = {\n asIndexedPairs: define(\"instance/asIndexedPairs\", [\n \"esnext.async-iterator.as-indexed-pairs\",\n ...AsyncIteratorDependencies,\n \"esnext.iterator.as-indexed-pairs\",\n ...IteratorDependencies,\n ]),\n at: define(\"instance/at\", [\n // TODO: We should introduce overloaded instance methods definition\n // Before that is implemented, the `esnext.string.at` must be the first\n // In pure mode, the provider resolves the descriptor as a \"pure\" `esnext.string.at`\n // and treats the compat-data of `esnext.string.at` as the compat-data of\n // pure import `instance/at`. The first polyfill here should have the lowest corejs\n // supported versions.\n \"esnext.string.at\",\n \"es.string.at-alternative\",\n \"es.array.at\",\n ]),\n anchor: define(null, [\"es.string.anchor\"]),\n big: define(null, [\"es.string.big\"]),\n bind: define(\"instance/bind\", [\"es.function.bind\"]),\n blink: define(null, [\"es.string.blink\"]),\n bold: define(null, [\"es.string.bold\"]),\n codePointAt: define(\"instance/code-point-at\", [\"es.string.code-point-at\"]),\n codePoints: define(\"instance/code-points\", [\"esnext.string.code-points\"]),\n concat: define(\"instance/concat\", [\"es.array.concat\"], undefined, [\"String\"]),\n copyWithin: define(\"instance/copy-within\", [\"es.array.copy-within\"]),\n demethodize: define(\"instance/demethodize\", [\"esnext.function.demethodize\"]),\n description: define(null, [\"es.symbol\", \"es.symbol.description\"]),\n dotAll: define(null, [\"es.regexp.dot-all\"]),\n drop: define(null, [\n \"esnext.async-iterator.drop\",\n ...AsyncIteratorDependencies,\n \"esnext.iterator.drop\",\n ...IteratorDependencies,\n ]),\n emplace: define(\"instance/emplace\", [\n \"esnext.map.emplace\",\n \"esnext.weak-map.emplace\",\n ]),\n endsWith: define(\"instance/ends-with\", [\"es.string.ends-with\"]),\n entries: define(\"instance/entries\", ArrayNatureIteratorsWithTag),\n every: define(\"instance/every\", [\n \"es.array.every\",\n \"esnext.async-iterator.every\",\n // TODO: add async iterator dependencies when we support sub-dependencies\n // esnext.async-iterator.every depends on es.promise\n // but we don't want to pull es.promise when esnext.async-iterator is disabled\n //\n // ...AsyncIteratorDependencies\n \"esnext.iterator.every\",\n ...IteratorDependencies,\n ]),\n exec: define(null, [\"es.regexp.exec\"]),\n fill: define(\"instance/fill\", [\"es.array.fill\"]),\n filter: define(\"instance/filter\", [\n \"es.array.filter\",\n \"esnext.async-iterator.filter\",\n \"esnext.iterator.filter\",\n ...IteratorDependencies,\n ]),\n filterReject: define(\"instance/filterReject\", [\"esnext.array.filter-reject\"]),\n finally: define(null, [\"es.promise.finally\", ...PromiseDependencies]),\n find: define(\"instance/find\", [\n \"es.array.find\",\n \"esnext.async-iterator.find\",\n \"esnext.iterator.find\",\n ...IteratorDependencies,\n ]),\n findIndex: define(\"instance/find-index\", [\"es.array.find-index\"]),\n findLast: define(\"instance/find-last\", [\"es.array.find-last\"]),\n findLastIndex: define(\"instance/find-last-index\", [\n \"es.array.find-last-index\",\n ]),\n fixed: define(null, [\"es.string.fixed\"]),\n flags: define(\"instance/flags\", [\"es.regexp.flags\"]),\n flatMap: define(\"instance/flat-map\", [\n \"es.array.flat-map\",\n \"es.array.unscopables.flat-map\",\n \"esnext.async-iterator.flat-map\",\n \"esnext.iterator.flat-map\",\n ...IteratorDependencies,\n ]),\n flat: define(\"instance/flat\", [\"es.array.flat\", \"es.array.unscopables.flat\"]),\n getFloat16: define(null, [\n \"esnext.data-view.get-float16\",\n ...DataViewDependencies,\n ]),\n getUint8Clamped: define(null, [\n \"esnext.data-view.get-uint8-clamped\",\n ...DataViewDependencies,\n ]),\n getYear: define(null, [\"es.date.get-year\"]),\n group: define(\"instance/group\", [\"esnext.array.group\"]),\n groupBy: define(\"instance/group-by\", [\"esnext.array.group-by\"]),\n groupByToMap: define(\"instance/group-by-to-map\", [\n \"esnext.array.group-by-to-map\",\n \"es.map\",\n \"es.object.to-string\",\n ]),\n groupToMap: define(\"instance/group-to-map\", [\n \"esnext.array.group-to-map\",\n \"es.map\",\n \"es.object.to-string\",\n ]),\n fontcolor: define(null, [\"es.string.fontcolor\"]),\n fontsize: define(null, [\"es.string.fontsize\"]),\n forEach: define(\"instance/for-each\", [\n \"es.array.for-each\",\n \"esnext.async-iterator.for-each\",\n \"esnext.iterator.for-each\",\n ...IteratorDependencies,\n \"web.dom-collections.for-each\",\n ]),\n includes: define(\"instance/includes\", [\n \"es.array.includes\",\n \"es.string.includes\",\n ]),\n indexed: define(null, [\n \"esnext.async-iterator.indexed\",\n ...AsyncIteratorDependencies,\n \"esnext.iterator.indexed\",\n ...IteratorDependencies,\n ]),\n indexOf: define(\"instance/index-of\", [\"es.array.index-of\"]),\n isWellFormed: define(\"instance/is-well-formed\", [\"es.string.is-well-formed\"]),\n italic: define(null, [\"es.string.italics\"]),\n join: define(null, [\"es.array.join\"]),\n keys: define(\"instance/keys\", ArrayNatureIteratorsWithTag),\n lastIndex: define(null, [\"esnext.array.last-index\"]),\n lastIndexOf: define(\"instance/last-index-of\", [\"es.array.last-index-of\"]),\n lastItem: define(null, [\"esnext.array.last-item\"]),\n link: define(null, [\"es.string.link\"]),\n map: define(\"instance/map\", [\n \"es.array.map\",\n \"esnext.async-iterator.map\",\n \"esnext.iterator.map\",\n ]),\n match: define(null, [\"es.string.match\", \"es.regexp.exec\"]),\n matchAll: define(\"instance/match-all\", [\n \"es.string.match-all\",\n \"es.regexp.exec\",\n ]),\n name: define(null, [\"es.function.name\"]),\n padEnd: define(\"instance/pad-end\", [\"es.string.pad-end\"]),\n padStart: define(\"instance/pad-start\", [\"es.string.pad-start\"]),\n push: define(\"instance/push\", [\"es.array.push\"]),\n reduce: define(\"instance/reduce\", [\n \"es.array.reduce\",\n \"esnext.async-iterator.reduce\",\n \"esnext.iterator.reduce\",\n ...IteratorDependencies,\n ]),\n reduceRight: define(\"instance/reduce-right\", [\"es.array.reduce-right\"]),\n repeat: define(\"instance/repeat\", [\"es.string.repeat\"]),\n replace: define(null, [\"es.string.replace\", \"es.regexp.exec\"]),\n replaceAll: define(\"instance/replace-all\", [\n \"es.string.replace-all\",\n \"es.string.replace\",\n \"es.regexp.exec\",\n ]),\n reverse: define(\"instance/reverse\", [\"es.array.reverse\"]),\n search: define(null, [\"es.string.search\", \"es.regexp.exec\"]),\n setFloat16: define(null, [\n \"esnext.data-view.set-float16\",\n ...DataViewDependencies,\n ]),\n setUint8Clamped: define(null, [\n \"esnext.data-view.set-uint8-clamped\",\n ...DataViewDependencies,\n ]),\n setYear: define(null, [\"es.date.set-year\"]),\n slice: define(\"instance/slice\", [\"es.array.slice\"]),\n small: define(null, [\"es.string.small\"]),\n some: define(\"instance/some\", [\n \"es.array.some\",\n \"esnext.async-iterator.some\",\n \"esnext.iterator.some\",\n ...IteratorDependencies,\n ]),\n sort: define(\"instance/sort\", [\"es.array.sort\"]),\n splice: define(\"instance/splice\", [\"es.array.splice\"]),\n split: define(null, [\"es.string.split\", \"es.regexp.exec\"]),\n startsWith: define(\"instance/starts-with\", [\"es.string.starts-with\"]),\n sticky: define(null, [\"es.regexp.sticky\"]),\n strike: define(null, [\"es.string.strike\"]),\n sub: define(null, [\"es.string.sub\"]),\n substr: define(null, [\"es.string.substr\"]),\n sup: define(null, [\"es.string.sup\"]),\n take: define(null, [\n \"esnext.async-iterator.take\",\n ...AsyncIteratorDependencies,\n \"esnext.iterator.take\",\n ...IteratorDependencies,\n ]),\n test: define(null, [\"es.regexp.test\", \"es.regexp.exec\"]),\n toArray: define(null, [\n \"esnext.async-iterator.to-array\",\n ...AsyncIteratorDependencies,\n \"esnext.iterator.to-array\",\n ...IteratorDependencies,\n ]),\n toAsync: define(null, [\n \"esnext.iterator.to-async\",\n ...IteratorDependencies,\n ...AsyncIteratorDependencies,\n ...AsyncIteratorProblemMethods,\n ]),\n toExponential: define(null, [\"es.number.to-exponential\"]),\n toFixed: define(null, [\"es.number.to-fixed\"]),\n toGMTString: define(null, [\"es.date.to-gmt-string\"]),\n toISOString: define(null, [\"es.date.to-iso-string\"]),\n toJSON: define(null, [\"es.date.to-json\", \"web.url.to-json\"]),\n toPrecision: define(null, [\"es.number.to-precision\"]),\n toReversed: define(\"instance/to-reversed\", [\"es.array.to-reversed\"]),\n toSorted: define(\"instance/to-sorted\", [\n \"es.array.to-sorted\",\n \"es.array.sort\",\n ]),\n toSpliced: define(\"instance/to-spliced\", [\"es.array.to-spliced\"]),\n toString: define(null, [\n \"es.object.to-string\",\n \"es.error.to-string\",\n \"es.date.to-string\",\n \"es.regexp.to-string\",\n ]),\n toWellFormed: define(\"instance/to-well-formed\", [\"es.string.to-well-formed\"]),\n trim: define(\"instance/trim\", [\"es.string.trim\"]),\n trimEnd: define(\"instance/trim-end\", [\"es.string.trim-end\"]),\n trimLeft: define(\"instance/trim-left\", [\"es.string.trim-start\"]),\n trimRight: define(\"instance/trim-right\", [\"es.string.trim-end\"]),\n trimStart: define(\"instance/trim-start\", [\"es.string.trim-start\"]),\n uniqueBy: define(\"instance/unique-by\", [\"esnext.array.unique-by\", \"es.map\"]),\n unshift: define(\"instance/unshift\", [\"es.array.unshift\"]),\n unThis: define(\"instance/un-this\", [\"esnext.function.un-this\"]),\n values: define(\"instance/values\", ArrayNatureIteratorsWithTag),\n with: define(\"instance/with\", [\"es.array.with\"]),\n __defineGetter__: define(null, [\"es.object.define-getter\"]),\n __defineSetter__: define(null, [\"es.object.define-setter\"]),\n __lookupGetter__: define(null, [\"es.object.lookup-getter\"]),\n __lookupSetter__: define(null, [\"es.object.lookup-setter\"]),\n [\"__proto__\"]: define(null, [\"es.object.proto\"]),\n};\n","import type { CoreJSPolyfillDescriptor } from \"./built-in-definitions\";\nimport { types as t, type NodePath } from \"@babel/core\";\n\nexport default function canSkipPolyfill(\n desc: CoreJSPolyfillDescriptor,\n path: NodePath,\n) {\n const { node, parent } = path;\n switch (desc.name) {\n case \"es.string.split\": {\n if (!t.isCallExpression(parent, { callee: node })) return false;\n if (parent.arguments.length < 1) return true;\n const splitter = parent.arguments[0];\n return t.isStringLiteral(splitter) || t.isTemplateLiteral(splitter);\n }\n }\n}\n","import { types as t } from \"@babel/core\";\nimport corejsEntries from \"../core-js-compat/entries.js\";\n\nexport const BABEL_RUNTIME = \"@babel/runtime-corejs3\";\n\nexport function callMethod(path: any, id: t.Identifier) {\n const { object } = path.node;\n\n let context1, context2;\n if (t.isIdentifier(object)) {\n context1 = object;\n context2 = t.cloneNode(object);\n } else {\n context1 = path.scope.generateDeclaredUidIdentifier(\"context\");\n context2 = t.assignmentExpression(\"=\", t.cloneNode(context1), object);\n }\n\n path.replaceWith(\n t.memberExpression(t.callExpression(id, [context2]), t.identifier(\"call\")),\n );\n\n path.parentPath.unshiftContainer(\"arguments\", context1);\n}\n\nexport function isCoreJSSource(source: string) {\n if (typeof source === \"string\") {\n source = source\n .replace(/\\\\/g, \"/\")\n .replace(/(\\/(index)?)?(\\.js)?$/i, \"\")\n .toLowerCase();\n }\n\n return (\n Object.prototype.hasOwnProperty.call(corejsEntries, source) &&\n corejsEntries[source]\n );\n}\n\nexport function coreJSModule(name: string) {\n return `core-js/modules/${name}.js`;\n}\n\nexport function coreJSPureHelper(\n name: string,\n useBabelRuntime: boolean,\n ext: string,\n) {\n return useBabelRuntime\n ? `${BABEL_RUNTIME}/core-js/${name}${ext}`\n : `core-js-pure/features/${name}.js`;\n}\n","import corejs3Polyfills from \"../core-js-compat/data.js\";\nimport corejs3ShippedProposalsList from \"./shipped-proposals\";\nimport getModulesListForTargetVersion from \"../core-js-compat/get-modules-list-for-target-version.js\";\nimport {\n BuiltIns,\n CommonIterators,\n PromiseDependencies,\n PromiseDependenciesWithIterators,\n StaticProperties,\n InstanceProperties,\n DecoratorMetadataDependencies,\n type CoreJSPolyfillDescriptor,\n} from \"./built-in-definitions\";\nimport canSkipPolyfill from \"./usage-filters\";\n\nimport type { NodePath } from \"@babel/traverse\";\nimport { types as t } from \"@babel/core\";\nimport {\n callMethod,\n coreJSModule,\n isCoreJSSource,\n coreJSPureHelper,\n BABEL_RUNTIME,\n} from \"./utils\";\n\nimport defineProvider from \"@babel/helper-define-polyfill-provider\";\n\nconst presetEnvCompat = \"#__secret_key__@babel/preset-env__compatibility\";\nconst runtimeCompat = \"#__secret_key__@babel/runtime__compatibility\";\n\ntype Options = {\n version?: number | string;\n proposals?: boolean;\n shippedProposals?: boolean;\n [presetEnvCompat]?: { noRuntimeName: boolean };\n [runtimeCompat]: {\n useBabelRuntime: boolean;\n babelRuntimePath: string;\n ext: string;\n };\n};\n\nconst uniqueObjects = [\n \"array\",\n \"string\",\n\n \"iterator\",\n \"async-iterator\",\n \"dom-collections\",\n].map(v => new RegExp(`[a-z]*\\\\.${v}\\\\..*`));\n\nconst esnextFallback = (\n name: string,\n cb: (name: string) => boolean,\n): boolean => {\n if (cb(name)) return true;\n if (!name.startsWith(\"es.\")) return false;\n const fallback = `esnext.${name.slice(3)}`;\n if (!corejs3Polyfills[fallback]) return false;\n return cb(fallback);\n};\n\nexport default defineProvider(function (\n { getUtils, method, shouldInjectPolyfill, createMetaResolver, debug, babel },\n {\n version = 3,\n proposals,\n shippedProposals,\n [presetEnvCompat]: { noRuntimeName = false } = {},\n [runtimeCompat]: { useBabelRuntime = false, ext = \".js\" } = {},\n },\n) {\n const isWebpack = babel.caller(caller => caller?.name === \"babel-loader\");\n\n const resolve = createMetaResolver({\n global: BuiltIns,\n static: StaticProperties,\n instance: InstanceProperties,\n });\n\n const available = new Set(getModulesListForTargetVersion(version));\n\n function getCoreJSPureBase(useProposalBase) {\n return useBabelRuntime\n ? useProposalBase\n ? `${BABEL_RUNTIME}/core-js`\n : `${BABEL_RUNTIME}/core-js-stable`\n : useProposalBase\n ? \"core-js-pure/features\"\n : \"core-js-pure/stable\";\n }\n\n function maybeInjectGlobalImpl(name: string, utils) {\n if (shouldInjectPolyfill(name)) {\n debug(name);\n utils.injectGlobalImport(coreJSModule(name));\n return true;\n }\n return false;\n }\n\n function maybeInjectGlobal(names: string[], utils, fallback = true) {\n for (const name of names) {\n if (fallback) {\n esnextFallback(name, name => maybeInjectGlobalImpl(name, utils));\n } else {\n maybeInjectGlobalImpl(name, utils);\n }\n }\n }\n\n function maybeInjectPure(\n desc: CoreJSPolyfillDescriptor,\n hint,\n utils,\n object?,\n ) {\n if (\n desc.pure &&\n !(object && desc.exclude && desc.exclude.includes(object)) &&\n esnextFallback(desc.name, shouldInjectPolyfill)\n ) {\n const { name } = desc;\n let useProposalBase = false;\n if (proposals || (shippedProposals && name.startsWith(\"esnext.\"))) {\n useProposalBase = true;\n } else if (name.startsWith(\"es.\") && !available.has(name)) {\n useProposalBase = true;\n }\n const coreJSPureBase = getCoreJSPureBase(useProposalBase);\n return utils.injectDefaultImport(\n `${coreJSPureBase}/${desc.pure}${ext}`,\n hint,\n );\n }\n }\n\n function isFeatureStable(name) {\n if (name.startsWith(\"esnext.\")) {\n const esName = `es.${name.slice(7)}`;\n // If its imaginative esName is not in latest compat data, it means\n // the proposal is not stage 4\n return esName in corejs3Polyfills;\n }\n return true;\n }\n\n return {\n name: \"corejs3\",\n\n runtimeName: noRuntimeName ? null : BABEL_RUNTIME,\n\n polyfills: corejs3Polyfills,\n\n filterPolyfills(name) {\n if (!available.has(name)) return false;\n if (proposals || method === \"entry-global\") return true;\n if (shippedProposals && corejs3ShippedProposalsList.has(name)) {\n return true;\n }\n return isFeatureStable(name);\n },\n\n entryGlobal(meta, utils, path) {\n if (meta.kind !== \"import\") return;\n\n const modules = isCoreJSSource(meta.source);\n if (!modules) return;\n\n if (\n modules.length === 1 &&\n meta.source === coreJSModule(modules[0]) &&\n shouldInjectPolyfill(modules[0])\n ) {\n // Avoid infinite loop: do not replace imports with a new copy of\n // themselves.\n debug(null);\n return;\n }\n\n const modulesSet = new Set(modules);\n const filteredModules = modules.filter(module => {\n if (!module.startsWith(\"esnext.\")) return true;\n const stable = module.replace(\"esnext.\", \"es.\");\n if (modulesSet.has(stable) && shouldInjectPolyfill(stable)) {\n return false;\n }\n return true;\n });\n\n maybeInjectGlobal(filteredModules, utils, false);\n path.remove();\n },\n\n usageGlobal(meta, utils, path) {\n const resolved = resolve(meta);\n if (!resolved) return;\n\n if (canSkipPolyfill(resolved.desc, path)) return;\n\n let deps = resolved.desc.global;\n\n if (\n resolved.kind !== \"global\" &&\n \"object\" in meta &&\n meta.object &&\n meta.placement === \"prototype\"\n ) {\n const low = meta.object.toLowerCase();\n deps = deps.filter(m =>\n uniqueObjects.some(v => v.test(m)) ? m.includes(low) : true,\n );\n }\n\n maybeInjectGlobal(deps, utils);\n },\n\n usagePure(meta, utils, path) {\n if (meta.kind === \"in\") {\n if (meta.key === \"Symbol.iterator\") {\n path.replaceWith(\n t.callExpression(\n utils.injectDefaultImport(\n coreJSPureHelper(\"is-iterable\", useBabelRuntime, ext),\n \"isIterable\",\n ),\n [(path.node as t.BinaryExpression).right], // meta.kind === \"in\" narrows this\n ),\n );\n }\n return;\n }\n\n if (path.parentPath.isUnaryExpression({ operator: \"delete\" })) return;\n\n if (meta.kind === \"property\") {\n // We can't compile destructuring and updateExpression.\n if (!path.isMemberExpression()) return;\n if (!path.isReferenced()) return;\n if (path.parentPath.isUpdateExpression()) return;\n if (t.isSuper(path.node.object)) {\n return;\n }\n\n if (meta.key === \"Symbol.iterator\") {\n if (!shouldInjectPolyfill(\"es.symbol.iterator\")) return;\n\n const { parent, node } = path;\n if (t.isCallExpression(parent, { callee: node })) {\n if (parent.arguments.length === 0) {\n path.parentPath.replaceWith(\n t.callExpression(\n utils.injectDefaultImport(\n coreJSPureHelper(\"get-iterator\", useBabelRuntime, ext),\n \"getIterator\",\n ),\n [node.object],\n ),\n );\n path.skip();\n } else {\n callMethod(\n path,\n utils.injectDefaultImport(\n coreJSPureHelper(\"get-iterator-method\", useBabelRuntime, ext),\n \"getIteratorMethod\",\n ),\n );\n }\n } else {\n path.replaceWith(\n t.callExpression(\n utils.injectDefaultImport(\n coreJSPureHelper(\"get-iterator-method\", useBabelRuntime, ext),\n \"getIteratorMethod\",\n ),\n [path.node.object],\n ),\n );\n }\n\n return;\n }\n }\n\n let resolved = resolve(meta);\n if (!resolved) return;\n\n if (canSkipPolyfill(resolved.desc, path)) return;\n\n if (\n useBabelRuntime &&\n resolved.desc.pure &&\n resolved.desc.pure.slice(-6) === \"/index\"\n ) {\n // Remove /index, since it doesn't exist in @babel/runtime-corejs3s\n resolved = {\n ...resolved,\n desc: {\n ...resolved.desc,\n pure: resolved.desc.pure.slice(0, -6),\n },\n };\n }\n\n if (resolved.kind === \"global\") {\n const id = maybeInjectPure(resolved.desc, resolved.name, utils);\n if (id) path.replaceWith(id);\n } else if (resolved.kind === \"static\") {\n const id = maybeInjectPure(\n resolved.desc,\n resolved.name,\n utils,\n // @ts-expect-error\n meta.object,\n );\n if (id) path.replaceWith(id);\n } else if (resolved.kind === \"instance\") {\n const id = maybeInjectPure(\n resolved.desc,\n `${resolved.name}InstanceProperty`,\n utils,\n // @ts-expect-error\n meta.object,\n );\n if (!id) return;\n\n const { node } = path as NodePath;\n if (t.isCallExpression(path.parent, { callee: node })) {\n callMethod(path, id);\n } else {\n path.replaceWith(t.callExpression(id, [node.object]));\n }\n }\n },\n\n visitor: method === \"usage-global\" && {\n // import(\"foo\")\n CallExpression(path: NodePath) {\n if (path.get(\"callee\").isImport()) {\n const utils = getUtils(path);\n\n if (isWebpack) {\n // Webpack uses Promise.all to handle dynamic import.\n maybeInjectGlobal(PromiseDependenciesWithIterators, utils);\n } else {\n maybeInjectGlobal(PromiseDependencies, utils);\n }\n }\n },\n\n // (async function () { }).finally(...)\n Function(path: NodePath) {\n if (path.node.async) {\n maybeInjectGlobal(PromiseDependencies, getUtils(path));\n }\n },\n\n // for-of, [a, b] = c\n \"ForOfStatement|ArrayPattern\"(\n path: NodePath,\n ) {\n maybeInjectGlobal(CommonIterators, getUtils(path));\n },\n\n // [...spread]\n SpreadElement(path: NodePath) {\n if (!path.parentPath.isObjectExpression()) {\n maybeInjectGlobal(CommonIterators, getUtils(path));\n }\n },\n\n // yield*\n YieldExpression(path: NodePath) {\n if (path.node.delegate) {\n maybeInjectGlobal(CommonIterators, getUtils(path));\n }\n },\n\n // Decorators metadata\n Class(path: NodePath) {\n const hasDecorators =\n path.node.decorators?.length ||\n path.node.body.body.some(\n el => (el as t.ClassMethod).decorators?.length,\n );\n if (hasDecorators) {\n maybeInjectGlobal(DecoratorMetadataDependencies, getUtils(path));\n }\n },\n },\n };\n});\n"],"names":["Set","polyfillsOrder","Object","keys","corejs3Polyfills","forEach","name","index","define","pure","global","exclude","sort","a","b","typed","TypedArrayDependencies","ArrayNatureIterators","CommonIterators","ArrayNatureIteratorsWithTag","CommonIteratorsWithTag","ErrorDependencies","SuppressedErrorDependencies","PromiseDependencies","PromiseDependenciesWithIterators","SymbolDependencies","MapDependencies","SetDependencies","WeakMapDependencies","WeakSetDependencies","DOMExceptionDependencies","URLSearchParamsDependencies","AsyncIteratorDependencies","AsyncIteratorProblemMethods","IteratorDependencies","DecoratorMetadataDependencies","TypedArrayStaticMethods","from","fromAsync","of","DataViewDependencies","BuiltIns","AsyncDisposableStack","AsyncIterator","AggregateError","ArrayBuffer","DataView","Date","DOMException","DisposableStack","Error","EvalError","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Iterator","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","Map","Number","Observable","Promise","RangeError","ReferenceError","Reflect","RegExp","SuppressedError","Symbol","SyntaxError","TypeError","URIError","URL","URLSearchParams","WeakMap","WeakSet","atob","btoa","clearImmediate","compositeKey","compositeSymbol","escape","fetch","globalThis","parseFloat","parseInt","queueMicrotask","self","setImmediate","setInterval","setTimeout","structuredClone","unescape","StaticProperties","Array","isArray","isTemplateObject","isView","BigInt","range","now","Function","isCallable","isConstructor","JSON","isRawJSON","parse","rawJSON","stringify","Math","DEG_PER_RAD","RAD_PER_DEG","acosh","asinh","atanh","cbrt","clamp","clz32","cosh","degrees","expm1","fround","f16round","fscale","hypot","iaddh","imul","imulh","isubh","log10","log1p","log2","radians","scale","seededPRNG","sign","signbit","sinh","tanh","trunc","umulh","groupBy","keyBy","EPSILON","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","fromString","isFinite","isInteger","isNaN","isSafeInteger","assign","create","defineProperties","defineProperty","entries","freeze","fromEntries","getOwnPropertyDescriptor","getOwnPropertyDescriptors","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","hasOwn","is","isExtensible","isFrozen","isSealed","preventExtensions","seal","setPrototypeOf","values","all","allSettled","any","race","try","withResolvers","apply","construct","defineMetadata","deleteMetadata","deleteProperty","get","getMetadata","getMetadataKeys","getOwnMetadata","getOwnMetadataKeys","has","hasMetadata","hasOwnMetadata","metadata","ownKeys","set","String","cooked","dedent","fromCodePoint","raw","asyncDispose","asyncIterator","dispose","for","hasInstance","isConcatSpreadable","isRegistered","isRegisteredSymbol","isWellKnown","isWellKnownSymbol","iterator","keyFor","match","matcher","matchAll","metadataKey","observable","patternMatch","replace","search","species","split","toPrimitive","toStringTag","unscopables","canParse","WebAssembly","CompileError","LinkError","RuntimeError","InstanceProperties","asIndexedPairs","at","anchor","big","bind","blink","bold","codePointAt","codePoints","concat","undefined","copyWithin","demethodize","description","dotAll","drop","emplace","endsWith","every","exec","fill","filter","filterReject","finally","find","findIndex","findLast","findLastIndex","fixed","flags","flatMap","flat","getFloat16","getUint8Clamped","getYear","group","groupByToMap","groupToMap","fontcolor","fontsize","includes","indexed","indexOf","isWellFormed","italic","join","lastIndex","lastIndexOf","lastItem","link","map","padEnd","padStart","push","reduce","reduceRight","repeat","replaceAll","reverse","setFloat16","setUint8Clamped","setYear","slice","small","some","splice","startsWith","sticky","strike","sub","substr","sup","take","test","toArray","toAsync","toExponential","toFixed","toGMTString","toISOString","toJSON","toPrecision","toReversed","toSorted","toSpliced","toString","toWellFormed","trim","trimEnd","trimLeft","trimRight","trimStart","uniqueBy","unshift","unThis","with","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","types","t","_babel","default","canSkipPolyfill","desc","path","node","parent","isCallExpression","callee","arguments","length","splitter","isStringLiteral","isTemplateLiteral","BABEL_RUNTIME","callMethod","id","object","context1","context2","isIdentifier","cloneNode","scope","generateDeclaredUidIdentifier","assignmentExpression","replaceWith","memberExpression","callExpression","identifier","parentPath","unshiftContainer","isCoreJSSource","source","toLowerCase","prototype","hasOwnProperty","call","corejsEntries","coreJSModule","coreJSPureHelper","useBabelRuntime","ext","presetEnvCompat","runtimeCompat","uniqueObjects","v","esnextFallback","cb","fallback","defineProvider","getUtils","method","shouldInjectPolyfill","createMetaResolver","debug","babel","version","proposals","shippedProposals","noRuntimeName","isWebpack","caller","resolve","static","instance","available","getModulesListForTargetVersion","getCoreJSPureBase","useProposalBase","maybeInjectGlobalImpl","utils","injectGlobalImport","maybeInjectGlobal","names","maybeInjectPure","hint","coreJSPureBase","injectDefaultImport","isFeatureStable","esName","runtimeName","polyfills","filterPolyfills","corejs3ShippedProposalsList","entryGlobal","meta","kind","modules","modulesSet","filteredModules","module","stable","remove","usageGlobal","resolved","deps","placement","low","m","usagePure","key","right","isUnaryExpression","operator","isMemberExpression","isReferenced","isUpdateExpression","isSuper","skip","visitor","CallExpression","isImport","async","ForOfStatement|ArrayPattern","SpreadElement","isObjectExpression","YieldExpression","delegate","Class","_path$node$decorators","hasDecorators","decorators","body","el","_decorators"],"mappings":";;;;;;AAAA;;AAEA,kCAAe,IAAIA,GAAG,CAAS,CAC7B,yBAAyB,EACzB,oBAAoB,EACpB,2BAA2B,EAC3B,8BAA8B,EAC9B,8BAA8B,EAC9B,8CAA8C,EAC9C,6BAA6B,EAC7B,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,+BAA+B,EAC/B,0BAA0B,EAC1B,4BAA4B,EAC5B,gCAAgC,EAChC,4BAA4B,EAC5B,8BAA8B,EAC9B,oCAAoC,EACpC,qBAAqB,EACrB,6BAA6B,EAC7B,uBAAuB,CACxB,CAAC;;ACzBF,MAAMC,cAAc,GAAG,EAAE;AACzBC,MAAM,CAACC,IAAI,CAACC,gBAAgB,CAAC,CAACC,OAAO,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;EACrDN,cAAc,CAACK,IAAI,CAAC,GAAGC,KAAK;AAC9B,CAAC,CAAC;AAEF,MAAMC,MAAM,GAAGA,CACbC,IAAI,EACJC,MAAM,EACNJ,IAAI,GAAGI,MAAM,CAAC,CAAC,CAAC,EAChBC,OAAQ,KACqB;EAC7B,OAAO;IACLL,IAAI;IACJG,IAAI;IACJC,MAAM,EAAEA,MAAM,CAACE,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKb,cAAc,CAACY,CAAC,CAAC,GAAGZ,cAAc,CAACa,CAAC,CAAC,CAAC;IACpEH;GACD;AACH,CAAC;AAED,MAAMI,KAAK,GAAIT,IAAY,IAAKE,MAAM,CAAC,IAAI,EAAE,CAACF,IAAI,EAAE,GAAGU,sBAAsB,CAAC,CAAC;AAE/E,MAAMC,oBAAoB,GAAG,CAC3B,mBAAmB,EACnB,8BAA8B,CAC/B;AAEM,MAAMC,eAAe,GAAG,CAAC,oBAAoB,EAAE,GAAGD,oBAAoB,CAAC;AAE9E,MAAME,2BAA2B,GAAG,CAClC,qBAAqB,EACrB,GAAGF,oBAAoB,CACxB;AAED,MAAMG,sBAAsB,GAAG,CAAC,qBAAqB,EAAE,GAAGF,eAAe,CAAC;AAE1E,MAAMG,iBAAiB,GAAG,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;AAElE,MAAMC,2BAA2B,GAAG,CAClC,qCAAqC,EACrC,GAAGD,iBAAiB,CACrB;AAED,MAAML,sBAAsB,GAAG,CAC7B,mBAAmB,EACnB,4BAA4B,EAC5B,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,gCAAgC,EAChC,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,EACrB,8BAA8B,EAC9B,oBAAoB,EACpB,uBAAuB,EACvB,6BAA6B,EAC7B,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,iCAAiC,EACjC,4BAA4B,EAC5B,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,8BAA8B,EAC9B,8BAA8B,EAC9B,8CAA8C,EAC9C,kCAAkC,EAClC,6BAA6B,EAC7B,+BAA+B,EAC/B,8BAA8B,CAC/B;AAEM,MAAMO,mBAAmB,GAAG,CAAC,YAAY,EAAE,qBAAqB,CAAC;AAEjE,MAAMC,gCAAgC,GAAG,CAC9C,GAAGD,mBAAmB,EACtB,GAAGL,eAAe,CACnB;AAED,MAAMO,kBAAkB,GAAG,CACzB,WAAW,EACX,uBAAuB,EACvB,qBAAqB,CACtB;AAED,MAAMC,eAAe,GAAG,CACtB,QAAQ,EACR,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,GAAGN,sBAAsB,CAC1B;AAED,MAAMO,eAAe,GAAG,CACtB,QAAQ,EACR,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,EACzB,4BAA4B,EAC5B,6BAA6B,EAC7B,gCAAgC,EAChC,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,EAC3B,8BAA8B,EAC9B,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,iCAAiC,EACjC,oCAAoC,EACpC,kBAAkB,EAClB,qBAAqB,EACrB,GAAGP,sBAAsB,CAC1B;AAED,MAAMQ,mBAAmB,GAAG,CAC1B,aAAa,EACb,4BAA4B,EAC5B,yBAAyB,EACzB,GAAGR,sBAAsB,CAC1B;AAED,MAAMS,mBAAmB,GAAG,CAC1B,aAAa,EACb,yBAAyB,EACzB,4BAA4B,EAC5B,GAAGT,sBAAsB,CAC1B;AAED,MAAMU,wBAAwB,GAAG,CAC/B,+BAA+B,EAC/B,yBAAyB,EACzB,iCAAiC,EACjC,oBAAoB,CACrB;AAED,MAAMC,2BAA2B,GAAG,CAClC,uBAAuB,EACvB,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,EAC5B,GAAGX,sBAAsB,CAC1B;AAED,MAAMY,yBAAyB,GAAG,CAChC,mCAAmC,EACnC,GAAGT,mBAAmB,CACvB;AAED,MAAMU,2BAA2B,GAAG,CAClC,6BAA6B,EAC7B,8BAA8B,EAC9B,4BAA4B,EAC5B,gCAAgC,EAChC,gCAAgC,EAChC,2BAA2B,EAC3B,8BAA8B,EAC9B,4BAA4B,CAC7B;AAED,MAAMC,oBAAoB,GAAG,CAC3B,6BAA6B,EAC7B,qBAAqB,CACtB;AAEM,MAAMC,6BAA6B,GAAG,CAC3C,wBAAwB,EACxB,0BAA0B,CAC3B;AAED,MAAMC,uBAAuB,GAAG;EAC9BC,IAAI,EAAE7B,MAAM,CAAC,IAAI,EAAE,CAAC,qBAAqB,CAAC,CAAC;EAC3C8B,SAAS,EAAE9B,MAAM,CAAC,IAAI,EAAE,CACtB,+BAA+B,EAC/B,GAAGgB,gCAAgC,CACpC,CAAC;EACFe,EAAE,EAAE/B,MAAM,CAAC,IAAI,EAAE,CAAC,mBAAmB,CAAC;AACxC,CAAC;AAED,MAAMgC,oBAAoB,GAAG,CAC3B,cAAc,EACd,uBAAuB,EACvB,qBAAqB,CACtB;AAEM,MAAMC,QAA6C,GAAG;EAC3DC,oBAAoB,EAAElC,MAAM,CAAC,8BAA8B,EAAE,CAC3D,2CAA2C,EAC3C,qBAAqB,EACrB,qCAAqC,EACrC,yBAAyB,EACzB,GAAGe,mBAAmB,EACtB,GAAGD,2BAA2B,CAC/B,CAAC;EACFqB,aAAa,EAAEnC,MAAM,CAAC,sBAAsB,EAAEwB,yBAAyB,CAAC;EACxEY,cAAc,EAAEpC,MAAM,CAAC,iBAAiB,EAAE,CACxC,oBAAoB,EACpB,GAAGa,iBAAiB,EACpB,GAAGD,sBAAsB,EACzB,0BAA0B,CAC3B,CAAC;EACFyB,WAAW,EAAErC,MAAM,CAAC,IAAI,EAAE,CACxB,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,CACtB,CAAC;EACFsC,QAAQ,EAAEtC,MAAM,CAAC,IAAI,EAAEgC,oBAAoB,CAAC;EAC5CO,IAAI,EAAEvC,MAAM,CAAC,IAAI,EAAE,CAAC,mBAAmB,CAAC,CAAC;EACzCwC,YAAY,EAAExC,MAAM,CAAC,qBAAqB,EAAEsB,wBAAwB,CAAC;EACrEmB,eAAe,EAAEzC,MAAM,CAAC,wBAAwB,EAAE,CAChD,qCAAqC,EACrC,qBAAqB,EACrB,yBAAyB,EACzB,GAAGc,2BAA2B,CAC/B,CAAC;EACF4B,KAAK,EAAE1C,MAAM,CAAC,IAAI,EAAEa,iBAAiB,CAAC;EACtC8B,SAAS,EAAE3C,MAAM,CAAC,IAAI,EAAEa,iBAAiB,CAAC;EAC1C+B,YAAY,EAAErC,KAAK,CAAC,8BAA8B,CAAC;EACnDsC,YAAY,EAAEtC,KAAK,CAAC,8BAA8B,CAAC;EACnDuC,SAAS,EAAEvC,KAAK,CAAC,2BAA2B,CAAC;EAC7CwC,UAAU,EAAExC,KAAK,CAAC,4BAA4B,CAAC;EAC/CyC,UAAU,EAAEzC,KAAK,CAAC,4BAA4B,CAAC;EAC/C0C,QAAQ,EAAEjD,MAAM,CAAC,gBAAgB,EAAE0B,oBAAoB,CAAC;EACxDwB,UAAU,EAAE3C,KAAK,CAAC,4BAA4B,CAAC;EAC/C4C,iBAAiB,EAAE5C,KAAK,CAAC,oCAAoC,CAAC;EAC9D6C,WAAW,EAAE7C,KAAK,CAAC,6BAA6B,CAAC;EACjD8C,WAAW,EAAE9C,KAAK,CAAC,6BAA6B,CAAC;EACjD+C,GAAG,EAAEtD,MAAM,CAAC,WAAW,EAAEkB,eAAe,CAAC;EACzCqC,MAAM,EAAEvD,MAAM,CAAC,IAAI,EAAE,CAAC,uBAAuB,CAAC,CAAC;EAC/CwD,UAAU,EAAExD,MAAM,CAAC,kBAAkB,EAAE,CACrC,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,GAAGY,sBAAsB,CAC1B,CAAC;EACF6C,OAAO,EAAEzD,MAAM,CAAC,eAAe,EAAEe,mBAAmB,CAAC;EACrD2C,UAAU,EAAE1D,MAAM,CAAC,IAAI,EAAEa,iBAAiB,CAAC;EAC3C8C,cAAc,EAAE3D,MAAM,CAAC,IAAI,EAAEa,iBAAiB,CAAC;EAC/C+C,OAAO,EAAE5D,MAAM,CAAC,IAAI,EAAE,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,CAAC;EAC1E6D,MAAM,EAAE7D,MAAM,CAAC,IAAI,EAAE,CACnB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,CACtB,CAAC;EACFR,GAAG,EAAEQ,MAAM,CAAC,WAAW,EAAEmB,eAAe,CAAC;EACzC2C,eAAe,EAAE9D,MAAM,CAAC,kBAAkB,EAAEc,2BAA2B,CAAC;EACxEiD,MAAM,EAAE/D,MAAM,CAAC,cAAc,EAAEiB,kBAAkB,CAAC;EAClD+C,WAAW,EAAEhE,MAAM,CAAC,IAAI,EAAEa,iBAAiB,CAAC;EAC5CoD,SAAS,EAAEjE,MAAM,CAAC,IAAI,EAAEa,iBAAiB,CAAC;EAC1CqD,QAAQ,EAAElE,MAAM,CAAC,IAAI,EAAEa,iBAAiB,CAAC;EACzCsD,GAAG,EAAEnE,MAAM,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,GAAGuB,2BAA2B,CAAC,CAAC;EACrE6C,eAAe,EAAEpE,MAAM,CACrB,yBAAyB,EACzBuB,2BACF,CAAC;EACD8C,OAAO,EAAErE,MAAM,CAAC,gBAAgB,EAAEoB,mBAAmB,CAAC;EACtDkD,OAAO,EAAEtE,MAAM,CAAC,gBAAgB,EAAEqB,mBAAmB,CAAC;EAEtDkD,IAAI,EAAEvE,MAAM,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,GAAGsB,wBAAwB,CAAC,CAAC;EAC/DkD,IAAI,EAAExE,MAAM,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,GAAGsB,wBAAwB,CAAC,CAAC;EAC/DmD,cAAc,EAAEzE,MAAM,CAAC,iBAAiB,EAAE,CAAC,eAAe,CAAC,CAAC;EAC5D0E,YAAY,EAAE1E,MAAM,CAAC,eAAe,EAAE,CAAC,sBAAsB,CAAC,CAAC;EAC/D2E,eAAe,EAAE3E,MAAM,CAAC,kBAAkB,EAAE,CAAC,yBAAyB,CAAC,CAAC;EACxE4E,MAAM,EAAE5E,MAAM,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC;EACvC6E,KAAK,EAAE7E,MAAM,CAAC,IAAI,EAAEe,mBAAmB,CAAC;EACxC+D,UAAU,EAAE9E,MAAM,CAAC,aAAa,EAAE,CAAC,gBAAgB,CAAC,CAAC;EACrD+E,UAAU,EAAE/E,MAAM,CAAC,aAAa,EAAE,CAAC,gBAAgB,CAAC,CAAC;EACrDgF,QAAQ,EAAEhF,MAAM,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,CAAC;EAC/CiF,cAAc,EAAEjF,MAAM,CAAC,iBAAiB,EAAE,CAAC,qBAAqB,CAAC,CAAC;EAClEkF,IAAI,EAAElF,MAAM,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC;EAClCmF,YAAY,EAAEnF,MAAM,CAAC,eAAe,EAAE,CAAC,eAAe,CAAC,CAAC;EACxDoF,WAAW,EAAEpF,MAAM,CAAC,cAAc,EAAE,CAAC,YAAY,CAAC,CAAC;EACnDqF,UAAU,EAAErF,MAAM,CAAC,aAAa,EAAE,CAAC,YAAY,CAAC,CAAC;EACjDsF,eAAe,EAAEtF,MAAM,CAAC,kBAAkB,EAAE,CAC1C,sBAAsB,EACtB,GAAGsB,wBAAwB,EAC3B,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,QAAQ,EACR,QAAQ,CACT,CAAC;EACFiE,QAAQ,EAAEvF,MAAM,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC;AAC9C,CAAC;AAEM,MAAMwF,gBAAsD,GAAG;EACpErD,aAAa,EAAE;IACbN,IAAI,EAAE7B,MAAM,CAAC,qBAAqB,EAAE,CAClC,4BAA4B,EAC5B,GAAGwB,yBAAyB,EAC5B,GAAGC,2BAA2B,EAC9B,GAAGf,eAAe,CACnB;GACF;EACD+E,KAAK,EAAE;IACL5D,IAAI,EAAE7B,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IACnE8B,SAAS,EAAE9B,MAAM,CAAC,kBAAkB,EAAE,CACpC,yBAAyB,EACzB,GAAGgB,gCAAgC,CACpC,CAAC;IACF0E,OAAO,EAAE1F,MAAM,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,CAAC,CAAC;IACxD2F,gBAAgB,EAAE3F,MAAM,CAAC,0BAA0B,EAAE,CACnD,iCAAiC,CAClC,CAAC;IACF+B,EAAE,EAAE/B,MAAM,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC;GACvC;EAEDqC,WAAW,EAAE;IACXuD,MAAM,EAAE5F,MAAM,CAAC,IAAI,EAAE,CAAC,yBAAyB,CAAC;GACjD;EAED6F,MAAM,EAAE;IACNC,KAAK,EAAE9F,MAAM,CAAC,cAAc,EAAE,CAC5B,qBAAqB,EACrB,qBAAqB,CACtB;GACF;EAEDuC,IAAI,EAAE;IACJwD,GAAG,EAAE/F,MAAM,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC;GACxC;EAEDgG,QAAQ,EAAE;IACRC,UAAU,EAAEjG,MAAM,CAAC,sBAAsB,EAAE,CAAC,6BAA6B,CAAC,CAAC;IAC3EkG,aAAa,EAAElG,MAAM,CAAC,yBAAyB,EAAE,CAC/C,gCAAgC,CACjC;GACF;EAEDiD,QAAQ,EAAE;IACRpB,IAAI,EAAE7B,MAAM,CAAC,eAAe,EAAE,CAC5B,sBAAsB,EACtB,GAAG0B,oBAAoB,EACvB,GAAGhB,eAAe,CACnB,CAAC;IACFoF,KAAK,EAAE9F,MAAM,CAAC,gBAAgB,EAAE,CAC9B,uBAAuB,EACvB,qBAAqB,CACtB;GACF;EAEDmG,IAAI,EAAE;IACJC,SAAS,EAAEpG,MAAM,CAAC,kBAAkB,EAAE,CAAC,yBAAyB,CAAC,CAAC;IAClEqG,KAAK,EAAErG,MAAM,CAAC,YAAY,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;IACpEsG,OAAO,EAAEtG,MAAM,CAAC,eAAe,EAAE,CAC/B,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,CACnB,CAAC;IACFuG,SAAS,EAAEvG,MAAM,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,CAAC,EAAE,WAAW;GACvE;EAEDwG,IAAI,EAAE;IACJC,WAAW,EAAEzG,MAAM,CAAC,kBAAkB,EAAE,CAAC,yBAAyB,CAAC,CAAC;IACpE0G,WAAW,EAAE1G,MAAM,CAAC,kBAAkB,EAAE,CAAC,yBAAyB,CAAC,CAAC;IACpE2G,KAAK,EAAE3G,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,CAAC,CAAC;IAC9C4G,KAAK,EAAE5G,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,CAAC,CAAC;IAC9C6G,KAAK,EAAE7G,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,CAAC,CAAC;IAC9C8G,IAAI,EAAE9G,MAAM,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,CAAC;IAC3C+G,KAAK,EAAE/G,MAAM,CAAC,YAAY,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAClDgH,KAAK,EAAEhH,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,CAAC,CAAC;IAC9CiH,IAAI,EAAEjH,MAAM,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,CAAC;IAC3CkH,OAAO,EAAElH,MAAM,CAAC,cAAc,EAAE,CAAC,qBAAqB,CAAC,CAAC;IACxDmH,KAAK,EAAEnH,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,CAAC,CAAC;IAC9CoH,MAAM,EAAEpH,MAAM,CAAC,aAAa,EAAE,CAAC,gBAAgB,CAAC,CAAC;IACjDqH,QAAQ,EAAErH,MAAM,CAAC,eAAe,EAAE,CAAC,sBAAsB,CAAC,CAAC;IAC3DsH,MAAM,EAAEtH,MAAM,CAAC,aAAa,EAAE,CAAC,oBAAoB,CAAC,CAAC;IACrDuH,KAAK,EAAEvH,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,CAAC,CAAC;IAC9CwH,KAAK,EAAExH,MAAM,CAAC,YAAY,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAClDyH,IAAI,EAAEzH,MAAM,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,CAAC;IAC3C0H,KAAK,EAAE1H,MAAM,CAAC,YAAY,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAClD2H,KAAK,EAAE3H,MAAM,CAAC,YAAY,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAClD4H,KAAK,EAAE5H,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,CAAC,CAAC;IAC9C6H,KAAK,EAAE7H,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,CAAC,CAAC;IAC9C8H,IAAI,EAAE9H,MAAM,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,CAAC;IAC3C+H,OAAO,EAAE/H,MAAM,CAAC,cAAc,EAAE,CAAC,qBAAqB,CAAC,CAAC;IACxDgI,KAAK,EAAEhI,MAAM,CAAC,YAAY,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAClDiI,UAAU,EAAEjI,MAAM,CAAC,kBAAkB,EAAE,CAAC,yBAAyB,CAAC,CAAC;IACnEkI,IAAI,EAAElI,MAAM,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,CAAC;IAC3CmI,OAAO,EAAEnI,MAAM,CAAC,cAAc,EAAE,CAAC,qBAAqB,CAAC,CAAC;IACxDoI,IAAI,EAAEpI,MAAM,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,CAAC;IAC3CqI,IAAI,EAAErI,MAAM,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,CAAC;IAC3CsI,KAAK,EAAEtI,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,CAAC,CAAC;IAC9CuI,KAAK,EAAEvI,MAAM,CAAC,YAAY,EAAE,CAAC,mBAAmB,CAAC;GAClD;EAEDsD,GAAG,EAAE;IACHzB,IAAI,EAAE7B,MAAM,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,GAAGkB,eAAe,CAAC,CAAC;IAC3DsH,OAAO,EAAExI,MAAM,CAAC,IAAI,EAAE,CAAC,qBAAqB,EAAE,GAAGkB,eAAe,CAAC,CAAC;IAClEuH,KAAK,EAAEzI,MAAM,CAAC,IAAI,EAAE,CAAC,mBAAmB,EAAE,GAAGkB,eAAe,CAAC,CAAC;IAC9Da,EAAE,EAAE/B,MAAM,CAAC,IAAI,EAAE,CAAC,eAAe,EAAE,GAAGkB,eAAe,CAAC;GACvD;EAEDqC,MAAM,EAAE;IACNmF,OAAO,EAAE1I,MAAM,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,CAAC,CAAC;IACxD2I,gBAAgB,EAAE3I,MAAM,CAAC,yBAAyB,EAAE,CAClD,4BAA4B,CAC7B,CAAC;IACF4I,gBAAgB,EAAE5I,MAAM,CAAC,yBAAyB,EAAE,CAClD,4BAA4B,CAC7B,CAAC;IACF6I,UAAU,EAAE7I,MAAM,CAAC,oBAAoB,EAAE,CAAC,2BAA2B,CAAC,CAAC;IACvE8I,QAAQ,EAAE9I,MAAM,CAAC,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,CAAC;IAC7D+I,SAAS,EAAE/I,MAAM,CAAC,mBAAmB,EAAE,CAAC,sBAAsB,CAAC,CAAC;IAChEgJ,KAAK,EAAEhJ,MAAM,CAAC,eAAe,EAAE,CAAC,kBAAkB,CAAC,CAAC;IACpDiJ,aAAa,EAAEjJ,MAAM,CAAC,wBAAwB,EAAE,CAC9C,2BAA2B,CAC5B,CAAC;IACF+E,UAAU,EAAE/E,MAAM,CAAC,oBAAoB,EAAE,CAAC,uBAAuB,CAAC,CAAC;IACnEgF,QAAQ,EAAEhF,MAAM,CAAC,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,CAAC;IAC7D8F,KAAK,EAAE9F,MAAM,CAAC,cAAc,EAAE,CAC5B,qBAAqB,EACrB,qBAAqB,CACtB;GACF;EAEDN,MAAM,EAAE;IACNwJ,MAAM,EAAElJ,MAAM,CAAC,eAAe,EAAE,CAAC,kBAAkB,CAAC,CAAC;IACrDmJ,MAAM,EAAEnJ,MAAM,CAAC,eAAe,EAAE,CAAC,kBAAkB,CAAC,CAAC;IACrDoJ,gBAAgB,EAAEpJ,MAAM,CAAC,0BAA0B,EAAE,CACnD,6BAA6B,CAC9B,CAAC;IACFqJ,cAAc,EAAErJ,MAAM,CAAC,wBAAwB,EAAE,CAC/C,2BAA2B,CAC5B,CAAC;IACFsJ,OAAO,EAAEtJ,MAAM,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,CAAC,CAAC;IACxDuJ,MAAM,EAAEvJ,MAAM,CAAC,eAAe,EAAE,CAAC,kBAAkB,CAAC,CAAC;IACrDwJ,WAAW,EAAExJ,MAAM,CAAC,qBAAqB,EAAE,CACzC,wBAAwB,EACxB,mBAAmB,CACpB,CAAC;IACFyJ,wBAAwB,EAAEzJ,MAAM,CAAC,oCAAoC,EAAE,CACrE,uCAAuC,CACxC,CAAC;IACF0J,yBAAyB,EAAE1J,MAAM,CAAC,qCAAqC,EAAE,CACvE,wCAAwC,CACzC,CAAC;IACF2J,mBAAmB,EAAE3J,MAAM,CAAC,+BAA+B,EAAE,CAC3D,kCAAkC,CACnC,CAAC;IACF4J,qBAAqB,EAAE5J,MAAM,CAAC,iCAAiC,EAAE,CAC/D,WAAW,CACZ,CAAC;IACF6J,cAAc,EAAE7J,MAAM,CAAC,yBAAyB,EAAE,CAChD,4BAA4B,CAC7B,CAAC;IACFwI,OAAO,EAAExI,MAAM,CAAC,iBAAiB,EAAE,CACjC,wBAAwB,EACxB,kBAAkB,CACnB,CAAC;IACF8J,MAAM,EAAE9J,MAAM,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,CAAC,CAAC;IACvD+J,EAAE,EAAE/J,MAAM,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,CAAC;IACzCgK,YAAY,EAAEhK,MAAM,CAAC,sBAAsB,EAAE,CAAC,yBAAyB,CAAC,CAAC;IACzEiK,QAAQ,EAAEjK,MAAM,CAAC,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,CAAC;IAC7DkK,QAAQ,EAAElK,MAAM,CAAC,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,CAAC;IAC7DL,IAAI,EAAEK,MAAM,CAAC,aAAa,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAC/CmK,iBAAiB,EAAEnK,MAAM,CAAC,2BAA2B,EAAE,CACrD,8BAA8B,CAC/B,CAAC;IACFoK,IAAI,EAAEpK,MAAM,CAAC,aAAa,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAC/CqK,cAAc,EAAErK,MAAM,CAAC,yBAAyB,EAAE,CAChD,4BAA4B,CAC7B,CAAC;IACFsK,MAAM,EAAEtK,MAAM,CAAC,eAAe,EAAE,CAAC,kBAAkB,CAAC;GACrD;EAEDyD,OAAO,EAAE;IACP8G,GAAG,EAAEvK,MAAM,CAAC,IAAI,EAAEgB,gCAAgC,CAAC;IACnDwJ,UAAU,EAAExK,MAAM,CAAC,IAAI,EAAE,CACvB,wBAAwB,EACxB,GAAGgB,gCAAgC,CACpC,CAAC;IACFyJ,GAAG,EAAEzK,MAAM,CAAC,IAAI,EAAE,CAChB,gBAAgB,EAChB,oBAAoB,EACpB,GAAGgB,gCAAgC,CACpC,CAAC;IACF0J,IAAI,EAAE1K,MAAM,CAAC,IAAI,EAAEgB,gCAAgC,CAAC;IACpD2J,GAAG,EAAE3K,MAAM,CAAC,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAGe,mBAAmB,CAAC,CAAC;IACjE6J,aAAa,EAAE5K,MAAM,CAAC,IAAI,EAAE,CAC1B,+BAA+B,EAC/B,GAAGe,mBAAmB,CACvB;GACF;EAED6C,OAAO,EAAE;IACPiH,KAAK,EAAE7K,MAAM,CAAC,eAAe,EAAE,CAAC,kBAAkB,CAAC,CAAC;IACpD8K,SAAS,EAAE9K,MAAM,CAAC,mBAAmB,EAAE,CAAC,sBAAsB,CAAC,CAAC;IAChE+K,cAAc,EAAE/K,MAAM,CAAC,yBAAyB,EAAE,CAChD,gCAAgC,CACjC,CAAC;IACFqJ,cAAc,EAAErJ,MAAM,CAAC,yBAAyB,EAAE,CAChD,4BAA4B,CAC7B,CAAC;IACFgL,cAAc,EAAEhL,MAAM,CAAC,yBAAyB,EAAE,CAChD,gCAAgC,CACjC,CAAC;IACFiL,cAAc,EAAEjL,MAAM,CAAC,yBAAyB,EAAE,CAChD,4BAA4B,CAC7B,CAAC;IACFkL,GAAG,EAAElL,MAAM,CAAC,aAAa,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAC9CmL,WAAW,EAAEnL,MAAM,CAAC,sBAAsB,EAAE,CAC1C,6BAA6B,CAC9B,CAAC;IACFoL,eAAe,EAAEpL,MAAM,CAAC,2BAA2B,EAAE,CACnD,kCAAkC,CACnC,CAAC;IACFqL,cAAc,EAAErL,MAAM,CAAC,0BAA0B,EAAE,CACjD,iCAAiC,CAClC,CAAC;IACFsL,kBAAkB,EAAEtL,MAAM,CAAC,+BAA+B,EAAE,CAC1D,sCAAsC,CACvC,CAAC;IACFyJ,wBAAwB,EAAEzJ,MAAM,CAAC,qCAAqC,EAAE,CACtE,wCAAwC,CACzC,CAAC;IACF6J,cAAc,EAAE7J,MAAM,CAAC,0BAA0B,EAAE,CACjD,6BAA6B,CAC9B,CAAC;IACFuL,GAAG,EAAEvL,MAAM,CAAC,aAAa,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAC9CwL,WAAW,EAAExL,MAAM,CAAC,sBAAsB,EAAE,CAC1C,6BAA6B,CAC9B,CAAC;IACFyL,cAAc,EAAEzL,MAAM,CAAC,0BAA0B,EAAE,CACjD,iCAAiC,CAClC,CAAC;IACFgK,YAAY,EAAEhK,MAAM,CAAC,uBAAuB,EAAE,CAAC,0BAA0B,CAAC,CAAC;IAC3E0L,QAAQ,EAAE1L,MAAM,CAAC,kBAAkB,EAAE,CAAC,yBAAyB,CAAC,CAAC;IACjE2L,OAAO,EAAE3L,MAAM,CAAC,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,CAAC;IAC5DmK,iBAAiB,EAAEnK,MAAM,CAAC,4BAA4B,EAAE,CACtD,+BAA+B,CAChC,CAAC;IACF4L,GAAG,EAAE5L,MAAM,CAAC,aAAa,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAC9CqK,cAAc,EAAErK,MAAM,CAAC,0BAA0B,EAAE,CACjD,6BAA6B,CAC9B;GACF;EAED6D,MAAM,EAAE;IACNe,MAAM,EAAE5E,MAAM,CAAC,eAAe,EAAE,CAAC,sBAAsB,CAAC;GACzD;EAEDR,GAAG,EAAE;IACHqC,IAAI,EAAE7B,MAAM,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,GAAGmB,eAAe,CAAC,CAAC;IAC3DY,EAAE,EAAE/B,MAAM,CAAC,IAAI,EAAE,CAAC,eAAe,EAAE,GAAGmB,eAAe,CAAC;GACvD;EAED0K,MAAM,EAAE;IACNC,MAAM,EAAE9L,MAAM,CAAC,eAAe,EAAE,CAAC,sBAAsB,CAAC,CAAC;IACzD+L,MAAM,EAAE/L,MAAM,CAAC,eAAe,EAAE,CAC9B,sBAAsB,EACtB,2BAA2B,EAC3B,aAAa,CACd,CAAC;IACFgM,aAAa,EAAEhM,MAAM,CAAC,wBAAwB,EAAE,CAC9C,2BAA2B,CAC5B,CAAC;IACFiM,GAAG,EAAEjM,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,CAAC;GAC5C;EAED+D,MAAM,EAAE;IACNmI,YAAY,EAAElM,MAAM,CAAC,sBAAsB,EAAE,CAC3C,6BAA6B,EAC7B,qCAAqC,CACtC,CAAC;IACFmM,aAAa,EAAEnM,MAAM,CAAC,uBAAuB,EAAE,CAC7C,0BAA0B,CAC3B,CAAC;IACFoM,OAAO,EAAEpM,MAAM,CAAC,gBAAgB,EAAE,CAChC,uBAAuB,EACvB,yBAAyB,CAC1B,CAAC;IACFqM,GAAG,EAAErM,MAAM,CAAC,YAAY,EAAE,EAAE,EAAE,WAAW,CAAC;IAC1CsM,WAAW,EAAEtM,MAAM,CAAC,qBAAqB,EAAE,CACzC,wBAAwB,EACxB,0BAA0B,CAC3B,CAAC;IACFuM,kBAAkB,EAAEvM,MAAM,CAAC,6BAA6B,EAAE,CACxD,gCAAgC,EAChC,iBAAiB,CAClB,CAAC;IACFwM,YAAY,EAAExM,MAAM,CAAC,sBAAsB,EAAE,CAC3C,6BAA6B,EAC7B,WAAW,CACZ,CAAC;IACFyM,kBAAkB,EAAEzM,MAAM,CAAC,6BAA6B,EAAE,CACxD,oCAAoC,EACpC,WAAW,CACZ,CAAC;IACF0M,WAAW,EAAE1M,MAAM,CAAC,sBAAsB,EAAE,CAC1C,6BAA6B,EAC7B,WAAW,CACZ,CAAC;IACF2M,iBAAiB,EAAE3M,MAAM,CAAC,6BAA6B,EAAE,CACvD,oCAAoC,EACpC,WAAW,CACZ,CAAC;IACF4M,QAAQ,EAAE5M,MAAM,CAAC,iBAAiB,EAAE,CAClC,oBAAoB,EACpB,GAAGY,sBAAsB,CAC1B,CAAC;IACFiM,MAAM,EAAE7M,MAAM,CAAC,gBAAgB,EAAE,EAAE,EAAE,WAAW,CAAC;IACjD8M,KAAK,EAAE9M,MAAM,CAAC,cAAc,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;IACrE+M,OAAO,EAAE/M,MAAM,CAAC,gBAAgB,EAAE,CAAC,uBAAuB,CAAC,CAAC;IAC5DgN,QAAQ,EAAEhN,MAAM,CAAC,kBAAkB,EAAE,CACnC,qBAAqB,EACrB,qBAAqB,CACtB,CAAC;IACF0L,QAAQ,EAAE1L,MAAM,CAAC,iBAAiB,EAAE2B,6BAA6B,CAAC;IAClEsL,WAAW,EAAEjN,MAAM,CAAC,qBAAqB,EAAE,CAAC,4BAA4B,CAAC,CAAC;IAC1EkN,UAAU,EAAElN,MAAM,CAAC,mBAAmB,EAAE,CAAC,0BAA0B,CAAC,CAAC;IACrEmN,YAAY,EAAEnN,MAAM,CAAC,sBAAsB,EAAE,CAC3C,6BAA6B,CAC9B,CAAC;IACFoN,OAAO,EAAEpN,MAAM,CAAC,gBAAgB,EAAE,CAChC,mBAAmB,EACnB,mBAAmB,CACpB,CAAC;IACFqN,MAAM,EAAErN,MAAM,CAAC,eAAe,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IACzEsN,OAAO,EAAEtN,MAAM,CAAC,gBAAgB,EAAE,CAChC,mBAAmB,EACnB,kBAAkB,CACnB,CAAC;IACFuN,KAAK,EAAEvN,MAAM,CAAC,cAAc,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;IACrEwN,WAAW,EAAExN,MAAM,CAAC,qBAAqB,EAAE,CACzC,wBAAwB,EACxB,sBAAsB,CACvB,CAAC;IACFyN,WAAW,EAAEzN,MAAM,CAAC,sBAAsB,EAAE,CAC1C,yBAAyB,EACzB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,CACxB,CAAC;IACF0N,WAAW,EAAE1N,MAAM,CAAC,oBAAoB,EAAE,CAAC,uBAAuB,CAAC;GACpE;EAEDmE,GAAG,EAAE;IACHwJ,QAAQ,EAAE3N,MAAM,CAAC,eAAe,EAAE,CAAC,mBAAmB,EAAE,SAAS,CAAC;GACnE;EAEDqE,OAAO,EAAE;IACPxC,IAAI,EAAE7B,MAAM,CAAC,IAAI,EAAE,CAAC,sBAAsB,EAAE,GAAGoB,mBAAmB,CAAC,CAAC;IACpEW,EAAE,EAAE/B,MAAM,CAAC,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAGoB,mBAAmB,CAAC;GAChE;EAEDkD,OAAO,EAAE;IACPzC,IAAI,EAAE7B,MAAM,CAAC,IAAI,EAAE,CAAC,sBAAsB,EAAE,GAAGqB,mBAAmB,CAAC,CAAC;IACpEU,EAAE,EAAE/B,MAAM,CAAC,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAGqB,mBAAmB,CAAC;GAChE;EAEDyB,SAAS,EAAElB,uBAAuB;EAClCsB,UAAU,EAAEtB,uBAAuB;EACnCuB,iBAAiB,EAAEvB,uBAAuB;EAC1CmB,UAAU,EAAEnB,uBAAuB;EACnCwB,WAAW,EAAExB,uBAAuB;EACpCoB,UAAU,EAAEpB,uBAAuB;EACnCyB,WAAW,EAAEzB,uBAAuB;EACpCgB,YAAY,EAAEhB,uBAAuB;EACrCiB,YAAY,EAAEjB,uBAAuB;EAErCgM,WAAW,EAAE;IACXC,YAAY,EAAE7N,MAAM,CAAC,IAAI,EAAEa,iBAAiB,CAAC;IAC7CiN,SAAS,EAAE9N,MAAM,CAAC,IAAI,EAAEa,iBAAiB,CAAC;IAC1CkN,YAAY,EAAE/N,MAAM,CAAC,IAAI,EAAEa,iBAAiB;;AAEhD,CAAC;AAEM,MAAMmN,kBAAkB,GAAG;EAChCC,cAAc,EAAEjO,MAAM,CAAC,yBAAyB,EAAE,CAChD,wCAAwC,EACxC,GAAGwB,yBAAyB,EAC5B,kCAAkC,EAClC,GAAGE,oBAAoB,CACxB,CAAC;EACFwM,EAAE,EAAElO,MAAM,CAAC,aAAa,EAAE;;;;;;;EAOxB,kBAAkB,EAClB,0BAA0B,EAC1B,aAAa,CACd,CAAC;EACFmO,MAAM,EAAEnO,MAAM,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,CAAC;EAC1CoO,GAAG,EAAEpO,MAAM,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC;EACpCqO,IAAI,EAAErO,MAAM,CAAC,eAAe,EAAE,CAAC,kBAAkB,CAAC,CAAC;EACnDsO,KAAK,EAAEtO,MAAM,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;EACxCuO,IAAI,EAAEvO,MAAM,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,CAAC;EACtCwO,WAAW,EAAExO,MAAM,CAAC,wBAAwB,EAAE,CAAC,yBAAyB,CAAC,CAAC;EAC1EyO,UAAU,EAAEzO,MAAM,CAAC,sBAAsB,EAAE,CAAC,2BAA2B,CAAC,CAAC;EACzE0O,MAAM,EAAE1O,MAAM,CAAC,iBAAiB,EAAE,CAAC,iBAAiB,CAAC,EAAE2O,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC;EAC7EC,UAAU,EAAE5O,MAAM,CAAC,sBAAsB,EAAE,CAAC,sBAAsB,CAAC,CAAC;EACpE6O,WAAW,EAAE7O,MAAM,CAAC,sBAAsB,EAAE,CAAC,6BAA6B,CAAC,CAAC;EAC5E8O,WAAW,EAAE9O,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;EACjE+O,MAAM,EAAE/O,MAAM,CAAC,IAAI,EAAE,CAAC,mBAAmB,CAAC,CAAC;EAC3CgP,IAAI,EAAEhP,MAAM,CAAC,IAAI,EAAE,CACjB,4BAA4B,EAC5B,GAAGwB,yBAAyB,EAC5B,sBAAsB,EACtB,GAAGE,oBAAoB,CACxB,CAAC;EACFuN,OAAO,EAAEjP,MAAM,CAAC,kBAAkB,EAAE,CAClC,oBAAoB,EACpB,yBAAyB,CAC1B,CAAC;EACFkP,QAAQ,EAAElP,MAAM,CAAC,oBAAoB,EAAE,CAAC,qBAAqB,CAAC,CAAC;EAC/DsJ,OAAO,EAAEtJ,MAAM,CAAC,kBAAkB,EAAEW,2BAA2B,CAAC;EAChEwO,KAAK,EAAEnP,MAAM,CAAC,gBAAgB,EAAE,CAC9B,gBAAgB,EAChB,6BAA6B;;;;;;EAM7B,uBAAuB,EACvB,GAAG0B,oBAAoB,CACxB,CAAC;EACF0N,IAAI,EAAEpP,MAAM,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,CAAC;EACtCqP,IAAI,EAAErP,MAAM,CAAC,eAAe,EAAE,CAAC,eAAe,CAAC,CAAC;EAChDsP,MAAM,EAAEtP,MAAM,CAAC,iBAAiB,EAAE,CAChC,iBAAiB,EACjB,8BAA8B,EAC9B,wBAAwB,EACxB,GAAG0B,oBAAoB,CACxB,CAAC;EACF6N,YAAY,EAAEvP,MAAM,CAAC,uBAAuB,EAAE,CAAC,4BAA4B,CAAC,CAAC;EAC7EwP,OAAO,EAAExP,MAAM,CAAC,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAGe,mBAAmB,CAAC,CAAC;EACrE0O,IAAI,EAAEzP,MAAM,CAAC,eAAe,EAAE,CAC5B,eAAe,EACf,4BAA4B,EAC5B,sBAAsB,EACtB,GAAG0B,oBAAoB,CACxB,CAAC;EACFgO,SAAS,EAAE1P,MAAM,CAAC,qBAAqB,EAAE,CAAC,qBAAqB,CAAC,CAAC;EACjE2P,QAAQ,EAAE3P,MAAM,CAAC,oBAAoB,EAAE,CAAC,oBAAoB,CAAC,CAAC;EAC9D4P,aAAa,EAAE5P,MAAM,CAAC,0BAA0B,EAAE,CAChD,0BAA0B,CAC3B,CAAC;EACF6P,KAAK,EAAE7P,MAAM,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;EACxC8P,KAAK,EAAE9P,MAAM,CAAC,gBAAgB,EAAE,CAAC,iBAAiB,CAAC,CAAC;EACpD+P,OAAO,EAAE/P,MAAM,CAAC,mBAAmB,EAAE,CACnC,mBAAmB,EACnB,+BAA+B,EAC/B,gCAAgC,EAChC,0BAA0B,EAC1B,GAAG0B,oBAAoB,CACxB,CAAC;EACFsO,IAAI,EAAEhQ,MAAM,CAAC,eAAe,EAAE,CAAC,eAAe,EAAE,2BAA2B,CAAC,CAAC;EAC7EiQ,UAAU,EAAEjQ,MAAM,CAAC,IAAI,EAAE,CACvB,8BAA8B,EAC9B,GAAGgC,oBAAoB,CACxB,CAAC;EACFkO,eAAe,EAAElQ,MAAM,CAAC,IAAI,EAAE,CAC5B,oCAAoC,EACpC,GAAGgC,oBAAoB,CACxB,CAAC;EACFmO,OAAO,EAAEnQ,MAAM,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,CAAC;EAC3CoQ,KAAK,EAAEpQ,MAAM,CAAC,gBAAgB,EAAE,CAAC,oBAAoB,CAAC,CAAC;EACvDwI,OAAO,EAAExI,MAAM,CAAC,mBAAmB,EAAE,CAAC,uBAAuB,CAAC,CAAC;EAC/DqQ,YAAY,EAAErQ,MAAM,CAAC,0BAA0B,EAAE,CAC/C,8BAA8B,EAC9B,QAAQ,EACR,qBAAqB,CACtB,CAAC;EACFsQ,UAAU,EAAEtQ,MAAM,CAAC,uBAAuB,EAAE,CAC1C,2BAA2B,EAC3B,QAAQ,EACR,qBAAqB,CACtB,CAAC;EACFuQ,SAAS,EAAEvQ,MAAM,CAAC,IAAI,EAAE,CAAC,qBAAqB,CAAC,CAAC;EAChDwQ,QAAQ,EAAExQ,MAAM,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,CAAC;EAC9CH,OAAO,EAAEG,MAAM,CAAC,mBAAmB,EAAE,CACnC,mBAAmB,EACnB,gCAAgC,EAChC,0BAA0B,EAC1B,GAAG0B,oBAAoB,EACvB,8BAA8B,CAC/B,CAAC;EACF+O,QAAQ,EAAEzQ,MAAM,CAAC,mBAAmB,EAAE,CACpC,mBAAmB,EACnB,oBAAoB,CACrB,CAAC;EACF0Q,OAAO,EAAE1Q,MAAM,CAAC,IAAI,EAAE,CACpB,+BAA+B,EAC/B,GAAGwB,yBAAyB,EAC5B,yBAAyB,EACzB,GAAGE,oBAAoB,CACxB,CAAC;EACFiP,OAAO,EAAE3Q,MAAM,CAAC,mBAAmB,EAAE,CAAC,mBAAmB,CAAC,CAAC;EAC3D4Q,YAAY,EAAE5Q,MAAM,CAAC,yBAAyB,EAAE,CAAC,0BAA0B,CAAC,CAAC;EAC7E6Q,MAAM,EAAE7Q,MAAM,CAAC,IAAI,EAAE,CAAC,mBAAmB,CAAC,CAAC;EAC3C8Q,IAAI,EAAE9Q,MAAM,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC;EACrCL,IAAI,EAAEK,MAAM,CAAC,eAAe,EAAEW,2BAA2B,CAAC;EAC1DoQ,SAAS,EAAE/Q,MAAM,CAAC,IAAI,EAAE,CAAC,yBAAyB,CAAC,CAAC;EACpDgR,WAAW,EAAEhR,MAAM,CAAC,wBAAwB,EAAE,CAAC,wBAAwB,CAAC,CAAC;EACzEiR,QAAQ,EAAEjR,MAAM,CAAC,IAAI,EAAE,CAAC,wBAAwB,CAAC,CAAC;EAClDkR,IAAI,EAAElR,MAAM,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,CAAC;EACtCmR,GAAG,EAAEnR,MAAM,CAAC,cAAc,EAAE,CAC1B,cAAc,EACd,2BAA2B,EAC3B,qBAAqB,CACtB,CAAC;EACF8M,KAAK,EAAE9M,MAAM,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;EAC1DgN,QAAQ,EAAEhN,MAAM,CAAC,oBAAoB,EAAE,CACrC,qBAAqB,EACrB,gBAAgB,CACjB,CAAC;EACFF,IAAI,EAAEE,MAAM,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,CAAC;EACxCoR,MAAM,EAAEpR,MAAM,CAAC,kBAAkB,EAAE,CAAC,mBAAmB,CAAC,CAAC;EACzDqR,QAAQ,EAAErR,MAAM,CAAC,oBAAoB,EAAE,CAAC,qBAAqB,CAAC,CAAC;EAC/DsR,IAAI,EAAEtR,MAAM,CAAC,eAAe,EAAE,CAAC,eAAe,CAAC,CAAC;EAChDuR,MAAM,EAAEvR,MAAM,CAAC,iBAAiB,EAAE,CAChC,iBAAiB,EACjB,8BAA8B,EAC9B,wBAAwB,EACxB,GAAG0B,oBAAoB,CACxB,CAAC;EACF8P,WAAW,EAAExR,MAAM,CAAC,uBAAuB,EAAE,CAAC,uBAAuB,CAAC,CAAC;EACvEyR,MAAM,EAAEzR,MAAM,CAAC,iBAAiB,EAAE,CAAC,kBAAkB,CAAC,CAAC;EACvDoN,OAAO,EAAEpN,MAAM,CAAC,IAAI,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;EAC9D0R,UAAU,EAAE1R,MAAM,CAAC,sBAAsB,EAAE,CACzC,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,CACjB,CAAC;EACF2R,OAAO,EAAE3R,MAAM,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC;EACzDqN,MAAM,EAAErN,MAAM,CAAC,IAAI,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;EAC5D4R,UAAU,EAAE5R,MAAM,CAAC,IAAI,EAAE,CACvB,8BAA8B,EAC9B,GAAGgC,oBAAoB,CACxB,CAAC;EACF6P,eAAe,EAAE7R,MAAM,CAAC,IAAI,EAAE,CAC5B,oCAAoC,EACpC,GAAGgC,oBAAoB,CACxB,CAAC;EACF8P,OAAO,EAAE9R,MAAM,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,CAAC;EAC3C+R,KAAK,EAAE/R,MAAM,CAAC,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,CAAC;EACnDgS,KAAK,EAAEhS,MAAM,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;EACxCiS,IAAI,EAAEjS,MAAM,CAAC,eAAe,EAAE,CAC5B,eAAe,EACf,4BAA4B,EAC5B,sBAAsB,EACtB,GAAG0B,oBAAoB,CACxB,CAAC;EACFtB,IAAI,EAAEJ,MAAM,CAAC,eAAe,EAAE,CAAC,eAAe,CAAC,CAAC;EAChDkS,MAAM,EAAElS,MAAM,CAAC,iBAAiB,EAAE,CAAC,iBAAiB,CAAC,CAAC;EACtDuN,KAAK,EAAEvN,MAAM,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;EAC1DmS,UAAU,EAAEnS,MAAM,CAAC,sBAAsB,EAAE,CAAC,uBAAuB,CAAC,CAAC;EACrEoS,MAAM,EAAEpS,MAAM,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,CAAC;EAC1CqS,MAAM,EAAErS,MAAM,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,CAAC;EAC1CsS,GAAG,EAAEtS,MAAM,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC;EACpCuS,MAAM,EAAEvS,MAAM,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,CAAC;EAC1CwS,GAAG,EAAExS,MAAM,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC;EACpCyS,IAAI,EAAEzS,MAAM,CAAC,IAAI,EAAE,CACjB,4BAA4B,EAC5B,GAAGwB,yBAAyB,EAC5B,sBAAsB,EACtB,GAAGE,oBAAoB,CACxB,CAAC;EACFgR,IAAI,EAAE1S,MAAM,CAAC,IAAI,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;EACxD2S,OAAO,EAAE3S,MAAM,CAAC,IAAI,EAAE,CACpB,gCAAgC,EAChC,GAAGwB,yBAAyB,EAC5B,0BAA0B,EAC1B,GAAGE,oBAAoB,CACxB,CAAC;EACFkR,OAAO,EAAE5S,MAAM,CAAC,IAAI,EAAE,CACpB,0BAA0B,EAC1B,GAAG0B,oBAAoB,EACvB,GAAGF,yBAAyB,EAC5B,GAAGC,2BAA2B,CAC/B,CAAC;EACFoR,aAAa,EAAE7S,MAAM,CAAC,IAAI,EAAE,CAAC,0BAA0B,CAAC,CAAC;EACzD8S,OAAO,EAAE9S,MAAM,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,CAAC;EAC7C+S,WAAW,EAAE/S,MAAM,CAAC,IAAI,EAAE,CAAC,uBAAuB,CAAC,CAAC;EACpDgT,WAAW,EAAEhT,MAAM,CAAC,IAAI,EAAE,CAAC,uBAAuB,CAAC,CAAC;EACpDiT,MAAM,EAAEjT,MAAM,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;EAC5DkT,WAAW,EAAElT,MAAM,CAAC,IAAI,EAAE,CAAC,wBAAwB,CAAC,CAAC;EACrDmT,UAAU,EAAEnT,MAAM,CAAC,sBAAsB,EAAE,CAAC,sBAAsB,CAAC,CAAC;EACpEoT,QAAQ,EAAEpT,MAAM,CAAC,oBAAoB,EAAE,CACrC,oBAAoB,EACpB,eAAe,CAChB,CAAC;EACFqT,SAAS,EAAErT,MAAM,CAAC,qBAAqB,EAAE,CAAC,qBAAqB,CAAC,CAAC;EACjEsT,QAAQ,EAAEtT,MAAM,CAAC,IAAI,EAAE,CACrB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,CACtB,CAAC;EACFuT,YAAY,EAAEvT,MAAM,CAAC,yBAAyB,EAAE,CAAC,0BAA0B,CAAC,CAAC;EAC7EwT,IAAI,EAAExT,MAAM,CAAC,eAAe,EAAE,CAAC,gBAAgB,CAAC,CAAC;EACjDyT,OAAO,EAAEzT,MAAM,CAAC,mBAAmB,EAAE,CAAC,oBAAoB,CAAC,CAAC;EAC5D0T,QAAQ,EAAE1T,MAAM,CAAC,oBAAoB,EAAE,CAAC,sBAAsB,CAAC,CAAC;EAChE2T,SAAS,EAAE3T,MAAM,CAAC,qBAAqB,EAAE,CAAC,oBAAoB,CAAC,CAAC;EAChE4T,SAAS,EAAE5T,MAAM,CAAC,qBAAqB,EAAE,CAAC,sBAAsB,CAAC,CAAC;EAClE6T,QAAQ,EAAE7T,MAAM,CAAC,oBAAoB,EAAE,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;EAC5E8T,OAAO,EAAE9T,MAAM,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC;EACzD+T,MAAM,EAAE/T,MAAM,CAAC,kBAAkB,EAAE,CAAC,yBAAyB,CAAC,CAAC;EAC/DsK,MAAM,EAAEtK,MAAM,CAAC,iBAAiB,EAAEW,2BAA2B,CAAC;EAC9DqT,IAAI,EAAEhU,MAAM,CAAC,eAAe,EAAE,CAAC,eAAe,CAAC,CAAC;EAChDiU,gBAAgB,EAAEjU,MAAM,CAAC,IAAI,EAAE,CAAC,yBAAyB,CAAC,CAAC;EAC3DkU,gBAAgB,EAAElU,MAAM,CAAC,IAAI,EAAE,CAAC,yBAAyB,CAAC,CAAC;EAC3DmU,gBAAgB,EAAEnU,MAAM,CAAC,IAAI,EAAE,CAAC,yBAAyB,CAAC,CAAC;EAC3DoU,gBAAgB,EAAEpU,MAAM,CAAC,IAAI,EAAE,CAAC,yBAAyB,CAAC,CAAC;EAC3D,CAAC,WAAW,GAAGA,MAAM,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC;AACjD,CAAC;;;ECx7BQqU,KAAK,EAAIC;AAAC,IAAAC,MAAA,CAAAC,OAAA,IAAAD,MAAA;AAEJ,SAASE,eAAeA,CACrCC,IAA8B,EAC9BC,IAAc,EACd;EACA,MAAM;IAAEC,IAAI;IAAEC;GAAQ,GAAGF,IAAI;EAC7B,QAAQD,IAAI,CAAC5U,IAAI;IACf,KAAK,iBAAiB;MAAE;QACtB,IAAI,CAACwU,GAAC,CAACQ,gBAAgB,CAACD,MAAM,EAAE;UAAEE,MAAM,EAAEH;SAAM,CAAC,EAAE,OAAO,KAAK;QAC/D,IAAIC,MAAM,CAACG,SAAS,CAACC,MAAM,GAAG,CAAC,EAAE,OAAO,IAAI;QAC5C,MAAMC,QAAQ,GAAGL,MAAM,CAACG,SAAS,CAAC,CAAC,CAAC;QACpC,OAAOV,GAAC,CAACa,eAAe,CAACD,QAAQ,CAAC,IAAIZ,GAAC,CAACc,iBAAiB,CAACF,QAAQ,CAAC;;;AAGzE;;;EChBSb,KAAK,EAAIC;AAAC,IAAAC,MAAA,CAAAC,OAAA,IAAAD,MAAA;AAGZ,MAAMc,aAAa,GAAG,wBAAwB;AAE9C,SAASC,UAAUA,CAACX,IAAS,EAAEY,EAAgB,EAAE;EACtD,MAAM;IAAEC;GAAQ,GAAGb,IAAI,CAACC,IAAI;EAE5B,IAAIa,QAAQ,EAAEC,QAAQ;EACtB,IAAIpB,GAAC,CAACqB,YAAY,CAACH,MAAM,CAAC,EAAE;IAC1BC,QAAQ,GAAGD,MAAM;IACjBE,QAAQ,GAAGpB,GAAC,CAACsB,SAAS,CAACJ,MAAM,CAAC;GAC/B,MAAM;IACLC,QAAQ,GAAGd,IAAI,CAACkB,KAAK,CAACC,6BAA6B,CAAC,SAAS,CAAC;IAC9DJ,QAAQ,GAAGpB,GAAC,CAACyB,oBAAoB,CAAC,GAAG,EAAEzB,GAAC,CAACsB,SAAS,CAACH,QAAQ,CAAC,EAAED,MAAM,CAAC;;EAGvEb,IAAI,CAACqB,WAAW,CACd1B,GAAC,CAAC2B,gBAAgB,CAAC3B,GAAC,CAAC4B,cAAc,CAACX,EAAE,EAAE,CAACG,QAAQ,CAAC,CAAC,EAAEpB,GAAC,CAAC6B,UAAU,CAAC,MAAM,CAAC,CAC3E,CAAC;EAEDxB,IAAI,CAACyB,UAAU,CAACC,gBAAgB,CAAC,WAAW,EAAEZ,QAAQ,CAAC;AACzD;AAEO,SAASa,cAAcA,CAACC,MAAc,EAAE;EAC7C,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;IAC9BA,MAAM,GAAGA,MAAM,CACZnJ,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CACnBA,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CACrCoJ,WAAW,EAAE;;EAGlB,OACE9W,MAAM,CAAC+W,SAAS,CAACC,cAAc,CAACC,IAAI,CAACC,aAAa,EAAEL,MAAM,CAAC,IAC3DK,aAAa,CAACL,MAAM,CAAC;AAEzB;AAEO,SAASM,YAAYA,CAAC/W,IAAY,EAAE;EACzC,OAAQ,mBAAkBA,IAAK,KAAI;AACrC;AAEO,SAASgX,gBAAgBA,CAC9BhX,IAAY,EACZiX,eAAwB,EACxBC,GAAW,EACX;EACA,OAAOD,eAAe,GACjB,GAAE1B,aAAc,YAAWvV,IAAK,GAAEkX,GAAI,EAAC,GACvC,yBAAwBlX,IAAK,KAAI;AACxC;;ACrC8C;EAGrCuU,KAAK,EAAIC;AAAC,IAAAC,MAAA,CAAAC,OAAA,IAAAD,MAAA;AAWnB,MAAM0C,eAAe,GAAG,iDAAiD;AACzE,MAAMC,aAAa,GAAG,8CAA8C;AAcpE,MAAMC,aAAa,GAAG,CACpB,OAAO,EACP,QAAQ,EAER,UAAU,EACV,gBAAgB,EAChB,iBAAiB,CAClB,CAAChG,GAAG,CAACiG,CAAC,IAAI,IAAIvT,MAAM,CAAE,YAAWuT,CAAE,OAAM,CAAC,CAAC;AAE5C,MAAMC,cAAc,GAAGA,CACrBvX,IAAY,EACZwX,EAA6B,KACjB;EACZ,IAAIA,EAAE,CAACxX,IAAI,CAAC,EAAE,OAAO,IAAI;EACzB,IAAI,CAACA,IAAI,CAACqS,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK;EACzC,MAAMoF,QAAQ,GAAI,UAASzX,IAAI,CAACiS,KAAK,CAAC,CAAC,CAAE,EAAC;EAC1C,IAAI,CAACnS,gBAAgB,CAAC2X,QAAQ,CAAC,EAAE,OAAO,KAAK;EAC7C,OAAOD,EAAE,CAACC,QAAQ,CAAC;AACrB,CAAC;AAED,YAAeC,cAAc,CAAU,UACrC;EAAEC,QAAQ;EAAEC,MAAM;EAAEC,oBAAoB;EAAEC,kBAAkB;EAAEC,KAAK;EAAEC;AAAM,CAAC,EAC5E;EACEC,OAAO,GAAG,CAAC;EACXC,SAAS;EACTC,gBAAgB;EAChB,CAAChB,eAAe,GAAG;IAAEiB,aAAa,GAAG;GAAO,GAAG,EAAE;EACjD,CAAChB,aAAa,GAAG;IAAEH,eAAe,GAAG,KAAK;IAAEC,GAAG,GAAG;GAAO,GAAG;AAC9D,CAAC,EACD;EACA,MAAMmB,SAAS,GAAGL,KAAK,CAACM,MAAM,CAACA,MAAM,IAAI,CAAAA,MAAM,oBAANA,MAAM,CAAEtY,IAAI,MAAK,cAAc,CAAC;EAEzE,MAAMuY,OAAO,GAAGT,kBAAkB,CAAC;IACjC1X,MAAM,EAAE+B,QAAQ;IAChBqW,MAAM,EAAE9S,gBAAgB;IACxB+S,QAAQ,EAAEvK;GACX,CAAC;EAEF,MAAMwK,SAAS,GAAG,IAAIhZ,GAAG,CAACiZ,8BAA8B,CAACV,OAAO,CAAC,CAAC;EAElE,SAASW,iBAAiBA,CAACC,eAAe,EAAE;IAC1C,OAAO5B,eAAe,GAClB4B,eAAe,GACZ,GAAEtD,aAAc,UAAS,GACzB,GAAEA,aAAc,iBAAgB,GACnCsD,eAAe,GACf,uBAAuB,GACvB,qBAAqB;;EAG3B,SAASC,qBAAqBA,CAAC9Y,IAAY,EAAE+Y,KAAK,EAAE;IAClD,IAAIlB,oBAAoB,CAAC7X,IAAI,CAAC,EAAE;MAC9B+X,KAAK,CAAC/X,IAAI,CAAC;MACX+Y,KAAK,CAACC,kBAAkB,CAACjC,YAAY,CAAC/W,IAAI,CAAC,CAAC;MAC5C,OAAO,IAAI;;IAEb,OAAO,KAAK;;EAGd,SAASiZ,iBAAiBA,CAACC,KAAe,EAAEH,KAAK,EAAEtB,QAAQ,GAAG,IAAI,EAAE;IAClE,KAAK,MAAMzX,IAAI,IAAIkZ,KAAK,EAAE;MACxB,IAAIzB,QAAQ,EAAE;QACZF,cAAc,CAACvX,IAAI,EAAEA,IAAI,IAAI8Y,qBAAqB,CAAC9Y,IAAI,EAAE+Y,KAAK,CAAC,CAAC;OACjE,MAAM;QACLD,qBAAqB,CAAC9Y,IAAI,EAAE+Y,KAAK,CAAC;;;;EAKxC,SAASI,eAAeA,CACtBvE,IAA8B,EAC9BwE,IAAI,EACJL,KAAK,EACLrD,MAAO,EACP;IACA,IACEd,IAAI,CAACzU,IAAI,IACT,EAAEuV,MAAM,IAAId,IAAI,CAACvU,OAAO,IAAIuU,IAAI,CAACvU,OAAO,CAACsQ,QAAQ,CAAC+E,MAAM,CAAC,CAAC,IAC1D6B,cAAc,CAAC3C,IAAI,CAAC5U,IAAI,EAAE6X,oBAAoB,CAAC,EAC/C;MACA,MAAM;QAAE7X;OAAM,GAAG4U,IAAI;MACrB,IAAIiE,eAAe,GAAG,KAAK;MAC3B,IAAIX,SAAS,IAAKC,gBAAgB,IAAInY,IAAI,CAACqS,UAAU,CAAC,SAAS,CAAE,EAAE;QACjEwG,eAAe,GAAG,IAAI;OACvB,MAAM,IAAI7Y,IAAI,CAACqS,UAAU,CAAC,KAAK,CAAC,IAAI,CAACqG,SAAS,CAACjN,GAAG,CAACzL,IAAI,CAAC,EAAE;QACzD6Y,eAAe,GAAG,IAAI;;MAExB,MAAMQ,cAAc,GAAGT,iBAAiB,CAACC,eAAe,CAAC;MACzD,OAAOE,KAAK,CAACO,mBAAmB,CAC7B,GAAED,cAAe,IAAGzE,IAAI,CAACzU,IAAK,GAAE+W,GAAI,EAAC,EACtCkC,IACF,CAAC;;;EAIL,SAASG,eAAeA,CAACvZ,IAAI,EAAE;IAC7B,IAAIA,IAAI,CAACqS,UAAU,CAAC,SAAS,CAAC,EAAE;MAC9B,MAAMmH,MAAM,GAAI,MAAKxZ,IAAI,CAACiS,KAAK,CAAC,CAAC,CAAE,EAAC;;;MAGpC,OAAOuH,MAAM,IAAI1Z,gBAAgB;;IAEnC,OAAO,IAAI;;EAGb,OAAO;IACLE,IAAI,EAAE,SAAS;IAEfyZ,WAAW,EAAErB,aAAa,GAAG,IAAI,GAAG7C,aAAa;IAEjDmE,SAAS,EAAE5Z,gBAAgB;IAE3B6Z,eAAeA,CAAC3Z,IAAI,EAAE;MACpB,IAAI,CAAC0Y,SAAS,CAACjN,GAAG,CAACzL,IAAI,CAAC,EAAE,OAAO,KAAK;MACtC,IAAIkY,SAAS,IAAIN,MAAM,KAAK,cAAc,EAAE,OAAO,IAAI;MACvD,IAAIO,gBAAgB,IAAIyB,2BAA2B,CAACnO,GAAG,CAACzL,IAAI,CAAC,EAAE;QAC7D,OAAO,IAAI;;MAEb,OAAOuZ,eAAe,CAACvZ,IAAI,CAAC;KAC7B;IAED6Z,WAAWA,CAACC,IAAI,EAAEf,KAAK,EAAElE,IAAI,EAAE;MAC7B,IAAIiF,IAAI,CAACC,IAAI,KAAK,QAAQ,EAAE;MAE5B,MAAMC,OAAO,GAAGxD,cAAc,CAACsD,IAAI,CAACrD,MAAM,CAAC;MAC3C,IAAI,CAACuD,OAAO,EAAE;MAEd,IACEA,OAAO,CAAC7E,MAAM,KAAK,CAAC,IACpB2E,IAAI,CAACrD,MAAM,KAAKM,YAAY,CAACiD,OAAO,CAAC,CAAC,CAAC,CAAC,IACxCnC,oBAAoB,CAACmC,OAAO,CAAC,CAAC,CAAC,CAAC,EAChC;;;QAGAjC,KAAK,CAAC,IAAI,CAAC;QACX;;MAGF,MAAMkC,UAAU,GAAG,IAAIva,GAAG,CAACsa,OAAO,CAAC;MACnC,MAAME,eAAe,GAAGF,OAAO,CAACxK,MAAM,CAAC2K,MAAM,IAAI;QAC/C,IAAI,CAACA,MAAM,CAAC9H,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI;QAC9C,MAAM+H,MAAM,GAAGD,MAAM,CAAC7M,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;QAC/C,IAAI2M,UAAU,CAACxO,GAAG,CAAC2O,MAAM,CAAC,IAAIvC,oBAAoB,CAACuC,MAAM,CAAC,EAAE;UAC1D,OAAO,KAAK;;QAEd,OAAO,IAAI;OACZ,CAAC;MAEFnB,iBAAiB,CAACiB,eAAe,EAAEnB,KAAK,EAAE,KAAK,CAAC;MAChDlE,IAAI,CAACwF,MAAM,EAAE;KACd;IAEDC,WAAWA,CAACR,IAAI,EAAEf,KAAK,EAAElE,IAAI,EAAE;MAC7B,MAAM0F,QAAQ,GAAGhC,OAAO,CAACuB,IAAI,CAAC;MAC9B,IAAI,CAACS,QAAQ,EAAE;MAEf,IAAI5F,eAAe,CAAC4F,QAAQ,CAAC3F,IAAI,EAAEC,IAAI,CAAC,EAAE;MAE1C,IAAI2F,IAAI,GAAGD,QAAQ,CAAC3F,IAAI,CAACxU,MAAM;MAE/B,IACEma,QAAQ,CAACR,IAAI,KAAK,QAAQ,IAC1B,QAAQ,IAAID,IAAI,IAChBA,IAAI,CAACpE,MAAM,IACXoE,IAAI,CAACW,SAAS,KAAK,WAAW,EAC9B;QACA,MAAMC,GAAG,GAAGZ,IAAI,CAACpE,MAAM,CAACgB,WAAW,EAAE;QACrC8D,IAAI,GAAGA,IAAI,CAAChL,MAAM,CAACmL,CAAC,IAClBtD,aAAa,CAAClF,IAAI,CAACmF,CAAC,IAAIA,CAAC,CAAC1E,IAAI,CAAC+H,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAChK,QAAQ,CAAC+J,GAAG,CAAC,GAAG,IACzD,CAAC;;MAGHzB,iBAAiB,CAACuB,IAAI,EAAEzB,KAAK,CAAC;KAC/B;IAED6B,SAASA,CAACd,IAAI,EAAEf,KAAK,EAAElE,IAAI,EAAE;MAC3B,IAAIiF,IAAI,CAACC,IAAI,KAAK,IAAI,EAAE;QACtB,IAAID,IAAI,CAACe,GAAG,KAAK,iBAAiB,EAAE;UAClChG,IAAI,CAACqB,WAAW,CACd1B,CAAC,CAAC4B,cAAc,CACd2C,KAAK,CAACO,mBAAmB,CACvBtC,gBAAgB,CAAC,aAAa,EAAEC,eAAe,EAAEC,GAAG,CAAC,EACrD,YACF,CAAC,EACD,CAAErC,IAAI,CAACC,IAAI,CAAwBgG,KAAK,CAAC;WAE7C,CAAC;;;QAEH;;MAGF,IAAIjG,IAAI,CAACyB,UAAU,CAACyE,iBAAiB,CAAC;QAAEC,QAAQ,EAAE;OAAU,CAAC,EAAE;MAE/D,IAAIlB,IAAI,CAACC,IAAI,KAAK,UAAU,EAAE;;QAE5B,IAAI,CAAClF,IAAI,CAACoG,kBAAkB,EAAE,EAAE;QAChC,IAAI,CAACpG,IAAI,CAACqG,YAAY,EAAE,EAAE;QAC1B,IAAIrG,IAAI,CAACyB,UAAU,CAAC6E,kBAAkB,EAAE,EAAE;QAC1C,IAAI3G,CAAC,CAAC4G,OAAO,CAACvG,IAAI,CAACC,IAAI,CAACY,MAAM,CAAC,EAAE;UAC/B;;QAGF,IAAIoE,IAAI,CAACe,GAAG,KAAK,iBAAiB,EAAE;UAClC,IAAI,CAAChD,oBAAoB,CAAC,oBAAoB,CAAC,EAAE;UAEjD,MAAM;YAAE9C,MAAM;YAAED;WAAM,GAAGD,IAAI;UAC7B,IAAIL,CAAC,CAACQ,gBAAgB,CAACD,MAAM,EAAE;YAAEE,MAAM,EAAEH;WAAM,CAAC,EAAE;YAChD,IAAIC,MAAM,CAACG,SAAS,CAACC,MAAM,KAAK,CAAC,EAAE;cACjCN,IAAI,CAACyB,UAAU,CAACJ,WAAW,CACzB1B,CAAC,CAAC4B,cAAc,CACd2C,KAAK,CAACO,mBAAmB,CACvBtC,gBAAgB,CAAC,cAAc,EAAEC,eAAe,EAAEC,GAAG,CAAC,EACtD,aACF,CAAC,EACD,CAACpC,IAAI,CAACY,MAAM,CACd,CACF,CAAC;cACDb,IAAI,CAACwG,IAAI,EAAE;aACZ,MAAM;cACL7F,UAAU,CACRX,IAAI,EACJkE,KAAK,CAACO,mBAAmB,CACvBtC,gBAAgB,CAAC,qBAAqB,EAAEC,eAAe,EAAEC,GAAG,CAAC,EAC7D,mBACF,CACF,CAAC;;WAEJ,MAAM;YACLrC,IAAI,CAACqB,WAAW,CACd1B,CAAC,CAAC4B,cAAc,CACd2C,KAAK,CAACO,mBAAmB,CACvBtC,gBAAgB,CAAC,qBAAqB,EAAEC,eAAe,EAAEC,GAAG,CAAC,EAC7D,mBACF,CAAC,EACD,CAACrC,IAAI,CAACC,IAAI,CAACY,MAAM,CACnB,CACF,CAAC;;UAGH;;;MAIJ,IAAI6E,QAAQ,GAAGhC,OAAO,CAACuB,IAAI,CAAC;MAC5B,IAAI,CAACS,QAAQ,EAAE;MAEf,IAAI5F,eAAe,CAAC4F,QAAQ,CAAC3F,IAAI,EAAEC,IAAI,CAAC,EAAE;MAE1C,IACEoC,eAAe,IACfsD,QAAQ,CAAC3F,IAAI,CAACzU,IAAI,IAClBoa,QAAQ,CAAC3F,IAAI,CAACzU,IAAI,CAAC8R,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EACzC;;QAEAsI,QAAQ,GAAG;UACT,GAAGA,QAAQ;UACX3F,IAAI,EAAE;YACJ,GAAG2F,QAAQ,CAAC3F,IAAI;YAChBzU,IAAI,EAAEoa,QAAQ,CAAC3F,IAAI,CAACzU,IAAI,CAAC8R,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;;SAEvC;;MAGH,IAAIsI,QAAQ,CAACR,IAAI,KAAK,QAAQ,EAAE;QAC9B,MAAMtE,EAAE,GAAG0D,eAAe,CAACoB,QAAQ,CAAC3F,IAAI,EAAE2F,QAAQ,CAACva,IAAI,EAAE+Y,KAAK,CAAC;QAC/D,IAAItD,EAAE,EAAEZ,IAAI,CAACqB,WAAW,CAACT,EAAE,CAAC;OAC7B,MAAM,IAAI8E,QAAQ,CAACR,IAAI,KAAK,QAAQ,EAAE;QACrC,MAAMtE,EAAE,GAAG0D,eAAe,CACxBoB,QAAQ,CAAC3F,IAAI,EACb2F,QAAQ,CAACva,IAAI,EACb+Y,KAAK;;QAELe,IAAI,CAACpE,MACP,CAAC;QACD,IAAID,EAAE,EAAEZ,IAAI,CAACqB,WAAW,CAACT,EAAE,CAAC;OAC7B,MAAM,IAAI8E,QAAQ,CAACR,IAAI,KAAK,UAAU,EAAE;QACvC,MAAMtE,EAAE,GAAG0D,eAAe,CACxBoB,QAAQ,CAAC3F,IAAI,EACZ,GAAE2F,QAAQ,CAACva,IAAK,kBAAiB,EAClC+Y,KAAK;;QAELe,IAAI,CAACpE,MACP,CAAC;QACD,IAAI,CAACD,EAAE,EAAE;QAET,MAAM;UAAEX;SAAM,GAAGD,IAAoC;QACrD,IAAIL,CAAC,CAACQ,gBAAgB,CAACH,IAAI,CAACE,MAAM,EAAE;UAAEE,MAAM,EAAEH;SAAM,CAAC,EAAE;UACrDU,UAAU,CAACX,IAAI,EAAEY,EAAE,CAAC;SACrB,MAAM;UACLZ,IAAI,CAACqB,WAAW,CAAC1B,CAAC,CAAC4B,cAAc,CAACX,EAAE,EAAE,CAACX,IAAI,CAACY,MAAM,CAAC,CAAC,CAAC;;;KAG1D;IAED4F,OAAO,EAAE1D,MAAM,KAAK,cAAc,IAAI;;MAEpC2D,cAAcA,CAAC1G,IAAgC,EAAE;QAC/C,IAAIA,IAAI,CAACzJ,GAAG,CAAC,QAAQ,CAAC,CAACoQ,QAAQ,EAAE,EAAE;UACjC,MAAMzC,KAAK,GAAGpB,QAAQ,CAAC9C,IAAI,CAAC;UAE5B,IAAIwD,SAAS,EAAE;;YAEbY,iBAAiB,CAAC/X,gCAAgC,EAAE6X,KAAK,CAAC;WAC3D,MAAM;YACLE,iBAAiB,CAAChY,mBAAmB,EAAE8X,KAAK,CAAC;;;OAGlD;;MAGD7S,QAAQA,CAAC2O,IAA0B,EAAE;QACnC,IAAIA,IAAI,CAACC,IAAI,CAAC2G,KAAK,EAAE;UACnBxC,iBAAiB,CAAChY,mBAAmB,EAAE0W,QAAQ,CAAC9C,IAAI,CAAC,CAAC;;OAEzD;;MAGD,6BAA6B6G,CAC3B7G,IAAiD,EACjD;QACAoE,iBAAiB,CAACrY,eAAe,EAAE+W,QAAQ,CAAC9C,IAAI,CAAC,CAAC;OACnD;;MAGD8G,aAAaA,CAAC9G,IAA+B,EAAE;QAC7C,IAAI,CAACA,IAAI,CAACyB,UAAU,CAACsF,kBAAkB,EAAE,EAAE;UACzC3C,iBAAiB,CAACrY,eAAe,EAAE+W,QAAQ,CAAC9C,IAAI,CAAC,CAAC;;OAErD;;MAGDgH,eAAeA,CAAChH,IAAiC,EAAE;QACjD,IAAIA,IAAI,CAACC,IAAI,CAACgH,QAAQ,EAAE;UACtB7C,iBAAiB,CAACrY,eAAe,EAAE+W,QAAQ,CAAC9C,IAAI,CAAC,CAAC;;OAErD;;MAGDkH,KAAKA,CAAClH,IAAuB,EAAE;QAAA,IAAAmH,qBAAA;QAC7B,MAAMC,aAAa,GACjB,EAAAD,qBAAA,GAAAnH,IAAI,CAACC,IAAI,CAACoH,UAAU,qBAApBF,qBAAA,CAAsB7G,MAAM,KAC5BN,IAAI,CAACC,IAAI,CAACqH,IAAI,CAACA,IAAI,CAAChK,IAAI,CACtBiK,EAAE;UAAA,IAAAC,WAAA;UAAA,QAAAA,WAAA,GAAKD,EAAE,CAAmBF,UAAU,qBAAhCG,WAAA,CAAkClH,MAAM;SAChD,CAAC;QACH,IAAI8G,aAAa,EAAE;UACjBhD,iBAAiB,CAACpX,6BAA6B,EAAE8V,QAAQ,CAAC9C,IAAI,CAAC,CAAC;;;;GAIvE;AACH,CAAC,CAAC;;;;"} \ No newline at end of file diff --git a/node_modules/babel-plugin-polyfill-corejs3/package.json b/node_modules/babel-plugin-polyfill-corejs3/package.json new file mode 100644 index 00000000..2c97b41e --- /dev/null +++ b/node_modules/babel-plugin-polyfill-corejs3/package.json @@ -0,0 +1,49 @@ +{ + "name": "babel-plugin-polyfill-corejs3", + "version": "0.8.6", + "description": "A Babel plugin to inject imports to core-js@3 polyfills", + "repository": { + "type": "git", + "url": "https://github.com/babel/babel-polyfills.git", + "directory": "packages/babel-plugin-polyfill-corejs3" + }, + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "main": "lib/index.js", + "exports": { + ".": [ + { + "import": "./esm/index.mjs", + "default": "./lib/index.js" + }, + "./lib/index.js" + ], + "./package.json": "./package.json" + }, + "keywords": [ + "babel-plugin" + ], + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.3", + "core-js-compat": "^3.33.1" + }, + "devDependencies": { + "@babel/core": "^7.22.6", + "@babel/helper-plugin-test-runner": "^7.22.5", + "@babel/plugin-proposal-decorators": "^7.22.15", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.5", + "@babel/plugin-transform-runtime": "^7.22.15", + "@babel/plugin-transform-spread": "^7.22.5", + "core-js": "^3.33.1", + "core-js-pure": "^3.33.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + }, + "gitHead": "2a85015c295d2e0256e5d60f595c1f6368861f04" +} \ No newline at end of file diff --git a/node_modules/babel-plugin-polyfill-regenerator/LICENSE b/node_modules/babel-plugin-polyfill-regenerator/LICENSE new file mode 100644 index 00000000..b74971fe --- /dev/null +++ b/node_modules/babel-plugin-polyfill-regenerator/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Nicolò Ribaudo and other contributors + +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. diff --git a/node_modules/babel-plugin-polyfill-regenerator/README.md b/node_modules/babel-plugin-polyfill-regenerator/README.md new file mode 100644 index 00000000..e40b692e --- /dev/null +++ b/node_modules/babel-plugin-polyfill-regenerator/README.md @@ -0,0 +1,28 @@ +# babel-plugin-polyfill-regenerator + +## Install + +Using npm: + +```sh +npm install --save-dev babel-plugin-polyfill-regenerator +``` + +or using yarn: + +```sh +yarn add babel-plugin-polyfill-regenerator --dev +``` + +## Usage + +Add this plugin to your Babel configuration: + +```json +{ + "plugins": [["polyfill-regenerator", { "method": "usage-global" }]] +} +``` + +This package supports the `usage-pure`, `usage-global`, and `entry-global` methods. +When `entry-global` is used, it replaces imports to `regenerator-runtime`. diff --git a/node_modules/babel-plugin-polyfill-regenerator/esm/index.mjs b/node_modules/babel-plugin-polyfill-regenerator/esm/index.mjs new file mode 100644 index 00000000..117a6a95 --- /dev/null +++ b/node_modules/babel-plugin-polyfill-regenerator/esm/index.mjs @@ -0,0 +1,45 @@ +import defineProvider from '@babel/helper-define-polyfill-provider'; + +const runtimeCompat = "#__secret_key__@babel/runtime__compatibility"; +var index = defineProvider(({ + debug, + targets, + babel +}, options) => { + if (!shallowEqual(targets, babel.targets())) { + throw new Error("This plugin does not use the targets option. Only preset-env's targets" + " or top-level targets need to be configured for this plugin to work." + " See https://github.com/babel/babel-polyfills/issues/36 for more" + " details."); + } + const { + [runtimeCompat]: { + useBabelRuntime = false + } = {} + } = options; + return { + name: "regenerator", + polyfills: ["regenerator-runtime"], + usageGlobal(meta, utils) { + if (isRegenerator(meta)) { + debug("regenerator-runtime"); + utils.injectGlobalImport("regenerator-runtime/runtime.js"); + } + }, + usagePure(meta, utils, path) { + if (isRegenerator(meta)) { + let pureName = "regenerator-runtime"; + if (useBabelRuntime) { + var _get; + const runtimeName = (_get = path.hub.file.get("runtimeHelpersModuleName")) != null ? _get : "@babel/runtime"; + pureName = `${runtimeName}/regenerator`; + } + path.replaceWith(utils.injectDefaultImport(pureName, "regenerator-runtime")); + } + } + }; +}); +const isRegenerator = meta => meta.kind === "global" && meta.name === "regeneratorRuntime"; +function shallowEqual(obj1, obj2) { + return JSON.stringify(obj1) === JSON.stringify(obj2); +} + +export default index; +//# sourceMappingURL=index.mjs.map diff --git a/node_modules/babel-plugin-polyfill-regenerator/esm/index.mjs.map b/node_modules/babel-plugin-polyfill-regenerator/esm/index.mjs.map new file mode 100644 index 00000000..87a9cb32 --- /dev/null +++ b/node_modules/babel-plugin-polyfill-regenerator/esm/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import defineProvider from \"@babel/helper-define-polyfill-provider\";\nimport type { PluginPass } from \"@babel/core\";\n\nconst runtimeCompat = \"#__secret_key__@babel/runtime__compatibility\";\n\ntype Options = {\n \"#__secret_key__@babel/runtime__compatibility\": void | {\n useBabelRuntime: string;\n };\n};\n\nexport default defineProvider(({ debug, targets, babel }, options) => {\n if (!shallowEqual(targets, babel.targets())) {\n throw new Error(\n \"This plugin does not use the targets option. Only preset-env's targets\" +\n \" or top-level targets need to be configured for this plugin to work.\" +\n \" See https://github.com/babel/babel-polyfills/issues/36 for more\" +\n \" details.\",\n );\n }\n\n const { [runtimeCompat]: { useBabelRuntime = false } = {} } = options;\n\n return {\n name: \"regenerator\",\n\n polyfills: [\"regenerator-runtime\"],\n\n usageGlobal(meta, utils) {\n if (isRegenerator(meta)) {\n debug(\"regenerator-runtime\");\n utils.injectGlobalImport(\"regenerator-runtime/runtime.js\");\n }\n },\n usagePure(meta, utils, path) {\n if (isRegenerator(meta)) {\n let pureName = \"regenerator-runtime\";\n if (useBabelRuntime) {\n const runtimeName =\n ((path.hub as any).file as PluginPass).get(\n \"runtimeHelpersModuleName\",\n ) ?? \"@babel/runtime\";\n pureName = `${runtimeName}/regenerator`;\n }\n\n path.replaceWith(\n utils.injectDefaultImport(pureName, \"regenerator-runtime\"),\n );\n }\n },\n };\n});\n\nconst isRegenerator = meta =>\n meta.kind === \"global\" && meta.name === \"regeneratorRuntime\";\n\nfunction shallowEqual(obj1: any, obj2: any) {\n return JSON.stringify(obj1) === JSON.stringify(obj2);\n}\n"],"names":["runtimeCompat","defineProvider","debug","targets","babel","options","shallowEqual","Error","useBabelRuntime","name","polyfills","usageGlobal","meta","utils","isRegenerator","injectGlobalImport","usagePure","path","pureName","_get","runtimeName","hub","file","get","replaceWith","injectDefaultImport","kind","obj1","obj2","JSON","stringify"],"mappings":";;AAGA,MAAMA,aAAa,GAAG,8CAA8C;AAQpE,YAAeC,cAAc,CAAU,CAAC;EAAEC,KAAK;EAAEC,OAAO;EAAEC;AAAM,CAAC,EAAEC,OAAO,KAAK;EAC7E,IAAI,CAACC,YAAY,CAACH,OAAO,EAAEC,KAAK,CAACD,OAAO,EAAE,CAAC,EAAE;IAC3C,MAAM,IAAII,KAAK,CACb,wEAAwE,GACtE,sEAAsE,GACtE,kEAAkE,GAClE,WACJ,CAAC;;EAGH,MAAM;IAAE,CAACP,aAAa,GAAG;MAAEQ,eAAe,GAAG;KAAO,GAAG;GAAI,GAAGH,OAAO;EAErE,OAAO;IACLI,IAAI,EAAE,aAAa;IAEnBC,SAAS,EAAE,CAAC,qBAAqB,CAAC;IAElCC,WAAWA,CAACC,IAAI,EAAEC,KAAK,EAAE;MACvB,IAAIC,aAAa,CAACF,IAAI,CAAC,EAAE;QACvBV,KAAK,CAAC,qBAAqB,CAAC;QAC5BW,KAAK,CAACE,kBAAkB,CAAC,gCAAgC,CAAC;;KAE7D;IACDC,SAASA,CAACJ,IAAI,EAAEC,KAAK,EAAEI,IAAI,EAAE;MAC3B,IAAIH,aAAa,CAACF,IAAI,CAAC,EAAE;QACvB,IAAIM,QAAQ,GAAG,qBAAqB;QACpC,IAAIV,eAAe,EAAE;UAAA,IAAAW,IAAA;UACnB,MAAMC,WAAW,IAAAD,IAAA,GACbF,IAAI,CAACI,GAAG,CAASC,IAAI,CAAgBC,GAAG,CACxC,0BACF,CAAC,YAAAJ,IAAA,GAAI,gBAAgB;UACvBD,QAAQ,GAAI,GAAEE,WAAY,cAAa;;QAGzCH,IAAI,CAACO,WAAW,CACdX,KAAK,CAACY,mBAAmB,CAACP,QAAQ,EAAE,qBAAqB,CAC3D,CAAC;;;GAGN;AACH,CAAC,CAAC;AAEF,MAAMJ,aAAa,GAAGF,IAAI,IACxBA,IAAI,CAACc,IAAI,KAAK,QAAQ,IAAId,IAAI,CAACH,IAAI,KAAK,oBAAoB;AAE9D,SAASH,YAAYA,CAACqB,IAAS,EAAEC,IAAS,EAAE;EAC1C,OAAOC,IAAI,CAACC,SAAS,CAACH,IAAI,CAAC,KAAKE,IAAI,CAACC,SAAS,CAACF,IAAI,CAAC;AACtD;;;;"} \ No newline at end of file diff --git a/node_modules/babel-plugin-polyfill-regenerator/package.json b/node_modules/babel-plugin-polyfill-regenerator/package.json new file mode 100644 index 00000000..20b67a78 --- /dev/null +++ b/node_modules/babel-plugin-polyfill-regenerator/package.json @@ -0,0 +1,40 @@ +{ + "name": "babel-plugin-polyfill-regenerator", + "version": "0.5.3", + "description": "A Babel plugin to inject imports to regenerator-runtime", + "repository": { + "type": "git", + "url": "https://github.com/babel/babel-polyfills.git", + "directory": "packages/babel-plugin-polyfill-regenerator" + }, + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "main": "lib/index.js", + "exports": { + ".": [ + { + "import": "./esm/index.mjs", + "default": "./lib/index.js" + }, + "./lib/index.js" + ], + "./package.json": "./package.json" + }, + "keywords": [ + "babel-plugin" + ], + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.3" + }, + "devDependencies": { + "@babel/core": "^7.17.8", + "@babel/helper-plugin-test-runner": "^7.16.7", + "@babel/plugin-transform-regenerator": "~7.14.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + }, + "gitHead": "66a6819f44a57152798cb3b0a9272c65752bae86" +} \ No newline at end of file diff --git a/node_modules/bail/index.d.ts b/node_modules/bail/index.d.ts new file mode 100644 index 00000000..88fe9aa6 --- /dev/null +++ b/node_modules/bail/index.d.ts @@ -0,0 +1,10 @@ +/** + * Throw a given error. + * + * @param {Error|null|undefined} [error] + * Maybe error. + * @returns {asserts error is null|undefined} + */ +export function bail( + error?: Error | null | undefined +): asserts error is null | undefined diff --git a/node_modules/bail/index.js b/node_modules/bail/index.js new file mode 100644 index 00000000..d0bc4424 --- /dev/null +++ b/node_modules/bail/index.js @@ -0,0 +1,12 @@ +/** + * Throw a given error. + * + * @param {Error|null|undefined} [error] + * Maybe error. + * @returns {asserts error is null|undefined} + */ +export function bail(error) { + if (error) { + throw error + } +} diff --git a/node_modules/bail/license b/node_modules/bail/license new file mode 100644 index 00000000..32e7a3d9 --- /dev/null +++ b/node_modules/bail/license @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2015 Titus Wormer + +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. diff --git a/node_modules/bail/package.json b/node_modules/bail/package.json new file mode 100644 index 00000000..d56f6faf --- /dev/null +++ b/node_modules/bail/package.json @@ -0,0 +1,73 @@ +{ + "name": "bail", + "version": "2.0.2", + "description": "Throw a given error", + "license": "MIT", + "keywords": [ + "fail", + "bail", + "throw", + "callback", + "error" + ], + "repository": "wooorm/bail", + "bugs": "https://github.com/wooorm/bail/issues", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + }, + "author": "Titus Wormer (https://wooorm.com)", + "contributors": [ + "Titus Wormer (https://wooorm.com)" + ], + "sideEffects": false, + "type": "module", + "main": "index.js", + "types": "index.d.ts", + "files": [ + "index.d.ts", + "index.js" + ], + "devDependencies": { + "@types/tape": "^4.0.0", + "c8": "^7.0.0", + "prettier": "^2.0.0", + "remark-cli": "^10.0.0", + "remark-preset-wooorm": "^9.0.0", + "rimraf": "^3.0.0", + "tape": "^5.0.0", + "tsd": "^0.18.0", + "type-coverage": "^2.0.0", + "typescript": "^4.0.0", + "xo": "^0.46.0" + }, + "scripts": { + "prepublishOnly": "npm run build && npm run format", + "build": "rimraf \"*.d.ts\" && tsc && tsd && type-coverage", + "format": "remark . -qfo && prettier . -w --loglevel warn && xo --fix", + "test-api": "node --conditions development test.js", + "test-coverage": "c8 --check-coverage --branches 100 --functions 100 --lines 100 --statements 100 --reporter lcov npm run test-api", + "test": "npm run build && npm run format && npm run test-coverage" + }, + "prettier": { + "tabWidth": 2, + "useTabs": false, + "singleQuote": true, + "bracketSpacing": false, + "semi": false, + "trailingComma": "none" + }, + "xo": { + "prettier": true + }, + "remarkConfig": { + "plugins": [ + "preset-wooorm" + ] + }, + "typeCoverage": { + "atLeast": 100, + "detail": true, + "strict": true + } +} diff --git a/node_modules/bail/readme.md b/node_modules/bail/readme.md new file mode 100644 index 00000000..8cd18235 --- /dev/null +++ b/node_modules/bail/readme.md @@ -0,0 +1,147 @@ +# bail + +[![Build][build-badge]][build] +[![Coverage][coverage-badge]][coverage] +[![Downloads][downloads-badge]][downloads] +[![Size][size-badge]][size] + +Throw if given an error. + +## Contents + +* [What is this?](#what-is-this) +* [When should I use this?](#when-should-i-use-this) +* [Install](#install) +* [Use](#use) +* [API](#api) + * [`bail(err?)`](#bailerr) +* [Types](#types) +* [Compatibility](#compatibility) +* [Security](#security) +* [Related](#related) +* [Contribute](#contribute) +* [License](#license) + +## What is this? + +This package throws a given error. + +## When should I use this? + +Use this package if you’re building some scripts that might theoretically get +errors but frequently don’t and you keep writing `if (error) throw error` over +and over again and you’re just really done with that. + +## Install + +This package is [ESM only][esm]. +In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]: + +```sh +npm install bail +``` + +In Deno with [Skypack][]: + +```js +import {bail} from 'https://cdn.skypack.dev/bail@2?dts' +``` + +In browsers with [Skypack][]: + +```html + +``` + +## Use + +```js +import {bail} from 'bail' + +bail() + +bail(new Error('failure')) +// Error: failure +// at repl:1:6 +// at REPLServer.defaultEval (repl.js:154:27) +// … +``` + +## API + +This package exports the following identifier: `bail`. +There is no default export. + +### `bail(err?)` + +Throw a given error (`Error?`). + +## Types + +This package is fully typed with [TypeScript][]. +There are no extra exported types. + +## Compatibility + +This package is at least compatible with all maintained versions of Node.js. +As of now, that is Node.js 12.20+, 14.14+, and 16.0+. +It also works in Deno and modern browsers. + +## Security + +This package is safe. + +## Related + +* [`noop`][noop] +* [`noop2`][noop2] +* [`noop3`][noop3] + +## Contribute + +Yes please! +See [How to Contribute to Open Source][contribute]. + +## License + +[MIT][license] © [Titus Wormer][author] + + + +[build-badge]: https://github.com/wooorm/bail/workflows/main/badge.svg + +[build]: https://github.com/wooorm/bail/actions + +[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/bail.svg + +[coverage]: https://codecov.io/github/wooorm/bail + +[downloads-badge]: https://img.shields.io/npm/dm/bail.svg + +[downloads]: https://www.npmjs.com/package/bail + +[size-badge]: https://img.shields.io/bundlephobia/minzip/bail.svg + +[size]: https://bundlephobia.com/result?p=bail + +[npm]: https://docs.npmjs.com/cli/install + +[skypack]: https://www.skypack.dev + +[license]: license + +[author]: https://wooorm.com + +[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c + +[typescript]: https://www.typescriptlang.org + +[contribute]: https://opensource.guide/how-to-contribute/ + +[noop]: https://www.npmjs.com/package/noop + +[noop2]: https://www.npmjs.com/package/noop2 + +[noop3]: https://www.npmjs.com/package/noop3 diff --git a/node_modules/balanced-match/.github/FUNDING.yml b/node_modules/balanced-match/.github/FUNDING.yml new file mode 100644 index 00000000..cea8b16e --- /dev/null +++ b/node_modules/balanced-match/.github/FUNDING.yml @@ -0,0 +1,2 @@ +tidelift: "npm/balanced-match" +patreon: juliangruber diff --git a/node_modules/balanced-match/LICENSE.md b/node_modules/balanced-match/LICENSE.md new file mode 100644 index 00000000..2cdc8e41 --- /dev/null +++ b/node_modules/balanced-match/LICENSE.md @@ -0,0 +1,21 @@ +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +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. diff --git a/node_modules/balanced-match/README.md b/node_modules/balanced-match/README.md new file mode 100644 index 00000000..d2a48b6b --- /dev/null +++ b/node_modules/balanced-match/README.md @@ -0,0 +1,97 @@ +# balanced-match + +Match balanced string pairs, like `{` and `}` or `` and ``. Supports regular expressions as well! + +[![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match) +[![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match) + +[![testling badge](https://ci.testling.com/juliangruber/balanced-match.png)](https://ci.testling.com/juliangruber/balanced-match) + +## Example + +Get the first matching pair of braces: + +```js +var balanced = require('balanced-match'); + +console.log(balanced('{', '}', 'pre{in{nested}}post')); +console.log(balanced('{', '}', 'pre{first}between{second}post')); +console.log(balanced(/\s+\{\s+/, /\s+\}\s+/, 'pre { in{nest} } post')); +``` + +The matches are: + +```bash +$ node example.js +{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' } +{ start: 3, + end: 9, + pre: 'pre', + body: 'first', + post: 'between{second}post' } +{ start: 3, end: 17, pre: 'pre', body: 'in{nest}', post: 'post' } +``` + +## API + +### var m = balanced(a, b, str) + +For the first non-nested matching pair of `a` and `b` in `str`, return an +object with those keys: + +* **start** the index of the first match of `a` +* **end** the index of the matching `b` +* **pre** the preamble, `a` and `b` not included +* **body** the match, `a` and `b` not included +* **post** the postscript, `a` and `b` not included + +If there's no match, `undefined` will be returned. + +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`. + +### var r = balanced.range(a, b, str) + +For the first non-nested matching pair of `a` and `b` in `str`, return an +array with indexes: `[ , ]`. + +If there's no match, `undefined` will be returned. + +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]` and `{a}}` will match `[0, 2]`. + +## Installation + +With [npm](https://npmjs.org) do: + +```bash +npm install balanced-match +``` + +## Security contact information + +To report a security vulnerability, please use the +[Tidelift security contact](https://tidelift.com/security). +Tidelift will coordinate the fix and disclosure. + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +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. diff --git a/node_modules/balanced-match/index.js b/node_modules/balanced-match/index.js new file mode 100644 index 00000000..c67a6460 --- /dev/null +++ b/node_modules/balanced-match/index.js @@ -0,0 +1,62 @@ +'use strict'; +module.exports = balanced; +function balanced(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); + + var r = range(a, b, str); + + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; +} + +function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; +} + +balanced.range = range; +function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + + if (ai >= 0 && bi > 0) { + if(a===b) { + return [ai, bi]; + } + begs = []; + left = str.length; + + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + + bi = str.indexOf(b, i + 1); + } + + i = ai < bi && ai >= 0 ? ai : bi; + } + + if (begs.length) { + result = [ left, right ]; + } + } + + return result; +} diff --git a/node_modules/balanced-match/package.json b/node_modules/balanced-match/package.json new file mode 100644 index 00000000..ce6073e0 --- /dev/null +++ b/node_modules/balanced-match/package.json @@ -0,0 +1,48 @@ +{ + "name": "balanced-match", + "description": "Match balanced character pairs, like \"{\" and \"}\"", + "version": "1.0.2", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/balanced-match.git" + }, + "homepage": "https://github.com/juliangruber/balanced-match", + "main": "index.js", + "scripts": { + "test": "tape test/test.js", + "bench": "matcha test/bench.js" + }, + "devDependencies": { + "matcha": "^0.7.0", + "tape": "^4.6.0" + }, + "keywords": [ + "match", + "regexp", + "test", + "balanced", + "parse" + ], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT", + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/8..latest", + "firefox/20..latest", + "firefox/nightly", + "chrome/25..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} diff --git a/node_modules/batch/.npmignore b/node_modules/batch/.npmignore new file mode 100644 index 00000000..f1250e58 --- /dev/null +++ b/node_modules/batch/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/node_modules/batch/History.md b/node_modules/batch/History.md new file mode 100644 index 00000000..f7e9b76f --- /dev/null +++ b/node_modules/batch/History.md @@ -0,0 +1,93 @@ +0.6.1 / 2017-05-16 +================== + + * fix `process.nextTick` detection in Node.js + +0.6.0 / 2017-03-25 +================== + + * always invoke end callback asynchronously + * fix compatibility with component v1 + * fix license field + +0.5.3 / 2015-10-01 +================== + + * fix for browserify + +0.5.2 / 2014-12-22 +================== + + * add brower field + * add license to package.json + +0.5.1 / 2014-06-19 +================== + + * add repository field to readme (exciting) + +0.5.0 / 2013-07-29 +================== + + * add `.throws(true)` to opt-in to responding with an array of error objects + * make `new` optional + +0.4.0 / 2013-06-05 +================== + + * add catching of immediate callback errors + +0.3.2 / 2013-03-15 +================== + + * remove Emitter call in constructor + +0.3.1 / 2013-03-13 +================== + + * add Emitter() mixin for client. Closes #8 + +0.3.0 / 2013-03-13 +================== + + * add component.json + * add result example + * add .concurrency support + * add concurrency example + * add parallel example + +0.2.1 / 2012-11-08 +================== + + * add .start, .end, and .duration properties + * change dependencies to devDependencies + +0.2.0 / 2012-10-04 +================== + + * add progress events. Closes #5 (__BREAKING CHANGE__) + +0.1.1 / 2012-07-03 +================== + + * change "complete" event to "progress" + +0.1.0 / 2012-07-03 +================== + + * add Emitter inheritance and emit "complete" [burcu] + +0.0.3 / 2012-06-02 +================== + + * Callback results should be in the order of the queued functions. + +0.0.2 / 2012-02-12 +================== + + * any node + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/node_modules/batch/LICENSE b/node_modules/batch/LICENSE new file mode 100644 index 00000000..b7409302 --- /dev/null +++ b/node_modules/batch/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2013 TJ Holowaychuk + +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. diff --git a/node_modules/batch/Makefile b/node_modules/batch/Makefile new file mode 100644 index 00000000..634e3721 --- /dev/null +++ b/node_modules/batch/Makefile @@ -0,0 +1,6 @@ + +test: + @./node_modules/.bin/mocha \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/node_modules/batch/Readme.md b/node_modules/batch/Readme.md new file mode 100644 index 00000000..c2b4d3d0 --- /dev/null +++ b/node_modules/batch/Readme.md @@ -0,0 +1,53 @@ + +# batch + + Simple async batch with concurrency control and progress reporting. + +## Installation + +``` +$ npm install batch +``` + +## API + +```js +var Batch = require('batch') + , batch = new Batch; + +batch.concurrency(4); + +ids.forEach(function(id){ + batch.push(function(done){ + User.get(id, done); + }); +}); + +batch.on('progress', function(e){ + +}); + +batch.end(function(err, users){ + +}); +``` + +### Progress events + + Contain the "job" index, response value, duration information, and completion data. + +``` +{ index: 1, + value: 'bar', + pending: 2, + total: 3, + complete: 2, + percent: 66, + start: Thu Oct 04 2012 12:25:53 GMT-0700 (PDT), + end: Thu Oct 04 2012 12:25:53 GMT-0700 (PDT), + duration: 0 } +``` + +## License + +[MIT](LICENSE) diff --git a/node_modules/batch/component.json b/node_modules/batch/component.json new file mode 100644 index 00000000..2715596c --- /dev/null +++ b/node_modules/batch/component.json @@ -0,0 +1,14 @@ +{ + "name": "batch", + "repo": "visionmedia/batch", + "description": "Async task batching", + "version": "0.6.1", + "keywords": ["batch", "async", "utility", "concurrency", "concurrent"], + "dependencies": { + "component/emitter": "*" + }, + "development": {}, + "scripts": [ + "index.js" + ] +} diff --git a/node_modules/batch/index.js b/node_modules/batch/index.js new file mode 100644 index 00000000..5b402550 --- /dev/null +++ b/node_modules/batch/index.js @@ -0,0 +1,173 @@ +/** + * Module dependencies. + */ + +try { + var EventEmitter = require('events').EventEmitter; + if (!EventEmitter) throw new Error(); +} catch (err) { + var Emitter = require('emitter'); +} + +/** + * Defer. + */ + +var defer = typeof process !== 'undefined' && process && typeof process.nextTick === 'function' + ? process.nextTick + : function(fn){ setTimeout(fn); }; + +/** + * Noop. + */ + +function noop(){} + +/** + * Expose `Batch`. + */ + +module.exports = Batch; + +/** + * Create a new Batch. + */ + +function Batch() { + if (!(this instanceof Batch)) return new Batch; + this.fns = []; + this.concurrency(Infinity); + this.throws(true); + for (var i = 0, len = arguments.length; i < len; ++i) { + this.push(arguments[i]); + } +} + +/** + * Inherit from `EventEmitter.prototype`. + */ + +if (EventEmitter) { + Batch.prototype.__proto__ = EventEmitter.prototype; +} else { + Emitter(Batch.prototype); +} + +/** + * Set concurrency to `n`. + * + * @param {Number} n + * @return {Batch} + * @api public + */ + +Batch.prototype.concurrency = function(n){ + this.n = n; + return this; +}; + +/** + * Queue a function. + * + * @param {Function} fn + * @return {Batch} + * @api public + */ + +Batch.prototype.push = function(fn){ + this.fns.push(fn); + return this; +}; + +/** + * Set wether Batch will or will not throw up. + * + * @param {Boolean} throws + * @return {Batch} + * @api public + */ +Batch.prototype.throws = function(throws) { + this.e = !!throws; + return this; +}; + +/** + * Execute all queued functions in parallel, + * executing `cb(err, results)`. + * + * @param {Function} cb + * @return {Batch} + * @api public + */ + +Batch.prototype.end = function(cb){ + var self = this + , total = this.fns.length + , pending = total + , results = [] + , errors = [] + , cb = cb || noop + , fns = this.fns + , max = this.n + , throws = this.e + , index = 0 + , done; + + // empty + if (!fns.length) return defer(function(){ + cb(null, results); + }); + + // process + function next() { + var i = index++; + var fn = fns[i]; + if (!fn) return; + var start = new Date; + + try { + fn(callback); + } catch (err) { + callback(err); + } + + function callback(err, res){ + if (done) return; + if (err && throws) return done = true, defer(function(){ + cb(err); + }); + var complete = total - pending + 1; + var end = new Date; + + results[i] = res; + errors[i] = err; + + self.emit('progress', { + index: i, + value: res, + error: err, + pending: pending, + total: total, + complete: complete, + percent: complete / total * 100 | 0, + start: start, + end: end, + duration: end - start + }); + + if (--pending) next(); + else defer(function(){ + if(!throws) cb(errors, results); + else cb(null, results); + }); + } + } + + // concurrency + for (var i = 0; i < fns.length; i++) { + if (i == max) break; + next(); + } + + return this; +}; diff --git a/node_modules/batch/package.json b/node_modules/batch/package.json new file mode 100644 index 00000000..26a7eb4a --- /dev/null +++ b/node_modules/batch/package.json @@ -0,0 +1,19 @@ +{ + "name": "batch", + "description": "Simple async batch with concurrency control and progress reporting.", + "version": "0.6.1", + "author": "TJ Holowaychuk ", + "license": "MIT", + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "main": "index", + "browser": { + "emitter": "events" + }, + "repository": { + "type": "git", + "url": "https://github.com/visionmedia/batch.git" + } +} diff --git a/node_modules/big.js/CHANGELOG.md b/node_modules/big.js/CHANGELOG.md new file mode 100644 index 00000000..86262555 --- /dev/null +++ b/node_modules/big.js/CHANGELOG.md @@ -0,0 +1,146 @@ +#### 5.2.2 + +* 18/10/18 +* #109 Remove opencollective dependency. + +#### 5.2.1 + +* Delete *bower.json*. + +#### 5.2.0 + +* 09/10/18 +* #63 Allow negative argument for `round`. +* #107 `sqrt` of large number. + +#### 5.1.2 + +* 24/05/18 +* #95 Add `browser` field to *package.json*. +* Restore named export to enable `import {Big}`. + +#### 5.1.1 + +* 22/05/18 +* #95 Remove named export. + +#### 5.1.0 + +* 22/05/18 +* Amend *.mjs* exports. +* Remove extension from `main` field in *package.json*. + +#### 5.0.3 + +* 23/10/17 +* #89 Optimisation of internal `round` function. + +#### 5.0.2 + +* 13/10/17 +* Update *README.md*. + +#### 5.0.1 + +* 13/10/17 +* Correct `Big.version` number. + +#### 5.0.0 + +* 13/10/17 +* Return `-0` from `valueOf` for negative zero. +* Refactor the methods which return a string. +* Amend error messaging. +* Update API document and change its colour scheme. +* Add `Big.version`. +* Remove bitcoin address. + +#### 4.0.2 + +* 28/09/17 +* Add *big.mjs* for use with Node.js with `--experimental-modules` flag. + +#### 4.0.0 + +* 27/09/17 +* Rename `Big.E_POS` to `Big.PE`, `Big.E_NEG` to `Big.NE`. +* Refactor error messaging. +* Throw if `null` is passed to `toFixed` etc. + +#### 3.2.0 + +* 14/09/17 Aid ES6 import. + +#### 3.1.3 + +* Minor documentation updates. + +#### 3.1.2 + +* README typo. + +#### 3.1.1 + +* API documentation update, including FAQ additions. + +#### 3.1.0 + +* Renamed and exposed `TO_EXP_NEG` and `TO_EXP_POS` as `Big.E_NEG` and `Big.E_POS`. + +#### 3.0.2 + +* Remove *.npmignore*, use `files` field in *package.json* instead. + +#### 3.0.1 + +* Added `sub`, `add` and `mul` aliases. +* Clean-up after lint. + +#### 3.0.0 + +* 10/12/14 Added [multiple constructor functionality](http://mikemcl.github.io/big.js/#faq). +* No breaking changes or other additions, but a major code reorganisation, so *v3* seemed appropiate. + +#### 2.5.2 + +* 1/11/14 Added bower.json. + +#### 2.5.1 + +* 8/06/14 Amend README requires. + +#### 2.5.0 + +* 26/01/14 Added `toJSON` method so serialization uses `toString`. + +#### 2.4.1 + +* 17/10/13 Conform signed zero to IEEEE 754 (2008). + +#### 2.4.0 + +* 19/09/13 Throw instances of `Error`. + +#### 2.3.0 + +* 16/09/13 Added `cmp` method. + +#### 2.2.0 + +* 11/07/13 Added 'round up' mode. + +#### 2.1.0 + +* 26/06/13 Allow e.g. `.1` and `2.`. + +#### 2.0.0 + +* 12/05/13 Added `abs` method and replaced `cmp` with `eq`, `gt`, `gte`, `lt`, and `lte` methods. + +#### 1.0.1 + +* Changed default value of MAX_DP to 1E6 + +#### 1.0.0 + +* 7/11/2012 Initial release diff --git a/node_modules/big.js/LICENCE b/node_modules/big.js/LICENCE new file mode 100644 index 00000000..f7e12c83 --- /dev/null +++ b/node_modules/big.js/LICENCE @@ -0,0 +1,23 @@ +The MIT Licence (Expat). + +Copyright (c) 2018 Michael Mclaughlin + +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. + diff --git a/node_modules/big.js/README.md b/node_modules/big.js/README.md new file mode 100644 index 00000000..8d103e6f --- /dev/null +++ b/node_modules/big.js/README.md @@ -0,0 +1,201 @@ +# big.js + +**A small, fast JavaScript library for arbitrary-precision decimal arithmetic.** + +The little sister to [bignumber.js](https://github.com/MikeMcl/bignumber.js/) and [decimal.js](https://github.com/MikeMcl/decimal.js/). See [here](https://github.com/MikeMcl/big.js/wiki) for some notes on the difference between them. + +## Features + + - Faster, smaller and easier-to-use than JavaScript versions of Java's BigDecimal + - Only 5.9 KB minified and 2.7 KB gzipped + - Simple API + - Replicates the `toExponential`, `toFixed` and `toPrecision` methods of JavaScript's Number type + - Includes a `sqrt` method + - Stores values in an accessible decimal floating point format + - No dependencies + - Comprehensive [documentation](http://mikemcl.github.io/big.js/) and test set + +## Set up + +The library is the single JavaScript file *big.js* (or *big.min.js*, which is *big.js* minified). + +Browser: + +```html + +``` + +[Node.js](http://nodejs.org): + +```bash +$ npm install big.js +``` + +```javascript +const Big = require('big.js'); +``` + +ES6 module: + +```javascript +import Big from 'big.mjs'; +``` +## Use + +*In all examples below, `var`, semicolons and `toString` calls are not shown. If a commented-out value is in quotes it means `toString` has been called on the preceding expression.* + +The library exports a single function, `Big`, the constructor of Big number instances. +It accepts a value of type number, string or Big number object. + + x = new Big(123.4567) + y = Big('123456.7e-3') // 'new' is optional + z = new Big(x) + x.eq(y) && x.eq(z) && y.eq(z) // true + +A Big number is immutable in the sense that it is not changed by its methods. + + 0.3 - 0.1 // 0.19999999999999998 + x = new Big(0.3) + x.minus(0.1) // "0.2" + x // "0.3" + +The methods that return a Big number can be chained. + + x.div(y).plus(z).times(9).minus('1.234567801234567e+8').plus(976.54321).div('2598.11772') + x.sqrt().div(y).pow(3).gt(y.mod(z)) // true + +Like JavaScript's Number type, there are `toExponential`, `toFixed` and `toPrecision` methods. + + x = new Big(255.5) + x.toExponential(5) // "2.55500e+2" + x.toFixed(5) // "255.50000" + x.toPrecision(5) // "255.50" + +The arithmetic methods always return the exact result except `div`, `sqrt` and `pow` +(with negative exponent), as these methods involve division. + +The maximum number of decimal places and the rounding mode used to round the results of these methods is determined by the value of the `DP` and `RM` properties of the `Big` number constructor. + + Big.DP = 10 + Big.RM = 1 + + x = new Big(2); + y = new Big(3); + z = x.div(y) // "0.6666666667" + z.sqrt() // "0.8164965809" + z.pow(-3) // "3.3749999995" + z.times(z) // "0.44444444448888888889" + z.times(z).round(10) // "0.4444444445" + +Multiple Big number constructors can be created, each with an independent configuration. + +The value of a Big number is stored in a decimal floating point format in terms of a coefficient, exponent and sign. + + x = new Big(-123.456); + x.c // [1,2,3,4,5,6] coefficient (i.e. significand) + x.e // 2 exponent + x.s // -1 sign + +For further information see the [API](http://mikemcl.github.io/big.js/) reference from the *doc* folder. + +## Test + +The *test* directory contains the test scripts for each Big number method. + +The tests can be run with Node.js or a browser. + +To run all the tests + + $ npm test + +To test a single method + + $ node test/toFixed + +For the browser, see *single-test.html* and *every-test.html* in the *test/browser* directory. + +*big-vs-number.html* is a simple application that enables some of the methods of big.js to be compared with those of JavaScript's Number type. + +## Performance + +The *perf* directory contains two legacy applications and a *lib* directory containing the BigDecimal libraries used by both. + +*big-vs-bigdecimal.html* tests the performance of big.js against the JavaScript translations of two versions of BigDecimal, its use should be more or less self-explanatory. + +* [GWT: java.math.BigDecimal](https://github.com/iriscouch/bigdecimal.js) +* [ICU4J: com.ibm.icu.math.BigDecimal](https://github.com/dtrebbien/BigDecimal.js) + +The BigDecimal in the npm registry is the GWT version. It has some bugs, see the Node.js script *perf/lib/bigdecimal_GWT/bugs.js* for examples of flaws in its *remainder*, *divide* and *compareTo* methods. + +*bigtime.js* is a Node.js command-line application which tests the performance of big.js against the GWT version of +BigDecimal from the npm registry. + +For example, to compare the time taken by the big.js `plus` method and the BigDecimal `add` method + + $ node bigtime plus 10000 40 + +This will time 10000 calls to each, using operands of up to 40 random digits and will check that the results match. + +For help + + $ node bigtime -h + +## Build + +If [uglify-js](https://github.com/mishoo/UglifyJS2) is installed globally + + $ npm install uglify-js -g + +then + + $ npm run build + +will create *big.min.js*. + +## TypeScript + +The [DefinitelyTyped](https://github.com/borisyankov/DefinitelyTyped) project has a Typescript type definitions file for big.js. + + $ npm install @types/big.js + +Any questions about the TypeScript type definitions file should be addressed to the DefinitelyTyped project. + +## Feedback + +Bugs/comments/questions? + +Open an issue, or email Michael + +## Licence + +[MIT](LICENCE) + +## Contributors + +This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)]. + + + +## Backers + +Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/bigjs#backer)] + + + + +## Sponsors + +Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/bigjs#sponsor)] + + + + + + + + + + + + + diff --git a/node_modules/big.js/big.js b/node_modules/big.js/big.js new file mode 100644 index 00000000..a2f201a6 --- /dev/null +++ b/node_modules/big.js/big.js @@ -0,0 +1,941 @@ +/* + * big.js v5.2.2 + * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic. + * Copyright (c) 2018 Michael Mclaughlin + * https://github.com/MikeMcl/big.js/LICENCE + */ +;(function (GLOBAL) { + 'use strict'; + var Big, + + +/************************************** EDITABLE DEFAULTS *****************************************/ + + + // The default values below must be integers within the stated ranges. + + /* + * The maximum number of decimal places (DP) of the results of operations involving division: + * div and sqrt, and pow with negative exponents. + */ + DP = 20, // 0 to MAX_DP + + /* + * The rounding mode (RM) used when rounding to the above decimal places. + * + * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN) + * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP) + * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN) + * 3 Away from zero. (ROUND_UP) + */ + RM = 1, // 0, 1, 2 or 3 + + // The maximum value of DP and Big.DP. + MAX_DP = 1E6, // 0 to 1000000 + + // The maximum magnitude of the exponent argument to the pow method. + MAX_POWER = 1E6, // 1 to 1000000 + + /* + * The negative exponent (NE) at and beneath which toString returns exponential notation. + * (JavaScript numbers: -7) + * -1000000 is the minimum recommended exponent value of a Big. + */ + NE = -7, // 0 to -1000000 + + /* + * The positive exponent (PE) at and above which toString returns exponential notation. + * (JavaScript numbers: 21) + * 1000000 is the maximum recommended exponent value of a Big. + * (This limit is not enforced or checked.) + */ + PE = 21, // 0 to 1000000 + + +/**************************************************************************************************/ + + + // Error messages. + NAME = '[big.js] ', + INVALID = NAME + 'Invalid ', + INVALID_DP = INVALID + 'decimal places', + INVALID_RM = INVALID + 'rounding mode', + DIV_BY_ZERO = NAME + 'Division by zero', + + // The shared prototype object. + P = {}, + UNDEFINED = void 0, + NUMERIC = /^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i; + + + /* + * Create and return a Big constructor. + * + */ + function _Big_() { + + /* + * The Big constructor and exported function. + * Create and return a new instance of a Big number object. + * + * n {number|string|Big} A numeric value. + */ + function Big(n) { + var x = this; + + // Enable constructor usage without new. + if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n); + + // Duplicate. + if (n instanceof Big) { + x.s = n.s; + x.e = n.e; + x.c = n.c.slice(); + } else { + parse(x, n); + } + + /* + * Retain a reference to this Big constructor, and shadow Big.prototype.constructor which + * points to Object. + */ + x.constructor = Big; + } + + Big.prototype = P; + Big.DP = DP; + Big.RM = RM; + Big.NE = NE; + Big.PE = PE; + Big.version = '5.2.2'; + + return Big; + } + + + /* + * Parse the number or string value passed to a Big constructor. + * + * x {Big} A Big number instance. + * n {number|string} A numeric value. + */ + function parse(x, n) { + var e, i, nl; + + // Minus zero? + if (n === 0 && 1 / n < 0) n = '-0'; + else if (!NUMERIC.test(n += '')) throw Error(INVALID + 'number'); + + // Determine sign. + x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1; + + // Decimal point? + if ((e = n.indexOf('.')) > -1) n = n.replace('.', ''); + + // Exponential form? + if ((i = n.search(/e/i)) > 0) { + + // Determine exponent. + if (e < 0) e = i; + e += +n.slice(i + 1); + n = n.substring(0, i); + } else if (e < 0) { + + // Integer. + e = n.length; + } + + nl = n.length; + + // Determine leading zeros. + for (i = 0; i < nl && n.charAt(i) == '0';) ++i; + + if (i == nl) { + + // Zero. + x.c = [x.e = 0]; + } else { + + // Determine trailing zeros. + for (; nl > 0 && n.charAt(--nl) == '0';); + x.e = e - i - 1; + x.c = []; + + // Convert string to array of digits without leading/trailing zeros. + for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++); + } + + return x; + } + + + /* + * Round Big x to a maximum of dp decimal places using rounding mode rm. + * Called by stringify, P.div, P.round and P.sqrt. + * + * x {Big} The Big to round. + * dp {number} Integer, 0 to MAX_DP inclusive. + * rm {number} 0, 1, 2 or 3 (DOWN, HALF_UP, HALF_EVEN, UP) + * [more] {boolean} Whether the result of division was truncated. + */ + function round(x, dp, rm, more) { + var xc = x.c, + i = x.e + dp + 1; + + if (i < xc.length) { + if (rm === 1) { + + // xc[i] is the digit after the digit that may be rounded up. + more = xc[i] >= 5; + } else if (rm === 2) { + more = xc[i] > 5 || xc[i] == 5 && + (more || i < 0 || xc[i + 1] !== UNDEFINED || xc[i - 1] & 1); + } else if (rm === 3) { + more = more || !!xc[0]; + } else { + more = false; + if (rm !== 0) throw Error(INVALID_RM); + } + + if (i < 1) { + xc.length = 1; + + if (more) { + + // 1, 0.1, 0.01, 0.001, 0.0001 etc. + x.e = -dp; + xc[0] = 1; + } else { + + // Zero. + xc[0] = x.e = 0; + } + } else { + + // Remove any digits after the required decimal places. + xc.length = i--; + + // Round up? + if (more) { + + // Rounding up may mean the previous digit has to be rounded up. + for (; ++xc[i] > 9;) { + xc[i] = 0; + if (!i--) { + ++x.e; + xc.unshift(1); + } + } + } + + // Remove trailing zeros. + for (i = xc.length; !xc[--i];) xc.pop(); + } + } else if (rm < 0 || rm > 3 || rm !== ~~rm) { + throw Error(INVALID_RM); + } + + return x; + } + + + /* + * Return a string representing the value of Big x in normal or exponential notation. + * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf. + * + * x {Big} + * id? {number} Caller id. + * 1 toExponential + * 2 toFixed + * 3 toPrecision + * 4 valueOf + * n? {number|undefined} Caller's argument. + * k? {number|undefined} + */ + function stringify(x, id, n, k) { + var e, s, + Big = x.constructor, + z = !x.c[0]; + + if (n !== UNDEFINED) { + if (n !== ~~n || n < (id == 3) || n > MAX_DP) { + throw Error(id == 3 ? INVALID + 'precision' : INVALID_DP); + } + + x = new Big(x); + + // The index of the digit that may be rounded up. + n = k - x.e; + + // Round? + if (x.c.length > ++k) round(x, n, Big.RM); + + // toFixed: recalculate k as x.e may have changed if value rounded up. + if (id == 2) k = x.e + n + 1; + + // Append zeros? + for (; x.c.length < k;) x.c.push(0); + } + + e = x.e; + s = x.c.join(''); + n = s.length; + + // Exponential notation? + if (id != 2 && (id == 1 || id == 3 && k <= e || e <= Big.NE || e >= Big.PE)) { + s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e; + + // Normal notation. + } else if (e < 0) { + for (; ++e;) s = '0' + s; + s = '0.' + s; + } else if (e > 0) { + if (++e > n) for (e -= n; e--;) s += '0'; + else if (e < n) s = s.slice(0, e) + '.' + s.slice(e); + } else if (n > 1) { + s = s.charAt(0) + '.' + s.slice(1); + } + + return x.s < 0 && (!z || id == 4) ? '-' + s : s; + } + + + // Prototype/instance methods + + + /* + * Return a new Big whose value is the absolute value of this Big. + */ + P.abs = function () { + var x = new this.constructor(this); + x.s = 1; + return x; + }; + + + /* + * Return 1 if the value of this Big is greater than the value of Big y, + * -1 if the value of this Big is less than the value of Big y, or + * 0 if they have the same value. + */ + P.cmp = function (y) { + var isneg, + x = this, + xc = x.c, + yc = (y = new x.constructor(y)).c, + i = x.s, + j = y.s, + k = x.e, + l = y.e; + + // Either zero? + if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i; + + // Signs differ? + if (i != j) return i; + + isneg = i < 0; + + // Compare exponents. + if (k != l) return k > l ^ isneg ? 1 : -1; + + j = (k = xc.length) < (l = yc.length) ? k : l; + + // Compare digit by digit. + for (i = -1; ++i < j;) { + if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1; + } + + // Compare lengths. + return k == l ? 0 : k > l ^ isneg ? 1 : -1; + }; + + + /* + * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded, + * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM. + */ + P.div = function (y) { + var x = this, + Big = x.constructor, + a = x.c, // dividend + b = (y = new Big(y)).c, // divisor + k = x.s == y.s ? 1 : -1, + dp = Big.DP; + + if (dp !== ~~dp || dp < 0 || dp > MAX_DP) throw Error(INVALID_DP); + + // Divisor is zero? + if (!b[0]) throw Error(DIV_BY_ZERO); + + // Dividend is 0? Return +-0. + if (!a[0]) return new Big(k * 0); + + var bl, bt, n, cmp, ri, + bz = b.slice(), + ai = bl = b.length, + al = a.length, + r = a.slice(0, bl), // remainder + rl = r.length, + q = y, // quotient + qc = q.c = [], + qi = 0, + d = dp + (q.e = x.e - y.e) + 1; // number of digits of the result + + q.s = k; + k = d < 0 ? 0 : d; + + // Create version of divisor with leading zero. + bz.unshift(0); + + // Add zeros to make remainder as long as divisor. + for (; rl++ < bl;) r.push(0); + + do { + + // n is how many times the divisor goes into current remainder. + for (n = 0; n < 10; n++) { + + // Compare divisor and remainder. + if (bl != (rl = r.length)) { + cmp = bl > rl ? 1 : -1; + } else { + for (ri = -1, cmp = 0; ++ri < bl;) { + if (b[ri] != r[ri]) { + cmp = b[ri] > r[ri] ? 1 : -1; + break; + } + } + } + + // If divisor < remainder, subtract divisor from remainder. + if (cmp < 0) { + + // Remainder can't be more than 1 digit longer than divisor. + // Equalise lengths using divisor with extra leading zero? + for (bt = rl == bl ? b : bz; rl;) { + if (r[--rl] < bt[rl]) { + ri = rl; + for (; ri && !r[--ri];) r[ri] = 9; + --r[ri]; + r[rl] += 10; + } + r[rl] -= bt[rl]; + } + + for (; !r[0];) r.shift(); + } else { + break; + } + } + + // Add the digit n to the result array. + qc[qi++] = cmp ? n : ++n; + + // Update the remainder. + if (r[0] && cmp) r[rl] = a[ai] || 0; + else r = [a[ai]]; + + } while ((ai++ < al || r[0] !== UNDEFINED) && k--); + + // Leading zero? Do not remove if result is simply zero (qi == 1). + if (!qc[0] && qi != 1) { + + // There can't be more than one zero. + qc.shift(); + q.e--; + } + + // Round? + if (qi > d) round(q, dp, Big.RM, r[0] !== UNDEFINED); + + return q; + }; + + + /* + * Return true if the value of this Big is equal to the value of Big y, otherwise return false. + */ + P.eq = function (y) { + return !this.cmp(y); + }; + + + /* + * Return true if the value of this Big is greater than the value of Big y, otherwise return + * false. + */ + P.gt = function (y) { + return this.cmp(y) > 0; + }; + + + /* + * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise + * return false. + */ + P.gte = function (y) { + return this.cmp(y) > -1; + }; + + + /* + * Return true if the value of this Big is less than the value of Big y, otherwise return false. + */ + P.lt = function (y) { + return this.cmp(y) < 0; + }; + + + /* + * Return true if the value of this Big is less than or equal to the value of Big y, otherwise + * return false. + */ + P.lte = function (y) { + return this.cmp(y) < 1; + }; + + + /* + * Return a new Big whose value is the value of this Big minus the value of Big y. + */ + P.minus = P.sub = function (y) { + var i, j, t, xlty, + x = this, + Big = x.constructor, + a = x.s, + b = (y = new Big(y)).s; + + // Signs differ? + if (a != b) { + y.s = -b; + return x.plus(y); + } + + var xc = x.c.slice(), + xe = x.e, + yc = y.c, + ye = y.e; + + // Either zero? + if (!xc[0] || !yc[0]) { + + // y is non-zero? x is non-zero? Or both are zero. + return yc[0] ? (y.s = -b, y) : new Big(xc[0] ? x : 0); + } + + // Determine which is the bigger number. Prepend zeros to equalise exponents. + if (a = xe - ye) { + + if (xlty = a < 0) { + a = -a; + t = xc; + } else { + ye = xe; + t = yc; + } + + t.reverse(); + for (b = a; b--;) t.push(0); + t.reverse(); + } else { + + // Exponents equal. Check digit by digit. + j = ((xlty = xc.length < yc.length) ? xc : yc).length; + + for (a = b = 0; b < j; b++) { + if (xc[b] != yc[b]) { + xlty = xc[b] < yc[b]; + break; + } + } + } + + // x < y? Point xc to the array of the bigger number. + if (xlty) { + t = xc; + xc = yc; + yc = t; + y.s = -y.s; + } + + /* + * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only + * needs to start at yc.length. + */ + if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0; + + // Subtract yc from xc. + for (b = i; j > a;) { + if (xc[--j] < yc[j]) { + for (i = j; i && !xc[--i];) xc[i] = 9; + --xc[i]; + xc[j] += 10; + } + + xc[j] -= yc[j]; + } + + // Remove trailing zeros. + for (; xc[--b] === 0;) xc.pop(); + + // Remove leading zeros and adjust exponent accordingly. + for (; xc[0] === 0;) { + xc.shift(); + --ye; + } + + if (!xc[0]) { + + // n - n = +0 + y.s = 1; + + // Result must be zero. + xc = [ye = 0]; + } + + y.c = xc; + y.e = ye; + + return y; + }; + + + /* + * Return a new Big whose value is the value of this Big modulo the value of Big y. + */ + P.mod = function (y) { + var ygtx, + x = this, + Big = x.constructor, + a = x.s, + b = (y = new Big(y)).s; + + if (!y.c[0]) throw Error(DIV_BY_ZERO); + + x.s = y.s = 1; + ygtx = y.cmp(x) == 1; + x.s = a; + y.s = b; + + if (ygtx) return new Big(x); + + a = Big.DP; + b = Big.RM; + Big.DP = Big.RM = 0; + x = x.div(y); + Big.DP = a; + Big.RM = b; + + return this.minus(x.times(y)); + }; + + + /* + * Return a new Big whose value is the value of this Big plus the value of Big y. + */ + P.plus = P.add = function (y) { + var t, + x = this, + Big = x.constructor, + a = x.s, + b = (y = new Big(y)).s; + + // Signs differ? + if (a != b) { + y.s = -b; + return x.minus(y); + } + + var xe = x.e, + xc = x.c, + ye = y.e, + yc = y.c; + + // Either zero? y is non-zero? x is non-zero? Or both are zero. + if (!xc[0] || !yc[0]) return yc[0] ? y : new Big(xc[0] ? x : a * 0); + + xc = xc.slice(); + + // Prepend zeros to equalise exponents. + // Note: reverse faster than unshifts. + if (a = xe - ye) { + if (a > 0) { + ye = xe; + t = yc; + } else { + a = -a; + t = xc; + } + + t.reverse(); + for (; a--;) t.push(0); + t.reverse(); + } + + // Point xc to the longer array. + if (xc.length - yc.length < 0) { + t = yc; + yc = xc; + xc = t; + } + + a = yc.length; + + // Only start adding at yc.length - 1 as the further digits of xc can be left as they are. + for (b = 0; a; xc[a] %= 10) b = (xc[--a] = xc[a] + yc[a] + b) / 10 | 0; + + // No need to check for zero, as +x + +y != 0 && -x + -y != 0 + + if (b) { + xc.unshift(b); + ++ye; + } + + // Remove trailing zeros. + for (a = xc.length; xc[--a] === 0;) xc.pop(); + + y.c = xc; + y.e = ye; + + return y; + }; + + + /* + * Return a Big whose value is the value of this Big raised to the power n. + * If n is negative, round to a maximum of Big.DP decimal places using rounding + * mode Big.RM. + * + * n {number} Integer, -MAX_POWER to MAX_POWER inclusive. + */ + P.pow = function (n) { + var x = this, + one = new x.constructor(1), + y = one, + isneg = n < 0; + + if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) throw Error(INVALID + 'exponent'); + if (isneg) n = -n; + + for (;;) { + if (n & 1) y = y.times(x); + n >>= 1; + if (!n) break; + x = x.times(x); + } + + return isneg ? one.div(y) : y; + }; + + + /* + * Return a new Big whose value is the value of this Big rounded using rounding mode rm + * to a maximum of dp decimal places, or, if dp is negative, to an integer which is a + * multiple of 10**-dp. + * If dp is not specified, round to 0 decimal places. + * If rm is not specified, use Big.RM. + * + * dp? {number} Integer, -MAX_DP to MAX_DP inclusive. + * rm? 0, 1, 2 or 3 (ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_UP) + */ + P.round = function (dp, rm) { + var Big = this.constructor; + if (dp === UNDEFINED) dp = 0; + else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) throw Error(INVALID_DP); + return round(new Big(this), dp, rm === UNDEFINED ? Big.RM : rm); + }; + + + /* + * Return a new Big whose value is the square root of the value of this Big, rounded, if + * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM. + */ + P.sqrt = function () { + var r, c, t, + x = this, + Big = x.constructor, + s = x.s, + e = x.e, + half = new Big(0.5); + + // Zero? + if (!x.c[0]) return new Big(x); + + // Negative? + if (s < 0) throw Error(NAME + 'No square root'); + + // Estimate. + s = Math.sqrt(x + ''); + + // Math.sqrt underflow/overflow? + // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent. + if (s === 0 || s === 1 / 0) { + c = x.c.join(''); + if (!(c.length + e & 1)) c += '0'; + s = Math.sqrt(c); + e = ((e + 1) / 2 | 0) - (e < 0 || e & 1); + r = new Big((s == 1 / 0 ? '1e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e); + } else { + r = new Big(s); + } + + e = r.e + (Big.DP += 4); + + // Newton-Raphson iteration. + do { + t = r; + r = half.times(t.plus(x.div(t))); + } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join('')); + + return round(r, Big.DP -= 4, Big.RM); + }; + + + /* + * Return a new Big whose value is the value of this Big times the value of Big y. + */ + P.times = P.mul = function (y) { + var c, + x = this, + Big = x.constructor, + xc = x.c, + yc = (y = new Big(y)).c, + a = xc.length, + b = yc.length, + i = x.e, + j = y.e; + + // Determine sign of result. + y.s = x.s == y.s ? 1 : -1; + + // Return signed 0 if either 0. + if (!xc[0] || !yc[0]) return new Big(y.s * 0); + + // Initialise exponent of result as x.e + y.e. + y.e = i + j; + + // If array xc has fewer digits than yc, swap xc and yc, and lengths. + if (a < b) { + c = xc; + xc = yc; + yc = c; + j = a; + a = b; + b = j; + } + + // Initialise coefficient array of result with zeros. + for (c = new Array(j = a + b); j--;) c[j] = 0; + + // Multiply. + + // i is initially xc.length. + for (i = b; i--;) { + b = 0; + + // a is yc.length. + for (j = a + i; j > i;) { + + // Current sum of products at this digit position, plus carry. + b = c[j] + yc[i] * xc[j - i - 1] + b; + c[j--] = b % 10; + + // carry + b = b / 10 | 0; + } + + c[j] = (c[j] + b) % 10; + } + + // Increment result exponent if there is a final carry, otherwise remove leading zero. + if (b) ++y.e; + else c.shift(); + + // Remove trailing zeros. + for (i = c.length; !c[--i];) c.pop(); + y.c = c; + + return y; + }; + + + /* + * Return a string representing the value of this Big in exponential notation to dp fixed decimal + * places and rounded using Big.RM. + * + * dp? {number} Integer, 0 to MAX_DP inclusive. + */ + P.toExponential = function (dp) { + return stringify(this, 1, dp, dp); + }; + + + /* + * Return a string representing the value of this Big in normal notation to dp fixed decimal + * places and rounded using Big.RM. + * + * dp? {number} Integer, 0 to MAX_DP inclusive. + * + * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'. + * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'. + */ + P.toFixed = function (dp) { + return stringify(this, 2, dp, this.e + dp); + }; + + + /* + * Return a string representing the value of this Big rounded to sd significant digits using + * Big.RM. Use exponential notation if sd is less than the number of digits necessary to represent + * the integer part of the value in normal notation. + * + * sd {number} Integer, 1 to MAX_DP inclusive. + */ + P.toPrecision = function (sd) { + return stringify(this, 3, sd, sd - 1); + }; + + + /* + * Return a string representing the value of this Big. + * Return exponential notation if this Big has a positive exponent equal to or greater than + * Big.PE, or a negative exponent equal to or less than Big.NE. + * Omit the sign for negative zero. + */ + P.toString = function () { + return stringify(this); + }; + + + /* + * Return a string representing the value of this Big. + * Return exponential notation if this Big has a positive exponent equal to or greater than + * Big.PE, or a negative exponent equal to or less than Big.NE. + * Include the sign for negative zero. + */ + P.valueOf = P.toJSON = function () { + return stringify(this, 4); + }; + + + // Export + + + Big = _Big_(); + + Big['default'] = Big.Big = Big; + + //AMD. + if (typeof define === 'function' && define.amd) { + define(function () { return Big; }); + + // Node and other CommonJS-like environments that support module.exports. + } else if (typeof module !== 'undefined' && module.exports) { + module.exports = Big; + + //Browser. + } else { + GLOBAL.Big = Big; + } +})(this); diff --git a/node_modules/big.js/big.min.js b/node_modules/big.js/big.min.js new file mode 100644 index 00000000..0fb1b68f --- /dev/null +++ b/node_modules/big.js/big.min.js @@ -0,0 +1,2 @@ +/* big.js v5.2.2 https://github.com/MikeMcl/big.js/LICENCE */ +!function(e){"use strict";var r,i=20,s=1,P=1e6,o=-7,f=21,c="[big.js] ",u=c+"Invalid ",b=u+"decimal places",h=u+"rounding mode",x=c+"Division by zero",l={},D=void 0,a=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function R(e,r,t,n){var i=e.c,s=e.e+r+1;if(s++n&&R(e,t,o.RM),2==r&&(n=e.e+t+1);e.c.length=o.PE))s=s.charAt(0)+(1t)for(i-=t;i--;)s+="0";else ii[s]^r?1:-1;return f==c?0:cw[l]?1:-1;break}if(!(h<0))break;for(c=d==f?i:a;d;){if(w[--d]>=1;)r=r.times(r);return i?t.div(n):n},l.round=function(e,r){var t=this.constructor;if(e===D)e=0;else if(e!==~~e||e<-P||P + * https://github.com/MikeMcl/big.js/LICENCE + */ + + +/************************************** EDITABLE DEFAULTS *****************************************/ + + + // The default values below must be integers within the stated ranges. + + /* + * The maximum number of decimal places (DP) of the results of operations involving division: + * div and sqrt, and pow with negative exponents. + */ +var DP = 20, // 0 to MAX_DP + + /* + * The rounding mode (RM) used when rounding to the above decimal places. + * + * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN) + * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP) + * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN) + * 3 Away from zero. (ROUND_UP) + */ + RM = 1, // 0, 1, 2 or 3 + + // The maximum value of DP and Big.DP. + MAX_DP = 1E6, // 0 to 1000000 + + // The maximum magnitude of the exponent argument to the pow method. + MAX_POWER = 1E6, // 1 to 1000000 + + /* + * The negative exponent (NE) at and beneath which toString returns exponential notation. + * (JavaScript numbers: -7) + * -1000000 is the minimum recommended exponent value of a Big. + */ + NE = -7, // 0 to -1000000 + + /* + * The positive exponent (PE) at and above which toString returns exponential notation. + * (JavaScript numbers: 21) + * 1000000 is the maximum recommended exponent value of a Big. + * (This limit is not enforced or checked.) + */ + PE = 21, // 0 to 1000000 + + +/**************************************************************************************************/ + + + // Error messages. + NAME = '[big.js] ', + INVALID = NAME + 'Invalid ', + INVALID_DP = INVALID + 'decimal places', + INVALID_RM = INVALID + 'rounding mode', + DIV_BY_ZERO = NAME + 'Division by zero', + + // The shared prototype object. + P = {}, + UNDEFINED = void 0, + NUMERIC = /^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i; + + +/* + * Create and return a Big constructor. + * + */ +function _Big_() { + + /* + * The Big constructor and exported function. + * Create and return a new instance of a Big number object. + * + * n {number|string|Big} A numeric value. + */ + function Big(n) { + var x = this; + + // Enable constructor usage without new. + if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n); + + // Duplicate. + if (n instanceof Big) { + x.s = n.s; + x.e = n.e; + x.c = n.c.slice(); + } else { + parse(x, n); + } + + /* + * Retain a reference to this Big constructor, and shadow Big.prototype.constructor which + * points to Object. + */ + x.constructor = Big; + } + + Big.prototype = P; + Big.DP = DP; + Big.RM = RM; + Big.NE = NE; + Big.PE = PE; + Big.version = '5.2.2'; + + return Big; +} + + +/* + * Parse the number or string value passed to a Big constructor. + * + * x {Big} A Big number instance. + * n {number|string} A numeric value. + */ +function parse(x, n) { + var e, i, nl; + + // Minus zero? + if (n === 0 && 1 / n < 0) n = '-0'; + else if (!NUMERIC.test(n += '')) throw Error(INVALID + 'number'); + + // Determine sign. + x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1; + + // Decimal point? + if ((e = n.indexOf('.')) > -1) n = n.replace('.', ''); + + // Exponential form? + if ((i = n.search(/e/i)) > 0) { + + // Determine exponent. + if (e < 0) e = i; + e += +n.slice(i + 1); + n = n.substring(0, i); + } else if (e < 0) { + + // Integer. + e = n.length; + } + + nl = n.length; + + // Determine leading zeros. + for (i = 0; i < nl && n.charAt(i) == '0';) ++i; + + if (i == nl) { + + // Zero. + x.c = [x.e = 0]; + } else { + + // Determine trailing zeros. + for (; nl > 0 && n.charAt(--nl) == '0';); + x.e = e - i - 1; + x.c = []; + + // Convert string to array of digits without leading/trailing zeros. + for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++); + } + + return x; +} + + +/* + * Round Big x to a maximum of dp decimal places using rounding mode rm. + * Called by stringify, P.div, P.round and P.sqrt. + * + * x {Big} The Big to round. + * dp {number} Integer, 0 to MAX_DP inclusive. + * rm {number} 0, 1, 2 or 3 (DOWN, HALF_UP, HALF_EVEN, UP) + * [more] {boolean} Whether the result of division was truncated. + */ +function round(x, dp, rm, more) { + var xc = x.c, + i = x.e + dp + 1; + + if (i < xc.length) { + if (rm === 1) { + + // xc[i] is the digit after the digit that may be rounded up. + more = xc[i] >= 5; + } else if (rm === 2) { + more = xc[i] > 5 || xc[i] == 5 && + (more || i < 0 || xc[i + 1] !== UNDEFINED || xc[i - 1] & 1); + } else if (rm === 3) { + more = more || !!xc[0]; + } else { + more = false; + if (rm !== 0) throw Error(INVALID_RM); + } + + if (i < 1) { + xc.length = 1; + + if (more) { + + // 1, 0.1, 0.01, 0.001, 0.0001 etc. + x.e = -dp; + xc[0] = 1; + } else { + + // Zero. + xc[0] = x.e = 0; + } + } else { + + // Remove any digits after the required decimal places. + xc.length = i--; + + // Round up? + if (more) { + + // Rounding up may mean the previous digit has to be rounded up. + for (; ++xc[i] > 9;) { + xc[i] = 0; + if (!i--) { + ++x.e; + xc.unshift(1); + } + } + } + + // Remove trailing zeros. + for (i = xc.length; !xc[--i];) xc.pop(); + } + } else if (rm < 0 || rm > 3 || rm !== ~~rm) { + throw Error(INVALID_RM); + } + + return x; +} + + +/* + * Return a string representing the value of Big x in normal or exponential notation. + * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf. + * + * x {Big} + * id? {number} Caller id. + * 1 toExponential + * 2 toFixed + * 3 toPrecision + * 4 valueOf + * n? {number|undefined} Caller's argument. + * k? {number|undefined} + */ +function stringify(x, id, n, k) { + var e, s, + Big = x.constructor, + z = !x.c[0]; + + if (n !== UNDEFINED) { + if (n !== ~~n || n < (id == 3) || n > MAX_DP) { + throw Error(id == 3 ? INVALID + 'precision' : INVALID_DP); + } + + x = new Big(x); + + // The index of the digit that may be rounded up. + n = k - x.e; + + // Round? + if (x.c.length > ++k) round(x, n, Big.RM); + + // toFixed: recalculate k as x.e may have changed if value rounded up. + if (id == 2) k = x.e + n + 1; + + // Append zeros? + for (; x.c.length < k;) x.c.push(0); + } + + e = x.e; + s = x.c.join(''); + n = s.length; + + // Exponential notation? + if (id != 2 && (id == 1 || id == 3 && k <= e || e <= Big.NE || e >= Big.PE)) { + s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e; + + // Normal notation. + } else if (e < 0) { + for (; ++e;) s = '0' + s; + s = '0.' + s; + } else if (e > 0) { + if (++e > n) for (e -= n; e--;) s += '0'; + else if (e < n) s = s.slice(0, e) + '.' + s.slice(e); + } else if (n > 1) { + s = s.charAt(0) + '.' + s.slice(1); + } + + return x.s < 0 && (!z || id == 4) ? '-' + s : s; +} + + +// Prototype/instance methods + + +/* + * Return a new Big whose value is the absolute value of this Big. + */ +P.abs = function () { + var x = new this.constructor(this); + x.s = 1; + return x; +}; + + +/* + * Return 1 if the value of this Big is greater than the value of Big y, + * -1 if the value of this Big is less than the value of Big y, or + * 0 if they have the same value. +*/ +P.cmp = function (y) { + var isneg, + x = this, + xc = x.c, + yc = (y = new x.constructor(y)).c, + i = x.s, + j = y.s, + k = x.e, + l = y.e; + + // Either zero? + if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i; + + // Signs differ? + if (i != j) return i; + + isneg = i < 0; + + // Compare exponents. + if (k != l) return k > l ^ isneg ? 1 : -1; + + j = (k = xc.length) < (l = yc.length) ? k : l; + + // Compare digit by digit. + for (i = -1; ++i < j;) { + if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1; + } + + // Compare lengths. + return k == l ? 0 : k > l ^ isneg ? 1 : -1; +}; + + +/* + * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded, + * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM. + */ +P.div = function (y) { + var x = this, + Big = x.constructor, + a = x.c, // dividend + b = (y = new Big(y)).c, // divisor + k = x.s == y.s ? 1 : -1, + dp = Big.DP; + + if (dp !== ~~dp || dp < 0 || dp > MAX_DP) throw Error(INVALID_DP); + + // Divisor is zero? + if (!b[0]) throw Error(DIV_BY_ZERO); + + // Dividend is 0? Return +-0. + if (!a[0]) return new Big(k * 0); + + var bl, bt, n, cmp, ri, + bz = b.slice(), + ai = bl = b.length, + al = a.length, + r = a.slice(0, bl), // remainder + rl = r.length, + q = y, // quotient + qc = q.c = [], + qi = 0, + d = dp + (q.e = x.e - y.e) + 1; // number of digits of the result + + q.s = k; + k = d < 0 ? 0 : d; + + // Create version of divisor with leading zero. + bz.unshift(0); + + // Add zeros to make remainder as long as divisor. + for (; rl++ < bl;) r.push(0); + + do { + + // n is how many times the divisor goes into current remainder. + for (n = 0; n < 10; n++) { + + // Compare divisor and remainder. + if (bl != (rl = r.length)) { + cmp = bl > rl ? 1 : -1; + } else { + for (ri = -1, cmp = 0; ++ri < bl;) { + if (b[ri] != r[ri]) { + cmp = b[ri] > r[ri] ? 1 : -1; + break; + } + } + } + + // If divisor < remainder, subtract divisor from remainder. + if (cmp < 0) { + + // Remainder can't be more than 1 digit longer than divisor. + // Equalise lengths using divisor with extra leading zero? + for (bt = rl == bl ? b : bz; rl;) { + if (r[--rl] < bt[rl]) { + ri = rl; + for (; ri && !r[--ri];) r[ri] = 9; + --r[ri]; + r[rl] += 10; + } + r[rl] -= bt[rl]; + } + + for (; !r[0];) r.shift(); + } else { + break; + } + } + + // Add the digit n to the result array. + qc[qi++] = cmp ? n : ++n; + + // Update the remainder. + if (r[0] && cmp) r[rl] = a[ai] || 0; + else r = [a[ai]]; + + } while ((ai++ < al || r[0] !== UNDEFINED) && k--); + + // Leading zero? Do not remove if result is simply zero (qi == 1). + if (!qc[0] && qi != 1) { + + // There can't be more than one zero. + qc.shift(); + q.e--; + } + + // Round? + if (qi > d) round(q, dp, Big.RM, r[0] !== UNDEFINED); + + return q; +}; + + +/* + * Return true if the value of this Big is equal to the value of Big y, otherwise return false. + */ +P.eq = function (y) { + return !this.cmp(y); +}; + + +/* + * Return true if the value of this Big is greater than the value of Big y, otherwise return + * false. + */ +P.gt = function (y) { + return this.cmp(y) > 0; +}; + + +/* + * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise + * return false. + */ +P.gte = function (y) { + return this.cmp(y) > -1; +}; + + +/* + * Return true if the value of this Big is less than the value of Big y, otherwise return false. + */ +P.lt = function (y) { + return this.cmp(y) < 0; +}; + + +/* + * Return true if the value of this Big is less than or equal to the value of Big y, otherwise + * return false. + */ +P.lte = function (y) { + return this.cmp(y) < 1; +}; + + +/* + * Return a new Big whose value is the value of this Big minus the value of Big y. + */ +P.minus = P.sub = function (y) { + var i, j, t, xlty, + x = this, + Big = x.constructor, + a = x.s, + b = (y = new Big(y)).s; + + // Signs differ? + if (a != b) { + y.s = -b; + return x.plus(y); + } + + var xc = x.c.slice(), + xe = x.e, + yc = y.c, + ye = y.e; + + // Either zero? + if (!xc[0] || !yc[0]) { + + // y is non-zero? x is non-zero? Or both are zero. + return yc[0] ? (y.s = -b, y) : new Big(xc[0] ? x : 0); + } + + // Determine which is the bigger number. Prepend zeros to equalise exponents. + if (a = xe - ye) { + + if (xlty = a < 0) { + a = -a; + t = xc; + } else { + ye = xe; + t = yc; + } + + t.reverse(); + for (b = a; b--;) t.push(0); + t.reverse(); + } else { + + // Exponents equal. Check digit by digit. + j = ((xlty = xc.length < yc.length) ? xc : yc).length; + + for (a = b = 0; b < j; b++) { + if (xc[b] != yc[b]) { + xlty = xc[b] < yc[b]; + break; + } + } + } + + // x < y? Point xc to the array of the bigger number. + if (xlty) { + t = xc; + xc = yc; + yc = t; + y.s = -y.s; + } + + /* + * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only + * needs to start at yc.length. + */ + if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0; + + // Subtract yc from xc. + for (b = i; j > a;) { + if (xc[--j] < yc[j]) { + for (i = j; i && !xc[--i];) xc[i] = 9; + --xc[i]; + xc[j] += 10; + } + + xc[j] -= yc[j]; + } + + // Remove trailing zeros. + for (; xc[--b] === 0;) xc.pop(); + + // Remove leading zeros and adjust exponent accordingly. + for (; xc[0] === 0;) { + xc.shift(); + --ye; + } + + if (!xc[0]) { + + // n - n = +0 + y.s = 1; + + // Result must be zero. + xc = [ye = 0]; + } + + y.c = xc; + y.e = ye; + + return y; +}; + + +/* + * Return a new Big whose value is the value of this Big modulo the value of Big y. + */ +P.mod = function (y) { + var ygtx, + x = this, + Big = x.constructor, + a = x.s, + b = (y = new Big(y)).s; + + if (!y.c[0]) throw Error(DIV_BY_ZERO); + + x.s = y.s = 1; + ygtx = y.cmp(x) == 1; + x.s = a; + y.s = b; + + if (ygtx) return new Big(x); + + a = Big.DP; + b = Big.RM; + Big.DP = Big.RM = 0; + x = x.div(y); + Big.DP = a; + Big.RM = b; + + return this.minus(x.times(y)); +}; + + +/* + * Return a new Big whose value is the value of this Big plus the value of Big y. + */ +P.plus = P.add = function (y) { + var t, + x = this, + Big = x.constructor, + a = x.s, + b = (y = new Big(y)).s; + + // Signs differ? + if (a != b) { + y.s = -b; + return x.minus(y); + } + + var xe = x.e, + xc = x.c, + ye = y.e, + yc = y.c; + + // Either zero? y is non-zero? x is non-zero? Or both are zero. + if (!xc[0] || !yc[0]) return yc[0] ? y : new Big(xc[0] ? x : a * 0); + + xc = xc.slice(); + + // Prepend zeros to equalise exponents. + // Note: reverse faster than unshifts. + if (a = xe - ye) { + if (a > 0) { + ye = xe; + t = yc; + } else { + a = -a; + t = xc; + } + + t.reverse(); + for (; a--;) t.push(0); + t.reverse(); + } + + // Point xc to the longer array. + if (xc.length - yc.length < 0) { + t = yc; + yc = xc; + xc = t; + } + + a = yc.length; + + // Only start adding at yc.length - 1 as the further digits of xc can be left as they are. + for (b = 0; a; xc[a] %= 10) b = (xc[--a] = xc[a] + yc[a] + b) / 10 | 0; + + // No need to check for zero, as +x + +y != 0 && -x + -y != 0 + + if (b) { + xc.unshift(b); + ++ye; + } + + // Remove trailing zeros. + for (a = xc.length; xc[--a] === 0;) xc.pop(); + + y.c = xc; + y.e = ye; + + return y; +}; + + +/* + * Return a Big whose value is the value of this Big raised to the power n. + * If n is negative, round to a maximum of Big.DP decimal places using rounding + * mode Big.RM. + * + * n {number} Integer, -MAX_POWER to MAX_POWER inclusive. + */ +P.pow = function (n) { + var x = this, + one = new x.constructor(1), + y = one, + isneg = n < 0; + + if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) throw Error(INVALID + 'exponent'); + if (isneg) n = -n; + + for (;;) { + if (n & 1) y = y.times(x); + n >>= 1; + if (!n) break; + x = x.times(x); + } + + return isneg ? one.div(y) : y; +}; + + +/* + * Return a new Big whose value is the value of this Big rounded using rounding mode rm + * to a maximum of dp decimal places, or, if dp is negative, to an integer which is a + * multiple of 10**-dp. + * If dp is not specified, round to 0 decimal places. + * If rm is not specified, use Big.RM. + * + * dp? {number} Integer, -MAX_DP to MAX_DP inclusive. + * rm? 0, 1, 2 or 3 (ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_UP) + */ +P.round = function (dp, rm) { + var Big = this.constructor; + if (dp === UNDEFINED) dp = 0; + else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) throw Error(INVALID_DP); + return round(new Big(this), dp, rm === UNDEFINED ? Big.RM : rm); +}; + + +/* + * Return a new Big whose value is the square root of the value of this Big, rounded, if + * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM. + */ +P.sqrt = function () { + var r, c, t, + x = this, + Big = x.constructor, + s = x.s, + e = x.e, + half = new Big(0.5); + + // Zero? + if (!x.c[0]) return new Big(x); + + // Negative? + if (s < 0) throw Error(NAME + 'No square root'); + + // Estimate. + s = Math.sqrt(x + ''); + + // Math.sqrt underflow/overflow? + // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent. + if (s === 0 || s === 1 / 0) { + c = x.c.join(''); + if (!(c.length + e & 1)) c += '0'; + s = Math.sqrt(c); + e = ((e + 1) / 2 | 0) - (e < 0 || e & 1); + r = new Big((s == 1 / 0 ? '1e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e); + } else { + r = new Big(s); + } + + e = r.e + (Big.DP += 4); + + // Newton-Raphson iteration. + do { + t = r; + r = half.times(t.plus(x.div(t))); + } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join('')); + + return round(r, Big.DP -= 4, Big.RM); +}; + + +/* + * Return a new Big whose value is the value of this Big times the value of Big y. + */ +P.times = P.mul = function (y) { + var c, + x = this, + Big = x.constructor, + xc = x.c, + yc = (y = new Big(y)).c, + a = xc.length, + b = yc.length, + i = x.e, + j = y.e; + + // Determine sign of result. + y.s = x.s == y.s ? 1 : -1; + + // Return signed 0 if either 0. + if (!xc[0] || !yc[0]) return new Big(y.s * 0); + + // Initialise exponent of result as x.e + y.e. + y.e = i + j; + + // If array xc has fewer digits than yc, swap xc and yc, and lengths. + if (a < b) { + c = xc; + xc = yc; + yc = c; + j = a; + a = b; + b = j; + } + + // Initialise coefficient array of result with zeros. + for (c = new Array(j = a + b); j--;) c[j] = 0; + + // Multiply. + + // i is initially xc.length. + for (i = b; i--;) { + b = 0; + + // a is yc.length. + for (j = a + i; j > i;) { + + // Current sum of products at this digit position, plus carry. + b = c[j] + yc[i] * xc[j - i - 1] + b; + c[j--] = b % 10; + + // carry + b = b / 10 | 0; + } + + c[j] = (c[j] + b) % 10; + } + + // Increment result exponent if there is a final carry, otherwise remove leading zero. + if (b) ++y.e; + else c.shift(); + + // Remove trailing zeros. + for (i = c.length; !c[--i];) c.pop(); + y.c = c; + + return y; +}; + + +/* + * Return a string representing the value of this Big in exponential notation to dp fixed decimal + * places and rounded using Big.RM. + * + * dp? {number} Integer, 0 to MAX_DP inclusive. + */ +P.toExponential = function (dp) { + return stringify(this, 1, dp, dp); +}; + + +/* + * Return a string representing the value of this Big in normal notation to dp fixed decimal + * places and rounded using Big.RM. + * + * dp? {number} Integer, 0 to MAX_DP inclusive. + * + * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'. + * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'. + */ +P.toFixed = function (dp) { + return stringify(this, 2, dp, this.e + dp); +}; + + +/* + * Return a string representing the value of this Big rounded to sd significant digits using + * Big.RM. Use exponential notation if sd is less than the number of digits necessary to represent + * the integer part of the value in normal notation. + * + * sd {number} Integer, 1 to MAX_DP inclusive. + */ +P.toPrecision = function (sd) { + return stringify(this, 3, sd, sd - 1); +}; + + +/* + * Return a string representing the value of this Big. + * Return exponential notation if this Big has a positive exponent equal to or greater than + * Big.PE, or a negative exponent equal to or less than Big.NE. + * Omit the sign for negative zero. + */ +P.toString = function () { + return stringify(this); +}; + + +/* + * Return a string representing the value of this Big. + * Return exponential notation if this Big has a positive exponent equal to or greater than + * Big.PE, or a negative exponent equal to or less than Big.NE. + * Include the sign for negative zero. + */ +P.valueOf = P.toJSON = function () { + return stringify(this, 4); +}; + + +// Export + + +export var Big = _Big_(); + +export default Big; diff --git a/node_modules/big.js/package.json b/node_modules/big.js/package.json new file mode 100644 index 00000000..92eafe49 --- /dev/null +++ b/node_modules/big.js/package.json @@ -0,0 +1,50 @@ +{ + "name": "big.js", + "description": "A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic", + "version": "5.2.2", + "keywords": [ + "arbitrary", + "precision", + "arithmetic", + "big", + "number", + "decimal", + "float", + "biginteger", + "bigdecimal", + "bignumber", + "bigint", + "bignum" + ], + "repository": { + "type": "git", + "url": "https://github.com/MikeMcl/big.js.git" + }, + "main": "big", + "browser": "big.js", + "module": "big.mjs", + "author": { + "name": "Michael Mclaughlin", + "email": "M8ch88l@gmail.com" + }, + "bugs": { + "url": "https://github.com/MikeMcl/big.js/issues" + }, + "engines": { + "node": "*" + }, + "license": "MIT", + "scripts": { + "test": "node ./test/every-test.js", + "build": "uglifyjs big.js --source-map -c -m -o big.min.js" + }, + "files": [ + "big.js", + "big.mjs", + "big.min.js" + ], + "collective": { + "type": "opencollective", + "url": "https://opencollective.com/bigjs" + } +} \ No newline at end of file diff --git a/node_modules/binary-extensions/binary-extensions.json b/node_modules/binary-extensions/binary-extensions.json new file mode 100644 index 00000000..4aab3837 --- /dev/null +++ b/node_modules/binary-extensions/binary-extensions.json @@ -0,0 +1,260 @@ +[ + "3dm", + "3ds", + "3g2", + "3gp", + "7z", + "a", + "aac", + "adp", + "ai", + "aif", + "aiff", + "alz", + "ape", + "apk", + "appimage", + "ar", + "arj", + "asf", + "au", + "avi", + "bak", + "baml", + "bh", + "bin", + "bk", + "bmp", + "btif", + "bz2", + "bzip2", + "cab", + "caf", + "cgm", + "class", + "cmx", + "cpio", + "cr2", + "cur", + "dat", + "dcm", + "deb", + "dex", + "djvu", + "dll", + "dmg", + "dng", + "doc", + "docm", + "docx", + "dot", + "dotm", + "dra", + "DS_Store", + "dsk", + "dts", + "dtshd", + "dvb", + "dwg", + "dxf", + "ecelp4800", + "ecelp7470", + "ecelp9600", + "egg", + "eol", + "eot", + "epub", + "exe", + "f4v", + "fbs", + "fh", + "fla", + "flac", + "flatpak", + "fli", + "flv", + "fpx", + "fst", + "fvt", + "g3", + "gh", + "gif", + "graffle", + "gz", + "gzip", + "h261", + "h263", + "h264", + "icns", + "ico", + "ief", + "img", + "ipa", + "iso", + "jar", + "jpeg", + "jpg", + "jpgv", + "jpm", + "jxr", + "key", + "ktx", + "lha", + "lib", + "lvp", + "lz", + "lzh", + "lzma", + "lzo", + "m3u", + "m4a", + "m4v", + "mar", + "mdi", + "mht", + "mid", + "midi", + "mj2", + "mka", + "mkv", + "mmr", + "mng", + "mobi", + "mov", + "movie", + "mp3", + "mp4", + "mp4a", + "mpeg", + "mpg", + "mpga", + "mxu", + "nef", + "npx", + "numbers", + "nupkg", + "o", + "odp", + "ods", + "odt", + "oga", + "ogg", + "ogv", + "otf", + "ott", + "pages", + "pbm", + "pcx", + "pdb", + "pdf", + "pea", + "pgm", + "pic", + "png", + "pnm", + "pot", + "potm", + "potx", + "ppa", + "ppam", + "ppm", + "pps", + "ppsm", + "ppsx", + "ppt", + "pptm", + "pptx", + "psd", + "pya", + "pyc", + "pyo", + "pyv", + "qt", + "rar", + "ras", + "raw", + "resources", + "rgb", + "rip", + "rlc", + "rmf", + "rmvb", + "rpm", + "rtf", + "rz", + "s3m", + "s7z", + "scpt", + "sgi", + "shar", + "snap", + "sil", + "sketch", + "slk", + "smv", + "snk", + "so", + "stl", + "suo", + "sub", + "swf", + "tar", + "tbz", + "tbz2", + "tga", + "tgz", + "thmx", + "tif", + "tiff", + "tlz", + "ttc", + "ttf", + "txz", + "udf", + "uvh", + "uvi", + "uvm", + "uvp", + "uvs", + "uvu", + "viv", + "vob", + "war", + "wav", + "wax", + "wbmp", + "wdp", + "weba", + "webm", + "webp", + "whl", + "wim", + "wm", + "wma", + "wmv", + "wmx", + "woff", + "woff2", + "wrm", + "wvx", + "xbm", + "xif", + "xla", + "xlam", + "xls", + "xlsb", + "xlsm", + "xlsx", + "xlt", + "xltm", + "xltx", + "xm", + "xmind", + "xpi", + "xpm", + "xwd", + "xz", + "z", + "zip", + "zipx" +] diff --git a/node_modules/binary-extensions/binary-extensions.json.d.ts b/node_modules/binary-extensions/binary-extensions.json.d.ts new file mode 100644 index 00000000..94a248c2 --- /dev/null +++ b/node_modules/binary-extensions/binary-extensions.json.d.ts @@ -0,0 +1,3 @@ +declare const binaryExtensionsJson: readonly string[]; + +export = binaryExtensionsJson; diff --git a/node_modules/binary-extensions/index.d.ts b/node_modules/binary-extensions/index.d.ts new file mode 100644 index 00000000..f469ac5f --- /dev/null +++ b/node_modules/binary-extensions/index.d.ts @@ -0,0 +1,14 @@ +/** +List of binary file extensions. + +@example +``` +import binaryExtensions = require('binary-extensions'); + +console.log(binaryExtensions); +//=> ['3ds', '3g2', …] +``` +*/ +declare const binaryExtensions: readonly string[]; + +export = binaryExtensions; diff --git a/node_modules/binary-extensions/index.js b/node_modules/binary-extensions/index.js new file mode 100644 index 00000000..d46e4688 --- /dev/null +++ b/node_modules/binary-extensions/index.js @@ -0,0 +1 @@ +module.exports = require('./binary-extensions.json'); diff --git a/node_modules/binary-extensions/license b/node_modules/binary-extensions/license new file mode 100644 index 00000000..401b1c73 --- /dev/null +++ b/node_modules/binary-extensions/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2019 Sindre Sorhus (https://sindresorhus.com), Paul Miller (https://paulmillr.com) + +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. diff --git a/node_modules/binary-extensions/package.json b/node_modules/binary-extensions/package.json new file mode 100644 index 00000000..c4d36417 --- /dev/null +++ b/node_modules/binary-extensions/package.json @@ -0,0 +1,38 @@ +{ + "name": "binary-extensions", + "version": "2.2.0", + "description": "List of binary file extensions", + "license": "MIT", + "repository": "sindresorhus/binary-extensions", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts", + "binary-extensions.json", + "binary-extensions.json.d.ts" + ], + "keywords": [ + "binary", + "extensions", + "extension", + "file", + "json", + "list", + "array" + ], + "devDependencies": { + "ava": "^1.4.1", + "tsd": "^0.7.2", + "xo": "^0.24.0" + } +} diff --git a/node_modules/binary-extensions/readme.md b/node_modules/binary-extensions/readme.md new file mode 100644 index 00000000..3e25dd83 --- /dev/null +++ b/node_modules/binary-extensions/readme.md @@ -0,0 +1,41 @@ +# binary-extensions + +> List of binary file extensions + +The list is just a [JSON file](binary-extensions.json) and can be used anywhere. + + +## Install + +``` +$ npm install binary-extensions +``` + + +## Usage + +```js +const binaryExtensions = require('binary-extensions'); + +console.log(binaryExtensions); +//=> ['3ds', '3g2', …] +``` + + +## Related + +- [is-binary-path](https://github.com/sindresorhus/is-binary-path) - Check if a filepath is a binary file +- [text-extensions](https://github.com/sindresorhus/text-extensions) - List of text file extensions + + +--- + +
+ + Get professional support for this package with a Tidelift subscription + +
+ + Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies. +
+
diff --git a/node_modules/body-parser/HISTORY.md b/node_modules/body-parser/HISTORY.md new file mode 100644 index 00000000..fb212b36 --- /dev/null +++ b/node_modules/body-parser/HISTORY.md @@ -0,0 +1,657 @@ +1.20.1 / 2022-10-06 +=================== + + * deps: qs@6.11.0 + * perf: remove unnecessary object clone + +1.20.0 / 2022-04-02 +=================== + + * Fix error message for json parse whitespace in `strict` + * Fix internal error when inflated body exceeds limit + * Prevent loss of async hooks context + * Prevent hanging when request already read + * deps: depd@2.0.0 + - Replace internal `eval` usage with `Function` constructor + - Use instance methods on `process` to check for listeners + * deps: http-errors@2.0.0 + - deps: depd@2.0.0 + - deps: statuses@2.0.1 + * deps: on-finished@2.4.1 + * deps: qs@6.10.3 + * deps: raw-body@2.5.1 + - deps: http-errors@2.0.0 + +1.19.2 / 2022-02-15 +=================== + + * deps: bytes@3.1.2 + * deps: qs@6.9.7 + * Fix handling of `__proto__` keys + * deps: raw-body@2.4.3 + - deps: bytes@3.1.2 + +1.19.1 / 2021-12-10 +=================== + + * deps: bytes@3.1.1 + * deps: http-errors@1.8.1 + - deps: inherits@2.0.4 + - deps: toidentifier@1.0.1 + - deps: setprototypeof@1.2.0 + * deps: qs@6.9.6 + * deps: raw-body@2.4.2 + - deps: bytes@3.1.1 + - deps: http-errors@1.8.1 + * deps: safe-buffer@5.2.1 + * deps: type-is@~1.6.18 + +1.19.0 / 2019-04-25 +=================== + + * deps: bytes@3.1.0 + - Add petabyte (`pb`) support + * deps: http-errors@1.7.2 + - Set constructor name when possible + - deps: setprototypeof@1.1.1 + - deps: statuses@'>= 1.5.0 < 2' + * deps: iconv-lite@0.4.24 + - Added encoding MIK + * deps: qs@6.7.0 + - Fix parsing array brackets after index + * deps: raw-body@2.4.0 + - deps: bytes@3.1.0 + - deps: http-errors@1.7.2 + - deps: iconv-lite@0.4.24 + * deps: type-is@~1.6.17 + - deps: mime-types@~2.1.24 + - perf: prevent internal `throw` on invalid type + +1.18.3 / 2018-05-14 +=================== + + * Fix stack trace for strict json parse error + * deps: depd@~1.1.2 + - perf: remove argument reassignment + * deps: http-errors@~1.6.3 + - deps: depd@~1.1.2 + - deps: setprototypeof@1.1.0 + - deps: statuses@'>= 1.3.1 < 2' + * deps: iconv-lite@0.4.23 + - Fix loading encoding with year appended + - Fix deprecation warnings on Node.js 10+ + * deps: qs@6.5.2 + * deps: raw-body@2.3.3 + - deps: http-errors@1.6.3 + - deps: iconv-lite@0.4.23 + * deps: type-is@~1.6.16 + - deps: mime-types@~2.1.18 + +1.18.2 / 2017-09-22 +=================== + + * deps: debug@2.6.9 + * perf: remove argument reassignment + +1.18.1 / 2017-09-12 +=================== + + * deps: content-type@~1.0.4 + - perf: remove argument reassignment + - perf: skip parameter parsing when no parameters + * deps: iconv-lite@0.4.19 + - Fix ISO-8859-1 regression + - Update Windows-1255 + * deps: qs@6.5.1 + - Fix parsing & compacting very deep objects + * deps: raw-body@2.3.2 + - deps: iconv-lite@0.4.19 + +1.18.0 / 2017-09-08 +=================== + + * Fix JSON strict violation error to match native parse error + * Include the `body` property on verify errors + * Include the `type` property on all generated errors + * Use `http-errors` to set status code on errors + * deps: bytes@3.0.0 + * deps: debug@2.6.8 + * deps: depd@~1.1.1 + - Remove unnecessary `Buffer` loading + * deps: http-errors@~1.6.2 + - deps: depd@1.1.1 + * deps: iconv-lite@0.4.18 + - Add support for React Native + - Add a warning if not loaded as utf-8 + - Fix CESU-8 decoding in Node.js 8 + - Improve speed of ISO-8859-1 encoding + * deps: qs@6.5.0 + * deps: raw-body@2.3.1 + - Use `http-errors` for standard emitted errors + - deps: bytes@3.0.0 + - deps: iconv-lite@0.4.18 + - perf: skip buffer decoding on overage chunk + * perf: prevent internal `throw` when missing charset + +1.17.2 / 2017-05-17 +=================== + + * deps: debug@2.6.7 + - Fix `DEBUG_MAX_ARRAY_LENGTH` + - deps: ms@2.0.0 + * deps: type-is@~1.6.15 + - deps: mime-types@~2.1.15 + +1.17.1 / 2017-03-06 +=================== + + * deps: qs@6.4.0 + - Fix regression parsing keys starting with `[` + +1.17.0 / 2017-03-01 +=================== + + * deps: http-errors@~1.6.1 + - Make `message` property enumerable for `HttpError`s + - deps: setprototypeof@1.0.3 + * deps: qs@6.3.1 + - Fix compacting nested arrays + +1.16.1 / 2017-02-10 +=================== + + * deps: debug@2.6.1 + - Fix deprecation messages in WebStorm and other editors + - Undeprecate `DEBUG_FD` set to `1` or `2` + +1.16.0 / 2017-01-17 +=================== + + * deps: debug@2.6.0 + - Allow colors in workers + - Deprecated `DEBUG_FD` environment variable + - Fix error when running under React Native + - Use same color for same namespace + - deps: ms@0.7.2 + * deps: http-errors@~1.5.1 + - deps: inherits@2.0.3 + - deps: setprototypeof@1.0.2 + - deps: statuses@'>= 1.3.1 < 2' + * deps: iconv-lite@0.4.15 + - Added encoding MS-31J + - Added encoding MS-932 + - Added encoding MS-936 + - Added encoding MS-949 + - Added encoding MS-950 + - Fix GBK/GB18030 handling of Euro character + * deps: qs@6.2.1 + - Fix array parsing from skipping empty values + * deps: raw-body@~2.2.0 + - deps: iconv-lite@0.4.15 + * deps: type-is@~1.6.14 + - deps: mime-types@~2.1.13 + +1.15.2 / 2016-06-19 +=================== + + * deps: bytes@2.4.0 + * deps: content-type@~1.0.2 + - perf: enable strict mode + * deps: http-errors@~1.5.0 + - Use `setprototypeof` module to replace `__proto__` setting + - deps: statuses@'>= 1.3.0 < 2' + - perf: enable strict mode + * deps: qs@6.2.0 + * deps: raw-body@~2.1.7 + - deps: bytes@2.4.0 + - perf: remove double-cleanup on happy path + * deps: type-is@~1.6.13 + - deps: mime-types@~2.1.11 + +1.15.1 / 2016-05-05 +=================== + + * deps: bytes@2.3.0 + - Drop partial bytes on all parsed units + - Fix parsing byte string that looks like hex + * deps: raw-body@~2.1.6 + - deps: bytes@2.3.0 + * deps: type-is@~1.6.12 + - deps: mime-types@~2.1.10 + +1.15.0 / 2016-02-10 +=================== + + * deps: http-errors@~1.4.0 + - Add `HttpError` export, for `err instanceof createError.HttpError` + - deps: inherits@2.0.1 + - deps: statuses@'>= 1.2.1 < 2' + * deps: qs@6.1.0 + * deps: type-is@~1.6.11 + - deps: mime-types@~2.1.9 + +1.14.2 / 2015-12-16 +=================== + + * deps: bytes@2.2.0 + * deps: iconv-lite@0.4.13 + * deps: qs@5.2.0 + * deps: raw-body@~2.1.5 + - deps: bytes@2.2.0 + - deps: iconv-lite@0.4.13 + * deps: type-is@~1.6.10 + - deps: mime-types@~2.1.8 + +1.14.1 / 2015-09-27 +=================== + + * Fix issue where invalid charset results in 400 when `verify` used + * deps: iconv-lite@0.4.12 + - Fix CESU-8 decoding in Node.js 4.x + * deps: raw-body@~2.1.4 + - Fix masking critical errors from `iconv-lite` + - deps: iconv-lite@0.4.12 + * deps: type-is@~1.6.9 + - deps: mime-types@~2.1.7 + +1.14.0 / 2015-09-16 +=================== + + * Fix JSON strict parse error to match syntax errors + * Provide static `require` analysis in `urlencoded` parser + * deps: depd@~1.1.0 + - Support web browser loading + * deps: qs@5.1.0 + * deps: raw-body@~2.1.3 + - Fix sync callback when attaching data listener causes sync read + * deps: type-is@~1.6.8 + - Fix type error when given invalid type to match against + - deps: mime-types@~2.1.6 + +1.13.3 / 2015-07-31 +=================== + + * deps: type-is@~1.6.6 + - deps: mime-types@~2.1.4 + +1.13.2 / 2015-07-05 +=================== + + * deps: iconv-lite@0.4.11 + * deps: qs@4.0.0 + - Fix dropping parameters like `hasOwnProperty` + - Fix user-visible incompatibilities from 3.1.0 + - Fix various parsing edge cases + * deps: raw-body@~2.1.2 + - Fix error stack traces to skip `makeError` + - deps: iconv-lite@0.4.11 + * deps: type-is@~1.6.4 + - deps: mime-types@~2.1.2 + - perf: enable strict mode + - perf: remove argument reassignment + +1.13.1 / 2015-06-16 +=================== + + * deps: qs@2.4.2 + - Downgraded from 3.1.0 because of user-visible incompatibilities + +1.13.0 / 2015-06-14 +=================== + + * Add `statusCode` property on `Error`s, in addition to `status` + * Change `type` default to `application/json` for JSON parser + * Change `type` default to `application/x-www-form-urlencoded` for urlencoded parser + * Provide static `require` analysis + * Use the `http-errors` module to generate errors + * deps: bytes@2.1.0 + - Slight optimizations + * deps: iconv-lite@0.4.10 + - The encoding UTF-16 without BOM now defaults to UTF-16LE when detection fails + - Leading BOM is now removed when decoding + * deps: on-finished@~2.3.0 + - Add defined behavior for HTTP `CONNECT` requests + - Add defined behavior for HTTP `Upgrade` requests + - deps: ee-first@1.1.1 + * deps: qs@3.1.0 + - Fix dropping parameters like `hasOwnProperty` + - Fix various parsing edge cases + - Parsed object now has `null` prototype + * deps: raw-body@~2.1.1 + - Use `unpipe` module for unpiping requests + - deps: iconv-lite@0.4.10 + * deps: type-is@~1.6.3 + - deps: mime-types@~2.1.1 + - perf: reduce try block size + - perf: remove bitwise operations + * perf: enable strict mode + * perf: remove argument reassignment + * perf: remove delete call + +1.12.4 / 2015-05-10 +=================== + + * deps: debug@~2.2.0 + * deps: qs@2.4.2 + - Fix allowing parameters like `constructor` + * deps: on-finished@~2.2.1 + * deps: raw-body@~2.0.1 + - Fix a false-positive when unpiping in Node.js 0.8 + - deps: bytes@2.0.1 + * deps: type-is@~1.6.2 + - deps: mime-types@~2.0.11 + +1.12.3 / 2015-04-15 +=================== + + * Slight efficiency improvement when not debugging + * deps: depd@~1.0.1 + * deps: iconv-lite@0.4.8 + - Add encoding alias UNICODE-1-1-UTF-7 + * deps: raw-body@1.3.4 + - Fix hanging callback if request aborts during read + - deps: iconv-lite@0.4.8 + +1.12.2 / 2015-03-16 +=================== + + * deps: qs@2.4.1 + - Fix error when parameter `hasOwnProperty` is present + +1.12.1 / 2015-03-15 +=================== + + * deps: debug@~2.1.3 + - Fix high intensity foreground color for bold + - deps: ms@0.7.0 + * deps: type-is@~1.6.1 + - deps: mime-types@~2.0.10 + +1.12.0 / 2015-02-13 +=================== + + * add `debug` messages + * accept a function for the `type` option + * use `content-type` to parse `Content-Type` headers + * deps: iconv-lite@0.4.7 + - Gracefully support enumerables on `Object.prototype` + * deps: raw-body@1.3.3 + - deps: iconv-lite@0.4.7 + * deps: type-is@~1.6.0 + - fix argument reassignment + - fix false-positives in `hasBody` `Transfer-Encoding` check + - support wildcard for both type and subtype (`*/*`) + - deps: mime-types@~2.0.9 + +1.11.0 / 2015-01-30 +=================== + + * make internal `extended: true` depth limit infinity + * deps: type-is@~1.5.6 + - deps: mime-types@~2.0.8 + +1.10.2 / 2015-01-20 +=================== + + * deps: iconv-lite@0.4.6 + - Fix rare aliases of single-byte encodings + * deps: raw-body@1.3.2 + - deps: iconv-lite@0.4.6 + +1.10.1 / 2015-01-01 +=================== + + * deps: on-finished@~2.2.0 + * deps: type-is@~1.5.5 + - deps: mime-types@~2.0.7 + +1.10.0 / 2014-12-02 +=================== + + * make internal `extended: true` array limit dynamic + +1.9.3 / 2014-11-21 +================== + + * deps: iconv-lite@0.4.5 + - Fix Windows-31J and X-SJIS encoding support + * deps: qs@2.3.3 + - Fix `arrayLimit` behavior + * deps: raw-body@1.3.1 + - deps: iconv-lite@0.4.5 + * deps: type-is@~1.5.3 + - deps: mime-types@~2.0.3 + +1.9.2 / 2014-10-27 +================== + + * deps: qs@2.3.2 + - Fix parsing of mixed objects and values + +1.9.1 / 2014-10-22 +================== + + * deps: on-finished@~2.1.1 + - Fix handling of pipelined requests + * deps: qs@2.3.0 + - Fix parsing of mixed implicit and explicit arrays + * deps: type-is@~1.5.2 + - deps: mime-types@~2.0.2 + +1.9.0 / 2014-09-24 +================== + + * include the charset in "unsupported charset" error message + * include the encoding in "unsupported content encoding" error message + * deps: depd@~1.0.0 + +1.8.4 / 2014-09-23 +================== + + * fix content encoding to be case-insensitive + +1.8.3 / 2014-09-19 +================== + + * deps: qs@2.2.4 + - Fix issue with object keys starting with numbers truncated + +1.8.2 / 2014-09-15 +================== + + * deps: depd@0.4.5 + +1.8.1 / 2014-09-07 +================== + + * deps: media-typer@0.3.0 + * deps: type-is@~1.5.1 + +1.8.0 / 2014-09-05 +================== + + * make empty-body-handling consistent between chunked requests + - empty `json` produces `{}` + - empty `raw` produces `new Buffer(0)` + - empty `text` produces `''` + - empty `urlencoded` produces `{}` + * deps: qs@2.2.3 + - Fix issue where first empty value in array is discarded + * deps: type-is@~1.5.0 + - fix `hasbody` to be true for `content-length: 0` + +1.7.0 / 2014-09-01 +================== + + * add `parameterLimit` option to `urlencoded` parser + * change `urlencoded` extended array limit to 100 + * respond with 413 when over `parameterLimit` in `urlencoded` + +1.6.7 / 2014-08-29 +================== + + * deps: qs@2.2.2 + - Remove unnecessary cloning + +1.6.6 / 2014-08-27 +================== + + * deps: qs@2.2.0 + - Array parsing fix + - Performance improvements + +1.6.5 / 2014-08-16 +================== + + * deps: on-finished@2.1.0 + +1.6.4 / 2014-08-14 +================== + + * deps: qs@1.2.2 + +1.6.3 / 2014-08-10 +================== + + * deps: qs@1.2.1 + +1.6.2 / 2014-08-07 +================== + + * deps: qs@1.2.0 + - Fix parsing array of objects + +1.6.1 / 2014-08-06 +================== + + * deps: qs@1.1.0 + - Accept urlencoded square brackets + - Accept empty values in implicit array notation + +1.6.0 / 2014-08-05 +================== + + * deps: qs@1.0.2 + - Complete rewrite + - Limits array length to 20 + - Limits object depth to 5 + - Limits parameters to 1,000 + +1.5.2 / 2014-07-27 +================== + + * deps: depd@0.4.4 + - Work-around v8 generating empty stack traces + +1.5.1 / 2014-07-26 +================== + + * deps: depd@0.4.3 + - Fix exception when global `Error.stackTraceLimit` is too low + +1.5.0 / 2014-07-20 +================== + + * deps: depd@0.4.2 + - Add `TRACE_DEPRECATION` environment variable + - Remove non-standard grey color from color output + - Support `--no-deprecation` argument + - Support `--trace-deprecation` argument + * deps: iconv-lite@0.4.4 + - Added encoding UTF-7 + * deps: raw-body@1.3.0 + - deps: iconv-lite@0.4.4 + - Added encoding UTF-7 + - Fix `Cannot switch to old mode now` error on Node.js 0.10+ + * deps: type-is@~1.3.2 + +1.4.3 / 2014-06-19 +================== + + * deps: type-is@1.3.1 + - fix global variable leak + +1.4.2 / 2014-06-19 +================== + + * deps: type-is@1.3.0 + - improve type parsing + +1.4.1 / 2014-06-19 +================== + + * fix urlencoded extended deprecation message + +1.4.0 / 2014-06-19 +================== + + * add `text` parser + * add `raw` parser + * check accepted charset in content-type (accepts utf-8) + * check accepted encoding in content-encoding (accepts identity) + * deprecate `bodyParser()` middleware; use `.json()` and `.urlencoded()` as needed + * deprecate `urlencoded()` without provided `extended` option + * lazy-load urlencoded parsers + * parsers split into files for reduced mem usage + * support gzip and deflate bodies + - set `inflate: false` to turn off + * deps: raw-body@1.2.2 + - Support all encodings from `iconv-lite` + +1.3.1 / 2014-06-11 +================== + + * deps: type-is@1.2.1 + - Switch dependency from mime to mime-types@1.0.0 + +1.3.0 / 2014-05-31 +================== + + * add `extended` option to urlencoded parser + +1.2.2 / 2014-05-27 +================== + + * deps: raw-body@1.1.6 + - assert stream encoding on node.js 0.8 + - assert stream encoding on node.js < 0.10.6 + - deps: bytes@1 + +1.2.1 / 2014-05-26 +================== + + * invoke `next(err)` after request fully read + - prevents hung responses and socket hang ups + +1.2.0 / 2014-05-11 +================== + + * add `verify` option + * deps: type-is@1.2.0 + - support suffix matching + +1.1.2 / 2014-05-11 +================== + + * improve json parser speed + +1.1.1 / 2014-05-11 +================== + + * fix repeated limit parsing with every request + +1.1.0 / 2014-05-10 +================== + + * add `type` option + * deps: pin for safety and consistency + +1.0.2 / 2014-04-14 +================== + + * use `type-is` module + +1.0.1 / 2014-03-20 +================== + + * lower default limits to 100kb diff --git a/node_modules/body-parser/LICENSE b/node_modules/body-parser/LICENSE new file mode 100644 index 00000000..386b7b69 --- /dev/null +++ b/node_modules/body-parser/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2014-2015 Douglas Christopher Wilson + +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. diff --git a/node_modules/body-parser/README.md b/node_modules/body-parser/README.md new file mode 100644 index 00000000..c507cbb0 --- /dev/null +++ b/node_modules/body-parser/README.md @@ -0,0 +1,464 @@ +# body-parser + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Build Status][github-actions-ci-image]][github-actions-ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Node.js body parsing middleware. + +Parse incoming request bodies in a middleware before your handlers, available +under the `req.body` property. + +**Note** As `req.body`'s shape is based on user-controlled input, all +properties and values in this object are untrusted and should be validated +before trusting. For example, `req.body.foo.toString()` may fail in multiple +ways, for example the `foo` property may not be there or may not be a string, +and `toString` may not be a function and instead a string or other user input. + +[Learn about the anatomy of an HTTP transaction in Node.js](https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/). + +_This does not handle multipart bodies_, due to their complex and typically +large nature. For multipart bodies, you may be interested in the following +modules: + + * [busboy](https://www.npmjs.org/package/busboy#readme) and + [connect-busboy](https://www.npmjs.org/package/connect-busboy#readme) + * [multiparty](https://www.npmjs.org/package/multiparty#readme) and + [connect-multiparty](https://www.npmjs.org/package/connect-multiparty#readme) + * [formidable](https://www.npmjs.org/package/formidable#readme) + * [multer](https://www.npmjs.org/package/multer#readme) + +This module provides the following parsers: + + * [JSON body parser](#bodyparserjsonoptions) + * [Raw body parser](#bodyparserrawoptions) + * [Text body parser](#bodyparsertextoptions) + * [URL-encoded form body parser](#bodyparserurlencodedoptions) + +Other body parsers you might be interested in: + +- [body](https://www.npmjs.org/package/body#readme) +- [co-body](https://www.npmjs.org/package/co-body#readme) + +## Installation + +```sh +$ npm install body-parser +``` + +## API + +```js +var bodyParser = require('body-parser') +``` + +The `bodyParser` object exposes various factories to create middlewares. All +middlewares will populate the `req.body` property with the parsed body when +the `Content-Type` request header matches the `type` option, or an empty +object (`{}`) if there was no body to parse, the `Content-Type` was not matched, +or an error occurred. + +The various errors returned by this module are described in the +[errors section](#errors). + +### bodyParser.json([options]) + +Returns middleware that only parses `json` and only looks at requests where +the `Content-Type` header matches the `type` option. This parser accepts any +Unicode encoding of the body and supports automatic inflation of `gzip` and +`deflate` encodings. + +A new `body` object containing the parsed data is populated on the `request` +object after the middleware (i.e. `req.body`). + +#### Options + +The `json` function takes an optional `options` object that may contain any of +the following keys: + +##### inflate + +When set to `true`, then deflated (compressed) bodies will be inflated; when +`false`, deflated bodies are rejected. Defaults to `true`. + +##### limit + +Controls the maximum request body size. If this is a number, then the value +specifies the number of bytes; if it is a string, the value is passed to the +[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults +to `'100kb'`. + +##### reviver + +The `reviver` option is passed directly to `JSON.parse` as the second +argument. You can find more information on this argument +[in the MDN documentation about JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Example.3A_Using_the_reviver_parameter). + +##### strict + +When set to `true`, will only accept arrays and objects; when `false` will +accept anything `JSON.parse` accepts. Defaults to `true`. + +##### type + +The `type` option is used to determine what media type the middleware will +parse. This option can be a string, array of strings, or a function. If not a +function, `type` option is passed directly to the +[type-is](https://www.npmjs.org/package/type-is#readme) library and this can +be an extension name (like `json`), a mime type (like `application/json`), or +a mime type with a wildcard (like `*/*` or `*/json`). If a function, the `type` +option is called as `fn(req)` and the request is parsed if it returns a truthy +value. Defaults to `application/json`. + +##### verify + +The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, +where `buf` is a `Buffer` of the raw request body and `encoding` is the +encoding of the request. The parsing can be aborted by throwing an error. + +### bodyParser.raw([options]) + +Returns middleware that parses all bodies as a `Buffer` and only looks at +requests where the `Content-Type` header matches the `type` option. This +parser supports automatic inflation of `gzip` and `deflate` encodings. + +A new `body` object containing the parsed data is populated on the `request` +object after the middleware (i.e. `req.body`). This will be a `Buffer` object +of the body. + +#### Options + +The `raw` function takes an optional `options` object that may contain any of +the following keys: + +##### inflate + +When set to `true`, then deflated (compressed) bodies will be inflated; when +`false`, deflated bodies are rejected. Defaults to `true`. + +##### limit + +Controls the maximum request body size. If this is a number, then the value +specifies the number of bytes; if it is a string, the value is passed to the +[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults +to `'100kb'`. + +##### type + +The `type` option is used to determine what media type the middleware will +parse. This option can be a string, array of strings, or a function. +If not a function, `type` option is passed directly to the +[type-is](https://www.npmjs.org/package/type-is#readme) library and this +can be an extension name (like `bin`), a mime type (like +`application/octet-stream`), or a mime type with a wildcard (like `*/*` or +`application/*`). If a function, the `type` option is called as `fn(req)` +and the request is parsed if it returns a truthy value. Defaults to +`application/octet-stream`. + +##### verify + +The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, +where `buf` is a `Buffer` of the raw request body and `encoding` is the +encoding of the request. The parsing can be aborted by throwing an error. + +### bodyParser.text([options]) + +Returns middleware that parses all bodies as a string and only looks at +requests where the `Content-Type` header matches the `type` option. This +parser supports automatic inflation of `gzip` and `deflate` encodings. + +A new `body` string containing the parsed data is populated on the `request` +object after the middleware (i.e. `req.body`). This will be a string of the +body. + +#### Options + +The `text` function takes an optional `options` object that may contain any of +the following keys: + +##### defaultCharset + +Specify the default character set for the text content if the charset is not +specified in the `Content-Type` header of the request. Defaults to `utf-8`. + +##### inflate + +When set to `true`, then deflated (compressed) bodies will be inflated; when +`false`, deflated bodies are rejected. Defaults to `true`. + +##### limit + +Controls the maximum request body size. If this is a number, then the value +specifies the number of bytes; if it is a string, the value is passed to the +[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults +to `'100kb'`. + +##### type + +The `type` option is used to determine what media type the middleware will +parse. This option can be a string, array of strings, or a function. If not +a function, `type` option is passed directly to the +[type-is](https://www.npmjs.org/package/type-is#readme) library and this can +be an extension name (like `txt`), a mime type (like `text/plain`), or a mime +type with a wildcard (like `*/*` or `text/*`). If a function, the `type` +option is called as `fn(req)` and the request is parsed if it returns a +truthy value. Defaults to `text/plain`. + +##### verify + +The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, +where `buf` is a `Buffer` of the raw request body and `encoding` is the +encoding of the request. The parsing can be aborted by throwing an error. + +### bodyParser.urlencoded([options]) + +Returns middleware that only parses `urlencoded` bodies and only looks at +requests where the `Content-Type` header matches the `type` option. This +parser accepts only UTF-8 encoding of the body and supports automatic +inflation of `gzip` and `deflate` encodings. + +A new `body` object containing the parsed data is populated on the `request` +object after the middleware (i.e. `req.body`). This object will contain +key-value pairs, where the value can be a string or array (when `extended` is +`false`), or any type (when `extended` is `true`). + +#### Options + +The `urlencoded` function takes an optional `options` object that may contain +any of the following keys: + +##### extended + +The `extended` option allows to choose between parsing the URL-encoded data +with the `querystring` library (when `false`) or the `qs` library (when +`true`). The "extended" syntax allows for rich objects and arrays to be +encoded into the URL-encoded format, allowing for a JSON-like experience +with URL-encoded. For more information, please +[see the qs library](https://www.npmjs.org/package/qs#readme). + +Defaults to `true`, but using the default has been deprecated. Please +research into the difference between `qs` and `querystring` and choose the +appropriate setting. + +##### inflate + +When set to `true`, then deflated (compressed) bodies will be inflated; when +`false`, deflated bodies are rejected. Defaults to `true`. + +##### limit + +Controls the maximum request body size. If this is a number, then the value +specifies the number of bytes; if it is a string, the value is passed to the +[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults +to `'100kb'`. + +##### parameterLimit + +The `parameterLimit` option controls the maximum number of parameters that +are allowed in the URL-encoded data. If a request contains more parameters +than this value, a 413 will be returned to the client. Defaults to `1000`. + +##### type + +The `type` option is used to determine what media type the middleware will +parse. This option can be a string, array of strings, or a function. If not +a function, `type` option is passed directly to the +[type-is](https://www.npmjs.org/package/type-is#readme) library and this can +be an extension name (like `urlencoded`), a mime type (like +`application/x-www-form-urlencoded`), or a mime type with a wildcard (like +`*/x-www-form-urlencoded`). If a function, the `type` option is called as +`fn(req)` and the request is parsed if it returns a truthy value. Defaults +to `application/x-www-form-urlencoded`. + +##### verify + +The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, +where `buf` is a `Buffer` of the raw request body and `encoding` is the +encoding of the request. The parsing can be aborted by throwing an error. + +## Errors + +The middlewares provided by this module create errors using the +[`http-errors` module](https://www.npmjs.com/package/http-errors). The errors +will typically have a `status`/`statusCode` property that contains the suggested +HTTP response code, an `expose` property to determine if the `message` property +should be displayed to the client, a `type` property to determine the type of +error without matching against the `message`, and a `body` property containing +the read body, if available. + +The following are the common errors created, though any error can come through +for various reasons. + +### content encoding unsupported + +This error will occur when the request had a `Content-Encoding` header that +contained an encoding but the "inflation" option was set to `false`. The +`status` property is set to `415`, the `type` property is set to +`'encoding.unsupported'`, and the `charset` property will be set to the +encoding that is unsupported. + +### entity parse failed + +This error will occur when the request contained an entity that could not be +parsed by the middleware. The `status` property is set to `400`, the `type` +property is set to `'entity.parse.failed'`, and the `body` property is set to +the entity value that failed parsing. + +### entity verify failed + +This error will occur when the request contained an entity that could not be +failed verification by the defined `verify` option. The `status` property is +set to `403`, the `type` property is set to `'entity.verify.failed'`, and the +`body` property is set to the entity value that failed verification. + +### request aborted + +This error will occur when the request is aborted by the client before reading +the body has finished. The `received` property will be set to the number of +bytes received before the request was aborted and the `expected` property is +set to the number of expected bytes. The `status` property is set to `400` +and `type` property is set to `'request.aborted'`. + +### request entity too large + +This error will occur when the request body's size is larger than the "limit" +option. The `limit` property will be set to the byte limit and the `length` +property will be set to the request body's length. The `status` property is +set to `413` and the `type` property is set to `'entity.too.large'`. + +### request size did not match content length + +This error will occur when the request's length did not match the length from +the `Content-Length` header. This typically occurs when the request is malformed, +typically when the `Content-Length` header was calculated based on characters +instead of bytes. The `status` property is set to `400` and the `type` property +is set to `'request.size.invalid'`. + +### stream encoding should not be set + +This error will occur when something called the `req.setEncoding` method prior +to this middleware. This module operates directly on bytes only and you cannot +call `req.setEncoding` when using this module. The `status` property is set to +`500` and the `type` property is set to `'stream.encoding.set'`. + +### stream is not readable + +This error will occur when the request is no longer readable when this middleware +attempts to read it. This typically means something other than a middleware from +this module read the request body already and the middleware was also configured to +read the same request. The `status` property is set to `500` and the `type` +property is set to `'stream.not.readable'`. + +### too many parameters + +This error will occur when the content of the request exceeds the configured +`parameterLimit` for the `urlencoded` parser. The `status` property is set to +`413` and the `type` property is set to `'parameters.too.many'`. + +### unsupported charset "BOGUS" + +This error will occur when the request had a charset parameter in the +`Content-Type` header, but the `iconv-lite` module does not support it OR the +parser does not support it. The charset is contained in the message as well +as in the `charset` property. The `status` property is set to `415`, the +`type` property is set to `'charset.unsupported'`, and the `charset` property +is set to the charset that is unsupported. + +### unsupported content encoding "bogus" + +This error will occur when the request had a `Content-Encoding` header that +contained an unsupported encoding. The encoding is contained in the message +as well as in the `encoding` property. The `status` property is set to `415`, +the `type` property is set to `'encoding.unsupported'`, and the `encoding` +property is set to the encoding that is unsupported. + +## Examples + +### Express/Connect top-level generic + +This example demonstrates adding a generic JSON and URL-encoded parser as a +top-level middleware, which will parse the bodies of all incoming requests. +This is the simplest setup. + +```js +var express = require('express') +var bodyParser = require('body-parser') + +var app = express() + +// parse application/x-www-form-urlencoded +app.use(bodyParser.urlencoded({ extended: false })) + +// parse application/json +app.use(bodyParser.json()) + +app.use(function (req, res) { + res.setHeader('Content-Type', 'text/plain') + res.write('you posted:\n') + res.end(JSON.stringify(req.body, null, 2)) +}) +``` + +### Express route-specific + +This example demonstrates adding body parsers specifically to the routes that +need them. In general, this is the most recommended way to use body-parser with +Express. + +```js +var express = require('express') +var bodyParser = require('body-parser') + +var app = express() + +// create application/json parser +var jsonParser = bodyParser.json() + +// create application/x-www-form-urlencoded parser +var urlencodedParser = bodyParser.urlencoded({ extended: false }) + +// POST /login gets urlencoded bodies +app.post('/login', urlencodedParser, function (req, res) { + res.send('welcome, ' + req.body.username) +}) + +// POST /api/users gets JSON bodies +app.post('/api/users', jsonParser, function (req, res) { + // create user in req.body +}) +``` + +### Change accepted type for parsers + +All the parsers accept a `type` option which allows you to change the +`Content-Type` that the middleware will parse. + +```js +var express = require('express') +var bodyParser = require('body-parser') + +var app = express() + +// parse various different custom JSON types as JSON +app.use(bodyParser.json({ type: 'application/*+json' })) + +// parse some custom thing into a Buffer +app.use(bodyParser.raw({ type: 'application/vnd.custom-type' })) + +// parse an HTML body into a string +app.use(bodyParser.text({ type: 'text/html' })) +``` + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/body-parser.svg +[npm-url]: https://npmjs.org/package/body-parser +[coveralls-image]: https://img.shields.io/coveralls/expressjs/body-parser/master.svg +[coveralls-url]: https://coveralls.io/r/expressjs/body-parser?branch=master +[downloads-image]: https://img.shields.io/npm/dm/body-parser.svg +[downloads-url]: https://npmjs.org/package/body-parser +[github-actions-ci-image]: https://img.shields.io/github/workflow/status/expressjs/body-parser/ci/master?label=ci +[github-actions-ci-url]: https://github.com/expressjs/body-parser/actions/workflows/ci.yml diff --git a/node_modules/body-parser/SECURITY.md b/node_modules/body-parser/SECURITY.md new file mode 100644 index 00000000..9694d429 --- /dev/null +++ b/node_modules/body-parser/SECURITY.md @@ -0,0 +1,25 @@ +# Security Policies and Procedures + +## Reporting a Bug + +The Express team and community take all security bugs seriously. Thank you +for improving the security of Express. We appreciate your efforts and +responsible disclosure and will make every effort to acknowledge your +contributions. + +Report security bugs by emailing the current owner(s) of `body-parser`. This +information can be found in the npm registry using the command +`npm owner ls body-parser`. +If unsure or unable to get the information from the above, open an issue +in the [project issue tracker](https://github.com/expressjs/body-parser/issues) +asking for the current contact information. + +To ensure the timely response to your report, please ensure that the entirety +of the report is contained within the email body and not solely behind a web +link or an attachment. + +At least one owner will acknowledge your email within 48 hours, and will send a +more detailed response within 48 hours indicating the next steps in handling +your report. After the initial reply to your report, the owners will +endeavor to keep you informed of the progress towards a fix and full +announcement, and may ask for additional information or guidance. diff --git a/node_modules/body-parser/index.js b/node_modules/body-parser/index.js new file mode 100644 index 00000000..bb24d739 --- /dev/null +++ b/node_modules/body-parser/index.js @@ -0,0 +1,156 @@ +/*! + * body-parser + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var deprecate = require('depd')('body-parser') + +/** + * Cache of loaded parsers. + * @private + */ + +var parsers = Object.create(null) + +/** + * @typedef Parsers + * @type {function} + * @property {function} json + * @property {function} raw + * @property {function} text + * @property {function} urlencoded + */ + +/** + * Module exports. + * @type {Parsers} + */ + +exports = module.exports = deprecate.function(bodyParser, + 'bodyParser: use individual json/urlencoded middlewares') + +/** + * JSON parser. + * @public + */ + +Object.defineProperty(exports, 'json', { + configurable: true, + enumerable: true, + get: createParserGetter('json') +}) + +/** + * Raw parser. + * @public + */ + +Object.defineProperty(exports, 'raw', { + configurable: true, + enumerable: true, + get: createParserGetter('raw') +}) + +/** + * Text parser. + * @public + */ + +Object.defineProperty(exports, 'text', { + configurable: true, + enumerable: true, + get: createParserGetter('text') +}) + +/** + * URL-encoded parser. + * @public + */ + +Object.defineProperty(exports, 'urlencoded', { + configurable: true, + enumerable: true, + get: createParserGetter('urlencoded') +}) + +/** + * Create a middleware to parse json and urlencoded bodies. + * + * @param {object} [options] + * @return {function} + * @deprecated + * @public + */ + +function bodyParser (options) { + // use default type for parsers + var opts = Object.create(options || null, { + type: { + configurable: true, + enumerable: true, + value: undefined, + writable: true + } + }) + + var _urlencoded = exports.urlencoded(opts) + var _json = exports.json(opts) + + return function bodyParser (req, res, next) { + _json(req, res, function (err) { + if (err) return next(err) + _urlencoded(req, res, next) + }) + } +} + +/** + * Create a getter for loading a parser. + * @private + */ + +function createParserGetter (name) { + return function get () { + return loadParser(name) + } +} + +/** + * Load a parser module. + * @private + */ + +function loadParser (parserName) { + var parser = parsers[parserName] + + if (parser !== undefined) { + return parser + } + + // this uses a switch for static require analysis + switch (parserName) { + case 'json': + parser = require('./lib/types/json') + break + case 'raw': + parser = require('./lib/types/raw') + break + case 'text': + parser = require('./lib/types/text') + break + case 'urlencoded': + parser = require('./lib/types/urlencoded') + break + } + + // store to prevent invoking require() + return (parsers[parserName] = parser) +} diff --git a/node_modules/body-parser/node_modules/bytes/History.md b/node_modules/body-parser/node_modules/bytes/History.md new file mode 100644 index 00000000..d60ce0e6 --- /dev/null +++ b/node_modules/body-parser/node_modules/bytes/History.md @@ -0,0 +1,97 @@ +3.1.2 / 2022-01-27 +================== + + * Fix return value for un-parsable strings + +3.1.1 / 2021-11-15 +================== + + * Fix "thousandsSeparator" incorrecting formatting fractional part + +3.1.0 / 2019-01-22 +================== + + * Add petabyte (`pb`) support + +3.0.0 / 2017-08-31 +================== + + * Change "kB" to "KB" in format output + * Remove support for Node.js 0.6 + * Remove support for ComponentJS + +2.5.0 / 2017-03-24 +================== + + * Add option "unit" + +2.4.0 / 2016-06-01 +================== + + * Add option "unitSeparator" + +2.3.0 / 2016-02-15 +================== + + * Drop partial bytes on all parsed units + * Fix non-finite numbers to `.format` to return `null` + * Fix parsing byte string that looks like hex + * perf: hoist regular expressions + +2.2.0 / 2015-11-13 +================== + + * add option "decimalPlaces" + * add option "fixedDecimals" + +2.1.0 / 2015-05-21 +================== + + * add `.format` export + * add `.parse` export + +2.0.2 / 2015-05-20 +================== + + * remove map recreation + * remove unnecessary object construction + +2.0.1 / 2015-05-07 +================== + + * fix browserify require + * remove node.extend dependency + +2.0.0 / 2015-04-12 +================== + + * add option "case" + * add option "thousandsSeparator" + * return "null" on invalid parse input + * support proper round-trip: bytes(bytes(num)) === num + * units no longer case sensitive when parsing + +1.0.0 / 2014-05-05 +================== + + * add negative support. fixes #6 + +0.3.0 / 2014-03-19 +================== + + * added terabyte support + +0.2.1 / 2013-04-01 +================== + + * add .component + +0.2.0 / 2012-10-28 +================== + + * bytes(200).should.eql('200b') + +0.1.0 / 2012-07-04 +================== + + * add bytes to string conversion [yields] diff --git a/node_modules/body-parser/node_modules/bytes/LICENSE b/node_modules/body-parser/node_modules/bytes/LICENSE new file mode 100644 index 00000000..63e95a96 --- /dev/null +++ b/node_modules/body-parser/node_modules/bytes/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2012-2014 TJ Holowaychuk +Copyright (c) 2015 Jed Watson + +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. diff --git a/node_modules/body-parser/node_modules/bytes/Readme.md b/node_modules/body-parser/node_modules/bytes/Readme.md new file mode 100644 index 00000000..5790e23e --- /dev/null +++ b/node_modules/body-parser/node_modules/bytes/Readme.md @@ -0,0 +1,152 @@ +# Bytes utility + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Utility to parse a string bytes (ex: `1TB`) to bytes (`1099511627776`) and vice-versa. + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```bash +$ npm install bytes +``` + +## Usage + +```js +var bytes = require('bytes'); +``` + +#### bytes(number|string value, [options]): number|string|null + +Default export function. Delegates to either `bytes.format` or `bytes.parse` based on the type of `value`. + +**Arguments** + +| Name | Type | Description | +|---------|----------|--------------------| +| value | `number`|`string` | Number value to format or string value to parse | +| options | `Object` | Conversion options for `format` | + +**Returns** + +| Name | Type | Description | +|---------|------------------|-------------------------------------------------| +| results | `string`|`number`|`null` | Return null upon error. Numeric value in bytes, or string value otherwise. | + +**Example** + +```js +bytes(1024); +// output: '1KB' + +bytes('1KB'); +// output: 1024 +``` + +#### bytes.format(number value, [options]): string|null + +Format the given value in bytes into a string. If the value is negative, it is kept as such. If it is a float, it is + rounded. + +**Arguments** + +| Name | Type | Description | +|---------|----------|--------------------| +| value | `number` | Value in bytes | +| options | `Object` | Conversion options | + +**Options** + +| Property | Type | Description | +|-------------------|--------|-----------------------------------------------------------------------------------------| +| decimalPlaces | `number`|`null` | Maximum number of decimal places to include in output. Default value to `2`. | +| fixedDecimals | `boolean`|`null` | Whether to always display the maximum number of decimal places. Default value to `false` | +| thousandsSeparator | `string`|`null` | Example of values: `' '`, `','` and `'.'`... Default value to `''`. | +| unit | `string`|`null` | The unit in which the result will be returned (B/KB/MB/GB/TB). Default value to `''` (which means auto detect). | +| unitSeparator | `string`|`null` | Separator to use between number and unit. Default value to `''`. | + +**Returns** + +| Name | Type | Description | +|---------|------------------|-------------------------------------------------| +| results | `string`|`null` | Return null upon error. String value otherwise. | + +**Example** + +```js +bytes.format(1024); +// output: '1KB' + +bytes.format(1000); +// output: '1000B' + +bytes.format(1000, {thousandsSeparator: ' '}); +// output: '1 000B' + +bytes.format(1024 * 1.7, {decimalPlaces: 0}); +// output: '2KB' + +bytes.format(1024, {unitSeparator: ' '}); +// output: '1 KB' +``` + +#### bytes.parse(string|number value): number|null + +Parse the string value into an integer in bytes. If no unit is given, or `value` +is a number, it is assumed the value is in bytes. + +Supported units and abbreviations are as follows and are case-insensitive: + + * `b` for bytes + * `kb` for kilobytes + * `mb` for megabytes + * `gb` for gigabytes + * `tb` for terabytes + * `pb` for petabytes + +The units are in powers of two, not ten. This means 1kb = 1024b according to this parser. + +**Arguments** + +| Name | Type | Description | +|---------------|--------|--------------------| +| value | `string`|`number` | String to parse, or number in bytes. | + +**Returns** + +| Name | Type | Description | +|---------|-------------|-------------------------| +| results | `number`|`null` | Return null upon error. Value in bytes otherwise. | + +**Example** + +```js +bytes.parse('1KB'); +// output: 1024 + +bytes.parse('1024'); +// output: 1024 + +bytes.parse(1024); +// output: 1024 +``` + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/visionmedia/bytes.js/master?label=ci +[ci-url]: https://github.com/visionmedia/bytes.js/actions?query=workflow%3Aci +[coveralls-image]: https://badgen.net/coveralls/c/github/visionmedia/bytes.js/master +[coveralls-url]: https://coveralls.io/r/visionmedia/bytes.js?branch=master +[downloads-image]: https://badgen.net/npm/dm/bytes +[downloads-url]: https://npmjs.org/package/bytes +[npm-image]: https://badgen.net/npm/v/bytes +[npm-url]: https://npmjs.org/package/bytes diff --git a/node_modules/body-parser/node_modules/bytes/index.js b/node_modules/body-parser/node_modules/bytes/index.js new file mode 100644 index 00000000..6f2d0f89 --- /dev/null +++ b/node_modules/body-parser/node_modules/bytes/index.js @@ -0,0 +1,170 @@ +/*! + * bytes + * Copyright(c) 2012-2014 TJ Holowaychuk + * Copyright(c) 2015 Jed Watson + * MIT Licensed + */ + +'use strict'; + +/** + * Module exports. + * @public + */ + +module.exports = bytes; +module.exports.format = format; +module.exports.parse = parse; + +/** + * Module variables. + * @private + */ + +var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g; + +var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/; + +var map = { + b: 1, + kb: 1 << 10, + mb: 1 << 20, + gb: 1 << 30, + tb: Math.pow(1024, 4), + pb: Math.pow(1024, 5), +}; + +var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i; + +/** + * Convert the given value in bytes into a string or parse to string to an integer in bytes. + * + * @param {string|number} value + * @param {{ + * case: [string], + * decimalPlaces: [number] + * fixedDecimals: [boolean] + * thousandsSeparator: [string] + * unitSeparator: [string] + * }} [options] bytes options. + * + * @returns {string|number|null} + */ + +function bytes(value, options) { + if (typeof value === 'string') { + return parse(value); + } + + if (typeof value === 'number') { + return format(value, options); + } + + return null; +} + +/** + * Format the given value in bytes into a string. + * + * If the value is negative, it is kept as such. If it is a float, + * it is rounded. + * + * @param {number} value + * @param {object} [options] + * @param {number} [options.decimalPlaces=2] + * @param {number} [options.fixedDecimals=false] + * @param {string} [options.thousandsSeparator=] + * @param {string} [options.unit=] + * @param {string} [options.unitSeparator=] + * + * @returns {string|null} + * @public + */ + +function format(value, options) { + if (!Number.isFinite(value)) { + return null; + } + + var mag = Math.abs(value); + var thousandsSeparator = (options && options.thousandsSeparator) || ''; + var unitSeparator = (options && options.unitSeparator) || ''; + var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2; + var fixedDecimals = Boolean(options && options.fixedDecimals); + var unit = (options && options.unit) || ''; + + if (!unit || !map[unit.toLowerCase()]) { + if (mag >= map.pb) { + unit = 'PB'; + } else if (mag >= map.tb) { + unit = 'TB'; + } else if (mag >= map.gb) { + unit = 'GB'; + } else if (mag >= map.mb) { + unit = 'MB'; + } else if (mag >= map.kb) { + unit = 'KB'; + } else { + unit = 'B'; + } + } + + var val = value / map[unit.toLowerCase()]; + var str = val.toFixed(decimalPlaces); + + if (!fixedDecimals) { + str = str.replace(formatDecimalsRegExp, '$1'); + } + + if (thousandsSeparator) { + str = str.split('.').map(function (s, i) { + return i === 0 + ? s.replace(formatThousandsRegExp, thousandsSeparator) + : s + }).join('.'); + } + + return str + unitSeparator + unit; +} + +/** + * Parse the string value into an integer in bytes. + * + * If no unit is given, it is assumed the value is in bytes. + * + * @param {number|string} val + * + * @returns {number|null} + * @public + */ + +function parse(val) { + if (typeof val === 'number' && !isNaN(val)) { + return val; + } + + if (typeof val !== 'string') { + return null; + } + + // Test if the string passed is valid + var results = parseRegExp.exec(val); + var floatValue; + var unit = 'b'; + + if (!results) { + // Nothing could be extracted from the given string + floatValue = parseInt(val, 10); + unit = 'b' + } else { + // Retrieve the value and the unit + floatValue = parseFloat(results[1]); + unit = results[4].toLowerCase(); + } + + if (isNaN(floatValue)) { + return null; + } + + return Math.floor(map[unit] * floatValue); +} diff --git a/node_modules/body-parser/node_modules/bytes/package.json b/node_modules/body-parser/node_modules/bytes/package.json new file mode 100644 index 00000000..f2b6a8b0 --- /dev/null +++ b/node_modules/body-parser/node_modules/bytes/package.json @@ -0,0 +1,42 @@ +{ + "name": "bytes", + "description": "Utility to parse a string bytes to bytes and vice-versa", + "version": "3.1.2", + "author": "TJ Holowaychuk (http://tjholowaychuk.com)", + "contributors": [ + "Jed Watson ", + "Théo FIDRY " + ], + "license": "MIT", + "keywords": [ + "byte", + "bytes", + "utility", + "parse", + "parser", + "convert", + "converter" + ], + "repository": "visionmedia/bytes.js", + "devDependencies": { + "eslint": "7.32.0", + "eslint-plugin-markdown": "2.2.1", + "mocha": "9.2.0", + "nyc": "15.1.0" + }, + "files": [ + "History.md", + "LICENSE", + "Readme.md", + "index.js" + ], + "engines": { + "node": ">= 0.8" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --check-leaks --reporter spec", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/node_modules/body-parser/package.json b/node_modules/body-parser/package.json new file mode 100644 index 00000000..9cd2ccbb --- /dev/null +++ b/node_modules/body-parser/package.json @@ -0,0 +1,56 @@ +{ + "name": "body-parser", + "description": "Node.js body parsing middleware", + "version": "1.20.1", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)" + ], + "license": "MIT", + "repository": "expressjs/body-parser", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "devDependencies": { + "eslint": "8.24.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-markdown": "3.0.0", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "6.0.1", + "eslint-plugin-standard": "4.1.0", + "methods": "1.1.2", + "mocha": "10.0.0", + "nyc": "15.1.0", + "safe-buffer": "5.2.1", + "supertest": "6.3.0" + }, + "files": [ + "lib/", + "LICENSE", + "HISTORY.md", + "SECURITY.md", + "index.js" + ], + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --require test/support/env --reporter spec --check-leaks --bail test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/node_modules/bonjour-service/LICENSE b/node_modules/bonjour-service/LICENSE new file mode 100644 index 00000000..cdb72f16 --- /dev/null +++ b/node_modules/bonjour-service/LICENSE @@ -0,0 +1,23 @@ +The MIT License (MIT) + +Copyright (https://github.com/onlxltd/bonjour-service) (c) 2021 ON LX Limited + +Portions Copyright (Bonjour - https://github.com/watson/bonjour) (c) 2015-2016 Thomas Watson Steen + +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. diff --git a/node_modules/bonjour-service/README.md b/node_modules/bonjour-service/README.md new file mode 100644 index 00000000..50b0ddf9 --- /dev/null +++ b/node_modules/bonjour-service/README.md @@ -0,0 +1,195 @@ +# bonjour-service + +![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/onlxltd/bonjour-service/publish-release.yml?style=flat-square) ![npm bundle size](https://img.shields.io/bundlephobia/min/bonjour-service?style=flat-square) ![GitHub Release Date](https://img.shields.io/github/release-date/onlxltd/bonjour-service?style=flat-square) ![npm](https://img.shields.io/npm/dw/bonjour-service?color=%23888&style=flat-square) ![GitHub](https://img.shields.io/github/license/onlxltd/bonjour-service?style=flat-square) [![DeepScan grade](https://deepscan.io/api/teams/13435/projects/16430/branches/352351/badge/grade.svg?style=flat-square)](https://deepscan.io/dashboard#view=project&tid=13435&pid=16430&bid=352351) + +A Bonjour/Zeroconf protocol implementation in TypeScript. Publish +services on the local network or discover existing services using +multicast DNS. + +This is a rewrite of the project Bonjour (https://github.com/watson/bonjour) into modern TypeScript. + + + +## Installation +Add to your project dependencies using Yarn or NPM. + +#### Install with Yarn +``` +yarn add bonjour-service +``` +#### Install with NPM +``` +npm install bonjour-service +``` + +## Usage + +```js +import Bonjour from 'bonjour-service' + +const instance = new Bonjour() + +// advertise an HTTP server on port 3000 +instance.publish({ name: 'My Web Server', type: 'http', port: 3000 }) + +// browse for all http services +instance.find({ type: 'http' }, function (service) { + console.log('Found an HTTP server:', service) +}) +``` + +## API + +### Initializing + +```js +var instance = new Bonjour({ options }, errorCallback) +``` + +The `options` are optional and will be used when initializing the +underlying multicast-dns server. For details see [the multicast-dns +documentation](https://github.com/mafintosh/multicast-dns#mdns--multicastdnsoptions). + +`errorCallback` is an optional callback used to gracefully handle errors that would otherwise +crash the process. While not being strictly required, providing this is highly recommended + +### Publishing + +#### `var service = bonjour.publish(options)` + +Publishes a new service. + +Options are: + +- `name` (string) +- `host` (string, optional) - defaults to local hostname +- `port` (number) +- `type` (string) +- `subtypes` (array of strings, optional) +- `protocol` (string, optional) - `udp` or `tcp` (default) +- `txt` (object, optional) - a key/value object to broadcast as the TXT + record + +IANA maintains a [list of official service types and port +numbers](http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml). + +#### `bonjour.unpublishAll([callback])` + +Unpublish all services. The optional `callback` will be called when the +services have been unpublished. + +#### `bonjour.destroy()` + +Destroy the mdns instance. Closes the udp socket. + +### Browser + +#### `var browser = bonjour.find(options[, onup])` + +Listen for services advertised on the network. An optional callback can +be provided as the 2nd argument and will be added as an event listener +for the `up` event. + +Options (all optional): + +- `type` (string) +- `subtypes` (array of strings) +- `protocol` (string) - defaults to `tcp` +- `txt` (object) - passed into [dns-txt + module](https://github.com/watson/dns-txt) contructor. Set to `{ + binary: true }` if you want to keep the TXT records in binary + +#### `var browser = bonjour.findOne(options[, callback])` + +Listen for and call the `callback` with the first instance of a service +matching the `options`. If no `callback` is given, it's expected that +you listen for the `up` event. The returned `browser` will automatically +stop it self after the first matching service. + +Options are the same as given in the `browser.find` function. + +#### `Event: up` + +Emitted every time a new service is found that matches the browser. + +#### `Event: down` + +Emitted every time an existing service emmits a goodbye message. + +#### `browser.services()` + +An array of services known by the browser to be online. + +#### `browser.start()` + +Start looking for matching services. + +#### `browser.stop()` + +Stop looking for matching services. + +#### `browser.update()` + +Broadcast the query again. + +### Service + +#### `Event: up` + +Emitted when the service is up. + +#### `Event: error` + +Emitted if an error occurrs while publishing the service. + +#### `service.stop([callback])` + +Unpublish the service. The optional `callback` will be called when the +service have been unpublished. + +#### `service.start()` + +Publish the service. + +#### `service.name` + +The name of the service, e.g. `Apple TV`. + +#### `service.type` + +The type of the service, e.g. `http`. + +#### `service.subtypes` + +An array of subtypes. Note that this property might be `null`. + +#### `service.protocol` + +The protocol used by the service, e.g. `tcp`. + +#### `service.host` + +The hostname or ip address where the service resides. + +#### `service.port` + +The port on which the service listens, e.g. `5000`. + +#### `service.fqdn` + +The fully qualified domain name of the service. E.g. if given the name +`Foo Bar`, the type `http` and the protocol `tcp`, the `service.fqdn` +property will be `Foo Bar._http._tcp.local`. + +#### `service.txt` + +The TXT record advertised by the service (a key/value object). Note that +this property might be `null`. + +#### `service.published` + +A boolean indicating if the service is currently published. + +## License + +MIT diff --git a/node_modules/bonjour-service/node_modules/.bin/multicast-dns b/node_modules/bonjour-service/node_modules/.bin/multicast-dns new file mode 120000 index 00000000..d849d5eb --- /dev/null +++ b/node_modules/bonjour-service/node_modules/.bin/multicast-dns @@ -0,0 +1 @@ +../../../multicast-dns/cli.js \ No newline at end of file diff --git a/node_modules/bonjour-service/node_modules/array-flatten/LICENSE b/node_modules/bonjour-service/node_modules/array-flatten/LICENSE new file mode 100644 index 00000000..983fbe8a --- /dev/null +++ b/node_modules/bonjour-service/node_modules/array-flatten/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +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. diff --git a/node_modules/bonjour-service/node_modules/array-flatten/README.md b/node_modules/bonjour-service/node_modules/array-flatten/README.md new file mode 100644 index 00000000..4c4588ee --- /dev/null +++ b/node_modules/bonjour-service/node_modules/array-flatten/README.md @@ -0,0 +1,50 @@ +# Array Flatten + +[![NPM version][npm-image]][npm-url] +[![NPM downloads][downloads-image]][downloads-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] + +> Flatten nested arrays. + +## Installation + +``` +npm install array-flatten --save +``` + +## Usage + +```javascript +var flatten = require('array-flatten') + +flatten([1, [2, [3, [4, [5], 6], 7], 8], 9]) +//=> [1, 2, 3, 4, 5, 6, 7, 8, 9] + +flatten.depth([1, [2, [3, [4, [5], 6], 7], 8], 9], 2) +//=> [1, 2, 3, [4, [5], 6], 7, 8, 9] + +(function () { + flatten.from(arguments) //=> [1, 2, 3] +})(1, [2, 3]) +``` + +### Methods + +* **flatten(array)** Flatten a nested array structure +* **flatten.from(arrayish)** Flatten an array-like structure (E.g. arguments) +* **flatten.depth(array, depth)** Flatten a nested array structure with a specific depth +* **flatten.fromDepth(arrayish, depth)** Flatten an array-like structure with a specific depth + +## License + +MIT + +[npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat +[npm-url]: https://npmjs.org/package/array-flatten +[downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat +[downloads-url]: https://npmjs.org/package/array-flatten +[travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat +[travis-url]: https://travis-ci.org/blakeembrey/array-flatten +[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat +[coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master diff --git a/node_modules/bonjour-service/node_modules/array-flatten/array-flatten.d.ts b/node_modules/bonjour-service/node_modules/array-flatten/array-flatten.d.ts new file mode 100644 index 00000000..5fb9e3c1 --- /dev/null +++ b/node_modules/bonjour-service/node_modules/array-flatten/array-flatten.d.ts @@ -0,0 +1,16 @@ +declare function flatten (array: flatten.NestedArray): T[]; + +declare namespace flatten { + export interface NestedArray extends ReadonlyArray> {} + + export interface NestedList { + [index: number]: T | NestedList; + length: number; + } + + export function from (array: NestedList): T[]; + export function depth (array: NestedArray, depth: number): NestedArray; + export function depthFrom (array: NestedList, depth: number): NestedArray; +} + +export = flatten; diff --git a/node_modules/bonjour-service/node_modules/array-flatten/array-flatten.js b/node_modules/bonjour-service/node_modules/array-flatten/array-flatten.js new file mode 100644 index 00000000..a624fca5 --- /dev/null +++ b/node_modules/bonjour-service/node_modules/array-flatten/array-flatten.js @@ -0,0 +1,108 @@ +'use strict' + +/** + * Expose `arrayFlatten`. + */ +module.exports = flatten +module.exports.from = flattenFrom +module.exports.depth = flattenDepth +module.exports.fromDepth = flattenFromDepth + +/** + * Flatten an array. + * + * @param {Array} array + * @return {Array} + */ +function flatten (array) { + if (!Array.isArray(array)) { + throw new TypeError('Expected value to be an array') + } + + return flattenFrom(array) +} + +/** + * Flatten an array-like structure. + * + * @param {Array} array + * @return {Array} + */ +function flattenFrom (array) { + return flattenDown(array, []) +} + +/** + * Flatten an array-like structure with depth. + * + * @param {Array} array + * @param {number} depth + * @return {Array} + */ +function flattenDepth (array, depth) { + if (!Array.isArray(array)) { + throw new TypeError('Expected value to be an array') + } + + return flattenFromDepth(array, depth) +} + +/** + * Flatten an array-like structure with depth. + * + * @param {Array} array + * @param {number} depth + * @return {Array} + */ +function flattenFromDepth (array, depth) { + if (typeof depth !== 'number') { + throw new TypeError('Expected the depth to be a number') + } + + return flattenDownDepth(array, [], depth) +} + +/** + * Flatten an array indefinitely. + * + * @param {Array} array + * @param {Array} result + * @return {Array} + */ +function flattenDown (array, result) { + for (var i = 0; i < array.length; i++) { + var value = array[i] + + if (Array.isArray(value)) { + flattenDown(value, result) + } else { + result.push(value) + } + } + + return result +} + +/** + * Flatten an array with depth. + * + * @param {Array} array + * @param {Array} result + * @param {number} depth + * @return {Array} + */ +function flattenDownDepth (array, result, depth) { + depth-- + + for (var i = 0; i < array.length; i++) { + var value = array[i] + + if (depth > -1 && Array.isArray(value)) { + flattenDownDepth(value, result, depth) + } else { + result.push(value) + } + } + + return result +} diff --git a/node_modules/bonjour-service/node_modules/array-flatten/package.json b/node_modules/bonjour-service/node_modules/array-flatten/package.json new file mode 100644 index 00000000..985b24d8 --- /dev/null +++ b/node_modules/bonjour-service/node_modules/array-flatten/package.json @@ -0,0 +1,47 @@ +{ + "name": "array-flatten", + "version": "2.1.2", + "description": "Flatten nested arrays", + "main": "array-flatten.js", + "typings": "array-flatten.d.ts", + "files": [ + "array-flatten.js", + "array-flatten.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-spec": "mocha -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov", + "benchmark": "node benchmark" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/array-flatten.git" + }, + "keywords": [ + "array", + "flatten", + "arguments", + "depth", + "fast", + "for" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/array-flatten/issues" + }, + "homepage": "https://github.com/blakeembrey/array-flatten", + "devDependencies": { + "benchmarked": "^2.0.0", + "istanbul": "^0.4.0", + "mocha": "^3.1.2", + "standard": "^10.0.0" + } +} diff --git a/node_modules/bonjour-service/package.json b/node_modules/bonjour-service/package.json new file mode 100644 index 00000000..85c84c62 --- /dev/null +++ b/node_modules/bonjour-service/package.json @@ -0,0 +1,53 @@ +{ + "name": "bonjour-service", + "version": "1.1.1", + "description": "A Bonjour/Zeroconf implementation in TypeScript", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + }, + "devDependencies": { + "@types/node": "^16.18.11", + "@typescript-eslint/eslint-plugin": "^5.22.0", + "@typescript-eslint/parser": "^5.22.0", + "after-all": "^2.0.2", + "eslint": "^8.15.0", + "standard": "^17.0.0", + "tape": "^5.2.2", + "ts-node-dev": "^2.0.0", + "typescript": "^4.4.4" + }, + "scripts": { + "test": "standard --fix && tape test/*.js", + "build": "tsc --removeComments true", + "dev": "ts-node-dev --respawn --transpile-only ./src/index.ts", + "example:simple": "node examples/simple" + }, + "repository": { + "type": "git", + "url": "https://github.com/onlxltd/bonjour-service.git" + }, + "keywords": [ + "bonjour", + "zeroconf", + "zero", + "configuration", + "mdns", + "dns", + "service", + "discovery", + "multicast", + "broadcast", + "dns-sd" + ], + "author": "ON LX Lited (https://labs.onlx.ltd)", + "license": "MIT", + "bugs": { + "url": "https://github.com/onlxltd/bonjour-service/issues" + }, + "homepage": "https://github.com/onlxltd/bonjour-service" +} diff --git a/node_modules/bonjour-service/types/dns-equal.d.ts b/node_modules/bonjour-service/types/dns-equal.d.ts new file mode 100644 index 00000000..a0fd8c5b --- /dev/null +++ b/node_modules/bonjour-service/types/dns-equal.d.ts @@ -0,0 +1,4 @@ +declare module 'dns-equal' { + function equal(a: string, b: string): boolean + export = equal +} \ No newline at end of file diff --git a/node_modules/bonjour-service/types/multicast-dns.d.ts b/node_modules/bonjour-service/types/multicast-dns.d.ts new file mode 100644 index 00000000..fa1d3bcb --- /dev/null +++ b/node_modules/bonjour-service/types/multicast-dns.d.ts @@ -0,0 +1,4 @@ +declare module 'multicast-dns' { + function init(opts: any) + export = init +} \ No newline at end of file diff --git a/node_modules/boolbase/README.md b/node_modules/boolbase/README.md new file mode 100644 index 00000000..85eefa5e --- /dev/null +++ b/node_modules/boolbase/README.md @@ -0,0 +1,10 @@ +#boolbase +This very simple module provides two basic functions, one that always returns true (`trueFunc`) and one that always returns false (`falseFunc`). + +###WTF? + +By having only a single instance of these functions around, it's possible to do some nice optimizations. Eg. [`CSSselect`](https://github.com/fb55/CSSselect) uses these functions to determine whether a selector won't match any elements. If that's the case, the DOM doesn't even have to be touched. + +###And why is this a separate module? + +I'm trying to modularize `CSSselect` and most modules depend on these functions. IMHO, having a separate module is the easiest solution to this problem. \ No newline at end of file diff --git a/node_modules/boolbase/index.js b/node_modules/boolbase/index.js new file mode 100644 index 00000000..8799fd95 --- /dev/null +++ b/node_modules/boolbase/index.js @@ -0,0 +1,8 @@ +module.exports = { + trueFunc: function trueFunc(){ + return true; + }, + falseFunc: function falseFunc(){ + return false; + } +}; \ No newline at end of file diff --git a/node_modules/boolbase/package.json b/node_modules/boolbase/package.json new file mode 100644 index 00000000..78330a8f --- /dev/null +++ b/node_modules/boolbase/package.json @@ -0,0 +1,23 @@ +{ + "name": "boolbase", + "version": "1.0.0", + "description": "two functions: One that returns true, one that returns false", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "https://github.com/fb55/boolbase" + }, + "keywords": [ + "boolean", + "function" + ], + "author": "Felix Boehm ", + "license": "ISC", + "bugs": { + "url": "https://github.com/fb55/boolbase/issues" + }, + "homepage": "https://github.com/fb55/boolbase" +} diff --git a/node_modules/boxen/index.d.ts b/node_modules/boxen/index.d.ts new file mode 100644 index 00000000..cbf7924a --- /dev/null +++ b/node_modules/boxen/index.d.ts @@ -0,0 +1,225 @@ +import {LiteralUnion} from 'type-fest'; +import {BoxStyle, Boxes} from 'cli-boxes'; + +/** +Characters used for custom border. + +@example +``` +// attttb +// l r +// dbbbbc + +const border: CustomBorderStyle = { + topLeft: 'a', + topRight: 'b', + bottomRight: 'c', + bottomLeft: 'd', + left: 'l', + right: 'r', + top: 't', + bottom: 'b', +}; +``` +*/ +export interface CustomBorderStyle extends BoxStyle { + /** + @deprecated Use `top` and `bottom` instead. + */ + horizontal?: string; + + /** + @deprecated Use `left` and `right` instead. + */ + vertical?: string; +} + +/** +Spacing used for `padding` and `margin`. +*/ +export interface Spacing { + readonly top: number; + readonly right: number; + readonly bottom: number; + readonly left: number; +} + +export interface Options { + /** + Color of the box border. + */ + readonly borderColor?: LiteralUnion< + | 'black' + | 'red' + | 'green' + | 'yellow' + | 'blue' + | 'magenta' + | 'cyan' + | 'white' + | 'gray' + | 'grey' + | 'blackBright' + | 'redBright' + | 'greenBright' + | 'yellowBright' + | 'blueBright' + | 'magentaBright' + | 'cyanBright' + | 'whiteBright', + string + >; + + /** + Style of the box border. + + @default 'single' + */ + readonly borderStyle?: keyof Boxes | CustomBorderStyle; + + /** + Reduce opacity of the border. + + @default false + */ + readonly dimBorder?: boolean; + + /** + Space between the text and box border. + + @default 0 + */ + readonly padding?: number | Spacing; + + /** + Space around the box. + + @default 0 + */ + readonly margin?: number | Spacing; + + /** + Float the box on the available terminal screen space. + + @default 'left' + */ + readonly float?: 'left' | 'right' | 'center'; + + /** + Color of the background. + */ + readonly backgroundColor?: LiteralUnion< + | 'black' + | 'red' + | 'green' + | 'yellow' + | 'blue' + | 'magenta' + | 'cyan' + | 'white' + | 'blackBright' + | 'redBright' + | 'greenBright' + | 'yellowBright' + | 'blueBright' + | 'magentaBright' + | 'cyanBright' + | 'whiteBright', + string + >; + + /** + Align the text in the box based on the widest line. + + @default 'left' + @deprecated Use `textAlignment` instead. + */ + readonly align?: 'left' | 'right' | 'center'; + + /** + Align the text in the box based on the widest line. + + @default 'left' + */ + readonly textAlignment?: 'left' | 'right' | 'center'; + + /** + Display a title at the top of the box. + If needed, the box will horizontally expand to fit the title. + + @example + ``` + console.log(boxen('foo bar', {title: 'example'})); + // ┌ example ┐ + // │foo bar │ + // └─────────┘ + ``` + */ + readonly title?: string; + + /** + Align the title in the top bar. + + @default 'left' + + @example + ``` + console.log(boxen('foo bar foo bar', {title: 'example', titleAlignment: 'center'})); + // ┌─── example ───┐ + // │foo bar foo bar│ + // └───────────────┘ + + console.log(boxen('foo bar foo bar', {title: 'example', titleAlignment: 'right'})); + // ┌────── example ┐ + // │foo bar foo bar│ + // └───────────────┘ + ``` + */ + readonly titleAlignment?: 'left' | 'right' | 'center'; + + /** + Set a fixed width for the box. + + **Note*: This disables terminal overflow handling and may cause the box to look broken if the user's terminal is not wide enough. + + @example + ``` + import boxen from 'boxen'; + + console.log(boxen('foo bar', {width: 15})); + // ┌─────────────┐ + // │foo bar │ + // └─────────────┘ + ``` + */ + readonly width?: number; +} + +/** +Creates a box in the terminal. + +@param text - The text inside the box. +@returns The box. + +@example +``` +import boxen from 'boxen'; + +console.log(boxen('unicorn', {padding: 1})); +// ┌─────────────┐ +// │ │ +// │ unicorn │ +// │ │ +// └─────────────┘ + +console.log(boxen('unicorn', {padding: 1, margin: 1, borderStyle: 'double'})); +// +// ╔═════════════╗ +// ║ ║ +// ║ unicorn ║ +// ║ ║ +// ╚═════════════╝ +// +``` +*/ +export default function boxen(text: string, options?: Options): string; diff --git a/node_modules/boxen/index.js b/node_modules/boxen/index.js new file mode 100644 index 00000000..ff98256a --- /dev/null +++ b/node_modules/boxen/index.js @@ -0,0 +1,323 @@ +import process from 'node:process'; +import stringWidth from 'string-width'; +import chalk from 'chalk'; +import widestLine from 'widest-line'; +import cliBoxes from 'cli-boxes'; +import camelCase from 'camelcase'; +import ansiAlign from 'ansi-align'; +import wrapAnsi from 'wrap-ansi'; + +const NEWLINE = '\n'; +const PAD = ' '; +const BORDERS_WIDTH = 2; + +const terminalColumns = () => { + const {env, stdout, stderr} = process; + + if (stdout && stdout.columns) { + return stdout.columns; + } + + if (stderr && stderr.columns) { + return stderr.columns; + } + + if (env.COLUMNS) { + return Number.parseInt(env.COLUMNS, 10); + } + + return 80; +}; + +const getObject = detail => typeof detail === 'number' ? { + top: detail, + right: detail * 3, + bottom: detail, + left: detail * 3, +} : { + top: 0, + right: 0, + bottom: 0, + left: 0, + ...detail, +}; + +const getBorderChars = borderStyle => { + const sides = [ + 'topLeft', + 'topRight', + 'bottomRight', + 'bottomLeft', + 'left', + 'right', + 'top', + 'bottom', + ]; + + let characters; + + if (typeof borderStyle === 'string') { + characters = cliBoxes[borderStyle]; + + if (!characters) { + throw new TypeError(`Invalid border style: ${borderStyle}`); + } + } else { + // Ensure retro-compatibility + if (borderStyle.vertical && typeof borderStyle.vertical === 'string') { + borderStyle.left = borderStyle.vertical; + borderStyle.right = borderStyle.vertical; + } + + // Ensure retro-compatibility + if (borderStyle.horizontal && typeof borderStyle.horizontal === 'string') { + borderStyle.top = borderStyle.horizontal; + borderStyle.bottom = borderStyle.horizontal; + } + + for (const side of sides) { + if (!borderStyle[side] || typeof borderStyle[side] !== 'string') { + throw new TypeError(`Invalid border style: ${side}`); + } + } + + characters = borderStyle; + } + + return characters; +}; + +const makeTitle = (text, horizontal, alignement) => { + let title = ''; + + const textWidth = stringWidth(text); + + switch (alignement) { + case 'left': + title = text + horizontal.slice(textWidth); + break; + case 'right': + title = horizontal.slice(textWidth) + text; + break; + default: + horizontal = horizontal.slice(textWidth); + + if (horizontal.length % 2 === 1) { // This is needed in case the length is odd + horizontal = horizontal.slice(Math.floor(horizontal.length / 2)); + title = horizontal.slice(1) + text + horizontal; // We reduce the left part of one character to avoid the bar to go beyond its limit + } else { + horizontal = horizontal.slice(horizontal.length / 2); + title = horizontal + text + horizontal; + } + + break; + } + + return title; +}; + +const makeContentText = (text, padding, columns, align) => { + text = ansiAlign(text, {align}); + let lines = text.split(NEWLINE); + const textWidth = widestLine(text); + + const max = columns - padding.left - padding.right; + + if (textWidth > max) { + const newLines = []; + for (const line of lines) { + const createdLines = wrapAnsi(line, max, {hard: true}); + const alignedLines = ansiAlign(createdLines, {align}); + const alignedLinesArray = alignedLines.split('\n'); + const longestLength = Math.max(...alignedLinesArray.map(s => stringWidth(s))); + + for (const alignedLine of alignedLinesArray) { + let paddedLine; + switch (align) { + case 'center': + paddedLine = PAD.repeat((max - longestLength) / 2) + alignedLine; + break; + case 'right': + paddedLine = PAD.repeat(max - longestLength) + alignedLine; + break; + default: + paddedLine = alignedLine; + break; + } + + newLines.push(paddedLine); + } + } + + lines = newLines; + } + + if (align === 'center' && textWidth < max) { + lines = lines.map(line => PAD.repeat((max - textWidth) / 2) + line); + } else if (align === 'right' && textWidth < max) { + lines = lines.map(line => PAD.repeat(max - textWidth) + line); + } + + const paddingLeft = PAD.repeat(padding.left); + const paddingRight = PAD.repeat(padding.right); + + lines = lines.map(line => paddingLeft + line + paddingRight); + + lines = lines.map(line => { + if (columns - stringWidth(line) > 0) { + switch (align) { + case 'center': + return line + PAD.repeat(columns - stringWidth(line)); + case 'right': + return line + PAD.repeat(columns - stringWidth(line)); + default: + return line + PAD.repeat(columns - stringWidth(line)); + } + } + + return line; + }); + + if (padding.top > 0) { + lines = [...Array.from({length: padding.top}).fill(PAD.repeat(columns)), ...lines]; + } + + if (padding.bottom > 0) { + lines = [...lines, ...Array.from({length: padding.bottom}).fill(PAD.repeat(columns))]; + } + + return lines.join(NEWLINE); +}; + +const boxContent = (content, contentWidth, options) => { + const colorizeBorder = border => { + const newBorder = options.borderColor ? getColorFn(options.borderColor)(border) : border; + return options.dimBorder ? chalk.dim(newBorder) : newBorder; + }; + + const colorizeContent = content => options.backgroundColor ? getBGColorFn(options.backgroundColor)(content) : content; + + const chars = getBorderChars(options.borderStyle); + const columns = terminalColumns(); + let marginLeft = PAD.repeat(options.margin.left); + + if (options.float === 'center') { + const marginWidth = Math.max((columns - contentWidth - BORDERS_WIDTH) / 2, 0); + marginLeft = PAD.repeat(marginWidth); + } else if (options.float === 'right') { + const marginWidth = Math.max(columns - contentWidth - options.margin.right - BORDERS_WIDTH, 0); + marginLeft = PAD.repeat(marginWidth); + } + + const top = colorizeBorder(NEWLINE.repeat(options.margin.top) + marginLeft + chars.topLeft + (options.title ? makeTitle(options.title, chars.top.repeat(contentWidth), options.titleAlignment) : chars.top.repeat(contentWidth)) + chars.topRight); + const bottom = colorizeBorder(marginLeft + chars.bottomLeft + chars.bottom.repeat(contentWidth) + chars.bottomRight + NEWLINE.repeat(options.margin.bottom)); + + const LINE_SEPARATOR = (contentWidth + BORDERS_WIDTH + options.margin.left >= columns) ? '' : NEWLINE; + + const lines = content.split(NEWLINE); + + const middle = lines.map(line => marginLeft + colorizeBorder(chars.left) + colorizeContent(line) + colorizeBorder(chars.right)).join(LINE_SEPARATOR); + + return top + LINE_SEPARATOR + middle + LINE_SEPARATOR + bottom; +}; + +const determineDimensions = (text, options) => { + const widthOverride = options.width !== undefined; + const columns = terminalColumns(); + const maxWidth = columns - options.margin.left - options.margin.right - BORDERS_WIDTH; + + // If width is provided, make sure it's not below 1 + if (options.width) { + options.width = Math.max(1, options.width - BORDERS_WIDTH); + } + + const widest = widestLine(wrapAnsi(text, columns - BORDERS_WIDTH, {hard: true, trim: false})) + options.padding.left + options.padding.right; + + // If title and width are provided, title adheres to fixed width + if (options.title && widthOverride) { + options.title = options.title.slice(0, Math.max(0, options.width - 2)); + if (options.title) { + options.title = ` ${options.title} `; + } + } else if (options.title) { + options.title = options.title.slice(0, Math.max(0, maxWidth - 2)); + + // Recheck if title isn't empty now + if (options.title) { + options.title = ` ${options.title} `; + // If the title is larger than content, box adheres to title width + if (stringWidth(options.title) > widest) { + options.width = stringWidth(options.title); + } + } + } + + // If fixed width is provided, use it or content width as reference + options.width = options.width ? options.width : widest; + + if (!widthOverride) { + if ((options.margin.left && options.margin.right) && options.width > maxWidth) { + // Let's assume we have margins: left = 3, right = 5, in total = 8 + const spaceForMargins = columns - options.width - BORDERS_WIDTH; + // Let's assume we have space = 4 + const multiplier = spaceForMargins / (options.margin.left + options.margin.right); + // Here: multiplier = 4/8 = 0.5 + options.margin.left = Math.max(0, Math.floor(options.margin.left * multiplier)); + options.margin.right = Math.max(0, Math.floor(options.margin.right * multiplier)); + // Left: 3 * 0.5 = 1.5 -> 1 + // Right: 6 * 0.5 = 3 + } + + // Re-cap width considering the margins after shrinking + options.width = Math.min(options.width, columns - BORDERS_WIDTH - options.margin.left - options.margin.right); + } + + // Prevent padding overflow + if (options.width - (options.padding.left + options.padding.right) <= 0) { + options.padding.left = 0; + options.padding.right = 0; + } + + return options; +}; + +const isHex = color => color.match(/^#(?:[0-f]{3}){1,2}$/i); +const isColorValid = color => typeof color === 'string' && ((chalk[color]) || isHex(color)); +const getColorFn = color => isHex(color) ? chalk.hex(color) : chalk[color]; +const getBGColorFn = color => isHex(color) ? chalk.bgHex(color) : chalk[camelCase(['bg', color])]; + +export default function boxen(text, options) { + options = { + padding: 0, + borderStyle: 'single', + dimBorder: false, + textAlignment: 'left', + float: 'left', + titleAlignment: 'left', + ...options, + }; + + // This option is deprecated + if (options.align) { + options.textAlignment = options.align; + } + + if (options.borderColor && !isColorValid(options.borderColor)) { + throw new Error(`${options.borderColor} is not a valid borderColor`); + } + + if (options.backgroundColor && !isColorValid(options.backgroundColor)) { + throw new Error(`${options.backgroundColor} is not a valid backgroundColor`); + } + + options.padding = getObject(options.padding); + options.margin = getObject(options.margin); + + options = determineDimensions(text, options); + + text = makeContentText(text, options.padding, options.width, options.textAlignment); + + return boxContent(text, options.width, options); +} + +export const _borderStyles = cliBoxes; diff --git a/node_modules/boxen/license b/node_modules/boxen/license new file mode 100644 index 00000000..fa7ceba3 --- /dev/null +++ b/node_modules/boxen/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +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. diff --git a/node_modules/boxen/package.json b/node_modules/boxen/package.json new file mode 100644 index 00000000..6287218e --- /dev/null +++ b/node_modules/boxen/package.json @@ -0,0 +1,60 @@ +{ + "name": "boxen", + "version": "6.2.1", + "description": "Create boxes in the terminal", + "license": "MIT", + "repository": "sindresorhus/boxen", + "funding": "https://github.com/sponsors/sindresorhus", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "https://sindresorhus.com" + }, + "type": "module", + "exports": "./index.js", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "scripts": { + "test": "xo && nyc ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "cli", + "box", + "boxes", + "terminal", + "term", + "console", + "ascii", + "unicode", + "border", + "text" + ], + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^6.2.0", + "chalk": "^4.1.2", + "cli-boxes": "^3.0.0", + "string-width": "^5.0.1", + "type-fest": "^2.5.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "devDependencies": { + "ava": "^3.15.0", + "nyc": "^15.1.0", + "tsd": "^0.17.0", + "typescript": "^4.4.3", + "xo": "^0.45.0" + }, + "ava": { + "snapshotDir": "tests/snapshots", + "environmentVariables": { + "COLUMNS": "60" + } + } +} diff --git a/node_modules/boxen/readme.md b/node_modules/boxen/readme.md new file mode 100644 index 00000000..eae061e5 --- /dev/null +++ b/node_modules/boxen/readme.md @@ -0,0 +1,265 @@ +# boxen + +> Create boxes in the terminal + +![](screenshot.png) + +## Install + +```sh +npm install boxen +``` + +## Usage + +```js +import boxen from 'boxen'; + +console.log(boxen('unicorn', {padding: 1})); +/* +┌─────────────┐ +│ │ +│ unicorn │ +│ │ +└─────────────┘ +*/ + +console.log(boxen('unicorn', {padding: 1, margin: 1, borderStyle: 'double'})); +/* + + ╔═════════════╗ + ║ ║ + ║ unicorn ║ + ║ ║ + ╚═════════════╝ + +*/ + +console.log(boxen('unicorns love rainbows', {title: 'magical', titleAlignment: 'center'})); +/* +┌────── magical ───────┐ +│unicorns love rainbows│ +└──────────────────────┘ +*/ +``` + +## API + +### boxen(text, options?) + +#### text + +Type: `string` + +Text inside the box. + +#### options + +Type: `object` + +##### borderColor + +Type: `string`\ +Values: `'black'` `'red'` `'green'` `'yellow'` `'blue'` `'magenta'` `'cyan'` `'white'` `'gray'` or a hex value like `'#ff0000'` + +Color of the box border. + +##### borderStyle + +Type: `string | object`\ +Default: `'single'`\ +Values: +- `'single'` +``` +┌───┐ +│foo│ +└───┘ +``` +- `'double'` +``` +╔═══╗ +║foo║ +╚═══╝ +``` +- `'round'` (`'single'` sides with round corners) +``` +╭───╮ +│foo│ +╰───╯ +``` +- `'bold'` +``` +┏━━━┓ +┃foo┃ +┗━━━┛ +``` +- `'singleDouble'` (`'single'` on top and bottom, `'double'` on right and left) +``` +╓───╖ +║foo║ +╙───╜ +``` +- `'doubleSingle'` (`'double'` on top and bottom, `'single'` on right and left) +``` +╒═══╕ +│foo│ +╘═══╛ +``` +- `'classic'` +``` ++---+ +|foo| ++---+ +``` +- `'arrow'` +``` +↘↓↓↓↙ +→foo← +↗↑↑↑↖ +``` + +Style of the box border. + +Can be any of the above predefined styles or an object with the following keys: + +```js +{ + topLeft: '+', + topRight: '+', + bottomLeft: '+', + bottomRight: '+', + top: '-', + bottom: '-', + left: '|', + right: '|' +} +``` + +##### dimBorder + +Type: `boolean`\ +Default: `false` + +Reduce opacity of the border. + +##### title + +Type: `string` + +Display a title at the top of the box. +If needed, the box will horizontally expand to fit the title. + +Example: +```js +console.log(boxen('foo bar', {title: 'example'})); +/* +┌ example ┐ +│foo bar │ +└─────────┘ +*/ +``` + +##### titleAlignment + +Type: `string`\ +Default: `'left'` + +Align the title in the top bar. + +Values: +- `'left'` +```js +/* +┌ example ──────┐ +│foo bar foo bar│ +└───────────────┘ +*/ +``` +- `'center'` +```js +/* +┌─── example ───┐ +│foo bar foo bar│ +└───────────────┘ +*/ +``` +- `'right'` +```js +/* +┌────── example ┐ +│foo bar foo bar│ +└───────────────┘ +*/ +``` + +##### width + +Type: `number` + +Set a fixed width for the box. + +*Note:* This disables terminal overflow handling and may cause the box to look broken if the user's terminal is not wide enough. + +##### padding + +Type: `number | object`\ +Default: `0` + +Space between the text and box border. + +Accepts a number or an object with any of the `top`, `right`, `bottom`, `left` properties. When a number is specified, the left/right padding is 3 times the top/bottom to make it look nice. + +##### margin + +Type: `number | object`\ +Default: `0` + +Space around the box. + +Accepts a number or an object with any of the `top`, `right`, `bottom`, `left` properties. When a number is specified, the left/right margin is 3 times the top/bottom to make it look nice. + +##### float + +Type: `string`\ +Default: `'left'`\ +Values: `'right'` `'center'` `'left'` + +Float the box on the available terminal screen space. + +##### backgroundColor + +Type: `string`\ +Values: `'black'` `'red'` `'green'` `'yellow'` `'blue'` `'magenta'` `'cyan'` `'white'` `'gray'` or a hex value like `'#ff0000'` + +Color of the background. + +##### textAlignment + +Type: `string`\ +Default: `'left'`\ +Values: `'left'` `'center'` `'right'` + +Align the text in the box based on the widest line. + +## Maintainer + +- [Sindre Sorhus](https://github.com/sindresorhus) +- [Caesarovich](https://github.com/Caesarovich) + +## Related + +- [boxen-cli](https://github.com/sindresorhus/boxen-cli) - CLI for this module +- [cli-boxes](https://github.com/sindresorhus/cli-boxes) - Boxes for use in the terminal +- [ink-box](https://github.com/sindresorhus/ink-box) - Box component for Ink that uses this package + +--- + +
+ + Get professional support for this package with a Tidelift subscription + +
+ + Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies. +
+
diff --git a/node_modules/brace-expansion/LICENSE b/node_modules/brace-expansion/LICENSE new file mode 100644 index 00000000..de322667 --- /dev/null +++ b/node_modules/brace-expansion/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2013 Julian Gruber + +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. diff --git a/node_modules/brace-expansion/README.md b/node_modules/brace-expansion/README.md new file mode 100644 index 00000000..6b4e0e16 --- /dev/null +++ b/node_modules/brace-expansion/README.md @@ -0,0 +1,129 @@ +# brace-expansion + +[Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html), +as known from sh/bash, in JavaScript. + +[![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion) +[![downloads](https://img.shields.io/npm/dm/brace-expansion.svg)](https://www.npmjs.org/package/brace-expansion) +[![Greenkeeper badge](https://badges.greenkeeper.io/juliangruber/brace-expansion.svg)](https://greenkeeper.io/) + +[![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion) + +## Example + +```js +var expand = require('brace-expansion'); + +expand('file-{a,b,c}.jpg') +// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg'] + +expand('-v{,,}') +// => ['-v', '-v', '-v'] + +expand('file{0..2}.jpg') +// => ['file0.jpg', 'file1.jpg', 'file2.jpg'] + +expand('file-{a..c}.jpg') +// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg'] + +expand('file{2..0}.jpg') +// => ['file2.jpg', 'file1.jpg', 'file0.jpg'] + +expand('file{0..4..2}.jpg') +// => ['file0.jpg', 'file2.jpg', 'file4.jpg'] + +expand('file-{a..e..2}.jpg') +// => ['file-a.jpg', 'file-c.jpg', 'file-e.jpg'] + +expand('file{00..10..5}.jpg') +// => ['file00.jpg', 'file05.jpg', 'file10.jpg'] + +expand('{{A..C},{a..c}}') +// => ['A', 'B', 'C', 'a', 'b', 'c'] + +expand('ppp{,config,oe{,conf}}') +// => ['ppp', 'pppconfig', 'pppoe', 'pppoeconf'] +``` + +## API + +```js +var expand = require('brace-expansion'); +``` + +### var expanded = expand(str) + +Return an array of all possible and valid expansions of `str`. If none are +found, `[str]` is returned. + +Valid expansions are: + +```js +/^(.*,)+(.+)?$/ +// {a,b,...} +``` + +A comma separated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`. + +```js +/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/ +// {x..y[..incr]} +``` + +A numeric sequence from `x` to `y` inclusive, with optional increment. +If `x` or `y` start with a leading `0`, all the numbers will be padded +to have equal length. Negative numbers and backwards iteration work too. + +```js +/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/ +// {x..y[..incr]} +``` + +An alphabetic sequence from `x` to `y` inclusive, with optional increment. +`x` and `y` must be exactly one character, and if given, `incr` must be a +number. + +For compatibility reasons, the string `${` is not eligible for brace expansion. + +## Installation + +With [npm](https://npmjs.org) do: + +```bash +npm install brace-expansion +``` + +## Contributors + +- [Julian Gruber](https://github.com/juliangruber) +- [Isaac Z. Schlueter](https://github.com/isaacs) + +## Sponsors + +This module is proudly supported by my [Sponsors](https://github.com/juliangruber/sponsors)! + +Do you want to support modules like this to improve their quality, stability and weigh in on new features? Then please consider donating to my [Patreon](https://www.patreon.com/juliangruber). Not sure how much of my modules you're using? Try [feross/thanks](https://github.com/feross/thanks)! + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +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. diff --git a/node_modules/brace-expansion/index.js b/node_modules/brace-expansion/index.js new file mode 100644 index 00000000..0478be81 --- /dev/null +++ b/node_modules/brace-expansion/index.js @@ -0,0 +1,201 @@ +var concatMap = require('concat-map'); +var balanced = require('balanced-match'); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function identity(e) { + return e; +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; + + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post, false) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el, false) }); + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + + return expansions; +} + diff --git a/node_modules/brace-expansion/package.json b/node_modules/brace-expansion/package.json new file mode 100644 index 00000000..a18faa8f --- /dev/null +++ b/node_modules/brace-expansion/package.json @@ -0,0 +1,47 @@ +{ + "name": "brace-expansion", + "description": "Brace expansion as known from sh/bash", + "version": "1.1.11", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/brace-expansion.git" + }, + "homepage": "https://github.com/juliangruber/brace-expansion", + "main": "index.js", + "scripts": { + "test": "tape test/*.js", + "gentest": "bash test/generate.sh", + "bench": "matcha test/perf/bench.js" + }, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + }, + "devDependencies": { + "matcha": "^0.7.0", + "tape": "^4.6.0" + }, + "keywords": [], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT", + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/8..latest", + "firefox/20..latest", + "firefox/nightly", + "chrome/25..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} diff --git a/node_modules/braces/CHANGELOG.md b/node_modules/braces/CHANGELOG.md new file mode 100644 index 00000000..36f798b0 --- /dev/null +++ b/node_modules/braces/CHANGELOG.md @@ -0,0 +1,184 @@ +# Release history + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +
+ Guiding Principles + +- Changelogs are for humans, not machines. +- There should be an entry for every single version. +- The same types of changes should be grouped. +- Versions and sections should be linkable. +- The latest version comes first. +- The release date of each versions is displayed. +- Mention whether you follow Semantic Versioning. + +
+ +
+ Types of changes + +Changelog entries are classified using the following labels _(from [keep-a-changelog](http://keepachangelog.com/)_): + +- `Added` for new features. +- `Changed` for changes in existing functionality. +- `Deprecated` for soon-to-be removed features. +- `Removed` for now removed features. +- `Fixed` for any bug fixes. +- `Security` in case of vulnerabilities. + +
+ +## [3.0.0] - 2018-04-08 + +v3.0 is a complete refactor, resulting in a faster, smaller codebase, with fewer deps, and a more accurate parser and compiler. + +**Breaking Changes** + +- The undocumented `.makeRe` method was removed + +**Non-breaking changes** + +- Caching was removed + +## [2.3.2] - 2018-04-08 + +- start refactoring +- cover sets +- better range handling + +## [2.3.1] - 2018-02-17 + +- Remove unnecessary escape in Regex. (#14) + +## [2.3.0] - 2017-10-19 + +- minor code reorganization +- optimize regex +- expose `maxLength` option + +## [2.2.1] - 2017-05-30 + +- don't condense when braces contain extglobs + +## [2.2.0] - 2017-05-28 + +- ensure word boundaries are preserved +- fixes edge case where extglob characters precede a brace pattern + +## [2.1.1] - 2017-04-27 + +- use snapdragon-node +- handle edge case +- optimizations, lint + +## [2.0.4] - 2017-04-11 + +- pass opts to compiler +- minor optimization in create method +- re-write parser handlers to remove negation regex + +## [2.0.3] - 2016-12-10 + +- use split-string +- clear queue at the end +- adds sequences example +- add unit tests + +## [2.0.2] - 2016-10-21 + +- fix comma handling in nested extglobs + +## [2.0.1] - 2016-10-20 + +- add comments +- more tests, ensure quotes are stripped + +## [2.0.0] - 2016-10-19 + +- don't expand braces inside character classes +- add quantifier pattern + +## [1.8.5] - 2016-05-21 + +- Refactor (#10) + +## [1.8.4] - 2016-04-20 + +- fixes https://github.com/jonschlinkert/micromatch/issues/66 + +## [1.8.0] - 2015-03-18 + +- adds exponent examples, tests +- fixes the first example in https://github.com/jonschlinkert/micromatch/issues/38 + +## [1.6.0] - 2015-01-30 + +- optimizations, `bash` mode: +- improve path escaping + +## [1.5.0] - 2015-01-28 + +- Merge pull request #5 from eush77/lib-files + +## [1.4.0] - 2015-01-24 + +- add extglob tests +- externalize exponent function +- better whitespace handling + +## [1.3.0] - 2015-01-24 + +- make regex patterns explicity + +## [1.1.0] - 2015-01-11 + +- don't create a match group with `makeRe` + +## [1.0.0] - 2014-12-23 + +- Merge commit '97b05f5544f8348736a8efaecf5c32bbe3e2ad6e' +- support empty brace syntax +- better bash coverage +- better support for regex strings + +## [0.1.4] - 2014-11-14 + +- improve recognition of bad args, recognize mismatched argument types +- support escaping +- remove pathname-expansion +- support whitespace in patterns + +## [0.1.0] + +- first commit + +[2.3.2]: https://github.com/micromatch/braces/compare/2.3.1...2.3.2 +[2.3.1]: https://github.com/micromatch/braces/compare/2.3.0...2.3.1 +[2.3.0]: https://github.com/micromatch/braces/compare/2.2.1...2.3.0 +[2.2.1]: https://github.com/micromatch/braces/compare/2.2.0...2.2.1 +[2.2.0]: https://github.com/micromatch/braces/compare/2.1.1...2.2.0 +[2.1.1]: https://github.com/micromatch/braces/compare/2.1.0...2.1.1 +[2.1.0]: https://github.com/micromatch/braces/compare/2.0.4...2.1.0 +[2.0.4]: https://github.com/micromatch/braces/compare/2.0.3...2.0.4 +[2.0.3]: https://github.com/micromatch/braces/compare/2.0.2...2.0.3 +[2.0.2]: https://github.com/micromatch/braces/compare/2.0.1...2.0.2 +[2.0.1]: https://github.com/micromatch/braces/compare/2.0.0...2.0.1 +[2.0.0]: https://github.com/micromatch/braces/compare/1.8.5...2.0.0 +[1.8.5]: https://github.com/micromatch/braces/compare/1.8.4...1.8.5 +[1.8.4]: https://github.com/micromatch/braces/compare/1.8.0...1.8.4 +[1.8.0]: https://github.com/micromatch/braces/compare/1.6.0...1.8.0 +[1.6.0]: https://github.com/micromatch/braces/compare/1.5.0...1.6.0 +[1.5.0]: https://github.com/micromatch/braces/compare/1.4.0...1.5.0 +[1.4.0]: https://github.com/micromatch/braces/compare/1.3.0...1.4.0 +[1.3.0]: https://github.com/micromatch/braces/compare/1.2.0...1.3.0 +[1.2.0]: https://github.com/micromatch/braces/compare/1.1.0...1.2.0 +[1.1.0]: https://github.com/micromatch/braces/compare/1.0.0...1.1.0 +[1.0.0]: https://github.com/micromatch/braces/compare/0.1.4...1.0.0 +[0.1.4]: https://github.com/micromatch/braces/compare/0.1.0...0.1.4 + +[Unreleased]: https://github.com/micromatch/braces/compare/0.1.0...HEAD +[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog \ No newline at end of file diff --git a/node_modules/braces/LICENSE b/node_modules/braces/LICENSE new file mode 100644 index 00000000..d32ab442 --- /dev/null +++ b/node_modules/braces/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2018, Jon Schlinkert. + +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. diff --git a/node_modules/braces/README.md b/node_modules/braces/README.md new file mode 100644 index 00000000..cba2f600 --- /dev/null +++ b/node_modules/braces/README.md @@ -0,0 +1,593 @@ +# braces [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [![NPM version](https://img.shields.io/npm/v/braces.svg?style=flat)](https://www.npmjs.com/package/braces) [![NPM monthly downloads](https://img.shields.io/npm/dm/braces.svg?style=flat)](https://npmjs.org/package/braces) [![NPM total downloads](https://img.shields.io/npm/dt/braces.svg?style=flat)](https://npmjs.org/package/braces) [![Linux Build Status](https://img.shields.io/travis/micromatch/braces.svg?style=flat&label=Travis)](https://travis-ci.org/micromatch/braces) + +> Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed. + +Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save braces +``` + +## v3.0.0 Released!! + +See the [changelog](CHANGELOG.md) for details. + +## Why use braces? + +Brace patterns make globs more powerful by adding the ability to match specific ranges and sequences of characters. + +* **Accurate** - complete support for the [Bash 4.3 Brace Expansion](www.gnu.org/software/bash/) specification (passes all of the Bash braces tests) +* **[fast and performant](#benchmarks)** - Starts fast, runs fast and [scales well](#performance) as patterns increase in complexity. +* **Organized code base** - The parser and compiler are easy to maintain and update when edge cases crop up. +* **Well-tested** - Thousands of test assertions, and passes all of the Bash, minimatch, and [brace-expansion](https://github.com/juliangruber/brace-expansion) unit tests (as of the date this was written). +* **Safer** - You shouldn't have to worry about users defining aggressive or malicious brace patterns that can break your application. Braces takes measures to prevent malicious regex that can be used for DDoS attacks (see [catastrophic backtracking](https://www.regular-expressions.info/catastrophic.html)). +* [Supports lists](#lists) - (aka "sets") `a/{b,c}/d` => `['a/b/d', 'a/c/d']` +* [Supports sequences](#sequences) - (aka "ranges") `{01..03}` => `['01', '02', '03']` +* [Supports steps](#steps) - (aka "increments") `{2..10..2}` => `['2', '4', '6', '8', '10']` +* [Supports escaping](#escaping) - To prevent evaluation of special characters. + +## Usage + +The main export is a function that takes one or more brace `patterns` and `options`. + +```js +const braces = require('braces'); +// braces(patterns[, options]); + +console.log(braces(['{01..05}', '{a..e}'])); +//=> ['(0[1-5])', '([a-e])'] + +console.log(braces(['{01..05}', '{a..e}'], { expand: true })); +//=> ['01', '02', '03', '04', '05', 'a', 'b', 'c', 'd', 'e'] +``` + +### Brace Expansion vs. Compilation + +By default, brace patterns are compiled into strings that are optimized for creating regular expressions and matching. + +**Compiled** + +```js +console.log(braces('a/{x,y,z}/b')); +//=> ['a/(x|y|z)/b'] +console.log(braces(['a/{01..20}/b', 'a/{1..5}/b'])); +//=> [ 'a/(0[1-9]|1[0-9]|20)/b', 'a/([1-5])/b' ] +``` + +**Expanded** + +Enable brace expansion by setting the `expand` option to true, or by using [braces.expand()](#expand) (returns an array similar to what you'd expect from Bash, or `echo {1..5}`, or [minimatch](https://github.com/isaacs/minimatch)): + +```js +console.log(braces('a/{x,y,z}/b', { expand: true })); +//=> ['a/x/b', 'a/y/b', 'a/z/b'] + +console.log(braces.expand('{01..10}')); +//=> ['01','02','03','04','05','06','07','08','09','10'] +``` + +### Lists + +Expand lists (like Bash "sets"): + +```js +console.log(braces('a/{foo,bar,baz}/*.js')); +//=> ['a/(foo|bar|baz)/*.js'] + +console.log(braces.expand('a/{foo,bar,baz}/*.js')); +//=> ['a/foo/*.js', 'a/bar/*.js', 'a/baz/*.js'] +``` + +### Sequences + +Expand ranges of characters (like Bash "sequences"): + +```js +console.log(braces.expand('{1..3}')); // ['1', '2', '3'] +console.log(braces.expand('a/{1..3}/b')); // ['a/1/b', 'a/2/b', 'a/3/b'] +console.log(braces('{a..c}', { expand: true })); // ['a', 'b', 'c'] +console.log(braces('foo/{a..c}', { expand: true })); // ['foo/a', 'foo/b', 'foo/c'] + +// supports zero-padded ranges +console.log(braces('a/{01..03}/b')); //=> ['a/(0[1-3])/b'] +console.log(braces('a/{001..300}/b')); //=> ['a/(0{2}[1-9]|0[1-9][0-9]|[12][0-9]{2}|300)/b'] +``` + +See [fill-range](https://github.com/jonschlinkert/fill-range) for all available range-expansion options. + +### Steppped ranges + +Steps, or increments, may be used with ranges: + +```js +console.log(braces.expand('{2..10..2}')); +//=> ['2', '4', '6', '8', '10'] + +console.log(braces('{2..10..2}')); +//=> ['(2|4|6|8|10)'] +``` + +When the [.optimize](#optimize) method is used, or [options.optimize](#optionsoptimize) is set to true, sequences are passed to [to-regex-range](https://github.com/jonschlinkert/to-regex-range) for expansion. + +### Nesting + +Brace patterns may be nested. The results of each expanded string are not sorted, and left to right order is preserved. + +**"Expanded" braces** + +```js +console.log(braces.expand('a{b,c,/{x,y}}/e')); +//=> ['ab/e', 'ac/e', 'a/x/e', 'a/y/e'] + +console.log(braces.expand('a/{x,{1..5},y}/c')); +//=> ['a/x/c', 'a/1/c', 'a/2/c', 'a/3/c', 'a/4/c', 'a/5/c', 'a/y/c'] +``` + +**"Optimized" braces** + +```js +console.log(braces('a{b,c,/{x,y}}/e')); +//=> ['a(b|c|/(x|y))/e'] + +console.log(braces('a/{x,{1..5},y}/c')); +//=> ['a/(x|([1-5])|y)/c'] +``` + +### Escaping + +**Escaping braces** + +A brace pattern will not be expanded or evaluted if _either the opening or closing brace is escaped_: + +```js +console.log(braces.expand('a\\{d,c,b}e')); +//=> ['a{d,c,b}e'] + +console.log(braces.expand('a{d,c,b\\}e')); +//=> ['a{d,c,b}e'] +``` + +**Escaping commas** + +Commas inside braces may also be escaped: + +```js +console.log(braces.expand('a{b\\,c}d')); +//=> ['a{b,c}d'] + +console.log(braces.expand('a{d\\,c,b}e')); +//=> ['ad,ce', 'abe'] +``` + +**Single items** + +Following bash conventions, a brace pattern is also not expanded when it contains a single character: + +```js +console.log(braces.expand('a{b}c')); +//=> ['a{b}c'] +``` + +## Options + +### options.maxLength + +**Type**: `Number` + +**Default**: `65,536` + +**Description**: Limit the length of the input string. Useful when the input string is generated or your application allows users to pass a string, et cetera. + +```js +console.log(braces('a/{b,c}/d', { maxLength: 3 })); //=> throws an error +``` + +### options.expand + +**Type**: `Boolean` + +**Default**: `undefined` + +**Description**: Generate an "expanded" brace pattern (alternatively you can use the `braces.expand()` method, which does the same thing). + +```js +console.log(braces('a/{b,c}/d', { expand: true })); +//=> [ 'a/b/d', 'a/c/d' ] +``` + +### options.nodupes + +**Type**: `Boolean` + +**Default**: `undefined` + +**Description**: Remove duplicates from the returned array. + +### options.rangeLimit + +**Type**: `Number` + +**Default**: `1000` + +**Description**: To prevent malicious patterns from being passed by users, an error is thrown when `braces.expand()` is used or `options.expand` is true and the generated range will exceed the `rangeLimit`. + +You can customize `options.rangeLimit` or set it to `Inifinity` to disable this altogether. + +**Examples** + +```js +// pattern exceeds the "rangeLimit", so it's optimized automatically +console.log(braces.expand('{1..1000}')); +//=> ['([1-9]|[1-9][0-9]{1,2}|1000)'] + +// pattern does not exceed "rangeLimit", so it's NOT optimized +console.log(braces.expand('{1..100}')); +//=> ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '100'] +``` + +### options.transform + +**Type**: `Function` + +**Default**: `undefined` + +**Description**: Customize range expansion. + +**Example: Transforming non-numeric values** + +```js +const alpha = braces.expand('x/{a..e}/y', { + transform(value, index) { + // When non-numeric values are passed, "value" is a character code. + return 'foo/' + String.fromCharCode(value) + '-' + index; + } +}); +console.log(alpha); +//=> [ 'x/foo/a-0/y', 'x/foo/b-1/y', 'x/foo/c-2/y', 'x/foo/d-3/y', 'x/foo/e-4/y' ] +``` + +**Example: Transforming numeric values** + +```js +const numeric = braces.expand('{1..5}', { + transform(value) { + // when numeric values are passed, "value" is a number + return 'foo/' + value * 2; + } +}); +console.log(numeric); +//=> [ 'foo/2', 'foo/4', 'foo/6', 'foo/8', 'foo/10' ] +``` + +### options.quantifiers + +**Type**: `Boolean` + +**Default**: `undefined` + +**Description**: In regular expressions, quanitifiers can be used to specify how many times a token can be repeated. For example, `a{1,3}` will match the letter `a` one to three times. + +Unfortunately, regex quantifiers happen to share the same syntax as [Bash lists](#lists) + +The `quantifiers` option tells braces to detect when [regex quantifiers](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#quantifiers) are defined in the given pattern, and not to try to expand them as lists. + +**Examples** + +```js +const braces = require('braces'); +console.log(braces('a/b{1,3}/{x,y,z}')); +//=> [ 'a/b(1|3)/(x|y|z)' ] +console.log(braces('a/b{1,3}/{x,y,z}', {quantifiers: true})); +//=> [ 'a/b{1,3}/(x|y|z)' ] +console.log(braces('a/b{1,3}/{x,y,z}', {quantifiers: true, expand: true})); +//=> [ 'a/b{1,3}/x', 'a/b{1,3}/y', 'a/b{1,3}/z' ] +``` + +### options.unescape + +**Type**: `Boolean` + +**Default**: `undefined` + +**Description**: Strip backslashes that were used for escaping from the result. + +## What is "brace expansion"? + +Brace expansion is a type of parameter expansion that was made popular by unix shells for generating lists of strings, as well as regex-like matching when used alongside wildcards (globs). + +In addition to "expansion", braces are also used for matching. In other words: + +* [brace expansion](#brace-expansion) is for generating new lists +* [brace matching](#brace-matching) is for filtering existing lists + +
+More about brace expansion (click to expand) + +There are two main types of brace expansion: + +1. **lists**: which are defined using comma-separated values inside curly braces: `{a,b,c}` +2. **sequences**: which are defined using a starting value and an ending value, separated by two dots: `a{1..3}b`. Optionally, a third argument may be passed to define a "step" or increment to use: `a{1..100..10}b`. These are also sometimes referred to as "ranges". + +Here are some example brace patterns to illustrate how they work: + +**Sets** + +``` +{a,b,c} => a b c +{a,b,c}{1,2} => a1 a2 b1 b2 c1 c2 +``` + +**Sequences** + +``` +{1..9} => 1 2 3 4 5 6 7 8 9 +{4..-4} => 4 3 2 1 0 -1 -2 -3 -4 +{1..20..3} => 1 4 7 10 13 16 19 +{a..j} => a b c d e f g h i j +{j..a} => j i h g f e d c b a +{a..z..3} => a d g j m p s v y +``` + +**Combination** + +Sets and sequences can be mixed together or used along with any other strings. + +``` +{a,b,c}{1..3} => a1 a2 a3 b1 b2 b3 c1 c2 c3 +foo/{a,b,c}/bar => foo/a/bar foo/b/bar foo/c/bar +``` + +The fact that braces can be "expanded" from relatively simple patterns makes them ideal for quickly generating test fixtures, file paths, and similar use cases. + +## Brace matching + +In addition to _expansion_, brace patterns are also useful for performing regular-expression-like matching. + +For example, the pattern `foo/{1..3}/bar` would match any of following strings: + +``` +foo/1/bar +foo/2/bar +foo/3/bar +``` + +But not: + +``` +baz/1/qux +baz/2/qux +baz/3/qux +``` + +Braces can also be combined with [glob patterns](https://github.com/jonschlinkert/micromatch) to perform more advanced wildcard matching. For example, the pattern `*/{1..3}/*` would match any of following strings: + +``` +foo/1/bar +foo/2/bar +foo/3/bar +baz/1/qux +baz/2/qux +baz/3/qux +``` + +## Brace matching pitfalls + +Although brace patterns offer a user-friendly way of matching ranges or sets of strings, there are also some major disadvantages and potential risks you should be aware of. + +### tldr + +**"brace bombs"** + +* brace expansion can eat up a huge amount of processing resources +* as brace patterns increase _linearly in size_, the system resources required to expand the pattern increase exponentially +* users can accidentally (or intentially) exhaust your system's resources resulting in the equivalent of a DoS attack (bonus: no programming knowledge is required!) + +For a more detailed explanation with examples, see the [geometric complexity](#geometric-complexity) section. + +### The solution + +Jump to the [performance section](#performance) to see how Braces solves this problem in comparison to other libraries. + +### Geometric complexity + +At minimum, brace patterns with sets limited to two elements have quadradic or `O(n^2)` complexity. But the complexity of the algorithm increases exponentially as the number of sets, _and elements per set_, increases, which is `O(n^c)`. + +For example, the following sets demonstrate quadratic (`O(n^2)`) complexity: + +``` +{1,2}{3,4} => (2X2) => 13 14 23 24 +{1,2}{3,4}{5,6} => (2X2X2) => 135 136 145 146 235 236 245 246 +``` + +But add an element to a set, and we get a n-fold Cartesian product with `O(n^c)` complexity: + +``` +{1,2,3}{4,5,6}{7,8,9} => (3X3X3) => 147 148 149 157 158 159 167 168 169 247 248 + 249 257 258 259 267 268 269 347 348 349 357 + 358 359 367 368 369 +``` + +Now, imagine how this complexity grows given that each element is a n-tuple: + +``` +{1..100}{1..100} => (100X100) => 10,000 elements (38.4 kB) +{1..100}{1..100}{1..100} => (100X100X100) => 1,000,000 elements (5.76 MB) +``` + +Although these examples are clearly contrived, they demonstrate how brace patterns can quickly grow out of control. + +**More information** + +Interested in learning more about brace expansion? + +* [linuxjournal/bash-brace-expansion](http://www.linuxjournal.com/content/bash-brace-expansion) +* [rosettacode/Brace_expansion](https://rosettacode.org/wiki/Brace_expansion) +* [cartesian product](https://en.wikipedia.org/wiki/Cartesian_product) + +
+ +## Performance + +Braces is not only screaming fast, it's also more accurate the other brace expansion libraries. + +### Better algorithms + +Fortunately there is a solution to the ["brace bomb" problem](#brace-matching-pitfalls): _don't expand brace patterns into an array when they're used for matching_. + +Instead, convert the pattern into an optimized regular expression. This is easier said than done, and braces is the only library that does this currently. + +**The proof is in the numbers** + +Minimatch gets exponentially slower as patterns increase in complexity, braces does not. The following results were generated using `braces()` and `minimatch.braceExpand()`, respectively. + +| **Pattern** | **braces** | **[minimatch][]** | +| --- | --- | --- | +| `{1..9007199254740991}`[^1] | `298 B` (5ms 459μs)| N/A (freezes) | +| `{1..1000000000000000}` | `41 B` (1ms 15μs) | N/A (freezes) | +| `{1..100000000000000}` | `40 B` (890μs) | N/A (freezes) | +| `{1..10000000000000}` | `39 B` (2ms 49μs) | N/A (freezes) | +| `{1..1000000000000}` | `38 B` (608μs) | N/A (freezes) | +| `{1..100000000000}` | `37 B` (397μs) | N/A (freezes) | +| `{1..10000000000}` | `35 B` (983μs) | N/A (freezes) | +| `{1..1000000000}` | `34 B` (798μs) | N/A (freezes) | +| `{1..100000000}` | `33 B` (733μs) | N/A (freezes) | +| `{1..10000000}` | `32 B` (5ms 632μs) | `78.89 MB` (16s 388ms 569μs) | +| `{1..1000000}` | `31 B` (1ms 381μs) | `6.89 MB` (1s 496ms 887μs) | +| `{1..100000}` | `30 B` (950μs) | `588.89 kB` (146ms 921μs) | +| `{1..10000}` | `29 B` (1ms 114μs) | `48.89 kB` (14ms 187μs) | +| `{1..1000}` | `28 B` (760μs) | `3.89 kB` (1ms 453μs) | +| `{1..100}` | `22 B` (345μs) | `291 B` (196μs) | +| `{1..10}` | `10 B` (533μs) | `20 B` (37μs) | +| `{1..3}` | `7 B` (190μs) | `5 B` (27μs) | + +### Faster algorithms + +When you need expansion, braces is still much faster. + +_(the following results were generated using `braces.expand()` and `minimatch.braceExpand()`, respectively)_ + +| **Pattern** | **braces** | **[minimatch][]** | +| --- | --- | --- | +| `{1..10000000}` | `78.89 MB` (2s 698ms 642μs) | `78.89 MB` (18s 601ms 974μs) | +| `{1..1000000}` | `6.89 MB` (458ms 576μs) | `6.89 MB` (1s 491ms 621μs) | +| `{1..100000}` | `588.89 kB` (20ms 728μs) | `588.89 kB` (156ms 919μs) | +| `{1..10000}` | `48.89 kB` (2ms 202μs) | `48.89 kB` (13ms 641μs) | +| `{1..1000}` | `3.89 kB` (1ms 796μs) | `3.89 kB` (1ms 958μs) | +| `{1..100}` | `291 B` (424μs) | `291 B` (211μs) | +| `{1..10}` | `20 B` (487μs) | `20 B` (72μs) | +| `{1..3}` | `5 B` (166μs) | `5 B` (27μs) | + +If you'd like to run these comparisons yourself, see [test/support/generate.js](test/support/generate.js). + +## Benchmarks + +### Running benchmarks + +Install dev dependencies: + +```bash +npm i -d && npm benchmark +``` + +### Latest results + +Braces is more accurate, without sacrificing performance. + +```bash +# range (expanded) + braces x 29,040 ops/sec ±3.69% (91 runs sampled)) + minimatch x 4,735 ops/sec ±1.28% (90 runs sampled) + +# range (optimized for regex) + braces x 382,878 ops/sec ±0.56% (94 runs sampled) + minimatch x 1,040 ops/sec ±0.44% (93 runs sampled) + +# nested ranges (expanded) + braces x 19,744 ops/sec ±2.27% (92 runs sampled)) + minimatch x 4,579 ops/sec ±0.50% (93 runs sampled) + +# nested ranges (optimized for regex) + braces x 246,019 ops/sec ±2.02% (93 runs sampled) + minimatch x 1,028 ops/sec ±0.39% (94 runs sampled) + +# set (expanded) + braces x 138,641 ops/sec ±0.53% (95 runs sampled) + minimatch x 219,582 ops/sec ±0.98% (94 runs sampled) + +# set (optimized for regex) + braces x 388,408 ops/sec ±0.41% (95 runs sampled) + minimatch x 44,724 ops/sec ±0.91% (89 runs sampled) + +# nested sets (expanded) + braces x 84,966 ops/sec ±0.48% (94 runs sampled) + minimatch x 140,720 ops/sec ±0.37% (95 runs sampled) + +# nested sets (optimized for regex) + braces x 263,340 ops/sec ±2.06% (92 runs sampled) + minimatch x 28,714 ops/sec ±0.40% (90 runs sampled) +``` + +## About + +
+Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +
+ +
+Running Tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +
+ +
+Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +
+ +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 197 | [jonschlinkert](https://github.com/jonschlinkert) | +| 4 | [doowb](https://github.com/doowb) | +| 1 | [es128](https://github.com/es128) | +| 1 | [eush77](https://github.com/eush77) | +| 1 | [hemanth](https://github.com/hemanth) | +| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | + +### Author + +**Jon Schlinkert** + +* [GitHub Profile](https://github.com/jonschlinkert) +* [Twitter Profile](https://twitter.com/jonschlinkert) +* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert) + +### License + +Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 08, 2019._ \ No newline at end of file diff --git a/node_modules/braces/index.js b/node_modules/braces/index.js new file mode 100644 index 00000000..0eee0f56 --- /dev/null +++ b/node_modules/braces/index.js @@ -0,0 +1,170 @@ +'use strict'; + +const stringify = require('./lib/stringify'); +const compile = require('./lib/compile'); +const expand = require('./lib/expand'); +const parse = require('./lib/parse'); + +/** + * Expand the given pattern or create a regex-compatible string. + * + * ```js + * const braces = require('braces'); + * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)'] + * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c'] + * ``` + * @param {String} `str` + * @param {Object} `options` + * @return {String} + * @api public + */ + +const braces = (input, options = {}) => { + let output = []; + + if (Array.isArray(input)) { + for (let pattern of input) { + let result = braces.create(pattern, options); + if (Array.isArray(result)) { + output.push(...result); + } else { + output.push(result); + } + } + } else { + output = [].concat(braces.create(input, options)); + } + + if (options && options.expand === true && options.nodupes === true) { + output = [...new Set(output)]; + } + return output; +}; + +/** + * Parse the given `str` with the given `options`. + * + * ```js + * // braces.parse(pattern, [, options]); + * const ast = braces.parse('a/{b,c}/d'); + * console.log(ast); + * ``` + * @param {String} pattern Brace pattern to parse + * @param {Object} options + * @return {Object} Returns an AST + * @api public + */ + +braces.parse = (input, options = {}) => parse(input, options); + +/** + * Creates a braces string from an AST, or an AST node. + * + * ```js + * const braces = require('braces'); + * let ast = braces.parse('foo/{a,b}/bar'); + * console.log(stringify(ast.nodes[2])); //=> '{a,b}' + * ``` + * @param {String} `input` Brace pattern or AST. + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces.stringify = (input, options = {}) => { + if (typeof input === 'string') { + return stringify(braces.parse(input, options), options); + } + return stringify(input, options); +}; + +/** + * Compiles a brace pattern into a regex-compatible, optimized string. + * This method is called by the main [braces](#braces) function by default. + * + * ```js + * const braces = require('braces'); + * console.log(braces.compile('a/{b,c}/d')); + * //=> ['a/(b|c)/d'] + * ``` + * @param {String} `input` Brace pattern or AST. + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces.compile = (input, options = {}) => { + if (typeof input === 'string') { + input = braces.parse(input, options); + } + return compile(input, options); +}; + +/** + * Expands a brace pattern into an array. This method is called by the + * main [braces](#braces) function when `options.expand` is true. Before + * using this method it's recommended that you read the [performance notes](#performance)) + * and advantages of using [.compile](#compile) instead. + * + * ```js + * const braces = require('braces'); + * console.log(braces.expand('a/{b,c}/d')); + * //=> ['a/b/d', 'a/c/d']; + * ``` + * @param {String} `pattern` Brace pattern + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces.expand = (input, options = {}) => { + if (typeof input === 'string') { + input = braces.parse(input, options); + } + + let result = expand(input, options); + + // filter out empty strings if specified + if (options.noempty === true) { + result = result.filter(Boolean); + } + + // filter out duplicates if specified + if (options.nodupes === true) { + result = [...new Set(result)]; + } + + return result; +}; + +/** + * Processes a brace pattern and returns either an expanded array + * (if `options.expand` is true), a highly optimized regex-compatible string. + * This method is called by the main [braces](#braces) function. + * + * ```js + * const braces = require('braces'); + * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}')) + * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)' + * ``` + * @param {String} `pattern` Brace pattern + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces.create = (input, options = {}) => { + if (input === '' || input.length < 3) { + return [input]; + } + + return options.expand !== true + ? braces.compile(input, options) + : braces.expand(input, options); +}; + +/** + * Expose "braces" + */ + +module.exports = braces; diff --git a/node_modules/braces/package.json b/node_modules/braces/package.json new file mode 100644 index 00000000..3f52e346 --- /dev/null +++ b/node_modules/braces/package.json @@ -0,0 +1,77 @@ +{ + "name": "braces", + "description": "Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.", + "version": "3.0.2", + "homepage": "https://github.com/micromatch/braces", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "contributors": [ + "Brian Woodward (https://twitter.com/doowb)", + "Elan Shanker (https://github.com/es128)", + "Eugene Sharygin (https://github.com/eush77)", + "hemanth.hm (http://h3manth.com)", + "Jon Schlinkert (http://twitter.com/jonschlinkert)" + ], + "repository": "micromatch/braces", + "bugs": { + "url": "https://github.com/micromatch/braces/issues" + }, + "license": "MIT", + "files": [ + "index.js", + "lib" + ], + "main": "index.js", + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "mocha", + "benchmark": "node benchmark" + }, + "dependencies": { + "fill-range": "^7.0.1" + }, + "devDependencies": { + "ansi-colors": "^3.2.4", + "bash-path": "^2.0.1", + "gulp-format-md": "^2.0.0", + "mocha": "^6.1.1" + }, + "keywords": [ + "alpha", + "alphabetical", + "bash", + "brace", + "braces", + "expand", + "expansion", + "filepath", + "fill", + "fs", + "glob", + "globbing", + "letter", + "match", + "matches", + "matching", + "number", + "numerical", + "path", + "range", + "ranges", + "sh" + ], + "verb": { + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "lint": { + "reflinks": true + }, + "plugins": [ + "gulp-format-md" + ] + } +} diff --git a/node_modules/browserslist/LICENSE b/node_modules/browserslist/LICENSE new file mode 100644 index 00000000..90b6b916 --- /dev/null +++ b/node_modules/browserslist/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright 2014 Andrey Sitnik and other contributors + +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. diff --git a/node_modules/browserslist/README.md b/node_modules/browserslist/README.md new file mode 100644 index 00000000..abac4aae --- /dev/null +++ b/node_modules/browserslist/README.md @@ -0,0 +1,73 @@ +# Browserslist [![Cult Of Martians][cult-img]][cult] + +Browserslist logo by Anton Popov + +The config to share target browsers and Node.js versions between different +front-end tools. It is used in: + +* [Autoprefixer] +* [Babel] +* [postcss-preset-env] +* [eslint-plugin-compat] +* [stylelint-no-unsupported-browser-features] +* [postcss-normalize] +* [obsolete-webpack-plugin] + +All tools will find target browsers automatically, +when you add the following to `package.json`: + +```json + "browserslist": [ + "defaults and fully supports es6-module", + "maintained node versions" + ] +``` + +Or in `.browserslistrc` config: + +```yaml +# Browsers that we support + +defaults and fully supports es6-module +maintained node versions +``` + +Developers set their version lists using queries like `last 2 versions` +to be free from updating versions manually. +Browserslist will use [`caniuse-lite`] with [Can I Use] data for this queries. + +You can check how config works at our playground: [`browsersl.ist`](https://browsersl.ist/) + + + browsersl.ist website + + +
+
+
+ + Sponsored by Evil Martians +    + Supported by Cube + +
+ +[stylelint-no-unsupported-browser-features]: https://github.com/ismay/stylelint-no-unsupported-browser-features +[obsolete-webpack-plugin]: https://github.com/ElemeFE/obsolete-webpack-plugin +[eslint-plugin-compat]: https://github.com/amilajack/eslint-plugin-compat +[Browserslist Example]: https://github.com/browserslist/browserslist-example +[postcss-preset-env]: https://github.com/csstools/postcss-plugins/tree/main/plugin-packs/postcss-preset-env +[postcss-normalize]: https://github.com/csstools/postcss-normalize +[`browsersl.ist`]: https://browsersl.ist/ +[`caniuse-lite`]: https://github.com/ben-eb/caniuse-lite +[Autoprefixer]: https://github.com/postcss/autoprefixer +[Can I Use]: https://caniuse.com/ +[Babel]: https://github.com/babel/babel/tree/master/packages/babel-preset-env +[cult-img]: https://cultofmartians.com/assets/badges/badge.svg +[cult]: https://cultofmartians.com/done.html + +## Docs +Read full docs **[here](https://github.com/browserslist/browserslist#readme)**. diff --git a/node_modules/browserslist/browser.js b/node_modules/browserslist/browser.js new file mode 100644 index 00000000..6828bdbe --- /dev/null +++ b/node_modules/browserslist/browser.js @@ -0,0 +1,52 @@ +var BrowserslistError = require('./error') + +function noop() {} + +module.exports = { + loadQueries: function loadQueries() { + throw new BrowserslistError( + 'Sharable configs are not supported in client-side build of Browserslist' + ) + }, + + getStat: function getStat(opts) { + return opts.stats + }, + + loadConfig: function loadConfig(opts) { + if (opts.config) { + throw new BrowserslistError( + 'Browserslist config are not supported in client-side build' + ) + } + }, + + loadCountry: function loadCountry() { + throw new BrowserslistError( + 'Country statistics are not supported ' + + 'in client-side build of Browserslist' + ) + }, + + loadFeature: function loadFeature() { + throw new BrowserslistError( + 'Supports queries are not available in client-side build of Browserslist' + ) + }, + + currentNode: function currentNode(resolve, context) { + return resolve(['maintained node versions'], context)[0] + }, + + parseConfig: noop, + + readConfig: noop, + + findConfig: noop, + + clearCaches: noop, + + oldDataWarning: noop, + + env: {} +} diff --git a/node_modules/browserslist/cli.js b/node_modules/browserslist/cli.js new file mode 100755 index 00000000..7b5236da --- /dev/null +++ b/node_modules/browserslist/cli.js @@ -0,0 +1,156 @@ +#!/usr/bin/env node + +var updateDb = require('update-browserslist-db') +var fs = require('fs') + +var browserslist = require('./') +var pkg = require('./package.json') + +var args = process.argv.slice(2) + +var USAGE = + 'Usage:\n' + + ' npx browserslist\n' + + ' npx browserslist "QUERIES"\n' + + ' npx browserslist --json "QUERIES"\n' + + ' npx browserslist --config="path/to/browserlist/file"\n' + + ' npx browserslist --coverage "QUERIES"\n' + + ' npx browserslist --coverage=US "QUERIES"\n' + + ' npx browserslist --coverage=US,RU,global "QUERIES"\n' + + ' npx browserslist --env="environment name defined in config"\n' + + ' npx browserslist --stats="path/to/browserlist/stats/file"\n' + + ' npx browserslist --mobile-to-desktop\n' + + ' npx browserslist --ignore-unknown-versions\n' + +function isArg(arg) { + return args.some(function (str) { + return str === arg || str.indexOf(arg + '=') === 0 + }) +} + +function error(msg) { + process.stderr.write('browserslist: ' + msg + '\n') + process.exit(1) +} + +if (isArg('--help') || isArg('-h')) { + process.stdout.write(pkg.description + '.\n\n' + USAGE + '\n') +} else if (isArg('--version') || isArg('-v')) { + process.stdout.write('browserslist ' + pkg.version + '\n') +} else if (isArg('--update-db')) { + /* c8 ignore next 8 */ + process.stdout.write( + 'The --update-db command is deprecated.\n' + + 'Please use npx update-browserslist-db@latest instead.\n' + ) + process.stdout.write('Browserslist DB update will still be made.\n') + updateDb(function (str) { + process.stdout.write(str) + }) +} else { + var mode = 'browsers' + var opts = {} + var queries + var areas + + for (var i = 0; i < args.length; i++) { + if (args[i][0] !== '-') { + queries = args[i].replace(/^["']|["']$/g, '') + continue + } + + var arg = args[i].split('=') + var name = arg[0] + var value = arg[1] + + if (value) value = value.replace(/^["']|["']$/g, '') + + if (name === '--config' || name === '-b') { + opts.config = value + } else if (name === '--env' || name === '-e') { + opts.env = value + } else if (name === '--stats' || name === '-s') { + opts.stats = value + } else if (name === '--coverage' || name === '-c') { + if (mode !== 'json') mode = 'coverage' + if (value) { + areas = value.split(',') + } else { + areas = ['global'] + } + } else if (name === '--json') { + mode = 'json' + } else if (name === '--mobile-to-desktop') { + /* c8 ignore next */ + opts.mobileToDesktop = true + } else if (name === '--ignore-unknown-versions') { + /* c8 ignore next */ + opts.ignoreUnknownVersions = true + } else { + error('Unknown arguments ' + args[i] + '.\n\n' + USAGE) + } + } + + var browsers + try { + browsers = browserslist(queries, opts) + } catch (e) { + if (e.name === 'BrowserslistError') { + error(e.message) + } /* c8 ignore start */ else { + throw e + } /* c8 ignore end */ + } + + var coverage + if (mode === 'browsers') { + browsers.forEach(function (browser) { + process.stdout.write(browser + '\n') + }) + } else if (areas) { + coverage = areas.map(function (area) { + var stats + if (area !== 'global') { + stats = area + } else if (opts.stats) { + stats = JSON.parse(fs.readFileSync(opts.stats)) + } + var result = browserslist.coverage(browsers, stats) + var round = Math.round(result * 100) / 100.0 + + return [area, round] + }) + + if (mode === 'coverage') { + var prefix = 'These browsers account for ' + process.stdout.write(prefix) + coverage.forEach(function (data, index) { + var area = data[0] + var round = data[1] + var end = 'globally' + if (area && area !== 'global') { + end = 'in the ' + area.toUpperCase() + } else if (opts.stats) { + end = 'in custom statistics' + } + + if (index !== 0) { + process.stdout.write(prefix.replace(/./g, ' ')) + } + + process.stdout.write(round + '% of all users ' + end + '\n') + }) + } + } + + if (mode === 'json') { + var data = { browsers: browsers } + if (coverage) { + data.coverage = coverage.reduce(function (object, j) { + object[j[0]] = j[1] + return object + }, {}) + } + process.stdout.write(JSON.stringify(data, null, ' ') + '\n') + } +} diff --git a/node_modules/browserslist/error.d.ts b/node_modules/browserslist/error.d.ts new file mode 100644 index 00000000..12ff9213 --- /dev/null +++ b/node_modules/browserslist/error.d.ts @@ -0,0 +1,7 @@ +declare class BrowserslistError extends Error { + constructor(message: any) + name: 'BrowserslistError' + browserslist: true +} + +export = BrowserslistError diff --git a/node_modules/browserslist/error.js b/node_modules/browserslist/error.js new file mode 100644 index 00000000..6e5da7a8 --- /dev/null +++ b/node_modules/browserslist/error.js @@ -0,0 +1,12 @@ +function BrowserslistError(message) { + this.name = 'BrowserslistError' + this.message = message + this.browserslist = true + if (Error.captureStackTrace) { + Error.captureStackTrace(this, BrowserslistError) + } +} + +BrowserslistError.prototype = Error.prototype + +module.exports = BrowserslistError diff --git a/node_modules/browserslist/index.d.ts b/node_modules/browserslist/index.d.ts new file mode 100644 index 00000000..7f8e7605 --- /dev/null +++ b/node_modules/browserslist/index.d.ts @@ -0,0 +1,200 @@ +/** + * Return array of browsers by selection queries. + * + * ```js + * browserslist('IE >= 10, IE 8') //=> ['ie 11', 'ie 10', 'ie 8'] + * ``` + * + * @param queries Browser queries. + * @param opts Options. + * @returns Array with browser names in Can I Use. + */ +declare function browserslist( + queries?: string | readonly string[] | null, + opts?: browserslist.Options +): string[] + +declare namespace browserslist { + interface Query { + compose: 'or' | 'and' + type: string + query: string + not?: true + } + + interface Options { + /** + * Path to processed file. It will be used to find config files. + */ + path?: string | false + /** + * Processing environment. It will be used to take right queries + * from config file. + */ + env?: string + /** + * Custom browser usage statistics for "> 1% in my stats" query. + */ + stats?: Stats | string + /** + * Path to config file with queries. + */ + config?: string + /** + * Do not throw on unknown version in direct query. + */ + ignoreUnknownVersions?: boolean + /** + * Throw an error if env is not found. + */ + throwOnMissing?: boolean + /** + * Disable security checks for extend query. + */ + dangerousExtend?: boolean + /** + * Alias mobile browsers to the desktop version when Can I Use + * doesn’t have data about the specified version. + */ + mobileToDesktop?: boolean + } + + type Config = { + defaults: string[] + [section: string]: string[] | undefined + } + + interface Stats { + [browser: string]: { + [version: string]: number + } + } + + /** + * Browser names aliases. + */ + let aliases: { + [alias: string]: string | undefined + } + + /** + * Aliases to work with joined versions like `ios_saf 7.0-7.1`. + */ + let versionAliases: { + [browser: string]: + | { + [version: string]: string | undefined + } + | undefined + } + + /** + * Can I Use only provides a few versions for some browsers (e.g. `and_chr`). + * + * Fallback to a similar browser for unknown versions. + */ + let desktopNames: { + [browser: string]: string | undefined + } + + let data: { + [browser: string]: + | { + name: string + versions: string[] + released: string[] + releaseDate: { + [version: string]: number | undefined | null + } + } + | undefined + } + + let nodeVersions: string[] + + interface Usage { + [version: string]: number + } + + let usage: { + global?: Usage + custom?: Usage | null + [country: string]: Usage | undefined | null + } + + let cache: { + [feature: string]: { + [name: string]: { + [version: string]: string + } + } + } + + /** + * Default browsers query + */ + let defaults: readonly string[] + + /** + * Which statistics should be used. Country code or custom statistics. + * Pass `"my stats"` to load statistics from `Browserslist` files. + */ + type StatsOptions = string | 'my stats' | Stats | { dataByBrowser: Stats } + + /** + * Return browsers market coverage. + * + * ```js + * browserslist.coverage(browserslist('> 1% in US'), 'US') //=> 83.1 + * ``` + * + * @param browsers Browsers names in Can I Use. + * @param stats Which statistics should be used. + * @returns Total market coverage for all selected browsers. + */ + function coverage(browsers: readonly string[], stats?: StatsOptions): number + + /** + * Get queries AST to analyze the config content. + * + * @param queries Browser queries. + * @param opts Options. + * @returns An array of the data of each query in the config. + */ + function parse( + queries?: string | readonly string[] | null, + opts?: browserslist.Options + ): Query[] + + function clearCaches(): void + + function parseConfig(string: string): Config + + function readConfig(file: string): Config + + function findConfig(...pathSegments: string[]): Config | undefined + + interface LoadConfigOptions { + config?: string + path?: string + env?: string + } + + function loadConfig(options: LoadConfigOptions): string[] | undefined +} + +declare global { + namespace NodeJS { + interface ProcessEnv { + BROWSERSLIST?: string + BROWSERSLIST_CONFIG?: string + BROWSERSLIST_DANGEROUS_EXTEND?: string + BROWSERSLIST_DISABLE_CACHE?: string + BROWSERSLIST_ENV?: string + BROWSERSLIST_IGNORE_OLD_DATA?: string + BROWSERSLIST_STATS?: string + } + } +} + +export = browserslist diff --git a/node_modules/browserslist/index.js b/node_modules/browserslist/index.js new file mode 100644 index 00000000..18021be3 --- /dev/null +++ b/node_modules/browserslist/index.js @@ -0,0 +1,1197 @@ +var jsReleases = require('node-releases/data/processed/envs.json') +var agents = require('caniuse-lite/dist/unpacker/agents').agents +var jsEOL = require('node-releases/data/release-schedule/release-schedule.json') +var path = require('path') +var e2c = require('electron-to-chromium/versions') + +var BrowserslistError = require('./error') +var parse = require('./parse') +var env = require('./node') // Will load browser.js in webpack + +var YEAR = 365.259641 * 24 * 60 * 60 * 1000 +var ANDROID_EVERGREEN_FIRST = '37' +var OP_MOB_BLINK_FIRST = 14 + +// Helpers + +function isVersionsMatch(versionA, versionB) { + return (versionA + '.').indexOf(versionB + '.') === 0 +} + +function isEolReleased(name) { + var version = name.slice(1) + return browserslist.nodeVersions.some(function (i) { + return isVersionsMatch(i, version) + }) +} + +function normalize(versions) { + return versions.filter(function (version) { + return typeof version === 'string' + }) +} + +function normalizeElectron(version) { + var versionToUse = version + if (version.split('.').length === 3) { + versionToUse = version.split('.').slice(0, -1).join('.') + } + return versionToUse +} + +function nameMapper(name) { + return function mapName(version) { + return name + ' ' + version + } +} + +function getMajor(version) { + return parseInt(version.split('.')[0]) +} + +function getMajorVersions(released, number) { + if (released.length === 0) return [] + var majorVersions = uniq(released.map(getMajor)) + var minimum = majorVersions[majorVersions.length - number] + if (!minimum) { + return released + } + var selected = [] + for (var i = released.length - 1; i >= 0; i--) { + if (minimum > getMajor(released[i])) break + selected.unshift(released[i]) + } + return selected +} + +function uniq(array) { + var filtered = [] + for (var i = 0; i < array.length; i++) { + if (filtered.indexOf(array[i]) === -1) filtered.push(array[i]) + } + return filtered +} + +function fillUsage(result, name, data) { + for (var i in data) { + result[name + ' ' + i] = data[i] + } +} + +function generateFilter(sign, version) { + version = parseFloat(version) + if (sign === '>') { + return function (v) { + return parseFloat(v) > version + } + } else if (sign === '>=') { + return function (v) { + return parseFloat(v) >= version + } + } else if (sign === '<') { + return function (v) { + return parseFloat(v) < version + } + } else { + return function (v) { + return parseFloat(v) <= version + } + } +} + +function generateSemverFilter(sign, version) { + version = version.split('.').map(parseSimpleInt) + version[1] = version[1] || 0 + version[2] = version[2] || 0 + if (sign === '>') { + return function (v) { + v = v.split('.').map(parseSimpleInt) + return compareSemver(v, version) > 0 + } + } else if (sign === '>=') { + return function (v) { + v = v.split('.').map(parseSimpleInt) + return compareSemver(v, version) >= 0 + } + } else if (sign === '<') { + return function (v) { + v = v.split('.').map(parseSimpleInt) + return compareSemver(version, v) > 0 + } + } else { + return function (v) { + v = v.split('.').map(parseSimpleInt) + return compareSemver(version, v) >= 0 + } + } +} + +function parseSimpleInt(x) { + return parseInt(x) +} + +function compare(a, b) { + if (a < b) return -1 + if (a > b) return +1 + return 0 +} + +function compareSemver(a, b) { + return ( + compare(parseInt(a[0]), parseInt(b[0])) || + compare(parseInt(a[1] || '0'), parseInt(b[1] || '0')) || + compare(parseInt(a[2] || '0'), parseInt(b[2] || '0')) + ) +} + +// this follows the npm-like semver behavior +function semverFilterLoose(operator, range) { + range = range.split('.').map(parseSimpleInt) + if (typeof range[1] === 'undefined') { + range[1] = 'x' + } + // ignore any patch version because we only return minor versions + // range[2] = 'x' + switch (operator) { + case '<=': + return function (version) { + version = version.split('.').map(parseSimpleInt) + return compareSemverLoose(version, range) <= 0 + } + case '>=': + default: + return function (version) { + version = version.split('.').map(parseSimpleInt) + return compareSemverLoose(version, range) >= 0 + } + } +} + +// this follows the npm-like semver behavior +function compareSemverLoose(version, range) { + if (version[0] !== range[0]) { + return version[0] < range[0] ? -1 : +1 + } + if (range[1] === 'x') { + return 0 + } + if (version[1] !== range[1]) { + return version[1] < range[1] ? -1 : +1 + } + return 0 +} + +function resolveVersion(data, version) { + if (data.versions.indexOf(version) !== -1) { + return version + } else if (browserslist.versionAliases[data.name][version]) { + return browserslist.versionAliases[data.name][version] + } else { + return false + } +} + +function normalizeVersion(data, version) { + var resolved = resolveVersion(data, version) + if (resolved) { + return resolved + } else if (data.versions.length === 1) { + return data.versions[0] + } else { + return false + } +} + +function filterByYear(since, context) { + since = since / 1000 + return Object.keys(agents).reduce(function (selected, name) { + var data = byName(name, context) + if (!data) return selected + var versions = Object.keys(data.releaseDate).filter(function (v) { + var date = data.releaseDate[v] + return date !== null && date >= since + }) + return selected.concat(versions.map(nameMapper(data.name))) + }, []) +} + +function cloneData(data) { + return { + name: data.name, + versions: data.versions, + released: data.released, + releaseDate: data.releaseDate + } +} + +function byName(name, context) { + name = name.toLowerCase() + name = browserslist.aliases[name] || name + if (context.mobileToDesktop && browserslist.desktopNames[name]) { + var desktop = browserslist.data[browserslist.desktopNames[name]] + if (name === 'android') { + return normalizeAndroidData(cloneData(browserslist.data[name]), desktop) + } else { + var cloned = cloneData(desktop) + cloned.name = name + return cloned + } + } + return browserslist.data[name] +} + +function normalizeAndroidVersions(androidVersions, chromeVersions) { + var iFirstEvergreen = chromeVersions.indexOf(ANDROID_EVERGREEN_FIRST) + return androidVersions + .filter(function (version) { + return /^(?:[2-4]\.|[34]$)/.test(version) + }) + .concat(chromeVersions.slice(iFirstEvergreen)) +} + +function normalizeAndroidData(android, chrome) { + android.released = normalizeAndroidVersions(android.released, chrome.released) + android.versions = normalizeAndroidVersions(android.versions, chrome.versions) + android.released.forEach(function (v) { + if (android.releaseDate[v] === undefined) { + android.releaseDate[v] = chrome.releaseDate[v] + } + }) + return android +} + +function checkName(name, context) { + var data = byName(name, context) + if (!data) throw new BrowserslistError('Unknown browser ' + name) + return data +} + +function unknownQuery(query) { + return new BrowserslistError( + 'Unknown browser query `' + + query + + '`. ' + + 'Maybe you are using old Browserslist or made typo in query.' + ) +} + +// Adjusts last X versions queries for some mobile browsers, +// where caniuse data jumps from a legacy version to the latest +function filterJumps(list, name, nVersions, context) { + var jump = 1 + switch (name) { + case 'android': + if (context.mobileToDesktop) return list + var released = browserslist.data.chrome.released + jump = released.length - released.indexOf(ANDROID_EVERGREEN_FIRST) + break + case 'op_mob': + var latest = browserslist.data.op_mob.released.slice(-1)[0] + jump = getMajor(latest) - OP_MOB_BLINK_FIRST + 1 + break + default: + return list + } + if (nVersions <= jump) { + return list.slice(-1) + } + return list.slice(jump - 1 - nVersions) +} + +function isSupported(flags, withPartial) { + return ( + typeof flags === 'string' && + (flags.indexOf('y') >= 0 || (withPartial && flags.indexOf('a') >= 0)) + ) +} + +function resolve(queries, context) { + return parse(QUERIES, queries).reduce(function (result, node, index) { + if (node.not && index === 0) { + throw new BrowserslistError( + 'Write any browsers query (for instance, `defaults`) ' + + 'before `' + + node.query + + '`' + ) + } + var type = QUERIES[node.type] + var array = type.select.call(browserslist, context, node).map(function (j) { + var parts = j.split(' ') + if (parts[1] === '0') { + return parts[0] + ' ' + byName(parts[0], context).versions[0] + } else { + return j + } + }) + + if (node.compose === 'and') { + if (node.not) { + return result.filter(function (j) { + return array.indexOf(j) === -1 + }) + } else { + return result.filter(function (j) { + return array.indexOf(j) !== -1 + }) + } + } else { + if (node.not) { + var filter = {} + array.forEach(function (j) { + filter[j] = true + }) + return result.filter(function (j) { + return !filter[j] + }) + } + return result.concat(array) + } + }, []) +} + +function prepareOpts(opts) { + if (typeof opts === 'undefined') opts = {} + + if (typeof opts.path === 'undefined') { + opts.path = path.resolve ? path.resolve('.') : '.' + } + + return opts +} + +function prepareQueries(queries, opts) { + if (typeof queries === 'undefined' || queries === null) { + var config = browserslist.loadConfig(opts) + if (config) { + queries = config + } else { + queries = browserslist.defaults + } + } + + return queries +} + +function checkQueries(queries) { + if (!(typeof queries === 'string' || Array.isArray(queries))) { + throw new BrowserslistError( + 'Browser queries must be an array or string. Got ' + typeof queries + '.' + ) + } +} + +var cache = {} + +function browserslist(queries, opts) { + opts = prepareOpts(opts) + queries = prepareQueries(queries, opts) + checkQueries(queries) + + var context = { + ignoreUnknownVersions: opts.ignoreUnknownVersions, + dangerousExtend: opts.dangerousExtend, + mobileToDesktop: opts.mobileToDesktop, + path: opts.path, + env: opts.env + } + + env.oldDataWarning(browserslist.data) + var stats = env.getStat(opts, browserslist.data) + if (stats) { + context.customUsage = {} + for (var browser in stats) { + fillUsage(context.customUsage, browser, stats[browser]) + } + } + + var cacheKey = JSON.stringify([queries, context]) + if (cache[cacheKey]) return cache[cacheKey] + + var result = uniq(resolve(queries, context)).sort(function (name1, name2) { + name1 = name1.split(' ') + name2 = name2.split(' ') + if (name1[0] === name2[0]) { + // assumptions on caniuse data + // 1) version ranges never overlaps + // 2) if version is not a range, it never contains `-` + var version1 = name1[1].split('-')[0] + var version2 = name2[1].split('-')[0] + return compareSemver(version2.split('.'), version1.split('.')) + } else { + return compare(name1[0], name2[0]) + } + }) + if (!env.env.BROWSERSLIST_DISABLE_CACHE) { + cache[cacheKey] = result + } + return result +} + +browserslist.parse = function (queries, opts) { + opts = prepareOpts(opts) + queries = prepareQueries(queries, opts) + checkQueries(queries) + return parse(QUERIES, queries) +} + +// Will be filled by Can I Use data below +browserslist.cache = {} +browserslist.data = {} +browserslist.usage = { + global: {}, + custom: null +} + +// Default browsers query +browserslist.defaults = ['> 0.5%', 'last 2 versions', 'Firefox ESR', 'not dead'] + +// Browser names aliases +browserslist.aliases = { + fx: 'firefox', + ff: 'firefox', + ios: 'ios_saf', + explorer: 'ie', + blackberry: 'bb', + explorermobile: 'ie_mob', + operamini: 'op_mini', + operamobile: 'op_mob', + chromeandroid: 'and_chr', + firefoxandroid: 'and_ff', + ucandroid: 'and_uc', + qqandroid: 'and_qq' +} + +// Can I Use only provides a few versions for some browsers (e.g. and_chr). +// Fallback to a similar browser for unknown versions +// Note op_mob is not included as its chromium versions are not in sync with Opera desktop +browserslist.desktopNames = { + and_chr: 'chrome', + and_ff: 'firefox', + ie_mob: 'ie', + android: 'chrome' // has extra processing logic +} + +// Aliases to work with joined versions like `ios_saf 7.0-7.1` +browserslist.versionAliases = {} + +browserslist.clearCaches = env.clearCaches +browserslist.parseConfig = env.parseConfig +browserslist.readConfig = env.readConfig +browserslist.findConfig = env.findConfig +browserslist.loadConfig = env.loadConfig + +browserslist.coverage = function (browsers, stats) { + var data + if (typeof stats === 'undefined') { + data = browserslist.usage.global + } else if (stats === 'my stats') { + var opts = {} + opts.path = path.resolve ? path.resolve('.') : '.' + var customStats = env.getStat(opts) + if (!customStats) { + throw new BrowserslistError('Custom usage statistics was not provided') + } + data = {} + for (var browser in customStats) { + fillUsage(data, browser, customStats[browser]) + } + } else if (typeof stats === 'string') { + if (stats.length > 2) { + stats = stats.toLowerCase() + } else { + stats = stats.toUpperCase() + } + env.loadCountry(browserslist.usage, stats, browserslist.data) + data = browserslist.usage[stats] + } else { + if ('dataByBrowser' in stats) { + stats = stats.dataByBrowser + } + data = {} + for (var name in stats) { + for (var version in stats[name]) { + data[name + ' ' + version] = stats[name][version] + } + } + } + + return browsers.reduce(function (all, i) { + var usage = data[i] + if (usage === undefined) { + usage = data[i.replace(/ \S+$/, ' 0')] + } + return all + (usage || 0) + }, 0) +} + +function nodeQuery(context, node) { + var matched = browserslist.nodeVersions.filter(function (i) { + return isVersionsMatch(i, node.version) + }) + if (matched.length === 0) { + if (context.ignoreUnknownVersions) { + return [] + } else { + throw new BrowserslistError( + 'Unknown version ' + node.version + ' of Node.js' + ) + } + } + return ['node ' + matched[matched.length - 1]] +} + +function sinceQuery(context, node) { + var year = parseInt(node.year) + var month = parseInt(node.month || '01') - 1 + var day = parseInt(node.day || '01') + return filterByYear(Date.UTC(year, month, day, 0, 0, 0), context) +} + +function coverQuery(context, node) { + var coverage = parseFloat(node.coverage) + var usage = browserslist.usage.global + if (node.place) { + if (node.place.match(/^my\s+stats$/i)) { + if (!context.customUsage) { + throw new BrowserslistError('Custom usage statistics was not provided') + } + usage = context.customUsage + } else { + var place + if (node.place.length === 2) { + place = node.place.toUpperCase() + } else { + place = node.place.toLowerCase() + } + env.loadCountry(browserslist.usage, place, browserslist.data) + usage = browserslist.usage[place] + } + } + var versions = Object.keys(usage).sort(function (a, b) { + return usage[b] - usage[a] + }) + var coveraged = 0 + var result = [] + var version + for (var i = 0; i < versions.length; i++) { + version = versions[i] + if (usage[version] === 0) break + coveraged += usage[version] + result.push(version) + if (coveraged >= coverage) break + } + return result +} + +var QUERIES = { + last_major_versions: { + matches: ['versions'], + regexp: /^last\s+(\d+)\s+major\s+versions?$/i, + select: function (context, node) { + return Object.keys(agents).reduce(function (selected, name) { + var data = byName(name, context) + if (!data) return selected + var list = getMajorVersions(data.released, node.versions) + list = list.map(nameMapper(data.name)) + list = filterJumps(list, data.name, node.versions, context) + return selected.concat(list) + }, []) + } + }, + last_versions: { + matches: ['versions'], + regexp: /^last\s+(\d+)\s+versions?$/i, + select: function (context, node) { + return Object.keys(agents).reduce(function (selected, name) { + var data = byName(name, context) + if (!data) return selected + var list = data.released.slice(-node.versions) + list = list.map(nameMapper(data.name)) + list = filterJumps(list, data.name, node.versions, context) + return selected.concat(list) + }, []) + } + }, + last_electron_major_versions: { + matches: ['versions'], + regexp: /^last\s+(\d+)\s+electron\s+major\s+versions?$/i, + select: function (context, node) { + var validVersions = getMajorVersions(Object.keys(e2c), node.versions) + return validVersions.map(function (i) { + return 'chrome ' + e2c[i] + }) + } + }, + last_node_major_versions: { + matches: ['versions'], + regexp: /^last\s+(\d+)\s+node\s+major\s+versions?$/i, + select: function (context, node) { + return getMajorVersions(browserslist.nodeVersions, node.versions).map( + function (version) { + return 'node ' + version + } + ) + } + }, + last_browser_major_versions: { + matches: ['versions', 'browser'], + regexp: /^last\s+(\d+)\s+(\w+)\s+major\s+versions?$/i, + select: function (context, node) { + var data = checkName(node.browser, context) + var validVersions = getMajorVersions(data.released, node.versions) + var list = validVersions.map(nameMapper(data.name)) + list = filterJumps(list, data.name, node.versions, context) + return list + } + }, + last_electron_versions: { + matches: ['versions'], + regexp: /^last\s+(\d+)\s+electron\s+versions?$/i, + select: function (context, node) { + return Object.keys(e2c) + .slice(-node.versions) + .map(function (i) { + return 'chrome ' + e2c[i] + }) + } + }, + last_node_versions: { + matches: ['versions'], + regexp: /^last\s+(\d+)\s+node\s+versions?$/i, + select: function (context, node) { + return browserslist.nodeVersions + .slice(-node.versions) + .map(function (version) { + return 'node ' + version + }) + } + }, + last_browser_versions: { + matches: ['versions', 'browser'], + regexp: /^last\s+(\d+)\s+(\w+)\s+versions?$/i, + select: function (context, node) { + var data = checkName(node.browser, context) + var list = data.released.slice(-node.versions).map(nameMapper(data.name)) + list = filterJumps(list, data.name, node.versions, context) + return list + } + }, + unreleased_versions: { + matches: [], + regexp: /^unreleased\s+versions$/i, + select: function (context) { + return Object.keys(agents).reduce(function (selected, name) { + var data = byName(name, context) + if (!data) return selected + var list = data.versions.filter(function (v) { + return data.released.indexOf(v) === -1 + }) + list = list.map(nameMapper(data.name)) + return selected.concat(list) + }, []) + } + }, + unreleased_electron_versions: { + matches: [], + regexp: /^unreleased\s+electron\s+versions?$/i, + select: function () { + return [] + } + }, + unreleased_browser_versions: { + matches: ['browser'], + regexp: /^unreleased\s+(\w+)\s+versions?$/i, + select: function (context, node) { + var data = checkName(node.browser, context) + return data.versions + .filter(function (v) { + return data.released.indexOf(v) === -1 + }) + .map(nameMapper(data.name)) + } + }, + last_years: { + matches: ['years'], + regexp: /^last\s+(\d*.?\d+)\s+years?$/i, + select: function (context, node) { + return filterByYear(Date.now() - YEAR * node.years, context) + } + }, + since_y: { + matches: ['year'], + regexp: /^since (\d+)$/i, + select: sinceQuery + }, + since_y_m: { + matches: ['year', 'month'], + regexp: /^since (\d+)-(\d+)$/i, + select: sinceQuery + }, + since_y_m_d: { + matches: ['year', 'month', 'day'], + regexp: /^since (\d+)-(\d+)-(\d+)$/i, + select: sinceQuery + }, + popularity: { + matches: ['sign', 'popularity'], + regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%$/, + select: function (context, node) { + var popularity = parseFloat(node.popularity) + var usage = browserslist.usage.global + return Object.keys(usage).reduce(function (result, version) { + if (node.sign === '>') { + if (usage[version] > popularity) { + result.push(version) + } + } else if (node.sign === '<') { + if (usage[version] < popularity) { + result.push(version) + } + } else if (node.sign === '<=') { + if (usage[version] <= popularity) { + result.push(version) + } + } else if (usage[version] >= popularity) { + result.push(version) + } + return result + }, []) + } + }, + popularity_in_my_stats: { + matches: ['sign', 'popularity'], + regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+my\s+stats$/, + select: function (context, node) { + var popularity = parseFloat(node.popularity) + if (!context.customUsage) { + throw new BrowserslistError('Custom usage statistics was not provided') + } + var usage = context.customUsage + return Object.keys(usage).reduce(function (result, version) { + var percentage = usage[version] + if (percentage == null) { + return result + } + + if (node.sign === '>') { + if (percentage > popularity) { + result.push(version) + } + } else if (node.sign === '<') { + if (percentage < popularity) { + result.push(version) + } + } else if (node.sign === '<=') { + if (percentage <= popularity) { + result.push(version) + } + } else if (percentage >= popularity) { + result.push(version) + } + return result + }, []) + } + }, + popularity_in_config_stats: { + matches: ['sign', 'popularity', 'config'], + regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+(\S+)\s+stats$/, + select: function (context, node) { + var popularity = parseFloat(node.popularity) + var stats = env.loadStat(context, node.config, browserslist.data) + if (stats) { + context.customUsage = {} + for (var browser in stats) { + fillUsage(context.customUsage, browser, stats[browser]) + } + } + if (!context.customUsage) { + throw new BrowserslistError('Custom usage statistics was not provided') + } + var usage = context.customUsage + return Object.keys(usage).reduce(function (result, version) { + var percentage = usage[version] + if (percentage == null) { + return result + } + + if (node.sign === '>') { + if (percentage > popularity) { + result.push(version) + } + } else if (node.sign === '<') { + if (percentage < popularity) { + result.push(version) + } + } else if (node.sign === '<=') { + if (percentage <= popularity) { + result.push(version) + } + } else if (percentage >= popularity) { + result.push(version) + } + return result + }, []) + } + }, + popularity_in_place: { + matches: ['sign', 'popularity', 'place'], + regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+((alt-)?\w\w)$/, + select: function (context, node) { + var popularity = parseFloat(node.popularity) + var place = node.place + if (place.length === 2) { + place = place.toUpperCase() + } else { + place = place.toLowerCase() + } + env.loadCountry(browserslist.usage, place, browserslist.data) + var usage = browserslist.usage[place] + return Object.keys(usage).reduce(function (result, version) { + var percentage = usage[version] + if (percentage == null) { + return result + } + + if (node.sign === '>') { + if (percentage > popularity) { + result.push(version) + } + } else if (node.sign === '<') { + if (percentage < popularity) { + result.push(version) + } + } else if (node.sign === '<=') { + if (percentage <= popularity) { + result.push(version) + } + } else if (percentage >= popularity) { + result.push(version) + } + return result + }, []) + } + }, + cover: { + matches: ['coverage'], + regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%$/i, + select: coverQuery + }, + cover_in: { + matches: ['coverage', 'place'], + regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(my\s+stats|(alt-)?\w\w)$/i, + select: coverQuery + }, + supports: { + matches: ['supportType', 'feature'], + regexp: /^(?:(fully|partially) )?supports\s+([\w-]+)$/, + select: function (context, node) { + env.loadFeature(browserslist.cache, node.feature) + var withPartial = node.supportType !== 'fully' + var features = browserslist.cache[node.feature] + var result = [] + for (var name in features) { + var data = byName(name, context) + // Only check desktop when latest released mobile has support + var checkDesktop = + context.mobileToDesktop && + name in browserslist.desktopNames && + isSupported(features[name][data.released.slice(-1)[0]], withPartial) + data.versions.forEach(function (version) { + var flags = features[name][version] + if (flags === undefined && checkDesktop) { + flags = features[browserslist.desktopNames[name]][version] + } + if (isSupported(flags, withPartial)) { + result.push(name + ' ' + version) + } + }) + } + return result + } + }, + electron_range: { + matches: ['from', 'to'], + regexp: /^electron\s+([\d.]+)\s*-\s*([\d.]+)$/i, + select: function (context, node) { + var fromToUse = normalizeElectron(node.from) + var toToUse = normalizeElectron(node.to) + var from = parseFloat(node.from) + var to = parseFloat(node.to) + if (!e2c[fromToUse]) { + throw new BrowserslistError('Unknown version ' + from + ' of electron') + } + if (!e2c[toToUse]) { + throw new BrowserslistError('Unknown version ' + to + ' of electron') + } + return Object.keys(e2c) + .filter(function (i) { + var parsed = parseFloat(i) + return parsed >= from && parsed <= to + }) + .map(function (i) { + return 'chrome ' + e2c[i] + }) + } + }, + node_range: { + matches: ['from', 'to'], + regexp: /^node\s+([\d.]+)\s*-\s*([\d.]+)$/i, + select: function (context, node) { + return browserslist.nodeVersions + .filter(semverFilterLoose('>=', node.from)) + .filter(semverFilterLoose('<=', node.to)) + .map(function (v) { + return 'node ' + v + }) + } + }, + browser_range: { + matches: ['browser', 'from', 'to'], + regexp: /^(\w+)\s+([\d.]+)\s*-\s*([\d.]+)$/i, + select: function (context, node) { + var data = checkName(node.browser, context) + var from = parseFloat(normalizeVersion(data, node.from) || node.from) + var to = parseFloat(normalizeVersion(data, node.to) || node.to) + function filter(v) { + var parsed = parseFloat(v) + return parsed >= from && parsed <= to + } + return data.released.filter(filter).map(nameMapper(data.name)) + } + }, + electron_ray: { + matches: ['sign', 'version'], + regexp: /^electron\s*(>=?|<=?)\s*([\d.]+)$/i, + select: function (context, node) { + var versionToUse = normalizeElectron(node.version) + return Object.keys(e2c) + .filter(generateFilter(node.sign, versionToUse)) + .map(function (i) { + return 'chrome ' + e2c[i] + }) + } + }, + node_ray: { + matches: ['sign', 'version'], + regexp: /^node\s*(>=?|<=?)\s*([\d.]+)$/i, + select: function (context, node) { + return browserslist.nodeVersions + .filter(generateSemverFilter(node.sign, node.version)) + .map(function (v) { + return 'node ' + v + }) + } + }, + browser_ray: { + matches: ['browser', 'sign', 'version'], + regexp: /^(\w+)\s*(>=?|<=?)\s*([\d.]+)$/, + select: function (context, node) { + var version = node.version + var data = checkName(node.browser, context) + var alias = browserslist.versionAliases[data.name][version] + if (alias) version = alias + return data.released + .filter(generateFilter(node.sign, version)) + .map(function (v) { + return data.name + ' ' + v + }) + } + }, + firefox_esr: { + matches: [], + regexp: /^(firefox|ff|fx)\s+esr$/i, + select: function () { + return ['firefox 115'] + } + }, + opera_mini_all: { + matches: [], + regexp: /(operamini|op_mini)\s+all/i, + select: function () { + return ['op_mini all'] + } + }, + electron_version: { + matches: ['version'], + regexp: /^electron\s+([\d.]+)$/i, + select: function (context, node) { + var versionToUse = normalizeElectron(node.version) + var chrome = e2c[versionToUse] + if (!chrome) { + throw new BrowserslistError( + 'Unknown version ' + node.version + ' of electron' + ) + } + return ['chrome ' + chrome] + } + }, + node_major_version: { + matches: ['version'], + regexp: /^node\s+(\d+)$/i, + select: nodeQuery + }, + node_minor_version: { + matches: ['version'], + regexp: /^node\s+(\d+\.\d+)$/i, + select: nodeQuery + }, + node_patch_version: { + matches: ['version'], + regexp: /^node\s+(\d+\.\d+\.\d+)$/i, + select: nodeQuery + }, + current_node: { + matches: [], + regexp: /^current\s+node$/i, + select: function (context) { + return [env.currentNode(resolve, context)] + } + }, + maintained_node: { + matches: [], + regexp: /^maintained\s+node\s+versions$/i, + select: function (context) { + var now = Date.now() + var queries = Object.keys(jsEOL) + .filter(function (key) { + return ( + now < Date.parse(jsEOL[key].end) && + now > Date.parse(jsEOL[key].start) && + isEolReleased(key) + ) + }) + .map(function (key) { + return 'node ' + key.slice(1) + }) + return resolve(queries, context) + } + }, + phantomjs_1_9: { + matches: [], + regexp: /^phantomjs\s+1.9$/i, + select: function () { + return ['safari 5'] + } + }, + phantomjs_2_1: { + matches: [], + regexp: /^phantomjs\s+2.1$/i, + select: function () { + return ['safari 6'] + } + }, + browser_version: { + matches: ['browser', 'version'], + regexp: /^(\w+)\s+(tp|[\d.]+)$/i, + select: function (context, node) { + var version = node.version + if (/^tp$/i.test(version)) version = 'TP' + var data = checkName(node.browser, context) + var alias = normalizeVersion(data, version) + if (alias) { + version = alias + } else { + if (version.indexOf('.') === -1) { + alias = version + '.0' + } else { + alias = version.replace(/\.0$/, '') + } + alias = normalizeVersion(data, alias) + if (alias) { + version = alias + } else if (context.ignoreUnknownVersions) { + return [] + } else { + throw new BrowserslistError( + 'Unknown version ' + version + ' of ' + node.browser + ) + } + } + return [data.name + ' ' + version] + } + }, + browserslist_config: { + matches: [], + regexp: /^browserslist config$/i, + select: function (context) { + return browserslist(undefined, context) + } + }, + extends: { + matches: ['config'], + regexp: /^extends (.+)$/i, + select: function (context, node) { + return resolve(env.loadQueries(context, node.config), context) + } + }, + defaults: { + matches: [], + regexp: /^defaults$/i, + select: function (context) { + return resolve(browserslist.defaults, context) + } + }, + dead: { + matches: [], + regexp: /^dead$/i, + select: function (context) { + var dead = [ + 'Baidu >= 0', + 'ie <= 11', + 'ie_mob <= 11', + 'bb <= 10', + 'op_mob <= 12.1', + 'samsung 4' + ] + return resolve(dead, context) + } + }, + unknown: { + matches: [], + regexp: /^(\w+)$/i, + select: function (context, node) { + if (byName(node.query, context)) { + throw new BrowserslistError( + 'Specify versions in Browserslist query for browser ' + node.query + ) + } else { + throw unknownQuery(node.query) + } + } + } +} + +// Get and convert Can I Use data + +;(function () { + for (var name in agents) { + var browser = agents[name] + browserslist.data[name] = { + name: name, + versions: normalize(agents[name].versions), + released: normalize(agents[name].versions.slice(0, -3)), + releaseDate: agents[name].release_date + } + fillUsage(browserslist.usage.global, name, browser.usage_global) + + browserslist.versionAliases[name] = {} + for (var i = 0; i < browser.versions.length; i++) { + var full = browser.versions[i] + if (!full) continue + + if (full.indexOf('-') !== -1) { + var interval = full.split('-') + for (var j = 0; j < interval.length; j++) { + browserslist.versionAliases[name][interval[j]] = full + } + } + } + } + + browserslist.nodeVersions = jsReleases.map(function (release) { + return release.version + }) +})() + +module.exports = browserslist diff --git a/node_modules/browserslist/node.js b/node_modules/browserslist/node.js new file mode 100644 index 00000000..100ded66 --- /dev/null +++ b/node_modules/browserslist/node.js @@ -0,0 +1,410 @@ +var feature = require('caniuse-lite/dist/unpacker/feature').default +var region = require('caniuse-lite/dist/unpacker/region').default +var path = require('path') +var fs = require('fs') + +var BrowserslistError = require('./error') + +var IS_SECTION = /^\s*\[(.+)]\s*$/ +var CONFIG_PATTERN = /^browserslist-config-/ +var SCOPED_CONFIG__PATTERN = /@[^/]+\/browserslist-config(-|$|\/)/ +var TIME_TO_UPDATE_CANIUSE = 6 * 30 * 24 * 60 * 60 * 1000 +var FORMAT = + 'Browserslist config should be a string or an array ' + + 'of strings with browser queries' + +var dataTimeChecked = false +var filenessCache = {} +var configCache = {} +function checkExtend(name) { + var use = ' Use `dangerousExtend` option to disable.' + if (!CONFIG_PATTERN.test(name) && !SCOPED_CONFIG__PATTERN.test(name)) { + throw new BrowserslistError( + 'Browserslist config needs `browserslist-config-` prefix. ' + use + ) + } + if (name.replace(/^@[^/]+\//, '').indexOf('.') !== -1) { + throw new BrowserslistError( + '`.` not allowed in Browserslist config name. ' + use + ) + } + if (name.indexOf('node_modules') !== -1) { + throw new BrowserslistError( + '`node_modules` not allowed in Browserslist config.' + use + ) + } +} + +function isFile(file) { + if (file in filenessCache) { + return filenessCache[file] + } + var result = fs.existsSync(file) && fs.statSync(file).isFile() + if (!process.env.BROWSERSLIST_DISABLE_CACHE) { + filenessCache[file] = result + } + return result +} + +function eachParent(file, callback) { + var dir = isFile(file) ? path.dirname(file) : file + var loc = path.resolve(dir) + do { + var result = callback(loc) + if (typeof result !== 'undefined') return result + } while (loc !== (loc = path.dirname(loc))) + return undefined +} + +function check(section) { + if (Array.isArray(section)) { + for (var i = 0; i < section.length; i++) { + if (typeof section[i] !== 'string') { + throw new BrowserslistError(FORMAT) + } + } + } else if (typeof section !== 'string') { + throw new BrowserslistError(FORMAT) + } +} + +function pickEnv(config, opts) { + if (typeof config !== 'object') return config + + var name + if (typeof opts.env === 'string') { + name = opts.env + } else if (process.env.BROWSERSLIST_ENV) { + name = process.env.BROWSERSLIST_ENV + } else if (process.env.NODE_ENV) { + name = process.env.NODE_ENV + } else { + name = 'production' + } + + if (opts.throwOnMissing) { + if (name && name !== 'defaults' && !config[name]) { + throw new BrowserslistError( + 'Missing config for Browserslist environment `' + name + '`' + ) + } + } + + return config[name] || config.defaults +} + +function parsePackage(file) { + var config = JSON.parse( + fs + .readFileSync(file) + .toString() + .replace(/^\uFEFF/m, '') + ) + if (config.browserlist && !config.browserslist) { + throw new BrowserslistError( + '`browserlist` key instead of `browserslist` in ' + file + ) + } + var list = config.browserslist + if (Array.isArray(list) || typeof list === 'string') { + list = { defaults: list } + } + for (var i in list) { + check(list[i]) + } + + return list +} + +function latestReleaseTime(agents) { + var latest = 0 + for (var name in agents) { + var dates = agents[name].releaseDate || {} + for (var key in dates) { + if (latest < dates[key]) { + latest = dates[key] + } + } + } + return latest * 1000 +} + +function normalizeStats(data, stats) { + if (!data) { + data = {} + } + if (stats && 'dataByBrowser' in stats) { + stats = stats.dataByBrowser + } + + if (typeof stats !== 'object') return undefined + + var normalized = {} + for (var i in stats) { + var versions = Object.keys(stats[i]) + if (versions.length === 1 && data[i] && data[i].versions.length === 1) { + var normal = data[i].versions[0] + normalized[i] = {} + normalized[i][normal] = stats[i][versions[0]] + } else { + normalized[i] = stats[i] + } + } + + return normalized +} + +function normalizeUsageData(usageData, data) { + for (var browser in usageData) { + var browserUsage = usageData[browser] + // eslint-disable-next-line max-len + // https://github.com/browserslist/browserslist/issues/431#issuecomment-565230615 + // caniuse-db returns { 0: "percentage" } for `and_*` regional stats + if ('0' in browserUsage) { + var versions = data[browser].versions + browserUsage[versions[versions.length - 1]] = browserUsage[0] + delete browserUsage[0] + } + } +} + +module.exports = { + loadQueries: function loadQueries(ctx, name) { + if (!ctx.dangerousExtend && !process.env.BROWSERSLIST_DANGEROUS_EXTEND) { + checkExtend(name) + } + var queries = require(require.resolve(name, { paths: ['.', ctx.path] })) + if (queries) { + if (Array.isArray(queries)) { + return queries + } else if (typeof queries === 'object') { + if (!queries.defaults) queries.defaults = [] + return pickEnv(queries, ctx, name) + } + } + throw new BrowserslistError( + '`' + + name + + '` config exports not an array of queries' + + ' or an object of envs' + ) + }, + + loadStat: function loadStat(ctx, name, data) { + if (!ctx.dangerousExtend && !process.env.BROWSERSLIST_DANGEROUS_EXTEND) { + checkExtend(name) + } + var stats = require(require.resolve( + path.join(name, 'browserslist-stats.json'), + { paths: ['.'] } + )) + return normalizeStats(data, stats) + }, + + getStat: function getStat(opts, data) { + var stats + if (opts.stats) { + stats = opts.stats + } else if (process.env.BROWSERSLIST_STATS) { + stats = process.env.BROWSERSLIST_STATS + } else if (opts.path && path.resolve && fs.existsSync) { + stats = eachParent(opts.path, function (dir) { + var file = path.join(dir, 'browserslist-stats.json') + return isFile(file) ? file : undefined + }) + } + if (typeof stats === 'string') { + try { + stats = JSON.parse(fs.readFileSync(stats)) + } catch (e) { + throw new BrowserslistError("Can't read " + stats) + } + } + return normalizeStats(data, stats) + }, + + loadConfig: function loadConfig(opts) { + if (process.env.BROWSERSLIST) { + return process.env.BROWSERSLIST + } else if (opts.config || process.env.BROWSERSLIST_CONFIG) { + var file = opts.config || process.env.BROWSERSLIST_CONFIG + if (path.basename(file) === 'package.json') { + return pickEnv(parsePackage(file), opts) + } else { + return pickEnv(module.exports.readConfig(file), opts) + } + } else if (opts.path) { + return pickEnv(module.exports.findConfig(opts.path), opts) + } else { + return undefined + } + }, + + loadCountry: function loadCountry(usage, country, data) { + var code = country.replace(/[^\w-]/g, '') + if (!usage[code]) { + var compressed + try { + compressed = require('caniuse-lite/data/regions/' + code + '.js') + } catch (e) { + throw new BrowserslistError('Unknown region name `' + code + '`.') + } + var usageData = region(compressed) + normalizeUsageData(usageData, data) + usage[country] = {} + for (var i in usageData) { + for (var j in usageData[i]) { + usage[country][i + ' ' + j] = usageData[i][j] + } + } + } + }, + + loadFeature: function loadFeature(features, name) { + name = name.replace(/[^\w-]/g, '') + if (features[name]) return + var compressed + try { + compressed = require('caniuse-lite/data/features/' + name + '.js') + } catch (e) { + throw new BrowserslistError('Unknown feature name `' + name + '`.') + } + var stats = feature(compressed).stats + features[name] = {} + for (var i in stats) { + features[name][i] = {} + for (var j in stats[i]) { + features[name][i][j] = stats[i][j] + } + } + }, + + parseConfig: function parseConfig(string) { + var result = { defaults: [] } + var sections = ['defaults'] + + string + .toString() + .replace(/#[^\n]*/g, '') + .split(/\n|,/) + .map(function (line) { + return line.trim() + }) + .filter(function (line) { + return line !== '' + }) + .forEach(function (line) { + if (IS_SECTION.test(line)) { + sections = line.match(IS_SECTION)[1].trim().split(' ') + sections.forEach(function (section) { + if (result[section]) { + throw new BrowserslistError( + 'Duplicate section ' + section + ' in Browserslist config' + ) + } + result[section] = [] + }) + } else { + sections.forEach(function (section) { + result[section].push(line) + }) + } + }) + + return result + }, + + readConfig: function readConfig(file) { + if (!isFile(file)) { + throw new BrowserslistError("Can't read " + file + ' config') + } + return module.exports.parseConfig(fs.readFileSync(file)) + }, + + findConfig: function findConfig(from) { + from = path.resolve(from) + + var passed = [] + var resolved = eachParent(from, function (dir) { + if (dir in configCache) { + return configCache[dir] + } + + passed.push(dir) + + var config = path.join(dir, 'browserslist') + var pkg = path.join(dir, 'package.json') + var rc = path.join(dir, '.browserslistrc') + + var pkgBrowserslist + if (isFile(pkg)) { + try { + pkgBrowserslist = parsePackage(pkg) + } catch (e) { + if (e.name === 'BrowserslistError') throw e + console.warn( + '[Browserslist] Could not parse ' + pkg + '. Ignoring it.' + ) + } + } + + if (isFile(config) && pkgBrowserslist) { + throw new BrowserslistError( + dir + ' contains both browserslist and package.json with browsers' + ) + } else if (isFile(rc) && pkgBrowserslist) { + throw new BrowserslistError( + dir + ' contains both .browserslistrc and package.json with browsers' + ) + } else if (isFile(config) && isFile(rc)) { + throw new BrowserslistError( + dir + ' contains both .browserslistrc and browserslist' + ) + } else if (isFile(config)) { + return module.exports.readConfig(config) + } else if (isFile(rc)) { + return module.exports.readConfig(rc) + } else { + return pkgBrowserslist + } + }) + if (!process.env.BROWSERSLIST_DISABLE_CACHE) { + passed.forEach(function (dir) { + configCache[dir] = resolved + }) + } + return resolved + }, + + clearCaches: function clearCaches() { + dataTimeChecked = false + filenessCache = {} + configCache = {} + + this.cache = {} + }, + + oldDataWarning: function oldDataWarning(agentsObj) { + if (dataTimeChecked) return + dataTimeChecked = true + if (process.env.BROWSERSLIST_IGNORE_OLD_DATA) return + + var latest = latestReleaseTime(agentsObj) + var halfYearAgo = Date.now() - TIME_TO_UPDATE_CANIUSE + + if (latest !== 0 && latest < halfYearAgo) { + console.warn( + 'Browserslist: caniuse-lite is outdated. Please run:\n' + + ' npx update-browserslist-db@latest\n' + + ' Why you should do it regularly: ' + + 'https://github.com/browserslist/update-db#readme' + ) + } + }, + + currentNode: function currentNode() { + return 'node ' + process.versions.node + }, + + env: process.env +} diff --git a/node_modules/browserslist/node_modules/.bin/update-browserslist-db b/node_modules/browserslist/node_modules/.bin/update-browserslist-db new file mode 120000 index 00000000..693117f2 --- /dev/null +++ b/node_modules/browserslist/node_modules/.bin/update-browserslist-db @@ -0,0 +1 @@ +../../../update-browserslist-db/cli.js \ No newline at end of file diff --git a/node_modules/browserslist/package.json b/node_modules/browserslist/package.json new file mode 100644 index 00000000..13bd3cd1 --- /dev/null +++ b/node_modules/browserslist/package.json @@ -0,0 +1,44 @@ +{ + "name": "browserslist", + "version": "4.22.1", + "description": "Share target browsers between different front-end tools, like Autoprefixer, Stylelint and babel-env-preset", + "keywords": [ + "caniuse", + "browsers", + "target" + ], + "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" + } + ], + "author": "Andrey Sitnik ", + "license": "MIT", + "repository": "browserslist/browserslist", + "dependencies": { + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "bin": { + "browserslist": "cli.js" + }, + "types": "./index.d.ts", + "browser": { + "./node.js": "./browser.js", + "path": false + } +} diff --git a/node_modules/browserslist/parse.js b/node_modules/browserslist/parse.js new file mode 100644 index 00000000..56b534ab --- /dev/null +++ b/node_modules/browserslist/parse.js @@ -0,0 +1,78 @@ +var AND_REGEXP = /^\s+and\s+(.*)/i +var OR_REGEXP = /^(?:,\s*|\s+or\s+)(.*)/i + +function flatten(array) { + if (!Array.isArray(array)) return [array] + return array.reduce(function (a, b) { + return a.concat(flatten(b)) + }, []) +} + +function find(string, predicate) { + for (var n = 1, max = string.length; n <= max; n++) { + var parsed = string.substr(-n, n) + if (predicate(parsed, n, max)) { + return string.slice(0, -n) + } + } + return '' +} + +function matchQuery(all, query) { + var node = { query: query } + if (query.indexOf('not ') === 0) { + node.not = true + query = query.slice(4) + } + + for (var name in all) { + var type = all[name] + var match = query.match(type.regexp) + if (match) { + node.type = name + for (var i = 0; i < type.matches.length; i++) { + node[type.matches[i]] = match[i + 1] + } + return node + } + } + + node.type = 'unknown' + return node +} + +function matchBlock(all, string, qs) { + var node + return find(string, function (parsed, n, max) { + if (AND_REGEXP.test(parsed)) { + node = matchQuery(all, parsed.match(AND_REGEXP)[1]) + node.compose = 'and' + qs.unshift(node) + return true + } else if (OR_REGEXP.test(parsed)) { + node = matchQuery(all, parsed.match(OR_REGEXP)[1]) + node.compose = 'or' + qs.unshift(node) + return true + } else if (n === max) { + node = matchQuery(all, parsed.trim()) + node.compose = 'or' + qs.unshift(node) + return true + } + return false + }) +} + +module.exports = function parse(all, queries) { + if (!Array.isArray(queries)) queries = [queries] + return flatten( + queries.map(function (block) { + var qs = [] + do { + block = matchBlock(all, block, qs) + } while (block) + return qs + }) + ) +} diff --git a/node_modules/buffer-from/LICENSE b/node_modules/buffer-from/LICENSE new file mode 100644 index 00000000..e4bf1d69 --- /dev/null +++ b/node_modules/buffer-from/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016, 2018 Linus Unnebäck + +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. diff --git a/node_modules/buffer-from/index.js b/node_modules/buffer-from/index.js new file mode 100644 index 00000000..e1a58b5e --- /dev/null +++ b/node_modules/buffer-from/index.js @@ -0,0 +1,72 @@ +/* eslint-disable node/no-deprecated-api */ + +var toString = Object.prototype.toString + +var isModern = ( + typeof Buffer !== 'undefined' && + typeof Buffer.alloc === 'function' && + typeof Buffer.allocUnsafe === 'function' && + typeof Buffer.from === 'function' +) + +function isArrayBuffer (input) { + return toString.call(input).slice(8, -1) === 'ArrayBuffer' +} + +function fromArrayBuffer (obj, byteOffset, length) { + byteOffset >>>= 0 + + var maxLength = obj.byteLength - byteOffset + + if (maxLength < 0) { + throw new RangeError("'offset' is out of bounds") + } + + if (length === undefined) { + length = maxLength + } else { + length >>>= 0 + + if (length > maxLength) { + throw new RangeError("'length' is out of bounds") + } + } + + return isModern + ? Buffer.from(obj.slice(byteOffset, byteOffset + length)) + : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length))) +} + +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + return isModern + ? Buffer.from(string, encoding) + : new Buffer(string, encoding) +} + +function bufferFrom (value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (isArrayBuffer(value)) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + return isModern + ? Buffer.from(value) + : new Buffer(value) +} + +module.exports = bufferFrom diff --git a/node_modules/buffer-from/package.json b/node_modules/buffer-from/package.json new file mode 100644 index 00000000..6ac5327b --- /dev/null +++ b/node_modules/buffer-from/package.json @@ -0,0 +1,19 @@ +{ + "name": "buffer-from", + "version": "1.1.2", + "license": "MIT", + "repository": "LinusU/buffer-from", + "files": [ + "index.js" + ], + "scripts": { + "test": "standard && node test" + }, + "devDependencies": { + "standard": "^12.0.1" + }, + "keywords": [ + "buffer", + "buffer from" + ] +} diff --git a/node_modules/buffer-from/readme.md b/node_modules/buffer-from/readme.md new file mode 100644 index 00000000..9880a558 --- /dev/null +++ b/node_modules/buffer-from/readme.md @@ -0,0 +1,69 @@ +# Buffer From + +A [ponyfill](https://ponyfill.com) for `Buffer.from`, uses native implementation if available. + +## Installation + +```sh +npm install --save buffer-from +``` + +## Usage + +```js +const bufferFrom = require('buffer-from') + +console.log(bufferFrom([1, 2, 3, 4])) +//=> + +const arr = new Uint8Array([1, 2, 3, 4]) +console.log(bufferFrom(arr.buffer, 1, 2)) +//=> + +console.log(bufferFrom('test', 'utf8')) +//=> + +const buf = bufferFrom('test') +console.log(bufferFrom(buf)) +//=> +``` + +## API + +### bufferFrom(array) + +- `array` <Array> + +Allocates a new `Buffer` using an `array` of octets. + +### bufferFrom(arrayBuffer[, byteOffset[, length]]) + +- `arrayBuffer` <ArrayBuffer> The `.buffer` property of a TypedArray or ArrayBuffer +- `byteOffset` <Integer> Where to start copying from `arrayBuffer`. **Default:** `0` +- `length` <Integer> How many bytes to copy from `arrayBuffer`. **Default:** `arrayBuffer.length - byteOffset` + +When passed a reference to the `.buffer` property of a TypedArray instance, the +newly created `Buffer` will share the same allocated memory as the TypedArray. + +The optional `byteOffset` and `length` arguments specify a memory range within +the `arrayBuffer` that will be shared by the `Buffer`. + +### bufferFrom(buffer) + +- `buffer` <Buffer> An existing `Buffer` to copy data from + +Copies the passed `buffer` data onto a new `Buffer` instance. + +### bufferFrom(string[, encoding]) + +- `string` <String> A string to encode. +- `encoding` <String> The encoding of `string`. **Default:** `'utf8'` + +Creates a new `Buffer` containing the given JavaScript string `string`. If +provided, the `encoding` parameter identifies the character encoding of +`string`. + +## See also + +- [buffer-alloc](https://github.com/LinusU/buffer-alloc) A ponyfill for `Buffer.alloc` +- [buffer-alloc-unsafe](https://github.com/LinusU/buffer-alloc-unsafe) A ponyfill for `Buffer.allocUnsafe` diff --git a/node_modules/bytes/History.md b/node_modules/bytes/History.md new file mode 100644 index 00000000..13d463ab --- /dev/null +++ b/node_modules/bytes/History.md @@ -0,0 +1,82 @@ +3.0.0 / 2017-08-31 +================== + + * Change "kB" to "KB" in format output + * Remove support for Node.js 0.6 + * Remove support for ComponentJS + +2.5.0 / 2017-03-24 +================== + + * Add option "unit" + +2.4.0 / 2016-06-01 +================== + + * Add option "unitSeparator" + +2.3.0 / 2016-02-15 +================== + + * Drop partial bytes on all parsed units + * Fix non-finite numbers to `.format` to return `null` + * Fix parsing byte string that looks like hex + * perf: hoist regular expressions + +2.2.0 / 2015-11-13 +================== + + * add option "decimalPlaces" + * add option "fixedDecimals" + +2.1.0 / 2015-05-21 +================== + + * add `.format` export + * add `.parse` export + +2.0.2 / 2015-05-20 +================== + + * remove map recreation + * remove unnecessary object construction + +2.0.1 / 2015-05-07 +================== + + * fix browserify require + * remove node.extend dependency + +2.0.0 / 2015-04-12 +================== + + * add option "case" + * add option "thousandsSeparator" + * return "null" on invalid parse input + * support proper round-trip: bytes(bytes(num)) === num + * units no longer case sensitive when parsing + +1.0.0 / 2014-05-05 +================== + + * add negative support. fixes #6 + +0.3.0 / 2014-03-19 +================== + + * added terabyte support + +0.2.1 / 2013-04-01 +================== + + * add .component + +0.2.0 / 2012-10-28 +================== + + * bytes(200).should.eql('200b') + +0.1.0 / 2012-07-04 +================== + + * add bytes to string conversion [yields] diff --git a/node_modules/bytes/LICENSE b/node_modules/bytes/LICENSE new file mode 100644 index 00000000..63e95a96 --- /dev/null +++ b/node_modules/bytes/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2012-2014 TJ Holowaychuk +Copyright (c) 2015 Jed Watson + +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. diff --git a/node_modules/bytes/Readme.md b/node_modules/bytes/Readme.md new file mode 100644 index 00000000..9b53745d --- /dev/null +++ b/node_modules/bytes/Readme.md @@ -0,0 +1,125 @@ +# Bytes utility + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Utility to parse a string bytes (ex: `1TB`) to bytes (`1099511627776`) and vice-versa. + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```bash +$ npm install bytes +``` + +## Usage + +```js +var bytes = require('bytes'); +``` + +#### bytes.format(number value, [options]): string|null + +Format the given value in bytes into a string. If the value is negative, it is kept as such. If it is a float, it is + rounded. + +**Arguments** + +| Name | Type | Description | +|---------|----------|--------------------| +| value | `number` | Value in bytes | +| options | `Object` | Conversion options | + +**Options** + +| Property | Type | Description | +|-------------------|--------|-----------------------------------------------------------------------------------------| +| decimalPlaces | `number`|`null` | Maximum number of decimal places to include in output. Default value to `2`. | +| fixedDecimals | `boolean`|`null` | Whether to always display the maximum number of decimal places. Default value to `false` | +| thousandsSeparator | `string`|`null` | Example of values: `' '`, `','` and `.`... Default value to `''`. | +| unit | `string`|`null` | The unit in which the result will be returned (B/KB/MB/GB/TB). Default value to `''` (which means auto detect). | +| unitSeparator | `string`|`null` | Separator to use between number and unit. Default value to `''`. | + +**Returns** + +| Name | Type | Description | +|---------|------------------|-------------------------------------------------| +| results | `string`|`null` | Return null upon error. String value otherwise. | + +**Example** + +```js +bytes(1024); +// output: '1KB' + +bytes(1000); +// output: '1000B' + +bytes(1000, {thousandsSeparator: ' '}); +// output: '1 000B' + +bytes(1024 * 1.7, {decimalPlaces: 0}); +// output: '2KB' + +bytes(1024, {unitSeparator: ' '}); +// output: '1 KB' + +``` + +#### bytes.parse(string|number value): number|null + +Parse the string value into an integer in bytes. If no unit is given, or `value` +is a number, it is assumed the value is in bytes. + +Supported units and abbreviations are as follows and are case-insensitive: + + * `b` for bytes + * `kb` for kilobytes + * `mb` for megabytes + * `gb` for gigabytes + * `tb` for terabytes + +The units are in powers of two, not ten. This means 1kb = 1024b according to this parser. + +**Arguments** + +| Name | Type | Description | +|---------------|--------|--------------------| +| value | `string`|`number` | String to parse, or number in bytes. | + +**Returns** + +| Name | Type | Description | +|---------|-------------|-------------------------| +| results | `number`|`null` | Return null upon error. Value in bytes otherwise. | + +**Example** + +```js +bytes('1KB'); +// output: 1024 + +bytes('1024'); +// output: 1024 + +bytes(1024); +// output: 1024 +``` + +## License + +[MIT](LICENSE) + +[downloads-image]: https://img.shields.io/npm/dm/bytes.svg +[downloads-url]: https://npmjs.org/package/bytes +[npm-image]: https://img.shields.io/npm/v/bytes.svg +[npm-url]: https://npmjs.org/package/bytes +[travis-image]: https://img.shields.io/travis/visionmedia/bytes.js/master.svg +[travis-url]: https://travis-ci.org/visionmedia/bytes.js +[coveralls-image]: https://img.shields.io/coveralls/visionmedia/bytes.js/master.svg +[coveralls-url]: https://coveralls.io/r/visionmedia/bytes.js?branch=master diff --git a/node_modules/bytes/index.js b/node_modules/bytes/index.js new file mode 100644 index 00000000..1e39afd1 --- /dev/null +++ b/node_modules/bytes/index.js @@ -0,0 +1,159 @@ +/*! + * bytes + * Copyright(c) 2012-2014 TJ Holowaychuk + * Copyright(c) 2015 Jed Watson + * MIT Licensed + */ + +'use strict'; + +/** + * Module exports. + * @public + */ + +module.exports = bytes; +module.exports.format = format; +module.exports.parse = parse; + +/** + * Module variables. + * @private + */ + +var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g; + +var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/; + +var map = { + b: 1, + kb: 1 << 10, + mb: 1 << 20, + gb: 1 << 30, + tb: ((1 << 30) * 1024) +}; + +var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb)$/i; + +/** + * Convert the given value in bytes into a string or parse to string to an integer in bytes. + * + * @param {string|number} value + * @param {{ + * case: [string], + * decimalPlaces: [number] + * fixedDecimals: [boolean] + * thousandsSeparator: [string] + * unitSeparator: [string] + * }} [options] bytes options. + * + * @returns {string|number|null} + */ + +function bytes(value, options) { + if (typeof value === 'string') { + return parse(value); + } + + if (typeof value === 'number') { + return format(value, options); + } + + return null; +} + +/** + * Format the given value in bytes into a string. + * + * If the value is negative, it is kept as such. If it is a float, + * it is rounded. + * + * @param {number} value + * @param {object} [options] + * @param {number} [options.decimalPlaces=2] + * @param {number} [options.fixedDecimals=false] + * @param {string} [options.thousandsSeparator=] + * @param {string} [options.unit=] + * @param {string} [options.unitSeparator=] + * + * @returns {string|null} + * @public + */ + +function format(value, options) { + if (!Number.isFinite(value)) { + return null; + } + + var mag = Math.abs(value); + var thousandsSeparator = (options && options.thousandsSeparator) || ''; + var unitSeparator = (options && options.unitSeparator) || ''; + var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2; + var fixedDecimals = Boolean(options && options.fixedDecimals); + var unit = (options && options.unit) || ''; + + if (!unit || !map[unit.toLowerCase()]) { + if (mag >= map.tb) { + unit = 'TB'; + } else if (mag >= map.gb) { + unit = 'GB'; + } else if (mag >= map.mb) { + unit = 'MB'; + } else if (mag >= map.kb) { + unit = 'KB'; + } else { + unit = 'B'; + } + } + + var val = value / map[unit.toLowerCase()]; + var str = val.toFixed(decimalPlaces); + + if (!fixedDecimals) { + str = str.replace(formatDecimalsRegExp, '$1'); + } + + if (thousandsSeparator) { + str = str.replace(formatThousandsRegExp, thousandsSeparator); + } + + return str + unitSeparator + unit; +} + +/** + * Parse the string value into an integer in bytes. + * + * If no unit is given, it is assumed the value is in bytes. + * + * @param {number|string} val + * + * @returns {number|null} + * @public + */ + +function parse(val) { + if (typeof val === 'number' && !isNaN(val)) { + return val; + } + + if (typeof val !== 'string') { + return null; + } + + // Test if the string passed is valid + var results = parseRegExp.exec(val); + var floatValue; + var unit = 'b'; + + if (!results) { + // Nothing could be extracted from the given string + floatValue = parseInt(val, 10); + unit = 'b' + } else { + // Retrieve the value and the unit + floatValue = parseFloat(results[1]); + unit = results[4].toLowerCase(); + } + + return Math.floor(map[unit] * floatValue); +} diff --git a/node_modules/bytes/package.json b/node_modules/bytes/package.json new file mode 100644 index 00000000..21932965 --- /dev/null +++ b/node_modules/bytes/package.json @@ -0,0 +1,39 @@ +{ + "name": "bytes", + "description": "Utility to parse a string bytes to bytes and vice-versa", + "version": "3.0.0", + "author": "TJ Holowaychuk (http://tjholowaychuk.com)", + "contributors": [ + "Jed Watson ", + "Théo FIDRY " + ], + "license": "MIT", + "keywords": [ + "byte", + "bytes", + "utility", + "parse", + "parser", + "convert", + "converter" + ], + "repository": "visionmedia/bytes.js", + "devDependencies": { + "mocha": "2.5.3", + "nyc": "10.3.2" + }, + "files": [ + "History.md", + "LICENSE", + "Readme.md", + "index.js" + ], + "engines": { + "node": ">= 0.8" + }, + "scripts": { + "test": "mocha --check-leaks --reporter spec", + "test-ci": "nyc --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/node_modules/cacheable-lookup/LICENSE b/node_modules/cacheable-lookup/LICENSE new file mode 100644 index 00000000..92498ed0 --- /dev/null +++ b/node_modules/cacheable-lookup/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Szymon Marczak + +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. diff --git a/node_modules/cacheable-lookup/README.md b/node_modules/cacheable-lookup/README.md new file mode 100644 index 00000000..d04be69d --- /dev/null +++ b/node_modules/cacheable-lookup/README.md @@ -0,0 +1,245 @@ +# cacheable-lookup + +> A cacheable [`dns.lookup(…)`](https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback) that respects TTL :tada: + +[![Node CI](https://github.com/szmarczak/cacheable-lookup/workflows/Node%20CI/badge.svg)](https://github.com/szmarczak/cacheable-lookup/actions) +[![codecov](https://codecov.io/gh/szmarczak/cacheable-lookup/branch/master/graph/badge.svg)](https://codecov.io/gh/szmarczak/cacheable-lookup) +[![npm](https://img.shields.io/npm/dm/cacheable-lookup.svg)](https://www.npmjs.com/package/cacheable-lookup) +[![install size](https://packagephobia.now.sh/badge?p=cacheable-lookup)](https://packagephobia.now.sh/result?p=cacheable-lookup) + +Making lots of HTTP requests? You can save some time by caching DNS lookups :zap: + +## Usage + +### Using the `lookup` option + +```js +import http from 'node:http'; +import CacheableLookup from 'cacheable-lookup'; + +const cacheable = new CacheableLookup(); + +http.get('http://example.com', {lookup: cacheable.lookup}, response => { + // Handle the response here +}); +``` + +### Attaching CacheableLookup to an Agent + +```js +import http from 'node:http'; +import https from 'node:https'; +import CacheableLookup from 'cacheable-lookup'; + +const cacheable = new CacheableLookup(); + +cacheable.install(http.globalAgent); +cacheable.install(https.globalAgent); + +http.get('http://example.com', response => { + // Handle the response here +}); +``` + +## API + +### new CacheableLookup(options) + +Returns a new instance of `CacheableLookup`. + +#### options + +Type: `object`\ +Default: `{}` + +Options used to cache the DNS lookups. + +##### cache + +Type: `Map` | [`Keyv`](https://github.com/lukechilds/keyv/)\ +Default: `new Map()` + +Custom cache instance. If `undefined`, it will create a new one. + +**Note**: If you decide to use Keyv instead of the native implementation, the performance will drop by 10x. Memory leaks may occur as it doesn't provide any way to remove all the deprecated values at once. + +**Tip**: [`QuickLRU`](https://github.com/sindresorhus/quick-lru) is fully compatible with the Map API, you can use it to limit the amount of cached entries. Example: + +```js +import http from 'node:http'; +import CacheableLookup from 'cacheable-lookup'; +import QuickLRU from 'quick-lru'; + +const cacheable = new CacheableLookup({ + cache: new QuickLRU({maxSize: 1000}) +}); + +http.get('http://example.com', {lookup: cacheable.lookup}, response => { + // Handle the response here +}); +``` + +##### options.maxTtl + +Type: `number`\ +Default: `Infinity` + +The maximum lifetime of the entries received from the specifed DNS server (TTL in seconds). + +If set to `0`, it will make a new DNS query each time. + +**Pro Tip**: This shouldn't be lower than your DNS server response time in order to prevent bottlenecks. For example, if you use Cloudflare, this value should be greater than `0.01`. + +##### options.fallbackDuration + +Type: `number`\ +Default: `3600` (1 hour) + +When the DNS server responds with `ENOTFOUND` or `ENODATA` and the OS reports that the entry is available, it will use `dns.lookup(...)` directly for the requested hostnames for the specified amount of time (in seconds). + +**Note**: You should avoid setting this to `0` unless the provided DNS servers' database is limited to few domains. + +##### options.errorTtl + +Type: `number`\ +Default: `0.15` + +The time how long it needs to remember queries that threw `ENOTFOUND` or `ENODATA` (TTL in seconds). + +**Note**: This option is independent, `options.maxTtl` does not affect this. + +**Pro Tip**: This shouldn't be lower than your DNS server response time in order to prevent bottlenecks. For example, if you use Cloudflare, this value should be greater than `0.01`. + +##### options.resolver + +Type: `dns.Resolver | dns.promises.Resolver`\ +Default: [`new dns.promises.Resolver()`](https://nodejs.org/api/dns.html#dns_class_dns_resolver) + +An instance of [DNS Resolver](https://nodejs.org/api/dns.html#dns_class_dns_resolver) used to make DNS queries. + +##### options.lookup + +Type: `Function`\ +Default: [`dns.lookup`](https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback) + +The fallback function to use when the DNS server responds with `ENOTFOUND` or `ENODATA`. + +If you don't query internal hostnames (such as `localhost`, `database.local` etc.), it is strongly recommended to set this to `false`. + +### Entry object + +Type: `object` + +#### address + +Type: `string` + +The IP address (can be an IPv4 or IPv6 address). + +#### family + +Type: `number` + +The IP family (`4` or `6`). + +##### expires + +Type: `number` + +**Note**: This is not present when falling back to `dns.lookup(...)`! + +The timestamp (`Date.now() + ttl * 1000`) when the entry expires. + +#### ttl + +**Note**: This is not present when falling back to `dns.lookup(...)`! + +The time in seconds for its lifetime. + +#### source + +**Note**: This is not present when falling back to `dns.lookup(...)`! + +Whether this entry was loaded from the cache or came from a query (`cache` or `query`) + +### Entry object (callback-style) + +When `options.all` is `false`, then `callback(error, address, family, expires, ttl)` is called.\ +When `options.all` is `true`, then `callback(error, entries)` is called. + +### CacheableLookup instance + +#### servers + +Type: `Array` + +The DNS servers used to make queries. Can be overridden - doing so will clear the cache. + +#### [lookup(hostname, options, callback)](https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback) + +#### lookupAsync(hostname, options) + +The asynchronous version of `dns.lookup(…)`. + +Returns an [entry object](#entry-object).\ +If `options.all` is true, returns an array of entry objects. + +##### hostname + +Type: `string` + +##### options + +Type: `object` + +The same as the [`dns.lookup(…)`](https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback) options. + +#### query(hostname) + +An asynchronous function which returns cached DNS lookup entries.\ +This is the base for `lookupAsync(hostname, options)` and `lookup(hostname, options, callback)`. + +**Note**: This function has no options. + +Returns an array of objects with `address`, `family`, `ttl` and `expires` properties. + +#### queryAndCache(hostname) + +An asynchronous function which makes two DNS queries: A and AAAA. The result is cached.\ +This is used by `query(hostname)` if no entry in the database is present. + +Returns an array of objects with `address`, `family`, `ttl` and `expires` properties. + +#### updateInterfaceInfo() + +Updates interface info. For example, you need to run this when you plug or unplug your WiFi driver. + +**Note:** Running `updateInterfaceInfo()` will trigger `clear()` only on network interface removal. + +#### clear(hostname?) + +Clears the cache for the given hostname. If the hostname argument is not present, the entire cache will be emptied. + +## High performance + +Performed on: +- Query: `example.com` +- CPU: i7-7700k +- CPU governor: performance + +``` +CacheableLookup#lookupAsync x 2,896,251 ops/sec ±1.07% (85 runs sampled) +CacheableLookup#lookupAsync.all x 2,842,664 ops/sec ±1.11% (88 runs sampled) +CacheableLookup#lookupAsync.all.ADDRCONFIG x 2,598,283 ops/sec ±1.21% (88 runs sampled) +CacheableLookup#lookup x 2,565,913 ops/sec ±1.56% (85 runs sampled) +CacheableLookup#lookup.all x 2,609,039 ops/sec ±1.01% (86 runs sampled) +CacheableLookup#lookup.all.ADDRCONFIG x 2,416,242 ops/sec ±0.89% (85 runs sampled) +dns#lookup x 7,272 ops/sec ±0.36% (86 runs sampled) +dns#lookup.all x 7,249 ops/sec ±0.40% (86 runs sampled) +dns#lookup.all.ADDRCONFIG x 5,693 ops/sec ±0.28% (85 runs sampled) +Fastest is CacheableLookup#lookupAsync.all +``` + +## Related + +- [cacheable-request](https://github.com/lukechilds/cacheable-request) - Wrap native HTTP requests with RFC compliant cache support diff --git a/node_modules/cacheable-lookup/index.d.ts b/node_modules/cacheable-lookup/index.d.ts new file mode 100644 index 00000000..e805b70f --- /dev/null +++ b/node_modules/cacheable-lookup/index.d.ts @@ -0,0 +1,144 @@ +import {Resolver, promises as dnsPromises, lookup} from 'dns'; +import {Agent} from 'http'; + +type AsyncResolver = dnsPromises.Resolver; + +export type IPFamily = 4 | 6; +export type EntrySource = 'query' | 'cache'; + +type TPromise = T | Promise; + +export interface CacheInstance { + set(hostname: string, entries: EntryObject[], ttl: number): TPromise; + get(hostname: string): TPromise; + delete(hostname: string): TPromise; + clear(): TPromise; +} + +export interface Options { + /** + * Custom cache instance. If `undefined`, it will create a new one. + * @default undefined + */ + cache?: CacheInstance; + /** + * Limits the cache time (TTL). If set to `0`, it will make a new DNS query each time. + * @default Infinity + */ + maxTtl?: number; + /** + * DNS Resolver used to make DNS queries. + * @default new dns.promises.Resolver() + */ + resolver?: Resolver | AsyncResolver; + /** + * When the DNS server responds with `ENOTFOUND` or `ENODATA` and the OS reports that the entry is available, + * it will use `dns.lookup(...)` directly for the requested hostnames for the specified amount of time (in seconds). + * + * If you don't query internal hostnames (such as `localhost`, `database.local` etc.), + * it is strongly recommended to set this value to `0`. + * @default 3600 + */ + fallbackDuration?: number; + /** + * The time how long it needs to remember failed queries (TTL in seconds). + * + * **Note**: This option is independent, `options.maxTtl` does not affect this. + * @default 0.15 + */ + errorTtl?: number; + /** + * The fallback function to use when the DNS server responds with `ENOTFOUND` or `ENODATA`. + * + * **Note**: This has no effect if the `fallbackDuration` option is less than `1`. + * @default dns.lookup + */ + lookup?: typeof lookup | false; +} + +export interface EntryObject { + /** + * The IP address (can be an IPv4 or IPv5 address). + */ + readonly address: string; + /** + * The IP family. + */ + readonly family: IPFamily; + /** + * The original TTL. + */ + readonly ttl?: number; + /** + * The expiration timestamp. + */ + readonly expires?: number; + /** + * Whether this entry comes from the cache or a query + */ + readonly source?: EntrySource; +} + +export interface LookupOptions { + /** + * One or more supported getaddrinfo flags. Multiple flags may be passed by bitwise ORing their values. + */ + hints?: number; + /** + * The record family. Must be `4` or `6`. IPv4 and IPv6 addresses are both returned by default. + */ + family?: IPFamily; + /** + * When `true`, the callback returns all resolved addresses in an array. Otherwise, returns a single address. + * @default false + */ + all?: boolean; +} + +export default class CacheableLookup { + constructor(options?: Options); + /** + * The DNS servers used to make queries. Can be overridden - doing so will clear the cache. + */ + servers: string[]; + /** + * @see https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback + */ + lookup(hostname: string, family: IPFamily, callback: (error: NodeJS.ErrnoException | null, address: string, family: IPFamily) => void): void; + lookup(hostname: string, callback: (error: NodeJS.ErrnoException | null, address: string, family: IPFamily) => void): void; + lookup(hostname: string, options: LookupOptions & {all: true}, callback: (error: NodeJS.ErrnoException | null, result: ReadonlyArray) => void): void; + lookup(hostname: string, options: LookupOptions, callback: (error: NodeJS.ErrnoException | null, address: string, family: IPFamily) => void): void; + /** + * The asynchronous version of `dns.lookup(…)`. + */ + lookupAsync(hostname: string, options: LookupOptions & {all: true}): Promise>; + lookupAsync(hostname: string, options: LookupOptions): Promise; + lookupAsync(hostname: string): Promise; + lookupAsync(hostname: string, family: IPFamily): Promise; + /** + * An asynchronous function which returns cached DNS lookup entries. This is the base for `lookupAsync(hostname, options)` and `lookup(hostname, options, callback)`. + */ + query(hostname: string): Promise>; + /** + * An asynchronous function which makes a new DNS lookup query and updates the database. This is used by `query(hostname, family)` if no entry in the database is present. Returns an array of objects with `address`, `family`, `ttl` and `expires` properties. + */ + queryAndCache(hostname: string): Promise>; + /** + * Attaches itself to an Agent instance. + */ + install(agent: Agent): void; + /** + * Removes itself from an Agent instance. + */ + uninstall(agent: Agent): void; + /** + * Updates interface info. For example, you need to run this when you plug or unplug your WiFi driver. + * + * **Note:** Running `updateInterfaceInfo()` will trigger `clear()` only on network interface removal. + */ + updateInterfaceInfo(): void; + /** + * Clears the cache for the given hostname. If the hostname argument is not present, the entire cache will be emptied. + */ + clear(hostname?: string): void; +} diff --git a/node_modules/cacheable-lookup/package.json b/node_modules/cacheable-lookup/package.json new file mode 100644 index 00000000..d3d696aa --- /dev/null +++ b/node_modules/cacheable-lookup/package.json @@ -0,0 +1,61 @@ +{ + "name": "cacheable-lookup", + "version": "7.0.0", + "description": "A cacheable dns.lookup(…) that respects TTL", + "engines": { + "node": ">=14.16" + }, + "files": [ + "source", + "index.d.ts" + ], + "type": "module", + "exports": { + "types": "./index.d.ts", + "default": "./source/index.js" + }, + "scripts": { + "//test": "xo && nyc --reporter=lcovonly --reporter=text ava && tsd", + "test": "tsd" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/szmarczak/cacheable-lookup.git" + }, + "keywords": [ + "dns", + "lookup", + "cacheable", + "ttl" + ], + "author": "Szymon Marczak", + "license": "MIT", + "bugs": { + "url": "https://github.com/szmarczak/cacheable-lookup/issues" + }, + "homepage": "https://github.com/szmarczak/cacheable-lookup#readme", + "devDependencies": { + "@types/keyv": "^3.1.1", + "ava": "^4.3.3", + "benchmark": "^2.1.4", + "coveralls": "^3.0.9", + "keyv": "^4.0.0", + "nyc": "^15.0.0", + "quibble": "^0.6.14", + "quick-lru": "^5.1.0", + "tsd": "^0.11.0", + "xo": "^0.25.3" + }, + "ava": { + "nodeArguments": [ + "--loader=quibble" + ] + }, + "xo": { + "rules": { + "unicorn/import-index": "off", + "import/extensions": "off", + "import/no-useless-path-segments": "off" + } + } +} diff --git a/node_modules/cacheable-lookup/source/index.js b/node_modules/cacheable-lookup/source/index.js new file mode 100644 index 00000000..2accc60b --- /dev/null +++ b/node_modules/cacheable-lookup/source/index.js @@ -0,0 +1,452 @@ +import { + V4MAPPED, + ADDRCONFIG, + ALL, + promises as dnsPromises, + lookup as dnsLookup +} from 'node:dns'; +import {promisify} from 'node:util'; +import os from 'node:os'; + +const {Resolver: AsyncResolver} = dnsPromises; + +const kCacheableLookupCreateConnection = Symbol('cacheableLookupCreateConnection'); +const kCacheableLookupInstance = Symbol('cacheableLookupInstance'); +const kExpires = Symbol('expires'); + +const supportsALL = typeof ALL === 'number'; + +const verifyAgent = agent => { + if (!(agent && typeof agent.createConnection === 'function')) { + throw new Error('Expected an Agent instance as the first argument'); + } +}; + +const map4to6 = entries => { + for (const entry of entries) { + if (entry.family === 6) { + continue; + } + + entry.address = `::ffff:${entry.address}`; + entry.family = 6; + } +}; + +const getIfaceInfo = () => { + let has4 = false; + let has6 = false; + + for (const device of Object.values(os.networkInterfaces())) { + for (const iface of device) { + if (iface.internal) { + continue; + } + + if (iface.family === 'IPv6') { + has6 = true; + } else { + has4 = true; + } + + if (has4 && has6) { + return {has4, has6}; + } + } + } + + return {has4, has6}; +}; + +const isIterable = map => { + return Symbol.iterator in map; +}; + +const ignoreNoResultErrors = dnsPromise => { + return dnsPromise.catch(error => { + if ( + error.code === 'ENODATA' || + error.code === 'ENOTFOUND' || + error.code === 'ENOENT' // Windows: name exists, but not this record type + ) { + return []; + } + + throw error; + }); +}; + +const ttl = {ttl: true}; +const all = {all: true}; +const all4 = {all: true, family: 4}; +const all6 = {all: true, family: 6}; + +export default class CacheableLookup { + constructor({ + cache = new Map(), + maxTtl = Infinity, + fallbackDuration = 3600, + errorTtl = 0.15, + resolver = new AsyncResolver(), + lookup = dnsLookup + } = {}) { + this.maxTtl = maxTtl; + this.errorTtl = errorTtl; + + this._cache = cache; + this._resolver = resolver; + this._dnsLookup = lookup && promisify(lookup); + this.stats = { + cache: 0, + query: 0 + }; + + if (this._resolver instanceof AsyncResolver) { + this._resolve4 = this._resolver.resolve4.bind(this._resolver); + this._resolve6 = this._resolver.resolve6.bind(this._resolver); + } else { + this._resolve4 = promisify(this._resolver.resolve4.bind(this._resolver)); + this._resolve6 = promisify(this._resolver.resolve6.bind(this._resolver)); + } + + this._iface = getIfaceInfo(); + + this._pending = {}; + this._nextRemovalTime = false; + this._hostnamesToFallback = new Set(); + + this.fallbackDuration = fallbackDuration; + + if (fallbackDuration > 0) { + const interval = setInterval(() => { + this._hostnamesToFallback.clear(); + }, fallbackDuration * 1000); + + /* istanbul ignore next: There is no `interval.unref()` when running inside an Electron renderer */ + if (interval.unref) { + interval.unref(); + } + + this._fallbackInterval = interval; + } + + this.lookup = this.lookup.bind(this); + this.lookupAsync = this.lookupAsync.bind(this); + } + + set servers(servers) { + this.clear(); + + this._resolver.setServers(servers); + } + + get servers() { + return this._resolver.getServers(); + } + + lookup(hostname, options, callback) { + if (typeof options === 'function') { + callback = options; + options = {}; + } else if (typeof options === 'number') { + options = { + family: options + }; + } + + if (!callback) { + throw new Error('Callback must be a function.'); + } + + // eslint-disable-next-line promise/prefer-await-to-then + this.lookupAsync(hostname, options).then(result => { + if (options.all) { + callback(null, result); + } else { + callback(null, result.address, result.family, result.expires, result.ttl, result.source); + } + }, callback); + } + + async lookupAsync(hostname, options = {}) { + if (typeof options === 'number') { + options = { + family: options + }; + } + + let cached = await this.query(hostname); + + if (options.family === 6) { + const filtered = cached.filter(entry => entry.family === 6); + + if (options.hints & V4MAPPED) { + if ((supportsALL && options.hints & ALL) || filtered.length === 0) { + map4to6(cached); + } else { + cached = filtered; + } + } else { + cached = filtered; + } + } else if (options.family === 4) { + cached = cached.filter(entry => entry.family === 4); + } + + if (options.hints & ADDRCONFIG) { + const {_iface} = this; + cached = cached.filter(entry => entry.family === 6 ? _iface.has6 : _iface.has4); + } + + if (cached.length === 0) { + const error = new Error(`cacheableLookup ENOTFOUND ${hostname}`); + error.code = 'ENOTFOUND'; + error.hostname = hostname; + + throw error; + } + + if (options.all) { + return cached; + } + + return cached[0]; + } + + async query(hostname) { + let source = 'cache'; + let cached = await this._cache.get(hostname); + + if (cached) { + this.stats.cache++; + } + + if (!cached) { + const pending = this._pending[hostname]; + if (pending) { + this.stats.cache++; + cached = await pending; + } else { + source = 'query'; + const newPromise = this.queryAndCache(hostname); + this._pending[hostname] = newPromise; + this.stats.query++; + try { + cached = await newPromise; + } finally { + delete this._pending[hostname]; + } + } + } + + cached = cached.map(entry => { + return {...entry, source}; + }); + + return cached; + } + + async _resolve(hostname) { + // ANY is unsafe as it doesn't trigger new queries in the underlying server. + const [A, AAAA] = await Promise.all([ + ignoreNoResultErrors(this._resolve4(hostname, ttl)), + ignoreNoResultErrors(this._resolve6(hostname, ttl)) + ]); + + let aTtl = 0; + let aaaaTtl = 0; + let cacheTtl = 0; + + const now = Date.now(); + + for (const entry of A) { + entry.family = 4; + entry.expires = now + (entry.ttl * 1000); + + aTtl = Math.max(aTtl, entry.ttl); + } + + for (const entry of AAAA) { + entry.family = 6; + entry.expires = now + (entry.ttl * 1000); + + aaaaTtl = Math.max(aaaaTtl, entry.ttl); + } + + if (A.length > 0) { + if (AAAA.length > 0) { + cacheTtl = Math.min(aTtl, aaaaTtl); + } else { + cacheTtl = aTtl; + } + } else { + cacheTtl = aaaaTtl; + } + + return { + entries: [ + ...A, + ...AAAA + ], + cacheTtl + }; + } + + async _lookup(hostname) { + try { + const [A, AAAA] = await Promise.all([ + // Passing {all: true} doesn't return all IPv4 and IPv6 entries. + // See https://github.com/szmarczak/cacheable-lookup/issues/42 + ignoreNoResultErrors(this._dnsLookup(hostname, all4)), + ignoreNoResultErrors(this._dnsLookup(hostname, all6)) + ]); + + return { + entries: [ + ...A, + ...AAAA + ], + cacheTtl: 0 + }; + } catch { + return { + entries: [], + cacheTtl: 0 + }; + } + } + + async _set(hostname, data, cacheTtl) { + if (this.maxTtl > 0 && cacheTtl > 0) { + cacheTtl = Math.min(cacheTtl, this.maxTtl) * 1000; + data[kExpires] = Date.now() + cacheTtl; + + try { + await this._cache.set(hostname, data, cacheTtl); + } catch (error) { + this.lookupAsync = async () => { + const cacheError = new Error('Cache Error. Please recreate the CacheableLookup instance.'); + cacheError.cause = error; + + throw cacheError; + }; + } + + if (isIterable(this._cache)) { + this._tick(cacheTtl); + } + } + } + + async queryAndCache(hostname) { + if (this._hostnamesToFallback.has(hostname)) { + return this._dnsLookup(hostname, all); + } + + let query = await this._resolve(hostname); + + if (query.entries.length === 0 && this._dnsLookup) { + query = await this._lookup(hostname); + + if (query.entries.length !== 0 && this.fallbackDuration > 0) { + // Use `dns.lookup(...)` for that particular hostname + this._hostnamesToFallback.add(hostname); + } + } + + const cacheTtl = query.entries.length === 0 ? this.errorTtl : query.cacheTtl; + await this._set(hostname, query.entries, cacheTtl); + + return query.entries; + } + + _tick(ms) { + const nextRemovalTime = this._nextRemovalTime; + + if (!nextRemovalTime || ms < nextRemovalTime) { + clearTimeout(this._removalTimeout); + + this._nextRemovalTime = ms; + + this._removalTimeout = setTimeout(() => { + this._nextRemovalTime = false; + + let nextExpiry = Infinity; + + const now = Date.now(); + + for (const [hostname, entries] of this._cache) { + const expires = entries[kExpires]; + + if (now >= expires) { + this._cache.delete(hostname); + } else if (expires < nextExpiry) { + nextExpiry = expires; + } + } + + if (nextExpiry !== Infinity) { + this._tick(nextExpiry - now); + } + }, ms); + + /* istanbul ignore next: There is no `timeout.unref()` when running inside an Electron renderer */ + if (this._removalTimeout.unref) { + this._removalTimeout.unref(); + } + } + } + + install(agent) { + verifyAgent(agent); + + if (kCacheableLookupCreateConnection in agent) { + throw new Error('CacheableLookup has been already installed'); + } + + agent[kCacheableLookupCreateConnection] = agent.createConnection; + agent[kCacheableLookupInstance] = this; + + agent.createConnection = (options, callback) => { + if (!('lookup' in options)) { + options.lookup = this.lookup; + } + + return agent[kCacheableLookupCreateConnection](options, callback); + }; + } + + uninstall(agent) { + verifyAgent(agent); + + if (agent[kCacheableLookupCreateConnection]) { + if (agent[kCacheableLookupInstance] !== this) { + throw new Error('The agent is not owned by this CacheableLookup instance'); + } + + agent.createConnection = agent[kCacheableLookupCreateConnection]; + + delete agent[kCacheableLookupCreateConnection]; + delete agent[kCacheableLookupInstance]; + } + } + + updateInterfaceInfo() { + const {_iface} = this; + + this._iface = getIfaceInfo(); + + if ((_iface.has4 && !this._iface.has4) || (_iface.has6 && !this._iface.has6)) { + this._cache.clear(); + } + } + + clear(hostname) { + if (hostname) { + this._cache.delete(hostname); + return; + } + + this._cache.clear(); + } +} diff --git a/node_modules/cacheable-request/README.md b/node_modules/cacheable-request/README.md new file mode 100644 index 00000000..ade22ace --- /dev/null +++ b/node_modules/cacheable-request/README.md @@ -0,0 +1,335 @@ +


cacheable logo

+ +# cacheable-request + +> Wrap native HTTP requests with RFC compliant cache support + +[![tests](https://github.com/jaredwray/cacheable/actions/workflows/tests.yaml/badge.svg)](https://github.com/jaredwray/cacheable/actions/workflows/tests.yaml) +[![codecov](https://codecov.io/gh/jaredwray/cacheable/branch/master/graph/badge.svg?token=LDLaqe4PsI)](https://codecov.io/gh/jaredwray/cacheable) +[![npm](https://img.shields.io/npm/dm/cacheable-request.svg)](https://www.npmjs.com/package/cacheable-request) +[![npm](https://img.shields.io/npm/v/cacheable-request.svg)](https://www.npmjs.com/package/cacheable-request) + +[RFC 7234](http://httpwg.org/specs/rfc7234.html) compliant HTTP caching for native Node.js HTTP/HTTPS requests. Caching works out of the box in memory or is easily pluggable with a wide range of storage adapters. + +**Note:** This is a low level wrapper around the core HTTP modules, it's not a high level request library. + +# Table of Contents +* [Latest Changes](#latest-changes) +* [Features](#features) +* [Install and Usage](#install-and-usage) +* [Storage Adapters](#storage-adapters) +* [API](#api) +* [Using Hooks](#using-hooks) +* [Contributing](#contributing) +* [Ask a Question](#ask-a-question) +* [License](#license) (MIT) + +# Latest Changes + +## Breaking Changes with v10.0.0 +This release contains breaking changes. This is the new way to use this package. + +### Usage Before v10 +```js +import http from 'http'; +import CacheableRequest from 'cacheable-request'; + +// Then instead of +const req = http.request('http://example.com', cb); +req.end(); + +// You can do +const cacheableRequest = new CacheableRequest(http.request); +const cacheReq = cacheableRequest('http://example.com', cb); +cacheReq.on('request', req => req.end()); +// Future requests to 'example.com' will be returned from cache if still valid + +// You pass in any other http.request API compatible method to be wrapped with cache support: +const cacheableRequest = new CacheableRequest(https.request); +const cacheableRequest = new CacheableRequest(electron.net); +``` + +### Usage After v10.1.0 +```js + +import CacheableRequest from 'cacheable-request'; + +// Now You can do +const cacheableRequest = new CacheableRequest(http.request).request(); +const cacheReq = cacheableRequest('http://example.com', cb); +cacheReq.on('request', req => req.end()); +// Future requests to 'example.com' will be returned from cache if still valid + +// You pass in any other http.request API compatible method to be wrapped with cache support: +const cacheableRequest = new CacheableRequest(https.request).request(); +const cacheableRequest = new CacheableRequest(electron.net).request(); +``` + +The biggest change is that when you do a `new` CacheableRequest you now want to call `request` method will give you the instance to use. + +```diff +- const cacheableRequest = new CacheableRequest(http.request); ++ const cacheableRequest = new CacheableRequest(http.request).request(); +``` + +### ESM Support in version 9 and higher. + +We are now using pure esm support in our package. If you need to use commonjs you can use v8 or lower. To learn more about using ESM please read this from `sindresorhus`: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c + +## Features + +- Only stores cacheable responses as defined by RFC 7234 +- Fresh cache entries are served directly from cache +- Stale cache entries are revalidated with `If-None-Match`/`If-Modified-Since` headers +- 304 responses from revalidation requests use cached body +- Updates `Age` header on cached responses +- Can completely bypass cache on a per request basis +- In memory cache by default +- Official support for Redis, Memcache, Etcd, MongoDB, SQLite, PostgreSQL and MySQL storage adapters +- Easily plug in your own or third-party storage adapters +- If DB connection fails, cache is automatically bypassed ([disabled by default](#optsautomaticfailover)) +- Adds cache support to any existing HTTP code with minimal changes +- Uses [http-cache-semantics](https://github.com/pornel/http-cache-semantics) internally for HTTP RFC 7234 compliance + +## Install and Usage + +```shell +npm install cacheable-request +``` + +```js +import http from 'http'; +import CacheableRequest from 'cacheable-request'; + +// Then instead of +const req = http.request('http://example.com', cb); +req.end(); + +// You can do +const cacheableRequest = new CacheableRequest(http.request).createCacheableRequest(); +const cacheReq = cacheableRequest('http://example.com', cb); +cacheReq.on('request', req => req.end()); +// Future requests to 'example.com' will be returned from cache if still valid + +// You pass in any other http.request API compatible method to be wrapped with cache support: +const cacheableRequest = new CacheableRequest(https.request).createCacheableRequest(); +const cacheableRequest = new CacheableRequest(electron.net).createCacheableRequest(); +``` + +## Storage Adapters + +`cacheable-request` uses [Keyv](https://github.com/jaredwray/keyv) to support a wide range of storage adapters. + +For example, to use Redis as a cache backend, you just need to install the official Redis Keyv storage adapter: + +``` +npm install @keyv/redis +``` + +And then you can pass `CacheableRequest` your connection string: + +```js +const cacheableRequest = new CacheableRequest(http.request, 'redis://user:pass@localhost:6379').createCacheableRequest(); +``` + +[View all official Keyv storage adapters.](https://github.com/jaredwray/keyv#official-storage-adapters) + +Keyv also supports anything that follows the Map API so it's easy to write your own storage adapter or use a third-party solution. + +e.g The following are all valid storage adapters + +```js +const storageAdapter = new Map(); +// or +const storageAdapter = require('./my-storage-adapter'); +// or +const QuickLRU = require('quick-lru'); +const storageAdapter = new QuickLRU({ maxSize: 1000 }); + +const cacheableRequest = new CacheableRequest(http.request, storageAdapter).createCacheableRequest(); +``` + +View the [Keyv docs](https://github.com/jaredwray/keyv) for more information on how to use storage adapters. + +## API + +### new cacheableRequest(request, [storageAdapter]) + +Returns the provided request function wrapped with cache support. + +#### request + +Type: `function` + +Request function to wrap with cache support. Should be [`http.request`](https://nodejs.org/api/http.html#http_http_request_options_callback) or a similar API compatible request function. + +#### storageAdapter + +Type: `Keyv storage adapter`
+Default: `new Map()` + +A [Keyv](https://github.com/jaredwray/keyv) storage adapter instance, or connection string if using with an official Keyv storage adapter. + +### Instance + +#### cacheableRequest(opts, [cb]) + +Returns an event emitter. + +##### opts + +Type: `object`, `string` + +- Any of the default request functions options. +- Any [`http-cache-semantics`](https://github.com/kornelski/http-cache-semantics#constructor-options) options. +- Any of the following: + +###### opts.cache + +Type: `boolean`
+Default: `true` + +If the cache should be used. Setting this to false will completely bypass the cache for the current request. + +###### opts.strictTtl + +Type: `boolean`
+Default: `false` + +If set to `true` once a cached resource has expired it is deleted and will have to be re-requested. + +If set to `false` (default), after a cached resource's TTL expires it is kept in the cache and will be revalidated on the next request with `If-None-Match`/`If-Modified-Since` headers. + +###### opts.maxTtl + +Type: `number`
+Default: `undefined` + +Limits TTL. The `number` represents milliseconds. + +###### opts.automaticFailover + +Type: `boolean`
+Default: `false` + +When set to `true`, if the DB connection fails we will automatically fallback to a network request. DB errors will still be emitted to notify you of the problem even though the request callback may succeed. + +###### opts.forceRefresh + +Type: `boolean`
+Default: `false` + +Forces refreshing the cache. If the response could be retrieved from the cache, it will perform a new request and override the cache instead. + +##### cb + +Type: `function` + +The callback function which will receive the response as an argument. + +The response can be either a [Node.js HTTP response stream](https://nodejs.org/api/http.html#http_class_http_incomingmessage) or a [responselike object](https://github.com/lukechilds/responselike). The response will also have a `fromCache` property set with a boolean value. + +##### .on('request', request) + +`request` event to get the request object of the request. + +**Note:** This event will only fire if an HTTP request is actually made, not when a response is retrieved from cache. However, you should always handle the `request` event to end the request and handle any potential request errors. + +##### .on('response', response) + +`response` event to get the response object from the HTTP request or cache. + +##### .on('error', error) + +`error` event emitted in case of an error with the cache. + +Errors emitted here will be an instance of `CacheableRequest.RequestError` or `CacheableRequest.CacheError`. You will only ever receive a `RequestError` if the request function throws (normally caused by invalid user input). Normal request errors should be handled inside the `request` event. + +To properly handle all error scenarios you should use the following pattern: + +```js +cacheableRequest('example.com', cb) + .on('error', err => { + if (err instanceof CacheableRequest.CacheError) { + handleCacheError(err); // Cache error + } else if (err instanceof CacheableRequest.RequestError) { + handleRequestError(err); // Request function thrown + } + }) + .on('request', req => { + req.on('error', handleRequestError); // Request error emitted + req.end(); + }); +``` +**Note:** Database connection errors are emitted here, however `cacheable-request` will attempt to re-request the resource and bypass the cache on a connection error. Therefore a database connection error doesn't necessarily mean the request won't be fulfilled. + + +## Using Hooks +Hooks have been implemented since version `v9` and are very useful to modify response before saving it in cache. You can use hooks to modify response before saving it in cache. + +### Add Hooks + +The hook will pre compute response right before saving it in cache. You can include many hooks and it will run in order you add hook on response object. + +```js +import http from 'http'; +import CacheableRequest from 'cacheable-request'; + +const cacheableRequest = new CacheableRequest(request, cache).request(); + +// adding a hook to decompress response +cacheableRequest.addHook('onResponse', async (value: CacheValue, response: any) => { + const buffer = await pm(gunzip)(value.body); + value.body = buffer.toString(); + return value; +}); +``` + +here is also an example of how to add in the remote address + +```js +import CacheableRequest, {CacheValue} from 'cacheable-request'; + +const cacheableRequest = new CacheableRequest(request, cache).request(); +cacheableRequest.addHook('onResponse', (value: CacheValue, response: any) => { + if (response.connection) { + value.remoteAddress = response.connection.remoteAddress; + } + + return value; +}); +``` + +### Remove Hooks + +You can also remove hook by using below + +```js +CacheableRequest.removeHook('onResponse'); +``` + +## How to Contribute + +Cacheable-Request is an open source package and community driven that is maintained regularly. In addtion we have a couple of other guidelines for review: + +* [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) - Our code of conduct +* [CONTRIBUTING.md](CONTRIBUTING.md) - How to contribute to this project +* [SECURITY.md](SECURITY.md) - Security guidelines and supported versions + +## Post an Issue + +To post an issue, navigate to the "Issues" tab in the main repository, and then select "New Issue." Enter a clear title describing the issue, as well as a description containing additional relevant information. Also select the label that best describes your issue type. For a bug report, for example, create an issue with the label "bug." In the description field, Be sure to include replication steps, as well as any relevant error messages. + +If you're reporting a security violation, be sure to check out the project's [security policy](SECURITY.md). + +Please also refer to our [Code of Conduct](CODE_OF_CONDUCT.md) for more information on how to report issues. + +## Ask a Question + +To ask a question, create an issue with the label "question." In the issue description, include the related code and any context that can help us answer your question. + +## License + +This project is under the [MIT](LICENSE) license. + +MIT © Luke Childs 2017-2021 and Jared Wray 2022+ diff --git a/node_modules/cacheable-request/node_modules/mimic-response/index.d.ts b/node_modules/cacheable-request/node_modules/mimic-response/index.d.ts new file mode 100644 index 00000000..324613fb --- /dev/null +++ b/node_modules/cacheable-request/node_modules/mimic-response/index.d.ts @@ -0,0 +1,29 @@ +import {IncomingMessage} from 'node:http'; + +/** +Mimic a [Node.js HTTP response stream](https://nodejs.org/api/http.html#http_class_http_incomingmessage) + +Makes `toStream` include the properties from `fromStream`. + +@param fromStream - The stream to copy the properties from. +@param toStream - The stream to copy the properties to. +@return The same object as `toStream`. + +@example +``` +import {PassThrough as PassThroughStream} from 'node:stream'; +import mimicResponse from 'mimic-response'; + +const responseStream = getHttpResponseStream(); +const myStream = new PassThroughStream(); + +mimicResponse(responseStream, myStream); + +console.log(myStream.statusCode); +//=> 200 +``` +*/ +export default function mimicResponse( + fromStream: IncomingMessage, + toStream: T, +): T & IncomingMessage; diff --git a/node_modules/cacheable-request/node_modules/mimic-response/index.js b/node_modules/cacheable-request/node_modules/mimic-response/index.js new file mode 100644 index 00000000..a2e898f6 --- /dev/null +++ b/node_modules/cacheable-request/node_modules/mimic-response/index.js @@ -0,0 +1,75 @@ +// We define these manually to ensure they're always copied +// even if they would move up the prototype chain +// https://nodejs.org/api/http.html#http_class_http_incomingmessage +const knownProperties = [ + 'aborted', + 'complete', + 'headers', + 'httpVersion', + 'httpVersionMinor', + 'httpVersionMajor', + 'method', + 'rawHeaders', + 'rawTrailers', + 'setTimeout', + 'socket', + 'statusCode', + 'statusMessage', + 'trailers', + 'url', +]; + +export default function mimicResponse(fromStream, toStream) { + if (toStream._readableState.autoDestroy) { + throw new Error('The second stream must have the `autoDestroy` option set to `false`'); + } + + const fromProperties = new Set([...Object.keys(fromStream), ...knownProperties]); + + const properties = {}; + + for (const property of fromProperties) { + // Don't overwrite existing properties. + if (property in toStream) { + continue; + } + + properties[property] = { + get() { + const value = fromStream[property]; + const isFunction = typeof value === 'function'; + + return isFunction ? value.bind(fromStream) : value; + }, + set(value) { + fromStream[property] = value; + }, + enumerable: true, + configurable: false, + }; + } + + Object.defineProperties(toStream, properties); + + fromStream.once('aborted', () => { + toStream.destroy(); + + toStream.emit('aborted'); + }); + + fromStream.once('close', () => { + if (fromStream.complete) { + if (toStream.readable) { + toStream.once('end', () => { + toStream.emit('close'); + }); + } else { + toStream.emit('close'); + } + } else { + toStream.emit('close'); + } + }); + + return toStream; +} diff --git a/node_modules/cacheable-request/node_modules/mimic-response/license b/node_modules/cacheable-request/node_modules/mimic-response/license new file mode 100644 index 00000000..fa7ceba3 --- /dev/null +++ b/node_modules/cacheable-request/node_modules/mimic-response/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +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. diff --git a/node_modules/cacheable-request/node_modules/mimic-response/package.json b/node_modules/cacheable-request/node_modules/mimic-response/package.json new file mode 100644 index 00000000..bf5e8ca5 --- /dev/null +++ b/node_modules/cacheable-request/node_modules/mimic-response/package.json @@ -0,0 +1,44 @@ +{ + "name": "mimic-response", + "version": "4.0.0", + "description": "Mimic a Node.js HTTP response stream", + "license": "MIT", + "repository": "sindresorhus/mimic-response", + "funding": "https://github.com/sponsors/sindresorhus", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "https://sindresorhus.com" + }, + "type": "module", + "exports": "./index.js", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.d.ts", + "index.js" + ], + "keywords": [ + "mimic", + "response", + "stream", + "http", + "https", + "request", + "get", + "core" + ], + "devDependencies": { + "@types/node": "^16.4.13", + "ava": "^3.15.0", + "create-test-server": "^3.0.1", + "p-event": "^4.2.0", + "pify": "^5.0.0", + "tsd": "^0.17.0", + "xo": "^0.44.0" + } +} diff --git a/node_modules/cacheable-request/node_modules/mimic-response/readme.md b/node_modules/cacheable-request/node_modules/mimic-response/readme.md new file mode 100644 index 00000000..09f12995 --- /dev/null +++ b/node_modules/cacheable-request/node_modules/mimic-response/readme.md @@ -0,0 +1,78 @@ +# mimic-response + +> Mimic a [Node.js HTTP response stream](https://nodejs.org/api/http.html#http_class_http_incomingmessage) + +## Install + +``` +$ npm install mimic-response +``` + +## Usage + +```js +import {PassThrough as PassThroughStream} from 'node:stream'; +import mimicResponse from 'mimic-response'; + +const responseStream = getHttpResponseStream(); +const myStream = new PassThroughStream(); + +mimicResponse(responseStream, myStream); + +console.log(myStream.statusCode); +//=> 200 +``` + +## API + +### mimicResponse(from, to) + +**Note #1:** The `from.destroy(error)` function is not proxied. You have to call it manually: + +```js +import {PassThrough as PassThroughStream} from 'node:stream'; +import mimicResponse from 'mimic-response'; + +const responseStream = getHttpResponseStream(); + +const myStream = new PassThroughStream({ + destroy(error, callback) { + responseStream.destroy(); + + callback(error); + } +}); + +myStream.destroy(); +``` + +Please note that `myStream` and `responseStream` never throw. The error is passed to the request instead. + +#### from + +Type: `Stream` + +[Node.js HTTP response stream.](https://nodejs.org/api/http.html#http_class_http_incomingmessage) + +#### to + +Type: `Stream` + +Any stream. + +## Related + +- [mimic-fn](https://github.com/sindresorhus/mimic-fn) - Make a function mimic another one +- [clone-response](https://github.com/lukechilds/clone-response) - Clone a Node.js response stream + +--- + +
+ + Get professional support for this package with a Tidelift subscription + +
+ + Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies. +
+
diff --git a/node_modules/cacheable-request/node_modules/normalize-url/index.d.ts b/node_modules/cacheable-request/node_modules/normalize-url/index.d.ts new file mode 100644 index 00000000..0dd9203e --- /dev/null +++ b/node_modules/cacheable-request/node_modules/normalize-url/index.d.ts @@ -0,0 +1,301 @@ +export type Options = { + /** + @default 'http' + */ + readonly defaultProtocol?: 'https' | 'http'; + + /** + Prepends `defaultProtocol` to the URL if it's protocol-relative. + + @default true + + @example + ``` + normalizeUrl('//sindresorhus.com'); + //=> 'http://sindresorhus.com' + + normalizeUrl('//sindresorhus.com', {normalizeProtocol: false}); + //=> '//sindresorhus.com' + ``` + */ + readonly normalizeProtocol?: boolean; + + /** + Normalizes HTTPS URLs to HTTP. + + @default false + + @example + ``` + normalizeUrl('https://sindresorhus.com'); + //=> 'https://sindresorhus.com' + + normalizeUrl('https://sindresorhus.com', {forceHttp: true}); + //=> 'http://sindresorhus.com' + ``` + */ + readonly forceHttp?: boolean; + + /** + Normalizes HTTP URLs to HTTPS. + + This option cannot be used with the `forceHttp` option at the same time. + + @default false + + @example + ``` + normalizeUrl('http://sindresorhus.com'); + //=> 'http://sindresorhus.com' + + normalizeUrl('http://sindresorhus.com', {forceHttps: true}); + //=> 'https://sindresorhus.com' + ``` + */ + readonly forceHttps?: boolean; + + /** + Strip the [authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) part of a URL. + + @default true + + @example + ``` + normalizeUrl('user:password@sindresorhus.com'); + //=> 'https://sindresorhus.com' + + normalizeUrl('user:password@sindresorhus.com', {stripAuthentication: false}); + //=> 'https://user:password@sindresorhus.com' + ``` + */ + readonly stripAuthentication?: boolean; + + /** + Removes hash from the URL. + + @default false + + @example + ``` + normalizeUrl('sindresorhus.com/about.html#contact'); + //=> 'http://sindresorhus.com/about.html#contact' + + normalizeUrl('sindresorhus.com/about.html#contact', {stripHash: true}); + //=> 'http://sindresorhus.com/about.html' + ``` + */ + readonly stripHash?: boolean; + + /** + Remove the protocol from the URL: `http://sindresorhus.com` → `sindresorhus.com`. + + It will only remove `https://` and `http://` protocols. + + @default false + + @example + ``` + normalizeUrl('https://sindresorhus.com'); + //=> 'https://sindresorhus.com' + + normalizeUrl('sindresorhus.com', {stripProtocol: true}); + //=> 'sindresorhus.com' + ``` + */ + readonly stripProtocol?: boolean; + + /** + Strip the [text fragment](https://web.dev/text-fragments/) part of the URL + + __Note:__ The text fragment will always be removed if the `stripHash` option is set to `true`, as the hash contains the text fragment. + + @default true + + @example + ``` + normalizeUrl('http://sindresorhus.com/about.html#:~:text=hello'); + //=> 'http://sindresorhus.com/about.html#' + + normalizeUrl('http://sindresorhus.com/about.html#section:~:text=hello'); + //=> 'http://sindresorhus.com/about.html#section' + + normalizeUrl('http://sindresorhus.com/about.html#:~:text=hello', {stripTextFragment: false}); + //=> 'http://sindresorhus.com/about.html#:~:text=hello' + + normalizeUrl('http://sindresorhus.com/about.html#section:~:text=hello', {stripTextFragment: false}); + //=> 'http://sindresorhus.com/about.html#section:~:text=hello' + ``` + */ + readonly stripTextFragment?: boolean; + + /** + Removes `www.` from the URL. + + @default true + + @example + ``` + normalizeUrl('http://www.sindresorhus.com'); + //=> 'http://sindresorhus.com' + + normalizeUrl('http://www.sindresorhus.com', {stripWWW: false}); + //=> 'http://www.sindresorhus.com' + ``` + */ + readonly stripWWW?: boolean; + + /** + Removes query parameters that matches any of the provided strings or regexes. + + @default [/^utm_\w+/i] + + @example + ``` + normalizeUrl('www.sindresorhus.com?foo=bar&ref=test_ref', { + removeQueryParameters: ['ref'] + }); + //=> 'http://sindresorhus.com/?foo=bar' + ``` + + If a boolean is provided, `true` will remove all the query parameters. + + ``` + normalizeUrl('www.sindresorhus.com?foo=bar', { + removeQueryParameters: true + }); + //=> 'http://sindresorhus.com' + ``` + + `false` will not remove any query parameter. + + ``` + normalizeUrl('www.sindresorhus.com?foo=bar&utm_medium=test&ref=test_ref', { + removeQueryParameters: false + }); + //=> 'http://www.sindresorhus.com/?foo=bar&ref=test_ref&utm_medium=test' + ``` + */ + readonly removeQueryParameters?: ReadonlyArray | boolean; + + /** + Keeps only query parameters that matches any of the provided strings or regexes. + + __Note__: It overrides the `removeQueryParameters` option. + + @default undefined + + @example + ``` + normalizeUrl('https://sindresorhus.com?foo=bar&ref=unicorn', { + keepQueryParameters: ['ref'] + }); + //=> 'https://sindresorhus.com/?ref=unicorn' + ``` + */ + readonly keepQueryParameters?: ReadonlyArray; + + /** + Removes trailing slash. + + __Note__: Trailing slash is always removed if the URL doesn't have a pathname unless the `removeSingleSlash` option is set to `false`. + + @default true + + @example + ``` + normalizeUrl('http://sindresorhus.com/redirect/'); + //=> 'http://sindresorhus.com/redirect' + + normalizeUrl('http://sindresorhus.com/redirect/', {removeTrailingSlash: false}); + //=> 'http://sindresorhus.com/redirect/' + + normalizeUrl('http://sindresorhus.com/', {removeTrailingSlash: false}); + //=> 'http://sindresorhus.com' + ``` + */ + readonly removeTrailingSlash?: boolean; + + /** + Remove a sole `/` pathname in the output. This option is independent of `removeTrailingSlash`. + + @default true + + @example + ``` + normalizeUrl('https://sindresorhus.com/'); + //=> 'https://sindresorhus.com' + + normalizeUrl('https://sindresorhus.com/', {removeSingleSlash: false}); + //=> 'https://sindresorhus.com/' + ``` + */ + readonly removeSingleSlash?: boolean; + + /** + Removes the default directory index file from path that matches any of the provided strings or regexes. + When `true`, the regex `/^index\.[a-z]+$/` is used. + + @default false + + @example + ``` + normalizeUrl('www.sindresorhus.com/foo/default.php', { + removeDirectoryIndex: [/^default\.[a-z]+$/] + }); + //=> 'http://sindresorhus.com/foo' + ``` + */ + readonly removeDirectoryIndex?: boolean | ReadonlyArray; + + /** + Removes an explicit port number from the URL. + + Port 443 is always removed from HTTPS URLs and 80 is always removed from HTTP URLs regardless of this option. + + @default false + + @example + ``` + normalizeUrl('sindresorhus.com:123', { + removeExplicitPort: true + }); + //=> 'http://sindresorhus.com' + ``` + */ + readonly removeExplicitPort?: boolean; + + /** + Sorts the query parameters alphabetically by key. + + @default true + + @example + ``` + normalizeUrl('www.sindresorhus.com?b=two&a=one&c=three', { + sortQueryParameters: false + }); + //=> 'http://sindresorhus.com/?b=two&a=one&c=three' + ``` + */ + readonly sortQueryParameters?: boolean; +}; + +/** +[Normalize](https://en.wikipedia.org/wiki/URL_normalization) a URL. + +URLs with custom protocols are not normalized and just passed through by default. Supported protocols are: `https`, `http`, `file`, and `data`. + +@param url - URL to normalize, including [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs). + +@example +``` +import normalizeUrl from 'normalize-url'; + +normalizeUrl('sindresorhus.com'); +//=> 'http://sindresorhus.com' + +normalizeUrl('//www.sindresorhus.com:80/../baz?b=bar&a=foo'); +//=> 'http://sindresorhus.com/baz?a=foo&b=bar' +``` +*/ +export default function normalizeUrl(url: string, options?: Options): string; diff --git a/node_modules/cacheable-request/node_modules/normalize-url/index.js b/node_modules/cacheable-request/node_modules/normalize-url/index.js new file mode 100644 index 00000000..47ae24c7 --- /dev/null +++ b/node_modules/cacheable-request/node_modules/normalize-url/index.js @@ -0,0 +1,282 @@ +// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs +const DATA_URL_DEFAULT_MIME_TYPE = 'text/plain'; +const DATA_URL_DEFAULT_CHARSET = 'us-ascii'; + +const testParameter = (name, filters) => filters.some(filter => filter instanceof RegExp ? filter.test(name) : filter === name); + +const supportedProtocols = new Set([ + 'https:', + 'http:', + 'file:', +]); + +const hasCustomProtocol = urlString => { + try { + const {protocol} = new URL(urlString); + return protocol.endsWith(':') && !supportedProtocols.has(protocol); + } catch { + return false; + } +}; + +const normalizeDataURL = (urlString, {stripHash}) => { + const match = /^data:(?[^,]*?),(?[^#]*?)(?:#(?.*))?$/.exec(urlString); + + if (!match) { + throw new Error(`Invalid URL: ${urlString}`); + } + + let {type, data, hash} = match.groups; + const mediaType = type.split(';'); + hash = stripHash ? '' : hash; + + let isBase64 = false; + if (mediaType[mediaType.length - 1] === 'base64') { + mediaType.pop(); + isBase64 = true; + } + + // Lowercase MIME type + const mimeType = mediaType.shift()?.toLowerCase() ?? ''; + const attributes = mediaType + .map(attribute => { + let [key, value = ''] = attribute.split('=').map(string => string.trim()); + + // Lowercase `charset` + if (key === 'charset') { + value = value.toLowerCase(); + + if (value === DATA_URL_DEFAULT_CHARSET) { + return ''; + } + } + + return `${key}${value ? `=${value}` : ''}`; + }) + .filter(Boolean); + + const normalizedMediaType = [ + ...attributes, + ]; + + if (isBase64) { + normalizedMediaType.push('base64'); + } + + if (normalizedMediaType.length > 0 || (mimeType && mimeType !== DATA_URL_DEFAULT_MIME_TYPE)) { + normalizedMediaType.unshift(mimeType); + } + + return `data:${normalizedMediaType.join(';')},${isBase64 ? data.trim() : data}${hash ? `#${hash}` : ''}`; +}; + +export default function normalizeUrl(urlString, options) { + options = { + defaultProtocol: 'http', + normalizeProtocol: true, + forceHttp: false, + forceHttps: false, + stripAuthentication: true, + stripHash: false, + stripTextFragment: true, + stripWWW: true, + removeQueryParameters: [/^utm_\w+/i], + removeTrailingSlash: true, + removeSingleSlash: true, + removeDirectoryIndex: false, + removeExplicitPort: false, + sortQueryParameters: true, + ...options, + }; + + // Legacy: Append `:` to the protocol if missing. + if (typeof options.defaultProtocol === 'string' && !options.defaultProtocol.endsWith(':')) { + options.defaultProtocol = `${options.defaultProtocol}:`; + } + + urlString = urlString.trim(); + + // Data URL + if (/^data:/i.test(urlString)) { + return normalizeDataURL(urlString, options); + } + + if (hasCustomProtocol(urlString)) { + return urlString; + } + + const hasRelativeProtocol = urlString.startsWith('//'); + const isRelativeUrl = !hasRelativeProtocol && /^\.*\//.test(urlString); + + // Prepend protocol + if (!isRelativeUrl) { + urlString = urlString.replace(/^(?!(?:\w+:)?\/\/)|^\/\//, options.defaultProtocol); + } + + const urlObject = new URL(urlString); + + if (options.forceHttp && options.forceHttps) { + throw new Error('The `forceHttp` and `forceHttps` options cannot be used together'); + } + + if (options.forceHttp && urlObject.protocol === 'https:') { + urlObject.protocol = 'http:'; + } + + if (options.forceHttps && urlObject.protocol === 'http:') { + urlObject.protocol = 'https:'; + } + + // Remove auth + if (options.stripAuthentication) { + urlObject.username = ''; + urlObject.password = ''; + } + + // Remove hash + if (options.stripHash) { + urlObject.hash = ''; + } else if (options.stripTextFragment) { + urlObject.hash = urlObject.hash.replace(/#?:~:text.*?$/i, ''); + } + + // Remove duplicate slashes if not preceded by a protocol + // NOTE: This could be implemented using a single negative lookbehind + // regex, but we avoid that to maintain compatibility with older js engines + // which do not have support for that feature. + if (urlObject.pathname) { + // TODO: Replace everything below with `urlObject.pathname = urlObject.pathname.replace(/(? 0) { + let pathComponents = urlObject.pathname.split('/'); + const lastComponent = pathComponents[pathComponents.length - 1]; + + if (testParameter(lastComponent, options.removeDirectoryIndex)) { + pathComponents = pathComponents.slice(0, -1); + urlObject.pathname = pathComponents.slice(1).join('/') + '/'; + } + } + + if (urlObject.hostname) { + // Remove trailing dot + urlObject.hostname = urlObject.hostname.replace(/\.$/, ''); + + // Remove `www.` + if (options.stripWWW && /^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(urlObject.hostname)) { + // Each label should be max 63 at length (min: 1). + // Source: https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names + // Each TLD should be up to 63 characters long (min: 2). + // It is technically possible to have a single character TLD, but none currently exist. + urlObject.hostname = urlObject.hostname.replace(/^www\./, ''); + } + } + + // Remove query unwanted parameters + if (Array.isArray(options.removeQueryParameters)) { + // eslint-disable-next-line unicorn/no-useless-spread -- We are intentionally spreading to get a copy. + for (const key of [...urlObject.searchParams.keys()]) { + if (testParameter(key, options.removeQueryParameters)) { + urlObject.searchParams.delete(key); + } + } + } + + if (!Array.isArray(options.keepQueryParameters) && options.removeQueryParameters === true) { + urlObject.search = ''; + } + + // Keep wanted query parameters + if (Array.isArray(options.keepQueryParameters) && options.keepQueryParameters.length > 0) { + // eslint-disable-next-line unicorn/no-useless-spread -- We are intentionally spreading to get a copy. + for (const key of [...urlObject.searchParams.keys()]) { + if (!testParameter(key, options.keepQueryParameters)) { + urlObject.searchParams.delete(key); + } + } + } + + // Sort query parameters + if (options.sortQueryParameters) { + urlObject.searchParams.sort(); + + // Calling `.sort()` encodes the search parameters, so we need to decode them again. + try { + urlObject.search = decodeURIComponent(urlObject.search); + } catch {} + } + + if (options.removeTrailingSlash) { + urlObject.pathname = urlObject.pathname.replace(/\/$/, ''); + } + + // Remove an explicit port number, excluding a default port number, if applicable + if (options.removeExplicitPort && urlObject.port) { + urlObject.port = ''; + } + + const oldUrlString = urlString; + + // Take advantage of many of the Node `url` normalizations + urlString = urlObject.toString(); + + if (!options.removeSingleSlash && urlObject.pathname === '/' && !oldUrlString.endsWith('/') && urlObject.hash === '') { + urlString = urlString.replace(/\/$/, ''); + } + + // Remove ending `/` unless removeSingleSlash is false + if ((options.removeTrailingSlash || urlObject.pathname === '/') && urlObject.hash === '' && options.removeSingleSlash) { + urlString = urlString.replace(/\/$/, ''); + } + + // Restore relative protocol, if applicable + if (hasRelativeProtocol && !options.normalizeProtocol) { + urlString = urlString.replace(/^http:\/\//, '//'); + } + + // Remove http/https + if (options.stripProtocol) { + urlString = urlString.replace(/^(?:https?:)?\/\//, ''); + } + + return urlString; +} diff --git a/node_modules/cacheable-request/node_modules/normalize-url/license b/node_modules/cacheable-request/node_modules/normalize-url/license new file mode 100644 index 00000000..fa7ceba3 --- /dev/null +++ b/node_modules/cacheable-request/node_modules/normalize-url/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +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. diff --git a/node_modules/cacheable-request/node_modules/normalize-url/package.json b/node_modules/cacheable-request/node_modules/normalize-url/package.json new file mode 100644 index 00000000..623991bb --- /dev/null +++ b/node_modules/cacheable-request/node_modules/normalize-url/package.json @@ -0,0 +1,55 @@ +{ + "name": "normalize-url", + "version": "8.0.0", + "description": "Normalize a URL", + "license": "MIT", + "repository": "sindresorhus/normalize-url", + "funding": "https://github.com/sponsors/sindresorhus", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "https://sindresorhus.com" + }, + "type": "module", + "exports": { + "types": "./index.d.ts", + "default": "./index.js" + }, + "engines": { + "node": ">=14.16" + }, + "scripts": { + "test": "xo && c8 ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "normalize", + "url", + "uri", + "address", + "string", + "normalization", + "normalisation", + "query", + "querystring", + "simplify", + "strip", + "trim", + "canonical" + ], + "devDependencies": { + "ava": "^5.0.1", + "c8": "^7.12.0", + "tsd": "^0.24.1", + "xo": "^0.52.4" + }, + "c8": { + "reporter": [ + "text", + "lcov" + ] + } +} diff --git a/node_modules/cacheable-request/node_modules/normalize-url/readme.md b/node_modules/cacheable-request/node_modules/normalize-url/readme.md new file mode 100644 index 00000000..a04c8b64 --- /dev/null +++ b/node_modules/cacheable-request/node_modules/normalize-url/readme.md @@ -0,0 +1,324 @@ +# normalize-url [![Coverage Status](https://codecov.io/gh/sindresorhus/normalize-url/branch/main/graph/badge.svg)](https://codecov.io/gh/sindresorhus/normalize-url) + +> [Normalize](https://en.wikipedia.org/wiki/URL_normalization) a URL + +Useful when you need to display, store, deduplicate, sort, compare, etc, URLs. + +**Note:** This package does **not** do URL sanitization. [Garbage in, garbage out.](https://en.wikipedia.org/wiki/Garbage_in,_garbage_out) If you use this in a server context and accept URLs as user input, it's up to you to protect against invalid URLs, [path traversal attacks](https://owasp.org/www-community/attacks/Path_Traversal), etc. + +## Install + +```sh +npm install normalize-url +``` + +*If you need Safari support, use version 4: `npm i normalize-url@4`* + +## Usage + +```js +import normalizeUrl from 'normalize-url'; + +normalizeUrl('sindresorhus.com'); +//=> 'http://sindresorhus.com' + +normalizeUrl('//www.sindresorhus.com:80/../baz?b=bar&a=foo'); +//=> 'http://sindresorhus.com/baz?a=foo&b=bar' +``` + +## API + +### normalizeUrl(url, options?) + +URLs with custom protocols are not normalized and just passed through by default. Supported protocols are: `https`, `http`, `file`, and `data`. + +#### url + +Type: `string` + +URL to normalize, including [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs). + +#### options + +Type: `object` + +##### defaultProtocol + +Type: `string`\ +Default: `'http'`\ +Values: `'https' | 'http'` + +##### normalizeProtocol + +Type: `boolean`\ +Default: `true` + +Prepend `defaultProtocol` to the URL if it's protocol-relative. + +```js +normalizeUrl('//sindresorhus.com'); +//=> 'http://sindresorhus.com' + +normalizeUrl('//sindresorhus.com', {normalizeProtocol: false}); +//=> '//sindresorhus.com' +``` + +##### forceHttp + +Type: `boolean`\ +Default: `false` + +Normalize HTTPS to HTTP. + +```js +normalizeUrl('https://sindresorhus.com'); +//=> 'https://sindresorhus.com' + +normalizeUrl('https://sindresorhus.com', {forceHttp: true}); +//=> 'http://sindresorhus.com' +``` + +##### forceHttps + +Type: `boolean`\ +Default: `false` + +Normalize HTTP to HTTPS. + +```js +normalizeUrl('http://sindresorhus.com'); +//=> 'http://sindresorhus.com' + +normalizeUrl('http://sindresorhus.com', {forceHttps: true}); +//=> 'https://sindresorhus.com' +``` + +This option cannot be used with the `forceHttp` option at the same time. + +##### stripAuthentication + +Type: `boolean`\ +Default: `true` + +Strip the [authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) part of the URL. + +```js +normalizeUrl('user:password@sindresorhus.com'); +//=> 'https://sindresorhus.com' + +normalizeUrl('user:password@sindresorhus.com', {stripAuthentication: false}); +//=> 'https://user:password@sindresorhus.com' +``` + +##### stripHash + +Type: `boolean`\ +Default: `false` + +Strip the hash part of the URL. + +```js +normalizeUrl('sindresorhus.com/about.html#contact'); +//=> 'http://sindresorhus.com/about.html#contact' + +normalizeUrl('sindresorhus.com/about.html#contact', {stripHash: true}); +//=> 'http://sindresorhus.com/about.html' +``` + +##### stripProtocol + +Type: `boolean`\ +Default: `false` + +Remove the protocol from the URL: `http://sindresorhus.com` → `sindresorhus.com`. + +It will only remove `https://` and `http://` protocols. + +```js +normalizeUrl('https://sindresorhus.com'); +//=> 'https://sindresorhus.com' + +normalizeUrl('https://sindresorhus.com', {stripProtocol: true}); +//=> 'sindresorhus.com' +``` + +##### stripTextFragment + +Type: `boolean`\ +Default: `true` + +Strip the [text fragment](https://web.dev/text-fragments/) part of the URL. + +**Note:** The text fragment will always be removed if the `stripHash` option is set to `true`, as the hash contains the text fragment. + +```js +normalizeUrl('http://sindresorhus.com/about.html#:~:text=hello'); +//=> 'http://sindresorhus.com/about.html#' + +normalizeUrl('http://sindresorhus.com/about.html#section:~:text=hello'); +//=> 'http://sindresorhus.com/about.html#section' + +normalizeUrl('http://sindresorhus.com/about.html#:~:text=hello', {stripTextFragment: false}); +//=> 'http://sindresorhus.com/about.html#:~:text=hello' + +normalizeUrl('http://sindresorhus.com/about.html#section:~:text=hello', {stripTextFragment: false}); +//=> 'http://sindresorhus.com/about.html#section:~:text=hello' +``` + +##### stripWWW + +Type: `boolean`\ +Default: `true` + +Remove `www.` from the URL. + +```js +normalizeUrl('http://www.sindresorhus.com'); +//=> 'http://sindresorhus.com' + +normalizeUrl('http://www.sindresorhus.com', {stripWWW: false}); +//=> 'http://www.sindresorhus.com' +``` + +##### removeQueryParameters + +Type: `Array | boolean`\ +Default: `[/^utm_\w+/i]` + +Remove query parameters that matches any of the provided strings or regexes. + +```js +normalizeUrl('www.sindresorhus.com?foo=bar&ref=test_ref', { + removeQueryParameters: ['ref'] +}); +//=> 'http://sindresorhus.com/?foo=bar' +``` + +If a boolean is provided, `true` will remove all the query parameters. + +```js +normalizeUrl('www.sindresorhus.com?foo=bar', { + removeQueryParameters: true +}); +//=> 'http://sindresorhus.com' +``` + +`false` will not remove any query parameter. + +```js +normalizeUrl('www.sindresorhus.com?foo=bar&utm_medium=test&ref=test_ref', { + removeQueryParameters: false +}); +//=> 'http://www.sindresorhus.com/?foo=bar&ref=test_ref&utm_medium=test' +``` + +##### keepQueryParameters + +Type: `Array`\ +Default: `undefined` + +Keeps only query parameters that matches any of the provided strings or regexes. + +**Note:** It overrides the `removeQueryParameters` option. + +```js +normalizeUrl('https://sindresorhus.com?foo=bar&ref=unicorn', { + keepQueryParameters: ['ref'] +}); +//=> 'https://sindresorhus.com/?ref=unicorn' +``` + +##### removeTrailingSlash + +Type: `boolean`\ +Default: `true` + +Remove trailing slash. + +**Note:** Trailing slash is always removed if the URL doesn't have a pathname unless the `removeSingleSlash` option is set to `false`. + +```js +normalizeUrl('http://sindresorhus.com/redirect/'); +//=> 'http://sindresorhus.com/redirect' + +normalizeUrl('http://sindresorhus.com/redirect/', {removeTrailingSlash: false}); +//=> 'http://sindresorhus.com/redirect/' + +normalizeUrl('http://sindresorhus.com/', {removeTrailingSlash: false}); +//=> 'http://sindresorhus.com' +``` + +##### removeSingleSlash + +Type: `boolean`\ +Default: `true` + +Remove a sole `/` pathname in the output. This option is independent of `removeTrailingSlash`. + +```js +normalizeUrl('https://sindresorhus.com/'); +//=> 'https://sindresorhus.com' + +normalizeUrl('https://sindresorhus.com/', {removeSingleSlash: false}); +//=> 'https://sindresorhus.com/' +``` + +##### removeDirectoryIndex + +Type: `boolean | Array`\ +Default: `false` + +Removes the default directory index file from path that matches any of the provided strings or regexes. When `true`, the regex `/^index\.[a-z]+$/` is used. + +```js +normalizeUrl('www.sindresorhus.com/foo/default.php', { + removeDirectoryIndex: [/^default\.[a-z]+$/] +}); +//=> 'http://sindresorhus.com/foo' +``` + +##### removeExplicitPort + +Type: `boolean`\ +Default: `false` + +Removes an explicit port number from the URL. + +Port 443 is always removed from HTTPS URLs and 80 is always removed from HTTP URLs regardless of this option. + +```js +normalizeUrl('sindresorhus.com:123', { + removeExplicitPort: true +}); +//=> 'http://sindresorhus.com' +``` + +##### sortQueryParameters + +Type: `boolean`\ +Default: `true` + +Sorts the query parameters alphabetically by key. + +```js +normalizeUrl('www.sindresorhus.com?b=two&a=one&c=three', { + sortQueryParameters: false +}); +//=> 'http://sindresorhus.com/?b=two&a=one&c=three' +``` + +## Related + +- [compare-urls](https://github.com/sindresorhus/compare-urls) - Compare URLs by first normalizing them + +--- + +
+ + Get professional support for this package with a Tidelift subscription + +
+ + Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies. +
+
diff --git a/node_modules/cacheable-request/package.json b/node_modules/cacheable-request/package.json new file mode 100644 index 00000000..154c57dc --- /dev/null +++ b/node_modules/cacheable-request/package.json @@ -0,0 +1,121 @@ +{ + "name": "cacheable-request", + "version": "10.2.14", + "description": "Wrap native HTTP requests with RFC compliant cache support", + "license": "MIT", + "repository": "jaredwray/cacheable", + "author": "Jared Wray (http://jaredwray.com)", + "type": "module", + "exports": "./dist/index.js", + "types": "./dist/index.d.ts", + "engines": { + "node": ">=14.16" + }, + "scripts": { + "test": "xo && NODE_OPTIONS=--experimental-vm-modules jest --coverage ", + "prepare": "npm run build", + "build": "tsc --project tsconfig.build.json", + "clean": "rm -rf node_modules && rm -rf ./coverage && rm -rf ./test/testdb.sqlite && rm -rf ./dist" + }, + "files": [ + "dist" + ], + "keywords": [ + "HTTP", + "HTTPS", + "cache", + "caching", + "layer", + "cacheable", + "RFC 7234", + "RFC", + "7234", + "compliant" + ], + "dependenciesComments": { + "@types/http-cache-semantics": "It needs to be in the dependencies list and not devDependencies because otherwise projects that use this one will be getting `Could not find a declaration file for module 'http-cache-semantics'` error when running `tsc`, see https://github.com/jaredwray/cacheable-request/issues/194 for details" + }, + "dependencies": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "devDependencies": { + "@keyv/sqlite": "^3.6.6", + "@types/jest": "^29.5.5", + "@types/node": "^20.8.2", + "@types/responselike": "^1.0.1", + "@types/sqlite3": "^3.1.9", + "body-parser": "^1.20.2", + "delay": "^6.0.0", + "eslint": "^8.50.0", + "eslint-plugin-jest": "^27.4.2", + "express": "^4.18.2", + "jest": "^29.7.0", + "pify": "^6.1.0", + "sqlite3": "^5.1.6", + "ts-jest": "^29.1.1", + "ts-jest-resolver": "^2.0.1", + "ts-node": "^10.9.1", + "typescript": "^5.2.2", + "xo": "^0.56.0" + }, + "jest": { + "collectCoverageFrom": [ + "src/**/*.{ts,js}" + ], + "extensionsToTreatAsEsm": [ + ".ts" + ], + "resolver": "ts-jest-resolver", + "moduleFileExtensions": [ + "ts", + "js" + ], + "transform": { + "^.+\\.(ts|tsx)$": [ + "ts-jest", + { + "tsconfig": "./tsconfig.build.json", + "useESM": true + } + ] + }, + "testMatch": [ + "**/test/*.test.(ts|js)" + ], + "testEnvironment": "node" + }, + "xo": { + "plugins": [ + "jest" + ], + "extends": [ + "plugin:jest/recommended" + ], + "rules": { + "@typescript-eslint/triple-slash-reference": 0, + "@typescript-eslint/no-namespace": 0, + "@typescript-eslint/no-unsafe-assignment": 0, + "@typescript-eslint/no-unsafe-call": 0, + "@typescript-eslint/ban-types": 0, + "@typescript-eslint/restrict-template-expressions": 0, + "@typescript-eslint/no-unsafe-return": 0, + "@typescript-eslint/no-unsafe-argument": 0, + "new-cap": 0, + "unicorn/no-abusive-eslint-disable": 0, + "@typescript-eslint/restrict-plus-operands": 0, + "@typescript-eslint/no-implicit-any-catch": 0, + "@typescript-eslint/consistent-type-imports": 0, + "@typescript-eslint/consistent-type-definitions": 0, + "@typescript-eslint/prefer-nullish-coalescing": 0, + "n/prefer-global/url": 0, + "n/no-deprecated-api": 0, + "unicorn/prefer-event-target": 0 + } + } +} diff --git a/node_modules/call-bind/.eslintignore b/node_modules/call-bind/.eslintignore new file mode 100644 index 00000000..404abb22 --- /dev/null +++ b/node_modules/call-bind/.eslintignore @@ -0,0 +1 @@ +coverage/ diff --git a/node_modules/call-bind/.eslintrc b/node_modules/call-bind/.eslintrc new file mode 100644 index 00000000..dfa9a6cd --- /dev/null +++ b/node_modules/call-bind/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "func-name-matching": 0, + "id-length": 0, + "new-cap": [2, { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + "no-magic-numbers": 0, + }, +} diff --git a/node_modules/call-bind/.github/FUNDING.yml b/node_modules/call-bind/.github/FUNDING.yml new file mode 100644 index 00000000..c70c2ecd --- /dev/null +++ b/node_modules/call-bind/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/call-bind +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/call-bind/.nycrc b/node_modules/call-bind/.nycrc new file mode 100644 index 00000000..bdd626ce --- /dev/null +++ b/node_modules/call-bind/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/call-bind/CHANGELOG.md b/node_modules/call-bind/CHANGELOG.md new file mode 100644 index 00000000..717bcc3e --- /dev/null +++ b/node_modules/call-bind/CHANGELOG.md @@ -0,0 +1,77 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.5](https://github.com/ljharb/call-bind/compare/v1.0.4...v1.0.5) - 2023-10-19 + +### Commits + +- [Fix] throw an error on non-functions as early as possible [`f262408`](https://github.com/ljharb/call-bind/commit/f262408f822c840fbc268080f3ad7c429611066d) +- [Deps] update `set-function-length` [`3fff271`](https://github.com/ljharb/call-bind/commit/3fff27145a1e3a76a5b74f1d7c3c43d0fa3b9871) + +## [v1.0.4](https://github.com/ljharb/call-bind/compare/v1.0.3...v1.0.4) - 2023-10-19 + +## [v1.0.3](https://github.com/ljharb/call-bind/compare/v1.0.2...v1.0.3) - 2023-10-19 + +### Commits + +- [actions] reuse common workflows [`a994df6`](https://github.com/ljharb/call-bind/commit/a994df69f401f4bf735a4ccd77029b85d1549453) +- [meta] use `npmignore` to autogenerate an npmignore file [`eef3ef2`](https://github.com/ljharb/call-bind/commit/eef3ef21e1f002790837fedb8af2679c761fbdf5) +- [readme] flesh out content [`1845ccf`](https://github.com/ljharb/call-bind/commit/1845ccfd9976a607884cfc7157c93192cc16cf22) +- [actions] use `node/install` instead of `node/run`; use `codecov` action [`5b47d53`](https://github.com/ljharb/call-bind/commit/5b47d53d2fd74af5ea0a44f1d51e503cd42f7a90) +- [Refactor] use `set-function-length` [`a0e165c`](https://github.com/ljharb/call-bind/commit/a0e165c5dc61db781cbc919b586b1c2b8da0b150) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`9c50103`](https://github.com/ljharb/call-bind/commit/9c50103f44137279a817317cf6cc421a658f85b4) +- [meta] simplify "exports" [`019c6d0`](https://github.com/ljharb/call-bind/commit/019c6d06b0e1246ceed8e579f57e44441cbbf6d9) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `safe-publish-latest`, `tape` [`23bd718`](https://github.com/ljharb/call-bind/commit/23bd718a288d3b03042062b4ef5153b3cea83f11) +- [actions] update codecov uploader [`62552d7`](https://github.com/ljharb/call-bind/commit/62552d79cc79e05825e99aaba134ae5b37f33da5) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`ec81665`](https://github.com/ljharb/call-bind/commit/ec81665b300f87eabff597afdc8b8092adfa7afd) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `tape` [`35d67fc`](https://github.com/ljharb/call-bind/commit/35d67fcea883e686650f736f61da5ddca2592de8) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`0266d8d`](https://github.com/ljharb/call-bind/commit/0266d8d2a45086a922db366d0c2932fa463662ff) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`43a5b28`](https://github.com/ljharb/call-bind/commit/43a5b28a444e710e1bbf92adb8afb5cf7523a223) +- [Deps] update `define-data-property`, `function-bind`, `get-intrinsic` [`780eb36`](https://github.com/ljharb/call-bind/commit/780eb36552514f8cc99c70821ce698697c2726a5) +- [Dev Deps] update `aud`, `tape` [`90d50ad`](https://github.com/ljharb/call-bind/commit/90d50ad03b061e0268b3380b0065fcaec183dc05) +- [meta] use `prepublishOnly` script for npm 7+ [`44c5433`](https://github.com/ljharb/call-bind/commit/44c5433b7980e02b4870007046407cf6fc543329) +- [Deps] update `get-intrinsic` [`86bfbfc`](https://github.com/ljharb/call-bind/commit/86bfbfcf34afdc6eabc93ce3d408548d0e27d958) +- [Deps] update `get-intrinsic` [`5c53354`](https://github.com/ljharb/call-bind/commit/5c5335489be0294c18cd7a8bb6e08226ee019ff5) +- [actions] update checkout action [`4c393a8`](https://github.com/ljharb/call-bind/commit/4c393a8173b3c8e5b30d5b3297b3b94d48bf87f3) +- [Deps] update `get-intrinsic` [`4e70bde`](https://github.com/ljharb/call-bind/commit/4e70bdec0626acb11616d66250fc14565e716e91) +- [Deps] update `get-intrinsic` [`55ae803`](https://github.com/ljharb/call-bind/commit/55ae803a920bd93c369cd798c20de31f91e9fc60) + +## [v1.0.2](https://github.com/ljharb/call-bind/compare/v1.0.1...v1.0.2) - 2021-01-11 + +### Commits + +- [Fix] properly include the receiver in the bound length [`dbae7bc`](https://github.com/ljharb/call-bind/commit/dbae7bc676c079a0d33c0a43e9ef92cb7b01345d) + +## [v1.0.1](https://github.com/ljharb/call-bind/compare/v1.0.0...v1.0.1) - 2021-01-08 + +### Commits + +- [Tests] migrate tests to Github Actions [`b6db284`](https://github.com/ljharb/call-bind/commit/b6db284c36f8ccd195b88a6764fe84b7223a0da1) +- [meta] do not publish github action workflow files [`ec7fe46`](https://github.com/ljharb/call-bind/commit/ec7fe46e60cfa4764ee943d2755f5e5a366e578e) +- [Fix] preserve original function’s length when possible [`adbceaa`](https://github.com/ljharb/call-bind/commit/adbceaa3cac4b41ea78bb19d7ccdbaaf7e0bdadb) +- [Tests] gather coverage data on every job [`d69e23c`](https://github.com/ljharb/call-bind/commit/d69e23cc65f101ba1d4c19bb07fa8eb0ec624be8) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`2fd3586`](https://github.com/ljharb/call-bind/commit/2fd3586c5d47b335364c14293114c6b625ae1f71) +- [Deps] update `get-intrinsic` [`f23e931`](https://github.com/ljharb/call-bind/commit/f23e9318cc271c2add8bb38cfded85ee7baf8eee) +- [Deps] update `get-intrinsic` [`72d9f44`](https://github.com/ljharb/call-bind/commit/72d9f44e184465ba8dd3fb48260bbcff234985f2) +- [meta] fix FUNDING.yml [`e723573`](https://github.com/ljharb/call-bind/commit/e723573438c5a68dcec31fb5d96ea6b7e4a93be8) +- [eslint] ignore coverage output [`15e76d2`](https://github.com/ljharb/call-bind/commit/15e76d28a5f43e504696401e5b31ebb78ee1b532) +- [meta] add Automatic Rebase and Require Allow Edits workflows [`8fa4dab`](https://github.com/ljharb/call-bind/commit/8fa4dabb23ba3dd7bb92c9571c1241c08b56e4b6) + +## v1.0.0 - 2020-10-30 + +### Commits + +- Initial commit [`306cf98`](https://github.com/ljharb/call-bind/commit/306cf98c7ec9e7ef66b653ec152277ac1381eb50) +- Tests [`e10d0bb`](https://github.com/ljharb/call-bind/commit/e10d0bbdadc7a10ecedc9a1c035112d3e368b8df) +- Implementation [`43852ed`](https://github.com/ljharb/call-bind/commit/43852eda0f187327b7fad2423ca972149a52bd65) +- npm init [`408f860`](https://github.com/ljharb/call-bind/commit/408f860b773a2f610805fd3613d0d71bac1b6249) +- [meta] add Automatic Rebase and Require Allow Edits workflows [`fb349b2`](https://github.com/ljharb/call-bind/commit/fb349b2e48defbec8b5ec8a8395cc8f69f220b13) +- [meta] add `auto-changelog` [`c4001fc`](https://github.com/ljharb/call-bind/commit/c4001fc43031799ef908211c98d3b0fb2b60fde4) +- [meta] add "funding"; create `FUNDING.yml` [`d4d6d29`](https://github.com/ljharb/call-bind/commit/d4d6d2974a14bc2e98830468eda7fe6d6a776717) +- [Tests] add `npm run lint` [`dedfb98`](https://github.com/ljharb/call-bind/commit/dedfb98bd0ecefb08ddb9a94061bd10cde4332af) +- Only apps should have lockfiles [`54ac776`](https://github.com/ljharb/call-bind/commit/54ac77653db45a7361dc153d2f478e743f110650) +- [meta] add `safe-publish-latest` [`9ea8e43`](https://github.com/ljharb/call-bind/commit/9ea8e435b950ce9b705559cd651039f9bf40140f) diff --git a/node_modules/call-bind/LICENSE b/node_modules/call-bind/LICENSE new file mode 100644 index 00000000..48f05d01 --- /dev/null +++ b/node_modules/call-bind/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Jordan Harband + +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. diff --git a/node_modules/call-bind/README.md b/node_modules/call-bind/README.md new file mode 100644 index 00000000..48e9047f --- /dev/null +++ b/node_modules/call-bind/README.md @@ -0,0 +1,64 @@ +# call-bind [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Robustly `.call.bind()` a function. + +## Getting started + +```sh +npm install --save call-bind +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const callBind = require('call-bind'); +const callBound = require('call-bind/callBound'); + +function f(a, b) { + assert.equal(this, 1); + assert.equal(a, 2); + assert.equal(b, 3); + assert.equal(arguments.length, 2); +} + +const fBound = callBind(f); + +const slice = callBound('Array.prototype.slice'); + +delete Function.prototype.call; +delete Function.prototype.bind; + +fBound(1, 2, 3); + +assert.deepEqual(slice([1, 2, 3, 4], 1, -1), [2, 3]); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/call-bind +[npm-version-svg]: https://versionbadg.es/ljharb/call-bind.svg +[deps-svg]: https://david-dm.org/ljharb/call-bind.svg +[deps-url]: https://david-dm.org/ljharb/call-bind +[dev-deps-svg]: https://david-dm.org/ljharb/call-bind/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/call-bind#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/call-bind.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/call-bind.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/call-bind.svg +[downloads-url]: https://npm-stat.com/charts.html?package=call-bind +[codecov-image]: https://codecov.io/gh/ljharb/call-bind/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/call-bind/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/call-bind +[actions-url]: https://github.com/ljharb/call-bind/actions diff --git a/node_modules/call-bind/callBound.js b/node_modules/call-bind/callBound.js new file mode 100644 index 00000000..8374adfd --- /dev/null +++ b/node_modules/call-bind/callBound.js @@ -0,0 +1,15 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); + +var callBind = require('./'); + +var $indexOf = callBind(GetIntrinsic('String.prototype.indexOf')); + +module.exports = function callBoundIntrinsic(name, allowMissing) { + var intrinsic = GetIntrinsic(name, !!allowMissing); + if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { + return callBind(intrinsic); + } + return intrinsic; +}; diff --git a/node_modules/call-bind/index.js b/node_modules/call-bind/index.js new file mode 100644 index 00000000..184ee2be --- /dev/null +++ b/node_modules/call-bind/index.js @@ -0,0 +1,44 @@ +'use strict'; + +var bind = require('function-bind'); +var GetIntrinsic = require('get-intrinsic'); +var setFunctionLength = require('set-function-length'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $apply = GetIntrinsic('%Function.prototype.apply%'); +var $call = GetIntrinsic('%Function.prototype.call%'); +var $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply); + +var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); +var $max = GetIntrinsic('%Math.max%'); + +if ($defineProperty) { + try { + $defineProperty({}, 'a', { value: 1 }); + } catch (e) { + // IE 8 has a broken defineProperty + $defineProperty = null; + } +} + +module.exports = function callBind(originalFunction) { + if (typeof originalFunction !== 'function') { + throw new $TypeError('a function is required'); + } + var func = $reflectApply(bind, $call, arguments); + return setFunctionLength( + func, + 1 + $max(0, originalFunction.length - (arguments.length - 1)), + true + ); +}; + +var applyBind = function applyBind() { + return $reflectApply(bind, $apply, arguments); +}; + +if ($defineProperty) { + $defineProperty(module.exports, 'apply', { value: applyBind }); +} else { + module.exports.apply = applyBind; +} diff --git a/node_modules/call-bind/package.json b/node_modules/call-bind/package.json new file mode 100644 index 00000000..f946e1a9 --- /dev/null +++ b/node_modules/call-bind/package.json @@ -0,0 +1,90 @@ +{ + "name": "call-bind", + "version": "1.0.5", + "description": "Robustly `.call.bind()` a function", + "main": "index.js", + "exports": { + ".": "./index.js", + "./callBound": "./callBound.js", + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=auto", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "lint": "eslint --ext=.js,.mjs .", + "postlint": "evalmd README.md", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/call-bind.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "es", + "js", + "callbind", + "callbound", + "call", + "bind", + "bound", + "call-bind", + "call-bound", + "function", + "es-abstract" + ], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/call-bind/issues" + }, + "homepage": "https://github.com/ljharb/call-bind#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "aud": "^2.0.3", + "auto-changelog": "^2.4.0", + "es-value-fixtures": "^1.4.2", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-strict-mode": "^1.0.1", + "in-publish": "^2.0.1", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "object-inspect": "^1.13.1", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.1" + }, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} diff --git a/node_modules/call-bind/test/callBound.js b/node_modules/call-bind/test/callBound.js new file mode 100644 index 00000000..c32319d7 --- /dev/null +++ b/node_modules/call-bind/test/callBound.js @@ -0,0 +1,54 @@ +'use strict'; + +var test = require('tape'); + +var callBound = require('../callBound'); + +test('callBound', function (t) { + // static primitive + t.equal(callBound('Array.length'), Array.length, 'Array.length yields itself'); + t.equal(callBound('%Array.length%'), Array.length, '%Array.length% yields itself'); + + // static non-function object + t.equal(callBound('Array.prototype'), Array.prototype, 'Array.prototype yields itself'); + t.equal(callBound('%Array.prototype%'), Array.prototype, '%Array.prototype% yields itself'); + t.equal(callBound('Array.constructor'), Array.constructor, 'Array.constructor yields itself'); + t.equal(callBound('%Array.constructor%'), Array.constructor, '%Array.constructor% yields itself'); + + // static function + t.equal(callBound('Date.parse'), Date.parse, 'Date.parse yields itself'); + t.equal(callBound('%Date.parse%'), Date.parse, '%Date.parse% yields itself'); + + // prototype primitive + t.equal(callBound('Error.prototype.message'), Error.prototype.message, 'Error.prototype.message yields itself'); + t.equal(callBound('%Error.prototype.message%'), Error.prototype.message, '%Error.prototype.message% yields itself'); + + // prototype function + t.notEqual(callBound('Object.prototype.toString'), Object.prototype.toString, 'Object.prototype.toString does not yield itself'); + t.notEqual(callBound('%Object.prototype.toString%'), Object.prototype.toString, '%Object.prototype.toString% does not yield itself'); + t.equal(callBound('Object.prototype.toString')(true), Object.prototype.toString.call(true), 'call-bound Object.prototype.toString calls into the original'); + t.equal(callBound('%Object.prototype.toString%')(true), Object.prototype.toString.call(true), 'call-bound %Object.prototype.toString% calls into the original'); + + t['throws']( + function () { callBound('does not exist'); }, + SyntaxError, + 'nonexistent intrinsic throws' + ); + t['throws']( + function () { callBound('does not exist', true); }, + SyntaxError, + 'allowMissing arg still throws for unknown intrinsic' + ); + + t.test('real but absent intrinsic', { skip: typeof WeakRef !== 'undefined' }, function (st) { + st['throws']( + function () { callBound('WeakRef'); }, + TypeError, + 'real but absent intrinsic throws' + ); + st.equal(callBound('WeakRef', true), undefined, 'allowMissing arg avoids exception'); + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/call-bind/test/index.js b/node_modules/call-bind/test/index.js new file mode 100644 index 00000000..1fd46689 --- /dev/null +++ b/node_modules/call-bind/test/index.js @@ -0,0 +1,80 @@ +'use strict'; + +var callBind = require('../'); +var bind = require('function-bind'); +var gOPD = require('gopd'); +var hasStrictMode = require('has-strict-mode')(); +var forEach = require('for-each'); +var inspect = require('object-inspect'); +var v = require('es-value-fixtures'); + +var test = require('tape'); + +/* + * older engines have length nonconfigurable + * in io.js v3, it is configurable except on bound functions, hence the .bind() + */ +var functionsHaveConfigurableLengths = !!( + gOPD + && Object.getOwnPropertyDescriptor + && Object.getOwnPropertyDescriptor(bind.call(function () {}), 'length').configurable +); + +test('callBind', function (t) { + forEach(v.nonFunctions, function (nonFunction) { + t['throws']( + function () { callBind(nonFunction); }, + TypeError, + inspect(nonFunction) + ' is not a function' + ); + }); + + var sentinel = { sentinel: true }; + var func = function (a, b) { + // eslint-disable-next-line no-invalid-this + return [!hasStrictMode && this === global ? undefined : this, a, b]; + }; + t.equal(func.length, 2, 'original function length is 2'); + t.deepEqual(func(), [undefined, undefined, undefined], 'unbound func with too few args'); + t.deepEqual(func(1, 2), [undefined, 1, 2], 'unbound func with right args'); + t.deepEqual(func(1, 2, 3), [undefined, 1, 2], 'unbound func with too many args'); + + var bound = callBind(func); + t.equal(bound.length, func.length + 1, 'function length is preserved', { skip: !functionsHaveConfigurableLengths }); + t.deepEqual(bound(), [undefined, undefined, undefined], 'bound func with too few args'); + t.deepEqual(bound(1, 2), [hasStrictMode ? 1 : Object(1), 2, undefined], 'bound func with right args'); + t.deepEqual(bound(1, 2, 3), [hasStrictMode ? 1 : Object(1), 2, 3], 'bound func with too many args'); + + var boundR = callBind(func, sentinel); + t.equal(boundR.length, func.length, 'function length is preserved', { skip: !functionsHaveConfigurableLengths }); + t.deepEqual(boundR(), [sentinel, undefined, undefined], 'bound func with receiver, with too few args'); + t.deepEqual(boundR(1, 2), [sentinel, 1, 2], 'bound func with receiver, with right args'); + t.deepEqual(boundR(1, 2, 3), [sentinel, 1, 2], 'bound func with receiver, with too many args'); + + var boundArg = callBind(func, sentinel, 1); + t.equal(boundArg.length, func.length - 1, 'function length is preserved', { skip: !functionsHaveConfigurableLengths }); + t.deepEqual(boundArg(), [sentinel, 1, undefined], 'bound func with receiver and arg, with too few args'); + t.deepEqual(boundArg(2), [sentinel, 1, 2], 'bound func with receiver and arg, with right arg'); + t.deepEqual(boundArg(2, 3), [sentinel, 1, 2], 'bound func with receiver and arg, with too many args'); + + t.test('callBind.apply', function (st) { + var aBound = callBind.apply(func); + st.deepEqual(aBound(sentinel), [sentinel, undefined, undefined], 'apply-bound func with no args'); + st.deepEqual(aBound(sentinel, [1], 4), [sentinel, 1, undefined], 'apply-bound func with too few args'); + st.deepEqual(aBound(sentinel, [1, 2], 4), [sentinel, 1, 2], 'apply-bound func with right args'); + + var aBoundArg = callBind.apply(func); + st.deepEqual(aBoundArg(sentinel, [1, 2, 3], 4), [sentinel, 1, 2], 'apply-bound func with too many args'); + st.deepEqual(aBoundArg(sentinel, [1, 2], 4), [sentinel, 1, 2], 'apply-bound func with right args'); + st.deepEqual(aBoundArg(sentinel, [1], 4), [sentinel, 1, undefined], 'apply-bound func with too few args'); + + var aBoundR = callBind.apply(func, sentinel); + st.deepEqual(aBoundR([1, 2, 3], 4), [sentinel, 1, 2], 'apply-bound func with receiver and too many args'); + st.deepEqual(aBoundR([1, 2], 4), [sentinel, 1, 2], 'apply-bound func with receiver and right args'); + st.deepEqual(aBoundR([1], 4), [sentinel, 1, undefined], 'apply-bound func with receiver and too few args'); + + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/callsites/index.d.ts b/node_modules/callsites/index.d.ts new file mode 100644 index 00000000..61f597cf --- /dev/null +++ b/node_modules/callsites/index.d.ts @@ -0,0 +1,96 @@ +declare namespace callsites { + interface CallSite { + /** + Returns the value of `this`. + */ + getThis(): unknown | undefined; + + /** + Returns the type of `this` as a string. This is the name of the function stored in the constructor field of `this`, if available, otherwise the object's `[[Class]]` internal property. + */ + getTypeName(): string | null; + + /** + Returns the current function. + */ + getFunction(): Function | undefined; + + /** + Returns the name of the current function, typically its `name` property. If a name property is not available an attempt will be made to try to infer a name from the function's context. + */ + getFunctionName(): string | null; + + /** + Returns the name of the property of `this` or one of its prototypes that holds the current function. + */ + getMethodName(): string | undefined; + + /** + Returns the name of the script if this function was defined in a script. + */ + getFileName(): string | null; + + /** + Returns the current line number if this function was defined in a script. + */ + getLineNumber(): number | null; + + /** + Returns the current column number if this function was defined in a script. + */ + getColumnNumber(): number | null; + + /** + Returns a string representing the location where `eval` was called if this function was created using a call to `eval`. + */ + getEvalOrigin(): string | undefined; + + /** + Returns `true` if this is a top-level invocation, that is, if it's a global object. + */ + isToplevel(): boolean; + + /** + Returns `true` if this call takes place in code defined by a call to `eval`. + */ + isEval(): boolean; + + /** + Returns `true` if this call is in native V8 code. + */ + isNative(): boolean; + + /** + Returns `true` if this is a constructor call. + */ + isConstructor(): boolean; + } +} + +declare const callsites: { + /** + Get callsites from the V8 stack trace API. + + @returns An array of `CallSite` objects. + + @example + ``` + import callsites = require('callsites'); + + function unicorn() { + console.log(callsites()[0].getFileName()); + //=> '/Users/sindresorhus/dev/callsites/test.js' + } + + unicorn(); + ``` + */ + (): callsites.CallSite[]; + + // TODO: Remove this for the next major release, refactor the whole definition to: + // declare function callsites(): callsites.CallSite[]; + // export = callsites; + default: typeof callsites; +}; + +export = callsites; diff --git a/node_modules/callsites/index.js b/node_modules/callsites/index.js new file mode 100644 index 00000000..486c2410 --- /dev/null +++ b/node_modules/callsites/index.js @@ -0,0 +1,13 @@ +'use strict'; + +const callsites = () => { + const _prepareStackTrace = Error.prepareStackTrace; + Error.prepareStackTrace = (_, stack) => stack; + const stack = new Error().stack.slice(1); + Error.prepareStackTrace = _prepareStackTrace; + return stack; +}; + +module.exports = callsites; +// TODO: Remove this for the next major release +module.exports.default = callsites; diff --git a/node_modules/callsites/license b/node_modules/callsites/license new file mode 100644 index 00000000..e7af2f77 --- /dev/null +++ b/node_modules/callsites/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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. diff --git a/node_modules/callsites/package.json b/node_modules/callsites/package.json new file mode 100644 index 00000000..93463c34 --- /dev/null +++ b/node_modules/callsites/package.json @@ -0,0 +1,39 @@ +{ + "name": "callsites", + "version": "3.1.0", + "description": "Get callsites from the V8 stack trace API", + "license": "MIT", + "repository": "sindresorhus/callsites", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=6" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "stacktrace", + "v8", + "callsite", + "callsites", + "stack", + "trace", + "function", + "file", + "line", + "debug" + ], + "devDependencies": { + "ava": "^1.4.1", + "tsd": "^0.7.2", + "xo": "^0.24.0" + } +} diff --git a/node_modules/callsites/readme.md b/node_modules/callsites/readme.md new file mode 100644 index 00000000..fc846138 --- /dev/null +++ b/node_modules/callsites/readme.md @@ -0,0 +1,48 @@ +# callsites [![Build Status](https://travis-ci.org/sindresorhus/callsites.svg?branch=master)](https://travis-ci.org/sindresorhus/callsites) + +> Get callsites from the [V8 stack trace API](https://v8.dev/docs/stack-trace-api) + + +## Install + +``` +$ npm install callsites +``` + + +## Usage + +```js +const callsites = require('callsites'); + +function unicorn() { + console.log(callsites()[0].getFileName()); + //=> '/Users/sindresorhus/dev/callsites/test.js' +} + +unicorn(); +``` + + +## API + +Returns an array of callsite objects with the following methods: + +- `getThis`: returns the value of `this`. +- `getTypeName`: returns the type of `this` as a string. This is the name of the function stored in the constructor field of `this`, if available, otherwise the object's `[[Class]]` internal property. +- `getFunction`: returns the current function. +- `getFunctionName`: returns the name of the current function, typically its `name` property. If a name property is not available an attempt will be made to try to infer a name from the function's context. +- `getMethodName`: returns the name of the property of `this` or one of its prototypes that holds the current function. +- `getFileName`: if this function was defined in a script returns the name of the script. +- `getLineNumber`: if this function was defined in a script returns the current line number. +- `getColumnNumber`: if this function was defined in a script returns the current column number +- `getEvalOrigin`: if this function was created using a call to `eval` returns a string representing the location where `eval` was called. +- `isToplevel`: is this a top-level invocation, that is, is this the global object? +- `isEval`: does this call take place in code defined by a call to `eval`? +- `isNative`: is this call in native V8 code? +- `isConstructor`: is this a constructor call? + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/node_modules/camel-case/LICENSE b/node_modules/camel-case/LICENSE new file mode 100644 index 00000000..983fbe8a --- /dev/null +++ b/node_modules/camel-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +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. diff --git a/node_modules/camel-case/README.md b/node_modules/camel-case/README.md new file mode 100644 index 00000000..33ecb1be --- /dev/null +++ b/node_modules/camel-case/README.md @@ -0,0 +1,47 @@ +# Camel Case + +[![NPM version][npm-image]][npm-url] +[![NPM downloads][downloads-image]][downloads-url] +[![Bundle size][bundlephobia-image]][bundlephobia-url] + +> Transform into a string with the separator denoted by the next word capitalized. + +## Installation + +``` +npm install camel-case --save +``` + +## Usage + +```js +import { camelCase } from "camel-case"; + +camelCase("string"); //=> "string" +camelCase("dot.case"); //=> "dotCase" +camelCase("PascalCase"); //=> "pascalCase" +camelCase("version 1.2.10"); //=> "version_1_2_10" +``` + +The function also accepts [`options`](https://github.com/blakeembrey/change-case#options). + +### Merge Numbers + +If you'd like to remove the behavior prefixing `_` before numbers, you can use `camelCaseTransformMerge`: + +```js +import { camelCaseTransformMerge } from "camel-case"; + +camelCase("version 12", { transform: camelCaseTransformMerge }); //=> "version12" +``` + +## License + +MIT + +[npm-image]: https://img.shields.io/npm/v/camel-case.svg?style=flat +[npm-url]: https://npmjs.org/package/camel-case +[downloads-image]: https://img.shields.io/npm/dm/camel-case.svg?style=flat +[downloads-url]: https://npmjs.org/package/camel-case +[bundlephobia-image]: https://img.shields.io/bundlephobia/minzip/camel-case.svg +[bundlephobia-url]: https://bundlephobia.com/result?p=camel-case diff --git a/node_modules/camel-case/dist.es2015/index.d.ts b/node_modules/camel-case/dist.es2015/index.d.ts new file mode 100644 index 00000000..23c665c6 --- /dev/null +++ b/node_modules/camel-case/dist.es2015/index.d.ts @@ -0,0 +1,5 @@ +import { Options } from "pascal-case"; +export { Options }; +export declare function camelCaseTransform(input: string, index: number): string; +export declare function camelCaseTransformMerge(input: string, index: number): string; +export declare function camelCase(input: string, options?: Options): string; diff --git a/node_modules/camel-case/dist.es2015/index.js b/node_modules/camel-case/dist.es2015/index.js new file mode 100644 index 00000000..c5fd0a4c --- /dev/null +++ b/node_modules/camel-case/dist.es2015/index.js @@ -0,0 +1,17 @@ +import { __assign } from "tslib"; +import { pascalCase, pascalCaseTransform, pascalCaseTransformMerge, } from "pascal-case"; +export function camelCaseTransform(input, index) { + if (index === 0) + return input.toLowerCase(); + return pascalCaseTransform(input, index); +} +export function camelCaseTransformMerge(input, index) { + if (index === 0) + return input.toLowerCase(); + return pascalCaseTransformMerge(input); +} +export function camelCase(input, options) { + if (options === void 0) { options = {}; } + return pascalCase(input, __assign({ transform: camelCaseTransform }, options)); +} +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/camel-case/dist.es2015/index.js.map b/node_modules/camel-case/dist.es2015/index.js.map new file mode 100644 index 00000000..b9ef1deb --- /dev/null +++ b/node_modules/camel-case/dist.es2015/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,wBAAwB,GAEzB,MAAM,aAAa,CAAC;AAIrB,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,KAAa;IAC7D,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa,EAAE,KAAa;IAClE,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,OAAqB;IAArB,wBAAA,EAAA,YAAqB;IAC5D,OAAO,UAAU,CAAC,KAAK,aACrB,SAAS,EAAE,kBAAkB,IAC1B,OAAO,EACV,CAAC;AACL,CAAC","sourcesContent":["import {\n pascalCase,\n pascalCaseTransform,\n pascalCaseTransformMerge,\n Options,\n} from \"pascal-case\";\n\nexport { Options };\n\nexport function camelCaseTransform(input: string, index: number) {\n if (index === 0) return input.toLowerCase();\n return pascalCaseTransform(input, index);\n}\n\nexport function camelCaseTransformMerge(input: string, index: number) {\n if (index === 0) return input.toLowerCase();\n return pascalCaseTransformMerge(input);\n}\n\nexport function camelCase(input: string, options: Options = {}) {\n return pascalCase(input, {\n transform: camelCaseTransform,\n ...options,\n });\n}\n"]} \ No newline at end of file diff --git a/node_modules/camel-case/dist.es2015/index.spec.d.ts b/node_modules/camel-case/dist.es2015/index.spec.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/node_modules/camel-case/dist.es2015/index.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/camel-case/dist.es2015/index.spec.js b/node_modules/camel-case/dist.es2015/index.spec.js new file mode 100644 index 00000000..0396a8ac --- /dev/null +++ b/node_modules/camel-case/dist.es2015/index.spec.js @@ -0,0 +1,24 @@ +import { camelCase, camelCaseTransformMerge } from "."; +var TEST_CASES = [ + ["", ""], + ["test", "test"], + ["test string", "testString"], + ["Test String", "testString"], + ["TestV2", "testV2"], + ["_foo_bar_", "fooBar"], + ["version 1.2.10", "version_1_2_10"], + ["version 1.21.0", "version_1_21_0"], + ["version 1.2.10", "version1210", { transform: camelCaseTransformMerge }], +]; +describe("camel case", function () { + var _loop_1 = function (input, result, options) { + it(input + " -> " + result, function () { + expect(camelCase(input, options)).toEqual(result); + }); + }; + for (var _i = 0, TEST_CASES_1 = TEST_CASES; _i < TEST_CASES_1.length; _i++) { + var _a = TEST_CASES_1[_i], input = _a[0], result = _a[1], options = _a[2]; + _loop_1(input, result, options); + } +}); +//# sourceMappingURL=index.spec.js.map \ No newline at end of file diff --git a/node_modules/camel-case/dist.es2015/index.spec.js.map b/node_modules/camel-case/dist.es2015/index.spec.js.map new file mode 100644 index 00000000..13472d71 --- /dev/null +++ b/node_modules/camel-case/dist.es2015/index.spec.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../src/index.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAW,MAAM,GAAG,CAAC;AAEhE,IAAM,UAAU,GAAiC;IAC/C,CAAC,EAAE,EAAE,EAAE,CAAC;IACR,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,aAAa,EAAE,YAAY,CAAC;IAC7B,CAAC,aAAa,EAAE,YAAY,CAAC;IAC7B,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,WAAW,EAAE,QAAQ,CAAC;IACvB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,gBAAgB,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC;CAC1E,CAAC;AAEF,QAAQ,CAAC,YAAY,EAAE;4BACT,KAAK,EAAE,MAAM,EAAE,OAAO;QAChC,EAAE,CAAI,KAAK,YAAO,MAAQ,EAAE;YAC1B,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;;IAHL,KAAuC,UAAU,EAAV,yBAAU,EAAV,wBAAU,EAAV,IAAU;QAAtC,IAAA,qBAAwB,EAAvB,KAAK,QAAA,EAAE,MAAM,QAAA,EAAE,OAAO,QAAA;gBAAtB,KAAK,EAAE,MAAM,EAAE,OAAO;KAIjC;AACH,CAAC,CAAC,CAAC","sourcesContent":["import { camelCase, camelCaseTransformMerge, Options } from \".\";\n\nconst TEST_CASES: [string, string, Options?][] = [\n [\"\", \"\"],\n [\"test\", \"test\"],\n [\"test string\", \"testString\"],\n [\"Test String\", \"testString\"],\n [\"TestV2\", \"testV2\"],\n [\"_foo_bar_\", \"fooBar\"],\n [\"version 1.2.10\", \"version_1_2_10\"],\n [\"version 1.21.0\", \"version_1_21_0\"],\n [\"version 1.2.10\", \"version1210\", { transform: camelCaseTransformMerge }],\n];\n\ndescribe(\"camel case\", () => {\n for (const [input, result, options] of TEST_CASES) {\n it(`${input} -> ${result}`, () => {\n expect(camelCase(input, options)).toEqual(result);\n });\n }\n});\n"]} \ No newline at end of file diff --git a/node_modules/camel-case/package.json b/node_modules/camel-case/package.json new file mode 100644 index 00000000..28644308 --- /dev/null +++ b/node_modules/camel-case/package.json @@ -0,0 +1,89 @@ +{ + "name": "camel-case", + "version": "4.1.2", + "description": "Transform into a string with the separator denoted by the next word capitalized", + "main": "dist/index.js", + "typings": "dist/index.d.ts", + "module": "dist.es2015/index.js", + "sideEffects": false, + "jsnext:main": "dist.es2015/index.js", + "files": [ + "dist/", + "dist.es2015/", + "LICENSE" + ], + "scripts": { + "lint": "tslint \"src/**/*\" --project tsconfig.json", + "build": "rimraf dist/ dist.es2015/ && tsc && tsc -P tsconfig.es2015.json", + "specs": "jest --coverage", + "test": "npm run build && npm run lint && npm run specs", + "size": "size-limit", + "prepare": "npm run build" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/change-case.git" + }, + "keywords": [ + "camel", + "case", + "camelcase", + "camel-case", + "convert", + "transform", + "identifier" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/change-case/issues" + }, + "homepage": "https://github.com/blakeembrey/change-case/tree/master/packages/camel-case#readme", + "size-limit": [ + { + "path": "dist/index.js", + "limit": "450 B" + } + ], + "jest": { + "roots": [ + "/src/" + ], + "transform": { + "\\.tsx?$": "ts-jest" + }, + "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(tsx?|jsx?)$", + "moduleFileExtensions": [ + "ts", + "tsx", + "js", + "jsx", + "json", + "node" + ] + }, + "publishConfig": { + "access": "public" + }, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + }, + "devDependencies": { + "@size-limit/preset-small-lib": "^2.2.1", + "@types/jest": "^24.0.23", + "@types/node": "^12.12.14", + "jest": "^24.9.0", + "rimraf": "^3.0.0", + "ts-jest": "^24.2.0", + "tslint": "^5.20.1", + "tslint-config-prettier": "^1.18.0", + "tslint-config-standard": "^9.0.0", + "typescript": "^4.1.2" + }, + "gitHead": "76a21a7f6f2a226521ef6abd345ff309cbd01fb0" +} diff --git a/node_modules/camelcase/index.d.ts b/node_modules/camelcase/index.d.ts new file mode 100644 index 00000000..9db94e53 --- /dev/null +++ b/node_modules/camelcase/index.d.ts @@ -0,0 +1,103 @@ +declare namespace camelcase { + interface Options { + /** + Uppercase the first character: `foo-bar` → `FooBar`. + + @default false + */ + readonly pascalCase?: boolean; + + /** + Preserve the consecutive uppercase characters: `foo-BAR` → `FooBAR`. + + @default false + */ + readonly preserveConsecutiveUppercase?: boolean; + + /** + The locale parameter indicates the locale to be used to convert to upper/lower case according to any locale-specific case mappings. If multiple locales are given in an array, the best available locale is used. + + Setting `locale: false` ignores the platform locale and uses the [Unicode Default Case Conversion](https://unicode-org.github.io/icu/userguide/transforms/casemappings.html#simple-single-character-case-mapping) algorithm. + + Default: The host environment’s current locale. + + @example + ``` + import camelCase = require('camelcase'); + + camelCase('lorem-ipsum', {locale: 'en-US'}); + //=> 'loremIpsum' + camelCase('lorem-ipsum', {locale: 'tr-TR'}); + //=> 'loremİpsum' + camelCase('lorem-ipsum', {locale: ['en-US', 'en-GB']}); + //=> 'loremIpsum' + camelCase('lorem-ipsum', {locale: ['tr', 'TR', 'tr-TR']}); + //=> 'loremİpsum' + ``` + */ + readonly locale?: false | string | readonly string[]; + } +} + +/** +Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`. + +Correctly handles Unicode strings. + +@param input - String to convert to camel case. + +@example +``` +import camelCase = require('camelcase'); + +camelCase('foo-bar'); +//=> 'fooBar' + +camelCase('foo_bar'); +//=> 'fooBar' + +camelCase('Foo-Bar'); +//=> 'fooBar' + +camelCase('розовый_пушистый_единорог'); +//=> 'розовыйПушистыйЕдинорог' + +camelCase('Foo-Bar', {pascalCase: true}); +//=> 'FooBar' + +camelCase('--foo.bar', {pascalCase: false}); +//=> 'fooBar' + +camelCase('Foo-BAR', {preserveConsecutiveUppercase: true}); +//=> 'fooBAR' + +camelCase('fooBAR', {pascalCase: true, preserveConsecutiveUppercase: true})); +//=> 'FooBAR' + +camelCase('foo bar'); +//=> 'fooBar' + +console.log(process.argv[3]); +//=> '--foo-bar' +camelCase(process.argv[3]); +//=> 'fooBar' + +camelCase(['foo', 'bar']); +//=> 'fooBar' + +camelCase(['__foo__', '--bar'], {pascalCase: true}); +//=> 'FooBar' + +camelCase(['foo', 'BAR'], {pascalCase: true, preserveConsecutiveUppercase: true}) +//=> 'FooBAR' + +camelCase('lorem-ipsum', {locale: 'en-US'}); +//=> 'loremIpsum' +``` +*/ +declare function camelcase( + input: string | readonly string[], + options?: camelcase.Options +): string; + +export = camelcase; diff --git a/node_modules/camelcase/index.js b/node_modules/camelcase/index.js new file mode 100644 index 00000000..6ff4ee85 --- /dev/null +++ b/node_modules/camelcase/index.js @@ -0,0 +1,113 @@ +'use strict'; + +const UPPERCASE = /[\p{Lu}]/u; +const LOWERCASE = /[\p{Ll}]/u; +const LEADING_CAPITAL = /^[\p{Lu}](?![\p{Lu}])/gu; +const IDENTIFIER = /([\p{Alpha}\p{N}_]|$)/u; +const SEPARATORS = /[_.\- ]+/; + +const LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source); +const SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu'); +const NUMBERS_AND_IDENTIFIER = new RegExp('\\d+' + IDENTIFIER.source, 'gu'); + +const preserveCamelCase = (string, toLowerCase, toUpperCase) => { + let isLastCharLower = false; + let isLastCharUpper = false; + let isLastLastCharUpper = false; + + for (let i = 0; i < string.length; i++) { + const character = string[i]; + + if (isLastCharLower && UPPERCASE.test(character)) { + string = string.slice(0, i) + '-' + string.slice(i); + isLastCharLower = false; + isLastLastCharUpper = isLastCharUpper; + isLastCharUpper = true; + i++; + } else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character)) { + string = string.slice(0, i - 1) + '-' + string.slice(i - 1); + isLastLastCharUpper = isLastCharUpper; + isLastCharUpper = false; + isLastCharLower = true; + } else { + isLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character; + isLastLastCharUpper = isLastCharUpper; + isLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character; + } + } + + return string; +}; + +const preserveConsecutiveUppercase = (input, toLowerCase) => { + LEADING_CAPITAL.lastIndex = 0; + + return input.replace(LEADING_CAPITAL, m1 => toLowerCase(m1)); +}; + +const postProcess = (input, toUpperCase) => { + SEPARATORS_AND_IDENTIFIER.lastIndex = 0; + NUMBERS_AND_IDENTIFIER.lastIndex = 0; + + return input.replace(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier)) + .replace(NUMBERS_AND_IDENTIFIER, m => toUpperCase(m)); +}; + +const camelCase = (input, options) => { + if (!(typeof input === 'string' || Array.isArray(input))) { + throw new TypeError('Expected the input to be `string | string[]`'); + } + + options = { + pascalCase: false, + preserveConsecutiveUppercase: false, + ...options + }; + + if (Array.isArray(input)) { + input = input.map(x => x.trim()) + .filter(x => x.length) + .join('-'); + } else { + input = input.trim(); + } + + if (input.length === 0) { + return ''; + } + + const toLowerCase = options.locale === false ? + string => string.toLowerCase() : + string => string.toLocaleLowerCase(options.locale); + const toUpperCase = options.locale === false ? + string => string.toUpperCase() : + string => string.toLocaleUpperCase(options.locale); + + if (input.length === 1) { + return options.pascalCase ? toUpperCase(input) : toLowerCase(input); + } + + const hasUpperCase = input !== toLowerCase(input); + + if (hasUpperCase) { + input = preserveCamelCase(input, toLowerCase, toUpperCase); + } + + input = input.replace(LEADING_SEPARATORS, ''); + + if (options.preserveConsecutiveUppercase) { + input = preserveConsecutiveUppercase(input, toLowerCase); + } else { + input = toLowerCase(input); + } + + if (options.pascalCase) { + input = toUpperCase(input.charAt(0)) + input.slice(1); + } + + return postProcess(input, toUpperCase); +}; + +module.exports = camelCase; +// TODO: Remove this for the next major release +module.exports.default = camelCase; diff --git a/node_modules/camelcase/license b/node_modules/camelcase/license new file mode 100644 index 00000000..fa7ceba3 --- /dev/null +++ b/node_modules/camelcase/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +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. diff --git a/node_modules/camelcase/package.json b/node_modules/camelcase/package.json new file mode 100644 index 00000000..c4335792 --- /dev/null +++ b/node_modules/camelcase/package.json @@ -0,0 +1,44 @@ +{ + "name": "camelcase", + "version": "6.3.0", + "description": "Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`", + "license": "MIT", + "repository": "sindresorhus/camelcase", + "funding": "https://github.com/sponsors/sindresorhus", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "https://sindresorhus.com" + }, + "engines": { + "node": ">=10" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "camelcase", + "camel-case", + "camel", + "case", + "dash", + "hyphen", + "dot", + "underscore", + "separator", + "string", + "text", + "convert", + "pascalcase", + "pascal-case" + ], + "devDependencies": { + "ava": "^1.4.1", + "tsd": "^0.11.0", + "xo": "^0.28.3" + } +} diff --git a/node_modules/camelcase/readme.md b/node_modules/camelcase/readme.md new file mode 100644 index 00000000..0ff8f9e1 --- /dev/null +++ b/node_modules/camelcase/readme.md @@ -0,0 +1,144 @@ +# camelcase + +> Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar` + +Correctly handles Unicode strings. + +If you use this on untrusted user input, don't forget to limit the length to something reasonable. + +## Install + +``` +$ npm install camelcase +``` + +*If you need to support Firefox < 78, stay on version 5 as version 6 uses regex features not available in Firefox < 78.* + +## Usage + +```js +const camelCase = require('camelcase'); + +camelCase('foo-bar'); +//=> 'fooBar' + +camelCase('foo_bar'); +//=> 'fooBar' + +camelCase('Foo-Bar'); +//=> 'fooBar' + +camelCase('розовый_пушистый_единорог'); +//=> 'розовыйПушистыйЕдинорог' + +camelCase('Foo-Bar', {pascalCase: true}); +//=> 'FooBar' + +camelCase('--foo.bar', {pascalCase: false}); +//=> 'fooBar' + +camelCase('Foo-BAR', {preserveConsecutiveUppercase: true}); +//=> 'fooBAR' + +camelCase('fooBAR', {pascalCase: true, preserveConsecutiveUppercase: true})); +//=> 'FooBAR' + +camelCase('foo bar'); +//=> 'fooBar' + +console.log(process.argv[3]); +//=> '--foo-bar' +camelCase(process.argv[3]); +//=> 'fooBar' + +camelCase(['foo', 'bar']); +//=> 'fooBar' + +camelCase(['__foo__', '--bar'], {pascalCase: true}); +//=> 'FooBar' + +camelCase(['foo', 'BAR'], {pascalCase: true, preserveConsecutiveUppercase: true}) +//=> 'FooBAR' + +camelCase('lorem-ipsum', {locale: 'en-US'}); +//=> 'loremIpsum' +``` + +## API + +### camelCase(input, options?) + +#### input + +Type: `string | string[]` + +String to convert to camel case. + +#### options + +Type: `object` + +##### pascalCase + +Type: `boolean`\ +Default: `false` + +Uppercase the first character: `foo-bar` → `FooBar` + +##### preserveConsecutiveUppercase + +Type: `boolean`\ +Default: `false` + +Preserve the consecutive uppercase characters: `foo-BAR` → `FooBAR`. + +##### locale + +Type: `false | string | string[]`\ +Default: The host environment’s current locale. + +The locale parameter indicates the locale to be used to convert to upper/lower case according to any locale-specific case mappings. If multiple locales are given in an array, the best available locale is used. + +```js +const camelCase = require('camelcase'); + +camelCase('lorem-ipsum', {locale: 'en-US'}); +//=> 'loremIpsum' + +camelCase('lorem-ipsum', {locale: 'tr-TR'}); +//=> 'loremİpsum' + +camelCase('lorem-ipsum', {locale: ['en-US', 'en-GB']}); +//=> 'loremIpsum' + +camelCase('lorem-ipsum', {locale: ['tr', 'TR', 'tr-TR']}); +//=> 'loremİpsum' +``` + +Setting `locale: false` ignores the platform locale and uses the [Unicode Default Case Conversion](https://unicode-org.github.io/icu/userguide/transforms/casemappings.html#simple-single-character-case-mapping) algorithm: + +```js +const camelCase = require('camelcase'); + +// On a platform with 'tr-TR' + +camelCase('lorem-ipsum'); +//=> 'loremİpsum' + +camelCase('lorem-ipsum', {locale: false}); +//=> 'loremIpsum' +``` + +## camelcase for enterprise + +Available as part of the Tidelift Subscription. + +The maintainers of camelcase and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-camelcase?utm_source=npm-camelcase&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) + +## Related + +- [decamelize](https://github.com/sindresorhus/decamelize) - The inverse of this module +- [uppercamelcase](https://github.com/SamVerschueren/uppercamelcase) - Like this module, but to PascalCase instead of camelCase +- [titleize](https://github.com/sindresorhus/titleize) - Capitalize every word in string +- [humanize-string](https://github.com/sindresorhus/humanize-string) - Convert a camelized/dasherized/underscored string into a humanized one +- [camelcase-keys](https://github.com/sindresorhus/camelcase-keys) - Convert object keys to camel case diff --git a/node_modules/caniuse-api/CHANGELOG.md b/node_modules/caniuse-api/CHANGELOG.md new file mode 100644 index 00000000..86db5910 --- /dev/null +++ b/node_modules/caniuse-api/CHANGELOG.md @@ -0,0 +1,92 @@ +# 3.0.0 - 2018-07-10 + +- Upgraded: browserslist + +# 2.1.0 - 2018-06-06 (never released to npm) + +- Upgraded: browserslist, caniuse-lite + +# 2.0.0 - 2017-05-03 + +- Changed: we now use caniuse-lite instead if caniuse-db + ([#59](https://github.com/Nyalab/caniuse-api/pull/59)) + +# 1.6.1 - 2017-04-07 + +- Added: export the feature list + ([#48](https://github.com/Nyalab/caniuse-api/pull/48)) + +# 1.5.3 - 2017-02-01 + +- Removed unused dependency + ([#54](https://github.com/Nyalab/caniuse-api/pull/54) - @wtgtybhertgeghgtwtg) + +# 1.5.2 - 2016-09-05 + +- Fixed: no more generation `postinstall` hook ``\o/``. + ([#47](https://github.com/Nyalab/caniuse-api/pull/47) - @alexisvincent) + +# 1.5.1 - 2016-08-06 + +- Fixed: Do not fail when browserslist gives a browser that caniuse-api doesn't + know about + ([#45](https://github.com/Nyalab/caniuse-api/pull/45) - @onigoetz) + +# 1.5.0 - 2016-06-01 + +- Added: JSPM support with explicit file extensions ([#40](https://github.com/Nyalab/caniuse-api/issues/40)) +- Upgraded: dependecies (lodash.memoize, lodash.uniq, shelljs, babel-tape-runner, tape, tap-spec) +- Upgraded: ask travis to only test node stable +- Upgraded: some tests fixed, some tests added + +# 1.4.1 - 2015-10-18 + +- Fixed: `generator.js` was missing + +# 1.4.0 - 2015-10-18 + +- Upgraded: browserslist 1.x +- Upgraded: shelljs 0.5.x +- Added: output to notify if generation has been made or not +(related to [#25](https://github.com/Nyalab/caniuse-api/issues/25)) + +# 1.3.2 - 2015-06-23 + +- Fixed: lodash.uniq dep +([#31](https://github.com/Nyalab/caniuse-api/issues/31)) + +# 1.3.1 - 2015-03-31 + +- Fixed: Windows support + +# 1.3.0 - 2015-03-30 + +- Added: better exception messages +- Added: full browserify compatibility (by avoiding dynamic require) + +# 1.2.2 - 2015-02-06 + +- Fixed: postinstall hook for Windows + +# 1.2.1 - 2015-02-04 + +- Changed: Allow in browser usage by avoiding `require.resolve` and using a generated json instead or reading a directory ([#20](https://github.com/Nyalab/caniuse-api/pull/20)] + +# 1.2.0 [YANKED] + +# 1.1.0 - 2015-02-03 + +- Fixed: usage of caniuse-db outside the package itself +- Changed: upgrade to browserslist 0.2.x + +# 1.0.0 - 2014-12-16 + +- Added: package is now automatically tested by [Travis-CI](https://travis-ci.org/Nyalab/caniuse-api) + +# 0.1.0 - 2014-12-15 + +- Changed: complete API changes, released as `caniuse-api` package + +# 0.0.1 - 2014-12-09 + +✨Initial release diff --git a/node_modules/caniuse-api/LICENSE b/node_modules/caniuse-api/LICENSE new file mode 100644 index 00000000..6803e545 --- /dev/null +++ b/node_modules/caniuse-api/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Sébastien Balayn + +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. diff --git a/node_modules/caniuse-api/README.md b/node_modules/caniuse-api/README.md new file mode 100644 index 00000000..9421ab4d --- /dev/null +++ b/node_modules/caniuse-api/README.md @@ -0,0 +1,157 @@ +# caniuse-api [![Build Status](https://travis-ci.org/Nyalab/caniuse-api.svg?branch=master)](https://travis-ci.org/Nyalab/caniuse-api) [![Build status](https://ci.appveyor.com/api/projects/status/6j3na522bv3bxfa5/branch/master?svg=true)](https://ci.appveyor.com/project/MoOx/caniuse-api/branch/master) + +request the caniuse data to check browsers compatibilities + +## Installation + +```console +$ yarn add caniuse-api +``` + +## Usage + +```js +const caniuse = require('caniuse-api') + +caniuse.getSupport('border-radius') +caniuse.isSupported('border-radius', 'ie 8, ie 9') +caniuse.setBrowserScope('> 5%, last 1 version') +caniuse.getSupport('border-radius') +// ... +``` + +## API + +#### `caniuse.getSupport(feature)` + +_ask since which browsers versions a feature is available_ + +* `y`: Since which browser version the feature is available +* `n`: Up to which browser version the feature is unavailable +* `a`: Up to which browser version the feature is partially supported +* `x`: Up to which browser version the feature is prefixed + +```js +caniuse.getSupport('border-radius', true) +/* +{ and_chr: { y: 67 }, + and_ff: { y: 60 }, + and_qq: { y: 1.2 }, + and_uc: { y: 11.8 }, + android: { y: 2.1, x: 2.1 }, + baidu: { y: 7.12 }, + chrome: { y: 4, x: 4 }, + edge: { y: 12 }, + firefox: { a: 2, x: 3.6, y: 3 }, + ie: { n: 8, y: 9 }, + ie_mob: { y: 10 }, + ios_saf: { y: 3.2, x: 3.2 }, + op_mini: {}, + op_mob: { n: 10, y: 11 }, + opera: { n: 10, y: 10.5 }, + safari: { y: 3.1, x: 4 }, + samsung: { y: 4 } } +*/ +``` + +#### `caniuse.isSupported(feature, browsers)` + +_ask if a feature is supported by some browsers_ + +```js +caniuse.isSupported('border-radius', 'ie 8, ie 9') // false +caniuse.isSupported('border-radius', 'ie 9') // true +``` + +#### `caniuse.find(query)` + +_search for a caniuse feature name_ + +Ex: + +```js +caniuse.find('radius') // ['border-radius'] +caniuse.find('nothingness') // [] +caniuse.find('css3') +/* +[ 'css3-attr', + 'css3-boxsizing', + 'css3-colors', + 'css3-cursors-grab', + 'css3-cursors-newer', + 'css3-cursors', + 'css3-tabsize' ] +*/ +``` + +#### `caniuse.getLatestStableBrowsers()` + +_get the current version for each browser_ + +```js +caniuse.getLatestStableBrowsers() +/* +[ 'and_chr 67', + 'and_ff 60', + 'and_qq 1.2', + 'and_uc 11.8', + 'android 67', + 'baidu 7.12', + 'bb 10', + 'chrome 67', + 'edge 17', + 'firefox 61', + 'ie 11', + 'ie_mob 11', + 'ios_saf 11.3-11.4', + 'op_mini all', + 'op_mob 46', + 'opera 53', + 'safari 11.1', + 'samsung 7.2' ] +*/ +``` + +#### `caniuse.getBrowserScope()` + +_returns a list of browsers currently used for the scope of operations_ + +```js +caniuse.getBrowserScope() +/* +[ 'and_chr', + 'and_ff', + 'and_qq', + 'and_uc', + 'android', + 'baidu', + 'chrome', + 'edge', + 'firefox', + 'ie', + 'ie_mob', + 'ios_saf', + 'op_mini', + 'op_mob', + 'opera', + 'safari', + 'samsung' ] +*/ +``` + +#### `caniuse.setBrowserScope(browserscope)` + +_if you do not like the default browser scope, you can set it globally by using this method_ + +* browserscope should be a 'autoprefixer' formatted string + +```js +caniuse.setBrowserScope('> 5%, last 2 versions, Firefox ESR, Opera 12.1') +``` + + +--- + +## [Changelog](CHANGELOG.md) + +## [License](LICENSE) diff --git a/node_modules/caniuse-api/node_modules/.bin/browserslist b/node_modules/caniuse-api/node_modules/.bin/browserslist new file mode 120000 index 00000000..c4cc06e3 --- /dev/null +++ b/node_modules/caniuse-api/node_modules/.bin/browserslist @@ -0,0 +1 @@ +../../../browserslist/cli.js \ No newline at end of file diff --git a/node_modules/caniuse-api/package.json b/node_modules/caniuse-api/package.json new file mode 100644 index 00000000..a7eb873e --- /dev/null +++ b/node_modules/caniuse-api/package.json @@ -0,0 +1,47 @@ +{ + "name": "caniuse-api", + "version": "3.0.0", + "description": "request the caniuse data to check browsers compatibilities", + "repository": "https://github.com/nyalab/caniuse-api.git", + "keywords": [ + "caniuse", + "browserslist" + ], + "authors": [ + "nyalab", + "MoOx" + ], + "license": "MIT", + "main": "dist/index.js", + "files": [ + "dist" + ], + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + }, + "devDependencies": { + "babel-cli": "^6.22.2", + "babel-eslint": "^5.0.0", + "babel-preset-latest": "^6.22.0", + "babel-tape-runner": "^2.0.1", + "jshint": "^2.5.10", + "npmpub": "^3.1.0", + "tap-spec": "^4.1.1", + "tape": "^4.6.0" + }, + "scripts": { + "build": "babel src --out-dir dist", + "lint": "jshint src", + "prepublish": "npm run build", + "test": "npm run lint && babel-tape-runner test/*.js | tap-spec", + "release": "npmpub" + }, + "babel": { + "presets": [ + "babel-preset-latest" + ] + } +} diff --git a/node_modules/caniuse-lite/LICENSE b/node_modules/caniuse-lite/LICENSE new file mode 100644 index 00000000..06c608dc --- /dev/null +++ b/node_modules/caniuse-lite/LICENSE @@ -0,0 +1,395 @@ +Attribution 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More_considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution 4.0 International Public License ("Public License"). To the +extent this Public License may be interpreted as a contract, You are +granted the Licensed Rights in consideration of Your acceptance of +these terms and conditions, and the Licensor grants You such rights in +consideration of benefits the Licensor receives from making the +Licensed Material available under these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/node_modules/caniuse-lite/README.md b/node_modules/caniuse-lite/README.md new file mode 100644 index 00000000..f2c67bc4 --- /dev/null +++ b/node_modules/caniuse-lite/README.md @@ -0,0 +1,6 @@ +# caniuse-lite + +A smaller version of caniuse-db, with only the essentials! + +## Docs +Read full docs **[here](https://github.com/browserslist/caniuse-lite#readme)**. diff --git a/node_modules/caniuse-lite/data/agents.js b/node_modules/caniuse-lite/data/agents.js new file mode 100644 index 00000000..b34f928c --- /dev/null +++ b/node_modules/caniuse-lite/data/agents.js @@ -0,0 +1 @@ +module.exports={A:{A:{J:0,E:0,F:0.0126987,G:0.0634934,A:0,B:0.368262,PC:0},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","PC","J","E","F","G","A","B","","",""],E:"IE",F:{PC:962323200,J:998870400,E:1161129600,F:1237420800,G:1300060800,A:1346716800,B:1381968000}},B:{A:{"0":0.100804,"1":0.02291,"2":0.036656,"3":0.041238,"4":0.109968,"5":2.53385,"6":2.08939,C:0.009164,K:0.009164,L:0.009164,H:0.009164,M:0,N:0.004582,O:0.013746,P:0,Q:0.009164,R:0.009164,S:0.009164,T:0.009164,U:0.004582,V:0.009164,W:0.041238,X:0.004582,Y:0.004582,Z:0.009164,a:0,b:0.013746,c:0,d:0,e:0,f:0,g:0,h:0,i:0.018328,j:0,k:0,l:0,m:0,s:0,t:0,u:0,v:0.009164,w:0.009164,x:0.073312,y:0.013746,z:0.100804,D:0.009164},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","C","K","L","H","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","D","","",""],E:"Edge",F:{"0":1680825600,"1":1683158400,"2":1685664000,"3":1689897600,"4":1692576000,"5":1694649600,"6":1697155200,C:1438128000,K:1447286400,L:1470096000,H:1491868800,M:1508198400,N:1525046400,O:1542067200,P:1579046400,Q:1581033600,R:1586736000,S:1590019200,T:1594857600,U:1598486400,V:1602201600,W:1605830400,X:1611360000,Y:1614816000,Z:1618358400,a:1622073600,b:1626912000,c:1630627200,d:1632441600,e:1634774400,f:1637539200,g:1641427200,h:1643932800,i:1646265600,j:1649635200,k:1651190400,l:1653955200,m:1655942400,s:1659657600,t:1661990400,u:1664755200,v:1666915200,w:1670198400,x:1673481600,y:1675900800,z:1678665600,D:1698969600},D:{C:"ms",K:"ms",L:"ms",H:"ms",M:"ms",N:"ms",O:"ms"}},C:{A:{"0":0.009164,"1":0.013746,"2":0.013746,"3":0.339068,"4":0.02291,"5":0.096222,"6":1.49831,"7":0,"8":0,"9":0,QC:0,"4B":0,I:0,J:0,E:0,F:0,G:0,A:0,B:0.009164,C:0,K:0,L:0,H:0,M:0,N:0,O:0,n:0,o:0,p:0,q:0,AB:0,BB:0,CB:0,DB:0,EB:0,FB:0,GB:0,HB:0,IB:0,JB:0,KB:0,LB:0,MB:0,NB:0,OB:0,PB:0,QB:0,RB:0,SB:0,TB:0.004582,UB:0,VB:0,WB:0,XB:0.02291,YB:0,ZB:0.013746,aB:0,bB:0.054984,cB:0.004582,dB:0.013746,eB:0.004582,fB:0.018328,gB:0,hB:0,"5B":0.009164,iB:0,"6B":0,jB:0,kB:0.004582,lB:0,mB:0,nB:0,oB:0,pB:0,qB:0,rB:0,sB:0,tB:0,r:0,uB:0,vB:0,wB:0,xB:0,yB:0.036656,P:0,Q:0,R:0,"7B":0,S:0.004582,T:0,U:0,V:0,W:0,X:0.004582,Y:0,Z:0,a:0.004582,b:0,c:0,d:0.004582,e:0,f:0,g:0,h:0,i:0,j:0,k:0,l:0.050402,m:0.036656,s:0,t:0.004582,u:0,v:0.004582,w:0.009164,x:0.009164,y:0.009164,z:0.009164,D:0.27492,"8B":0,"9B":0,AC:0,RC:0,SC:0},B:"moz",C:["QC","4B","RC","SC","I","7","J","E","F","G","A","B","C","K","L","H","M","N","O","8","n","o","p","q","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","OB","PB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","fB","gB","hB","5B","iB","6B","jB","kB","lB","mB","nB","oB","pB","qB","rB","sB","tB","r","uB","vB","wB","xB","yB","P","Q","R","7B","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","D","8B","9B","AC"],E:"Firefox",F:{"0":1681171200,"1":1683590400,"2":1686009600,"3":1688428800,"4":1690848000,"5":1693267200,"6":1695686400,"7":1308614400,"8":1357603200,"9":1375747200,QC:1161648000,"4B":1213660800,RC:1246320000,SC:1264032000,I:1300752000,J:1313452800,E:1317081600,F:1317081600,G:1320710400,A:1324339200,B:1327968000,C:1331596800,K:1335225600,L:1338854400,H:1342483200,M:1346112000,N:1349740800,O:1353628800,n:1361232000,o:1364860800,p:1368489600,q:1372118400,AB:1379376000,BB:1386633600,CB:1391472000,DB:1395100800,EB:1398729600,FB:1402358400,GB:1405987200,HB:1409616000,IB:1413244800,JB:1417392000,KB:1421107200,LB:1424736000,MB:1428278400,NB:1431475200,OB:1435881600,PB:1439251200,QB:1442880000,RB:1446508800,SB:1450137600,TB:1453852800,UB:1457395200,VB:1461628800,WB:1465257600,XB:1470096000,YB:1474329600,ZB:1479168000,aB:1485216000,bB:1488844800,cB:1492560000,dB:1497312000,eB:1502150400,fB:1506556800,gB:1510617600,hB:1516665600,"5B":1520985600,iB:1525824000,"6B":1529971200,jB:1536105600,kB:1540252800,lB:1544486400,mB:1548720000,nB:1552953600,oB:1558396800,pB:1562630400,qB:1567468800,rB:1571788800,sB:1575331200,tB:1578355200,r:1581379200,uB:1583798400,vB:1586304000,wB:1588636800,xB:1591056000,yB:1593475200,P:1595894400,Q:1598313600,R:1600732800,"7B":1603152000,S:1605571200,T:1607990400,U:1611619200,V:1614038400,W:1616457600,X:1618790400,Y:1622505600,Z:1626134400,a:1628553600,b:1630972800,c:1633392000,d:1635811200,e:1638835200,f:1641859200,g:1644364800,h:1646697600,i:1649116800,j:1651536000,k:1653955200,l:1656374400,m:1658793600,s:1661212800,t:1663632000,u:1666051200,v:1668470400,w:1670889600,x:1673913600,y:1676332800,z:1678752000,D:1698105600,"8B":null,"9B":null,AC:null}},D:{A:{"0":0.187862,"1":0.169534,"2":0.522348,"3":0.361978,"4":1.46624,"5":9.96127,"6":9.54889,"7":0,"8":0,"9":0,I:0,J:0,E:0,F:0,G:0,A:0,B:0,C:0,K:0,L:0,H:0,M:0,N:0,O:0,n:0,o:0,p:0,q:0,AB:0,BB:0,CB:0,DB:0,EB:0,FB:0,GB:0,HB:0,IB:0,JB:0.004582,KB:0,LB:0,MB:0,NB:0.013746,OB:0,PB:0,QB:0.004582,RB:0,SB:0,TB:0,UB:0.009164,VB:0,WB:0.009164,XB:0.018328,YB:0.041238,ZB:0.009164,aB:0,bB:0,cB:0.009164,dB:0,eB:0.009164,fB:0.018328,gB:0.009164,hB:0.004582,"5B":0,iB:0.032074,"6B":0.004582,jB:0,kB:0.009164,lB:0,mB:0.013746,nB:0.02291,oB:0.009164,pB:0.032074,qB:0.064148,rB:0.16037,sB:0.02291,tB:0.032074,r:0.041238,uB:0.036656,vB:0.036656,wB:0.109968,xB:0.032074,yB:0.041238,P:0.169534,Q:0.087058,R:0.059566,S:0.073312,T:0.036656,U:0.082476,V:0.087058,W:0.100804,X:0.054984,Y:0.04582,Z:0.054984,a:0.082476,b:0.04582,c:0.142042,d:0.041238,e:0.013746,f:0.018328,g:0.02291,h:0.06873,i:0.036656,j:0.036656,k:0.04582,l:0.036656,m:0.233682,s:0.050402,t:0.036656,u:0.059566,v:0.13746,w:0.178698,x:1.69534,y:0.155788,z:0.265756,D:0.027492,"8B":0.013746,"9B":0,AC:0},B:"webkit",C:["","","","","","I","7","J","E","F","G","A","B","C","K","L","H","M","N","O","8","n","o","p","q","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","OB","PB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","fB","gB","hB","5B","iB","6B","jB","kB","lB","mB","nB","oB","pB","qB","rB","sB","tB","r","uB","vB","wB","xB","yB","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","D","8B","9B","AC"],E:"Chrome",F:{"0":1680566400,"1":1682985600,"2":1685404800,"3":1689724800,"4":1692057600,"5":1694476800,"6":1696896000,"7":1274745600,"8":1332892800,"9":1352246400,I:1264377600,J:1283385600,E:1287619200,F:1291248000,G:1296777600,A:1299542400,B:1303862400,C:1307404800,K:1312243200,L:1316131200,H:1316131200,M:1319500800,N:1323734400,O:1328659200,n:1337040000,o:1340668800,p:1343692800,q:1348531200,AB:1357862400,BB:1361404800,CB:1364428800,DB:1369094400,EB:1374105600,FB:1376956800,GB:1384214400,HB:1389657600,IB:1392940800,JB:1397001600,KB:1400544000,LB:1405468800,MB:1409011200,NB:1412640000,OB:1416268800,PB:1421798400,QB:1425513600,RB:1429401600,SB:1432080000,TB:1437523200,UB:1441152000,VB:1444780800,WB:1449014400,XB:1453248000,YB:1456963200,ZB:1460592000,aB:1464134400,bB:1469059200,cB:1472601600,dB:1476230400,eB:1480550400,fB:1485302400,gB:1489017600,hB:1492560000,"5B":1496707200,iB:1500940800,"6B":1504569600,jB:1508198400,kB:1512518400,lB:1516752000,mB:1520294400,nB:1523923200,oB:1527552000,pB:1532390400,qB:1536019200,rB:1539648000,sB:1543968000,tB:1548720000,r:1552348800,uB:1555977600,vB:1559606400,wB:1564444800,xB:1568073600,yB:1571702400,P:1575936000,Q:1580860800,R:1586304000,S:1589846400,T:1594684800,U:1598313600,V:1601942400,W:1605571200,X:1611014400,Y:1614556800,Z:1618272000,a:1621987200,b:1626739200,c:1630368000,d:1632268800,e:1634601600,f:1637020800,g:1641340800,h:1643673600,i:1646092800,j:1648512000,k:1650931200,l:1653350400,m:1655769600,s:1659398400,t:1661817600,u:1664236800,v:1666656000,w:1669680000,x:1673308800,y:1675728000,z:1678147200,D:1698710400,"8B":null,"9B":null,AC:null}},E:{A:{"7":0,I:0,J:0,E:0,F:0,G:0,A:0,B:0,C:0.004582,K:0.02291,L:0.096222,H:0.018328,TC:0,BC:0,UC:0.004582,VC:0,WC:0,XC:0.164952,CC:0,zB:0.009164,"0B":0.027492,DC:0.128296,YC:0.233682,ZC:0.041238,EC:0.032074,FC:0.06873,"1B":0.109968,aC:0.536094,"2B":0.064148,GC:0.16037,HC:0.146624,IC:0.34365,JC:0.146624,KC:0.398634,bC:2.1902,"3B":0.613988,LC:0.041238,MC:0,cC:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","TC","BC","I","7","UC","J","VC","E","WC","F","G","XC","A","CC","B","zB","C","0B","K","DC","L","YC","H","ZC","EC","FC","1B","aC","2B","GC","HC","IC","JC","KC","bC","3B","LC","MC","cC",""],E:"Safari",F:{"7":1275868800,TC:1205798400,BC:1226534400,I:1244419200,UC:1311120000,J:1343174400,VC:1382400000,E:1382400000,WC:1410998400,F:1413417600,G:1443657600,XC:1458518400,A:1474329600,CC:1490572800,B:1505779200,zB:1522281600,C:1537142400,"0B":1553472000,K:1568851200,DC:1585008000,L:1600214400,YC:1619395200,H:1632096000,ZC:1635292800,EC:1639353600,FC:1647216000,"1B":1652745600,aC:1658275200,"2B":1662940800,GC:1666569600,HC:1670889600,IC:1674432000,JC:1679875200,KC:1684368000,bC:1690156800,"3B":1695686400,LC:1698192000,MC:null,cC:null}},F:{A:{"8":0,"9":0,G:0,B:0,C:0,H:0,M:0,N:0,O:0,n:0,o:0,p:0,q:0,AB:0,BB:0,CB:0,DB:0.004582,EB:0,FB:0,GB:0,HB:0,IB:0,JB:0,KB:0,LB:0,MB:0,NB:0,OB:0,PB:0,QB:0,RB:0,SB:0,TB:0,UB:0,VB:0.013746,WB:0,XB:0,YB:0,ZB:0,aB:0,bB:0,cB:0,dB:0.004582,eB:0.004582,fB:0,gB:0,hB:0,iB:0,jB:0,kB:0,lB:0,mB:0,nB:0,oB:0,pB:0,qB:0,rB:0,sB:0,tB:0,r:0,uB:0,vB:0,wB:0,xB:0,yB:0,P:0,Q:0,R:0,"7B":0,S:0,T:0,U:0,V:0,W:0,X:0,Y:0,Z:0,a:0,b:0,c:0,d:0,e:0.050402,f:0,g:0.09164,h:0,i:0.009164,j:0.009164,k:0.013746,l:1.61745,m:0.25201,dC:0,eC:0,fC:0,gC:0,zB:0,NC:0,hC:0,"0B":0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","G","dC","eC","fC","gC","B","zB","NC","hC","C","0B","H","M","N","O","8","n","o","p","q","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","OB","PB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","fB","gB","hB","iB","jB","kB","lB","mB","nB","oB","pB","qB","rB","sB","tB","r","uB","vB","wB","xB","yB","P","Q","R","7B","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","","",""],E:"Opera",F:{"8":1390867200,"9":1409616000,G:1150761600,dC:1223424000,eC:1251763200,fC:1267488000,gC:1277942400,B:1292457600,zB:1302566400,NC:1309219200,hC:1323129600,C:1323129600,"0B":1352073600,H:1372723200,M:1377561600,N:1381104000,O:1386288000,n:1393891200,o:1399334400,p:1401753600,q:1405987200,AB:1413331200,BB:1417132800,CB:1422316800,DB:1425945600,EB:1430179200,FB:1433808000,GB:1438646400,HB:1442448000,IB:1445904000,JB:1449100800,KB:1454371200,LB:1457308800,MB:1462320000,NB:1465344000,OB:1470096000,PB:1474329600,QB:1477267200,RB:1481587200,SB:1486425600,TB:1490054400,UB:1494374400,VB:1498003200,WB:1502236800,XB:1506470400,YB:1510099200,ZB:1515024000,aB:1517961600,bB:1521676800,cB:1525910400,dB:1530144000,eB:1534982400,fB:1537833600,gB:1543363200,hB:1548201600,iB:1554768000,jB:1561593600,kB:1566259200,lB:1570406400,mB:1573689600,nB:1578441600,oB:1583971200,pB:1587513600,qB:1592956800,rB:1595894400,sB:1600128000,tB:1603238400,r:1613520000,uB:1612224000,vB:1616544000,wB:1619568000,xB:1623715200,yB:1627948800,P:1631577600,Q:1633392000,R:1635984000,"7B":1638403200,S:1642550400,T:1644969600,U:1647993600,V:1650412800,W:1652745600,X:1654646400,Y:1657152000,Z:1660780800,a:1663113600,b:1668816000,c:1668643200,d:1671062400,e:1675209600,f:1677024000,g:1679529600,h:1681948800,i:1684195200,j:1687219200,k:1690329600,l:1692748800,m:1696204800},D:{G:"o",B:"o",C:"o",dC:"o",eC:"o",fC:"o",gC:"o",zB:"o",NC:"o",hC:"o","0B":"o"}},G:{A:{F:0,BC:0,iC:0,OC:0.0027735,jC:0.00138675,kC:0.00416026,lC:0.00970726,mC:0.00138675,nC:0.00970726,oC:0.033282,pC:0.00138675,qC:0.0485363,rC:0.0457628,sC:0.016641,tC:0.0124808,uC:0.220494,vC:0.00693376,wC:0.0374423,xC:0.0138675,yC:0.0443761,zC:0.122034,"0C":0.196919,"1C":0.0776581,EC:0.0887521,FC:0.0984594,"1B":0.140062,"2C":0.96934,"2B":0.357782,GC:0.685055,HC:0.334207,IC:0.619878,JC:0.137288,KC:0.355009,"3C":6.64254,"3B":2.36719,LC:0.142835,MC:0.00416026},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","BC","iC","OC","jC","kC","lC","F","mC","nC","oC","pC","qC","rC","sC","tC","uC","vC","wC","xC","yC","zC","0C","1C","EC","FC","1B","2C","2B","GC","HC","IC","JC","KC","3C","3B","LC","MC","",""],E:"Safari on iOS",F:{BC:1270252800,iC:1283904000,OC:1299628800,jC:1331078400,kC:1359331200,lC:1394409600,F:1410912000,mC:1413763200,nC:1442361600,oC:1458518400,pC:1473724800,qC:1490572800,rC:1505779200,sC:1522281600,tC:1537142400,uC:1553472000,vC:1568851200,wC:1572220800,xC:1580169600,yC:1585008000,zC:1600214400,"0C":1619395200,"1C":1632096000,EC:1639353600,FC:1647216000,"1B":1652659200,"2C":1658275200,"2B":1662940800,GC:1666569600,HC:1670889600,IC:1674432000,JC:1679875200,KC:1684368000,"3C":1690156800,"3B":1694995200,LC:1698192000,MC:null}},H:{A:{"4C":0.06},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","4C","","",""],E:"Opera Mini",F:{"4C":1426464000}},I:{A:{"4B":0,I:0.000123508,D:0.61445,"5C":0,"6C":0.000185261,"7C":0,"8C":0.000123508,OC:0.000432277,"9C":0,AD:0.00185261},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","5C","6C","7C","4B","I","8C","OC","9C","AD","D","","",""],E:"Android Browser",F:{"5C":1256515200,"6C":1274313600,"7C":1291593600,"4B":1298332800,I:1318896000,"8C":1341792000,OC:1374624000,"9C":1386547200,AD:1401667200,D:1698710400}},J:{A:{E:0,A:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","E","A","","",""],E:"Blackberry Browser",F:{E:1325376000,A:1359504000}},K:{A:{A:0,B:0,C:0,r:1.00715,zB:0,NC:0,"0B":0},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","zB","NC","C","0B","r","","",""],E:"Opera Mobile",F:{A:1287100800,B:1300752000,zB:1314835200,NC:1318291200,C:1330300800,"0B":1349740800,r:1673827200},D:{r:"webkit"}},L:{A:{D:35.8038},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","D","","",""],E:"Chrome for Android",F:{D:1698710400}},M:{A:{D:0.276267},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","D","","",""],E:"Firefox for Android",F:{D:1698105600}},N:{A:{A:0,B:0},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","","",""],E:"IE Mobile",F:{A:1340150400,B:1353456000}},O:{A:{"1B":0.785465},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1B","","",""],E:"UC Browser for Android",F:{"1B":1687132800},D:{"1B":"webkit"}},P:{A:{I:0.0977276,n:0.0542931,o:0.108586,p:1.60708,q:0.347476,BD:0,CD:0,DD:0.0325759,ED:0,FD:0,CC:0,GD:0.0108586,HD:0,ID:0.0108586,JD:0,KD:0,"2B":0.0217172,"3B":0.0325759,LD:0.0217172,MD:0.0434345},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","I","BD","CD","DD","ED","FD","CC","GD","HD","ID","JD","KD","2B","3B","LD","MD","n","o","p","q","","",""],E:"Samsung Internet",F:{I:1461024000,BD:1481846400,CD:1509408000,DD:1528329600,ED:1546128000,FD:1554163200,CC:1567900800,GD:1582588800,HD:1593475200,ID:1605657600,JD:1618531200,KD:1629072000,"2B":1640736000,"3B":1651708800,LD:1659657600,MD:1667260800,n:1677369600,o:1684454400,p:1689292800,q:1697587200}},Q:{A:{DC:0.151676},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","DC","","",""],E:"QQ Browser",F:{DC:1663718400}},R:{A:{ND:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","ND","","",""],E:"Baidu Browser",F:{ND:1663027200}},S:{A:{OD:0.059587,PD:0},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","OD","PD","","",""],E:"KaiOS Browser",F:{OD:1527811200,PD:1631664000}}}; diff --git a/node_modules/caniuse-lite/data/browserVersions.js b/node_modules/caniuse-lite/data/browserVersions.js new file mode 100644 index 00000000..8bdc2558 --- /dev/null +++ b/node_modules/caniuse-lite/data/browserVersions.js @@ -0,0 +1 @@ +module.exports={"0":"112","1":"113","2":"114","3":"115","4":"116","5":"117","6":"118","7":"5","8":"19","9":"24",A:"10",B:"11",C:"12",D:"119",E:"7",F:"8",G:"9",H:"15",I:"4",J:"6",K:"13",L:"14",M:"16",N:"17",O:"18",P:"79",Q:"80",R:"81",S:"83",T:"84",U:"85",V:"86",W:"87",X:"88",Y:"89",Z:"90",a:"91",b:"92",c:"93",d:"94",e:"95",f:"96",g:"97",h:"98",i:"99",j:"100",k:"101",l:"102",m:"103",n:"20",o:"21",p:"22",q:"23",r:"73",s:"104",t:"105",u:"106",v:"107",w:"108",x:"109",y:"110",z:"111",AB:"25",BB:"26",CB:"27",DB:"28",EB:"29",FB:"30",GB:"31",HB:"32",IB:"33",JB:"34",KB:"35",LB:"36",MB:"37",NB:"38",OB:"39",PB:"40",QB:"41",RB:"42",SB:"43",TB:"44",UB:"45",VB:"46",WB:"47",XB:"48",YB:"49",ZB:"50",aB:"51",bB:"52",cB:"53",dB:"54",eB:"55",fB:"56",gB:"57",hB:"58",iB:"60",jB:"62",kB:"63",lB:"64",mB:"65",nB:"66",oB:"67",pB:"68",qB:"69",rB:"70",sB:"71",tB:"72",uB:"74",vB:"75",wB:"76",xB:"77",yB:"78",zB:"11.1","0B":"12.1","1B":"15.5","2B":"16.0","3B":"17.0","4B":"3","5B":"59","6B":"61","7B":"82","8B":"120","9B":"121",AC:"122",BC:"3.2",CC:"10.1",DC:"13.1",EC:"15.2-15.3",FC:"15.4",GC:"16.1",HC:"16.2",IC:"16.3",JC:"16.4",KC:"16.5",LC:"17.1",MC:"17.2",NC:"11.5",OC:"4.2-4.3",PC:"5.5",QC:"2",RC:"3.5",SC:"3.6",TC:"3.1",UC:"5.1",VC:"6.1",WC:"7.1",XC:"9.1",YC:"14.1",ZC:"15.1",aC:"15.6",bC:"16.6",cC:"TP",dC:"9.5-9.6",eC:"10.0-10.1",fC:"10.5",gC:"10.6",hC:"11.6",iC:"4.0-4.1",jC:"5.0-5.1",kC:"6.0-6.1",lC:"7.0-7.1",mC:"8.1-8.4",nC:"9.0-9.2",oC:"9.3",pC:"10.0-10.2",qC:"10.3",rC:"11.0-11.2",sC:"11.3-11.4",tC:"12.0-12.1",uC:"12.2-12.5",vC:"13.0-13.1",wC:"13.2",xC:"13.3",yC:"13.4-13.7",zC:"14.0-14.4","0C":"14.5-14.8","1C":"15.0-15.1","2C":"15.6-15.7","3C":"16.6-16.7","4C":"all","5C":"2.1","6C":"2.2","7C":"2.3","8C":"4.1","9C":"4.4",AD:"4.4.3-4.4.4",BD:"5.0-5.4",CD:"6.2-6.4",DD:"7.2-7.4",ED:"8.2",FD:"9.2",GD:"11.1-11.2",HD:"12.0",ID:"13.0",JD:"14.0",KD:"15.0",LD:"18.0",MD:"19.0",ND:"13.18",OD:"2.5",PD:"3.0-3.1"}; diff --git a/node_modules/caniuse-lite/data/browsers.js b/node_modules/caniuse-lite/data/browsers.js new file mode 100644 index 00000000..04fbb50f --- /dev/null +++ b/node_modules/caniuse-lite/data/browsers.js @@ -0,0 +1 @@ +module.exports={A:"ie",B:"edge",C:"firefox",D:"chrome",E:"safari",F:"opera",G:"ios_saf",H:"op_mini",I:"android",J:"bb",K:"op_mob",L:"and_chr",M:"and_ff",N:"ie_mob",O:"and_uc",P:"samsung",Q:"and_qq",R:"baidu",S:"kaios"}; diff --git a/node_modules/caniuse-lite/data/features.js b/node_modules/caniuse-lite/data/features.js new file mode 100644 index 00000000..1a3831c0 --- /dev/null +++ b/node_modules/caniuse-lite/data/features.js @@ -0,0 +1 @@ +module.exports={"aac":require("./features/aac"),"abortcontroller":require("./features/abortcontroller"),"ac3-ec3":require("./features/ac3-ec3"),"accelerometer":require("./features/accelerometer"),"addeventlistener":require("./features/addeventlistener"),"alternate-stylesheet":require("./features/alternate-stylesheet"),"ambient-light":require("./features/ambient-light"),"apng":require("./features/apng"),"array-find-index":require("./features/array-find-index"),"array-find":require("./features/array-find"),"array-flat":require("./features/array-flat"),"array-includes":require("./features/array-includes"),"arrow-functions":require("./features/arrow-functions"),"asmjs":require("./features/asmjs"),"async-clipboard":require("./features/async-clipboard"),"async-functions":require("./features/async-functions"),"atob-btoa":require("./features/atob-btoa"),"audio-api":require("./features/audio-api"),"audio":require("./features/audio"),"audiotracks":require("./features/audiotracks"),"autofocus":require("./features/autofocus"),"auxclick":require("./features/auxclick"),"av1":require("./features/av1"),"avif":require("./features/avif"),"background-attachment":require("./features/background-attachment"),"background-clip-text":require("./features/background-clip-text"),"background-img-opts":require("./features/background-img-opts"),"background-position-x-y":require("./features/background-position-x-y"),"background-repeat-round-space":require("./features/background-repeat-round-space"),"background-sync":require("./features/background-sync"),"battery-status":require("./features/battery-status"),"beacon":require("./features/beacon"),"beforeafterprint":require("./features/beforeafterprint"),"bigint":require("./features/bigint"),"blobbuilder":require("./features/blobbuilder"),"bloburls":require("./features/bloburls"),"border-image":require("./features/border-image"),"border-radius":require("./features/border-radius"),"broadcastchannel":require("./features/broadcastchannel"),"brotli":require("./features/brotli"),"calc":require("./features/calc"),"canvas-blending":require("./features/canvas-blending"),"canvas-text":require("./features/canvas-text"),"canvas":require("./features/canvas"),"ch-unit":require("./features/ch-unit"),"chacha20-poly1305":require("./features/chacha20-poly1305"),"channel-messaging":require("./features/channel-messaging"),"childnode-remove":require("./features/childnode-remove"),"classlist":require("./features/classlist"),"client-hints-dpr-width-viewport":require("./features/client-hints-dpr-width-viewport"),"clipboard":require("./features/clipboard"),"colr-v1":require("./features/colr-v1"),"colr":require("./features/colr"),"comparedocumentposition":require("./features/comparedocumentposition"),"console-basic":require("./features/console-basic"),"console-time":require("./features/console-time"),"const":require("./features/const"),"constraint-validation":require("./features/constraint-validation"),"contenteditable":require("./features/contenteditable"),"contentsecuritypolicy":require("./features/contentsecuritypolicy"),"contentsecuritypolicy2":require("./features/contentsecuritypolicy2"),"cookie-store-api":require("./features/cookie-store-api"),"cors":require("./features/cors"),"createimagebitmap":require("./features/createimagebitmap"),"credential-management":require("./features/credential-management"),"cryptography":require("./features/cryptography"),"css-all":require("./features/css-all"),"css-anchor-positioning":require("./features/css-anchor-positioning"),"css-animation":require("./features/css-animation"),"css-any-link":require("./features/css-any-link"),"css-appearance":require("./features/css-appearance"),"css-at-counter-style":require("./features/css-at-counter-style"),"css-autofill":require("./features/css-autofill"),"css-backdrop-filter":require("./features/css-backdrop-filter"),"css-background-offsets":require("./features/css-background-offsets"),"css-backgroundblendmode":require("./features/css-backgroundblendmode"),"css-boxdecorationbreak":require("./features/css-boxdecorationbreak"),"css-boxshadow":require("./features/css-boxshadow"),"css-canvas":require("./features/css-canvas"),"css-caret-color":require("./features/css-caret-color"),"css-cascade-layers":require("./features/css-cascade-layers"),"css-cascade-scope":require("./features/css-cascade-scope"),"css-case-insensitive":require("./features/css-case-insensitive"),"css-clip-path":require("./features/css-clip-path"),"css-color-adjust":require("./features/css-color-adjust"),"css-color-function":require("./features/css-color-function"),"css-conic-gradients":require("./features/css-conic-gradients"),"css-container-queries-style":require("./features/css-container-queries-style"),"css-container-queries":require("./features/css-container-queries"),"css-container-query-units":require("./features/css-container-query-units"),"css-containment":require("./features/css-containment"),"css-content-visibility":require("./features/css-content-visibility"),"css-counters":require("./features/css-counters"),"css-crisp-edges":require("./features/css-crisp-edges"),"css-cross-fade":require("./features/css-cross-fade"),"css-default-pseudo":require("./features/css-default-pseudo"),"css-descendant-gtgt":require("./features/css-descendant-gtgt"),"css-deviceadaptation":require("./features/css-deviceadaptation"),"css-dir-pseudo":require("./features/css-dir-pseudo"),"css-display-contents":require("./features/css-display-contents"),"css-element-function":require("./features/css-element-function"),"css-env-function":require("./features/css-env-function"),"css-exclusions":require("./features/css-exclusions"),"css-featurequeries":require("./features/css-featurequeries"),"css-file-selector-button":require("./features/css-file-selector-button"),"css-filter-function":require("./features/css-filter-function"),"css-filters":require("./features/css-filters"),"css-first-letter":require("./features/css-first-letter"),"css-first-line":require("./features/css-first-line"),"css-fixed":require("./features/css-fixed"),"css-focus-visible":require("./features/css-focus-visible"),"css-focus-within":require("./features/css-focus-within"),"css-font-palette":require("./features/css-font-palette"),"css-font-rendering-controls":require("./features/css-font-rendering-controls"),"css-font-stretch":require("./features/css-font-stretch"),"css-gencontent":require("./features/css-gencontent"),"css-gradients":require("./features/css-gradients"),"css-grid-animation":require("./features/css-grid-animation"),"css-grid":require("./features/css-grid"),"css-hanging-punctuation":require("./features/css-hanging-punctuation"),"css-has":require("./features/css-has"),"css-hyphens":require("./features/css-hyphens"),"css-image-orientation":require("./features/css-image-orientation"),"css-image-set":require("./features/css-image-set"),"css-in-out-of-range":require("./features/css-in-out-of-range"),"css-indeterminate-pseudo":require("./features/css-indeterminate-pseudo"),"css-initial-letter":require("./features/css-initial-letter"),"css-initial-value":require("./features/css-initial-value"),"css-lch-lab":require("./features/css-lch-lab"),"css-letter-spacing":require("./features/css-letter-spacing"),"css-line-clamp":require("./features/css-line-clamp"),"css-logical-props":require("./features/css-logical-props"),"css-marker-pseudo":require("./features/css-marker-pseudo"),"css-masks":require("./features/css-masks"),"css-matches-pseudo":require("./features/css-matches-pseudo"),"css-math-functions":require("./features/css-math-functions"),"css-media-interaction":require("./features/css-media-interaction"),"css-media-range-syntax":require("./features/css-media-range-syntax"),"css-media-resolution":require("./features/css-media-resolution"),"css-media-scripting":require("./features/css-media-scripting"),"css-mediaqueries":require("./features/css-mediaqueries"),"css-mixblendmode":require("./features/css-mixblendmode"),"css-motion-paths":require("./features/css-motion-paths"),"css-namespaces":require("./features/css-namespaces"),"css-nesting":require("./features/css-nesting"),"css-not-sel-list":require("./features/css-not-sel-list"),"css-nth-child-of":require("./features/css-nth-child-of"),"css-opacity":require("./features/css-opacity"),"css-optional-pseudo":require("./features/css-optional-pseudo"),"css-overflow-anchor":require("./features/css-overflow-anchor"),"css-overflow-overlay":require("./features/css-overflow-overlay"),"css-overflow":require("./features/css-overflow"),"css-overscroll-behavior":require("./features/css-overscroll-behavior"),"css-page-break":require("./features/css-page-break"),"css-paged-media":require("./features/css-paged-media"),"css-paint-api":require("./features/css-paint-api"),"css-placeholder-shown":require("./features/css-placeholder-shown"),"css-placeholder":require("./features/css-placeholder"),"css-print-color-adjust":require("./features/css-print-color-adjust"),"css-read-only-write":require("./features/css-read-only-write"),"css-rebeccapurple":require("./features/css-rebeccapurple"),"css-reflections":require("./features/css-reflections"),"css-regions":require("./features/css-regions"),"css-relative-colors":require("./features/css-relative-colors"),"css-repeating-gradients":require("./features/css-repeating-gradients"),"css-resize":require("./features/css-resize"),"css-revert-value":require("./features/css-revert-value"),"css-rrggbbaa":require("./features/css-rrggbbaa"),"css-scroll-behavior":require("./features/css-scroll-behavior"),"css-scroll-timeline":require("./features/css-scroll-timeline"),"css-scrollbar":require("./features/css-scrollbar"),"css-sel2":require("./features/css-sel2"),"css-sel3":require("./features/css-sel3"),"css-selection":require("./features/css-selection"),"css-shapes":require("./features/css-shapes"),"css-snappoints":require("./features/css-snappoints"),"css-sticky":require("./features/css-sticky"),"css-subgrid":require("./features/css-subgrid"),"css-supports-api":require("./features/css-supports-api"),"css-table":require("./features/css-table"),"css-text-align-last":require("./features/css-text-align-last"),"css-text-box-trim":require("./features/css-text-box-trim"),"css-text-indent":require("./features/css-text-indent"),"css-text-justify":require("./features/css-text-justify"),"css-text-orientation":require("./features/css-text-orientation"),"css-text-spacing":require("./features/css-text-spacing"),"css-text-wrap-balance":require("./features/css-text-wrap-balance"),"css-textshadow":require("./features/css-textshadow"),"css-touch-action":require("./features/css-touch-action"),"css-transitions":require("./features/css-transitions"),"css-unicode-bidi":require("./features/css-unicode-bidi"),"css-unset-value":require("./features/css-unset-value"),"css-variables":require("./features/css-variables"),"css-when-else":require("./features/css-when-else"),"css-widows-orphans":require("./features/css-widows-orphans"),"css-width-stretch":require("./features/css-width-stretch"),"css-writing-mode":require("./features/css-writing-mode"),"css-zoom":require("./features/css-zoom"),"css3-attr":require("./features/css3-attr"),"css3-boxsizing":require("./features/css3-boxsizing"),"css3-colors":require("./features/css3-colors"),"css3-cursors-grab":require("./features/css3-cursors-grab"),"css3-cursors-newer":require("./features/css3-cursors-newer"),"css3-cursors":require("./features/css3-cursors"),"css3-tabsize":require("./features/css3-tabsize"),"currentcolor":require("./features/currentcolor"),"custom-elements":require("./features/custom-elements"),"custom-elementsv1":require("./features/custom-elementsv1"),"customevent":require("./features/customevent"),"datalist":require("./features/datalist"),"dataset":require("./features/dataset"),"datauri":require("./features/datauri"),"date-tolocaledatestring":require("./features/date-tolocaledatestring"),"declarative-shadow-dom":require("./features/declarative-shadow-dom"),"decorators":require("./features/decorators"),"details":require("./features/details"),"deviceorientation":require("./features/deviceorientation"),"devicepixelratio":require("./features/devicepixelratio"),"dialog":require("./features/dialog"),"dispatchevent":require("./features/dispatchevent"),"dnssec":require("./features/dnssec"),"do-not-track":require("./features/do-not-track"),"document-currentscript":require("./features/document-currentscript"),"document-evaluate-xpath":require("./features/document-evaluate-xpath"),"document-execcommand":require("./features/document-execcommand"),"document-policy":require("./features/document-policy"),"document-scrollingelement":require("./features/document-scrollingelement"),"documenthead":require("./features/documenthead"),"dom-manip-convenience":require("./features/dom-manip-convenience"),"dom-range":require("./features/dom-range"),"domcontentloaded":require("./features/domcontentloaded"),"dommatrix":require("./features/dommatrix"),"download":require("./features/download"),"dragndrop":require("./features/dragndrop"),"element-closest":require("./features/element-closest"),"element-from-point":require("./features/element-from-point"),"element-scroll-methods":require("./features/element-scroll-methods"),"eme":require("./features/eme"),"eot":require("./features/eot"),"es5":require("./features/es5"),"es6-class":require("./features/es6-class"),"es6-generators":require("./features/es6-generators"),"es6-module-dynamic-import":require("./features/es6-module-dynamic-import"),"es6-module":require("./features/es6-module"),"es6-number":require("./features/es6-number"),"es6-string-includes":require("./features/es6-string-includes"),"es6":require("./features/es6"),"eventsource":require("./features/eventsource"),"extended-system-fonts":require("./features/extended-system-fonts"),"feature-policy":require("./features/feature-policy"),"fetch":require("./features/fetch"),"fieldset-disabled":require("./features/fieldset-disabled"),"fileapi":require("./features/fileapi"),"filereader":require("./features/filereader"),"filereadersync":require("./features/filereadersync"),"filesystem":require("./features/filesystem"),"flac":require("./features/flac"),"flexbox-gap":require("./features/flexbox-gap"),"flexbox":require("./features/flexbox"),"flow-root":require("./features/flow-root"),"focusin-focusout-events":require("./features/focusin-focusout-events"),"font-family-system-ui":require("./features/font-family-system-ui"),"font-feature":require("./features/font-feature"),"font-kerning":require("./features/font-kerning"),"font-loading":require("./features/font-loading"),"font-size-adjust":require("./features/font-size-adjust"),"font-smooth":require("./features/font-smooth"),"font-unicode-range":require("./features/font-unicode-range"),"font-variant-alternates":require("./features/font-variant-alternates"),"font-variant-numeric":require("./features/font-variant-numeric"),"fontface":require("./features/fontface"),"form-attribute":require("./features/form-attribute"),"form-submit-attributes":require("./features/form-submit-attributes"),"form-validation":require("./features/form-validation"),"forms":require("./features/forms"),"fullscreen":require("./features/fullscreen"),"gamepad":require("./features/gamepad"),"geolocation":require("./features/geolocation"),"getboundingclientrect":require("./features/getboundingclientrect"),"getcomputedstyle":require("./features/getcomputedstyle"),"getelementsbyclassname":require("./features/getelementsbyclassname"),"getrandomvalues":require("./features/getrandomvalues"),"gyroscope":require("./features/gyroscope"),"hardwareconcurrency":require("./features/hardwareconcurrency"),"hashchange":require("./features/hashchange"),"heif":require("./features/heif"),"hevc":require("./features/hevc"),"hidden":require("./features/hidden"),"high-resolution-time":require("./features/high-resolution-time"),"history":require("./features/history"),"html-media-capture":require("./features/html-media-capture"),"html5semantic":require("./features/html5semantic"),"http-live-streaming":require("./features/http-live-streaming"),"http2":require("./features/http2"),"http3":require("./features/http3"),"iframe-sandbox":require("./features/iframe-sandbox"),"iframe-seamless":require("./features/iframe-seamless"),"iframe-srcdoc":require("./features/iframe-srcdoc"),"imagecapture":require("./features/imagecapture"),"ime":require("./features/ime"),"img-naturalwidth-naturalheight":require("./features/img-naturalwidth-naturalheight"),"import-maps":require("./features/import-maps"),"imports":require("./features/imports"),"indeterminate-checkbox":require("./features/indeterminate-checkbox"),"indexeddb":require("./features/indexeddb"),"indexeddb2":require("./features/indexeddb2"),"inline-block":require("./features/inline-block"),"innertext":require("./features/innertext"),"input-autocomplete-onoff":require("./features/input-autocomplete-onoff"),"input-color":require("./features/input-color"),"input-datetime":require("./features/input-datetime"),"input-email-tel-url":require("./features/input-email-tel-url"),"input-event":require("./features/input-event"),"input-file-accept":require("./features/input-file-accept"),"input-file-directory":require("./features/input-file-directory"),"input-file-multiple":require("./features/input-file-multiple"),"input-inputmode":require("./features/input-inputmode"),"input-minlength":require("./features/input-minlength"),"input-number":require("./features/input-number"),"input-pattern":require("./features/input-pattern"),"input-placeholder":require("./features/input-placeholder"),"input-range":require("./features/input-range"),"input-search":require("./features/input-search"),"input-selection":require("./features/input-selection"),"insert-adjacent":require("./features/insert-adjacent"),"insertadjacenthtml":require("./features/insertadjacenthtml"),"internationalization":require("./features/internationalization"),"intersectionobserver-v2":require("./features/intersectionobserver-v2"),"intersectionobserver":require("./features/intersectionobserver"),"intl-pluralrules":require("./features/intl-pluralrules"),"intrinsic-width":require("./features/intrinsic-width"),"jpeg2000":require("./features/jpeg2000"),"jpegxl":require("./features/jpegxl"),"jpegxr":require("./features/jpegxr"),"js-regexp-lookbehind":require("./features/js-regexp-lookbehind"),"json":require("./features/json"),"justify-content-space-evenly":require("./features/justify-content-space-evenly"),"kerning-pairs-ligatures":require("./features/kerning-pairs-ligatures"),"keyboardevent-charcode":require("./features/keyboardevent-charcode"),"keyboardevent-code":require("./features/keyboardevent-code"),"keyboardevent-getmodifierstate":require("./features/keyboardevent-getmodifierstate"),"keyboardevent-key":require("./features/keyboardevent-key"),"keyboardevent-location":require("./features/keyboardevent-location"),"keyboardevent-which":require("./features/keyboardevent-which"),"lazyload":require("./features/lazyload"),"let":require("./features/let"),"link-icon-png":require("./features/link-icon-png"),"link-icon-svg":require("./features/link-icon-svg"),"link-rel-dns-prefetch":require("./features/link-rel-dns-prefetch"),"link-rel-modulepreload":require("./features/link-rel-modulepreload"),"link-rel-preconnect":require("./features/link-rel-preconnect"),"link-rel-prefetch":require("./features/link-rel-prefetch"),"link-rel-preload":require("./features/link-rel-preload"),"link-rel-prerender":require("./features/link-rel-prerender"),"loading-lazy-attr":require("./features/loading-lazy-attr"),"localecompare":require("./features/localecompare"),"magnetometer":require("./features/magnetometer"),"matchesselector":require("./features/matchesselector"),"matchmedia":require("./features/matchmedia"),"mathml":require("./features/mathml"),"maxlength":require("./features/maxlength"),"mdn-css-backdrop-pseudo-element":require("./features/mdn-css-backdrop-pseudo-element"),"mdn-css-unicode-bidi-isolate-override":require("./features/mdn-css-unicode-bidi-isolate-override"),"mdn-css-unicode-bidi-isolate":require("./features/mdn-css-unicode-bidi-isolate"),"mdn-css-unicode-bidi-plaintext":require("./features/mdn-css-unicode-bidi-plaintext"),"mdn-text-decoration-color":require("./features/mdn-text-decoration-color"),"mdn-text-decoration-line":require("./features/mdn-text-decoration-line"),"mdn-text-decoration-shorthand":require("./features/mdn-text-decoration-shorthand"),"mdn-text-decoration-style":require("./features/mdn-text-decoration-style"),"media-fragments":require("./features/media-fragments"),"mediacapture-fromelement":require("./features/mediacapture-fromelement"),"mediarecorder":require("./features/mediarecorder"),"mediasource":require("./features/mediasource"),"menu":require("./features/menu"),"meta-theme-color":require("./features/meta-theme-color"),"meter":require("./features/meter"),"midi":require("./features/midi"),"minmaxwh":require("./features/minmaxwh"),"mp3":require("./features/mp3"),"mpeg-dash":require("./features/mpeg-dash"),"mpeg4":require("./features/mpeg4"),"multibackgrounds":require("./features/multibackgrounds"),"multicolumn":require("./features/multicolumn"),"mutation-events":require("./features/mutation-events"),"mutationobserver":require("./features/mutationobserver"),"namevalue-storage":require("./features/namevalue-storage"),"native-filesystem-api":require("./features/native-filesystem-api"),"nav-timing":require("./features/nav-timing"),"netinfo":require("./features/netinfo"),"notifications":require("./features/notifications"),"object-entries":require("./features/object-entries"),"object-fit":require("./features/object-fit"),"object-observe":require("./features/object-observe"),"object-values":require("./features/object-values"),"objectrtc":require("./features/objectrtc"),"offline-apps":require("./features/offline-apps"),"offscreencanvas":require("./features/offscreencanvas"),"ogg-vorbis":require("./features/ogg-vorbis"),"ogv":require("./features/ogv"),"ol-reversed":require("./features/ol-reversed"),"once-event-listener":require("./features/once-event-listener"),"online-status":require("./features/online-status"),"opus":require("./features/opus"),"orientation-sensor":require("./features/orientation-sensor"),"outline":require("./features/outline"),"pad-start-end":require("./features/pad-start-end"),"page-transition-events":require("./features/page-transition-events"),"pagevisibility":require("./features/pagevisibility"),"passive-event-listener":require("./features/passive-event-listener"),"passkeys":require("./features/passkeys"),"passwordrules":require("./features/passwordrules"),"path2d":require("./features/path2d"),"payment-request":require("./features/payment-request"),"pdf-viewer":require("./features/pdf-viewer"),"permissions-api":require("./features/permissions-api"),"permissions-policy":require("./features/permissions-policy"),"picture-in-picture":require("./features/picture-in-picture"),"picture":require("./features/picture"),"ping":require("./features/ping"),"png-alpha":require("./features/png-alpha"),"pointer-events":require("./features/pointer-events"),"pointer":require("./features/pointer"),"pointerlock":require("./features/pointerlock"),"portals":require("./features/portals"),"prefers-color-scheme":require("./features/prefers-color-scheme"),"prefers-reduced-motion":require("./features/prefers-reduced-motion"),"progress":require("./features/progress"),"promise-finally":require("./features/promise-finally"),"promises":require("./features/promises"),"proximity":require("./features/proximity"),"proxy":require("./features/proxy"),"publickeypinning":require("./features/publickeypinning"),"push-api":require("./features/push-api"),"queryselector":require("./features/queryselector"),"readonly-attr":require("./features/readonly-attr"),"referrer-policy":require("./features/referrer-policy"),"registerprotocolhandler":require("./features/registerprotocolhandler"),"rel-noopener":require("./features/rel-noopener"),"rel-noreferrer":require("./features/rel-noreferrer"),"rellist":require("./features/rellist"),"rem":require("./features/rem"),"requestanimationframe":require("./features/requestanimationframe"),"requestidlecallback":require("./features/requestidlecallback"),"resizeobserver":require("./features/resizeobserver"),"resource-timing":require("./features/resource-timing"),"rest-parameters":require("./features/rest-parameters"),"rtcpeerconnection":require("./features/rtcpeerconnection"),"ruby":require("./features/ruby"),"run-in":require("./features/run-in"),"same-site-cookie-attribute":require("./features/same-site-cookie-attribute"),"screen-orientation":require("./features/screen-orientation"),"script-async":require("./features/script-async"),"script-defer":require("./features/script-defer"),"scrollintoview":require("./features/scrollintoview"),"scrollintoviewifneeded":require("./features/scrollintoviewifneeded"),"sdch":require("./features/sdch"),"selection-api":require("./features/selection-api"),"server-timing":require("./features/server-timing"),"serviceworkers":require("./features/serviceworkers"),"setimmediate":require("./features/setimmediate"),"shadowdom":require("./features/shadowdom"),"shadowdomv1":require("./features/shadowdomv1"),"sharedarraybuffer":require("./features/sharedarraybuffer"),"sharedworkers":require("./features/sharedworkers"),"sni":require("./features/sni"),"spdy":require("./features/spdy"),"speech-recognition":require("./features/speech-recognition"),"speech-synthesis":require("./features/speech-synthesis"),"spellcheck-attribute":require("./features/spellcheck-attribute"),"sql-storage":require("./features/sql-storage"),"srcset":require("./features/srcset"),"stream":require("./features/stream"),"streams":require("./features/streams"),"stricttransportsecurity":require("./features/stricttransportsecurity"),"style-scoped":require("./features/style-scoped"),"subresource-bundling":require("./features/subresource-bundling"),"subresource-integrity":require("./features/subresource-integrity"),"svg-css":require("./features/svg-css"),"svg-filters":require("./features/svg-filters"),"svg-fonts":require("./features/svg-fonts"),"svg-fragment":require("./features/svg-fragment"),"svg-html":require("./features/svg-html"),"svg-html5":require("./features/svg-html5"),"svg-img":require("./features/svg-img"),"svg-smil":require("./features/svg-smil"),"svg":require("./features/svg"),"sxg":require("./features/sxg"),"tabindex-attr":require("./features/tabindex-attr"),"template-literals":require("./features/template-literals"),"template":require("./features/template"),"temporal":require("./features/temporal"),"testfeat":require("./features/testfeat"),"text-decoration":require("./features/text-decoration"),"text-emphasis":require("./features/text-emphasis"),"text-overflow":require("./features/text-overflow"),"text-size-adjust":require("./features/text-size-adjust"),"text-stroke":require("./features/text-stroke"),"textcontent":require("./features/textcontent"),"textencoder":require("./features/textencoder"),"tls1-1":require("./features/tls1-1"),"tls1-2":require("./features/tls1-2"),"tls1-3":require("./features/tls1-3"),"touch":require("./features/touch"),"transforms2d":require("./features/transforms2d"),"transforms3d":require("./features/transforms3d"),"trusted-types":require("./features/trusted-types"),"ttf":require("./features/ttf"),"typedarrays":require("./features/typedarrays"),"u2f":require("./features/u2f"),"unhandledrejection":require("./features/unhandledrejection"),"upgradeinsecurerequests":require("./features/upgradeinsecurerequests"),"url-scroll-to-text-fragment":require("./features/url-scroll-to-text-fragment"),"url":require("./features/url"),"urlsearchparams":require("./features/urlsearchparams"),"use-strict":require("./features/use-strict"),"user-select-none":require("./features/user-select-none"),"user-timing":require("./features/user-timing"),"variable-fonts":require("./features/variable-fonts"),"vector-effect":require("./features/vector-effect"),"vibration":require("./features/vibration"),"video":require("./features/video"),"videotracks":require("./features/videotracks"),"view-transitions":require("./features/view-transitions"),"viewport-unit-variants":require("./features/viewport-unit-variants"),"viewport-units":require("./features/viewport-units"),"wai-aria":require("./features/wai-aria"),"wake-lock":require("./features/wake-lock"),"wasm":require("./features/wasm"),"wav":require("./features/wav"),"wbr-element":require("./features/wbr-element"),"web-animation":require("./features/web-animation"),"web-app-manifest":require("./features/web-app-manifest"),"web-bluetooth":require("./features/web-bluetooth"),"web-serial":require("./features/web-serial"),"web-share":require("./features/web-share"),"webauthn":require("./features/webauthn"),"webcodecs":require("./features/webcodecs"),"webgl":require("./features/webgl"),"webgl2":require("./features/webgl2"),"webgpu":require("./features/webgpu"),"webhid":require("./features/webhid"),"webkit-user-drag":require("./features/webkit-user-drag"),"webm":require("./features/webm"),"webnfc":require("./features/webnfc"),"webp":require("./features/webp"),"websockets":require("./features/websockets"),"webtransport":require("./features/webtransport"),"webusb":require("./features/webusb"),"webvr":require("./features/webvr"),"webvtt":require("./features/webvtt"),"webworkers":require("./features/webworkers"),"webxr":require("./features/webxr"),"will-change":require("./features/will-change"),"woff":require("./features/woff"),"woff2":require("./features/woff2"),"word-break":require("./features/word-break"),"wordwrap":require("./features/wordwrap"),"x-doc-messaging":require("./features/x-doc-messaging"),"x-frame-options":require("./features/x-frame-options"),"xhr2":require("./features/xhr2"),"xhtml":require("./features/xhtml"),"xhtmlsmil":require("./features/xhtmlsmil"),"xml-serializer":require("./features/xml-serializer"),"zstd":require("./features/zstd")}; diff --git a/node_modules/caniuse-lite/data/features/aac.js b/node_modules/caniuse-lite/data/features/aac.js new file mode 100644 index 00000000..a76bff8d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/aac.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 QC 4B I J E F G A B C K L H M N O n o RC SC","132":"0 1 2 3 4 5 6 9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 8 9 C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G","16":"A B"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC"},H:{"2":"4C"},I:{"1":"4B I D 8C OC 9C AD","2":"5C 6C 7C"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"132":"D"},N:{"1":"A","2":"B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"132":"OD PD"}},B:6,C:"AAC audio file format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/abortcontroller.js b/node_modules/caniuse-lite/data/features/abortcontroller.js new file mode 100644 index 00000000..c5f0c9a1 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/abortcontroller.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H"},C:{"1":"0 1 2 3 4 5 6 gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB RC SC"},D:{"1":"0 1 2 3 4 5 6 nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB"},E:{"1":"K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B TC BC UC VC WC XC CC","130":"C zB"},F:{"1":"cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB dC eC fC gC zB NC hC 0B"},G:{"1":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:1,C:"AbortController & AbortSignal",D:true}; diff --git a/node_modules/caniuse-lite/data/features/ac3-ec3.js b/node_modules/caniuse-lite/data/features/ac3-ec3.js new file mode 100644 index 00000000..751613a2 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/ac3-ec3.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"C K L H M N O","2":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC","132":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E","132":"A"},K:{"2":"A B C r zB NC","132":"0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:6,C:"AC-3 (Dolby Digital) and EC-3 (Dolby Digital Plus) codecs",D:false}; diff --git a/node_modules/caniuse-lite/data/features/accelerometer.js b/node_modules/caniuse-lite/data/features/accelerometer.js new file mode 100644 index 00000000..8b17820d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/accelerometer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB","194":"hB 5B iB 6B jB kB lB mB nB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:4,C:"Accelerometer",D:true}; diff --git a/node_modules/caniuse-lite/data/features/addeventlistener.js b/node_modules/caniuse-lite/data/features/addeventlistener.js new file mode 100644 index 00000000..22a78df4 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/addeventlistener.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","130":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","257":"7 QC 4B I J RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"EventTarget.addEventListener()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/alternate-stylesheet.js b/node_modules/caniuse-lite/data/features/alternate-stylesheet.js new file mode 100644 index 00000000..fddb33dc --- /dev/null +++ b/node_modules/caniuse-lite/data/features/alternate-stylesheet.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F G A B","2":"J E PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"G B C dC eC fC gC zB NC hC 0B","16":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"16":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"16":"E A"},K:{"2":"r","16":"A B C zB NC 0B"},L:{"16":"D"},M:{"16":"D"},N:{"16":"A B"},O:{"16":"1B"},P:{"16":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"16":"ND"},S:{"1":"OD PD"}},B:1,C:"Alternate stylesheet",D:false}; diff --git a/node_modules/caniuse-lite/data/features/ambient-light.js b/node_modules/caniuse-lite/data/features/ambient-light.js new file mode 100644 index 00000000..125097bc --- /dev/null +++ b/node_modules/caniuse-lite/data/features/ambient-light.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K","132":"L H M N O","322":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 QC 4B I J E F G A B C K L H M N O n o RC SC","132":"9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B","194":"0 1 2 3 4 5 6 iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB","322":"0 1 2 3 4 5 6 hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB dC eC fC gC zB NC hC 0B","322":"r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"132":"OD PD"}},B:4,C:"Ambient Light Sensor",D:true}; diff --git a/node_modules/caniuse-lite/data/features/apng.js b/node_modules/caniuse-lite/data/features/apng.js new file mode 100644 index 00000000..73f76c96 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/apng.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC"},D:{"1":"0 1 2 3 4 5 6 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB"},E:{"1":"F G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E TC BC UC VC WC"},F:{"1":"B C VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","2":"8 9 G H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},G:{"1":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"Animated PNG (APNG)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/array-find-index.js b/node_modules/caniuse-lite/data/features/array-find-index.js new file mode 100644 index 00000000..9ec8e308 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/array-find-index.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q RC SC"},D:{"1":"0 1 2 3 4 5 6 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB"},E:{"1":"F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E TC BC UC VC"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB dC eC fC gC zB NC hC 0B"},G:{"1":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E","16":"A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Array.prototype.findIndex",D:true}; diff --git a/node_modules/caniuse-lite/data/features/array-find.js b/node_modules/caniuse-lite/data/features/array-find.js new file mode 100644 index 00000000..df185943 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/array-find.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","16":"C K L"},C:{"1":"0 1 2 3 4 5 6 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q RC SC"},D:{"1":"0 1 2 3 4 5 6 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB"},E:{"1":"F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E TC BC UC VC"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB dC eC fC gC zB NC hC 0B"},G:{"1":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E","16":"A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Array.prototype.find",D:true}; diff --git a/node_modules/caniuse-lite/data/features/array-flat.js b/node_modules/caniuse-lite/data/features/array-flat.js new file mode 100644 index 00000000..f99848ef --- /dev/null +++ b/node_modules/caniuse-lite/data/features/array-flat.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B RC SC"},D:{"1":"0 1 2 3 4 5 6 qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB"},E:{"1":"C K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B TC BC UC VC WC XC CC zB"},F:{"1":"fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB dC eC fC gC zB NC hC 0B"},G:{"1":"tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED FD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:6,C:"flat & flatMap array methods",D:true}; diff --git a/node_modules/caniuse-lite/data/features/array-includes.js b/node_modules/caniuse-lite/data/features/array-includes.js new file mode 100644 index 00000000..1a6ef6c4 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/array-includes.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K"},C:{"1":"0 1 2 3 4 5 6 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB RC SC"},D:{"1":"0 1 2 3 4 5 6 WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB dC eC fC gC zB NC hC 0B"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Array.prototype.includes",D:true}; diff --git a/node_modules/caniuse-lite/data/features/arrow-functions.js b/node_modules/caniuse-lite/data/features/arrow-functions.js new file mode 100644 index 00000000..c0b02dc7 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/arrow-functions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 QC 4B I J E F G A B C K L H M N O n o RC SC"},D:{"1":"0 1 2 3 4 5 6 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB dC eC fC gC zB NC hC 0B"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Arrow functions",D:true}; diff --git a/node_modules/caniuse-lite/data/features/asmjs.js b/node_modules/caniuse-lite/data/features/asmjs.js new file mode 100644 index 00000000..782ca79d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/asmjs.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"K L H M N O","132":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","322":"C"},C:{"1":"0 1 2 3 4 5 6 9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 QC 4B I J E F G A B C K L H M N O n o RC SC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB","132":"0 1 2 3 4 5 6 DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","132":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","132":"D"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","132":"r"},L:{"132":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"132":"1B"},P:{"2":"I","132":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"132":"DC"},R:{"132":"ND"},S:{"1":"OD PD"}},B:6,C:"asm.js",D:true}; diff --git a/node_modules/caniuse-lite/data/features/async-clipboard.js b/node_modules/caniuse-lite/data/features/async-clipboard.js new file mode 100644 index 00000000..df303e64 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/async-clipboard.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB RC SC","132":"0 1 2 3 4 5 6 kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB","66":"hB 5B iB 6B"},E:{"1":"L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K TC BC UC VC WC XC CC zB 0B"},F:{"1":"YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC","260":"zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","260":"D"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"132":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"2":"I BD CD DD ED","260":"n o p q FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD","132":"PD"}},B:5,C:"Asynchronous Clipboard API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/async-functions.js b/node_modules/caniuse-lite/data/features/async-functions.js new file mode 100644 index 00000000..cf243486 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/async-functions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K","194":"L"},C:{"1":"0 1 2 3 4 5 6 bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB RC SC"},D:{"1":"0 1 2 3 4 5 6 eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC","258":"CC"},F:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB dC eC fC gC zB NC hC 0B"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC","258":"qC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:6,C:"Async functions",D:true}; diff --git a/node_modules/caniuse-lite/data/features/atob-btoa.js b/node_modules/caniuse-lite/data/features/atob-btoa.js new file mode 100644 index 00000000..acc97574 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/atob-btoa.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m gC zB NC hC 0B","2":"G dC eC","16":"fC"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","16":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Base64 encoding and decoding",D:true}; diff --git a/node_modules/caniuse-lite/data/features/audio-api.js b/node_modules/caniuse-lite/data/features/audio-api.js new file mode 100644 index 00000000..6a330752 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/audio-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q RC SC"},D:{"1":"0 1 2 3 4 5 6 JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K","33":"8 9 L H M N O n o p q AB BB CB DB EB FB GB HB IB"},E:{"1":"H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC","33":"J E F G A B C K L VC WC XC CC zB 0B DC"},F:{"1":"9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","33":"8 H M N O n o"},G:{"1":"0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC","33":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"Web Audio API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/audio.js b/node_modules/caniuse-lite/data/features/audio.js new file mode 100644 index 00000000..6509679d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/audio.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B","132":"7 8 I J E F G A B C K L H M N O RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m fC gC zB NC hC 0B","2":"G","4":"dC eC"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC"},H:{"2":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","2":"5C 6C"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Audio element",D:true}; diff --git a/node_modules/caniuse-lite/data/features/audiotracks.js b/node_modules/caniuse-lite/data/features/audiotracks.js new file mode 100644 index 00000000..c1fe3c8d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/audiotracks.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"C K L H M N O","322":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB RC SC","194":"0 1 2 3 4 5 6 IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB","322":"0 1 2 3 4 5 6 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB dC eC fC gC zB NC hC 0B","322":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","322":"r"},L:{"322":"D"},M:{"2":"D"},N:{"1":"A B"},O:{"322":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"322":"DC"},R:{"322":"ND"},S:{"194":"OD PD"}},B:1,C:"Audio Tracks",D:true}; diff --git a/node_modules/caniuse-lite/data/features/autofocus.js b/node_modules/caniuse-lite/data/features/autofocus.js new file mode 100644 index 00000000..c995fdaa --- /dev/null +++ b/node_modules/caniuse-lite/data/features/autofocus.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"I"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","2":"G"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I D 8C OC 9C AD","2":"5C 6C 7C"},J:{"1":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:1,C:"Autofocus attribute",D:true}; diff --git a/node_modules/caniuse-lite/data/features/auxclick.js b/node_modules/caniuse-lite/data/features/auxclick.js new file mode 100644 index 00000000..58e31dca --- /dev/null +++ b/node_modules/caniuse-lite/data/features/auxclick.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB RC SC","129":"0 1 2 3 4 5 6 cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:5,C:"Auxclick",D:true}; diff --git a/node_modules/caniuse-lite/data/features/av1.js b/node_modules/caniuse-lite/data/features/av1.js new file mode 100644 index 00000000..a714cebe --- /dev/null +++ b/node_modules/caniuse-lite/data/features/av1.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"4 5 6 C K L H M N D","194":"0 1 2 3 O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z"},C:{"1":"0 1 2 3 4 5 6 oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB RC SC","66":"eB fB gB hB 5B iB 6B jB kB lB","260":"mB","516":"nB"},D:{"1":"0 1 2 3 4 5 6 rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB","66":"oB pB qB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC","1028":"3B LC MC cC"},F:{"1":"gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C","1028":"3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:6,C:"AV1 video format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/avif.js b/node_modules/caniuse-lite/data/features/avif.js new file mode 100644 index 00000000..b40c1386 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/avif.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","4162":"2 3 4 5"},C:{"1":"1 2 3 4 5 6 D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB RC SC","194":"xB yB P Q R 7B S T U V W X Y Z a b","257":"c d e f g h i j k l m s t u v w x y","2049":"0 z"},D:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T"},E:{"1":"JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B","1796":"GC HC IC"},F:{"1":"sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C","257":"JC KC 3C 3B LC MC","1281":"2B GC HC IC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD HD ID"},Q:{"2":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:6,C:"AVIF image format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/background-attachment.js b/node_modules/caniuse-lite/data/features/background-attachment.js new file mode 100644 index 00000000..4f3e1fbc --- /dev/null +++ b/node_modules/caniuse-lite/data/features/background-attachment.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","132":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 J E F G A B C UC VC WC XC CC zB 0B FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","132":"I K TC BC DC","2050":"L H YC ZC EC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m fC gC zB NC hC 0B","132":"G dC eC"},G:{"2":"BC iC OC","772":"F jC kC lC mC nC oC pC qC rC sC tC uC","2050":"vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 9C AD","132":"8C OC"},J:{"260":"E A"},K:{"1":"B C r zB NC 0B","132":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"2":"I","1028":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS background-attachment",D:true}; diff --git a/node_modules/caniuse-lite/data/features/background-clip-text.js b/node_modules/caniuse-lite/data/features/background-clip-text.js new file mode 100644 index 00000000..598d0633 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/background-clip-text.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"H M N O","33":"0 1 2 3 4 5 6 C K L P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB RC SC"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"L H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"TC BC","33":"7 I J E F G A B C K UC VC WC XC CC zB 0B DC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC jC","33":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC"},H:{"2":"4C"},I:{"16":"4B 5C 6C 7C","33":"I D 8C OC 9C AD"},J:{"33":"E A"},K:{"16":"A B C zB NC 0B","33":"r"},L:{"33":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"33":"1B"},P:{"33":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"33":"DC"},R:{"33":"ND"},S:{"1":"OD PD"}},B:7,C:"Background-clip: text",D:true}; diff --git a/node_modules/caniuse-lite/data/features/background-img-opts.js b/node_modules/caniuse-lite/data/features/background-img-opts.js new file mode 100644 index 00000000..913c857c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/background-img-opts.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC","36":"SC"},D:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","516":"7 I J E F G A B C K L"},E:{"1":"E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","772":"7 I J TC BC UC VC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m fC gC zB NC hC 0B","2":"G dC","36":"eC"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","4":"BC iC OC kC","516":"jC"},H:{"132":"4C"},I:{"1":"D 9C AD","36":"5C","516":"4B I 8C OC","548":"6C 7C"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS3 Background-image options",D:true}; diff --git a/node_modules/caniuse-lite/data/features/background-position-x-y.js b/node_modules/caniuse-lite/data/features/background-position-x-y.js new file mode 100644 index 00000000..b1a7b662 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/background-position-x-y.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:7,C:"background-position-x & background-position-y",D:true}; diff --git a/node_modules/caniuse-lite/data/features/background-repeat-round-space.js b/node_modules/caniuse-lite/data/features/background-repeat-round-space.js new file mode 100644 index 00000000..19888709 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/background-repeat-round-space.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F PC","132":"G"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB RC SC"},D:{"1":"0 1 2 3 4 5 6 HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB"},E:{"1":"E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC VC"},F:{"1":"8 9 B C n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m fC gC zB NC hC 0B","2":"G H M N O dC eC"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC"},H:{"1":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","2":"E"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:4,C:"CSS background-repeat round and space",D:true}; diff --git a/node_modules/caniuse-lite/data/features/background-sync.js b/node_modules/caniuse-lite/data/features/background-sync.js new file mode 100644 index 00000000..1100ee9d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/background-sync.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D RC SC","16":"8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:7,C:"Background Sync API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/battery-status.js b/node_modules/caniuse-lite/data/features/battery-status.js new file mode 100644 index 00000000..50c87e97 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/battery-status.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"SB TB UB VB WB XB YB ZB aB","2":"0 1 2 3 4 5 6 7 QC 4B I J E F G bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","132":"8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","164":"A B C K L H"},D:{"1":"0 1 2 3 4 5 6 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB","66":"MB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD","2":"PD"}},B:4,C:"Battery Status API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/beacon.js b/node_modules/caniuse-lite/data/features/beacon.js new file mode 100644 index 00000000..ff336660 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/beacon.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K"},C:{"1":"0 1 2 3 4 5 6 GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB RC SC"},D:{"1":"0 1 2 3 4 5 6 OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"1":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B TC BC UC VC WC XC CC"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB dC eC fC gC zB NC hC 0B"},G:{"1":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"Beacon API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/beforeafterprint.js b/node_modules/caniuse-lite/data/features/beforeafterprint.js new file mode 100644 index 00000000..7e92cd13 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/beforeafterprint.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J E F G A B","16":"PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I RC SC"},D:{"1":"0 1 2 3 4 5 6 kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB"},E:{"1":"K L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C TC BC UC VC WC XC CC zB 0B"},F:{"1":"ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB dC eC fC gC zB NC hC 0B"},G:{"1":"vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"16":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"16":"A B"},O:{"1":"1B"},P:{"2":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","16":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Printing Events",D:true}; diff --git a/node_modules/caniuse-lite/data/features/bigint.js b/node_modules/caniuse-lite/data/features/bigint.js new file mode 100644 index 00000000..b91e32c5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/bigint.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB RC SC","194":"mB nB oB"},D:{"1":"0 1 2 3 4 5 6 oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB"},E:{"1":"L H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K TC BC UC VC WC XC CC zB 0B DC"},F:{"1":"dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dC eC fC gC zB NC hC 0B"},G:{"1":"zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:6,C:"BigInt",D:true}; diff --git a/node_modules/caniuse-lite/data/features/blobbuilder.js b/node_modules/caniuse-lite/data/features/blobbuilder.js new file mode 100644 index 00000000..8655ed1e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/blobbuilder.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I RC SC","36":"J E F G A B C"},D:{"1":"0 1 2 3 4 5 6 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E","36":"8 F G A B C K L H M N O"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B C dC eC fC gC zB NC hC"},G:{"1":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC"},H:{"2":"4C"},I:{"1":"D","2":"5C 6C 7C","36":"4B I 8C OC 9C AD"},J:{"1":"A","2":"E"},K:{"1":"r 0B","2":"A B C zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"Blob constructing",D:true}; diff --git a/node_modules/caniuse-lite/data/features/bloburls.js b/node_modules/caniuse-lite/data/features/bloburls.js new file mode 100644 index 00000000..259cca61 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/bloburls.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","129":"A B"},B:{"1":"0 1 2 3 4 5 6 H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","129":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E","33":"8 F G A B C K L H M N O n o p"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC","33":"J"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC","33":"kC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B 5C 6C 7C","33":"I 8C OC"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","2":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"Blob URLs",D:true}; diff --git a/node_modules/caniuse-lite/data/features/border-image.js b/node_modules/caniuse-lite/data/features/border-image.js new file mode 100644 index 00000000..684d627e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/border-image.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F G A PC"},B:{"1":"0 1 2 3 4 5 6 L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","129":"C K"},C:{"1":"0 1 2 3 4 5 6 ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B","260":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","804":"7 I J E F G A B C K L RC SC"},D:{"1":"0 1 2 3 4 5 6 fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","260":"aB bB cB dB eB","388":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB","1412":"8 9 H M N O n o p q AB BB CB DB EB","1956":"7 I J E F G A B C K L"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","129":"A B C K L H XC CC zB 0B DC YC ZC EC","1412":"J E F G VC WC","1956":"7 I TC BC UC"},F:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G dC eC","260":"NB OB PB QB RB","388":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB","1796":"fC gC","1828":"B C zB NC hC 0B"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","129":"oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC","1412":"F kC lC mC nC","1956":"BC iC OC jC"},H:{"1828":"4C"},I:{"1":"D","388":"9C AD","1956":"4B I 5C 6C 7C 8C OC"},J:{"1412":"A","1924":"E"},K:{"1":"r","2":"A","1828":"B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","2":"A"},O:{"1":"1B"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","260":"BD CD","388":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","260":"OD"}},B:4,C:"CSS3 Border images",D:true}; diff --git a/node_modules/caniuse-lite/data/features/border-radius.js b/node_modules/caniuse-lite/data/features/border-radius.js new file mode 100644 index 00000000..8b904730 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/border-radius.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","257":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","289":"4B RC SC","292":"QC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"I"},E:{"1":"7 E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","33":"I TC BC","129":"J UC VC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m fC gC zB NC hC 0B","2":"G dC eC"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","33":"BC"},H:{"2":"4C"},I:{"1":"4B I D 6C 7C 8C OC 9C AD","33":"5C"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","257":"OD"}},B:4,C:"CSS3 Border-radius (rounded corners)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/broadcastchannel.js b/node_modules/caniuse-lite/data/features/broadcastchannel.js new file mode 100644 index 00000000..1871a66e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/broadcastchannel.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB RC SC"},D:{"1":"0 1 2 3 4 5 6 dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC"},F:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB dC eC fC gC zB NC hC 0B"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"BroadcastChannel",D:true}; diff --git a/node_modules/caniuse-lite/data/features/brotli.js b/node_modules/caniuse-lite/data/features/brotli.js new file mode 100644 index 00000000..5f04b323 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/brotli.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L"},C:{"1":"0 1 2 3 4 5 6 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB RC SC"},D:{"1":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB","194":"YB","257":"ZB"},E:{"1":"K L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC CC","513":"B C zB 0B"},F:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB dC eC fC gC zB NC hC 0B","194":"LB MB"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Brotli Accept-Encoding/Content-Encoding",D:true}; diff --git a/node_modules/caniuse-lite/data/features/calc.js b/node_modules/caniuse-lite/data/features/calc.js new file mode 100644 index 00000000..a5676dcb --- /dev/null +++ b/node_modules/caniuse-lite/data/features/calc.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","260":"G","516":"A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","33":"7 I J E F G A B C K L H"},D:{"1":"0 1 2 3 4 5 6 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K L H M N O","33":"8 9 n o p q AB"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC","33":"J"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC","33":"kC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC","132":"9C AD"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"calc() as CSS unit value",D:true}; diff --git a/node_modules/caniuse-lite/data/features/canvas-blending.js b/node_modules/caniuse-lite/data/features/canvas-blending.js new file mode 100644 index 00000000..48955c2c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/canvas-blending.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C"},C:{"1":"0 1 2 3 4 5 6 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 QC 4B I J E F G A B C K L H M N O RC SC"},D:{"1":"0 1 2 3 4 5 6 FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC"},F:{"1":"8 9 N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C H M dC eC fC gC zB NC hC 0B"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"Canvas blend modes",D:true}; diff --git a/node_modules/caniuse-lite/data/features/canvas-text.js b/node_modules/caniuse-lite/data/features/canvas-text.js new file mode 100644 index 00000000..0e409eee --- /dev/null +++ b/node_modules/caniuse-lite/data/features/canvas-text.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"PC","8":"J E F"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","8":"QC 4B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","8":"TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m fC gC zB NC hC 0B","8":"G dC eC"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","8":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Text API for Canvas",D:true}; diff --git a/node_modules/caniuse-lite/data/features/canvas.js b/node_modules/caniuse-lite/data/features/canvas.js new file mode 100644 index 00000000..e56c87bd --- /dev/null +++ b/node_modules/caniuse-lite/data/features/canvas.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"PC","8":"J E F"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC SC","132":"QC 4B RC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","132":"TC BC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"260":"4C"},I:{"1":"4B I D 8C OC 9C AD","132":"5C 6C 7C"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Canvas (basic support)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/ch-unit.js b/node_modules/caniuse-lite/data/features/ch-unit.js new file mode 100644 index 00000000..cc50e12e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/ch-unit.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","132":"G A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB"},E:{"1":"E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC VC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"ch (character) unit",D:true}; diff --git a/node_modules/caniuse-lite/data/features/chacha20-poly1305.js b/node_modules/caniuse-lite/data/features/chacha20-poly1305.js new file mode 100644 index 00000000..ddd3e9fe --- /dev/null +++ b/node_modules/caniuse-lite/data/features/chacha20-poly1305.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB RC SC"},D:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB","129":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},E:{"1":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B TC BC UC VC WC XC CC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB dC eC fC gC zB NC hC 0B"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C","16":"AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"ChaCha20-Poly1305 cipher suites for TLS",D:true}; diff --git a/node_modules/caniuse-lite/data/features/channel-messaging.js b/node_modules/caniuse-lite/data/features/channel-messaging.js new file mode 100644 index 00000000..1e19a34a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/channel-messaging.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB RC SC","194":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m gC zB NC hC 0B","2":"G dC eC","16":"fC"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Channel messaging",D:true}; diff --git a/node_modules/caniuse-lite/data/features/childnode-remove.js b/node_modules/caniuse-lite/data/features/childnode-remove.js new file mode 100644 index 00000000..4fc44a8c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/childnode-remove.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","16":"C"},C:{"1":"0 1 2 3 4 5 6 9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 QC 4B I J E F G A B C K L H M N O n o p RC SC"},D:{"1":"0 1 2 3 4 5 6 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O n o p q"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC","16":"J"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"ChildNode.remove()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/classlist.js b/node_modules/caniuse-lite/data/features/classlist.js new file mode 100644 index 00000000..815a2d7a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/classlist.js @@ -0,0 +1 @@ +module.exports={A:{A:{"8":"J E F G PC","1924":"A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"QC 4B RC","516":"9 AB","772":"7 8 I J E F G A B C K L H M N O n o p q SC"},D:{"1":"0 1 2 3 4 5 6 DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"7 I J E","516":"9 AB BB CB","772":"q","900":"8 F G A B C K L H M N O n o p"},E:{"1":"E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","8":"7 I TC BC","900":"J UC VC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","8":"G B dC eC fC gC zB","900":"C NC hC 0B"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","8":"BC iC OC","900":"jC kC"},H:{"900":"4C"},I:{"1":"D 9C AD","8":"5C 6C 7C","900":"4B I 8C OC"},J:{"1":"A","900":"E"},K:{"1":"r","8":"A B","900":"C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"900":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"classList (DOMTokenList)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js b/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js new file mode 100644 index 00000000..5d6d0f9b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:6,C:"Client Hints: DPR, Width, Viewport-Width",D:true}; diff --git a/node_modules/caniuse-lite/data/features/clipboard.js b/node_modules/caniuse-lite/data/features/clipboard.js new file mode 100644 index 00000000..c7181fea --- /dev/null +++ b/node_modules/caniuse-lite/data/features/clipboard.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2436":"J E F G A B PC"},B:{"260":"N O","2436":"C K L H M","8196":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 QC 4B I J E F G A B C K L H M N O n o RC SC","772":"9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","4100":"0 1 2 3 4 5 6 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"7 I J E F G A B C","2564":"8 9 K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","8196":"0 1 2 3 4 5 6 hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","10244":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB"},E:{"1":"C K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"TC BC","2308":"A B CC zB","2820":"7 I J E F G UC VC WC XC"},F:{"2":"G B dC eC fC gC zB NC hC","16":"C","516":"0B","2564":"8 9 H M N O n o p q AB BB CB DB EB","8196":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","10244":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB"},G:{"1":"tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC","2820":"F jC kC lC mC nC oC pC qC rC sC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC","260":"D","2308":"9C AD"},J:{"2":"E","2308":"A"},K:{"2":"A B C zB NC","16":"0B","8196":"r"},L:{"8196":"D"},M:{"1028":"D"},N:{"2":"A B"},O:{"8196":"1B"},P:{"2052":"BD CD","2308":"I","8196":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"8196":"DC"},R:{"8196":"ND"},S:{"4100":"OD PD"}},B:5,C:"Synchronous Clipboard API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/colr-v1.js b/node_modules/caniuse-lite/data/features/colr-v1.js new file mode 100644 index 00000000..cf78829f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/colr-v1.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 h i j k l m s t u v w x y z D","2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g"},C:{"1":"0 1 2 3 4 5 6 v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g RC SC","258":"h i j k l m s","578":"t u"},D:{"1":"0 1 2 3 4 5 6 h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y","194":"Z a b c d e f g"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"16":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"16":"A B"},O:{"1":"1B"},P:{"1":"n o p q LD MD","2":"I BD CD DD ED FD CC GD HD ID JD KD 2B 3B"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:6,C:"COLR/CPAL(v1) Font Formats",D:true}; diff --git a/node_modules/caniuse-lite/data/features/colr.js b/node_modules/caniuse-lite/data/features/colr.js new file mode 100644 index 00000000..d4ecd51d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/colr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","257":"G A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O y z D","513":"P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x"},C:{"1":"0 1 2 3 4 5 6 HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB RC SC"},D:{"1":"0 1 2 3 4 5 6 y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB","513":"sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x"},E:{"1":"L H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC","2":"7 I J E F G A TC BC UC VC WC XC CC","129":"B C K zB 0B DC","1026":"3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB dC eC fC gC zB NC hC 0B","513":"hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C","2":"F BC iC OC jC kC lC mC nC oC pC qC","1026":"3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"16":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"16":"A B"},O:{"1":"1B"},P:{"1":"n o p q CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED FD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"COLR/CPAL(v0) Font Formats",D:true}; diff --git a/node_modules/caniuse-lite/data/features/comparedocumentposition.js b/node_modules/caniuse-lite/data/features/comparedocumentposition.js new file mode 100644 index 00000000..d1d0e10a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/comparedocumentposition.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L","132":"8 9 H M N O n o p q AB BB CB DB EB"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"7 I J TC BC","132":"E F G VC WC XC","260":"UC"},F:{"1":"8 9 C N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B","16":"G B dC eC fC gC zB NC","132":"H M"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC","132":"F iC OC jC kC lC mC nC oC"},H:{"1":"4C"},I:{"1":"D 9C AD","16":"5C 6C","132":"4B I 7C 8C OC"},J:{"132":"E A"},K:{"1":"C r 0B","16":"A B zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Node.compareDocumentPosition()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/console-basic.js b/node_modules/caniuse-lite/data/features/console-basic.js new file mode 100644 index 00000000..5f64de38 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/console-basic.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E PC","132":"F G"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m zB NC hC 0B","2":"G dC eC fC gC"},G:{"1":"BC iC OC jC","513":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"4097":"4C"},I:{"1025":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"258":"E A"},K:{"2":"A","258":"B C zB NC 0B","1025":"r"},L:{"1025":"D"},M:{"2049":"D"},N:{"258":"A B"},O:{"258":"1B"},P:{"1025":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1025":"ND"},S:{"1":"OD PD"}},B:1,C:"Basic console logging functions",D:true}; diff --git a/node_modules/caniuse-lite/data/features/console-time.js b/node_modules/caniuse-lite/data/features/console-time.js new file mode 100644 index 00000000..bd72386c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/console-time.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F G A PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m zB NC hC 0B","2":"G dC eC fC gC","16":"B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"r","16":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","2":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"console.time and console.timeEnd",D:true}; diff --git a/node_modules/caniuse-lite/data/features/const.js b/node_modules/caniuse-lite/data/features/const.js new file mode 100644 index 00000000..d3bb3b2e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/const.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","2052":"B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 QC 4B I J E F G A B C RC SC","260":"8 9 K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB"},D:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","260":"7 8 I J E F G A B C K L H M N O n","772":"9 o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","1028":"QB RB SB TB UB VB WB XB"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","260":"7 I A TC BC CC","772":"J E F G UC VC WC XC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G dC","132":"B eC fC gC zB NC","644":"C hC 0B","772":"8 9 H M N O n o p q AB BB CB","1028":"DB EB FB GB HB IB JB KB"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","260":"BC iC OC pC qC","772":"F jC kC lC mC nC oC"},H:{"644":"4C"},I:{"1":"D","16":"5C 6C","260":"7C","772":"4B I 8C OC 9C AD"},J:{"772":"E A"},K:{"1":"r","132":"A B zB NC","644":"C 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","2":"A"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","1028":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"const",D:true}; diff --git a/node_modules/caniuse-lite/data/features/constraint-validation.js b/node_modules/caniuse-lite/data/features/constraint-validation.js new file mode 100644 index 00000000..f51d1c87 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/constraint-validation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","900":"A B"},B:{"1":"0 1 2 3 4 5 6 N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","388":"L H M","900":"C K"},C:{"1":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","260":"YB ZB","388":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB","900":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB"},D:{"1":"0 1 2 3 4 5 6 PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L","388":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB","900":"8 9 H M N O n o p q"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"7 I TC BC","388":"F G WC XC","900":"J E UC VC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","16":"G B dC eC fC gC zB NC","388":"8 9 H M N O n o p q AB BB","900":"C hC 0B"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC","388":"F lC mC nC oC","900":"jC kC"},H:{"2":"4C"},I:{"1":"D","16":"4B 5C 6C 7C","388":"9C AD","900":"I 8C OC"},J:{"16":"E","388":"A"},K:{"1":"r","16":"A B zB NC","900":"C 0B"},L:{"1":"D"},M:{"1":"D"},N:{"900":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","388":"OD"}},B:1,C:"Constraint Validation API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/contenteditable.js b/node_modules/caniuse-lite/data/features/contenteditable.js new file mode 100644 index 00000000..0241f22d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/contenteditable.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC","4":"4B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"2":"4C"},I:{"1":"4B I D 8C OC 9C AD","2":"5C 6C 7C"},J:{"1":"E A"},K:{"1":"r 0B","2":"A B C zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"contenteditable attribute (basic support)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js b/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js new file mode 100644 index 00000000..e8376bb3 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","132":"A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","129":"7 8 I J E F G A B C K L H M N O n o p"},D:{"1":"0 1 2 3 4 5 6 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K","257":"8 9 L H M N O n o p q"},E:{"1":"E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC","257":"J VC","260":"UC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC","257":"kC","260":"jC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"2":"E","257":"A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"132":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"Content Security Policy 1.0",D:true}; diff --git a/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js b/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js new file mode 100644 index 00000000..6af15fbe --- /dev/null +++ b/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L","4100":"H M N O"},C:{"1":"0 1 2 3 4 5 6 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB RC SC","132":"GB HB IB JB","260":"KB","516":"LB MB NB OB PB QB RB SB TB"},D:{"1":"0 1 2 3 4 5 6 PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB","1028":"LB MB NB","2052":"OB"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O n o p dC eC fC gC zB NC hC 0B","1028":"9 q AB","2052":"BB"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"Content Security Policy Level 2",D:true}; diff --git a/node_modules/caniuse-lite/data/features/cookie-store-api.js b/node_modules/caniuse-lite/data/features/cookie-store-api.js new file mode 100644 index 00000000..20d934f3 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/cookie-store-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O","194":"P Q R S T U V"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB","194":"lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB dC eC fC gC zB NC hC 0B","194":"aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD HD ID"},Q:{"2":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:7,C:"Cookie Store API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/cors.js b/node_modules/caniuse-lite/data/features/cors.js new file mode 100644 index 00000000..a57642f8 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/cors.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E PC","132":"A","260":"F G"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC 4B","1025":"6B jB kB lB mB nB oB pB qB rB"},D:{"1":"0 1 2 3 4 5 6 8 9 K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 I J E F G A B C"},E:{"2":"TC BC","513":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","644":"7 I UC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B dC eC fC gC zB NC hC"},G:{"513":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","644":"BC iC OC jC"},H:{"2":"4C"},I:{"1":"D 9C AD","132":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","132":"E"},K:{"1":"C r 0B","2":"A B zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","132":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Cross-Origin Resource Sharing",D:true}; diff --git a/node_modules/caniuse-lite/data/features/createimagebitmap.js b/node_modules/caniuse-lite/data/features/createimagebitmap.js new file mode 100644 index 00000000..31286966 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/createimagebitmap.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RC SC","1028":"c d e f g","3076":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b","8196":"0 1 2 3 4 5 6 h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","132":"ZB aB","260":"bB cB","516":"dB eB fB gB hB"},E:{"2":"7 I J E F G A B C K L TC BC UC VC WC XC CC zB 0B DC YC","4100":"H ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB dC eC fC gC zB NC hC 0B","132":"MB NB","260":"OB PB","516":"QB RB SB TB UB"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C","4100":"1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"8196":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","16":"I BD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"3076":"OD PD"}},B:1,C:"createImageBitmap",D:true}; diff --git a/node_modules/caniuse-lite/data/features/credential-management.js b/node_modules/caniuse-lite/data/features/credential-management.js new file mode 100644 index 00000000..4bdb11ab --- /dev/null +++ b/node_modules/caniuse-lite/data/features/credential-management.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB","66":"XB YB ZB","129":"aB bB cB dB eB fB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB dC eC fC gC zB NC hC 0B"},G:{"1":"zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:5,C:"Credential Management API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/cryptography.js b/node_modules/caniuse-lite/data/features/cryptography.js new file mode 100644 index 00000000..4f5adad2 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/cryptography.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"PC","8":"J E F G A","164":"B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","513":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB RC SC","66":"HB IB"},D:{"1":"0 1 2 3 4 5 6 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","8":"7 I J E TC BC UC VC","289":"F G A WC XC CC"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","8":"8 G B C H M N O n o p q dC eC fC gC zB NC hC 0B"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","8":"BC iC OC jC kC lC","289":"F mC nC oC pC qC"},H:{"2":"4C"},I:{"1":"D","8":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"8":"E A"},K:{"1":"r","8":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"8":"A","164":"B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"Web Cryptography",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-all.js b/node_modules/caniuse-lite/data/features/css-all.js new file mode 100644 index 00000000..e97f1f5f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-all.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB RC SC"},D:{"1":"0 1 2 3 4 5 6 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"1":"A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O n o p q dC eC fC gC zB NC hC 0B"},G:{"1":"oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC"},H:{"2":"4C"},I:{"1":"D AD","2":"4B I 5C 6C 7C 8C OC 9C"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS all property",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-anchor-positioning.js b/node_modules/caniuse-lite/data/features/css-anchor-positioning.js new file mode 100644 index 00000000..e1c0dff1 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-anchor-positioning.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z","194":"5 6 D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS Anchor Positioning",D:false}; diff --git a/node_modules/caniuse-lite/data/features/css-animation.js b/node_modules/caniuse-lite/data/features/css-animation.js new file mode 100644 index 00000000..e2fce5a0 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-animation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B I RC SC","33":"7 J E F G A B C K L H"},D:{"1":"0 1 2 3 4 5 6 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC","33":"J E F UC VC WC","292":"7 I"},F:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B dC eC fC gC zB NC hC","33":"8 9 C H M N O n o p q AB BB CB DB EB"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","33":"F kC lC mC","164":"BC iC OC jC"},H:{"2":"4C"},I:{"1":"D","33":"I 8C OC 9C AD","164":"4B 5C 6C 7C"},J:{"33":"E A"},K:{"1":"r 0B","2":"A B C zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"CSS Animation",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-any-link.js b/node_modules/caniuse-lite/data/features/css-any-link.js new file mode 100644 index 00000000..26855268 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-any-link.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"QC","33":"7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB RC SC"},D:{"1":"0 1 2 3 4 5 6 mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"7 I J TC BC UC","33":"E F VC WC"},F:{"1":"bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC jC","33":"F kC lC mC"},H:{"2":"4C"},I:{"1":"D","16":"4B I 5C 6C 7C 8C OC","33":"9C AD"},J:{"16":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q FD CC GD HD ID JD KD 2B 3B LD MD","16":"I","33":"BD CD DD ED"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","33":"OD"}},B:5,C:"CSS :any-link selector",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-appearance.js b/node_modules/caniuse-lite/data/features/css-appearance.js new file mode 100644 index 00000000..dd46bb3c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-appearance.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","33":"S","164":"P Q R","388":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","164":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P","676":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB RC SC"},D:{"1":"0 1 2 3 4 5 6 T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"S","164":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","164":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC"},F:{"1":"r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","33":"rB sB tB","164":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","164":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC"},H:{"2":"4C"},I:{"1":"D","164":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"164":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A","388":"B"},O:{"1":"1B"},P:{"164":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"164":"DC"},R:{"1":"ND"},S:{"1":"PD","164":"OD"}},B:5,C:"CSS Appearance",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-at-counter-style.js b/node_modules/caniuse-lite/data/features/css-at-counter-style.js new file mode 100644 index 00000000..988c5b73 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-at-counter-style.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O P Q R S T U V W X Y Z","132":"0 1 2 3 4 5 6 a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB RC SC","132":"0 1 2 3 4 5 6 IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z","132":"0 1 2 3 4 5 6 a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC","4":"3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB dC eC fC gC zB NC hC 0B","132":"xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C","4":"3B LC MC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","132":"D"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","132":"r"},L:{"132":"D"},M:{"132":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"2":"I BD CD DD ED FD CC GD HD ID JD KD","132":"n o p q 2B 3B LD MD"},Q:{"2":"DC"},R:{"132":"ND"},S:{"132":"OD PD"}},B:4,C:"CSS Counter Styles",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-autofill.js b/node_modules/caniuse-lite/data/features/css-autofill.js new file mode 100644 index 00000000..56e60797 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-autofill.js @@ -0,0 +1 @@ +module.exports={A:{D:{"33":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},L:{"33":"D"},B:{"2":"C K L H M N O","33":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U RC SC"},M:{"1":"D"},A:{"2":"J E F G A B PC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},K:{"2":"A B C zB NC 0B","33":"r"},E:{"1":"H ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC","2":"cC","33":"7 I J E F G A B C K L TC BC UC VC WC XC CC zB 0B DC YC"},G:{"1":"1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","33":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C"},P:{"33":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},I:{"2":"4B I 5C 6C 7C 8C OC","33":"D 9C AD"}},B:6,C:":autofill CSS pseudo-class",D:undefined}; diff --git a/node_modules/caniuse-lite/data/features/css-backdrop-filter.js b/node_modules/caniuse-lite/data/features/css-backdrop-filter.js new file mode 100644 index 00000000..4a758157 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-backdrop-filter.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M","257":"N O"},C:{"1":"0 1 2 3 4 5 6 m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB RC SC","578":"rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l"},D:{"1":"0 1 2 3 4 5 6 wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB","194":"WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB"},E:{"2":"7 I J E F TC BC UC VC WC","33":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB dC eC fC gC zB NC hC 0B","194":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB"},G:{"2":"F BC iC OC jC kC lC mC","33":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q HD ID JD KD 2B 3B LD MD","2":"I","194":"BD CD DD ED FD CC GD"},Q:{"2":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:7,C:"CSS Backdrop Filter",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-background-offsets.js b/node_modules/caniuse-lite/data/features/css-background-offsets.js new file mode 100644 index 00000000..ffc7c36c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-background-offsets.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C RC SC"},D:{"1":"0 1 2 3 4 5 6 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q"},E:{"1":"E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC VC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m fC gC zB NC hC 0B","2":"G dC eC"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC"},H:{"1":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","2":"E"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS background-position edge offsets",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js b/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js new file mode 100644 index 00000000..870fd15a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB RC SC"},D:{"1":"0 1 2 3 4 5 6 KB LB MB NB OB PB QB RB SB TB UB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB","260":"VB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E TC BC UC VC","132":"F G A WC XC"},F:{"1":"9 p q AB BB CB DB EB FB GB HB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O n o dC eC fC gC zB NC hC 0B","260":"IB"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC","132":"F mC nC oC pC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS background-blend-mode",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js b/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js new file mode 100644 index 00000000..49a9ae36 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","164":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB RC SC"},D:{"2":"7 8 I J E F G A B C K L H M N O n o","164":"0 1 2 3 4 5 6 9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J TC BC UC","164":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"G dC eC fC gC","129":"B C zB NC hC 0B","164":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"BC iC OC jC kC","164":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"132":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC","164":"D 9C AD"},J:{"2":"E","164":"A"},K:{"2":"A","129":"B C zB NC 0B","164":"r"},L:{"164":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"164":"1B"},P:{"164":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"164":"DC"},R:{"164":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS box-decoration-break",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-boxshadow.js b/node_modules/caniuse-lite/data/features/css-boxshadow.js new file mode 100644 index 00000000..4a094514 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-boxshadow.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B","33":"RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"7 I J E F G"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","33":"7","164":"I TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m fC gC zB NC hC 0B","2":"G dC eC"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","33":"iC OC","164":"BC"},H:{"2":"4C"},I:{"1":"I D 8C OC 9C AD","164":"4B 5C 6C 7C"},J:{"1":"A","33":"E"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS3 Box-shadow",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-canvas.js b/node_modules/caniuse-lite/data/features/css-canvas.js new file mode 100644 index 00000000..f2b8b084 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-canvas.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},E:{"2":"TC BC","33":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"G B C KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB"},G:{"33":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"D","33":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"33":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","33":"I"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"CSS Canvas Drawings",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-caret-color.js b/node_modules/caniuse-lite/data/features/css-caret-color.js new file mode 100644 index 00000000..c2f22613 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-caret-color.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB RC SC"},D:{"1":"0 1 2 3 4 5 6 gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB"},E:{"1":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B TC BC UC VC WC XC CC"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB dC eC fC gC zB NC hC 0B"},G:{"1":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:2,C:"CSS caret-color",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-cascade-layers.js b/node_modules/caniuse-lite/data/features/css-cascade-layers.js new file mode 100644 index 00000000..b7e4e7bf --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-cascade-layers.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 i j k l m s t u v w x y z D","2":"C K L H M N O P Q R S T U V W X Y Z a b c d e","322":"f g h"},C:{"1":"0 1 2 3 4 5 6 g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c RC SC","194":"d e f"},D:{"1":"0 1 2 3 4 5 6 i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e","322":"f g h"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC"},F:{"1":"V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U dC eC fC gC zB NC hC 0B"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q LD MD","2":"I BD CD DD ED FD CC GD HD ID JD KD 2B 3B"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:4,C:"CSS Cascade Layers",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-cascade-scope.js b/node_modules/caniuse-lite/data/features/css-cascade-scope.js new file mode 100644 index 00000000..1ae551bd --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-cascade-scope.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"6 D","2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m","194":"0 1 2 3 4 5 s t u v w x y z"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"6 D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m","194":"0 1 2 3 4 5 s t u v w x y z"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y dC eC fC gC zB NC hC 0B","194":"Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"Scoped Styles: the @scope rule",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-case-insensitive.js b/node_modules/caniuse-lite/data/features/css-case-insensitive.js new file mode 100644 index 00000000..da51043f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-case-insensitive.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB RC SC"},D:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB dC eC fC gC zB NC hC 0B"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"Case-insensitive CSS attribute selectors",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-clip-path.js b/node_modules/caniuse-lite/data/features/css-clip-path.js new file mode 100644 index 00000000..4d9a9888 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-clip-path.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N","260":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","3138":"O"},C:{"1":"0 1 2 3 4 5 6 dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B","132":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB RC SC","644":"WB XB YB ZB aB bB cB"},D:{"2":"7 8 I J E F G A B C K L H M N O n o p q","260":"0 1 2 3 4 5 6 eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","292":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},E:{"2":"7 I J TC BC UC VC","260":"L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","292":"E F G A B C K WC XC CC zB 0B"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","260":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","292":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},G:{"2":"BC iC OC jC kC","260":"vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","292":"F lC mC nC oC pC qC rC sC tC uC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC","260":"D","292":"9C AD"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","260":"r"},L:{"260":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"260":"1B"},P:{"292":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"260":"DC"},R:{"260":"ND"},S:{"1":"PD","644":"OD"}},B:4,C:"CSS clip-path property (for HTML)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-color-adjust.js b/node_modules/caniuse-lite/data/features/css-color-adjust.js new file mode 100644 index 00000000..8d90dab3 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-color-adjust.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","33":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB RC SC"},D:{"16":"7 I J E F G A B C K L H M N O","33":"0 1 2 3 4 5 6 8 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC","33":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC"},H:{"2":"4C"},I:{"16":"4B I 5C 6C 7C 8C OC 9C AD","33":"D"},J:{"16":"E A"},K:{"2":"A B C zB NC 0B","33":"r"},L:{"16":"D"},M:{"1":"D"},N:{"16":"A B"},O:{"16":"1B"},P:{"16":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"33":"DC"},R:{"16":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS print-color-adjust",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-color-function.js b/node_modules/caniuse-lite/data/features/css-color-function.js new file mode 100644 index 00000000..e6d7c243 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-color-function.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 z D","2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v","322":"w x y"},C:{"1":"1 2 3 4 5 6 D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y RC SC","578":"0 z"},D:{"1":"0 1 2 3 4 5 6 z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v","322":"w x y"},E:{"1":"H ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC","132":"B C K L CC zB 0B DC YC"},F:{"1":"h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d dC eC fC gC zB NC hC 0B","322":"e f g"},G:{"1":"1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC","132":"qC rC sC tC uC vC wC xC yC zC 0C"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"p q","2":"I n o BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:4,C:"CSS color() function",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-conic-gradients.js b/node_modules/caniuse-lite/data/features/css-conic-gradients.js new file mode 100644 index 00000000..f98aa845 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-conic-gradients.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB RC SC","578":"vB wB xB yB P Q R 7B"},D:{"1":"0 1 2 3 4 5 6 sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB","257":"qB rB","450":"5B iB 6B jB kB lB mB nB oB pB"},E:{"1":"K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C TC BC UC VC WC XC CC zB"},F:{"1":"hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB dC eC fC gC zB NC hC 0B","257":"fB gB","450":"VB WB XB YB ZB aB bB cB dB eB"},G:{"1":"uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED FD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"CSS Conical Gradients",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-container-queries-style.js b/node_modules/caniuse-lite/data/features/css-container-queries-style.js new file mode 100644 index 00000000..cee69580 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-container-queries-style.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u","194":"v w x y","260":"0 1 2 3 4 5 6 z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u","194":"v w x y","260":"0 1 2 3 4 5 6 z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b dC eC fC gC zB NC hC 0B","194":"c d e f g","260":"h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","260":"D"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","194":"r"},L:{"260":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","260":"p q"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS Container Style Queries",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-container-queries.js b/node_modules/caniuse-lite/data/features/css-container-queries.js new file mode 100644 index 00000000..9ef03d91 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-container-queries.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 u v w x y z D","2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s","516":"t"},C:{"1":"0 1 2 3 4 5 6 y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x RC SC"},D:{"1":"0 1 2 3 4 5 6 u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a","194":"c d e f g h i j k l m s","450":"b","516":"t"},E:{"1":"2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC"},F:{"1":"d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB dC eC fC gC zB NC hC 0B","194":"P Q R 7B S T U V W X Y Z","516":"a b c"},G:{"1":"2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"n o p q","2":"I BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS Container Queries (Size)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-container-query-units.js b/node_modules/caniuse-lite/data/features/css-container-query-units.js new file mode 100644 index 00000000..2f3923a5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-container-query-units.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 t u v w x y z D","2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s"},C:{"1":"0 1 2 3 4 5 6 y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x RC SC"},D:{"1":"0 1 2 3 4 5 6 t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b","194":"k l m s","450":"c d e f g h i j"},E:{"1":"2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC"},F:{"1":"a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB dC eC fC gC zB NC hC 0B","194":"P Q R 7B S T U V W X Y Z"},G:{"1":"2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"n o p q","2":"I BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS Container Query Units",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-containment.js b/node_modules/caniuse-lite/data/features/css-containment.js new file mode 100644 index 00000000..a6415f04 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-containment.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB RC SC","194":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB"},D:{"1":"0 1 2 3 4 5 6 bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB","66":"aB"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC"},F:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB dC eC fC gC zB NC hC 0B","66":"NB OB"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","194":"OD"}},B:2,C:"CSS Containment",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-content-visibility.js b/node_modules/caniuse-lite/data/features/css-content-visibility.js new file mode 100644 index 00000000..2d89032e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-content-visibility.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O P Q R S T"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w RC SC","194":"0 1 2 3 4 5 6 x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T"},E:{"1":"cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC"},F:{"1":"sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD HD ID"},Q:{"2":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS content-visibility",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-counters.js b/node_modules/caniuse-lite/data/features/css-counters.js new file mode 100644 index 00000000..4442e95e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-counters.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F G A B","2":"J E PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS Counters",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-crisp-edges.js b/node_modules/caniuse-lite/data/features/css-crisp-edges.js new file mode 100644 index 00000000..4d8b0d63 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-crisp-edges.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J PC","2340":"E F G A B"},B:{"2":"C K L H M N O","1025":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC","513":"mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b","545":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB SC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","1025":"0 1 2 3 4 5 6 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC","164":"J","4644":"E F G VC WC XC"},F:{"2":"8 9 G B H M N O n o p q AB BB CB dC eC fC gC zB NC","545":"C hC 0B","1025":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC","4260":"jC kC","4644":"F lC mC nC oC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","1025":"D"},J:{"2":"E","4260":"A"},K:{"2":"A B zB NC","545":"C 0B","1025":"r"},L:{"1025":"D"},M:{"1":"D"},N:{"2340":"A B"},O:{"1025":"1B"},P:{"1025":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1025":"DC"},R:{"1025":"ND"},S:{"1":"PD","4097":"OD"}},B:4,C:"Crisp edges/pixelated images",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-cross-fade.js b/node_modules/caniuse-lite/data/features/css-cross-fade.js new file mode 100644 index 00000000..7f3e5f83 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-cross-fade.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","33":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"7 I J E F G A B C K L H M","33":"0 1 2 3 4 5 6 8 9 N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC","33":"J E F G UC VC WC XC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC","33":"F jC kC lC mC nC oC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC","33":"D 9C AD"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","33":"r"},L:{"33":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"33":"1B"},P:{"33":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"33":"DC"},R:{"33":"ND"},S:{"2":"OD PD"}},B:4,C:"CSS Cross-Fade Function",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-default-pseudo.js b/node_modules/caniuse-lite/data/features/css-default-pseudo.js new file mode 100644 index 00000000..0e3e1e2d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-default-pseudo.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L","132":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"7 I TC BC","132":"J E F G A UC VC WC XC"},F:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","16":"G B dC eC fC gC zB NC","132":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB","260":"C hC 0B"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC jC kC","132":"F lC mC nC oC pC"},H:{"260":"4C"},I:{"1":"D","16":"4B 5C 6C 7C","132":"I 8C OC 9C AD"},J:{"16":"E","132":"A"},K:{"1":"r","16":"A B C zB NC","260":"0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","132":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:":default CSS pseudo-class",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js b/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js new file mode 100644 index 00000000..7c584bba --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","16":"P"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"B","2":"7 I J E F G A C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"Explicit descendant combinator >>",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-deviceadaptation.js b/node_modules/caniuse-lite/data/features/css-deviceadaptation.js new file mode 100644 index 00000000..d2292e58 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-deviceadaptation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","164":"A B"},B:{"66":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","164":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB","66":"0 1 2 3 4 5 6 EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB dC eC fC gC zB NC hC 0B","66":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"292":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A r","292":"B C zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"164":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"66":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS Device Adaptation",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-dir-pseudo.js b/node_modules/caniuse-lite/data/features/css-dir-pseudo.js new file mode 100644 index 00000000..af36d5bb --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-dir-pseudo.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s","194":"0 1 2 3 4 5 6 t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L H M RC SC","33":"8 9 N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},D:{"1":"8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z","194":"0 1 2 3 4 5 6 a b c d e f g h i j k l m s t u v w x y z D"},E:{"1":"JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z dC eC fC gC zB NC hC 0B","194":"a b c d e f g h i j k l m"},G:{"1":"JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"1":"PD","33":"OD"}},B:5,C:":dir() CSS pseudo-class",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-display-contents.js b/node_modules/caniuse-lite/data/features/css-display-contents.js new file mode 100644 index 00000000..711c82fb --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-display-contents.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","132":"P Q R S T U V W X","260":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB RC SC","132":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B","260":"0 1 2 3 4 5 6 jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB","132":"mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X","194":"hB 5B iB 6B jB kB lB","260":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B TC BC UC VC WC XC CC","132":"C K L H zB 0B DC YC ZC EC FC 1B aC","260":"3B LC MC cC","772":"2B GC HC IC JC KC bC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB dC eC fC gC zB NC hC 0B","132":"bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB","260":"wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC","132":"sC tC uC vC wC xC","260":"yC zC 0C 1C EC FC 1B 2C","516":"GC HC IC JC KC 3C","772":"2B"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","260":"D"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","260":"r"},L:{"260":"D"},M:{"260":"D"},N:{"2":"A B"},O:{"132":"1B"},P:{"2":"I BD CD DD ED","132":"FD CC GD HD ID JD","260":"n o p q KD 2B 3B LD MD"},Q:{"132":"DC"},R:{"260":"ND"},S:{"132":"OD","260":"PD"}},B:4,C:"CSS display: contents",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-element-function.js b/node_modules/caniuse-lite/data/features/css-element-function.js new file mode 100644 index 00000000..8397f9f6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-element-function.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"33":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","164":"QC 4B RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"33":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"33":"OD PD"}},B:5,C:"CSS element() function",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-env-function.js b/node_modules/caniuse-lite/data/features/css-env-function.js new file mode 100644 index 00000000..df3748aa --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-env-function.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB RC SC"},D:{"1":"0 1 2 3 4 5 6 qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB"},E:{"1":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC CC","132":"B"},F:{"1":"fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB dC eC fC gC zB NC hC 0B"},G:{"1":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC","132":"rC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED FD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:7,C:"CSS Environment Variables env()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-exclusions.js b/node_modules/caniuse-lite/data/features/css-exclusions.js new file mode 100644 index 00000000..61750f59 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-exclusions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","33":"A B"},B:{"2":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","33":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"33":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS Exclusions Level 1",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-featurequeries.js b/node_modules/caniuse-lite/data/features/css-featurequeries.js new file mode 100644 index 00000000..c7542334 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-featurequeries.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 QC 4B I J E F G A B C K L H M N O n o RC SC"},D:{"1":"0 1 2 3 4 5 6 DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B C dC eC fC gC zB NC hC"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC"},H:{"1":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS Feature Queries",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-file-selector-button.js b/node_modules/caniuse-lite/data/features/css-file-selector-button.js new file mode 100644 index 00000000..de4ecd38 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-file-selector-button.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X"},L:{"1":"D"},B:{"1":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D","33":"C K L H M N O P Q R S T U V W X"},C:{"1":"0 1 2 3 4 5 6 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R RC SC"},M:{"1":"D"},A:{"2":"J E F G PC","33":"A B"},F:{"1":"vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB"},K:{"1":"r","2":"A B C zB NC 0B"},E:{"1":"H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC","2":"cC","33":"7 I J E F G A B C K L TC BC UC VC WC XC CC zB 0B DC"},G:{"1":"0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","33":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC"},P:{"1":"n o p q KD 2B 3B LD MD","33":"I BD CD DD ED FD CC GD HD ID JD"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC","33":"9C AD"}},B:6,C:"::file-selector-button CSS pseudo-element",D:undefined}; diff --git a/node_modules/caniuse-lite/data/features/css-filter-function.js b/node_modules/caniuse-lite/data/features/css-filter-function.js new file mode 100644 index 00000000..a8cda86b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-filter-function.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC","33":"G"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC","33":"nC oC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS filter() function",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-filters.js b/node_modules/caniuse-lite/data/features/css-filters.js new file mode 100644 index 00000000..0dc5a73c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-filters.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","1028":"K L H M N O","1346":"C"},C:{"1":"0 1 2 3 4 5 6 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC","196":"JB","516":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB SC"},D:{"1":"0 1 2 3 4 5 6 cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K L H M N","33":"8 9 O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB"},E:{"1":"A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC","33":"J E F G VC WC"},F:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},G:{"1":"oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC","33":"F kC lC mC nC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC","33":"9C AD"},J:{"2":"E","33":"A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","33":"I BD CD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"CSS Filter Effects",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-first-letter.js b/node_modules/caniuse-lite/data/features/css-first-letter.js new file mode 100644 index 00000000..c3e28c28 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-first-letter.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","16":"PC","516":"F","1540":"J E"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","132":"4B","260":"QC"},D:{"1":"0 1 2 3 4 5 6 8 9 G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 J E F","132":"I"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"7 TC","132":"I BC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B","16":"G dC","260":"B eC fC gC zB NC"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC"},H:{"1":"4C"},I:{"1":"4B I D 8C OC 9C AD","16":"5C 6C","132":"7C"},J:{"1":"E A"},K:{"1":"C r 0B","260":"A B zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"::first-letter CSS pseudo-element selector",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-first-line.js b/node_modules/caniuse-lite/data/features/css-first-line.js new file mode 100644 index 00000000..fe73252e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-first-line.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","132":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS first-line pseudo-element",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-fixed.js b/node_modules/caniuse-lite/data/features/css-fixed.js new file mode 100644 index 00000000..6efb755e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-fixed.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"E F G A B","2":"PC","8":"J"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","1025":"XC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC","132":"jC kC lC"},H:{"2":"4C"},I:{"1":"4B D 9C AD","260":"5C 6C 7C","513":"I 8C OC"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS position:fixed",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-focus-visible.js b/node_modules/caniuse-lite/data/features/css-focus-visible.js new file mode 100644 index 00000000..2c6e563f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-focus-visible.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O","328":"P Q R S T U"},C:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","161":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T"},D:{"1":"0 1 2 3 4 5 6 V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB","328":"oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L TC BC UC VC WC XC CC zB 0B DC YC","578":"H ZC EC"},F:{"1":"tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB dC eC fC gC zB NC hC 0B","328":"nB oB pB qB rB sB"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C","578":"1C EC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"n o p q JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD HD ID"},Q:{"2":"DC"},R:{"1":"ND"},S:{"161":"OD PD"}},B:5,C:":focus-visible CSS pseudo-class",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-focus-within.js b/node_modules/caniuse-lite/data/features/css-focus-within.js new file mode 100644 index 00000000..1ef8044a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-focus-within.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB RC SC"},D:{"1":"0 1 2 3 4 5 6 iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB","194":"5B"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB dC eC fC gC zB NC hC 0B","194":"VB"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:7,C:":focus-within CSS pseudo-class",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-font-palette.js b/node_modules/caniuse-lite/data/features/css-font-palette.js new file mode 100644 index 00000000..864ee98c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-font-palette.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 t u v w x y z D","2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s"},C:{"1":"0 1 2 3 4 5 6 v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u RC SC"},D:{"1":"0 1 2 3 4 5 6 k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC"},F:{"1":"W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V dC eC fC gC zB NC hC 0B"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"n o p q MD","2":"I BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS font-palette",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js b/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js new file mode 100644 index 00000000..cce601d1 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB RC SC","194":"VB WB XB YB ZB aB bB cB dB eB fB gB"},D:{"1":"0 1 2 3 4 5 6 iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB","66":"YB ZB aB bB cB dB eB fB gB hB 5B"},E:{"1":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B TC BC UC VC WC XC CC"},F:{"1":"WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB dC eC fC gC zB NC hC 0B","66":"LB MB NB OB PB QB RB SB TB UB VB"},G:{"1":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I","66":"BD CD DD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","194":"OD"}},B:5,C:"CSS font-display",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-font-stretch.js b/node_modules/caniuse-lite/data/features/css-font-stretch.js new file mode 100644 index 00000000..2a9b5117 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-font-stretch.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F RC SC"},D:{"1":"0 1 2 3 4 5 6 XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC CC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB dC eC fC gC zB NC hC 0B"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS font-stretch",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-gencontent.js b/node_modules/caniuse-lite/data/features/css-gencontent.js new file mode 100644 index 00000000..5288c9da --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-gencontent.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E PC","132":"F"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS Generated content for pseudo-elements",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-gradients.js b/node_modules/caniuse-lite/data/features/css-gradients.js new file mode 100644 index 00000000..ea70bbe5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-gradients.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC","260":"8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB","292":"7 I J E F G A B C K L H SC"},D:{"1":"0 1 2 3 4 5 6 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"8 9 A B C K L H M N O n o p q AB","548":"7 I J E F G"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC","260":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC","292":"J UC","804":"7 I"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B dC eC fC gC","33":"C hC","164":"zB NC"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","260":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC","292":"jC kC","804":"BC iC OC"},H:{"2":"4C"},I:{"1":"D 9C AD","33":"I 8C OC","548":"4B 5C 6C 7C"},J:{"1":"A","548":"E"},K:{"1":"r 0B","2":"A B","33":"C","164":"zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS Gradients",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-grid-animation.js b/node_modules/caniuse-lite/data/features/css-grid-animation.js new file mode 100644 index 00000000..25580fa3 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-grid-animation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"1":"PD","2":"OD"}},B:4,C:"CSS Grid animation",D:false}; diff --git a/node_modules/caniuse-lite/data/features/css-grid.js b/node_modules/caniuse-lite/data/features/css-grid.js new file mode 100644 index 00000000..d75a0bcb --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-grid.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","8":"G","292":"A B"},B:{"1":"0 1 2 3 4 5 6 M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","292":"C K L H"},C:{"1":"0 1 2 3 4 5 6 dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L H M N O RC SC","8":"8 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB","584":"PB QB RB SB TB UB VB WB XB YB ZB aB","1025":"bB cB"},D:{"1":"0 1 2 3 4 5 6 hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q","8":"AB BB CB DB","200":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB","1025":"gB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC","8":"J E F G A VC WC XC"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB dC eC fC gC zB NC hC 0B","200":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC","8":"F kC lC mC nC oC pC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C","8":"OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"292":"A B"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"BD","8":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS Grid Layout (level 1)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js b/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js new file mode 100644 index 00000000..91d106f5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:4,C:"CSS hanging-punctuation",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-has.js b/node_modules/caniuse-lite/data/features/css-has.js new file mode 100644 index 00000000..f633d645 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-has.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 t u v w x y z D","2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s"},C:{"1":"9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l RC SC","322":"0 1 2 3 4 5 6 m s t u v w x y z D 8B"},D:{"1":"0 1 2 3 4 5 6 t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j","194":"k l m s"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC"},F:{"1":"a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z dC eC fC gC zB NC hC 0B"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"n o p q","2":"I BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:":has() CSS relational pseudo-class",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-hyphens.js b/node_modules/caniuse-lite/data/features/css-hyphens.js new file mode 100644 index 00000000..e60aef76 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-hyphens.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","33":"A B"},B:{"1":"0 1 2 3 4 5 6 t u v w x y z D","33":"C K L H M N O","132":"P Q R S T U V W","260":"X Y Z a b c d e f g h i j k l m s"},C:{"1":"0 1 2 3 4 5 6 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I RC SC","33":"8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},D:{"1":"0 1 2 3 4 5 6 X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","132":"eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W"},E:{"1":"3B LC MC cC","2":"7 I TC BC","33":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC"},F:{"1":"a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB dC eC fC gC zB NC hC 0B","132":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z"},G:{"1":"3B LC MC","2":"BC iC","33":"F OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I","132":"BD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS Hyphenation",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-image-orientation.js b/node_modules/caniuse-lite/data/features/css-image-orientation.js new file mode 100644 index 00000000..f18278ff --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-image-orientation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O P Q","257":"R S T U V W X"},C:{"1":"0 1 2 3 4 5 6 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB RC SC"},D:{"1":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q","257":"R S T U V W X"},E:{"1":"L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K TC BC UC VC WC XC CC zB 0B"},F:{"1":"xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB dC eC fC gC zB NC hC 0B","257":"pB qB rB sB tB r uB vB wB"},G:{"1":"zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","132":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD HD","257":"ID JD"},Q:{"2":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS3 image-orientation",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-image-set.js b/node_modules/caniuse-lite/data/features/css-image-set.js new file mode 100644 index 00000000..6a356943 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-image-set.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"2 3 4 5 6 D","2":"C K L H M N O","164":"0 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z","2049":"1"},C:{"1":"1 2 3 4 5 6 D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U RC SC","66":"V W","2305":"0 Y Z a b c d e f g h i j k l m s t u v w x y z","2820":"X"},D:{"1":"2 3 4 5 6 D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O n","164":"0 9 o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z","2049":"1"},E:{"1":"3B LC MC cC","2":"7 I TC BC UC","132":"A B C K CC zB 0B DC","164":"J E F G VC WC XC","1540":"L H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC"},F:{"1":"j k l m","2":"G B C dC eC fC gC zB NC hC 0B","164":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h","2049":"i"},G:{"1":"3B LC MC","2":"BC iC OC jC","132":"pC qC rC sC tC uC vC wC xC yC","164":"F kC lC mC nC oC","1540":"zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC","164":"9C AD"},J:{"2":"E","164":"A"},K:{"2":"A B C zB NC 0B","164":"r"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"164":"1B"},P:{"164":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"164":"DC"},R:{"164":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS image-set",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-in-out-of-range.js b/node_modules/caniuse-lite/data/features/css-in-out-of-range.js new file mode 100644 index 00000000..b00c47af --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-in-out-of-range.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C","260":"K L H M N O"},C:{"1":"0 1 2 3 4 5 6 ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB RC SC","516":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB"},D:{"1":"0 1 2 3 4 5 6 cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"I","16":"7 J E F G A B C K L","260":"bB","772":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","16":"7","772":"J E F G A UC VC WC XC"},F:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","16":"G dC","260":"B C OB eC fC gC zB NC hC 0B","772":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC","772":"F jC kC lC mC nC oC pC"},H:{"132":"4C"},I:{"1":"D","2":"4B 5C 6C 7C","260":"I 8C OC 9C AD"},J:{"2":"E","260":"A"},K:{"1":"r","260":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","260":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","516":"OD"}},B:5,C:":in-range and :out-of-range CSS pseudo-classes",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js b/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js new file mode 100644 index 00000000..b5c05f4d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","132":"A B","388":"G"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","132":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"QC 4B RC SC","132":"8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB","388":"7 I"},D:{"1":"0 1 2 3 4 5 6 OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L","132":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"7 I J TC BC","132":"E F G A VC WC XC","388":"UC"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","16":"G B dC eC fC gC zB NC","132":"8 9 H M N O n o p q AB","516":"C hC 0B"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC jC kC","132":"F lC mC nC oC pC"},H:{"516":"4C"},I:{"1":"D","16":"4B 5C 6C 7C AD","132":"9C","388":"I 8C OC"},J:{"16":"E","132":"A"},K:{"1":"r","16":"A B C zB NC","516":"0B"},L:{"1":"D"},M:{"1":"D"},N:{"132":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","132":"OD"}},B:5,C:":indeterminate CSS pseudo-class",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-initial-letter.js b/node_modules/caniuse-lite/data/features/css-initial-letter.js new file mode 100644 index 00000000..2bf90692 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-initial-letter.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x","260":"0 1 2 3 4 5 6 y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x","260":"0 1 2 3 4 5 6 y z D 8B 9B AC"},E:{"2":"7 I J E F TC BC UC VC WC","4":"G","164":"A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g dC eC fC gC zB NC hC 0B","260":"h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC","164":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"260":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"o p q","2":"I n BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS Initial Letter",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-initial-value.js b/node_modules/caniuse-lite/data/features/css-initial-value.js new file mode 100644 index 00000000..f4709ef3 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-initial-value.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"7 I J E F G A B C K L H M N O RC SC","164":"QC 4B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"TC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC"},H:{"2":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS initial value",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-lch-lab.js b/node_modules/caniuse-lite/data/features/css-lch-lab.js new file mode 100644 index 00000000..9f17430e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-lch-lab.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 z D","2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x","322":"y"},C:{"1":"1 2 3 4 5 6 D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y RC SC","194":"0 z"},D:{"1":"0 1 2 3 4 5 6 z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x","322":"y"},E:{"1":"H ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L TC BC UC VC WC XC CC zB 0B DC YC"},F:{"1":"h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g dC eC fC gC zB NC hC 0B"},G:{"1":"1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"p q","2":"I n o BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:4,C:"LCH and Lab color values",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-letter-spacing.js b/node_modules/caniuse-lite/data/features/css-letter-spacing.js new file mode 100644 index 00000000..64dcdfa6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-letter-spacing.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","16":"PC","132":"J E F"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"TC","132":"7 I J BC UC"},F:{"1":"8 9 N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","16":"G dC","132":"B C H M eC fC gC zB NC hC 0B"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC"},H:{"2":"4C"},I:{"1":"D 9C AD","16":"5C 6C","132":"4B I 7C 8C OC"},J:{"132":"E A"},K:{"1":"r","132":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"letter-spacing CSS property",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-line-clamp.js b/node_modules/caniuse-lite/data/features/css-line-clamp.js new file mode 100644 index 00000000..f2278dce --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-line-clamp.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M","33":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","129":"N O"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB RC SC","33":"0 1 2 3 4 5 6 pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"16":"7 I J E F G A B C K","33":"0 1 2 3 4 5 6 8 9 L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"I TC BC","33":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"BC iC OC","33":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"16":"5C 6C","33":"4B I D 7C 8C OC 9C AD"},J:{"33":"E A"},K:{"2":"A B C zB NC 0B","33":"r"},L:{"33":"D"},M:{"33":"D"},N:{"2":"A B"},O:{"33":"1B"},P:{"33":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"33":"DC"},R:{"33":"ND"},S:{"2":"OD","33":"PD"}},B:5,C:"CSS line-clamp",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-logical-props.js b/node_modules/caniuse-lite/data/features/css-logical-props.js new file mode 100644 index 00000000..1d6198a0 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-logical-props.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O","1028":"W X","1540":"P Q R S T U V"},C:{"1":"0 1 2 3 4 5 6 nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC","164":"7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB RC SC","1540":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB"},D:{"1":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","292":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB","1028":"W X","1540":"qB rB sB tB r uB vB wB xB yB P Q R S T U V"},E:{"1":"H ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","292":"7 I J E F G A B C TC BC UC VC WC XC CC zB","1540":"K L 0B DC","3076":"YC"},F:{"1":"wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","292":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB","1028":"uB vB","1540":"fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r"},G:{"1":"1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","292":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC","1540":"uC vC wC xC yC zC","3076":"0C"},H:{"2":"4C"},I:{"1":"D","292":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"292":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q KD 2B 3B LD MD","292":"I BD CD DD ED FD","1540":"CC GD HD ID JD"},Q:{"1540":"DC"},R:{"1":"ND"},S:{"1":"PD","1540":"OD"}},B:5,C:"CSS Logical Properties",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-marker-pseudo.js b/node_modules/caniuse-lite/data/features/css-marker-pseudo.js new file mode 100644 index 00000000..746f8039 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-marker-pseudo.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O P Q R S T U"},C:{"1":"0 1 2 3 4 5 6 pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB RC SC"},D:{"1":"0 1 2 3 4 5 6 V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U"},E:{"1":"cC","2":"7 I J E F G A B TC BC UC VC WC XC CC","129":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC"},F:{"1":"tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB dC eC fC gC zB NC hC 0B"},G:{"1":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD HD ID"},Q:{"2":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"CSS ::marker pseudo-element",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-masks.js b/node_modules/caniuse-lite/data/features/css-masks.js new file mode 100644 index 00000000..1f4f813f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-masks.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M","164":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","3138":"N","12292":"O"},C:{"1":"0 1 2 3 4 5 6 cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B","260":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB RC SC"},D:{"1":"8B 9B AC","164":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC","164":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","164":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","164":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC"},H:{"2":"4C"},I:{"164":"D 9C AD","676":"4B I 5C 6C 7C 8C OC"},J:{"164":"E A"},K:{"2":"A B C zB NC 0B","164":"r"},L:{"164":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"164":"1B"},P:{"164":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"164":"DC"},R:{"164":"ND"},S:{"1":"PD","260":"OD"}},B:4,C:"CSS Masks",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-matches-pseudo.js b/node_modules/caniuse-lite/data/features/css-matches-pseudo.js new file mode 100644 index 00000000..7e0567c4 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-matches-pseudo.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O","1220":"P Q R S T U V W"},C:{"1":"0 1 2 3 4 5 6 yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"QC 4B RC SC","548":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB"},D:{"1":"0 1 2 3 4 5 6 X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L","164":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB","196":"mB nB oB","1220":"pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W"},E:{"1":"L H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","16":"7","164":"J E F UC VC WC","260":"G A B C K XC CC zB 0B DC"},F:{"1":"vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","164":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB","196":"bB cB dB","1220":"eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB"},G:{"1":"zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC jC kC","164":"F lC mC","260":"nC oC pC qC rC sC tC uC vC wC xC yC"},H:{"2":"4C"},I:{"1":"D","16":"4B 5C 6C 7C","164":"I 8C OC 9C AD"},J:{"16":"E","164":"A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q KD 2B 3B LD MD","164":"I BD CD DD ED FD CC GD HD ID JD"},Q:{"1220":"DC"},R:{"1":"ND"},S:{"1":"PD","548":"OD"}},B:5,C:":is() CSS pseudo-class",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-math-functions.js b/node_modules/caniuse-lite/data/features/css-math-functions.js new file mode 100644 index 00000000..21686da5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-math-functions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB RC SC"},D:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB"},E:{"1":"L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B TC BC UC VC WC XC CC","132":"C K zB 0B"},F:{"1":"nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB dC eC fC gC zB NC hC 0B"},G:{"1":"yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC","132":"sC tC uC vC wC xC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD"},Q:{"2":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"CSS math functions min(), max() and clamp()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-media-interaction.js b/node_modules/caniuse-lite/data/features/css-media-interaction.js new file mode 100644 index 00000000..2b432f26 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-media-interaction.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB RC SC"},D:{"1":"0 1 2 3 4 5 6 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB dC eC fC gC zB NC hC 0B"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:4,C:"Media Queries: interaction media features",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-media-range-syntax.js b/node_modules/caniuse-lite/data/features/css-media-range-syntax.js new file mode 100644 index 00000000..eeebe096 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-media-range-syntax.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 s t u v w x y z D","2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m"},C:{"1":"0 1 2 3 4 5 6 kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB RC SC"},D:{"1":"0 1 2 3 4 5 6 s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m"},E:{"1":"JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC"},F:{"1":"a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z dC eC fC gC zB NC hC 0B"},G:{"1":"JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"n o p q","2":"I BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"1":"PD","2":"OD"}},B:4,C:"Media Queries: Range Syntax",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-media-resolution.js b/node_modules/caniuse-lite/data/features/css-media-resolution.js new file mode 100644 index 00000000..3fd493b0 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-media-resolution.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","132":"G A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","1028":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B","260":"7 I J E F G A B C K L H RC SC","1028":"8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B"},D:{"1":"0 1 2 3 4 5 6 pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","548":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB","1028":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB"},E:{"1":"2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC","548":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC"},F:{"1":"eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G","548":"B C dC eC fC gC zB NC hC","1028":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},G:{"1":"2B GC HC IC JC KC 3C 3B LC MC","16":"BC","548":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C"},H:{"132":"4C"},I:{"1":"D","16":"5C 6C","548":"4B I 7C 8C OC","1028":"9C AD"},J:{"548":"E A"},K:{"1":"r 0B","548":"A B C zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"132":"A B"},O:{"1":"1B"},P:{"1":"n o p q CC GD HD ID JD KD 2B 3B LD MD","1028":"I BD CD DD ED FD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"Media Queries: resolution feature",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-media-scripting.js b/node_modules/caniuse-lite/data/features/css-media-scripting.js new file mode 100644 index 00000000..79a96e69 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-media-scripting.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"Media Queries: scripting media feature",D:false}; diff --git a/node_modules/caniuse-lite/data/features/css-mediaqueries.js b/node_modules/caniuse-lite/data/features/css-mediaqueries.js new file mode 100644 index 00000000..1caf50df --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-mediaqueries.js @@ -0,0 +1 @@ +module.exports={A:{A:{"8":"J E F PC","129":"G A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC 4B"},D:{"1":"0 1 2 3 4 5 6 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","129":"7 8 9 I J E F G A B C K L H M N O n o p q AB"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","129":"7 I J UC","388":"TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","2":"G"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","129":"BC iC OC jC kC"},H:{"1":"4C"},I:{"1":"D 9C AD","129":"4B I 5C 6C 7C 8C OC"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"129":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS3 Media Queries",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-mixblendmode.js b/node_modules/caniuse-lite/data/features/css-mixblendmode.js new file mode 100644 index 00000000..094c5109 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-mixblendmode.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB RC SC"},D:{"1":"0 1 2 3 4 5 6 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB","194":"EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"2":"7 I J E TC BC UC VC","260":"F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB dC eC fC gC zB NC hC 0B"},G:{"2":"BC iC OC jC kC lC","260":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"Blending of HTML/SVG elements",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-motion-paths.js b/node_modules/caniuse-lite/data/features/css-motion-paths.js new file mode 100644 index 00000000..b475e453 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-motion-paths.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB RC SC"},D:{"1":"0 1 2 3 4 5 6 VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","194":"SB TB UB"},E:{"1":"2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC"},F:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB dC eC fC gC zB NC hC 0B","194":"FB GB HB"},G:{"1":"2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"CSS Motion Path",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-namespaces.js b/node_modules/caniuse-lite/data/features/css-namespaces.js new file mode 100644 index 00000000..e6ac7746 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-namespaces.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"TC BC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS namespaces",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-nesting.js b/node_modules/caniuse-lite/data/features/css-nesting.js new file mode 100644 index 00000000..e3a8046f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-nesting.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w","194":"x y z","516":"0 1 2 3 4 5 6 D"},C:{"1":"5 6 D 8B 9B AC","2":"0 1 2 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z RC SC","322":"3 4"},D:{"1":"8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w","194":"x y z","516":"0 1 2 3 4 5 6 D"},E:{"1":"MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC","516":"KC bC 3B LC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d dC eC fC gC zB NC hC 0B","194":"e f g","516":"h i j k l m"},G:{"1":"MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC","516":"KC 3C 3B LC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","516":"D"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"516":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS Nesting",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-not-sel-list.js b/node_modules/caniuse-lite/data/features/css-not-sel-list.js new file mode 100644 index 00000000..1bfd4dcc --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-not-sel-list.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O Q R S T U V W","16":"P"},C:{"1":"0 1 2 3 4 5 6 T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S RC SC"},D:{"1":"0 1 2 3 4 5 6 X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC"},F:{"1":"vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB dC eC fC gC zB NC hC 0B"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD HD ID JD"},Q:{"2":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"selector list argument of :not()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-nth-child-of.js b/node_modules/caniuse-lite/data/features/css-nth-child-of.js new file mode 100644 index 00000000..28be7e70 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-nth-child-of.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 z D","2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y"},C:{"1":"1 2 3 4 5 6 D 8B 9B AC","2":"0 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z RC SC"},D:{"1":"0 1 2 3 4 5 6 z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC"},F:{"1":"h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g dC eC fC gC zB NC hC 0B"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"p q","2":"I n o BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"selector list argument of :nth-child and :nth-last-child CSS pseudo-classes",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-opacity.js b/node_modules/caniuse-lite/data/features/css-opacity.js new file mode 100644 index 00000000..81148c4d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-opacity.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","4":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS3 Opacity",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-optional-pseudo.js b/node_modules/caniuse-lite/data/features/css-optional-pseudo.js new file mode 100644 index 00000000..6d9ccdd6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-optional-pseudo.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","16":"G dC","132":"B C eC fC gC zB NC hC 0B"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"132":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"r","132":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:":optional CSS pseudo-class",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-overflow-anchor.js b/node_modules/caniuse-lite/data/features/css-overflow-anchor.js new file mode 100644 index 00000000..6a7dd021 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-overflow-anchor.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB RC SC"},D:{"1":"0 1 2 3 4 5 6 fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"CSS overflow-anchor (Scroll Anchoring)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-overflow-overlay.js b/node_modules/caniuse-lite/data/features/css-overflow-overlay.js new file mode 100644 index 00000000..115f7507 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-overflow-overlay.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z","2":"C K L H M N O","130":"2 3 4 5 6 D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z","16":"7 I J E F G A B C K L","130":"2 3 4 5 6 D 8B 9B AC"},E:{"1":"7 I J E F G A B UC VC WC XC CC zB","16":"TC BC","130":"C K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i","2":"G B C dC eC fC gC zB NC hC 0B","130":"j k l m"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC","16":"BC","130":"tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I 5C 6C 7C 8C OC 9C AD","130":"D"},J:{"16":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"130":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:7,C:"CSS overflow: overlay",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-overflow.js b/node_modules/caniuse-lite/data/features/css-overflow.js new file mode 100644 index 00000000..4c2c5135 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-overflow.js @@ -0,0 +1 @@ +module.exports={A:{A:{"388":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 Z a b c d e f g h i j k l m s t u v w x y z D","260":"P Q R S T U V W X Y","388":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","260":"6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q","388":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB RC SC"},D:{"1":"0 1 2 3 4 5 6 Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","260":"pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y","388":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB"},E:{"1":"2B GC HC IC JC KC bC 3B LC MC cC","260":"L H DC YC ZC EC FC 1B aC","388":"7 I J E F G A B C K TC BC UC VC WC XC CC zB 0B"},F:{"1":"wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","260":"eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB","388":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB dC eC fC gC zB NC hC 0B"},G:{"1":"2B GC HC IC JC KC 3C 3B LC MC","260":"yC zC 0C 1C EC FC 1B 2C","388":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC"},H:{"388":"4C"},I:{"1":"D","388":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"388":"E A"},K:{"1":"r","388":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"388":"A B"},O:{"388":"1B"},P:{"1":"n o p q KD 2B 3B LD MD","388":"I BD CD DD ED FD CC GD HD ID JD"},Q:{"388":"DC"},R:{"1":"ND"},S:{"1":"PD","388":"OD"}},B:5,C:"CSS overflow property",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js b/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js new file mode 100644 index 00000000..5a200d3a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","132":"A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","132":"C K L H M N","516":"O"},C:{"1":"0 1 2 3 4 5 6 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB RC SC"},D:{"1":"0 1 2 3 4 5 6 mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB","260":"kB lB"},E:{"1":"2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L TC BC UC VC WC XC CC zB 0B DC","1090":"H YC ZC EC FC 1B aC"},F:{"1":"bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB dC eC fC gC zB NC hC 0B","260":"ZB aB"},G:{"1":"2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC","1090":"0C 1C EC FC 1B 2C"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"132":"A B"},O:{"1":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"CSS overscroll-behavior",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-page-break.js b/node_modules/caniuse-lite/data/features/css-page-break.js new file mode 100644 index 00000000..f26a8d64 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-page-break.js @@ -0,0 +1 @@ +module.exports={A:{A:{"388":"A B","900":"J E F G PC"},B:{"388":"C K L H M N O","900":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"772":"0 1 2 3 4 5 6 mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","900":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB RC SC"},D:{"900":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"772":"A","900":"7 I J E F G B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"16":"G dC","129":"B C eC fC gC zB NC hC 0B","900":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"900":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"129":"4C"},I:{"900":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"900":"E A"},K:{"129":"A B C zB NC 0B","900":"r"},L:{"900":"D"},M:{"772":"D"},N:{"388":"A B"},O:{"900":"1B"},P:{"900":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"900":"DC"},R:{"900":"ND"},S:{"772":"PD","900":"OD"}},B:2,C:"CSS page-break properties",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-paged-media.js b/node_modules/caniuse-lite/data/features/css-paged-media.js new file mode 100644 index 00000000..d0ccceba --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-paged-media.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E PC","132":"F G A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","132":"C K L H M N O"},C:{"2":"7 QC 4B I J E F G A B C K L H M N O RC SC","132":"0 1 2 3 4 5 6 8 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","132":"G B C dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"16":"4C"},I:{"16":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"16":"E A"},K:{"1":"r","16":"A B C zB NC 0B"},L:{"1":"D"},M:{"132":"D"},N:{"258":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"132":"OD PD"}},B:5,C:"CSS Paged Media (@page)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-paint-api.js b/node_modules/caniuse-lite/data/features/css-paint-api.js new file mode 100644 index 00000000..2a164e25 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-paint-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB"},E:{"2":"7 I J E F G A B C TC BC UC VC WC XC CC zB","194":"K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:4,C:"CSS Painting API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-placeholder-shown.js b/node_modules/caniuse-lite/data/features/css-placeholder-shown.js new file mode 100644 index 00000000..1cf5be8e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-placeholder-shown.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","292":"A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","164":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB"},D:{"1":"0 1 2 3 4 5 6 WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB dC eC fC gC zB NC hC 0B"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","164":"OD"}},B:5,C:":placeholder-shown CSS pseudo-class",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-placeholder.js b/node_modules/caniuse-lite/data/features/css-placeholder.js new file mode 100644 index 00000000..693340f5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-placeholder.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","36":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"8 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB","130":"7 QC 4B I J E F G A B C K L H M N O RC SC"},D:{"1":"0 1 2 3 4 5 6 gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","36":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","36":"7 J E F G A UC VC WC XC"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","36":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC","36":"F OC jC kC lC mC nC oC pC"},H:{"2":"4C"},I:{"1":"D","36":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"36":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"36":"A B"},O:{"1":"1B"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","36":"I BD CD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","33":"OD"}},B:5,C:"::placeholder CSS pseudo-element",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-print-color-adjust.js b/node_modules/caniuse-lite/data/features/css-print-color-adjust.js new file mode 100644 index 00000000..8f1a72b4 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-print-color-adjust.js @@ -0,0 +1 @@ +module.exports={A:{D:{"2":"7 I J E F G A B C K L H M","33":"0 1 2 3 4 5 6 8 9 N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},L:{"33":"D"},B:{"2":"C K L H M N O","33":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB RC SC","33":"XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f"},M:{"1":"D"},A:{"2":"J E F G A B PC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},K:{"2":"A B C zB NC 0B","33":"r"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC","2":"7 I TC BC UC cC","33":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC","33":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC"},P:{"33":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},I:{"2":"4B I 5C 6C 7C 8C OC","33":"D 9C AD"}},B:6,C:"print-color-adjust property",D:undefined}; diff --git a/node_modules/caniuse-lite/data/features/css-read-only-write.js b/node_modules/caniuse-lite/data/features/css-read-only-write.js new file mode 100644 index 00000000..7c85bdf8 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-read-only-write.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C"},C:{"1":"0 1 2 3 4 5 6 yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"QC","33":"7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB RC SC"},D:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L","132":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"TC BC","132":"7 I J E F UC VC WC"},F:{"1":"9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","16":"G B dC eC fC gC zB","132":"8 C H M N O n o p NC hC 0B"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC","132":"F OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"D","16":"5C 6C","132":"4B I 7C 8C OC 9C AD"},J:{"1":"A","132":"E"},K:{"1":"r","2":"A B zB","132":"C NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","33":"OD"}},B:1,C:"CSS :read-only and :read-write selectors",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-rebeccapurple.js b/node_modules/caniuse-lite/data/features/css-rebeccapurple.js new file mode 100644 index 00000000..b1fdefe6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-rebeccapurple.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","132":"B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB RC SC"},D:{"1":"0 1 2 3 4 5 6 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"1":"E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC","16":"VC"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q dC eC fC gC zB NC hC 0B"},G:{"1":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"Rebeccapurple color",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-reflections.js b/node_modules/caniuse-lite/data/features/css-reflections.js new file mode 100644 index 00000000..f2ba937f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-reflections.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","33":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"TC BC","33":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"33":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"33":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"33":"E A"},K:{"2":"A B C zB NC 0B","33":"r"},L:{"33":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"33":"1B"},P:{"33":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"33":"DC"},R:{"33":"ND"},S:{"2":"OD PD"}},B:7,C:"CSS Reflections",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-regions.js b/node_modules/caniuse-lite/data/features/css-regions.js new file mode 100644 index 00000000..4ed6e3f0 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-regions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","420":"A B"},B:{"2":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","420":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 I J E F G A B C K L KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","36":"H M N O","66":"8 9 n o p q AB BB CB DB EB FB GB HB IB JB"},E:{"2":"7 I J C K L H TC BC UC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","33":"E F G A B VC WC XC CC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"BC iC OC jC kC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","33":"F lC mC nC oC pC qC rC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"420":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS Regions",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-relative-colors.js b/node_modules/caniuse-lite/data/features/css-relative-colors.js new file mode 100644 index 00000000..07ab17ae --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-relative-colors.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"D","2":"0 1 2 3 4 5 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z","194":"6"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"D 8B 9B AC","2":"0 1 2 3 4 5 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z","194":"6"},E:{"1":"JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS Relative colors",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-repeating-gradients.js b/node_modules/caniuse-lite/data/features/css-repeating-gradients.js new file mode 100644 index 00000000..7a67a29a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-repeating-gradients.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC","33":"7 I J E F G A B C K L H SC"},D:{"1":"0 1 2 3 4 5 6 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G","33":"8 9 A B C K L H M N O n o p q AB"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC","33":"J UC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B dC eC fC gC","33":"C hC","36":"zB NC"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC","33":"jC kC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B 5C 6C 7C","33":"I 8C OC"},J:{"1":"A","2":"E"},K:{"1":"r 0B","2":"A B","33":"C","36":"zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS Repeating Gradients",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-resize.js b/node_modules/caniuse-lite/data/features/css-resize.js new file mode 100644 index 00000000..092b75d9 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-resize.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","33":"I"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC","132":"0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:2,C:"CSS resize property",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-revert-value.js b/node_modules/caniuse-lite/data/features/css-revert-value.js new file mode 100644 index 00000000..cc8a6aca --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-revert-value.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O P Q R S"},C:{"1":"0 1 2 3 4 5 6 oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB RC SC"},D:{"1":"0 1 2 3 4 5 6 T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S"},E:{"1":"A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC"},F:{"1":"r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB dC eC fC gC zB NC hC 0B"},G:{"1":"oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD HD ID"},Q:{"2":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:4,C:"CSS revert value",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-rrggbbaa.js b/node_modules/caniuse-lite/data/features/css-rrggbbaa.js new file mode 100644 index 00000000..056bb9d5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-rrggbbaa.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB RC SC"},D:{"1":"0 1 2 3 4 5 6 jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB","194":"bB cB dB eB fB gB hB 5B iB 6B"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC"},F:{"1":"bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB dC eC fC gC zB NC hC 0B","194":"OB PB QB RB SB TB UB VB WB XB YB ZB aB"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I","194":"BD CD DD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:4,C:"#rrggbbaa hex color notation",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-scroll-behavior.js b/node_modules/caniuse-lite/data/features/css-scroll-behavior.js new file mode 100644 index 00000000..71adfef1 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-scroll-behavior.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","129":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB RC SC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","129":"0 1 2 3 4 5 6 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","450":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K TC BC UC VC WC XC CC zB 0B DC","578":"L H YC ZC EC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB dC eC fC gC zB NC hC 0B","129":"XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","450":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC","578":"0C 1C EC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"129":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD"},Q:{"129":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"CSS Scroll-behavior",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-scroll-timeline.js b/node_modules/caniuse-lite/data/features/css-scroll-timeline.js new file mode 100644 index 00000000..45abee26 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-scroll-timeline.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O P Q R S T U V W X Y","194":"0 1 2 3 4 5 6 Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T","194":"0 1 2 3 4 5 6 X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","322":"U V W"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB dC eC fC gC zB NC hC 0B","194":"vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","322":"r uB"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"CSS @scroll-timeline",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-scrollbar.js b/node_modules/caniuse-lite/data/features/css-scrollbar.js new file mode 100644 index 00000000..3d84a385 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-scrollbar.js @@ -0,0 +1 @@ +module.exports={A:{A:{"132":"J E F G A B PC"},B:{"2":"C K L H M N O","292":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB RC SC","3138":"kB"},D:{"292":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"16":"7 I TC BC","292":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","292":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC jC kC","292":"lC","804":"F mC nC oC pC qC rC sC tC uC vC wC xC yC"},H:{"2":"4C"},I:{"16":"5C 6C","292":"4B I D 7C 8C OC 9C AD"},J:{"292":"E A"},K:{"2":"A B C zB NC 0B","292":"r"},L:{"292":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"292":"1B"},P:{"292":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"292":"DC"},R:{"292":"ND"},S:{"2":"OD PD"}},B:4,C:"CSS scrollbar styling",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-sel2.js b/node_modules/caniuse-lite/data/features/css-sel2.js new file mode 100644 index 00000000..8470bf90 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-sel2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"E F G A B","2":"PC","8":"J"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS 2.1 selectors",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-sel3.js b/node_modules/caniuse-lite/data/features/css-sel3.js new file mode 100644 index 00000000..355e6d42 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-sel3.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"PC","8":"J","132":"E F"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC 4B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","2":"G"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS3 selectors",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-selection.js b/node_modules/caniuse-lite/data/features/css-selection.js new file mode 100644 index 00000000..253f9dd9 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-selection.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","2":"G"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","2":"E"},K:{"1":"C r NC 0B","16":"A B zB"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","33":"OD"}},B:5,C:"::selection CSS pseudo-element",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-shapes.js b/node_modules/caniuse-lite/data/features/css-shapes.js new file mode 100644 index 00000000..d49e6223 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-shapes.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB RC SC","322":"aB bB cB dB eB fB gB hB 5B iB 6B"},D:{"1":"0 1 2 3 4 5 6 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB","194":"JB KB LB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E TC BC UC VC","33":"F G A WC XC"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O n o p q dC eC fC gC zB NC hC 0B"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC","33":"F mC nC oC pC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:4,C:"CSS Shapes Level 1",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-snappoints.js b/node_modules/caniuse-lite/data/features/css-snappoints.js new file mode 100644 index 00000000..b7a18275 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-snappoints.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","6308":"A","6436":"B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","6436":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB RC SC","2052":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB"},D:{"1":"0 1 2 3 4 5 6 qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB","8258":"nB oB pB"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC","3108":"G A XC CC"},F:{"1":"lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dC eC fC gC zB NC hC 0B","8258":"dB eB fB gB hB iB jB kB"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC","3108":"nC oC pC qC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED FD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2052":"OD"}},B:4,C:"CSS Scroll Snap",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-sticky.js b/node_modules/caniuse-lite/data/features/css-sticky.js new file mode 100644 index 00000000..36ec0fa0 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-sticky.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H","1028":"P Q R S T U V W X Y Z","4100":"M N O"},C:{"1":"0 1 2 3 4 5 6 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB RC SC","194":"BB CB DB EB FB GB","516":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB"},D:{"1":"0 1 2 3 4 5 6 a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O n o p MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB","322":"9 q AB BB CB DB EB FB GB HB IB JB KB LB bB cB dB eB","1028":"fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z"},E:{"1":"K L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC","33":"F G A B C WC XC CC zB 0B","2084":"E VC"},F:{"1":"yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB dC eC fC gC zB NC hC 0B","322":"OB PB QB","1028":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB"},G:{"1":"vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC","33":"F mC nC oC pC qC rC sC tC uC","2084":"kC lC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD"},Q:{"1028":"DC"},R:{"1":"ND"},S:{"1":"PD","516":"OD"}},B:5,C:"CSS position:sticky",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-subgrid.js b/node_modules/caniuse-lite/data/features/css-subgrid.js new file mode 100644 index 00000000..b66c0732 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-subgrid.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"5 6 D","2":"0 1 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z","194":"2 3 4"},C:{"1":"0 1 2 3 4 5 6 sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB RC SC"},D:{"1":"5 6 D 8B 9B AC","2":"0 1 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z","194":"2 3 4"},E:{"1":"2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC"},F:{"1":"m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i dC eC fC gC zB NC hC 0B","194":"j k l"},G:{"1":"2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"1":"PD","2":"OD"}},B:4,C:"CSS Subgrid",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-supports-api.js b/node_modules/caniuse-lite/data/features/css-supports-api.js new file mode 100644 index 00000000..cd02500b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-supports-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","260":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 QC 4B I J E F G A B C K L H M N O RC SC","66":"n o","260":"9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},D:{"1":"0 1 2 3 4 5 6 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB","260":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC","132":"0B"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC"},H:{"132":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC","132":"0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS.supports() API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-table.js b/node_modules/caniuse-lite/data/features/css-table.js new file mode 100644 index 00000000..556e9f9f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-table.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F G A B","2":"J E PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","132":"QC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS Table display",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-text-align-last.js b/node_modules/caniuse-lite/data/features/css-text-align-last.js new file mode 100644 index 00000000..51752da7 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-text-align-last.js @@ -0,0 +1 @@ +module.exports={A:{A:{"132":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","4":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B RC SC","33":"8 9 C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},D:{"1":"0 1 2 3 4 5 6 WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB","322":"KB LB MB NB OB PB QB RB SB TB UB VB"},E:{"1":"2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O n o dC eC fC gC zB NC hC 0B","578":"9 p q AB BB CB DB EB FB GB HB IB"},G:{"1":"2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"132":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","33":"OD"}},B:4,C:"CSS3 text-align-last",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-text-box-trim.js b/node_modules/caniuse-lite/data/features/css-text-box-trim.js new file mode 100644 index 00000000..680f797b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-text-box-trim.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC","194":"JC KC bC 3B LC MC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC","194":"JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS text-box-trim & text-box-edge",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-text-indent.js b/node_modules/caniuse-lite/data/features/css-text-indent.js new file mode 100644 index 00000000..c20402b2 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-text-indent.js @@ -0,0 +1 @@ +module.exports={A:{A:{"132":"J E F G A B PC"},B:{"132":"C K L H M N O","388":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"9B AC","132":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B RC SC"},D:{"132":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB","388":"0 1 2 3 4 5 6 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"2B GC HC IC JC KC bC 3B LC MC cC","132":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC"},F:{"132":"8 9 G B C H M N O n o p q dC eC fC gC zB NC hC 0B","388":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"2B GC HC IC JC KC 3C 3B LC MC","132":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C"},H:{"132":"4C"},I:{"132":"4B I 5C 6C 7C 8C OC 9C AD","388":"D"},J:{"132":"E A"},K:{"132":"A B C zB NC 0B","388":"r"},L:{"388":"D"},M:{"132":"D"},N:{"132":"A B"},O:{"388":"1B"},P:{"132":"I","388":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"388":"DC"},R:{"388":"ND"},S:{"132":"OD PD"}},B:4,C:"CSS text-indent",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-text-justify.js b/node_modules/caniuse-lite/data/features/css-text-justify.js new file mode 100644 index 00000000..daa605ef --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-text-justify.js @@ -0,0 +1 @@ +module.exports={A:{A:{"16":"J E PC","132":"F G A B"},B:{"132":"C K L H M N O","322":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB RC SC","1025":"0 1 2 3 4 5 6 eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","1602":"dB"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","322":"0 1 2 3 4 5 6 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB dC eC fC gC zB NC hC 0B","322":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","322":"D"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","322":"r"},L:{"322":"D"},M:{"1025":"D"},N:{"132":"A B"},O:{"322":"1B"},P:{"2":"I","322":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"322":"DC"},R:{"322":"ND"},S:{"2":"OD","1025":"PD"}},B:4,C:"CSS text-justify",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-text-orientation.js b/node_modules/caniuse-lite/data/features/css-text-orientation.js new file mode 100644 index 00000000..6bd2bf1c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-text-orientation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB RC SC","194":"NB OB PB"},D:{"1":"0 1 2 3 4 5 6 XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},E:{"1":"L H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC","16":"A","33":"B C K CC zB 0B DC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB dC eC fC gC zB NC hC 0B"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS text-orientation",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-text-spacing.js b/node_modules/caniuse-lite/data/features/css-text-spacing.js new file mode 100644 index 00000000..b4714db6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-text-spacing.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E PC","161":"F G A B"},B:{"2":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","161":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"16":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS Text 4 text-spacing",D:false}; diff --git a/node_modules/caniuse-lite/data/features/css-text-wrap-balance.js b/node_modules/caniuse-lite/data/features/css-text-wrap-balance.js new file mode 100644 index 00000000..eb95b656 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-text-wrap-balance.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"2 3 4 5 6 D","2":"0 1 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z"},C:{"1":"9B AC","2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B RC SC"},D:{"1":"2 3 4 5 6 D 8B 9B AC","2":"0 1 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS text-wrap: balance",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-textshadow.js b/node_modules/caniuse-lite/data/features/css-textshadow.js new file mode 100644 index 00000000..9560fe90 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-textshadow.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","129":"A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","129":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC 4B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","260":"TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","2":"G"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"4":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"A","4":"E"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"129":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS3 Text-shadow",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-touch-action.js b/node_modules/caniuse-lite/data/features/css-touch-action.js new file mode 100644 index 00000000..f89d8cfa --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-touch-action.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F G PC","289":"A"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB RC SC","194":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB","1025":"bB cB dB eB fB"},D:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O n o p dC eC fC gC zB NC hC 0B"},G:{"1":"vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC","516":"oC pC qC rC sC tC uC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","289":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","194":"OD"}},B:2,C:"CSS touch-action property",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-transitions.js b/node_modules/caniuse-lite/data/features/css-transitions.js new file mode 100644 index 00000000..4c31c962 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-transitions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","33":"7 J E F G A B C K L H","164":"I"},D:{"1":"0 1 2 3 4 5 6 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"7 8 9 I J E F G A B C K L H M N O n o p q AB"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","33":"J UC","164":"7 I TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G dC eC","33":"C","164":"B fC gC zB NC hC"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","33":"kC","164":"BC iC OC jC"},H:{"2":"4C"},I:{"1":"D 9C AD","33":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","33":"E"},K:{"1":"r 0B","33":"C","164":"A B zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"CSS3 Transitions",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-unicode-bidi.js b/node_modules/caniuse-lite/data/features/css-unicode-bidi.js new file mode 100644 index 00000000..0726b321 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-unicode-bidi.js @@ -0,0 +1 @@ +module.exports={A:{A:{"132":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","132":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"8 9 N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","132":"7 QC 4B I J E F G RC SC","292":"A B C K L H M"},D:{"1":"0 1 2 3 4 5 6 XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 I J E F G A B C K L H M","548":"8 9 N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},E:{"132":"7 I J E F TC BC UC VC WC","548":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"132":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"132":"F BC iC OC jC kC lC mC","548":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"16":"4C"},I:{"1":"D","16":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"16":"E A"},K:{"1":"r","16":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"132":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","16":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","33":"OD"}},B:4,C:"CSS unicode-bidi property",D:false}; diff --git a/node_modules/caniuse-lite/data/features/css-unset-value.js b/node_modules/caniuse-lite/data/features/css-unset-value.js new file mode 100644 index 00000000..d0689803 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-unset-value.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C"},C:{"1":"0 1 2 3 4 5 6 CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB RC SC"},D:{"1":"0 1 2 3 4 5 6 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"1":"A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB dC eC fC gC zB NC hC 0B"},G:{"1":"oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS unset value",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-variables.js b/node_modules/caniuse-lite/data/features/css-variables.js new file mode 100644 index 00000000..de100a32 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-variables.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L","260":"H"},C:{"1":"0 1 2 3 4 5 6 GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB RC SC"},D:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB","194":"XB"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC","260":"XC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB dC eC fC gC zB NC hC 0B","194":"KB"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC","260":"oC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS Variables (Custom Properties)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-when-else.js b/node_modules/caniuse-lite/data/features/css-when-else.js new file mode 100644 index 00000000..658a4c4c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-when-else.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"CSS @when / @else conditional rules",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-widows-orphans.js b/node_modules/caniuse-lite/data/features/css-widows-orphans.js new file mode 100644 index 00000000..f87bd0c6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-widows-orphans.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E PC","129":"F G"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q"},E:{"1":"E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC VC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","129":"G B dC eC fC gC zB NC hC"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC"},H:{"1":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"2":"E A"},K:{"1":"r 0B","2":"A B C zB NC"},L:{"1":"D"},M:{"2":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:2,C:"CSS widows & orphans",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-width-stretch.js b/node_modules/caniuse-lite/data/features/css-width-stretch.js new file mode 100644 index 00000000..f1a042f8 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-width-stretch.js @@ -0,0 +1 @@ +module.exports={A:{D:{"2":"7 8 I J E F G A B C K L H M N O n o","33":"0 1 2 3 4 5 6 9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},L:{"33":"D"},B:{"2":"C K L H M N O","33":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"QC","33":"0 1 2 3 4 5 6 7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},M:{"33":"D"},A:{"2":"J E F G A B PC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},K:{"2":"A B C zB NC 0B","33":"r"},E:{"2":"7 I J TC BC UC VC cC","33":"E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC"},G:{"2":"BC iC OC jC kC","33":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},P:{"2":"I","33":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},I:{"2":"4B I 5C 6C 7C 8C OC","33":"D 9C AD"}},B:6,C:"width: stretch property",D:undefined}; diff --git a/node_modules/caniuse-lite/data/features/css-writing-mode.js b/node_modules/caniuse-lite/data/features/css-writing-mode.js new file mode 100644 index 00000000..2656b03c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-writing-mode.js @@ -0,0 +1 @@ +module.exports={A:{A:{"132":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB RC SC","322":"LB MB NB OB PB"},D:{"1":"0 1 2 3 4 5 6 XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J","16":"E","33":"8 9 F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","16":"7","33":"J E F G A UC VC WC XC CC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC","33":"F jC kC lC mC nC oC pC qC"},H:{"2":"4C"},I:{"1":"D","2":"5C 6C 7C","33":"4B I 8C OC 9C AD"},J:{"33":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"36":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","33":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS writing-mode property",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css-zoom.js b/node_modules/caniuse-lite/data/features/css-zoom.js new file mode 100644 index 00000000..112c06fc --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css-zoom.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J E PC","129":"F G A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC"},H:{"2":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"129":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:7,C:"CSS zoom",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css3-attr.js b/node_modules/caniuse-lite/data/features/css3-attr.js new file mode 100644 index 00000000..b8d0a88c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css3-attr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"CSS3 attr() function for all properties",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css3-boxsizing.js b/node_modules/caniuse-lite/data/features/css3-boxsizing.js new file mode 100644 index 00000000..c9def828 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css3-boxsizing.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F G A B","8":"J E PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"7 I J E F G"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","33":"7 I TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","2":"G"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","33":"BC iC OC"},H:{"1":"4C"},I:{"1":"I D 8C OC 9C AD","33":"4B 5C 6C 7C"},J:{"1":"A","33":"E"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"CSS3 Box-sizing",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css3-colors.js b/node_modules/caniuse-lite/data/features/css3-colors.js new file mode 100644 index 00000000..29c2ad02 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css3-colors.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","4":"QC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m eC fC gC zB NC hC 0B","2":"G","4":"dC"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS3 Colors",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css3-cursors-grab.js b/node_modules/caniuse-lite/data/features/css3-cursors-grab.js new file mode 100644 index 00000000..181f26ed --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css3-cursors-grab.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L"},C:{"1":"0 1 2 3 4 5 6 CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB RC SC"},D:{"1":"0 1 2 3 4 5 6 pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","33":"7 I J E F G A TC BC UC VC WC XC CC"},F:{"1":"C eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B","2":"G B dC eC fC gC zB NC","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"33":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:2,C:"CSS grab & grabbing cursors",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css3-cursors-newer.js b/node_modules/caniuse-lite/data/features/css3-cursors-newer.js new file mode 100644 index 00000000..050a8039 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css3-cursors-newer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"7 8 QC 4B I J E F G A B C K L H M N O n o p q RC SC"},D:{"1":"0 1 2 3 4 5 6 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","33":"7 I J E F TC BC UC VC WC"},F:{"1":"9 C AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B","2":"G B dC eC fC gC zB NC","33":"8 H M N O n o p q"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"33":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:2,C:"CSS3 Cursors: zoom-in & zoom-out",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css3-cursors.js b/node_modules/caniuse-lite/data/features/css3-cursors.js new file mode 100644 index 00000000..ca871979 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css3-cursors.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","132":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","260":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","4":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","4":"I"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","4":"I TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","260":"G B C dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E","16":"A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:2,C:"CSS3 Cursors (original values)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/css3-tabsize.js b/node_modules/caniuse-lite/data/features/css3-tabsize.js new file mode 100644 index 00000000..0e53f17f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/css3-tabsize.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","33":"cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z","164":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB"},D:{"1":"0 1 2 3 4 5 6 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O n","132":"9 o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},E:{"1":"L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC","132":"E F G A B C K VC WC XC CC zB 0B"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G dC eC fC","132":"8 9 H M N O n o p q AB BB CB DB","164":"B C gC zB NC hC 0B"},G:{"1":"yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC","132":"F lC mC nC oC pC qC rC sC tC uC vC wC xC"},H:{"164":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC","132":"9C AD"},J:{"132":"E A"},K:{"1":"r","2":"A","164":"B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"164":"OD PD"}},B:4,C:"CSS3 tab-size",D:true}; diff --git a/node_modules/caniuse-lite/data/features/currentcolor.js b/node_modules/caniuse-lite/data/features/currentcolor.js new file mode 100644 index 00000000..868feb56 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/currentcolor.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","2":"G"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS currentColor value",D:true}; diff --git a/node_modules/caniuse-lite/data/features/custom-elements.js b/node_modules/caniuse-lite/data/features/custom-elements.js new file mode 100644 index 00000000..e0f37b9b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/custom-elements.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","8":"A B"},B:{"1":"P","2":"0 1 2 3 4 5 6 Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","8":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 QC 4B I J E F G A B C K L H M N O n o p 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","66":"9 q AB BB CB DB EB","72":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB"},D:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P","2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","66":"CB DB EB FB GB HB"},E:{"2":"7 I TC BC UC","8":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB","2":"G B C oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","66":"8 H M N O"},G:{"2":"BC iC OC jC kC","8":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"AD","2":"4B I D 5C 6C 7C 8C OC 9C"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I BD CD DD ED FD CC GD HD","2":"n o p q ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"2":"ND"},S:{"2":"PD","72":"OD"}},B:7,C:"Custom Elements (deprecated V0 spec)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/custom-elementsv1.js b/node_modules/caniuse-lite/data/features/custom-elementsv1.js new file mode 100644 index 00000000..415c5565 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/custom-elementsv1.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","8":"A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","8":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB RC SC","8":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","456":"ZB aB bB cB dB eB fB gB hB","712":"5B iB 6B jB"},D:{"1":"0 1 2 3 4 5 6 oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB","8":"bB cB","132":"dB eB fB gB hB 5B iB 6B jB kB lB mB nB"},E:{"2":"7 I J E TC BC UC VC WC","8":"F G A XC","132":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB dC eC fC gC zB NC hC 0B","132":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC","132":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I","132":"BD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","8":"OD"}},B:1,C:"Custom Elements (V1)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/customevent.js b/node_modules/caniuse-lite/data/features/customevent.js new file mode 100644 index 00000000..7801c61c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/customevent.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","132":"G A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I RC SC","132":"J E F G A"},D:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"I","16":"7 J E F K L","388":"G A B C"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","16":"7 J","388":"UC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B","2":"G dC eC fC gC","132":"B zB NC"},G:{"1":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"iC","16":"BC OC","388":"jC"},H:{"1":"4C"},I:{"1":"D 9C AD","2":"5C 6C 7C","388":"4B I 8C OC"},J:{"1":"A","388":"E"},K:{"1":"C r 0B","2":"A","132":"B zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"132":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"CustomEvent",D:true}; diff --git a/node_modules/caniuse-lite/data/features/datalist.js b/node_modules/caniuse-lite/data/features/datalist.js new file mode 100644 index 00000000..f91a2b37 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/datalist.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"PC","8":"J E F G","260":"A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","260":"C K L H","1284":"M N O"},C:{"1":"0 1 2 3 4 5 6 y z D 8B 9B AC","8":"QC 4B RC SC","516":"l m s t u v w x","4612":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k"},D:{"1":"0 1 2 3 4 5 6 qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"7 8 I J E F G A B C K L H M N O","132":"9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB"},E:{"1":"K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","8":"7 I J E F G A B C TC BC UC VC WC XC CC zB"},F:{"1":"G B C lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","132":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB"},G:{"8":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC","2049":"uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D AD","8":"4B I 5C 6C 7C 8C OC 9C"},J:{"1":"A","8":"E"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"8":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:1,C:"Datalist element",D:true}; diff --git a/node_modules/caniuse-lite/data/features/dataset.js b/node_modules/caniuse-lite/data/features/dataset.js new file mode 100644 index 00000000..3a2b280b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/dataset.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","4":"J E F G A PC"},B:{"1":"C K L H M","129":"0 1 2 3 4 5 6 N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB","4":"7 QC 4B I RC SC","129":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"UB VB WB XB YB ZB aB bB cB dB","4":"7 I J","129":"0 1 2 3 4 5 6 8 9 E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"4":"7 I TC BC","129":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"C HB IB JB KB LB MB NB OB PB QB zB NC hC 0B","4":"G B dC eC fC gC","129":"8 9 H M N O n o p q AB BB CB DB EB FB GB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"4":"BC iC OC","129":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"4":"4C"},I:{"4":"5C 6C 7C","129":"4B I D 8C OC 9C AD"},J:{"129":"E A"},K:{"1":"C zB NC 0B","4":"A B","129":"r"},L:{"129":"D"},M:{"129":"D"},N:{"1":"B","4":"A"},O:{"129":"1B"},P:{"129":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"129":"DC"},R:{"129":"ND"},S:{"1":"OD","129":"PD"}},B:1,C:"dataset & data-* attributes",D:true}; diff --git a/node_modules/caniuse-lite/data/features/datauri.js b/node_modules/caniuse-lite/data/features/datauri.js new file mode 100644 index 00000000..d276be36 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/datauri.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E PC","132":"F","260":"G A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","260":"C K H M N O","772":"L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"260":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Data URIs",D:true}; diff --git a/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js b/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js new file mode 100644 index 00000000..93be2d83 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js @@ -0,0 +1 @@ +module.exports={A:{A:{"16":"PC","132":"J E F G A B"},B:{"1":"0 1 2 3 4 5 6 O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","132":"C K L H M N"},C:{"1":"0 1 2 3 4 5 6 fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB RC SC","260":"bB cB dB eB","772":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB"},D:{"1":"0 1 2 3 4 5 6 rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 8 I J E F G A B C K L H M N O n o p q","260":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB","772":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"1":"C K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"7 I TC BC","132":"J E F G A UC VC WC XC","260":"B CC zB"},F:{"1":"gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","16":"G B C dC eC fC gC zB NC hC","132":"0B","260":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB","772":"8 9 H M N O n o p q"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC jC","132":"F kC lC mC nC oC pC"},H:{"132":"4C"},I:{"1":"D","16":"4B 5C 6C 7C","132":"I 8C OC","772":"9C AD"},J:{"132":"E A"},K:{"1":"r","16":"A B C zB NC","132":"0B"},L:{"1":"D"},M:{"1":"D"},N:{"132":"A B"},O:{"1":"1B"},P:{"1":"n o p q FD CC GD HD ID JD KD 2B 3B LD MD","260":"I BD CD DD ED"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","132":"OD"}},B:6,C:"Date.prototype.toLocaleDateString",D:true}; diff --git a/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js b/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js new file mode 100644 index 00000000..2b507108 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O P Q R S T U V W X Y"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T","66":"U V W X Y"},E:{"1":"JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC"},F:{"1":"xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB dC eC fC gC zB NC hC 0B"},G:{"1":"JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD HD ID JD"},Q:{"2":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:7,C:"Declarative Shadow DOM",D:true}; diff --git a/node_modules/caniuse-lite/data/features/decorators.js b/node_modules/caniuse-lite/data/features/decorators.js new file mode 100644 index 00000000..19693538 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/decorators.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"Decorators",D:true}; diff --git a/node_modules/caniuse-lite/data/features/details.js b/node_modules/caniuse-lite/data/features/details.js new file mode 100644 index 00000000..d50ef71c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/details.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"G A B PC","8":"J E F"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC","8":"7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB RC SC","194":"WB XB"},D:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"7 I J E F G A B","257":"8 9 n o p q AB BB CB DB EB FB GB HB IB JB KB","769":"C K L H M N O"},E:{"1":"C K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","8":"7 I TC BC UC","257":"J E F G A VC WC XC","1025":"B CC zB"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"C zB NC hC 0B","8":"G B dC eC fC gC"},G:{"1":"F kC lC mC nC oC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","8":"BC iC OC jC","1025":"pC qC rC"},H:{"8":"4C"},I:{"1":"I D 8C OC 9C AD","8":"4B 5C 6C 7C"},J:{"1":"A","8":"E"},K:{"1":"r","8":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Details & Summary elements",D:true}; diff --git a/node_modules/caniuse-lite/data/features/deviceorientation.js b/node_modules/caniuse-lite/data/features/deviceorientation.js new file mode 100644 index 00000000..20b25a1f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/deviceorientation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","132":"B"},B:{"1":"C K L H M N O","4":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"QC 4B RC","4":"0 1 2 3 4 5 6 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"7 I SC"},D:{"2":"7 I J","4":"0 1 2 3 4 5 6 8 9 E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","4":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"BC iC","4":"F OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"5C 6C 7C","4":"4B I D 8C OC 9C AD"},J:{"2":"E","4":"A"},K:{"1":"C 0B","2":"A B zB NC","4":"r"},L:{"4":"D"},M:{"4":"D"},N:{"1":"B","2":"A"},O:{"4":"1B"},P:{"4":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"4":"DC"},R:{"4":"ND"},S:{"4":"OD PD"}},B:4,C:"DeviceOrientation & DeviceMotion events",D:true}; diff --git a/node_modules/caniuse-lite/data/features/devicepixelratio.js b/node_modules/caniuse-lite/data/features/devicepixelratio.js new file mode 100644 index 00000000..9f113348 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/devicepixelratio.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F G A PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L H M N RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B","2":"G B dC eC fC gC zB NC"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"C r 0B","2":"A B zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","2":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"Window.devicePixelRatio",D:true}; diff --git a/node_modules/caniuse-lite/data/features/dialog.js b/node_modules/caniuse-lite/data/features/dialog.js new file mode 100644 index 00000000..16b178da --- /dev/null +++ b/node_modules/caniuse-lite/data/features/dialog.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB RC SC","194":"cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P","1218":"Q R 7B S T U V W X Y Z a b c d e f g"},D:{"1":"0 1 2 3 4 5 6 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB","322":"HB IB JB KB LB"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C H M N O dC eC fC gC zB NC hC 0B","578":"8 n o p q"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:1,C:"Dialog element",D:true}; diff --git a/node_modules/caniuse-lite/data/features/dispatchevent.js b/node_modules/caniuse-lite/data/features/dispatchevent.js new file mode 100644 index 00000000..e7c58084 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/dispatchevent.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","16":"PC","129":"G A","130":"J E F"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"TC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","16":"G"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC"},H:{"1":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","129":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"EventTarget.dispatchEvent",D:true}; diff --git a/node_modules/caniuse-lite/data/features/dnssec.js b/node_modules/caniuse-lite/data/features/dnssec.js new file mode 100644 index 00000000..f797e230 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/dnssec.js @@ -0,0 +1 @@ +module.exports={A:{A:{"132":"J E F G A B PC"},B:{"132":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"132":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"132":"0 1 2 3 4 5 6 7 I GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","388":"8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB"},E:{"132":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"132":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"132":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"132":"4C"},I:{"132":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"132":"E A"},K:{"132":"A B C r zB NC 0B"},L:{"132":"D"},M:{"132":"D"},N:{"132":"A B"},O:{"132":"1B"},P:{"132":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"132":"DC"},R:{"132":"ND"},S:{"132":"OD PD"}},B:6,C:"DNSSEC and DANE",D:true}; diff --git a/node_modules/caniuse-lite/data/features/do-not-track.js b/node_modules/caniuse-lite/data/features/do-not-track.js new file mode 100644 index 00000000..45eceb04 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/do-not-track.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","164":"G A","260":"B"},B:{"1":"0 1 2 3 4 5 6 N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","260":"C K L H M"},C:{"1":"0 1 2 3 4 5 6 HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F RC SC","516":"8 9 G A B C K L H M N O n o p q AB BB CB DB EB FB GB"},D:{"1":"0 1 2 3 4 5 6 9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O n o p"},E:{"1":"J A B C UC XC CC zB","2":"7 I K L H TC BC 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","1028":"E F G VC WC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B dC eC fC gC zB NC hC"},G:{"1":"nC oC pC qC rC sC tC","2":"BC iC OC jC kC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","1028":"F lC mC"},H:{"1":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"16":"E","1028":"A"},K:{"1":"r 0B","16":"A B C zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"164":"A","260":"B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:7,C:"Do Not Track API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/document-currentscript.js b/node_modules/caniuse-lite/data/features/document-currentscript.js new file mode 100644 index 00000000..cf66f19b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/document-currentscript.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB"},E:{"1":"F G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E TC BC UC VC WC"},F:{"1":"8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C H dC eC fC gC zB NC hC 0B"},G:{"1":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"document.currentScript",D:true}; diff --git a/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js b/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js new file mode 100644 index 00000000..a2b85f0d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","16":"QC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","16":"G"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:7,C:"document.evaluate & XPath",D:true}; diff --git a/node_modules/caniuse-lite/data/features/document-execcommand.js b/node_modules/caniuse-lite/data/features/document-execcommand.js new file mode 100644 index 00000000..a100d568 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/document-execcommand.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"7 I TC BC UC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m eC fC gC zB NC hC 0B","16":"G dC"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC","16":"OC jC kC"},H:{"2":"4C"},I:{"1":"D 8C OC 9C AD","2":"4B I 5C 6C 7C"},J:{"1":"A","2":"E"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","2":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:7,C:"Document.execCommand()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/document-policy.js b/node_modules/caniuse-lite/data/features/document-policy.js new file mode 100644 index 00000000..f184b9b1 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/document-policy.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O P Q R S T","132":"0 1 2 3 4 5 6 U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T","132":"0 1 2 3 4 5 6 U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB dC eC fC gC zB NC hC 0B","132":"sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","132":"D"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","132":"r"},L:{"132":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"132":"ND"},S:{"2":"OD PD"}},B:7,C:"Document Policy",D:true}; diff --git a/node_modules/caniuse-lite/data/features/document-scrollingelement.js b/node_modules/caniuse-lite/data/features/document-scrollingelement.js new file mode 100644 index 00000000..4c43fb18 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/document-scrollingelement.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","16":"C K"},C:{"1":"0 1 2 3 4 5 6 XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB RC SC"},D:{"1":"0 1 2 3 4 5 6 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC"},F:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB dC eC fC gC zB NC hC 0B"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"document.scrollingElement",D:true}; diff --git a/node_modules/caniuse-lite/data/features/documenthead.js b/node_modules/caniuse-lite/data/features/documenthead.js new file mode 100644 index 00000000..88b4f8e9 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/documenthead.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","16":"7"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m zB NC hC 0B","2":"G dC eC fC gC"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC"},H:{"1":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"document.head",D:true}; diff --git a/node_modules/caniuse-lite/data/features/dom-manip-convenience.js b/node_modules/caniuse-lite/data/features/dom-manip-convenience.js new file mode 100644 index 00000000..e8e0e29c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/dom-manip-convenience.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M"},C:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB RC SC"},D:{"1":"0 1 2 3 4 5 6 dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB","194":"bB cB"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC"},F:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB dC eC fC gC zB NC hC 0B","194":"PB"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:1,C:"DOM manipulation convenience methods",D:true}; diff --git a/node_modules/caniuse-lite/data/features/dom-range.js b/node_modules/caniuse-lite/data/features/dom-range.js new file mode 100644 index 00000000..826f0b42 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/dom-range.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"PC","8":"J E F"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Document Object Model Range",D:true}; diff --git a/node_modules/caniuse-lite/data/features/domcontentloaded.js b/node_modules/caniuse-lite/data/features/domcontentloaded.js new file mode 100644 index 00000000..c197f3d2 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/domcontentloaded.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"DOMContentLoaded",D:true}; diff --git a/node_modules/caniuse-lite/data/features/dommatrix.js b/node_modules/caniuse-lite/data/features/dommatrix.js new file mode 100644 index 00000000..c37a2e5f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/dommatrix.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","132":"A B"},B:{"132":"C K L H M N O","1028":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB RC SC","1028":"0 1 2 3 4 5 6 qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2564":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB","3076":"YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB"},D:{"16":"7 I J E","132":"8 9 G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB","388":"F","1028":"0 1 2 3 4 5 6 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"16":"I TC BC","132":"7 J E F G A UC VC WC XC CC","1028":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","132":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB","1028":"XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"16":"BC iC OC","132":"F jC kC lC mC nC oC pC qC","1028":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"132":"I 8C OC 9C AD","292":"4B 5C 6C 7C","1028":"D"},J:{"16":"E","132":"A"},K:{"2":"A B C zB NC 0B","1028":"r"},L:{"1028":"D"},M:{"1028":"D"},N:{"132":"A B"},O:{"1028":"1B"},P:{"132":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1028":"DC"},R:{"1028":"ND"},S:{"1028":"PD","2564":"OD"}},B:4,C:"DOMMatrix",D:true}; diff --git a/node_modules/caniuse-lite/data/features/download.js b/node_modules/caniuse-lite/data/features/download.js new file mode 100644 index 00000000..8a49fa8c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/download.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C"},C:{"1":"0 1 2 3 4 5 6 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 QC 4B I J E F G A B C K L H M N O RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Download attribute",D:true}; diff --git a/node_modules/caniuse-lite/data/features/dragndrop.js b/node_modules/caniuse-lite/data/features/dragndrop.js new file mode 100644 index 00000000..7f8f95f0 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/dragndrop.js @@ -0,0 +1 @@ +module.exports={A:{A:{"644":"J E F G PC","772":"A B"},B:{"1":"0 1 2 3 4 5 6 O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","260":"C K L H M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","8":"QC 4B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","8":"G B dC eC fC gC zB NC hC"},G:{"1":"1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","1025":"D"},J:{"2":"E A"},K:{"1":"0B","8":"A B C zB NC","1025":"r"},L:{"1025":"D"},M:{"2":"D"},N:{"1":"A B"},O:{"1025":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:1,C:"Drag and Drop",D:true}; diff --git a/node_modules/caniuse-lite/data/features/element-closest.js b/node_modules/caniuse-lite/data/features/element-closest.js new file mode 100644 index 00000000..01087e24 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/element-closest.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L"},C:{"1":"0 1 2 3 4 5 6 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB RC SC"},D:{"1":"0 1 2 3 4 5 6 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB dC eC fC gC zB NC hC 0B"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Element.closest()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/element-from-point.js b/node_modules/caniuse-lite/data/features/element-from-point.js new file mode 100644 index 00000000..b5c653a3 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/element-from-point.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J E F G A B","16":"PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","16":"QC"},D:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"I TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m zB NC hC 0B","16":"G dC eC fC gC"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC"},H:{"1":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"C r 0B","16":"A B zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"document.elementFromPoint()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/element-scroll-methods.js b/node_modules/caniuse-lite/data/features/element-scroll-methods.js new file mode 100644 index 00000000..123eb9ba --- /dev/null +++ b/node_modules/caniuse-lite/data/features/element-scroll-methods.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB RC SC"},D:{"1":"0 1 2 3 4 5 6 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB"},E:{"1":"L H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC","132":"A B C K CC zB 0B DC"},F:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB dC eC fC gC zB NC hC 0B"},G:{"1":"0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC","132":"pC qC rC sC tC uC vC wC xC yC zC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"Scroll methods on elements (scroll, scrollTo, scrollBy)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/eme.js b/node_modules/caniuse-lite/data/features/eme.js new file mode 100644 index 00000000..ce686346 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/eme.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","164":"B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB RC SC"},D:{"1":"0 1 2 3 4 5 6 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB","132":"KB LB MB NB OB PB QB"},E:{"1":"C K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC VC","164":"E F G A B WC XC CC zB"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O n o dC eC fC gC zB NC hC 0B","132":"9 p q AB BB CB DB"},G:{"1":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"Encrypted Media Extensions",D:true}; diff --git a/node_modules/caniuse-lite/data/features/eot.js b/node_modules/caniuse-lite/data/features/eot.js new file mode 100644 index 00000000..c559d2cb --- /dev/null +++ b/node_modules/caniuse-lite/data/features/eot.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J E F G A B","2":"PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"EOT - Embedded OpenType fonts",D:true}; diff --git a/node_modules/caniuse-lite/data/features/es5.js b/node_modules/caniuse-lite/data/features/es5.js new file mode 100644 index 00000000..e4f42e31 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/es5.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E PC","260":"G","1026":"F"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 9 o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","4":"QC 4B RC SC","132":"7 8 I J E F G A B C K L H M N O n"},D:{"1":"0 1 2 3 4 5 6 9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","4":"7 I J E F G A B C K L H M N O","132":"8 n o p"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","4":"7 I TC BC UC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","4":"G B C dC eC fC gC zB NC hC","132":"0B"},G:{"1":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","4":"BC iC OC jC"},H:{"132":"4C"},I:{"1":"D 9C AD","4":"4B 5C 6C 7C","132":"8C OC","900":"I"},J:{"1":"A","4":"E"},K:{"1":"r","4":"A B C zB NC","132":"0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"ECMAScript 5",D:true}; diff --git a/node_modules/caniuse-lite/data/features/es6-class.js b/node_modules/caniuse-lite/data/features/es6-class.js new file mode 100644 index 00000000..341f6ca2 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/es6-class.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C"},C:{"1":"0 1 2 3 4 5 6 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB RC SC"},D:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","132":"RB SB TB UB VB WB XB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB dC eC fC gC zB NC hC 0B","132":"EB FB GB HB IB JB KB"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"ES6 classes",D:true}; diff --git a/node_modules/caniuse-lite/data/features/es6-generators.js b/node_modules/caniuse-lite/data/features/es6-generators.js new file mode 100644 index 00000000..efb2befc --- /dev/null +++ b/node_modules/caniuse-lite/data/features/es6-generators.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C"},C:{"1":"0 1 2 3 4 5 6 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB RC SC"},D:{"1":"0 1 2 3 4 5 6 OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB dC eC fC gC zB NC hC 0B"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"ES6 Generators",D:true}; diff --git a/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js b/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js new file mode 100644 index 00000000..f2d61816 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB RC SC","194":"nB"},D:{"1":"0 1 2 3 4 5 6 kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB"},E:{"1":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B TC BC UC VC WC XC CC"},F:{"1":"ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB dC eC fC gC zB NC hC 0B"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:6,C:"JavaScript modules: dynamic import()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/es6-module.js b/node_modules/caniuse-lite/data/features/es6-module.js new file mode 100644 index 00000000..ece8b34d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/es6-module.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L","2049":"M N O","2242":"H"},C:{"1":"0 1 2 3 4 5 6 iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB RC SC","322":"dB eB fB gB hB 5B"},D:{"1":"0 1 2 3 4 5 6 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B","194":"iB"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC","1540":"CC"},F:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB dC eC fC gC zB NC hC 0B","194":"WB"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC","1540":"qC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:1,C:"JavaScript modules via script tag",D:true}; diff --git a/node_modules/caniuse-lite/data/features/es6-number.js b/node_modules/caniuse-lite/data/features/es6-number.js new file mode 100644 index 00000000..e9cbdf87 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/es6-number.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L H RC SC","132":"8 9 M N O n o p q","260":"AB BB CB DB EB FB","516":"GB"},D:{"1":"0 1 2 3 4 5 6 JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K L H M N O","1028":"8 9 n o p q AB BB CB DB EB FB GB HB IB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC"},F:{"1":"9 o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","1028":"8 H M N O n"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C","1028":"8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"ES6 Number",D:true}; diff --git a/node_modules/caniuse-lite/data/features/es6-string-includes.js b/node_modules/caniuse-lite/data/features/es6-string-includes.js new file mode 100644 index 00000000..65ce9b1a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/es6-string-includes.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB RC SC"},D:{"1":"0 1 2 3 4 5 6 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB dC eC fC gC zB NC hC 0B"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"String.prototype.includes",D:true}; diff --git a/node_modules/caniuse-lite/data/features/es6.js b/node_modules/caniuse-lite/data/features/es6.js new file mode 100644 index 00000000..d23aec4c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/es6.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","388":"B"},B:{"257":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","260":"C K L","769":"H M N O"},C:{"2":"7 QC 4B I RC SC","4":"8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB","257":"0 1 2 3 4 5 6 dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"7 8 I J E F G A B C K L H M N O n","4":"9 o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB","257":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E TC BC UC VC","4":"F G WC XC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","4":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB","257":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC","4":"F lC mC nC oC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC","4":"9C AD","257":"D"},J:{"2":"E","4":"A"},K:{"2":"A B C zB NC 0B","257":"r"},L:{"257":"D"},M:{"257":"D"},N:{"2":"A","388":"B"},O:{"257":"1B"},P:{"4":"I","257":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"257":"DC"},R:{"257":"ND"},S:{"4":"OD","257":"PD"}},B:6,C:"ECMAScript 2015 (ES6)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/eventsource.js b/node_modules/caniuse-lite/data/features/eventsource.js new file mode 100644 index 00000000..da57e347 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/eventsource.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m zB NC hC 0B","4":"G dC eC fC gC"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"E A"},K:{"1":"C r zB NC 0B","4":"A B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Server-sent events",D:true}; diff --git a/node_modules/caniuse-lite/data/features/extended-system-fonts.js b/node_modules/caniuse-lite/data/features/extended-system-fonts.js new file mode 100644 index 00000000..ef65dbee --- /dev/null +++ b/node_modules/caniuse-lite/data/features/extended-system-fonts.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K TC BC UC VC WC XC CC zB 0B"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"ui-serif, ui-sans-serif, ui-monospace and ui-rounded values for font-family",D:true}; diff --git a/node_modules/caniuse-lite/data/features/feature-policy.js b/node_modules/caniuse-lite/data/features/feature-policy.js new file mode 100644 index 00000000..c738c2dc --- /dev/null +++ b/node_modules/caniuse-lite/data/features/feature-policy.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"P Q R S T U V W","2":"C K L H M N O","1025":"0 1 2 3 4 5 6 X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r RC SC","260":"0 1 2 3 4 5 6 uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"uB vB wB xB yB P Q R S T U V W","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B","132":"iB 6B jB kB lB mB nB oB pB qB rB sB tB r","1025":"0 1 2 3 4 5 6 X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B TC BC UC VC WC XC CC","772":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"jB kB lB mB nB oB pB qB rB sB tB r uB","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB dC eC fC gC zB NC hC 0B","132":"WB XB YB ZB aB bB cB dB eB fB gB hB iB","1025":"vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC","772":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","1025":"r"},L:{"1025":"D"},M:{"260":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD","132":"ED FD CC"},Q:{"132":"DC"},R:{"1025":"ND"},S:{"2":"OD","260":"PD"}},B:7,C:"Feature Policy",D:true}; diff --git a/node_modules/caniuse-lite/data/features/fetch.js b/node_modules/caniuse-lite/data/features/fetch.js new file mode 100644 index 00000000..09cd555c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/fetch.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K"},C:{"1":"0 1 2 3 4 5 6 PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB RC SC","1025":"OB","1218":"JB KB LB MB NB"},D:{"1":"0 1 2 3 4 5 6 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB","260":"PB","772":"QB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB dC eC fC gC zB NC hC 0B","260":"CB","772":"DB"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Fetch",D:true}; diff --git a/node_modules/caniuse-lite/data/features/fieldset-disabled.js b/node_modules/caniuse-lite/data/features/fieldset-disabled.js new file mode 100644 index 00000000..30e22513 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/fieldset-disabled.js @@ -0,0 +1 @@ +module.exports={A:{A:{"16":"PC","132":"F G","388":"J E A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K L H","16":"8 M N O"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m eC fC gC zB NC hC 0B","16":"G dC"},G:{"1":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC"},H:{"388":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","2":"E"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A","260":"B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"disabled attribute of the fieldset element",D:true}; diff --git a/node_modules/caniuse-lite/data/features/fileapi.js b/node_modules/caniuse-lite/data/features/fileapi.js new file mode 100644 index 00000000..96a38e5a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/fileapi.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","260":"A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","260":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC","260":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB SC"},D:{"1":"0 1 2 3 4 5 6 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I","260":"8 9 K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB","388":"J E F G A B C"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC","260":"J E F G VC WC XC","388":"UC"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B dC eC fC gC","260":"8 9 C H M N O n o p q zB NC hC 0B"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC","260":"F kC lC mC nC oC"},H:{"2":"4C"},I:{"1":"D AD","2":"5C 6C 7C","260":"9C","388":"4B I 8C OC"},J:{"260":"A","388":"E"},K:{"1":"r","2":"A B","260":"C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A","260":"B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"File API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/filereader.js b/node_modules/caniuse-lite/data/features/filereader.js new file mode 100644 index 00000000..a1527890 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/filereader.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","132":"A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC SC","2":"QC 4B RC"},D:{"1":"0 1 2 3 4 5 6 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m zB NC hC 0B","2":"G B dC eC fC gC"},G:{"1":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC"},H:{"2":"4C"},I:{"1":"4B I D 8C OC 9C AD","2":"5C 6C 7C"},J:{"1":"A","2":"E"},K:{"1":"C r zB NC 0B","2":"A B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"FileReader API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/filereadersync.js b/node_modules/caniuse-lite/data/features/filereadersync.js new file mode 100644 index 00000000..927ed2d9 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/filereadersync.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B","2":"G dC eC","16":"B fC gC zB NC"},G:{"1":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","2":"E"},K:{"1":"C r NC 0B","2":"A","16":"B zB"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"FileReaderSync",D:true}; diff --git a/node_modules/caniuse-lite/data/features/filesystem.js b/node_modules/caniuse-lite/data/features/filesystem.js new file mode 100644 index 00000000..33bd60a9 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/filesystem.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","33":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"7 I J E","33":"0 1 2 3 4 5 6 8 9 K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","36":"F G A B C"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E","33":"A"},K:{"2":"A B C zB NC 0B","33":"r"},L:{"33":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"33":"1B"},P:{"2":"I","33":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"33":"ND"},S:{"2":"OD PD"}},B:7,C:"Filesystem & FileWriter API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/flac.js b/node_modules/caniuse-lite/data/features/flac.js new file mode 100644 index 00000000..1b96701a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/flac.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H"},C:{"1":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB RC SC"},D:{"1":"0 1 2 3 4 5 6 fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB","16":"TB UB VB","388":"WB XB YB ZB aB bB cB dB eB"},E:{"1":"K L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC CC","516":"B C zB 0B"},F:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB dC eC fC gC zB NC hC 0B"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC"},H:{"2":"4C"},I:{"1":"D","2":"5C 6C 7C","16":"4B I 8C OC 9C AD"},J:{"1":"A","2":"E"},K:{"1":"r 0B","16":"A B C zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","129":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:6,C:"FLAC audio format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/flexbox-gap.js b/node_modules/caniuse-lite/data/features/flexbox-gap.js new file mode 100644 index 00000000..ef4dfb9c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/flexbox-gap.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O P Q R S"},C:{"1":"0 1 2 3 4 5 6 kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB RC SC"},D:{"1":"0 1 2 3 4 5 6 T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S"},E:{"1":"H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L TC BC UC VC WC XC CC zB 0B DC"},F:{"1":"rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB dC eC fC gC zB NC hC 0B"},G:{"1":"0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD HD ID"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"gap property for Flexbox",D:true}; diff --git a/node_modules/caniuse-lite/data/features/flexbox.js b/node_modules/caniuse-lite/data/features/flexbox.js new file mode 100644 index 00000000..261369dd --- /dev/null +++ b/node_modules/caniuse-lite/data/features/flexbox.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","1028":"B","1316":"A"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","164":"7 8 QC 4B I J E F G A B C K L H M N O n o RC SC","516":"9 p q AB BB CB"},D:{"1":"0 1 2 3 4 5 6 EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"9 o p q AB BB CB DB","164":"7 8 I J E F G A B C K L H M N O n"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","33":"E F VC WC","164":"7 I J TC BC UC"},F:{"1":"8 9 N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B C dC eC fC gC zB NC hC","33":"H M"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","33":"F lC mC","164":"BC iC OC jC kC"},H:{"1":"4C"},I:{"1":"D 9C AD","164":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","164":"E"},K:{"1":"r 0B","2":"A B C zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","292":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS Flexible Box Layout Module",D:true}; diff --git a/node_modules/caniuse-lite/data/features/flow-root.js b/node_modules/caniuse-lite/data/features/flow-root.js new file mode 100644 index 00000000..262ed678 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/flow-root.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB RC SC"},D:{"1":"0 1 2 3 4 5 6 hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB"},E:{"1":"K L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C TC BC UC VC WC XC CC zB 0B"},F:{"1":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB dC eC fC gC zB NC hC 0B"},G:{"1":"vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:4,C:"display: flow-root",D:true}; diff --git a/node_modules/caniuse-lite/data/features/focusin-focusout-events.js b/node_modules/caniuse-lite/data/features/focusin-focusout-events.js new file mode 100644 index 00000000..22cd07b7 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/focusin-focusout-events.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J E F G A B","2":"PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"7 I TC BC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B","2":"G dC eC fC gC","16":"B zB NC"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"2":"4C"},I:{"1":"I D 8C OC 9C AD","2":"5C 6C 7C","16":"4B"},J:{"1":"E A"},K:{"1":"C r 0B","2":"A","16":"B zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"focusin & focusout events",D:true}; diff --git a/node_modules/caniuse-lite/data/features/font-family-system-ui.js b/node_modules/caniuse-lite/data/features/font-family-system-ui.js new file mode 100644 index 00000000..078a2063 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/font-family-system-ui.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB RC SC","132":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a"},D:{"1":"0 1 2 3 4 5 6 fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB","260":"cB dB eB"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC","16":"G","132":"A XC CC"},F:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB dC eC fC gC zB NC hC 0B"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC","132":"nC oC pC qC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"132":"OD PD"}},B:5,C:"system-ui value for font-family",D:true}; diff --git a/node_modules/caniuse-lite/data/features/font-feature.js b/node_modules/caniuse-lite/data/features/font-feature.js new file mode 100644 index 00000000..bb18afb6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/font-feature.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB","164":"7 I J E F G A B C K L"},D:{"1":"0 1 2 3 4 5 6 XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K L H","33":"9 o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB","292":"8 M N O n"},E:{"1":"A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"E F G TC BC VC WC","4":"7 I J UC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB"},G:{"1":"oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F lC mC nC","4":"BC iC OC jC kC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC","33":"9C AD"},J:{"2":"E","33":"A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","33":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS font-feature-settings",D:true}; diff --git a/node_modules/caniuse-lite/data/features/font-kerning.js b/node_modules/caniuse-lite/data/features/font-kerning.js new file mode 100644 index 00000000..c453d25d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/font-kerning.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 QC 4B I J E F G A B C K L H M N O n o p q RC SC","194":"9 AB BB CB DB EB FB GB HB IB"},D:{"1":"0 1 2 3 4 5 6 IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB","33":"EB FB GB HB"},E:{"1":"A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC VC","33":"E F G WC"},F:{"1":"9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C H dC eC fC gC zB NC hC 0B","33":"8 M N O"},G:{"1":"tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC","33":"F mC nC oC pC qC rC sC"},H:{"2":"4C"},I:{"1":"D AD","2":"4B I 5C 6C 7C 8C OC","33":"9C"},J:{"2":"E","33":"A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS3 font-kerning",D:true}; diff --git a/node_modules/caniuse-lite/data/features/font-loading.js b/node_modules/caniuse-lite/data/features/font-loading.js new file mode 100644 index 00000000..b4f36baf --- /dev/null +++ b/node_modules/caniuse-lite/data/features/font-loading.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB RC SC","194":"KB LB MB NB OB PB"},D:{"1":"0 1 2 3 4 5 6 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC"},F:{"1":"9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O n o dC eC fC gC zB NC hC 0B"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"CSS Font Loading",D:true}; diff --git a/node_modules/caniuse-lite/data/features/font-size-adjust.js b/node_modules/caniuse-lite/data/features/font-size-adjust.js new file mode 100644 index 00000000..d9038d27 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/font-size-adjust.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","194":"5 6 D","962":"0 1 2 3 4 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z"},C:{"1":"6 D 8B 9B AC","2":"QC","516":"0 1 2 3 4 5 b c d e f g h i j k l m s t u v w x y z","772":"7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a RC SC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","194":"8B 9B AC","962":"0 1 2 3 4 5 6 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},E:{"1":"3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC","772":"JC KC bC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB dC eC fC gC zB NC hC 0B","194":"l m","962":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k"},G:{"1":"3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC","772":"JC KC 3C"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"194":"DC"},R:{"2":"ND"},S:{"2":"OD","516":"PD"}},B:2,C:"CSS font-size-adjust",D:true}; diff --git a/node_modules/caniuse-lite/data/features/font-smooth.js b/node_modules/caniuse-lite/data/features/font-smooth.js new file mode 100644 index 00000000..e50c8a63 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/font-smooth.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","676":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q RC SC","804":"0 1 2 3 4 5 6 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"I","676":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"TC BC","676":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","676":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"804":"OD PD"}},B:7,C:"CSS font-smooth",D:true}; diff --git a/node_modules/caniuse-lite/data/features/font-unicode-range.js b/node_modules/caniuse-lite/data/features/font-unicode-range.js new file mode 100644 index 00000000..e428a2b2 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/font-unicode-range.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","4":"G A B"},B:{"1":"0 1 2 3 4 5 6 N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","4":"C K L H M"},C:{"1":"0 1 2 3 4 5 6 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB RC SC","194":"LB MB NB OB PB QB RB SB"},D:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","4":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","4":"7 I J E F G TC BC UC VC WC XC"},F:{"1":"9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","4":"8 H M N O n o p"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","4":"F BC iC OC jC kC lC mC nC oC"},H:{"2":"4C"},I:{"1":"D","4":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E","4":"A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"4":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","4":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"Font unicode-range subsetting",D:true}; diff --git a/node_modules/caniuse-lite/data/features/font-variant-alternates.js b/node_modules/caniuse-lite/data/features/font-variant-alternates.js new file mode 100644 index 00000000..2f4c67f8 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/font-variant-alternates.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","130":"A B"},B:{"1":"0 1 2 3 4 5 6 z D","130":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y"},C:{"1":"0 1 2 3 4 5 6 JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","130":"7 8 I J E F G A B C K L H M N O n o p q","322":"9 AB BB CB DB EB FB GB HB IB"},D:{"1":"0 1 2 3 4 5 6 z D 8B 9B AC","2":"7 I J E F G A B C K L H","130":"8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y"},E:{"1":"A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"E F G TC BC VC WC","130":"7 I J UC"},F:{"1":"h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","130":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g"},G:{"1":"oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC lC mC nC","130":"iC OC jC kC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC","130":"9C AD"},J:{"2":"E","130":"A"},K:{"2":"A B C zB NC 0B","130":"r"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"130":"1B"},P:{"1":"p q","130":"I n o BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"130":"DC"},R:{"130":"ND"},S:{"1":"OD PD"}},B:5,C:"CSS font-variant-alternates",D:true}; diff --git a/node_modules/caniuse-lite/data/features/font-variant-numeric.js b/node_modules/caniuse-lite/data/features/font-variant-numeric.js new file mode 100644 index 00000000..e7fb1945 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/font-variant-numeric.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB RC SC"},D:{"1":"0 1 2 3 4 5 6 bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB"},E:{"1":"A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC"},F:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB dC eC fC gC zB NC hC 0B"},G:{"1":"oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E","16":"A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS font-variant-numeric",D:true}; diff --git a/node_modules/caniuse-lite/data/features/fontface.js b/node_modules/caniuse-lite/data/features/fontface.js new file mode 100644 index 00000000..15e974c5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/fontface.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","132":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC 4B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m eC fC gC zB NC hC 0B","2":"G dC"},G:{"1":"F OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","260":"BC iC"},H:{"2":"4C"},I:{"1":"I D 8C OC 9C AD","2":"5C","4":"4B 6C 7C"},J:{"1":"A","4":"E"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"@font-face Web fonts",D:true}; diff --git a/node_modules/caniuse-lite/data/features/form-attribute.js b/node_modules/caniuse-lite/data/features/form-attribute.js new file mode 100644 index 00000000..fa335987 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/form-attribute.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","16":"7"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","2":"G"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"1":"4C"},I:{"1":"4B I D 8C OC 9C AD","2":"5C 6C 7C"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Form attribute",D:true}; diff --git a/node_modules/caniuse-lite/data/features/form-submit-attributes.js b/node_modules/caniuse-lite/data/features/form-submit-attributes.js new file mode 100644 index 00000000..529761fd --- /dev/null +++ b/node_modules/caniuse-lite/data/features/form-submit-attributes.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m gC zB NC hC 0B","2":"G dC","16":"eC fC"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"1":"4C"},I:{"1":"I D 8C OC 9C AD","2":"5C 6C 7C","16":"4B"},J:{"1":"A","2":"E"},K:{"1":"B C r zB NC 0B","16":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Attributes for form submission",D:true}; diff --git a/node_modules/caniuse-lite/data/features/form-validation.js b/node_modules/caniuse-lite/data/features/form-validation.js new file mode 100644 index 00000000..057beac8 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/form-validation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","132":"7 J E F G A UC VC WC XC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m eC fC gC zB NC hC 0B","2":"G dC"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC","132":"F iC OC jC kC lC mC nC oC pC"},H:{"516":"4C"},I:{"1":"D AD","2":"4B 5C 6C 7C","132":"I 8C OC 9C"},J:{"1":"A","132":"E"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"260":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","132":"OD"}},B:1,C:"Form validation",D:true}; diff --git a/node_modules/caniuse-lite/data/features/forms.js b/node_modules/caniuse-lite/data/features/forms.js new file mode 100644 index 00000000..b7d47724 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/forms.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"PC","4":"A B","8":"J E F G"},B:{"1":"0 1 2 3 4 5 6 M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","4":"C K L H"},C:{"4":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","4":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB"},E:{"4":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","8":"TC BC"},F:{"1":"G B C bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","4":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB"},G:{"2":"BC","4":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC","4":"9C AD"},J:{"2":"E","4":"A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"4":"D"},N:{"4":"A B"},O:{"1":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","4":"I BD CD DD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"4":"OD PD"}},B:1,C:"HTML5 form features",D:false}; diff --git a/node_modules/caniuse-lite/data/features/fullscreen.js b/node_modules/caniuse-lite/data/features/fullscreen.js new file mode 100644 index 00000000..64018270 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/fullscreen.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","548":"B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","516":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G RC SC","676":"8 9 A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB","1700":"WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB"},D:{"1":"0 1 2 3 4 5 6 sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K L","676":"8 H M N O","804":"9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB"},E:{"1":"JC KC bC 3B LC MC cC","2":"7 I TC BC","548":"FC 1B aC 2B GC HC IC","676":"UC","804":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC"},F:{"1":"lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B C dC eC fC gC zB NC hC","804":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB"},G:{"1":"MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC","2052":"tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E","292":"A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A","548":"B"},O:{"1":"1B"},P:{"1":"n o p q CC GD HD ID JD KD 2B 3B LD MD","804":"I BD CD DD ED FD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Full Screen API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/gamepad.js b/node_modules/caniuse-lite/data/features/gamepad.js new file mode 100644 index 00000000..783f27fc --- /dev/null +++ b/node_modules/caniuse-lite/data/features/gamepad.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB RC SC"},D:{"1":"0 1 2 3 4 5 6 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O n","33":"9 o p q"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O n o p q dC eC fC gC zB NC hC 0B"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"Gamepad API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/geolocation.js b/node_modules/caniuse-lite/data/features/geolocation.js new file mode 100644 index 00000000..acf08a08 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/geolocation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"PC","8":"J E F"},B:{"1":"C K L H M N O","129":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB RC SC","8":"QC 4B","129":"0 1 2 3 4 5 6 eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"7 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","4":"I","129":"0 1 2 3 4 5 6 ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 J E F G B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","8":"I TC BC","129":"A"},F:{"1":"8 9 B C M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB gC zB NC hC 0B","2":"G H dC","8":"eC fC","129":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"F BC iC OC jC kC lC mC nC oC","129":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I 5C 6C 7C 8C OC 9C AD","129":"D"},J:{"1":"E A"},K:{"1":"B C zB NC 0B","8":"A","129":"r"},L:{"129":"D"},M:{"129":"D"},N:{"1":"A B"},O:{"129":"1B"},P:{"1":"I","129":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"129":"DC"},R:{"129":"ND"},S:{"1":"OD","129":"PD"}},B:2,C:"Geolocation",D:true}; diff --git a/node_modules/caniuse-lite/data/features/getboundingclientrect.js b/node_modules/caniuse-lite/data/features/getboundingclientrect.js new file mode 100644 index 00000000..a11ec921 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/getboundingclientrect.js @@ -0,0 +1 @@ +module.exports={A:{A:{"644":"J E PC","2049":"G A B","2692":"F"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2049":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 8 9 C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC","260":"7 I J E F G A B","1156":"4B","1284":"RC","1796":"SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m gC zB NC hC 0B","16":"G dC","132":"eC fC"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC"},H:{"1":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","132":"A"},L:{"1":"D"},M:{"1":"D"},N:{"2049":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"Element.getBoundingClientRect()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/getcomputedstyle.js b/node_modules/caniuse-lite/data/features/getcomputedstyle.js new file mode 100644 index 00000000..a8c5a77a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/getcomputedstyle.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC","132":"4B RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","260":"7 I J E F G A"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","260":"I TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m gC zB NC hC 0B","260":"G dC eC fC"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","260":"BC iC OC"},H:{"260":"4C"},I:{"1":"I D 8C OC 9C AD","260":"4B 5C 6C 7C"},J:{"1":"A","260":"E"},K:{"1":"B C r zB NC 0B","260":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"getComputedStyle",D:true}; diff --git a/node_modules/caniuse-lite/data/features/getelementsbyclassname.js b/node_modules/caniuse-lite/data/features/getelementsbyclassname.js new file mode 100644 index 00000000..c7010bb1 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/getelementsbyclassname.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"PC","8":"J E F"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","8":"QC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","2":"G"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"getElementsByClassName",D:true}; diff --git a/node_modules/caniuse-lite/data/features/getrandomvalues.js b/node_modules/caniuse-lite/data/features/getrandomvalues.js new file mode 100644 index 00000000..86e74d7f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/getrandomvalues.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","33":"B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 9 o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 QC 4B I J E F G A B C K L H M N O n RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A","33":"B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"crypto.getRandomValues()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/gyroscope.js b/node_modules/caniuse-lite/data/features/gyroscope.js new file mode 100644 index 00000000..5112d523 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/gyroscope.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB","194":"hB 5B iB 6B jB kB lB mB nB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:4,C:"Gyroscope",D:true}; diff --git a/node_modules/caniuse-lite/data/features/hardwareconcurrency.js b/node_modules/caniuse-lite/data/features/hardwareconcurrency.js new file mode 100644 index 00000000..a84de68e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/hardwareconcurrency.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L"},C:{"1":"0 1 2 3 4 5 6 XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB RC SC"},D:{"1":"0 1 2 3 4 5 6 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"2":"7 I J E TC BC UC VC WC","129":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","194":"F G A XC"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O n o p q dC eC fC gC zB NC hC 0B"},G:{"2":"BC iC OC jC kC lC","129":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","194":"F mC nC oC pC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"navigator.hardwareConcurrency",D:true}; diff --git a/node_modules/caniuse-lite/data/features/hashchange.js b/node_modules/caniuse-lite/data/features/hashchange.js new file mode 100644 index 00000000..3cab2c8d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/hashchange.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F G A B","8":"J E PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC SC","8":"QC 4B RC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"I"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","8":"I TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m gC zB NC hC 0B","8":"G dC eC fC"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC"},H:{"2":"4C"},I:{"1":"4B I D 6C 7C 8C OC 9C AD","2":"5C"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","8":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Hashchange event",D:true}; diff --git a/node_modules/caniuse-lite/data/features/heif.js b/node_modules/caniuse-lite/data/features/heif.js new file mode 100644 index 00000000..720cc61e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/heif.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC CC","130":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC 3C","130":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:6,C:"HEIF/HEIC image format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/hevc.js b/node_modules/caniuse-lite/data/features/hevc.js new file mode 100644 index 00000000..48bb0805 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/hevc.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","132":"B"},B:{"132":"C K L H M N O","1028":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D RC SC","4162":"8B 9B AC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u","2052":"0 1 2 3 4 5 6 v w x y z D 8B 9B AC"},E:{"1":"K L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC CC","516":"B C zB 0B"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c dC eC fC gC zB NC hC 0B","2052":"d e f g h i j k l m"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","2052":"D"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","258":"r"},L:{"2052":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"o p q","2":"I","258":"n BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:6,C:"HEVC/H.265 video format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/hidden.js b/node_modules/caniuse-lite/data/features/hidden.js new file mode 100644 index 00000000..ccd92efb --- /dev/null +++ b/node_modules/caniuse-lite/data/features/hidden.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F G A PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m zB NC hC 0B","2":"G B dC eC fC gC"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"1":"4C"},I:{"1":"I D 8C OC 9C AD","2":"4B 5C 6C 7C"},J:{"1":"A","2":"E"},K:{"1":"C r zB NC 0B","2":"A B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","2":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"hidden attribute",D:true}; diff --git a/node_modules/caniuse-lite/data/features/high-resolution-time.js b/node_modules/caniuse-lite/data/features/high-resolution-time.js new file mode 100644 index 00000000..017676e6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/high-resolution-time.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"7 QC 4B I J E F G A B C K L RC SC","129":"eB fB gB","769":"hB 5B","1281":"0 1 2 3 4 5 6 iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O","33":"n o p q"},E:{"1":"F G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E TC BC UC VC WC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"High Resolution Time API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/history.js b/node_modules/caniuse-lite/data/features/history.js new file mode 100644 index 00000000..a3e1eea4 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/history.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"I"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","4":"7 UC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m NC hC 0B","2":"G B dC eC fC gC zB"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC","4":"OC"},H:{"2":"4C"},I:{"1":"D 6C 7C OC 9C AD","2":"4B I 5C 8C"},J:{"1":"E A"},K:{"1":"C r zB NC 0B","2":"A B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Session history management",D:true}; diff --git a/node_modules/caniuse-lite/data/features/html-media-capture.js b/node_modules/caniuse-lite/data/features/html-media-capture.js new file mode 100644 index 00000000..ba5d19f5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/html-media-capture.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"BC iC OC jC","129":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I D 8C OC 9C AD","2":"5C","257":"6C 7C"},J:{"1":"A","16":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"516":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"16":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:2,C:"HTML Media Capture",D:true}; diff --git a/node_modules/caniuse-lite/data/features/html5semantic.js b/node_modules/caniuse-lite/data/features/html5semantic.js new file mode 100644 index 00000000..085f063b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/html5semantic.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"PC","8":"J E F","260":"G A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 9 o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC","132":"4B RC SC","260":"7 8 I J E F G A B C K L H M N O n"},D:{"1":"0 1 2 3 4 5 6 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 I","260":"8 9 J E F G A B C K L H M N O n o p q AB"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","132":"I TC BC","260":"7 J UC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","132":"G B dC eC fC gC","260":"C zB NC hC 0B"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","132":"BC","260":"iC OC jC kC"},H:{"132":"4C"},I:{"1":"D 9C AD","132":"5C","260":"4B I 6C 7C 8C OC"},J:{"260":"E A"},K:{"1":"r","132":"A","260":"B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"260":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"HTML5 semantic elements",D:true}; diff --git a/node_modules/caniuse-lite/data/features/http-live-streaming.js b/node_modules/caniuse-lite/data/features/http-live-streaming.js new file mode 100644 index 00000000..1cfe25c6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/http-live-streaming.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"C K L H M N O","2":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I D 8C OC 9C AD","2":"5C 6C 7C"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:7,C:"HTTP Live Streaming (HLS)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/http2.js b/node_modules/caniuse-lite/data/features/http2.js new file mode 100644 index 00000000..5a637dfb --- /dev/null +++ b/node_modules/caniuse-lite/data/features/http2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","132":"B"},B:{"1":"C K L H M N O","513":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB RC SC","513":"0 1 2 3 4 5 6 cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","513":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC","260":"G A XC CC"},F:{"1":"DB EB FB GB HB IB JB KB LB MB","2":"8 9 G B C H M N O n o p q AB BB CB dC eC fC gC zB NC hC 0B","513":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","513":"D"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","513":"r"},L:{"513":"D"},M:{"513":"D"},N:{"2":"A B"},O:{"513":"1B"},P:{"1":"I","513":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"513":"DC"},R:{"513":"ND"},S:{"1":"OD","513":"PD"}},B:6,C:"HTTP/2 protocol",D:true}; diff --git a/node_modules/caniuse-lite/data/features/http3.js b/node_modules/caniuse-lite/data/features/http3.js new file mode 100644 index 00000000..a29291a6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/http3.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O","322":"P Q R S T","578":"U V"},C:{"1":"0 1 2 3 4 5 6 X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB RC SC","194":"tB r uB vB wB xB yB P Q R 7B S T U V W"},D:{"1":"0 1 2 3 4 5 6 W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB","322":"P Q R S T","578":"U V"},E:{"2":"7 I J E F G A B C K TC BC UC VC WC XC CC zB 0B DC","2052":"JC KC bC 3B LC MC cC","2116":"2B GC HC IC","3140":"L H YC ZC EC FC 1B aC"},F:{"1":"uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB dC eC fC gC zB NC hC 0B","578":"r"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC","2052":"JC KC 3C 3B LC MC","2116":"zC 0C 1C EC FC 1B 2C 2B GC HC IC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD HD ID"},Q:{"2":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:6,C:"HTTP/3 protocol",D:true}; diff --git a/node_modules/caniuse-lite/data/features/iframe-sandbox.js b/node_modules/caniuse-lite/data/features/iframe-sandbox.js new file mode 100644 index 00000000..d3a9c8a6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/iframe-sandbox.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L H M RC SC","4":"8 9 N O n o p q AB BB CB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC"},H:{"2":"4C"},I:{"1":"4B I D 6C 7C 8C OC 9C AD","2":"5C"},J:{"1":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"sandbox attribute for iframes",D:true}; diff --git a/node_modules/caniuse-lite/data/features/iframe-seamless.js b/node_modules/caniuse-lite/data/features/iframe-seamless.js new file mode 100644 index 00000000..1627d09f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/iframe-seamless.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 I J E F G A B C K L H M N O CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","66":"9 n o p q AB BB"},E:{"2":"7 I J F G A B C K L H TC BC UC VC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","130":"E WC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","130":"lC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"seamless attribute for iframes",D:true}; diff --git a/node_modules/caniuse-lite/data/features/iframe-srcdoc.js b/node_modules/caniuse-lite/data/features/iframe-srcdoc.js new file mode 100644 index 00000000..e8fb18c6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/iframe-srcdoc.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"PC","8":"J E F G A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","8":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC","8":"7 8 9 4B I J E F G A B C K L H M N O n o p q RC SC"},D:{"1":"0 1 2 3 4 5 6 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K","8":"8 L H M N O"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC","8":"7 I UC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B dC eC fC gC","8":"C zB NC hC 0B"},G:{"1":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC","8":"iC OC jC"},H:{"2":"4C"},I:{"1":"D 9C AD","8":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","8":"E"},K:{"1":"r","2":"A B","8":"C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"8":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"srcdoc attribute for iframes",D:true}; diff --git a/node_modules/caniuse-lite/data/features/imagecapture.js b/node_modules/caniuse-lite/data/features/imagecapture.js new file mode 100644 index 00000000..0de73d58 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/imagecapture.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB RC SC","194":"0 1 2 3 4 5 6 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB","322":"cB dB eB fB gB hB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB dC eC fC gC zB NC hC 0B","322":"PB QB RB SB TB UB"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"194":"OD PD"}},B:5,C:"ImageCapture API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/ime.js b/node_modules/caniuse-lite/data/features/ime.js new file mode 100644 index 00000000..bddf7d07 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/ime.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","161":"B"},B:{"2":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","161":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A","161":"B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"Input Method Editor API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js b/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js new file mode 100644 index 00000000..77622a7a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"naturalWidth & naturalHeight image properties",D:true}; diff --git a/node_modules/caniuse-lite/data/features/import-maps.js b/node_modules/caniuse-lite/data/features/import-maps.js new file mode 100644 index 00000000..f9ac7c4d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/import-maps.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O","194":"P Q R S T U V W X"},C:{"1":"0 1 2 3 4 5 6 w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k RC SC","322":"l m s t u v"},D:{"1":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r","194":"uB vB wB xB yB P Q R S T U V W X"},E:{"1":"JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC"},F:{"1":"wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB dC eC fC gC zB NC hC 0B","194":"jB kB lB mB nB oB pB qB rB sB tB r uB vB"},G:{"1":"JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD HD ID JD"},Q:{"2":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:7,C:"Import maps",D:true}; diff --git a/node_modules/caniuse-lite/data/features/imports.js b/node_modules/caniuse-lite/data/features/imports.js new file mode 100644 index 00000000..b49f3094 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/imports.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","8":"A B"},B:{"1":"P","2":"0 1 2 3 4 5 6 Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","8":"C K L H M N O"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB RC SC","8":"0 1 2 3 4 5 6 FB GB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","72":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB"},D:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P","2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","66":"FB GB HB IB JB","72":"KB"},E:{"2":"7 I TC BC UC","8":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB","2":"G B C H M oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","66":"8 N O n o","72":"p"},G:{"2":"BC iC OC jC kC","8":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"8":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I BD CD DD ED FD CC GD HD","2":"n o p q ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"2":"ND"},S:{"1":"OD","8":"PD"}},B:5,C:"HTML Imports",D:true}; diff --git a/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js b/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js new file mode 100644 index 00000000..3bb57de3 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J E F G A B","16":"PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC SC","2":"QC 4B","16":"RC"},D:{"1":"0 1 2 3 4 5 6 DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B","2":"G B dC eC fC gC zB NC"},G:{"1":"uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"indeterminate checkbox",D:true}; diff --git a/node_modules/caniuse-lite/data/features/indexeddb.js b/node_modules/caniuse-lite/data/features/indexeddb.js new file mode 100644 index 00000000..f68dea7f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/indexeddb.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","132":"A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","132":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","33":"A B C K L H","36":"7 I J E F G"},D:{"1":"0 1 2 3 4 5 6 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"A","8":"7 I J E F G","33":"q","36":"8 B C K L H M N O n o p"},E:{"1":"A B C K L H CC zB 0B DC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","8":"7 I J E TC BC UC VC","260":"F G WC XC","516":"YC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G dC eC","8":"B C fC gC zB NC hC 0B"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","8":"BC iC OC jC kC lC","260":"F mC nC oC","516":"0C"},H:{"2":"4C"},I:{"1":"D 9C AD","8":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","8":"E"},K:{"1":"r","2":"A","8":"B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"132":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"IndexedDB",D:true}; diff --git a/node_modules/caniuse-lite/data/features/indexeddb2.js b/node_modules/caniuse-lite/data/features/indexeddb2.js new file mode 100644 index 00000000..0a85110f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/indexeddb2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB RC SC","132":"TB UB VB","260":"WB XB YB ZB"},D:{"1":"0 1 2 3 4 5 6 hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB","132":"XB YB ZB aB","260":"bB cB dB eB fB gB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB dC eC fC gC zB NC hC 0B","132":"KB LB MB NB","260":"OB PB QB RB SB TB"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC","16":"pC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I","260":"BD CD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","260":"OD"}},B:2,C:"IndexedDB 2.0",D:true}; diff --git a/node_modules/caniuse-lite/data/features/inline-block.js b/node_modules/caniuse-lite/data/features/inline-block.js new file mode 100644 index 00000000..841f7e75 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/inline-block.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F G A B","4":"PC","132":"J E"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","36":"QC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS inline-block",D:true}; diff --git a/node_modules/caniuse-lite/data/features/innertext.js b/node_modules/caniuse-lite/data/features/innertext.js new file mode 100644 index 00000000..71c942b6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/innertext.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J E F G A B","16":"PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"TC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","16":"G"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC"},H:{"1":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"HTMLElement.innerText",D:true}; diff --git a/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js b/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js new file mode 100644 index 00000000..0dcc1451 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J E F G A PC","132":"B"},B:{"132":"C K L H M N O","260":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB RC SC","516":"0 1 2 3 4 5 6 FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"8 9 N O n o p q AB BB","2":"7 I J E F G A B C K L H M","132":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB","260":"0 1 2 3 4 5 6 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"J UC VC","2":"7 I TC BC","2052":"E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"BC iC OC","1025":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1025":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2052":"A B"},O:{"1025":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"260":"DC"},R:{"1":"ND"},S:{"516":"OD PD"}},B:1,C:"autocomplete attribute: on & off values",D:true}; diff --git a/node_modules/caniuse-lite/data/features/input-color.js b/node_modules/caniuse-lite/data/features/input-color.js new file mode 100644 index 00000000..47e3482f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/input-color.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K"},C:{"1":"0 1 2 3 4 5 6 EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB RC SC"},D:{"1":"0 1 2 3 4 5 6 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O"},E:{"1":"K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C TC BC UC VC WC XC CC zB"},F:{"1":"8 9 B C N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m zB NC hC 0B","2":"G H M dC eC fC gC"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC","129":"uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:1,C:"Color input type",D:true}; diff --git a/node_modules/caniuse-lite/data/features/input-datetime.js b/node_modules/caniuse-lite/data/features/input-datetime.js new file mode 100644 index 00000000..31dfe7ab --- /dev/null +++ b/node_modules/caniuse-lite/data/features/input-datetime.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","132":"C"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB RC SC","1090":"cB dB eB fB","2052":"gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b","4100":"0 1 2 3 4 5 6 c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O","2052":"9 n o p q"},E:{"2":"7 I J E F G A B C K L TC BC UC VC WC XC CC zB 0B DC","4100":"H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"BC iC OC","260":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B 5C 6C 7C","514":"I 8C OC"},J:{"1":"A","2":"E"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"4100":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2052":"OD PD"}},B:1,C:"Date and time input types",D:true}; diff --git a/node_modules/caniuse-lite/data/features/input-email-tel-url.js b/node_modules/caniuse-lite/data/features/input-email-tel-url.js new file mode 100644 index 00000000..9735b4a6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/input-email-tel-url.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"I"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","2":"G"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I D 8C OC 9C AD","132":"5C 6C 7C"},J:{"1":"A","132":"E"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Email, telephone & URL input types",D:true}; diff --git a/node_modules/caniuse-lite/data/features/input-event.js b/node_modules/caniuse-lite/data/features/input-event.js new file mode 100644 index 00000000..0b2b92c7 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/input-event.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","2561":"A B","2692":"G"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2561":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"QC","1537":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB SC","1796":"4B RC"},D:{"1":"0 1 2 3 4 5 6 nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L","1025":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB","1537":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB"},E:{"1":"L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"7 I J TC BC","1025":"E F G A B C VC WC XC CC zB","1537":"UC","4097":"K 0B"},F:{"1":"bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","16":"G B C dC eC fC gC zB NC","260":"hC","1025":"9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB","1537":"8 H M N O n o"},G:{"1":"wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC","1025":"F mC nC oC pC qC rC sC tC","1537":"jC kC lC","4097":"uC vC"},H:{"2":"4C"},I:{"16":"5C 6C","1025":"D AD","1537":"4B I 7C 8C OC 9C"},J:{"1025":"A","1537":"E"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2561":"A B"},O:{"1":"1B"},P:{"1025":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","1537":"OD"}},B:1,C:"input event",D:true}; diff --git a/node_modules/caniuse-lite/data/features/input-file-accept.js b/node_modules/caniuse-lite/data/features/input-file-accept.js new file mode 100644 index 00000000..d6935589 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/input-file-accept.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","132":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB"},D:{"1":"0 1 2 3 4 5 6 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"I","16":"7 9 J E F o p q AB","132":"8 G A B C K L H M N O n"},E:{"1":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC","132":"J E F G A B VC WC XC CC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"2":"kC lC","132":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","514":"BC iC OC jC"},H:{"2":"4C"},I:{"2":"5C 6C 7C","260":"4B I 8C OC","514":"D 9C AD"},J:{"132":"A","260":"E"},K:{"2":"A B C zB NC 0B","514":"r"},L:{"260":"D"},M:{"2":"D"},N:{"514":"A","1028":"B"},O:{"2":"1B"},P:{"260":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"260":"DC"},R:{"260":"ND"},S:{"1":"OD PD"}},B:1,C:"accept attribute for file input",D:true}; diff --git a/node_modules/caniuse-lite/data/features/input-file-directory.js b/node_modules/caniuse-lite/data/features/input-file-directory.js new file mode 100644 index 00000000..c645276e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/input-file-directory.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K"},C:{"1":"0 1 2 3 4 5 6 ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB RC SC"},D:{"1":"0 1 2 3 4 5 6 FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB"},E:{"1":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B TC BC UC VC WC XC CC"},F:{"1":"8 9 N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C H M dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"Directory selection from file input",D:true}; diff --git a/node_modules/caniuse-lite/data/features/input-file-multiple.js b/node_modules/caniuse-lite/data/features/input-file-multiple.js new file mode 100644 index 00000000..d79df26c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/input-file-multiple.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC SC","2":"QC 4B RC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"I"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m gC zB NC hC 0B","2":"G dC eC fC"},G:{"1":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC"},H:{"130":"4C"},I:{"130":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"130":"A B C r zB NC 0B"},L:{"132":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"130":"1B"},P:{"130":"I","132":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"132":"DC"},R:{"132":"ND"},S:{"1":"PD","2":"OD"}},B:1,C:"Multiple file selection",D:true}; diff --git a/node_modules/caniuse-lite/data/features/input-inputmode.js b/node_modules/caniuse-lite/data/features/input-inputmode.js new file mode 100644 index 00000000..7407816e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/input-inputmode.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L H M RC SC","4":"8 N O n","194":"9 o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d"},D:{"1":"0 1 2 3 4 5 6 nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB","66":"fB gB hB 5B iB 6B jB kB lB mB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB dC eC fC gC zB NC hC 0B","66":"SB TB UB VB WB XB YB ZB aB bB"},G:{"1":"uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED"},Q:{"1":"DC"},R:{"1":"ND"},S:{"194":"OD PD"}},B:1,C:"inputmode attribute",D:true}; diff --git a/node_modules/caniuse-lite/data/features/input-minlength.js b/node_modules/caniuse-lite/data/features/input-minlength.js new file mode 100644 index 00000000..05216c61 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/input-minlength.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M"},C:{"1":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB RC SC"},D:{"1":"0 1 2 3 4 5 6 PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB dC eC fC gC zB NC hC 0B"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:1,C:"Minimum length attribute for input fields",D:true}; diff --git a/node_modules/caniuse-lite/data/features/input-number.js b/node_modules/caniuse-lite/data/features/input-number.js new file mode 100644 index 00000000..4e276d2c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/input-number.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","129":"A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","129":"C K","1025":"L H M N O"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB RC SC","513":"0 1 2 3 4 5 6 EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"388":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B 5C 6C 7C","388":"I D 8C OC 9C AD"},J:{"2":"E","388":"A"},K:{"1":"A B C zB NC 0B","388":"r"},L:{"388":"D"},M:{"641":"D"},N:{"388":"A B"},O:{"388":"1B"},P:{"388":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"388":"DC"},R:{"388":"ND"},S:{"513":"OD PD"}},B:1,C:"Number input type",D:true}; diff --git a/node_modules/caniuse-lite/data/features/input-pattern.js b/node_modules/caniuse-lite/data/features/input-pattern.js new file mode 100644 index 00000000..055f617a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/input-pattern.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","16":"7","388":"J E F G A UC VC WC XC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","2":"G"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC","388":"F jC kC lC mC nC oC pC"},H:{"2":"4C"},I:{"1":"D AD","2":"4B I 5C 6C 7C 8C OC 9C"},J:{"1":"A","2":"E"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"132":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Pattern attribute for input fields",D:true}; diff --git a/node_modules/caniuse-lite/data/features/input-placeholder.js b/node_modules/caniuse-lite/data/features/input-placeholder.js new file mode 100644 index 00000000..6c9ba779 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/input-placeholder.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","132":"I TC BC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m NC hC 0B","2":"G dC eC fC gC","132":"B zB"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B D 5C 6C 7C OC 9C AD","4":"I 8C"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"input placeholder attribute",D:true}; diff --git a/node_modules/caniuse-lite/data/features/input-range.js b/node_modules/caniuse-lite/data/features/input-range.js new file mode 100644 index 00000000..17f4c378 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/input-range.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 QC 4B I J E F G A B C K L H M N O n o p RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"2":"4C"},I:{"1":"D OC 9C AD","4":"4B I 5C 6C 7C 8C"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Range input type",D:true}; diff --git a/node_modules/caniuse-lite/data/features/input-search.js b/node_modules/caniuse-lite/data/features/input-search.js new file mode 100644 index 00000000..ea1c400c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/input-search.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","129":"A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","129":"C K L H M N O"},C:{"2":"QC 4B RC SC","129":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 9 I J E F G A B C K L o p q AB","129":"8 H M N O n"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"7 I TC BC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B","2":"G dC eC fC gC","16":"B zB NC"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC"},H:{"129":"4C"},I:{"1":"D 9C AD","16":"5C 6C","129":"4B I 7C 8C OC"},J:{"1":"E","129":"A"},K:{"1":"C r","2":"A","16":"B zB NC","129":"0B"},L:{"1":"D"},M:{"129":"D"},N:{"129":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"129":"OD PD"}},B:1,C:"Search input type",D:true}; diff --git a/node_modules/caniuse-lite/data/features/input-selection.js b/node_modules/caniuse-lite/data/features/input-selection.js new file mode 100644 index 00000000..ea6693b9 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/input-selection.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m gC zB NC hC 0B","16":"G dC eC fC"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC"},H:{"2":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Selection controls for input & textarea",D:true}; diff --git a/node_modules/caniuse-lite/data/features/insert-adjacent.js b/node_modules/caniuse-lite/data/features/insert-adjacent.js new file mode 100644 index 00000000..f7962136 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/insert-adjacent.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J E F G A B","16":"PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","16":"G"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Element.insertAdjacentElement() & Element.insertAdjacentText()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/insertadjacenthtml.js b/node_modules/caniuse-lite/data/features/insertadjacenthtml.js new file mode 100644 index 00000000..a1380522 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/insertadjacenthtml.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","16":"PC","132":"J E F G"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m eC fC gC zB NC hC 0B","16":"G dC"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC"},H:{"1":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"Element.insertAdjacentHTML()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/internationalization.js b/node_modules/caniuse-lite/data/features/internationalization.js new file mode 100644 index 00000000..8d8dbd27 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/internationalization.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F G A PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB RC SC"},D:{"1":"0 1 2 3 4 5 6 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O n o p q"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","2":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:6,C:"Internationalization API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js b/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js new file mode 100644 index 00000000..cc80bb86 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:7,C:"IntersectionObserver V2",D:true}; diff --git a/node_modules/caniuse-lite/data/features/intersectionobserver.js b/node_modules/caniuse-lite/data/features/intersectionobserver.js new file mode 100644 index 00000000..dadcf83c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/intersectionobserver.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"M N O","2":"C K L","260":"H","513":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB RC SC","194":"bB cB dB"},D:{"1":"hB 5B iB 6B jB kB lB","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB","260":"aB bB cB dB eB fB gB","513":"0 1 2 3 4 5 6 mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C TC BC UC VC WC XC CC zB"},F:{"1":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB dC eC fC gC zB NC hC 0B","260":"NB OB PB QB RB SB TB","513":"lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","513":"D"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","513":"r"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I","260":"BD CD"},Q:{"513":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"IntersectionObserver",D:true}; diff --git a/node_modules/caniuse-lite/data/features/intl-pluralrules.js b/node_modules/caniuse-lite/data/features/intl-pluralrules.js new file mode 100644 index 00000000..ef84c13c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/intl-pluralrules.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N","130":"O"},C:{"1":"0 1 2 3 4 5 6 hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB RC SC"},D:{"1":"0 1 2 3 4 5 6 kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB"},E:{"1":"K L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C TC BC UC VC WC XC CC zB 0B"},F:{"1":"ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB dC eC fC gC zB NC hC 0B"},G:{"1":"vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:6,C:"Intl.PluralRules API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/intrinsic-width.js b/node_modules/caniuse-lite/data/features/intrinsic-width.js new file mode 100644 index 00000000..64e8567a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/intrinsic-width.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","1025":"0 1 2 3 4 5 6 d e f g h i j k l m s t u v w x y z D","1537":"P Q R S T U V W X Y Z a b c"},C:{"2":"QC","932":"7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB RC SC","2308":"0 1 2 3 4 5 6 nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"7 8 I J E F G A B C K L H M N O n o","545":"9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB","1025":"0 1 2 3 4 5 6 d e f g h i j k l m s t u v w x y z D 8B 9B AC","1537":"VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c"},E:{"1":"2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC","516":"B C K L H zB 0B DC YC ZC EC FC 1B aC","548":"G A XC CC","676":"E F VC WC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","513":"JB","545":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB","1025":"e f g h i j k l m","1537":"IB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d"},G:{"1":"2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC","516":"zC 0C 1C EC FC 1B 2C","548":"nC oC pC qC rC sC tC uC vC wC xC yC","676":"F lC mC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC","545":"9C AD","1025":"D"},J:{"2":"E","545":"A"},K:{"2":"A B C zB NC 0B","1025":"r"},L:{"1025":"D"},M:{"2308":"D"},N:{"2":"A B"},O:{"1537":"1B"},P:{"545":"I","1025":"n o p q 3B LD MD","1537":"BD CD DD ED FD CC GD HD ID JD KD 2B"},Q:{"1537":"DC"},R:{"1537":"ND"},S:{"932":"OD","2308":"PD"}},B:5,C:"Intrinsic & Extrinsic Sizing",D:true}; diff --git a/node_modules/caniuse-lite/data/features/jpeg2000.js b/node_modules/caniuse-lite/data/features/jpeg2000.js new file mode 100644 index 00000000..c7736a4c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/jpeg2000.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","129":"7 UC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:6,C:"JPEG 2000 image format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/jpegxl.js b/node_modules/caniuse-lite/data/features/jpegxl.js new file mode 100644 index 00000000..09cc5707 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/jpegxl.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z y z D","578":"a b c d e f g h i j k l m s t u v w x"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y RC SC","322":"0 1 2 3 4 5 6 Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z y z D 8B 9B AC","194":"a b c d e f g h i j k l m s t u v w x"},E:{"1":"3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB dC eC fC gC zB NC hC 0B","194":"xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:6,C:"JPEG XL image format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/jpegxr.js b/node_modules/caniuse-lite/data/features/jpegxr.js new file mode 100644 index 00000000..a18eae82 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/jpegxr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"C K L H M N O","2":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"1":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:6,C:"JPEG XR image format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js b/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js new file mode 100644 index 00000000..4d668764 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB RC SC"},D:{"1":"0 1 2 3 4 5 6 jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B"},E:{"1":"JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC"},F:{"1":"YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB dC eC fC gC zB NC hC 0B"},G:{"1":"JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:6,C:"Lookbehind in JS regular expressions",D:true}; diff --git a/node_modules/caniuse-lite/data/features/json.js b/node_modules/caniuse-lite/data/features/json.js new file mode 100644 index 00000000..8ac301c5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/json.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E PC","129":"F"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC 4B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m fC gC zB NC hC 0B","2":"G dC eC"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"JSON parsing",D:true}; diff --git a/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js b/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js new file mode 100644 index 00000000..df4dc45b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H","132":"M N O"},C:{"1":"0 1 2 3 4 5 6 bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB RC SC"},D:{"1":"0 1 2 3 4 5 6 iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB","132":"gB hB 5B"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC","132":"CC"},F:{"1":"WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB dC eC fC gC zB NC hC 0B","132":"TB UB VB"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC","132":"qC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD","132":"DD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","132":"OD"}},B:5,C:"CSS justify-content: space-evenly",D:true}; diff --git a/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js b/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js new file mode 100644 index 00000000..c2cbee99 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"5C 6C 7C","132":"4B I 8C OC"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:7,C:"High-quality kerning pairs & ligatures",D:true}; diff --git a/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js b/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js new file mode 100644 index 00000000..ce66ad77 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","16":"QC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B dC eC fC gC zB NC hC","16":"C"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC"},H:{"2":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"r 0B","2":"A B zB NC","16":"C"},L:{"1":"D"},M:{"130":"D"},N:{"130":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:7,C:"KeyboardEvent.charCode",D:true}; diff --git a/node_modules/caniuse-lite/data/features/keyboardevent-code.js b/node_modules/caniuse-lite/data/features/keyboardevent-code.js new file mode 100644 index 00000000..6dead60c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/keyboardevent-code.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB RC SC"},D:{"1":"0 1 2 3 4 5 6 XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","194":"RB SB TB UB VB WB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB dC eC fC gC zB NC hC 0B","194":"EB FB GB HB IB JB"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"194":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I","194":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"194":"ND"},S:{"1":"OD PD"}},B:5,C:"KeyboardEvent.code",D:true}; diff --git a/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js b/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js new file mode 100644 index 00000000..95fe4393 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L RC SC"},D:{"1":"0 1 2 3 4 5 6 FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"8 9 N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B H M dC eC fC gC zB NC hC","16":"C"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"2":"E A"},K:{"1":"r 0B","2":"A B zB NC","16":"C"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"KeyboardEvent.getModifierState()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/keyboardevent-key.js b/node_modules/caniuse-lite/data/features/keyboardevent-key.js new file mode 100644 index 00000000..27edcb4a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/keyboardevent-key.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","260":"G A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","260":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 QC 4B I J E F G A B C K L H M N O n o p RC SC","132":"9 q AB BB CB DB"},D:{"1":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"8 9 G B H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB dC eC fC gC zB NC hC","16":"C"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC"},H:{"1":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r 0B","2":"A B zB NC","16":"C"},L:{"1":"D"},M:{"1":"D"},N:{"260":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"KeyboardEvent.key",D:true}; diff --git a/node_modules/caniuse-lite/data/features/keyboardevent-location.js b/node_modules/caniuse-lite/data/features/keyboardevent-location.js new file mode 100644 index 00000000..49e2ddfc --- /dev/null +++ b/node_modules/caniuse-lite/data/features/keyboardevent-location.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L RC SC"},D:{"1":"0 1 2 3 4 5 6 FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"J TC BC","132":"7 I UC"},F:{"1":"8 9 N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B dC eC fC gC zB NC hC","16":"C","132":"H M"},G:{"1":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC","132":"jC kC lC"},H:{"2":"4C"},I:{"1":"D 9C AD","16":"5C 6C","132":"4B I 7C 8C OC"},J:{"132":"E A"},K:{"1":"r 0B","2":"A B zB NC","16":"C"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"KeyboardEvent.location",D:true}; diff --git a/node_modules/caniuse-lite/data/features/keyboardevent-which.js b/node_modules/caniuse-lite/data/features/keyboardevent-which.js new file mode 100644 index 00000000..c53c432b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/keyboardevent-which.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","16":"7"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m eC fC gC zB NC hC 0B","16":"G dC"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC"},H:{"2":"4C"},I:{"1":"4B I D 7C 8C OC","16":"5C 6C","132":"9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"132":"D"},M:{"132":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"2":"I","132":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"132":"ND"},S:{"1":"OD PD"}},B:7,C:"KeyboardEvent.which",D:true}; diff --git a/node_modules/caniuse-lite/data/features/lazyload.js b/node_modules/caniuse-lite/data/features/lazyload.js new file mode 100644 index 00000000..01448a2b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/lazyload.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F G A PC"},B:{"1":"C K L H M N O","2":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"1":"B","2":"A"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"Resource Hints: Lazyload",D:true}; diff --git a/node_modules/caniuse-lite/data/features/let.js b/node_modules/caniuse-lite/data/features/let.js new file mode 100644 index 00000000..ff41ff6e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/let.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","2052":"B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","194":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB RC SC"},D:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K L H M N O","322":"8 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","516":"QB RB SB TB UB VB WB XB"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC","1028":"A CC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","322":"8 9 H M N O n o p q AB BB CB","516":"DB EB FB GB HB IB JB KB"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC","1028":"pC qC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","2":"A"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","516":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"let",D:true}; diff --git a/node_modules/caniuse-lite/data/features/link-icon-png.js b/node_modules/caniuse-lite/data/features/link-icon-png.js new file mode 100644 index 00000000..849b452f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/link-icon-png.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F G A PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","130":"F BC iC OC jC kC lC mC nC oC pC qC rC sC"},H:{"130":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E","130":"A"},K:{"1":"r","130":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"130":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"PNG favicons",D:true}; diff --git a/node_modules/caniuse-lite/data/features/link-icon-svg.js b/node_modules/caniuse-lite/data/features/link-icon-svg.js new file mode 100644 index 00000000..623e05be --- /dev/null +++ b/node_modules/caniuse-lite/data/features/link-icon-svg.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O P","1537":"0 1 2 3 4 5 6 Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"QC 4B RC SC","260":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","513":"0 1 2 3 4 5 6 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P","1537":"0 1 2 3 4 5 6 Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB dB eB fB gB hB iB jB kB lB mB nB dC eC fC gC zB NC hC 0B","1537":"oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","130":"F BC iC OC jC kC lC mC nC oC pC qC rC sC"},H:{"130":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E","130":"A"},K:{"130":"A B C zB NC 0B","1537":"r"},L:{"1537":"D"},M:{"2":"D"},N:{"130":"A B"},O:{"2":"1B"},P:{"2":"I BD CD DD ED FD CC GD HD","1537":"n o p q ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"1537":"ND"},S:{"513":"OD PD"}},B:1,C:"SVG favicons",D:true}; diff --git a/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js b/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js new file mode 100644 index 00000000..3203c635 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F PC","132":"G"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"QC 4B","260":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"16":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"16":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"16":"E A"},K:{"1":"r","16":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","2":"A"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","16":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"Resource Hints: dns-prefetch",D:true}; diff --git a/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js b/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js new file mode 100644 index 00000000..fcc68c6b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"3 4 5 6 D 8B 9B AC","2":"0 1 2 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z RC SC"},D:{"1":"0 1 2 3 4 5 6 nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB"},E:{"1":"3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC"},F:{"1":"cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB dC eC fC gC zB NC hC 0B"},G:{"1":"3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:1,C:"Resource Hints: modulepreload",D:true}; diff --git a/node_modules/caniuse-lite/data/features/link-rel-preconnect.js b/node_modules/caniuse-lite/data/features/link-rel-preconnect.js new file mode 100644 index 00000000..1b90c60f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/link-rel-preconnect.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L","260":"H M N O"},C:{"1":"3 4 5 6 PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB RC SC","129":"OB","514":"0 1 2 sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},E:{"1":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B TC BC UC VC WC XC CC"},F:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB dC eC fC gC zB NC hC 0B"},G:{"1":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"Resource Hints: preconnect",D:true}; diff --git a/node_modules/caniuse-lite/data/features/link-rel-prefetch.js b/node_modules/caniuse-lite/data/features/link-rel-prefetch.js new file mode 100644 index 00000000..4e3eb5f8 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/link-rel-prefetch.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F G A PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E"},E:{"2":"7 I J E F G A B C K TC BC UC VC WC XC CC zB 0B","194":"L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC","194":"yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"I D 9C AD","2":"4B 5C 6C 7C 8C OC"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","2":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"Resource Hints: prefetch",D:true}; diff --git a/node_modules/caniuse-lite/data/features/link-rel-preload.js b/node_modules/caniuse-lite/data/features/link-rel-preload.js new file mode 100644 index 00000000..dc54921b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/link-rel-preload.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M","1028":"N O"},C:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB RC SC","132":"fB","578":"gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T"},D:{"1":"0 1 2 3 4 5 6 ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB"},E:{"1":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC CC","322":"B"},F:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB dC eC fC gC zB NC hC 0B"},G:{"1":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC","322":"rC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:4,C:"Resource Hints: preload",D:true}; diff --git a/node_modules/caniuse-lite/data/features/link-rel-prerender.js b/node_modules/caniuse-lite/data/features/link-rel-prerender.js new file mode 100644 index 00000000..2d81b651 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/link-rel-prerender.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F G A PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"1":"B","2":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:5,C:"Resource Hints: prerender",D:true}; diff --git a/node_modules/caniuse-lite/data/features/loading-lazy-attr.js b/node_modules/caniuse-lite/data/features/loading-lazy-attr.js new file mode 100644 index 00000000..88a9e27e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/loading-lazy-attr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB RC SC","132":"0 1 2 3 4 5 6 vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B"},D:{"1":"0 1 2 3 4 5 6 xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB","66":"vB wB"},E:{"1":"JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K TC BC UC VC WC XC CC zB 0B","322":"L H DC YC ZC EC","580":"FC 1B aC 2B GC HC IC"},F:{"1":"lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB dC eC fC gC zB NC hC 0B","66":"jB kB"},G:{"1":"JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC","322":"yC zC 0C 1C EC","580":"FC 1B 2C 2B GC HC IC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"132":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD","132":"PD"}},B:1,C:"Lazy loading via attribute for images & iframes",D:true}; diff --git a/node_modules/caniuse-lite/data/features/localecompare.js b/node_modules/caniuse-lite/data/features/localecompare.js new file mode 100644 index 00000000..c2c1654b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/localecompare.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","16":"PC","132":"J E F G A"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB RC SC"},D:{"1":"0 1 2 3 4 5 6 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 8 I J E F G A B C K L H M N O n o p q"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","132":"7 I J E F G TC BC UC VC WC XC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","16":"G B C dC eC fC gC zB NC hC","132":"0B"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","132":"F BC iC OC jC kC lC mC nC oC"},H:{"132":"4C"},I:{"1":"D 9C AD","132":"4B I 5C 6C 7C 8C OC"},J:{"132":"E A"},K:{"1":"r","16":"A B C zB NC","132":"0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","132":"A"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","132":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","4":"OD"}},B:6,C:"localeCompare()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/magnetometer.js b/node_modules/caniuse-lite/data/features/magnetometer.js new file mode 100644 index 00000000..1d9c5bed --- /dev/null +++ b/node_modules/caniuse-lite/data/features/magnetometer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB","194":"hB 5B iB 6B jB kB lB mB nB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"194":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:4,C:"Magnetometer",D:true}; diff --git a/node_modules/caniuse-lite/data/features/matchesselector.js b/node_modules/caniuse-lite/data/features/matchesselector.js new file mode 100644 index 00000000..ce5e51a9 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/matchesselector.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","36":"G A B"},B:{"1":"0 1 2 3 4 5 6 H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","36":"C K L"},C:{"1":"0 1 2 3 4 5 6 JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC","36":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB SC"},D:{"1":"0 1 2 3 4 5 6 JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","36":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB"},E:{"1":"F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","36":"7 J E UC VC"},F:{"1":"9 o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B dC eC fC gC zB","36":"8 C H M N O n NC hC 0B"},G:{"1":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC","36":"iC OC jC kC lC"},H:{"2":"4C"},I:{"1":"D","2":"5C","36":"4B I 6C 7C 8C OC 9C AD"},J:{"36":"E A"},K:{"1":"r","2":"A B","36":"C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"36":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","36":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"matches() DOM method",D:true}; diff --git a/node_modules/caniuse-lite/data/features/matchmedia.js b/node_modules/caniuse-lite/data/features/matchmedia.js new file mode 100644 index 00000000..6f0a7cae --- /dev/null +++ b/node_modules/caniuse-lite/data/features/matchmedia.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B C dC eC fC gC zB NC hC"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"1":"4C"},I:{"1":"4B I D 8C OC 9C AD","2":"5C 6C 7C"},J:{"1":"A","2":"E"},K:{"1":"r 0B","2":"A B C zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"matchMedia",D:true}; diff --git a/node_modules/caniuse-lite/data/features/mathml.js b/node_modules/caniuse-lite/data/features/mathml.js new file mode 100644 index 00000000..98e03b7a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mathml.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"G A B PC","8":"J E F"},B:{"2":"C K L H M N O","8":"P Q R S T U V W X Y Z a b c d e f","584":"g h i j k l m s t u v w","1025":"0 1 2 3 4 5 6 x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","129":"QC 4B RC SC"},D:{"1":"9","8":"7 8 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f","584":"g h i j k l m s t u v w","1025":"0 1 2 3 4 5 6 x y z D 8B 9B AC"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","260":"7 I J E F G TC BC UC VC WC XC"},F:{"2":"G","8":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B","584":"S T U V W X Y Z a b c d","1025":"e f g h i j k l m","2052":"B C dC eC fC gC zB NC hC 0B"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","8":"BC iC OC"},H:{"8":"4C"},I:{"8":"4B I 5C 6C 7C 8C OC 9C AD","1025":"D"},J:{"1":"A","8":"E"},K:{"8":"A B C r zB NC 0B"},L:{"1025":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"8":"1B"},P:{"1":"o p q","8":"I n BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"8":"DC"},R:{"8":"ND"},S:{"1":"OD PD"}},B:2,C:"MathML",D:true}; diff --git a/node_modules/caniuse-lite/data/features/maxlength.js b/node_modules/caniuse-lite/data/features/maxlength.js new file mode 100644 index 00000000..3ab5793c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/maxlength.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","16":"PC","900":"J E F G"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","1025":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","900":"QC 4B RC SC","1025":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"7 TC","900":"I BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","16":"G","132":"B C dC eC fC gC zB NC hC 0B"},G:{"1":"iC OC jC kC lC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC","2052":"F mC"},H:{"132":"4C"},I:{"1":"4B I 7C 8C OC 9C AD","16":"5C 6C","4097":"D"},J:{"1":"E A"},K:{"132":"A B C zB NC 0B","4097":"r"},L:{"4097":"D"},M:{"4097":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"4097":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1025":"OD PD"}},B:1,C:"maxlength attribute for input and textarea elements",D:true}; diff --git a/node_modules/caniuse-lite/data/features/mdn-css-backdrop-pseudo-element.js b/node_modules/caniuse-lite/data/features/mdn-css-backdrop-pseudo-element.js new file mode 100644 index 00000000..a61982dd --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mdn-css-backdrop-pseudo-element.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB","33":"HB IB JB KB LB"},L:{"1":"D"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","33":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB RC SC"},M:{"1":"D"},A:{"2":"J E F G A PC","33":"B"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C H M N O dC eC fC gC zB NC hC 0B","33":"8 n o p q"},K:{"1":"r","2":"A B C zB NC 0B"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC cC"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC","33":"9C AD"}},B:6,C:"CSS ::backdrop pseudo-element",D:undefined}; diff --git a/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js b/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js new file mode 100644 index 00000000..766f96bd --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},L:{"1":"D"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L H M RC SC","33":"8 9 N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB"},M:{"1":"D"},A:{"2":"J E F G A B PC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB dC eC fC gC zB NC hC 0B"},K:{"1":"r","2":"A B C zB NC 0B"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC","2":"7 I J TC BC UC VC cC","33":"E F G A WC XC CC"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC","33":"F lC mC nC oC pC qC"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"}},B:6,C:"isolate-override from unicode-bidi",D:undefined}; diff --git a/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js b/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js new file mode 100644 index 00000000..b91296e3 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K L H","33":"8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},L:{"1":"D"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G RC SC","33":"8 9 A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB"},M:{"1":"D"},A:{"2":"J E F G A B PC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB"},K:{"1":"r","2":"A B C zB NC 0B"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC","2":"7 I TC BC UC cC","33":"J E F G A VC WC XC CC"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC","33":"F kC lC mC nC oC pC qC"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"}},B:6,C:"isolate from unicode-bidi",D:undefined}; diff --git a/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js b/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js new file mode 100644 index 00000000..c3da2334 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},L:{"1":"D"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G RC SC","33":"8 9 A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB"},M:{"1":"D"},A:{"2":"J E F G A B PC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB dC eC fC gC zB NC hC 0B"},K:{"1":"r","2":"A B C zB NC 0B"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC","2":"7 I TC BC UC cC","33":"J E F G A VC WC XC CC"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC","33":"F kC lC mC nC oC pC qC"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"}},B:6,C:"plaintext from unicode-bidi",D:undefined}; diff --git a/node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js b/node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js new file mode 100644 index 00000000..c128f0c3 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB"},L:{"1":"D"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I RC SC","33":"8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB"},M:{"1":"D"},A:{"2":"J E F G A B PC"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB dC eC fC gC zB NC hC 0B"},K:{"1":"r","2":"A B C zB NC 0B"},E:{"1":"K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC","2":"7 I J E TC BC UC VC WC cC","33":"F G A B C XC CC zB"},G:{"1":"uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC","33":"F mC nC oC pC qC rC sC tC"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"}},B:6,C:"text-decoration-color property",D:undefined}; diff --git a/node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js b/node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js new file mode 100644 index 00000000..51f928ed --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB"},L:{"1":"D"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I RC SC","33":"8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB"},M:{"1":"D"},A:{"2":"J E F G A B PC"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB dC eC fC gC zB NC hC 0B"},K:{"1":"r","2":"A B C zB NC 0B"},E:{"1":"K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC","2":"7 I J E TC BC UC VC WC cC","33":"F G A B C XC CC zB"},G:{"1":"uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC","33":"F mC nC oC pC qC rC sC tC"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"}},B:6,C:"text-decoration-line property",D:undefined}; diff --git a/node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js b/node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js new file mode 100644 index 00000000..68504b6a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB"},L:{"1":"D"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I RC SC"},M:{"1":"D"},A:{"2":"J E F G A B PC"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB dC eC fC gC zB NC hC 0B"},K:{"1":"r","2":"A B C zB NC 0B"},E:{"2":"7 I J E TC BC UC VC WC cC","33":"F G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC"},G:{"2":"BC iC OC jC kC lC","33":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"}},B:6,C:"text-decoration shorthand property",D:undefined}; diff --git a/node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js b/node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js new file mode 100644 index 00000000..119edbe5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB"},L:{"1":"D"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I RC SC","33":"8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB"},M:{"1":"D"},A:{"2":"J E F G A B PC"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB dC eC fC gC zB NC hC 0B"},K:{"1":"r","2":"A B C zB NC 0B"},E:{"1":"K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC","2":"7 I J E TC BC UC VC WC cC","33":"F G A B C XC CC zB"},G:{"1":"uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC","33":"F mC nC oC pC qC rC sC tC"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"}},B:6,C:"text-decoration-style property",D:undefined}; diff --git a/node_modules/caniuse-lite/data/features/media-fragments.js b/node_modules/caniuse-lite/data/features/media-fragments.js new file mode 100644 index 00000000..ae7b755e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/media-fragments.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","132":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB RC SC","132":"0 1 2 3 4 5 6 JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"7 I J E F G A B C K L H M N","132":"0 1 2 3 4 5 6 8 9 O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I TC BC UC","132":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","132":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"BC iC OC jC kC lC","132":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC","132":"D 9C AD"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","132":"r"},L:{"132":"D"},M:{"132":"D"},N:{"132":"A B"},O:{"132":"1B"},P:{"2":"I BD","132":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"132":"DC"},R:{"132":"ND"},S:{"132":"OD PD"}},B:2,C:"Media Fragments",D:true}; diff --git a/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js b/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js new file mode 100644 index 00000000..1ed383a0 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB RC SC","260":"0 1 2 3 4 5 6 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB","324":"aB bB cB dB eB fB gB hB 5B iB 6B"},E:{"2":"7 I J E F G A TC BC UC VC WC XC CC","132":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB dC eC fC gC zB NC hC 0B","324":"LB MB NB OB PB QB RB SB TB UB VB WB"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"260":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I","132":"BD CD DD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"260":"OD PD"}},B:5,C:"Media Capture from DOM Elements API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/mediarecorder.js b/node_modules/caniuse-lite/data/features/mediarecorder.js new file mode 100644 index 00000000..451cf591 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mediarecorder.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB RC SC"},D:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB","194":"WB XB"},E:{"1":"H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C TC BC UC VC WC XC CC zB","322":"K L 0B DC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB dC eC fC gC zB NC hC 0B","194":"JB KB"},G:{"1":"0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC","578":"tC uC vC wC xC yC zC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"MediaRecorder API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/mediasource.js b/node_modules/caniuse-lite/data/features/mediasource.js new file mode 100644 index 00000000..4b486bec --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mediasource.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","132":"B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q RC SC","66":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},D:{"1":"0 1 2 3 4 5 6 GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K L H M","33":"9 q AB BB CB DB EB FB","66":"8 N O n o p"},E:{"1":"F G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E TC BC UC VC WC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC","260":"vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D AD","2":"4B I 5C 6C 7C 8C OC 9C"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","2":"A"},O:{"1":"1B"},P:{"1":"n o p q FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"Media Source Extensions",D:true}; diff --git a/node_modules/caniuse-lite/data/features/menu.js b/node_modules/caniuse-lite/data/features/menu.js new file mode 100644 index 00000000..d72cdb52 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/menu.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 QC 4B I J E RC SC","132":"8 9 F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T","450":"0 1 2 3 4 5 6 U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","66":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","66":"KB LB MB NB OB PB QB RB SB TB UB VB"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"450":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"Context menu item (menuitem element)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/meta-theme-color.js b/node_modules/caniuse-lite/data/features/meta-theme-color.js new file mode 100644 index 00000000..cf259368 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/meta-theme-color.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB","132":"0 1 2 3 4 5 6 r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","258":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB"},E:{"1":"H ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L TC BC UC VC WC XC CC zB 0B DC YC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"513":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I","16":"BD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:1,C:"theme-color Meta Tag",D:true}; diff --git a/node_modules/caniuse-lite/data/features/meter.js b/node_modules/caniuse-lite/data/features/meter.js new file mode 100644 index 00000000..9f3878ea --- /dev/null +++ b/node_modules/caniuse-lite/data/features/meter.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C"},C:{"1":"0 1 2 3 4 5 6 8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L H RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m zB NC hC 0B","2":"G dC eC fC gC"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC"},H:{"1":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"meter element",D:true}; diff --git a/node_modules/caniuse-lite/data/features/midi.js b/node_modules/caniuse-lite/data/features/midi.js new file mode 100644 index 00000000..51fd5948 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/midi.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v RC SC"},D:{"1":"0 1 2 3 4 5 6 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:5,C:"Web MIDI API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/minmaxwh.js b/node_modules/caniuse-lite/data/features/minmaxwh.js new file mode 100644 index 00000000..1768969f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/minmaxwh.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","8":"J PC","129":"E","257":"F"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS min/max-width/height",D:true}; diff --git a/node_modules/caniuse-lite/data/features/mp3.js b/node_modules/caniuse-lite/data/features/mp3.js new file mode 100644 index 00000000..64a30490 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mp3.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B","132":"7 8 I J E F G A B C K L H M N O n o RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC"},H:{"2":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","2":"5C 6C"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"MP3 audio format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/mpeg-dash.js b/node_modules/caniuse-lite/data/features/mpeg-dash.js new file mode 100644 index 00000000..1455efa7 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mpeg-dash.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"C K L H M N O","2":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","386":"o p"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:6,C:"Dynamic Adaptive Streaming over HTTP (MPEG-DASH)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/mpeg4.js b/node_modules/caniuse-lite/data/features/mpeg4.js new file mode 100644 index 00000000..481e2314 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mpeg4.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 QC 4B I J E F G A B C K L H M N O n RC SC","4":"9 o p q AB BB CB DB EB FB GB HB IB JB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D 9C AD","4":"4B I 5C 6C 8C OC","132":"7C"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"260":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"MPEG-4/H.264 video format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/multibackgrounds.js b/node_modules/caniuse-lite/data/features/multibackgrounds.js new file mode 100644 index 00000000..ec329648 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/multibackgrounds.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC SC","2":"QC 4B RC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m fC gC zB NC hC 0B","2":"G dC eC"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS3 Multiple backgrounds",D:true}; diff --git a/node_modules/caniuse-lite/data/features/multicolumn.js b/node_modules/caniuse-lite/data/features/multicolumn.js new file mode 100644 index 00000000..2bcd1639 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/multicolumn.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"C K L H M N O","516":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"132":"bB cB dB eB fB gB hB 5B iB 6B jB kB lB","164":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB RC SC","516":"mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a","1028":"0 1 2 3 4 5 6 b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"420":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","516":"0 1 2 3 4 5 6 ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","132":"G XC","164":"E F WC","420":"7 I J TC BC UC VC"},F:{"1":"C zB NC hC 0B","2":"G B dC eC fC gC","420":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB","516":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","132":"nC oC","164":"F lC mC","420":"BC iC OC jC kC"},H:{"1":"4C"},I:{"420":"4B I 5C 6C 7C 8C OC 9C AD","516":"D"},J:{"420":"E A"},K:{"1":"C zB NC 0B","2":"A B","516":"r"},L:{"516":"D"},M:{"1028":"D"},N:{"1":"A B"},O:{"516":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","420":"I"},Q:{"516":"DC"},R:{"516":"ND"},S:{"164":"OD PD"}},B:4,C:"CSS3 Multiple column layout",D:true}; diff --git a/node_modules/caniuse-lite/data/features/mutation-events.js b/node_modules/caniuse-lite/data/features/mutation-events.js new file mode 100644 index 00000000..c251bc18 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mutation-events.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","260":"G A B"},B:{"132":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","260":"C K L H M N O"},C:{"2":"7 QC 4B I RC SC","260":"0 1 2 3 4 5 6 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"16":"7 I J E F G A B C K L","132":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"16":"TC BC","132":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"C hC 0B","2":"G dC eC fC gC","16":"B zB NC","132":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"16":"BC iC","132":"F OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"16":"5C 6C","132":"4B I D 7C 8C OC 9C AD"},J:{"132":"E A"},K:{"1":"C 0B","2":"A","16":"B zB NC","132":"r"},L:{"132":"D"},M:{"260":"D"},N:{"260":"A B"},O:{"132":"1B"},P:{"132":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"132":"DC"},R:{"132":"ND"},S:{"260":"OD PD"}},B:5,C:"Mutation events",D:true}; diff --git a/node_modules/caniuse-lite/data/features/mutationobserver.js b/node_modules/caniuse-lite/data/features/mutationobserver.js new file mode 100644 index 00000000..cd141491 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/mutationobserver.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F PC","8":"G A"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K RC SC"},D:{"1":"0 1 2 3 4 5 6 CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K L H M N","33":"8 9 O n o p q AB BB"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC","33":"J"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC","33":"kC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B 5C 6C 7C","8":"I 8C OC"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","8":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Mutation Observer",D:true}; diff --git a/node_modules/caniuse-lite/data/features/namevalue-storage.js b/node_modules/caniuse-lite/data/features/namevalue-storage.js new file mode 100644 index 00000000..905825f3 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/namevalue-storage.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F G A B","2":"PC","8":"J E"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","4":"QC 4B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m fC gC zB NC hC 0B","2":"G dC eC"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Web Storage - name/value pairs",D:true}; diff --git a/node_modules/caniuse-lite/data/features/native-filesystem-api.js b/node_modules/caniuse-lite/data/features/native-filesystem-api.js new file mode 100644 index 00000000..d1807e9e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/native-filesystem-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","194":"P Q R S T U","260":"0 1 2 3 4 5 6 V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y RC SC","516":"0 1 2 3 4 5 6 z D 8B 9B AC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r","194":"uB vB wB xB yB P Q R S T U","260":"0 1 2 3 4 5 6 V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC","516":"EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB dC eC fC gC zB NC hC 0B","194":"jB kB lB mB nB oB pB qB rB sB","260":"tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C","516":"EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","516":"D"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"516":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"File System Access API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/nav-timing.js b/node_modules/caniuse-lite/data/features/nav-timing.js new file mode 100644 index 00000000..e8f1029b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/nav-timing.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I","33":"J E F G A B C"},E:{"1":"F G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E TC BC UC VC WC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"I D 8C OC 9C AD","2":"4B 5C 6C 7C"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"Navigation Timing API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/netinfo.js b/node_modules/caniuse-lite/data/features/netinfo.js new file mode 100644 index 00000000..2a736b21 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/netinfo.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","1028":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB","1028":"0 1 2 3 4 5 6 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB dC eC fC gC zB NC hC 0B","1028":"XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"5C 9C AD","132":"4B I 6C 7C 8C OC"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","132":"I","516":"BD CD DD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"PD","260":"OD"}},B:7,C:"Network Information API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/notifications.js b/node_modules/caniuse-lite/data/features/notifications.js new file mode 100644 index 00000000..78d5a4a4 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/notifications.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K"},C:{"1":"0 1 2 3 4 5 6 9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 QC 4B I J E F G A B C K L H M N O n o RC SC"},D:{"1":"0 1 2 3 4 5 6 9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"I","36":"7 8 J E F G A B C K L H M N O n o"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC","516":"JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC","36":"D 9C AD"},J:{"1":"A","2":"E"},K:{"2":"A B C zB NC 0B","36":"r"},L:{"257":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"36":"I","130":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"130":"ND"},S:{"1":"OD PD"}},B:1,C:"Web Notifications",D:true}; diff --git a/node_modules/caniuse-lite/data/features/object-entries.js b/node_modules/caniuse-lite/data/features/object-entries.js new file mode 100644 index 00000000..cb0dfec1 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/object-entries.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K"},C:{"1":"0 1 2 3 4 5 6 WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB RC SC"},D:{"1":"0 1 2 3 4 5 6 dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB dC eC fC gC zB NC hC 0B"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E","16":"A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Object.entries",D:true}; diff --git a/node_modules/caniuse-lite/data/features/object-fit.js b/node_modules/caniuse-lite/data/features/object-fit.js new file mode 100644 index 00000000..655f3f1e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/object-fit.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H","260":"M N O"},C:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB RC SC"},D:{"1":"0 1 2 3 4 5 6 HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E TC BC UC VC","132":"F G WC XC"},F:{"1":"8 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G H M N O dC eC fC","33":"B C gC zB NC hC 0B"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC","132":"F mC nC oC"},H:{"33":"4C"},I:{"1":"D AD","2":"4B I 5C 6C 7C 8C OC 9C"},J:{"2":"E A"},K:{"1":"r","2":"A","33":"B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS3 object-fit/object-position",D:true}; diff --git a/node_modules/caniuse-lite/data/features/object-observe.js b/node_modules/caniuse-lite/data/features/object-observe.js new file mode 100644 index 00000000..e2b0fee7 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/object-observe.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB","2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"9 q AB BB CB DB EB FB GB HB IB JB KB LB","2":"8 G B C H M N O n o p MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"I","2":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"Object.observe data binding",D:true}; diff --git a/node_modules/caniuse-lite/data/features/object-values.js b/node_modules/caniuse-lite/data/features/object-values.js new file mode 100644 index 00000000..57c4a19b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/object-values.js @@ -0,0 +1 @@ +module.exports={A:{A:{"8":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K"},C:{"1":"0 1 2 3 4 5 6 WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB RC SC"},D:{"1":"0 1 2 3 4 5 6 dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","8":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","8":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB dC eC fC gC zB NC hC 0B"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","8":"F BC iC OC jC kC lC mC nC oC pC"},H:{"8":"4C"},I:{"1":"D","8":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"8":"E A"},K:{"1":"r","8":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"8":"A B"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","8":"I BD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Object.values method",D:true}; diff --git a/node_modules/caniuse-lite/data/features/objectrtc.js b/node_modules/caniuse-lite/data/features/objectrtc.js new file mode 100644 index 00000000..8c29ad53 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/objectrtc.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"K L H M N O","2":"0 1 2 3 4 5 6 C P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:6,C:"Object RTC (ORTC) API for WebRTC",D:true}; diff --git a/node_modules/caniuse-lite/data/features/offline-apps.js b/node_modules/caniuse-lite/data/features/offline-apps.js new file mode 100644 index 00000000..0692ac93 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/offline-apps.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"G PC","8":"J E F"},B:{"1":"C K L H M N O P Q R S T","2":"0 1 2 3 4 5 6 U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S RC SC","2":"0 1 2 3 4 5 6 T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","4":"4B","8":"QC"},D:{"1":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T","2":"0 1 2 3 4 5 6 U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","8":"TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB gC zB NC hC 0B","2":"G r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC","8":"eC fC"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I 5C 6C 7C 8C OC 9C AD","2":"D"},J:{"1":"E A"},K:{"1":"B C zB NC 0B","2":"A r"},L:{"2":"D"},M:{"2":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"2":"ND"},S:{"1":"OD","2":"PD"}},B:7,C:"Offline web applications",D:true}; diff --git a/node_modules/caniuse-lite/data/features/offscreencanvas.js b/node_modules/caniuse-lite/data/features/offscreencanvas.js new file mode 100644 index 00000000..e85bdff0 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/offscreencanvas.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB RC SC","194":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s"},D:{"1":"0 1 2 3 4 5 6 qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB","322":"hB 5B iB 6B jB kB lB mB nB oB pB"},E:{"1":"3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC","516":"HC IC JC KC bC"},F:{"1":"lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB dC eC fC gC zB NC hC 0B","322":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB"},G:{"1":"3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC","516":"HC IC JC KC 3C"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED FD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"194":"OD PD"}},B:1,C:"OffscreenCanvas",D:true}; diff --git a/node_modules/caniuse-lite/data/features/ogg-vorbis.js b/node_modules/caniuse-lite/data/features/ogg-vorbis.js new file mode 100644 index 00000000..d899cff1 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/ogg-vorbis.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC 4B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L TC BC UC VC WC XC CC zB 0B DC","132":"H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m fC gC zB NC hC 0B","2":"G dC eC"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"A","2":"E"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Ogg Vorbis audio format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/ogv.js b/node_modules/caniuse-lite/data/features/ogv.js new file mode 100644 index 00000000..fc99f4fc --- /dev/null +++ b/node_modules/caniuse-lite/data/features/ogv.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","8":"G A B"},B:{"1":"0 1 2 3 4 5 6 N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","8":"C K L H M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC 4B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","194":"8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m fC gC zB NC hC 0B","2":"G dC eC"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"1":"D"},N:{"8":"A B"},O:{"1":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"2":"ND"},S:{"1":"OD PD"}},B:6,C:"Ogg/Theora video format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/ol-reversed.js b/node_modules/caniuse-lite/data/features/ol-reversed.js new file mode 100644 index 00000000..63bfc470 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/ol-reversed.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 8 9 O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L H M N RC SC"},D:{"1":"0 1 2 3 4 5 6 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K L H","16":"8 M N O"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC","16":"J"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B dC eC fC gC zB NC hC","16":"C"},G:{"1":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC"},H:{"1":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Reversed attribute of ordered lists",D:true}; diff --git a/node_modules/caniuse-lite/data/features/once-event-listener.js b/node_modules/caniuse-lite/data/features/once-event-listener.js new file mode 100644 index 00000000..c310241a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/once-event-listener.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H"},C:{"1":"0 1 2 3 4 5 6 ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB RC SC"},D:{"1":"0 1 2 3 4 5 6 eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC"},F:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB dC eC fC gC zB NC hC 0B"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:1,C:"\"once\" event listener option",D:true}; diff --git a/node_modules/caniuse-lite/data/features/online-status.js b/node_modules/caniuse-lite/data/features/online-status.js new file mode 100644 index 00000000..35e4b1c8 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/online-status.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E PC","260":"F"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC 4B","516":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},D:{"1":"0 1 2 3 4 5 6 8 9 L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K"},E:{"1":"7 J F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","1025":"E"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC","4":"0B"},G:{"1":"F OC jC kC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC","1025":"lC"},H:{"2":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"A","132":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Online/offline status",D:true}; diff --git a/node_modules/caniuse-lite/data/features/opus.js b/node_modules/caniuse-lite/data/features/opus.js new file mode 100644 index 00000000..7fd74f12 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/opus.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K"},C:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L RC SC"},D:{"1":"0 1 2 3 4 5 6 IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB"},E:{"2":"7 I J E F G A TC BC UC VC WC XC CC","132":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC","132":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Opus audio format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/orientation-sensor.js b/node_modules/caniuse-lite/data/features/orientation-sensor.js new file mode 100644 index 00000000..be202e91 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/orientation-sensor.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB","194":"hB 5B iB 6B jB kB lB mB nB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:4,C:"Orientation Sensor",D:true}; diff --git a/node_modules/caniuse-lite/data/features/outline.js b/node_modules/caniuse-lite/data/features/outline.js new file mode 100644 index 00000000..7efacfb4 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/outline.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E PC","260":"F","388":"G A B"},B:{"1":"0 1 2 3 4 5 6 H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","388":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC","129":"0B","260":"G B dC eC fC gC zB NC"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"C r 0B","260":"A B zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"388":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS outline properties",D:true}; diff --git a/node_modules/caniuse-lite/data/features/pad-start-end.js b/node_modules/caniuse-lite/data/features/pad-start-end.js new file mode 100644 index 00000000..2588aef0 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/pad-start-end.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L"},C:{"1":"0 1 2 3 4 5 6 XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB RC SC"},D:{"1":"0 1 2 3 4 5 6 gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB dC eC fC gC zB NC hC 0B"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"String.prototype.padStart(), String.prototype.padEnd()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/page-transition-events.js b/node_modules/caniuse-lite/data/features/page-transition-events.js new file mode 100644 index 00000000..85e5ca08 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/page-transition-events.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F G A PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC"},H:{"2":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","2":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"PageTransitionEvent",D:true}; diff --git a/node_modules/caniuse-lite/data/features/pagevisibility.js b/node_modules/caniuse-lite/data/features/pagevisibility.js new file mode 100644 index 00000000..d10d89ab --- /dev/null +++ b/node_modules/caniuse-lite/data/features/pagevisibility.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G RC SC","33":"A B C K L H M N"},D:{"1":"0 1 2 3 4 5 6 IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K","33":"8 9 L H M N O n o p q AB BB CB DB EB FB GB HB"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC"},F:{"1":"9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B C dC eC fC gC zB NC hC","33":"8 H M N O"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC","33":"9C AD"},J:{"1":"A","2":"E"},K:{"1":"r 0B","2":"A B C zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","33":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"Page Visibility",D:true}; diff --git a/node_modules/caniuse-lite/data/features/passive-event-listener.js b/node_modules/caniuse-lite/data/features/passive-event-listener.js new file mode 100644 index 00000000..6c6bf525 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/passive-event-listener.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H"},C:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB RC SC"},D:{"1":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC"},F:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB dC eC fC gC zB NC hC 0B"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:1,C:"Passive event listeners",D:true}; diff --git a/node_modules/caniuse-lite/data/features/passkeys.js b/node_modules/caniuse-lite/data/features/passkeys.js new file mode 100644 index 00000000..552238de --- /dev/null +++ b/node_modules/caniuse-lite/data/features/passkeys.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 w x y z D","2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v"},E:{"1":"GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B"},F:{"1":"g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f dC eC fC gC zB NC hC 0B"},G:{"1":"2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"o p q","2":"I BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","16":"n"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:6,C:"Passkeys",D:true}; diff --git a/node_modules/caniuse-lite/data/features/passwordrules.js b/node_modules/caniuse-lite/data/features/passwordrules.js new file mode 100644 index 00000000..e9d50a38 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/passwordrules.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","16":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D RC SC","16":"8B 9B AC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","16":"8B 9B AC"},E:{"1":"C K 0B","2":"7 I J E F G A B TC BC UC VC WC XC CC zB","16":"L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB dC eC fC gC zB NC hC 0B","16":"cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"16":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","16":"D"},J:{"2":"E","16":"A"},K:{"2":"A B C zB NC 0B","16":"r"},L:{"16":"D"},M:{"16":"D"},N:{"2":"A","16":"B"},O:{"16":"1B"},P:{"2":"I BD CD","16":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"16":"DC"},R:{"16":"ND"},S:{"2":"OD PD"}},B:1,C:"Password Rules",D:false}; diff --git a/node_modules/caniuse-lite/data/features/path2d.js b/node_modules/caniuse-lite/data/features/path2d.js new file mode 100644 index 00000000..a5d616e5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/path2d.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K","132":"L H M N O"},C:{"1":"0 1 2 3 4 5 6 XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB RC SC","132":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},D:{"1":"0 1 2 3 4 5 6 pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB","132":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB"},E:{"1":"A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E TC BC UC VC","132":"F G WC"},F:{"1":"eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O n o p dC eC fC gC zB NC hC 0B","132":"9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC","16":"F","132":"mC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CC GD HD ID JD KD 2B 3B LD MD","132":"I BD CD DD ED FD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Path2D",D:true}; diff --git a/node_modules/caniuse-lite/data/features/payment-request.js b/node_modules/caniuse-lite/data/features/payment-request.js new file mode 100644 index 00000000..87e98542 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/payment-request.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K","322":"L","8196":"H M N O"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB RC SC","4162":"eB fB gB hB 5B iB 6B jB kB lB mB","16452":"0 1 2 3 4 5 6 nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB","194":"cB dB eB fB gB hB","1090":"5B iB","8196":"6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB"},E:{"1":"K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC","514":"A B CC","8196":"C zB"},F:{"1":"nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB dC eC fC gC zB NC hC 0B","194":"PB QB RB SB TB UB VB WB","8196":"XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB"},G:{"1":"uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC","514":"pC qC rC","8196":"sC tC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"2049":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"n o p q HD ID JD KD 2B 3B LD MD","2":"I","8196":"BD CD DD ED FD CC GD"},Q:{"8196":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:2,C:"Payment Request API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/pdf-viewer.js b/node_modules/caniuse-lite/data/features/pdf-viewer.js new file mode 100644 index 00000000..3753e9ff --- /dev/null +++ b/node_modules/caniuse-lite/data/features/pdf-viewer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","132":"B"},B:{"1":"0 1 2 3 4 5 6 H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","16":"C K L"},C:{"1":"0 1 2 3 4 5 6 8 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L H M N O RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"TC BC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B dC eC fC gC zB NC hC"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"16":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"16":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:6,C:"Built-in PDF viewer",D:true}; diff --git a/node_modules/caniuse-lite/data/features/permissions-api.js b/node_modules/caniuse-lite/data/features/permissions-api.js new file mode 100644 index 00000000..b6f93ab8 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/permissions-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB RC SC"},D:{"1":"0 1 2 3 4 5 6 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},E:{"1":"2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC"},F:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB dC eC fC gC zB NC hC 0B"},G:{"1":"2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"Permissions API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/permissions-policy.js b/node_modules/caniuse-lite/data/features/permissions-policy.js new file mode 100644 index 00000000..145932f4 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/permissions-policy.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","258":"P Q R S T U","322":"V W","388":"0 1 2 3 4 5 6 X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r RC SC","258":"0 1 2 3 4 5 6 uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B","258":"iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U","322":"V W","388":"0 1 2 3 4 5 6 X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B TC BC UC VC WC XC CC","258":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB dC eC fC gC zB NC hC 0B","258":"WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB","322":"tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d","388":"e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC","258":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","258":"D"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","388":"r"},L:{"388":"D"},M:{"258":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I BD CD DD","258":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"258":"DC"},R:{"388":"ND"},S:{"2":"OD","258":"PD"}},B:5,C:"Permissions Policy",D:true}; diff --git a/node_modules/caniuse-lite/data/features/picture-in-picture.js b/node_modules/caniuse-lite/data/features/picture-in-picture.js new file mode 100644 index 00000000..145ab029 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/picture-in-picture.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB RC SC","132":"0 1 2 3 4 5 6 tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","1090":"oB","1412":"sB","1668":"pB qB rB"},D:{"1":"0 1 2 3 4 5 6 rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB","2114":"qB"},E:{"1":"L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC","4100":"A B C K CC zB 0B"},F:{"1":"r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB dC eC fC gC zB NC hC 0B","8196":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB"},G:{"1":"zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC","4100":"nC oC pC qC rC sC tC uC vC wC xC yC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"16388":"D"},M:{"16388":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"Picture-in-Picture",D:true}; diff --git a/node_modules/caniuse-lite/data/features/picture.js b/node_modules/caniuse-lite/data/features/picture.js new file mode 100644 index 00000000..9b8ef064 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/picture.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C"},C:{"1":"0 1 2 3 4 5 6 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB RC SC","578":"JB KB LB MB"},D:{"1":"0 1 2 3 4 5 6 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB","194":"MB"},E:{"1":"A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O n o p q dC eC fC gC zB NC hC 0B","322":"9"},G:{"1":"oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Picture element",D:true}; diff --git a/node_modules/caniuse-lite/data/features/ping.js b/node_modules/caniuse-lite/data/features/ping.js new file mode 100644 index 00000000..8f217d29 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/ping.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M"},C:{"2":"QC","194":"0 1 2 3 4 5 6 7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"194":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"194":"OD PD"}},B:1,C:"Ping attribute",D:true}; diff --git a/node_modules/caniuse-lite/data/features/png-alpha.js b/node_modules/caniuse-lite/data/features/png-alpha.js new file mode 100644 index 00000000..3e3de680 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/png-alpha.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"E F G A B","2":"PC","8":"J"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"PNG alpha transparency",D:true}; diff --git a/node_modules/caniuse-lite/data/features/pointer-events.js b/node_modules/caniuse-lite/data/features/pointer-events.js new file mode 100644 index 00000000..501a2902 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/pointer-events.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F G A PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC SC","2":"QC 4B RC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","2":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:7,C:"CSS pointer-events (for HTML)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/pointer.js b/node_modules/caniuse-lite/data/features/pointer.js new file mode 100644 index 00000000..2fca5620 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/pointer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F G PC","164":"A"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I RC SC","8":"8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","328":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB"},D:{"1":"0 1 2 3 4 5 6 eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O n o","8":"9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB","584":"bB cB dB"},E:{"1":"K L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC","8":"E F G A B C VC WC XC CC zB","1096":"0B"},F:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","8":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB","584":"OB PB QB"},G:{"1":"wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","8":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC","6148":"vC"},H:{"2":"4C"},I:{"1":"D","8":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"8":"E A"},K:{"1":"r","2":"A","8":"B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","36":"A"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"BD","8":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","328":"OD"}},B:2,C:"Pointer events",D:true}; diff --git a/node_modules/caniuse-lite/data/features/pointerlock.js b/node_modules/caniuse-lite/data/features/pointerlock.js new file mode 100644 index 00000000..d4a081f2 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/pointerlock.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C"},C:{"1":"0 1 2 3 4 5 6 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K RC SC","33":"8 9 L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},D:{"1":"0 1 2 3 4 5 6 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K L H","33":"9 p q AB BB CB DB EB FB GB HB IB JB KB LB","66":"8 M N O n o"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","33":"8 H M N O n o p q"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"Pointer Lock API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/portals.js b/node_modules/caniuse-lite/data/features/portals.js new file mode 100644 index 00000000..14fa5f20 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/portals.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O P Q R S T","322":"0 1 2 3 4 5 6 Z a b c d e f g h i j k l m s t u v w x y z D","450":"U V W X Y"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB","194":"vB wB xB yB P Q R S T","322":"0 1 2 3 4 5 6 V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","450":"U"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB dC eC fC gC zB NC hC 0B","194":"jB kB lB mB nB oB pB qB rB sB tB","322":"r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"450":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"Portals",D:true}; diff --git a/node_modules/caniuse-lite/data/features/prefers-color-scheme.js b/node_modules/caniuse-lite/data/features/prefers-color-scheme.js new file mode 100644 index 00000000..58e69850 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/prefers-color-scheme.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB RC SC"},D:{"1":"0 1 2 3 4 5 6 wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB"},E:{"1":"K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C TC BC UC VC WC XC CC zB"},F:{"1":"jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB dC eC fC gC zB NC hC 0B"},G:{"1":"vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"prefers-color-scheme media query",D:true}; diff --git a/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js b/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js new file mode 100644 index 00000000..49a2467e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB RC SC"},D:{"1":"0 1 2 3 4 5 6 uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB dC eC fC gC zB NC hC 0B"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"prefers-reduced-motion media query",D:true}; diff --git a/node_modules/caniuse-lite/data/features/progress.js b/node_modules/caniuse-lite/data/features/progress.js new file mode 100644 index 00000000..187f98cb --- /dev/null +++ b/node_modules/caniuse-lite/data/features/progress.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m zB NC hC 0B","2":"G dC eC fC gC"},G:{"1":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC","132":"lC"},H:{"1":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"progress element",D:true}; diff --git a/node_modules/caniuse-lite/data/features/promise-finally.js b/node_modules/caniuse-lite/data/features/promise-finally.js new file mode 100644 index 00000000..57bc567d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/promise-finally.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N"},C:{"1":"0 1 2 3 4 5 6 hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB RC SC"},D:{"1":"0 1 2 3 4 5 6 kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB"},E:{"1":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B TC BC UC VC WC XC CC"},F:{"1":"ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB dC eC fC gC zB NC hC 0B"},G:{"1":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:6,C:"Promise.prototype.finally",D:true}; diff --git a/node_modules/caniuse-lite/data/features/promises.js b/node_modules/caniuse-lite/data/features/promises.js new file mode 100644 index 00000000..2f80aac2 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/promises.js @@ -0,0 +1 @@ +module.exports={A:{A:{"8":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","4":"CB DB","8":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB RC SC"},D:{"1":"0 1 2 3 4 5 6 IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","4":"HB","8":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB"},E:{"1":"F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","8":"7 I J E TC BC UC VC"},F:{"1":"9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","4":"8","8":"G B C H M N O dC eC fC gC zB NC hC 0B"},G:{"1":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","8":"BC iC OC jC kC lC"},H:{"8":"4C"},I:{"1":"D AD","8":"4B I 5C 6C 7C 8C OC 9C"},J:{"8":"E A"},K:{"1":"r","8":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"8":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Promises",D:true}; diff --git a/node_modules/caniuse-lite/data/features/proximity.js b/node_modules/caniuse-lite/data/features/proximity.js new file mode 100644 index 00000000..6f9dedf7 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/proximity.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"1":"OD PD"}},B:4,C:"Proximity API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/proxy.js b/node_modules/caniuse-lite/data/features/proxy.js new file mode 100644 index 00000000..5fa8cb46 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/proxy.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L H M N RC SC"},D:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K L H M N O NB OB PB QB RB SB TB UB VB WB XB","66":"8 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C AB BB CB DB EB FB GB HB IB JB KB dC eC fC gC zB NC hC 0B","66":"8 9 H M N O n o p q"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Proxy object",D:true}; diff --git a/node_modules/caniuse-lite/data/features/publickeypinning.js b/node_modules/caniuse-lite/data/features/publickeypinning.js new file mode 100644 index 00000000..1074f44d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/publickeypinning.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB","2":"8 G B C H M N O nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","4":"q","16":"9 n o p"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"I BD CD DD ED FD CC","2":"n o p q GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"1":"OD","2":"PD"}},B:6,C:"HTTP Public Key Pinning",D:true}; diff --git a/node_modules/caniuse-lite/data/features/push-api.js b/node_modules/caniuse-lite/data/features/push-api.js new file mode 100644 index 00000000..52a60019 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/push-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"N O","2":"C K L H M","257":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB RC SC","257":"0 1 2 3 4 5 6 TB VB WB XB YB ZB aB cB dB eB fB gB hB 5B 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","1281":"UB bB iB"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB","257":"0 1 2 3 4 5 6 ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","388":"TB UB VB WB XB YB"},E:{"2":"7 I J TC BC UC VC","514":"E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B","2564":"GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB dC eC fC gC zB NC hC 0B","16":"MB NB OB PB QB","257":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC","4100":"JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"2":"ND"},S:{"257":"OD PD"}},B:5,C:"Push API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/queryselector.js b/node_modules/caniuse-lite/data/features/queryselector.js new file mode 100644 index 00000000..f82151f5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/queryselector.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"PC","8":"J E","132":"F"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","8":"QC 4B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m eC fC gC zB NC hC 0B","8":"G dC"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"querySelector/querySelectorAll",D:true}; diff --git a/node_modules/caniuse-lite/data/features/readonly-attr.js b/node_modules/caniuse-lite/data/features/readonly-attr.js new file mode 100644 index 00000000..16315bef --- /dev/null +++ b/node_modules/caniuse-lite/data/features/readonly-attr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J E F G A B","16":"PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 8 9 I J E F G A B C K L H M N O n o p q AB"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"7 I TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","16":"G dC","132":"B C eC fC gC zB NC hC 0B"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC jC kC"},H:{"1":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"r","132":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"257":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"readonly attribute of input and textarea elements",D:true}; diff --git a/node_modules/caniuse-lite/data/features/referrer-policy.js b/node_modules/caniuse-lite/data/features/referrer-policy.js new file mode 100644 index 00000000..bb22cd72 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/referrer-policy.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","132":"B"},B:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","132":"C K L H M N O","516":"P Q R S T"},C:{"1":"W X Y Z a","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB RC SC","516":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V","2049":"0 1 2 3 4 5 6 b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O n","260":"9 o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB","516":"6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T"},E:{"2":"7 I J E TC BC UC VC","132":"F G A B WC XC CC","516":"C zB 0B","1025":"H ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","1540":"K L DC YC"},F:{"1":"r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","516":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB"},G:{"2":"BC iC OC jC kC lC","132":"F mC nC oC pC qC rC sC","516":"tC uC vC wC","1025":"1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","1540":"xC yC zC 0C"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2049":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q JD KD 2B 3B LD MD","2":"I","516":"BD CD DD ED FD CC GD HD ID"},Q:{"1":"DC"},R:{"1":"ND"},S:{"516":"OD PD"}},B:4,C:"Referrer Policy",D:true}; diff --git a/node_modules/caniuse-lite/data/features/registerprotocolhandler.js b/node_modules/caniuse-lite/data/features/registerprotocolhandler.js new file mode 100644 index 00000000..0942cb84 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/registerprotocolhandler.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","129":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC"},D:{"2":"7 I J E F G A B C","129":"0 1 2 3 4 5 6 8 9 K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"G B dC eC fC gC zB NC","129":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E","129":"A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:1,C:"Custom protocol handling",D:true}; diff --git a/node_modules/caniuse-lite/data/features/rel-noopener.js b/node_modules/caniuse-lite/data/features/rel-noopener.js new file mode 100644 index 00000000..04710dab --- /dev/null +++ b/node_modules/caniuse-lite/data/features/rel-noopener.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB RC SC"},D:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB dC eC fC gC zB NC hC 0B"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:1,C:"rel=noopener",D:true}; diff --git a/node_modules/caniuse-lite/data/features/rel-noreferrer.js b/node_modules/caniuse-lite/data/features/rel-noreferrer.js new file mode 100644 index 00000000..21f06809 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/rel-noreferrer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","132":"B"},B:{"1":"0 1 2 3 4 5 6 K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","16":"C"},C:{"1":"0 1 2 3 4 5 6 IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L H"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC"},H:{"2":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Link type \"noreferrer\"",D:true}; diff --git a/node_modules/caniuse-lite/data/features/rellist.js b/node_modules/caniuse-lite/data/features/rellist.js new file mode 100644 index 00000000..4a7ce12a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/rellist.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M","132":"N"},C:{"1":"0 1 2 3 4 5 6 FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB RC SC"},D:{"1":"0 1 2 3 4 5 6 mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","132":"ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F TC BC UC VC WC"},F:{"1":"bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB dC eC fC gC zB NC hC 0B","132":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q FD CC GD HD ID JD KD 2B 3B LD MD","2":"I","132":"BD CD DD ED"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"relList (DOMTokenList)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/rem.js b/node_modules/caniuse-lite/data/features/rem.js new file mode 100644 index 00000000..fec75b35 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/rem.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F PC","132":"G A"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC SC","2":"QC 4B RC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B","2":"G B dC eC fC gC zB NC"},G:{"1":"F iC OC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC","260":"jC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"C r 0B","2":"A B zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"rem (root em) units",D:true}; diff --git a/node_modules/caniuse-lite/data/features/requestanimationframe.js b/node_modules/caniuse-lite/data/features/requestanimationframe.js new file mode 100644 index 00000000..3e3ff5c0 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/requestanimationframe.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","33":"8 B C K L H M N O n o p","164":"7 I J E F G A"},D:{"1":"0 1 2 3 4 5 6 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G","33":"p q","164":"8 O n o","420":"A B C K L H M N"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC","33":"J"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC","33":"kC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"requestAnimationFrame",D:true}; diff --git a/node_modules/caniuse-lite/data/features/requestidlecallback.js b/node_modules/caniuse-lite/data/features/requestidlecallback.js new file mode 100644 index 00000000..d4059ce1 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/requestidlecallback.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB RC SC","194":"cB dB"},D:{"1":"0 1 2 3 4 5 6 WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB"},E:{"1":"cC","2":"7 I J E F G A B C K TC BC UC VC WC XC CC zB 0B","322":"L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC","322":"yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"requestIdleCallback",D:true}; diff --git a/node_modules/caniuse-lite/data/features/resizeobserver.js b/node_modules/caniuse-lite/data/features/resizeobserver.js new file mode 100644 index 00000000..a8cc5a71 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/resizeobserver.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB RC SC"},D:{"1":"0 1 2 3 4 5 6 lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB","194":"dB eB fB gB hB 5B iB 6B jB kB"},E:{"1":"L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C TC BC UC VC WC XC CC zB 0B","66":"K"},F:{"1":"bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB dC eC fC gC zB NC hC 0B","194":"QB RB SB TB UB VB WB XB YB ZB aB"},G:{"1":"yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"Resize Observer",D:true}; diff --git a/node_modules/caniuse-lite/data/features/resource-timing.js b/node_modules/caniuse-lite/data/features/resource-timing.js new file mode 100644 index 00000000..39e95339 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/resource-timing.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB RC SC","194":"GB HB IB JB"},D:{"1":"0 1 2 3 4 5 6 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q"},E:{"1":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC CC","260":"B"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"Resource Timing",D:true}; diff --git a/node_modules/caniuse-lite/data/features/rest-parameters.js b/node_modules/caniuse-lite/data/features/rest-parameters.js new file mode 100644 index 00000000..208fa9bc --- /dev/null +++ b/node_modules/caniuse-lite/data/features/rest-parameters.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L RC SC"},D:{"1":"0 1 2 3 4 5 6 WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB","194":"TB UB VB"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB dC eC fC gC zB NC hC 0B","194":"GB HB IB"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Rest parameters",D:true}; diff --git a/node_modules/caniuse-lite/data/features/rtcpeerconnection.js b/node_modules/caniuse-lite/data/features/rtcpeerconnection.js new file mode 100644 index 00000000..1bc00fb7 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/rtcpeerconnection.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L","260":"H M N O"},C:{"1":"0 1 2 3 4 5 6 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 QC 4B I J E F G A B C K L H M N O n o RC SC","33":"9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},D:{"1":"0 1 2 3 4 5 6 fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O n o p","33":"9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC CC"},F:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C H M N dC eC fC gC zB NC hC 0B","33":"8 9 O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E","130":"A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"33":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"WebRTC Peer-to-peer connections",D:true}; diff --git a/node_modules/caniuse-lite/data/features/ruby.js b/node_modules/caniuse-lite/data/features/ruby.js new file mode 100644 index 00000000..9754b2e3 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/ruby.js @@ -0,0 +1 @@ +module.exports={A:{A:{"4":"J E F PC","132":"G A B"},B:{"4":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB RC SC"},D:{"4":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"I"},E:{"4":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","8":"I TC BC"},F:{"4":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","8":"G B C dC eC fC gC zB NC hC 0B"},G:{"4":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","8":"BC iC OC"},H:{"8":"4C"},I:{"4":"4B I D 8C OC 9C AD","8":"5C 6C 7C"},J:{"4":"A","8":"E"},K:{"4":"r","8":"A B C zB NC 0B"},L:{"4":"D"},M:{"1":"D"},N:{"132":"A B"},O:{"4":"1B"},P:{"4":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"4":"DC"},R:{"4":"ND"},S:{"1":"OD PD"}},B:1,C:"Ruby annotation",D:true}; diff --git a/node_modules/caniuse-lite/data/features/run-in.js b/node_modules/caniuse-lite/data/features/run-in.js new file mode 100644 index 00000000..8a7ba3b2 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/run-in.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F G A B","2":"J E PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB","2":"0 1 2 3 4 5 6 HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 J UC","2":"E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"VC","129":"I TC BC"},F:{"1":"G B C H M N O dC eC fC gC zB NC hC 0B","2":"8 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"iC OC jC kC lC","2":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","129":"BC"},H:{"1":"4C"},I:{"1":"4B I 5C 6C 7C 8C OC 9C","2":"D AD"},J:{"1":"E A"},K:{"1":"A B C zB NC 0B","2":"r"},L:{"2":"D"},M:{"2":"D"},N:{"1":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:4,C:"display: run-in",D:true}; diff --git a/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js b/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js new file mode 100644 index 00000000..c1ba9487 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","388":"B"},B:{"1":"O P Q R S T U","2":"C K L H","129":"M N","513":"0 1 2 3 4 5 6 V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B RC SC"},D:{"1":"aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB","513":"0 1 2 3 4 5 6 Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"H ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B TC BC UC VC WC XC CC zB","2052":"L YC","3076":"C K 0B DC"},F:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB dC eC fC gC zB NC hC 0B","513":"sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC","2052":"tC uC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","513":"r"},L:{"513":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"16":"DC"},R:{"513":"ND"},S:{"1":"PD","2":"OD"}},B:6,C:"'SameSite' cookie attribute",D:true}; diff --git a/node_modules/caniuse-lite/data/features/screen-orientation.js b/node_modules/caniuse-lite/data/features/screen-orientation.js new file mode 100644 index 00000000..b182b63f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/screen-orientation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","164":"B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","36":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L H M N RC SC","36":"8 9 O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},D:{"1":"0 1 2 3 4 5 6 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"1":"JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q dC eC fC gC zB NC hC 0B"},G:{"1":"JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A","36":"B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","16":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"Screen Orientation",D:true}; diff --git a/node_modules/caniuse-lite/data/features/script-async.js b/node_modules/caniuse-lite/data/features/script-async.js new file mode 100644 index 00000000..50d98de2 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/script-async.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC SC","2":"QC 4B RC"},D:{"1":"0 1 2 3 4 5 6 8 9 F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","132":"7"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"2":"4C"},I:{"1":"4B I D 8C OC 9C AD","2":"5C 6C 7C"},J:{"1":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"async attribute for external scripts",D:true}; diff --git a/node_modules/caniuse-lite/data/features/script-defer.js b/node_modules/caniuse-lite/data/features/script-defer.js new file mode 100644 index 00000000..bf5afc3a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/script-defer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","132":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B","257":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"2":"4C"},I:{"1":"4B I D 8C OC 9C AD","2":"5C 6C 7C"},J:{"1":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"defer attribute for external scripts",D:true}; diff --git a/node_modules/caniuse-lite/data/features/scrollintoview.js b/node_modules/caniuse-lite/data/features/scrollintoview.js new file mode 100644 index 00000000..4449c75d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/scrollintoview.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E PC","132":"F G A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","132":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB RC SC"},D:{"1":"0 1 2 3 4 5 6 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB"},E:{"1":"2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC","132":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC"},F:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G dC eC fC gC","16":"B zB NC","132":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB hC 0B"},G:{"1":"2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC","132":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C"},H:{"2":"4C"},I:{"1":"D","16":"5C 6C","132":"4B I 7C 8C OC 9C AD"},J:{"132":"E A"},K:{"1":"r","132":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"132":"A B"},O:{"1":"1B"},P:{"132":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"scrollIntoView",D:true}; diff --git a/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js b/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js new file mode 100644 index 00000000..0648aae1 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"7 I TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC"},H:{"2":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:7,C:"Element.scrollIntoViewIfNeeded()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/sdch.js b/node_modules/caniuse-lite/data/features/sdch.js new file mode 100644 index 00000000..842b09df --- /dev/null +++ b/node_modules/caniuse-lite/data/features/sdch.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB","2":"0 1 2 3 4 5 6 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB","2":"G B C r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:6,C:"SDCH Accept-Encoding/Content-Encoding",D:true}; diff --git a/node_modules/caniuse-lite/data/features/selection-api.js b/node_modules/caniuse-lite/data/features/selection-api.js new file mode 100644 index 00000000..f76c753a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/selection-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","16":"PC","260":"J E F"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB RC SC","2180":"SB TB UB VB WB XB YB ZB aB"},D:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"7 I TC BC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","132":"G B C dC eC fC gC zB NC hC 0B"},G:{"16":"OC","132":"BC iC","516":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D 9C AD","16":"4B I 5C 6C 7C 8C","1025":"OC"},J:{"1":"A","16":"E"},K:{"1":"r","16":"A B C zB NC","132":"0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","16":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2180":"OD"}},B:5,C:"Selection API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/server-timing.js b/node_modules/caniuse-lite/data/features/server-timing.js new file mode 100644 index 00000000..5e7a1b87 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/server-timing.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB RC SC"},D:{"1":"0 1 2 3 4 5 6 mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B","196":"iB 6B jB kB","324":"lB"},E:{"2":"7 I J E F G A B C TC BC UC VC WC XC CC zB","516":"K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"Server Timing",D:true}; diff --git a/node_modules/caniuse-lite/data/features/serviceworkers.js b/node_modules/caniuse-lite/data/features/serviceworkers.js new file mode 100644 index 00000000..36f0bd86 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/serviceworkers.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L","322":"H M"},C:{"1":"0 1 2 3 4 5 6 TB VB WB XB YB ZB aB cB dB eB fB gB hB 5B 6B jB kB lB mB nB oB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB RC SC","194":"IB JB KB LB MB NB OB PB QB RB SB","513":"UB bB iB pB"},D:{"1":"0 1 2 3 4 5 6 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB","4":"PB QB RB SB TB"},E:{"1":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B TC BC UC VC WC XC CC"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB dC eC fC gC zB NC hC 0B","4":"CB DB EB FB GB"},G:{"1":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","4":"D"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:4,C:"Service Workers",D:true}; diff --git a/node_modules/caniuse-lite/data/features/setimmediate.js b/node_modules/caniuse-lite/data/features/setimmediate.js new file mode 100644 index 00000000..7b8bbc95 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/setimmediate.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"C K L H M N O","2":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"1":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"Efficient Script Yielding: setImmediate()",D:true}; diff --git a/node_modules/caniuse-lite/data/features/shadowdom.js b/node_modules/caniuse-lite/data/features/shadowdom.js new file mode 100644 index 00000000..3bc0bbdd --- /dev/null +++ b/node_modules/caniuse-lite/data/features/shadowdom.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"P","2":"0 1 2 3 4 5 6 C K L H M N O Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","66":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB"},D:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P","2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"AB BB CB DB EB FB GB HB IB JB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB","2":"G B C oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","33":"8 H M N O n o"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC","33":"9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"BD CD DD ED FD CC GD HD","2":"n o p q ID JD KD 2B 3B LD MD","33":"I"},Q:{"1":"DC"},R:{"2":"ND"},S:{"1":"OD","2":"PD"}},B:7,C:"Shadow DOM (deprecated V0 spec)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/shadowdomv1.js b/node_modules/caniuse-lite/data/features/shadowdomv1.js new file mode 100644 index 00000000..94c90b7c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/shadowdomv1.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB RC SC","322":"hB","578":"5B iB 6B jB"},D:{"1":"0 1 2 3 4 5 6 cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB"},E:{"1":"A B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC"},F:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB dC eC fC gC zB NC hC 0B"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC","132":"pC qC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I","4":"BD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"Shadow DOM (V1)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/sharedarraybuffer.js b/node_modules/caniuse-lite/data/features/sharedarraybuffer.js new file mode 100644 index 00000000..46e870d7 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/sharedarraybuffer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"P Q R S T U V W X Y Z","2":"C K L H","194":"M N O","513":"0 1 2 3 4 5 6 a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB RC SC","194":"gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r","450":"uB vB wB xB yB","513":"0 1 2 3 4 5 6 P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B","194":"iB 6B jB kB lB mB nB oB","513":"0 1 2 3 4 5 6 a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A TC BC UC VC WC XC","194":"B C K L H CC zB 0B DC YC ZC","513":"EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"lB mB nB oB pB qB rB sB tB r uB vB wB xB","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB dC eC fC gC zB NC hC 0B","194":"WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB","513":"yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC","194":"qC rC sC tC uC vC wC xC yC zC 0C 1C","513":"EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","513":"r"},L:{"513":"D"},M:{"513":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"2":"I BD CD DD ED FD CC GD HD ID JD","513":"n o p q KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"513":"ND"},S:{"2":"OD","513":"PD"}},B:6,C:"Shared Array Buffer",D:true}; diff --git a/node_modules/caniuse-lite/data/features/sharedworkers.js b/node_modules/caniuse-lite/data/features/sharedworkers.js new file mode 100644 index 00000000..5a56c8cb --- /dev/null +++ b/node_modules/caniuse-lite/data/features/sharedworkers.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 J UC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I E F G A B C K L H TC BC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m gC zB NC hC 0B","2":"G dC eC fC"},G:{"1":"jC kC 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"B C zB NC 0B","2":"r","16":"A"},L:{"2":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"I","2":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"1":"OD PD"}},B:1,C:"Shared Web Workers",D:true}; diff --git a/node_modules/caniuse-lite/data/features/sni.js b/node_modules/caniuse-lite/data/features/sni.js new file mode 100644 index 00000000..0d7e8cfa --- /dev/null +++ b/node_modules/caniuse-lite/data/features/sni.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J PC","132":"E F"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC"},H:{"1":"4C"},I:{"1":"4B I D 8C OC 9C AD","2":"5C 6C 7C"},J:{"1":"A","2":"E"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Server Name Indication",D:true}; diff --git a/node_modules/caniuse-lite/data/features/spdy.js b/node_modules/caniuse-lite/data/features/spdy.js new file mode 100644 index 00000000..4270f2af --- /dev/null +++ b/node_modules/caniuse-lite/data/features/spdy.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F G A PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"8 9 K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB","2":"0 1 2 3 4 5 6 7 QC 4B I J E F G A B C aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB","2":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"F G A B C XC CC zB","2":"7 I J E TC BC UC VC WC","129":"K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB RB TB 0B","2":"G B C PB QB SB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC"},G:{"1":"F mC nC oC pC qC rC sC tC","2":"BC iC OC jC kC lC","257":"uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I 8C OC 9C AD","2":"D 5C 6C 7C"},J:{"2":"E A"},K:{"1":"0B","2":"A B C r zB NC"},L:{"2":"D"},M:{"2":"D"},N:{"1":"B","2":"A"},O:{"2":"1B"},P:{"1":"I","2":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"1":"OD","2":"PD"}},B:7,C:"SPDY protocol",D:true}; diff --git a/node_modules/caniuse-lite/data/features/speech-recognition.js b/node_modules/caniuse-lite/data/features/speech-recognition.js new file mode 100644 index 00000000..4ff391e3 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/speech-recognition.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","514":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 QC 4B I J E F G A B C K L H M N O n o RC SC","322":"0 1 2 3 4 5 6 9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q","164":"0 1 2 3 4 5 6 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L TC BC UC VC WC XC CC zB 0B DC","1060":"H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB dC eC fC gC zB NC hC 0B","514":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC","1060":"0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","164":"r"},L:{"164":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"164":"1B"},P:{"164":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"164":"DC"},R:{"164":"ND"},S:{"322":"OD PD"}},B:7,C:"Speech Recognition API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/speech-synthesis.js b/node_modules/caniuse-lite/data/features/speech-synthesis.js new file mode 100644 index 00000000..617634a6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/speech-synthesis.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"L H M N O","2":"C K","257":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB RC SC","194":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},D:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB","257":"0 1 2 3 4 5 6 eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC VC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB","2":"8 9 G B C H M N O n o p q AB BB dC eC fC gC zB NC hC 0B","257":"lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"2":"ND"},S:{"1":"OD PD"}},B:7,C:"Speech Synthesis API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/spellcheck-attribute.js b/node_modules/caniuse-lite/data/features/spellcheck-attribute.js new file mode 100644 index 00000000..be12f3cf --- /dev/null +++ b/node_modules/caniuse-lite/data/features/spellcheck-attribute.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m fC gC zB NC hC 0B","2":"G dC eC"},G:{"4":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"4":"4C"},I:{"4":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"A","4":"E"},K:{"4":"A B C r zB NC 0B"},L:{"4":"D"},M:{"4":"D"},N:{"4":"A B"},O:{"4":"1B"},P:{"4":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"4":"ND"},S:{"2":"OD PD"}},B:1,C:"Spellcheck attribute",D:true}; diff --git a/node_modules/caniuse-lite/data/features/sql-storage.js b/node_modules/caniuse-lite/data/features/sql-storage.js new file mode 100644 index 00000000..3d4fdad6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/sql-storage.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"P Q R S T U V W X Y Z a b c d e f g h i j","2":"C K L H M N O","129":"k l m s t u v w x","385":"0 1 2 3 4 5 6 y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j","129":"k l m s t u v w x","385":"0 1 2 3 4 5 6 y z","897":"D 8B 9B AC"},E:{"1":"7 I J E F G A B C TC BC UC VC WC XC CC zB 0B","2":"K L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z fC gC zB NC hC 0B","2":"G dC eC","257":"a b c d e f g h i j k l m"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC","2":"vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I 5C 6C 7C 8C OC 9C AD","257":"D"},J:{"1":"E A"},K:{"1":"B C zB NC 0B","2":"A","257":"r"},L:{"257":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:7,C:"Web SQL Database",D:true}; diff --git a/node_modules/caniuse-lite/data/features/srcset.js b/node_modules/caniuse-lite/data/features/srcset.js new file mode 100644 index 00000000..10b9eae7 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/srcset.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","260":"C","514":"K L H"},C:{"1":"0 1 2 3 4 5 6 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB RC SC","194":"HB IB JB KB LB MB"},D:{"1":"0 1 2 3 4 5 6 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB","260":"JB KB LB MB"},E:{"2":"7 I J E TC BC UC VC","260":"F WC","1028":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O n dC eC fC gC zB NC hC 0B","260":"9 o p q"},G:{"2":"BC iC OC jC kC lC","260":"F mC","1028":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Srcset and sizes attributes",D:true}; diff --git a/node_modules/caniuse-lite/data/features/stream.js b/node_modules/caniuse-lite/data/features/stream.js new file mode 100644 index 00000000..c48f6ede --- /dev/null +++ b/node_modules/caniuse-lite/data/features/stream.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L H M RC SC","129":"LB MB NB OB PB QB","420":"8 9 N O n o p q AB BB CB DB EB FB GB HB IB JB KB"},D:{"1":"0 1 2 3 4 5 6 cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O n","420":"9 o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC CC"},F:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B H M N dC eC fC gC zB NC hC","420":"8 9 C O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC","513":"yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","1537":"rC sC tC uC vC wC xC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E","420":"A"},K:{"1":"r","2":"A B zB NC","420":"C 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","420":"I BD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:4,C:"getUserMedia/Stream API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/streams.js b/node_modules/caniuse-lite/data/features/streams.js new file mode 100644 index 00000000..099f15b5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/streams.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","130":"B"},B:{"1":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D","16":"C K","260":"L H","1028":"P Q R S T U V W X","5124":"M N O"},C:{"1":"0 1 2 3 4 5 6 l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB RC SC","5124":"j k","7172":"mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i","7746":"gB hB 5B iB 6B jB kB lB"},D:{"1":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB","260":"bB cB dB eB fB gB hB","1028":"5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X"},E:{"2":"7 I J E F G TC BC UC VC WC XC","1028":"H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","3076":"A B C K L CC zB 0B DC"},F:{"1":"wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB dC eC fC gC zB NC hC 0B","260":"OB PB QB RB SB TB UB","1028":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB"},G:{"2":"F BC iC OC jC kC lC mC nC oC","16":"pC","1028":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q KD 2B 3B LD MD","2":"I BD CD","1028":"DD ED FD CC GD HD ID JD"},Q:{"1028":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:1,C:"Streams",D:true}; diff --git a/node_modules/caniuse-lite/data/features/stricttransportsecurity.js b/node_modules/caniuse-lite/data/features/stricttransportsecurity.js new file mode 100644 index 00000000..fa9be068 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/stricttransportsecurity.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A PC","129":"B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC VC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B dC eC fC gC zB NC hC"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Strict Transport Security",D:true}; diff --git a/node_modules/caniuse-lite/data/features/style-scoped.js b/node_modules/caniuse-lite/data/features/style-scoped.js new file mode 100644 index 00000000..f304a1ca --- /dev/null +++ b/node_modules/caniuse-lite/data/features/style-scoped.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"9 o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"0 1 2 3 4 5 6 7 8 QC 4B I J E F G A B C K L H M N O n 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","322":"eB fB gB hB 5B iB"},D:{"2":"0 1 2 3 4 5 6 7 8 I J E F G A B C K L H M N O MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","194":"9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"1":"OD","2":"PD"}},B:7,C:"Scoped CSS",D:true}; diff --git a/node_modules/caniuse-lite/data/features/subresource-bundling.js b/node_modules/caniuse-lite/data/features/subresource-bundling.js new file mode 100644 index 00000000..a879b735 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/subresource-bundling.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 s t u v w x y z D","2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"Subresource Loading with Web Bundles",D:false}; diff --git a/node_modules/caniuse-lite/data/features/subresource-integrity.js b/node_modules/caniuse-lite/data/features/subresource-integrity.js new file mode 100644 index 00000000..11583ba3 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/subresource-integrity.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M"},C:{"1":"0 1 2 3 4 5 6 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB RC SC"},D:{"1":"0 1 2 3 4 5 6 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC CC"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB dC eC fC gC zB NC hC 0B"},G:{"1":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC","194":"rC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"Subresource Integrity",D:true}; diff --git a/node_modules/caniuse-lite/data/features/svg-css.js b/node_modules/caniuse-lite/data/features/svg-css.js new file mode 100644 index 00000000..1feb99b6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/svg-css.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","516":"C K L H"},C:{"1":"0 1 2 3 4 5 6 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","260":"7 8 I J E F G A B C K L H M N O n o p q"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","4":"I"},E:{"1":"7 J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC","132":"I BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","2":"G"},G:{"1":"F OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","132":"BC iC"},H:{"260":"4C"},I:{"1":"4B I D 8C OC 9C AD","2":"5C 6C 7C"},J:{"1":"E A"},K:{"1":"r","260":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"SVG in CSS backgrounds",D:true}; diff --git a/node_modules/caniuse-lite/data/features/svg-filters.js b/node_modules/caniuse-lite/data/features/svg-filters.js new file mode 100644 index 00000000..55592acb --- /dev/null +++ b/node_modules/caniuse-lite/data/features/svg-filters.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC"},D:{"1":"0 1 2 3 4 5 6 8 9 F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"I","4":"7 J E"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC"},H:{"1":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","2":"E"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"SVG filters",D:true}; diff --git a/node_modules/caniuse-lite/data/features/svg-fonts.js b/node_modules/caniuse-lite/data/features/svg-fonts.js new file mode 100644 index 00000000..38ea3783 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/svg-fonts.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"G A B PC","8":"J E F"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB","2":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","130":"NB OB PB QB RB SB TB UB VB WB XB YB ZB"},E:{"1":"7 I J E F G A B C K L H BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC"},F:{"1":"8 9 G B C H M N O n o p q dC eC fC gC zB NC hC 0B","2":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","130":"AB BB CB DB EB FB GB HB IB JB KB LB"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"258":"4C"},I:{"1":"4B I 8C OC 9C AD","2":"D 5C 6C 7C"},J:{"1":"E A"},K:{"1":"A B C zB NC 0B","2":"r"},L:{"130":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"I","130":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"130":"ND"},S:{"2":"OD PD"}},B:2,C:"SVG fonts",D:true}; diff --git a/node_modules/caniuse-lite/data/features/svg-fragment.js b/node_modules/caniuse-lite/data/features/svg-fragment.js new file mode 100644 index 00000000..d0f816b4 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/svg-fragment.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","260":"G A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L RC SC"},D:{"1":"0 1 2 3 4 5 6 ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB","132":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB"},E:{"1":"C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E G A B TC BC UC VC XC CC","132":"F WC"},F:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"8 H M N O n o p","4":"B C eC fC gC zB NC hC","16":"G dC","132":"9 q AB BB CB DB EB FB GB HB IB JB KB LB"},G:{"1":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC nC oC pC qC rC","132":"F mC"},H:{"1":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E","132":"A"},K:{"1":"r 0B","4":"A B C zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","132":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"SVG fragment identifiers",D:true}; diff --git a/node_modules/caniuse-lite/data/features/svg-html.js b/node_modules/caniuse-lite/data/features/svg-html.js new file mode 100644 index 00000000..747b646d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/svg-html.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","388":"G A B"},B:{"4":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","260":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC","4":"4B"},D:{"4":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"TC BC","4":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"4":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"4":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC","4":"D 9C AD"},J:{"1":"A","2":"E"},K:{"4":"A B C r zB NC 0B"},L:{"4":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"4":"1B"},P:{"4":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"4":"DC"},R:{"4":"ND"},S:{"1":"OD PD"}},B:2,C:"SVG effects for HTML",D:true}; diff --git a/node_modules/caniuse-lite/data/features/svg-html5.js b/node_modules/caniuse-lite/data/features/svg-html5.js new file mode 100644 index 00000000..44615d3b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/svg-html5.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"PC","8":"J E F","129":"G A B"},B:{"1":"0 1 2 3 4 5 6 N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","129":"C K L H M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"7 I J"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","8":"7 I TC BC","129":"J E F UC VC WC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B","2":"B gC zB NC","8":"G dC eC fC"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","8":"BC iC OC","129":"F jC kC lC mC"},H:{"1":"4C"},I:{"1":"D 9C AD","2":"5C 6C 7C","129":"4B I 8C OC"},J:{"1":"A","129":"E"},K:{"1":"C r 0B","8":"A B zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"129":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Inline SVG in HTML5",D:true}; diff --git a/node_modules/caniuse-lite/data/features/svg-img.js b/node_modules/caniuse-lite/data/features/svg-img.js new file mode 100644 index 00000000..bf543fcf --- /dev/null +++ b/node_modules/caniuse-lite/data/features/svg-img.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC","4":"BC","132":"7 I J E F UC VC WC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","132":"F BC iC OC jC kC lC mC"},H:{"1":"4C"},I:{"1":"D 9C AD","2":"5C 6C 7C","132":"4B I 8C OC"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"SVG in HTML img element",D:true}; diff --git a/node_modules/caniuse-lite/data/features/svg-smil.js b/node_modules/caniuse-lite/data/features/svg-smil.js new file mode 100644 index 00000000..df4a86ec --- /dev/null +++ b/node_modules/caniuse-lite/data/features/svg-smil.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"PC","8":"J E F G A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","8":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","4":"I"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","8":"TC BC","132":"7 I UC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","132":"BC iC OC jC"},H:{"2":"4C"},I:{"1":"4B I D 8C OC 9C AD","2":"5C 6C 7C"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"8":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"SVG SMIL animation",D:true}; diff --git a/node_modules/caniuse-lite/data/features/svg.js b/node_modules/caniuse-lite/data/features/svg.js new file mode 100644 index 00000000..b390d9c1 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/svg.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"PC","8":"J E F","772":"G A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","513":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","4":"QC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","4":"TC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"D 9C AD","2":"5C 6C 7C","132":"4B I 8C OC"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"257":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"SVG (basic support)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/sxg.js b/node_modules/caniuse-lite/data/features/sxg.js new file mode 100644 index 00000000..66f82555 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/sxg.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB","132":"sB tB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:6,C:"Signed HTTP Exchanges (SXG)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/tabindex-attr.js b/node_modules/caniuse-lite/data/features/tabindex-attr.js new file mode 100644 index 00000000..7fd7ae70 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/tabindex-attr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"E F G A B","16":"J PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"16":"QC 4B RC SC","129":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L"},E:{"16":"7 I TC BC","257":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","16":"G"},G:{"769":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"16":"4C"},I:{"16":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"16":"E A"},K:{"1":"r","16":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"16":"A B"},O:{"1":"1B"},P:{"16":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"129":"OD PD"}},B:1,C:"tabindex global attribute",D:true}; diff --git a/node_modules/caniuse-lite/data/features/template-literals.js b/node_modules/caniuse-lite/data/features/template-literals.js new file mode 100644 index 00000000..00302127 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/template-literals.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","16":"C"},C:{"1":"0 1 2 3 4 5 6 JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB RC SC"},D:{"1":"0 1 2 3 4 5 6 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"1":"A B K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC","129":"C"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB dC eC fC gC zB NC hC 0B"},G:{"1":"nC oC pC qC rC sC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC","129":"tC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"ES6 Template Literals (Template Strings)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/template.js b/node_modules/caniuse-lite/data/features/template.js new file mode 100644 index 00000000..f4457e1d --- /dev/null +++ b/node_modules/caniuse-lite/data/features/template.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C","388":"K L"},C:{"1":"0 1 2 3 4 5 6 9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 QC 4B I J E F G A B C K L H M N O n o RC SC"},D:{"1":"0 1 2 3 4 5 6 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB","132":"BB CB DB EB FB GB HB IB JB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E TC BC UC","388":"F WC","514":"VC"},F:{"1":"9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","132":"8 H M N O n o"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC","388":"F mC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"HTML templates",D:true}; diff --git a/node_modules/caniuse-lite/data/features/temporal.js b/node_modules/caniuse-lite/data/features/temporal.js new file mode 100644 index 00000000..64cdd8e8 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/temporal.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:6,C:"Temporal",D:true}; diff --git a/node_modules/caniuse-lite/data/features/testfeat.js b/node_modules/caniuse-lite/data/features/testfeat.js new file mode 100644 index 00000000..a7fb292c --- /dev/null +++ b/node_modules/caniuse-lite/data/features/testfeat.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F A B PC","16":"G"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 8 9 QC 4B J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","16":"7 I"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"B C"},E:{"2":"I J TC BC UC","16":"7 E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC NC hC 0B","16":"zB"},G:{"2":"BC iC OC jC kC","16":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 8C OC 9C AD","16":"7C"},J:{"2":"A","16":"E"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"Test feature - updated",D:false}; diff --git a/node_modules/caniuse-lite/data/features/text-decoration.js b/node_modules/caniuse-lite/data/features/text-decoration.js new file mode 100644 index 00000000..00db24ba --- /dev/null +++ b/node_modules/caniuse-lite/data/features/text-decoration.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","2052":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 QC 4B I RC SC","1028":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","1060":"8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB","226":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB","2052":"0 1 2 3 4 5 6 gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E TC BC UC VC","772":"K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","804":"F G A B C XC CC zB","1316":"WC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB dC eC fC gC zB NC hC 0B","226":"KB LB MB NB OB PB QB RB SB","2052":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"BC iC OC jC kC lC","292":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","2052":"r"},L:{"2052":"D"},M:{"1028":"D"},N:{"2":"A B"},O:{"2052":"1B"},P:{"2":"I BD CD","2052":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2052":"DC"},R:{"2052":"ND"},S:{"1028":"OD PD"}},B:4,C:"text-decoration styling",D:true}; diff --git a/node_modules/caniuse-lite/data/features/text-emphasis.js b/node_modules/caniuse-lite/data/features/text-emphasis.js new file mode 100644 index 00000000..933139bd --- /dev/null +++ b/node_modules/caniuse-lite/data/features/text-emphasis.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 i j k l m s t u v w x y z D","2":"C K L H M N O","164":"P Q R S T U V W X Y Z a b c d e f g h"},C:{"1":"0 1 2 3 4 5 6 VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB RC SC","322":"UB"},D:{"1":"0 1 2 3 4 5 6 i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q","164":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h"},E:{"1":"F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC","164":"E VC"},F:{"1":"V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","164":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC","164":"9C AD"},J:{"2":"E","164":"A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q LD MD","164":"I BD CD DD ED FD CC GD HD ID JD KD 2B 3B"},Q:{"164":"DC"},R:{"164":"ND"},S:{"1":"OD PD"}},B:4,C:"text-emphasis styling",D:true}; diff --git a/node_modules/caniuse-lite/data/features/text-overflow.js b/node_modules/caniuse-lite/data/features/text-overflow.js new file mode 100644 index 00000000..0bc107c6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/text-overflow.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J E F G A B","2":"PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","8":"7 QC 4B I J RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m zB NC hC 0B","33":"G dC eC fC gC"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"r 0B","33":"A B C zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"CSS3 Text-overflow",D:true}; diff --git a/node_modules/caniuse-lite/data/features/text-size-adjust.js b/node_modules/caniuse-lite/data/features/text-size-adjust.js new file mode 100644 index 00000000..505c7bae --- /dev/null +++ b/node_modules/caniuse-lite/data/features/text-size-adjust.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","33":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB","258":"BB"},E:{"2":"7 I J E F G A B C K L H TC BC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","258":"UC"},F:{"1":"SB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB TB dC eC fC gC zB NC hC 0B"},G:{"2":"BC iC OC","33":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"33":"D"},N:{"161":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:7,C:"CSS text-size-adjust",D:true}; diff --git a/node_modules/caniuse-lite/data/features/text-stroke.js b/node_modules/caniuse-lite/data/features/text-stroke.js new file mode 100644 index 00000000..27724576 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/text-stroke.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L","33":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","161":"H M N O"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB RC SC","161":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","450":"XB"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"33":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"33":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","36":"BC"},H:{"2":"4C"},I:{"2":"4B","33":"I D 5C 6C 7C 8C OC 9C AD"},J:{"33":"E A"},K:{"2":"A B C zB NC 0B","33":"r"},L:{"33":"D"},M:{"161":"D"},N:{"2":"A B"},O:{"33":"1B"},P:{"33":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"33":"DC"},R:{"33":"ND"},S:{"161":"OD PD"}},B:7,C:"CSS text-stroke and text-fill",D:true}; diff --git a/node_modules/caniuse-lite/data/features/textcontent.js b/node_modules/caniuse-lite/data/features/textcontent.js new file mode 100644 index 00000000..0e618613 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/textcontent.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"TC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","16":"G"},G:{"1":"F iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC"},H:{"1":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Node.textContent",D:true}; diff --git a/node_modules/caniuse-lite/data/features/textencoder.js b/node_modules/caniuse-lite/data/features/textencoder.js new file mode 100644 index 00000000..7b4acee4 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/textencoder.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L H M N O RC SC","132":"8"},D:{"1":"0 1 2 3 4 5 6 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q dC eC fC gC zB NC hC 0B"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"TextEncoder & TextDecoder",D:true}; diff --git a/node_modules/caniuse-lite/data/features/tls1-1.js b/node_modules/caniuse-lite/data/features/tls1-1.js new file mode 100644 index 00000000..6116afaa --- /dev/null +++ b/node_modules/caniuse-lite/data/features/tls1-1.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E PC","66":"F G A"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB","2":"7 8 QC 4B I J E F G A B C K L H M N O n o p RC SC","66":"q","129":"pB qB rB sB tB r uB vB wB xB","388":"0 1 2 3 4 5 6 yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T","2":"7 8 I J E F G A B C K L H M N O n o","1540":"0 1 2 3 4 5 6 U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"E F G A B C K WC XC CC zB 0B","2":"7 I J TC BC UC VC","513":"L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB 0B","2":"G B C dC eC fC gC zB NC hC","1540":"r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"1":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"1":"A","2":"E"},K:{"1":"r 0B","2":"A B C zB NC"},L:{"1":"D"},M:{"129":"D"},N:{"1":"B","66":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"TLS 1.1",D:true}; diff --git a/node_modules/caniuse-lite/data/features/tls1-2.js b/node_modules/caniuse-lite/data/features/tls1-2.js new file mode 100644 index 00000000..a36c8496 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/tls1-2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E PC","66":"F G A"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 QC 4B I J E F G A B C K L H M N O n o p q RC SC","66":"9 AB BB"},D:{"1":"0 1 2 3 4 5 6 EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB"},E:{"1":"E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC VC"},F:{"1":"8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G H dC","66":"B C eC fC gC zB NC hC 0B"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"1":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"1":"A","2":"E"},K:{"1":"r 0B","2":"A B C zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","66":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"TLS 1.2",D:true}; diff --git a/node_modules/caniuse-lite/data/features/tls1-3.js b/node_modules/caniuse-lite/data/features/tls1-3.js new file mode 100644 index 00000000..e9cefb7f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/tls1-3.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB RC SC","132":"iB 6B jB","450":"aB bB cB dB eB fB gB hB 5B"},D:{"1":"0 1 2 3 4 5 6 rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB","706":"dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB"},E:{"1":"L H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C TC BC UC VC WC XC CC zB","1028":"K 0B DC"},F:{"1":"gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dC eC fC gC zB NC hC 0B","706":"dB eB fB"},G:{"1":"uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD ED FD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:6,C:"TLS 1.3",D:true}; diff --git a/node_modules/caniuse-lite/data/features/touch.js b/node_modules/caniuse-lite/data/features/touch.js new file mode 100644 index 00000000..c7147169 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/touch.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","8":"A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","578":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 8 9 O n o p q bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","4":"7 I J E F G A B C K L H M N","194":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB"},D:{"1":"0 1 2 3 4 5 6 9 p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O n o"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"8":"A","260":"B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:2,C:"Touch events",D:true}; diff --git a/node_modules/caniuse-lite/data/features/transforms2d.js b/node_modules/caniuse-lite/data/features/transforms2d.js new file mode 100644 index 00000000..942402fa --- /dev/null +++ b/node_modules/caniuse-lite/data/features/transforms2d.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"PC","8":"J E F","129":"A B","161":"G"},B:{"1":"0 1 2 3 4 5 6 N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","129":"C K L H M"},C:{"1":"0 1 2 3 4 5 6 8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B","33":"7 I J E F G A B C K L H RC SC"},D:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","33":"7 I J E F TC BC UC VC WC"},F:{"1":"9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G dC eC","33":"8 B C H M N O n o p fC gC zB NC hC"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","33":"F BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"D","33":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"33":"E A"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS3 2D Transforms",D:true}; diff --git a/node_modules/caniuse-lite/data/features/transforms3d.js b/node_modules/caniuse-lite/data/features/transforms3d.js new file mode 100644 index 00000000..0bc735f7 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/transforms3d.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","132":"A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G RC SC","33":"A B C K L H"},D:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B","33":"8 9 C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC","33":"7 I J E F UC VC WC","257":"G A B C K L H XC CC zB 0B DC YC ZC EC"},F:{"1":"9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","33":"8 H M N O n o p"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","33":"F BC iC OC jC kC lC mC","257":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC"},H:{"2":"4C"},I:{"1":"D","2":"5C 6C 7C","33":"4B I 8C OC 9C AD"},J:{"33":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"132":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:5,C:"CSS3 3D Transforms",D:true}; diff --git a/node_modules/caniuse-lite/data/features/trusted-types.js b/node_modules/caniuse-lite/data/features/trusted-types.js new file mode 100644 index 00000000..0ebd9d9a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/trusted-types.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O P Q R"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q ID JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD HD"},Q:{"2":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:7,C:"Trusted Types for DOM manipulation",D:true}; diff --git a/node_modules/caniuse-lite/data/features/ttf.js b/node_modules/caniuse-lite/data/features/ttf.js new file mode 100644 index 00000000..124a8c99 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/ttf.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","132":"G A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC 4B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m eC fC gC zB NC hC 0B","2":"G dC"},G:{"1":"F OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC"},H:{"2":"4C"},I:{"1":"4B I D 6C 7C 8C OC 9C AD","2":"5C"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"132":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"TTF/OTF - TrueType and OpenType font support",D:true}; diff --git a/node_modules/caniuse-lite/data/features/typedarrays.js b/node_modules/caniuse-lite/data/features/typedarrays.js new file mode 100644 index 00000000..537d5fb5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/typedarrays.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J E F G PC","132":"A"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC","260":"UC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B","2":"G B dC eC fC gC zB NC"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC","260":"OC"},H:{"1":"4C"},I:{"1":"I D 8C OC 9C AD","2":"4B 5C 6C 7C"},J:{"1":"A","2":"E"},K:{"1":"C r 0B","2":"A B zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"132":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Typed Arrays",D:true}; diff --git a/node_modules/caniuse-lite/data/features/u2f.js b/node_modules/caniuse-lite/data/features/u2f.js new file mode 100644 index 00000000..c14c91a1 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/u2f.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O u v w x y z D","513":"P Q R S T U V W X Y Z a b c d e f g h i j k l m s t"},C:{"1":"oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z","2":"2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB D 8B 9B AC RC SC","322":"0 1 WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB u v w x y z D 8B 9B AC","130":"NB OB PB","513":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g","578":"h i j k l m s t"},E:{"1":"K L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C TC BC UC VC WC XC CC zB 0B"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB QB dC eC fC gC zB NC hC 0B","513":"PB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"1":"PD","322":"OD"}},B:7,C:"FIDO U2F API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/unhandledrejection.js b/node_modules/caniuse-lite/data/features/unhandledrejection.js new file mode 100644 index 00000000..c0c58b9a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/unhandledrejection.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB RC SC"},D:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC CC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB dC eC fC gC zB NC hC 0B"},G:{"1":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC","16":"rC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:1,C:"unhandledrejection/rejectionhandled events",D:true}; diff --git a/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js b/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js new file mode 100644 index 00000000..d91328d4 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M"},C:{"1":"0 1 2 3 4 5 6 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RC SC"},D:{"1":"0 1 2 3 4 5 6 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB dC eC fC gC zB NC hC 0B"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"Upgrade Insecure Requests",D:true}; diff --git a/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js b/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js new file mode 100644 index 00000000..8f37a8d1 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O","66":"P Q R"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r","66":"uB vB wB xB yB P Q"},E:{"1":"GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B"},F:{"1":"pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB dC eC fC gC zB NC hC 0B","66":"nB oB"},G:{"1":"GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"n o p q ID JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD HD"},Q:{"2":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:7,C:"URL Scroll-To-Text Fragment",D:true}; diff --git a/node_modules/caniuse-lite/data/features/url.js b/node_modules/caniuse-lite/data/features/url.js new file mode 100644 index 00000000..ea1f4c97 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/url.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB RC SC"},D:{"1":"0 1 2 3 4 5 6 HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O n o p","130":"9 q AB BB CB DB EB FB GB"},E:{"1":"F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC VC","130":"E"},F:{"1":"8 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","130":"H M N O"},G:{"1":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC","130":"lC"},H:{"2":"4C"},I:{"1":"D AD","2":"4B I 5C 6C 7C 8C OC","130":"9C"},J:{"2":"E","130":"A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"URL API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/urlsearchparams.js b/node_modules/caniuse-lite/data/features/urlsearchparams.js new file mode 100644 index 00000000..56f335ee --- /dev/null +++ b/node_modules/caniuse-lite/data/features/urlsearchparams.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M"},C:{"1":"0 1 2 3 4 5 6 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB RC SC","132":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},D:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},E:{"1":"B C K L H CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB dC eC fC gC zB NC hC 0B"},G:{"1":"qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"URLSearchParams",D:true}; diff --git a/node_modules/caniuse-lite/data/features/use-strict.js b/node_modules/caniuse-lite/data/features/use-strict.js new file mode 100644 index 00000000..e30aacb2 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/use-strict.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","132":"7 UC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B","2":"G B dC eC fC gC zB NC"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"1":"4C"},I:{"1":"4B I D 8C OC 9C AD","2":"5C 6C 7C"},J:{"1":"E A"},K:{"1":"C r NC 0B","2":"A B zB"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"ECMAScript 5 Strict Mode",D:true}; diff --git a/node_modules/caniuse-lite/data/features/user-select-none.js b/node_modules/caniuse-lite/data/features/user-select-none.js new file mode 100644 index 00000000..6463a297 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/user-select-none.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","33":"A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","33":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB RC SC"},D:{"1":"0 1 2 3 4 5 6 dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","33":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB"},E:{"1":"cC","33":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC"},F:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","33":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},G:{"33":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","33":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"33":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"33":"A B"},O:{"1":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","33":"I BD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","33":"OD"}},B:5,C:"CSS user-select: none",D:true}; diff --git a/node_modules/caniuse-lite/data/features/user-timing.js b/node_modules/caniuse-lite/data/features/user-timing.js new file mode 100644 index 00000000..31ada559 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/user-timing.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB RC SC"},D:{"1":"0 1 2 3 4 5 6 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC CC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"User Timing API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/variable-fonts.js b/node_modules/caniuse-lite/data/features/variable-fonts.js new file mode 100644 index 00000000..668b5fa8 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/variable-fonts.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB RC SC","4609":"jB kB lB mB nB oB pB qB rB","4674":"6B","5698":"iB","7490":"cB dB eB fB gB","7746":"hB 5B","8705":"0 1 2 3 4 5 6 sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB","4097":"nB","4290":"5B iB 6B","6148":"jB kB lB mB"},E:{"1":"H ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC CC","4609":"B C zB 0B","8193":"K L DC YC"},F:{"1":"dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB dC eC fC gC zB NC hC 0B","4097":"cB","6148":"YB ZB aB bB"},G:{"1":"vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC","4097":"rC sC tC uC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"4097":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"2":"I BD CD DD","4097":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:5,C:"Variable fonts",D:true}; diff --git a/node_modules/caniuse-lite/data/features/vector-effect.js b/node_modules/caniuse-lite/data/features/vector-effect.js new file mode 100644 index 00000000..d2435026 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/vector-effect.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L RC SC"},D:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J E F G A B C K L"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B","2":"G B dC eC fC gC zB NC"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC"},H:{"1":"4C"},I:{"1":"D 9C AD","16":"4B I 5C 6C 7C 8C OC"},J:{"16":"E A"},K:{"1":"C r 0B","2":"A B zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"SVG vector-effect: non-scaling-stroke",D:true}; diff --git a/node_modules/caniuse-lite/data/features/vibration.js b/node_modules/caniuse-lite/data/features/vibration.js new file mode 100644 index 00000000..10965fff --- /dev/null +++ b/node_modules/caniuse-lite/data/features/vibration.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A RC SC","33":"B C K L H"},D:{"1":"0 1 2 3 4 5 6 FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C H M dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"Vibration API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/video.js b/node_modules/caniuse-lite/data/features/video.js new file mode 100644 index 00000000..3d6ac53f --- /dev/null +++ b/node_modules/caniuse-lite/data/features/video.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B","260":"7 8 I J E F G A B C K L H M N O RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A UC VC WC XC CC","2":"TC BC","513":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m fC gC zB NC hC 0B","2":"G dC eC"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC","513":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","132":"5C 6C"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Video element",D:true}; diff --git a/node_modules/caniuse-lite/data/features/videotracks.js b/node_modules/caniuse-lite/data/features/videotracks.js new file mode 100644 index 00000000..ebf247d4 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/videotracks.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"C K L H M N O","322":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB RC SC","194":"0 1 2 3 4 5 6 IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB","322":"0 1 2 3 4 5 6 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J TC BC UC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB dC eC fC gC zB NC hC 0B","322":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","322":"r"},L:{"322":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"322":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"322":"DC"},R:{"322":"ND"},S:{"194":"OD PD"}},B:1,C:"Video Tracks",D:true}; diff --git a/node_modules/caniuse-lite/data/features/view-transitions.js b/node_modules/caniuse-lite/data/features/view-transitions.js new file mode 100644 index 00000000..a2b59f83 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/view-transitions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 z D","2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"q","2":"I n o p BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"View Transitions API (single-document)",D:true}; diff --git a/node_modules/caniuse-lite/data/features/viewport-unit-variants.js b/node_modules/caniuse-lite/data/features/viewport-unit-variants.js new file mode 100644 index 00000000..8e2ed04e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/viewport-unit-variants.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 w x y z D","2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s","194":"t u v"},C:{"1":"0 1 2 3 4 5 6 k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j RC SC"},D:{"1":"0 1 2 3 4 5 6 w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i","194":"j k l m s t u v"},E:{"1":"FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC"},F:{"1":"d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z dC eC fC gC zB NC hC 0B","194":"a b c"},G:{"1":"FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"o p q","2":"I n BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:5,C:"Small, Large, and Dynamic viewport units",D:true}; diff --git a/node_modules/caniuse-lite/data/features/viewport-units.js b/node_modules/caniuse-lite/data/features/viewport-units.js new file mode 100644 index 00000000..407a7a86 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/viewport-units.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","132":"G","260":"A B"},B:{"1":"0 1 2 3 4 5 6 M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","260":"C K L H"},C:{"1":"0 1 2 3 4 5 6 8 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L H M N O RC SC"},D:{"1":"0 1 2 3 4 5 6 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 I J E F G A B C K L H M N O","260":"9 n o p q AB"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC","260":"J"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC","516":"lC","772":"kC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"260":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"Viewport units: vw, vh, vmin, vmax",D:true}; diff --git a/node_modules/caniuse-lite/data/features/wai-aria.js b/node_modules/caniuse-lite/data/features/wai-aria.js new file mode 100644 index 00000000..f0e43a13 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/wai-aria.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E PC","4":"F G A B"},B:{"4":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"4":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"4":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"TC BC","4":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"G","4":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"4":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"4":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC","4":"D 9C AD"},J:{"2":"E A"},K:{"4":"A B C r zB NC 0B"},L:{"4":"D"},M:{"4":"D"},N:{"4":"A B"},O:{"4":"1B"},P:{"4":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"4":"DC"},R:{"4":"ND"},S:{"4":"OD PD"}},B:2,C:"WAI-ARIA Accessibility features",D:true}; diff --git a/node_modules/caniuse-lite/data/features/wake-lock.js b/node_modules/caniuse-lite/data/features/wake-lock.js new file mode 100644 index 00000000..899855f9 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/wake-lock.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O","194":"P Q R S T U V W X Y"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB","194":"sB tB r uB vB wB xB yB P Q R S T"},E:{"1":"JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC"},F:{"1":"r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB dC eC fC gC zB NC hC 0B","194":"hB iB jB kB lB mB nB oB pB qB rB sB tB"},G:{"1":"JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q JD KD 2B 3B LD MD","2":"I BD CD DD ED FD CC GD HD ID"},Q:{"2":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:4,C:"Screen Wake Lock API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/wasm.js b/node_modules/caniuse-lite/data/features/wasm.js new file mode 100644 index 00000000..24ec7ba5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/wasm.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L","578":"H"},C:{"1":"0 1 2 3 4 5 6 cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB RC SC","194":"WB XB YB ZB aB","1025":"bB"},D:{"1":"0 1 2 3 4 5 6 gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB","322":"aB bB cB dB eB fB"},E:{"1":"B C K L H zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC CC"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB dC eC fC gC zB NC hC 0B","322":"NB OB PB QB RB SB"},G:{"1":"rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","194":"OD"}},B:6,C:"WebAssembly",D:true}; diff --git a/node_modules/caniuse-lite/data/features/wav.js b/node_modules/caniuse-lite/data/features/wav.js new file mode 100644 index 00000000..e2eb4419 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/wav.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC 4B"},D:{"1":"0 1 2 3 4 5 6 8 9 F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m fC gC zB NC hC 0B","2":"G dC eC"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","16":"A"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"Wav audio format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/wbr-element.js b/node_modules/caniuse-lite/data/features/wbr-element.js new file mode 100644 index 00000000..87bc34b6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/wbr-element.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J E PC","2":"F G A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"TC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","16":"G"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC"},H:{"1":"4C"},I:{"1":"4B I D 7C 8C OC 9C AD","16":"5C 6C"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"wbr (word break opportunity) element",D:true}; diff --git a/node_modules/caniuse-lite/data/features/web-animation.js b/node_modules/caniuse-lite/data/features/web-animation.js new file mode 100644 index 00000000..c3f9e4ce --- /dev/null +++ b/node_modules/caniuse-lite/data/features/web-animation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O","260":"P Q R S"},C:{"1":"0 1 2 3 4 5 6 R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB RC SC","260":"5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB","516":"WB XB YB ZB aB bB cB dB eB fB gB hB","580":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB","2049":"vB wB xB yB P Q"},D:{"1":"0 1 2 3 4 5 6 T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB","132":"LB MB NB","260":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S"},E:{"1":"H ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC CC","1090":"B C K zB 0B","2049":"L DC YC"},F:{"1":"sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O n o p dC eC fC gC zB NC hC 0B","132":"9 q AB","260":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC","1090":"rC sC tC uC vC wC xC","2049":"yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"260":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"260":"DC"},R:{"1":"ND"},S:{"1":"PD","516":"OD"}},B:5,C:"Web Animations API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/web-app-manifest.js b/node_modules/caniuse-lite/data/features/web-app-manifest.js new file mode 100644 index 00000000..db5d170a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/web-app-manifest.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M","130":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","578":"wB xB yB P Q R 7B S T U"},D:{"1":"0 1 2 3 4 5 6 OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC","4":"3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC","4":"JC KC 3C 3B LC MC","260":"sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:5,C:"Add to home screen (A2HS)",D:false}; diff --git a/node_modules/caniuse-lite/data/features/web-bluetooth.js b/node_modules/caniuse-lite/data/features/web-bluetooth.js new file mode 100644 index 00000000..031da2cf --- /dev/null +++ b/node_modules/caniuse-lite/data/features/web-bluetooth.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","1025":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB","194":"UB VB WB XB YB ZB aB bB","706":"cB dB eB","1025":"0 1 2 3 4 5 6 fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB dC eC fC gC zB NC hC 0B","450":"LB MB NB OB","706":"PB QB RB","1025":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C AD","1025":"D"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","1025":"r"},L:{"1025":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1025":"1B"},P:{"1":"n o p q CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD"},Q:{"2":"DC"},R:{"1025":"ND"},S:{"2":"OD PD"}},B:7,C:"Web Bluetooth",D:true}; diff --git a/node_modules/caniuse-lite/data/features/web-serial.js b/node_modules/caniuse-lite/data/features/web-serial.js new file mode 100644 index 00000000..1f3880a6 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/web-serial.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O","66":"P Q R S T U V W X"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB","66":"yB P Q R S T U V W X"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB dC eC fC gC zB NC hC 0B","66":"mB nB oB pB qB rB sB tB r uB vB"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"Web Serial API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/web-share.js b/node_modules/caniuse-lite/data/features/web-share.js new file mode 100644 index 00000000..ad10ebdd --- /dev/null +++ b/node_modules/caniuse-lite/data/features/web-share.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 e f g h i j k l m s t u v w x y z D","2":"C K L H M N O P Q","516":"R S T U V W X Y Z a b c d"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"7 I J E F G A B C K L H M N AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X","130":"8 9 O n o p q","1028":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"L H YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C TC BC UC VC WC XC CC zB","2049":"K 0B DC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC","2049":"uC vC wC xC yC"},H:{"2":"4C"},I:{"2":"4B I 5C 6C 7C 8C OC 9C","258":"D AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I","258":"BD CD DD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:4,C:"Web Share API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/webauthn.js b/node_modules/caniuse-lite/data/features/webauthn.js new file mode 100644 index 00000000..bff06b14 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/webauthn.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C","226":"K L H M N"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B RC SC","4100":"2 3 4 5 6 D 8B 9B AC","5124":"0 1 iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB"},E:{"1":"K L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C TC BC UC VC WC XC CC zB","322":"0B"},F:{"1":"dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dC eC fC gC zB NC hC 0B"},G:{"1":"0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC","578":"wC","2052":"zC","3076":"xC yC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1028":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q 3B LD MD","2":"I BD CD DD ED FD CC GD HD ID JD KD 2B"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2":"OD"}},B:2,C:"Web Authentication API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/webcodecs.js b/node_modules/caniuse-lite/data/features/webcodecs.js new file mode 100644 index 00000000..de610333 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/webcodecs.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O P Q R S T U V W X Y Z a b c"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC","132":"JC KC bC 3B LC MC cC"},F:{"1":"Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC","132":"JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q 3B LD MD","2":"I BD CD DD ED FD CC GD HD ID JD KD 2B"},Q:{"2":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:5,C:"WebCodecs API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/webgl.js b/node_modules/caniuse-lite/data/features/webgl.js new file mode 100644 index 00000000..b070fe1a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/webgl.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"PC","8":"J E F G A","129":"B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","129":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","129":"7 8 I J E F G A B C K L H M N O n o p q"},D:{"1":"0 1 2 3 4 5 6 IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E","129":"8 9 F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB"},E:{"1":"F G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC","129":"J E UC VC WC"},F:{"1":"8 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B dC eC fC gC zB NC hC","129":"C H M N O 0B"},G:{"1":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC lC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"1":"A","2":"E"},K:{"1":"C r 0B","2":"A B zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"8":"A","129":"B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","129":"OD"}},B:6,C:"WebGL - 3D Canvas graphics",D:true}; diff --git a/node_modules/caniuse-lite/data/features/webgl2.js b/node_modules/caniuse-lite/data/features/webgl2.js new file mode 100644 index 00000000..f52187be --- /dev/null +++ b/node_modules/caniuse-lite/data/features/webgl2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q RC SC","194":"RB SB TB","450":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","2242":"UB VB WB XB YB ZB"},D:{"1":"0 1 2 3 4 5 6 fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","578":"SB TB UB VB WB XB YB ZB aB bB cB dB eB"},E:{"1":"H ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A TC BC UC VC WC XC","1090":"B C K L CC zB 0B DC YC"},F:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB dC eC fC gC zB NC hC 0B"},G:{"1":"1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC","1090":"tC uC vC wC xC yC zC 0C"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q DD ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","2242":"OD"}},B:6,C:"WebGL 2.0",D:true}; diff --git a/node_modules/caniuse-lite/data/features/webgpu.js b/node_modules/caniuse-lite/data/features/webgpu.js new file mode 100644 index 00000000..1ba1d38a --- /dev/null +++ b/node_modules/caniuse-lite/data/features/webgpu.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"1 2 3 4 5 6 D","2":"C K L H M N O P","578":"Q R S T U V W X Y Z a b c","1602":"0 d e f g h i j k l m s t u v w x y z"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB RC SC","194":"0 1 2 3 4 5 6 kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P","578":"Q R S T U V W X Y Z a b c","1602":"0 d e f g h i j k l m s t u v w x y z","2049":"1 2 3 4 5 6 D 8B 9B AC"},E:{"2":"7 I J E F G A B H TC BC UC VC WC XC CC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","322":"C K L zB 0B DC YC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB dC eC fC gC zB NC hC 0B","578":"r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h","2049":"i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"194":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD","194":"PD"}},B:5,C:"WebGPU",D:true}; diff --git a/node_modules/caniuse-lite/data/features/webhid.js b/node_modules/caniuse-lite/data/features/webhid.js new file mode 100644 index 00000000..88c4f135 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/webhid.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O","66":"P Q R S T U V W X"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB","66":"yB P Q R S T U V W X"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB dC eC fC gC zB NC hC 0B","66":"nB oB pB qB rB sB tB r uB vB"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"WebHID API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/webkit-user-drag.js b/node_modules/caniuse-lite/data/features/webkit-user-drag.js new file mode 100644 index 00000000..b41fb381 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/webkit-user-drag.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","132":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"16":"7 I J E F G A B C K L H","132":"0 1 2 3 4 5 6 8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"G B C dC eC fC gC zB NC hC 0B","132":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"CSS -webkit-user-drag property",D:true}; diff --git a/node_modules/caniuse-lite/data/features/webm.js b/node_modules/caniuse-lite/data/features/webm.js new file mode 100644 index 00000000..43d54e91 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/webm.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F PC","520":"G A B"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","8":"C K","388":"L H M N O"},C:{"1":"0 1 2 3 4 5 6 DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","132":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB"},D:{"1":"0 1 2 3 4 5 6 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I","132":"8 9 J E F G A B C K L H M N O n o p q"},E:{"1":"2B GC HC IC JC KC bC 3B LC MC cC","2":"TC","8":"7 I BC UC","520":"J E F G A B C VC WC XC CC zB","1028":"K 0B DC","7172":"L","8196":"H YC ZC EC FC 1B aC"},F:{"1":"8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G dC eC fC","132":"B C H gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC","1028":"uC vC wC xC yC","3076":"zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"5C 6C","132":"4B I 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"8":"A B"},O:{"1":"1B"},P:{"1":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD","132":"I"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:6,C:"WebM video format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/webnfc.js b/node_modules/caniuse-lite/data/features/webnfc.js new file mode 100644 index 00000000..eb6651a5 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/webnfc.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L H M N O P Y Z a b c d e f g h i j k l m s t u v w x y z D","450":"Q R S T U V W X"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","450":"Q R S T U V W X"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","450":"oB pB qB rB sB tB r uB vB"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"257":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:7,C:"Web NFC",D:true}; diff --git a/node_modules/caniuse-lite/data/features/webp.js b/node_modules/caniuse-lite/data/features/webp.js new file mode 100644 index 00000000..ccf754de --- /dev/null +++ b/node_modules/caniuse-lite/data/features/webp.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N"},C:{"1":"0 1 2 3 4 5 6 mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","8":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB"},D:{"1":"0 1 2 3 4 5 6 HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I","8":"J E F","132":"8 G A B C K L H M N O n o p","260":"9 q AB BB CB DB EB FB GB"},E:{"1":"2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G A B C K TC BC UC VC WC XC CC zB 0B DC","516":"L H YC ZC EC FC 1B aC"},F:{"1":"8 9 n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G dC eC fC","8":"B gC","132":"zB NC hC","260":"C H M N O 0B"},G:{"1":"zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC"},H:{"1":"4C"},I:{"1":"D OC 9C AD","2":"4B 5C 6C 7C","132":"I 8C"},J:{"2":"E A"},K:{"1":"C r zB NC 0B","2":"A","132":"B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","8":"OD"}},B:6,C:"WebP image format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/websockets.js b/node_modules/caniuse-lite/data/features/websockets.js new file mode 100644 index 00000000..e63b3f9e --- /dev/null +++ b/node_modules/caniuse-lite/data/features/websockets.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B RC SC","132":"7 I","292":"J E F G A"},D:{"1":"0 1 2 3 4 5 6 8 9 M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 I J E F G A B C K L","260":"H"},E:{"1":"E F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","132":"7 UC","260":"J VC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G dC eC fC gC","132":"B C zB NC hC"},G:{"1":"F kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC","132":"OC jC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","129":"E"},K:{"1":"r 0B","2":"A","132":"B C zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Web Sockets",D:true}; diff --git a/node_modules/caniuse-lite/data/features/webtransport.js b/node_modules/caniuse-lite/data/features/webtransport.js new file mode 100644 index 00000000..e9ed8cff --- /dev/null +++ b/node_modules/caniuse-lite/data/features/webtransport.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 h i j k l m s t u v w x y z D","2":"C K L H M N O P Q R S T U V W X Y Z a b c d e f g"},C:{"1":"2 3 4 5 6 D 8B 9B AC","2":"0 1 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z RC SC"},D:{"1":"0 1 2 3 4 5 6 g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z e f","66":"a b c d"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q LD MD","2":"I BD CD DD ED FD CC GD HD ID JD KD 2B 3B"},Q:{"2":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:5,C:"WebTransport",D:true}; diff --git a/node_modules/caniuse-lite/data/features/webusb.js b/node_modules/caniuse-lite/data/features/webusb.js new file mode 100644 index 00000000..95bc1255 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/webusb.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB","66":"dB eB fB gB hB 5B iB"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB dC eC fC gC zB NC hC 0B","66":"QB RB SB TB UB VB WB"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"n o p q ED FD CC GD HD ID JD KD 2B 3B LD MD","2":"I BD CD DD"},Q:{"2":"DC"},R:{"1":"ND"},S:{"2":"OD PD"}},B:7,C:"WebUSB",D:true}; diff --git a/node_modules/caniuse-lite/data/features/webvr.js b/node_modules/caniuse-lite/data/features/webvr.js new file mode 100644 index 00000000..9c74edd1 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/webvr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 6 C K L Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","66":"P","257":"H M N O"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB RC SC","129":"0 1 2 3 4 5 6 eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","194":"dB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","66":"gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","66":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"513":"I","516":"n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:7,C:"WebVR API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/webvtt.js b/node_modules/caniuse-lite/data/features/webvtt.js new file mode 100644 index 00000000..222820ee --- /dev/null +++ b/node_modules/caniuse-lite/data/features/webvtt.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 QC 4B I J E F G A B C K L H M N O n o p q RC SC","66":"9 AB BB CB DB EB FB","129":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","257":"0 1 2 3 4 5 6 eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"1":"0 1 2 3 4 5 6 8 9 O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 I J E F G A B C K L H M N"},E:{"1":"J E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC UC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC jC kC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","2":"E"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"B","2":"A"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"129":"OD PD"}},B:4,C:"WebVTT - Web Video Text Tracks",D:true}; diff --git a/node_modules/caniuse-lite/data/features/webworkers.js b/node_modules/caniuse-lite/data/features/webworkers.js new file mode 100644 index 00000000..31a12432 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/webworkers.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"PC","8":"J E F G"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","8":"QC 4B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","8":"TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m gC zB NC hC 0B","2":"G dC","8":"eC fC"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"2":"4C"},I:{"1":"D 5C 9C AD","2":"4B I 6C 7C 8C OC"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","8":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Web Workers",D:true}; diff --git a/node_modules/caniuse-lite/data/features/webxr.js b/node_modules/caniuse-lite/data/features/webxr.js new file mode 100644 index 00000000..d2c7c70b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/webxr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"C K L H M N O","132":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB RC SC","322":"0 1 2 3 4 5 6 xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},D:{"2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB","66":"mB nB oB pB qB rB sB tB r uB vB wB xB yB","132":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"2":"7 I J E F G A B C TC BC UC VC WC XC CC zB 0B","578":"K L H DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB dC eC fC gC zB NC hC 0B","66":"bB cB dB eB fB gB hB iB jB kB lB mB","132":"nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C zB NC 0B","132":"r"},L:{"132":"D"},M:{"322":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I BD CD DD ED FD CC GD","132":"n o p q HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD","322":"PD"}},B:4,C:"WebXR Device API",D:true}; diff --git a/node_modules/caniuse-lite/data/features/will-change.js b/node_modules/caniuse-lite/data/features/will-change.js new file mode 100644 index 00000000..7911ddca --- /dev/null +++ b/node_modules/caniuse-lite/data/features/will-change.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K L H M N O"},C:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB RC SC","194":"EB FB GB HB IB JB KB"},D:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O n o p q dC eC fC gC zB NC hC 0B"},G:{"1":"oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS will-change property",D:true}; diff --git a/node_modules/caniuse-lite/data/features/woff.js b/node_modules/caniuse-lite/data/features/woff.js new file mode 100644 index 00000000..e961c954 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/woff.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC SC","2":"QC 4B RC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"I"},E:{"1":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I TC BC"},F:{"1":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m zB NC hC 0B","2":"G B dC eC fC gC"},G:{"1":"F jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC"},H:{"2":"4C"},I:{"1":"D 9C AD","2":"4B 5C 6C 7C 8C OC","130":"I"},J:{"1":"E A"},K:{"1":"B C r zB NC 0B","2":"A"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"WOFF - Web Open Font Format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/woff2.js b/node_modules/caniuse-lite/data/features/woff2.js new file mode 100644 index 00000000..98a56aea --- /dev/null +++ b/node_modules/caniuse-lite/data/features/woff2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","2":"C K"},C:{"1":"0 1 2 3 4 5 6 OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB RC SC"},D:{"1":"0 1 2 3 4 5 6 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"C K L H 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"7 I J E F G TC BC UC VC WC XC","132":"A B CC zB"},F:{"1":"9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"8 G B C H M N O n o p dC eC fC gC zB NC hC 0B"},G:{"1":"pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"F BC iC OC jC kC lC mC nC oC"},H:{"2":"4C"},I:{"1":"D","2":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"2":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:2,C:"WOFF 2.0 - Web Open Font Format",D:true}; diff --git a/node_modules/caniuse-lite/data/features/word-break.js b/node_modules/caniuse-lite/data/features/word-break.js new file mode 100644 index 00000000..437c2e2b --- /dev/null +++ b/node_modules/caniuse-lite/data/features/word-break.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"7 QC 4B I J E F G A B C K L RC SC"},D:{"1":"0 1 2 3 4 5 6 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","4":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},E:{"1":"G A B C K L H XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","4":"7 I J E F TC BC UC VC WC"},F:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","2":"G B C dC eC fC gC zB NC hC 0B","4":"8 9 H M N O n o p q AB BB CB DB EB FB"},G:{"1":"nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","4":"F BC iC OC jC kC lC mC"},H:{"2":"4C"},I:{"1":"D","4":"4B I 5C 6C 7C 8C OC 9C AD"},J:{"4":"E A"},K:{"1":"r","2":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"CSS3 word-break",D:true}; diff --git a/node_modules/caniuse-lite/data/features/wordwrap.js b/node_modules/caniuse-lite/data/features/wordwrap.js new file mode 100644 index 00000000..df4fb212 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/wordwrap.js @@ -0,0 +1 @@ +module.exports={A:{A:{"4":"J E F G A B PC"},B:{"1":"0 1 2 3 4 5 6 O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D","4":"C K L H M N"},C:{"1":"0 1 2 3 4 5 6 YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B","4":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB RC SC"},D:{"1":"0 1 2 3 4 5 6 9 q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","4":"7 8 I J E F G A B C K L H M N O n o p"},E:{"1":"E F G A B C K L H VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","4":"7 I J TC BC UC"},F:{"1":"8 9 H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G dC eC","4":"B C fC gC zB NC hC"},G:{"1":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","4":"BC iC OC jC kC"},H:{"4":"4C"},I:{"1":"D 9C AD","4":"4B I 5C 6C 7C 8C OC"},J:{"1":"A","4":"E"},K:{"1":"r","4":"A B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"4":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"PD","4":"OD"}},B:4,C:"CSS3 Overflow-wrap",D:true}; diff --git a/node_modules/caniuse-lite/data/features/x-doc-messaging.js b/node_modules/caniuse-lite/data/features/x-doc-messaging.js new file mode 100644 index 00000000..8a571ede --- /dev/null +++ b/node_modules/caniuse-lite/data/features/x-doc-messaging.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E PC","132":"F G","260":"A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC","2":"QC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"TC BC"},F:{"1":"8 9 B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B","2":"G"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"4":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"Cross-document messaging",D:true}; diff --git a/node_modules/caniuse-lite/data/features/x-frame-options.js b/node_modules/caniuse-lite/data/features/x-frame-options.js new file mode 100644 index 00000000..db5a0e78 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/x-frame-options.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F G A B","2":"J E PC"},B:{"1":"C K L H M N O","4":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"8 9 O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB","4":"0 1 2 3 4 5 6 7 I J E F G A B C K L H M N rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"QC 4B RC SC"},D:{"4":"0 1 2 3 4 5 6 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 8 9 I J E F G A B C K L H M N O n o p q AB"},E:{"4":"J E F G A B C K L H UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","16":"7 I TC BC"},F:{"4":"8 9 C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m hC 0B","16":"G B dC eC fC gC zB NC"},G:{"4":"F lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","16":"BC iC OC jC kC"},H:{"2":"4C"},I:{"4":"I D 8C OC 9C AD","16":"4B 5C 6C 7C"},J:{"4":"E A"},K:{"4":"r 0B","16":"A B C zB NC"},L:{"4":"D"},M:{"4":"D"},N:{"1":"A B"},O:{"4":"1B"},P:{"4":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"4":"DC"},R:{"4":"ND"},S:{"1":"OD","4":"PD"}},B:6,C:"X-Frame-Options HTTP header",D:true}; diff --git a/node_modules/caniuse-lite/data/features/xhr2.js b/node_modules/caniuse-lite/data/features/xhr2.js new file mode 100644 index 00000000..37b97b88 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/xhr2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G PC","132":"A B"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","2":"QC 4B","260":"A B","388":"J E F G","900":"7 I RC SC"},D:{"1":"0 1 2 3 4 5 6 GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","16":"7 I J","132":"EB FB","388":"8 9 E F G A B C K L H M N O n o p q AB BB CB DB"},E:{"1":"F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","2":"I TC BC","132":"E VC","388":"7 J UC"},F:{"1":"8 9 C O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m 0B","2":"G B dC eC fC gC zB NC hC","132":"H M N"},G:{"1":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","2":"BC iC OC","132":"lC","388":"jC kC"},H:{"2":"4C"},I:{"1":"D AD","2":"5C 6C 7C","388":"9C","900":"4B I 8C OC"},J:{"132":"A","388":"E"},K:{"1":"C r 0B","2":"A B zB NC"},L:{"1":"D"},M:{"1":"D"},N:{"132":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"XMLHttpRequest advanced features",D:true}; diff --git a/node_modules/caniuse-lite/data/features/xhtml.js b/node_modules/caniuse-lite/data/features/xhtml.js new file mode 100644 index 00000000..484a4a57 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/xhtml.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"G A B","2":"J E F PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"1":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"1":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"1":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"1":"4C"},I:{"1":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"1":"E A"},K:{"1":"A B C r zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:1,C:"XHTML served as application/xhtml+xml",D:true}; diff --git a/node_modules/caniuse-lite/data/features/xhtmlsmil.js b/node_modules/caniuse-lite/data/features/xhtmlsmil.js new file mode 100644 index 00000000..339db9f8 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/xhtmlsmil.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"G A B PC","4":"J E F"},B:{"2":"C K L H M N O","8":"0 1 2 3 4 5 6 P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"8":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"8":"0 1 2 3 4 5 6 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC"},E:{"8":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"8":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"8":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"8":"4C"},I:{"8":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"8":"E A"},K:{"8":"A B C r zB NC 0B"},L:{"8":"D"},M:{"8":"D"},N:{"2":"A B"},O:{"8":"1B"},P:{"8":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"8":"DC"},R:{"8":"ND"},S:{"8":"OD PD"}},B:7,C:"XHTML+SMIL animation",D:true}; diff --git a/node_modules/caniuse-lite/data/features/xml-serializer.js b/node_modules/caniuse-lite/data/features/xml-serializer.js new file mode 100644 index 00000000..844088a1 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/xml-serializer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","260":"J E F G PC"},B:{"1":"0 1 2 3 4 5 6 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D"},C:{"1":"0 1 2 3 4 5 6 8 9 C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"B","260":"7 QC 4B I J E RC SC","516":"F G A"},D:{"1":"0 1 2 3 4 5 6 GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC","132":"7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB"},E:{"1":"F G A B C K L H WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC","132":"7 I J E TC BC UC VC"},F:{"1":"8 9 O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m","16":"G dC","132":"B C H M N eC fC gC zB NC hC 0B"},G:{"1":"F mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC","132":"BC iC OC jC kC lC"},H:{"132":"4C"},I:{"1":"D 9C AD","132":"4B I 5C 6C 7C 8C OC"},J:{"132":"E A"},K:{"1":"r","16":"A","132":"B C zB NC 0B"},L:{"1":"D"},M:{"1":"D"},N:{"1":"A B"},O:{"1":"1B"},P:{"1":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"1":"DC"},R:{"1":"ND"},S:{"1":"OD PD"}},B:4,C:"DOM Parsing and Serialization",D:true}; diff --git a/node_modules/caniuse-lite/data/features/zstd.js b/node_modules/caniuse-lite/data/features/zstd.js new file mode 100644 index 00000000..920a5ca2 --- /dev/null +++ b/node_modules/caniuse-lite/data/features/zstd.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J E F G A B PC"},B:{"2":"0 1 2 3 4 5 C K L H M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z","194":"6 D"},C:{"2":"0 1 2 3 4 5 6 7 8 9 QC 4B I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z D 8B 9B AC RC SC"},D:{"2":"0 1 2 3 4 5 7 8 9 I J E F G A B C K L H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5B iB 6B jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R S T U V W X Y Z a b c d e f g h i j k l m s t u v w x y z","194":"6 D 8B 9B AC"},E:{"2":"7 I J E F G A B C K L H TC BC UC VC WC XC CC zB 0B DC YC ZC EC FC 1B aC 2B GC HC IC JC KC bC 3B LC MC cC"},F:{"2":"8 9 G B C H M N O n o p q AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB r uB vB wB xB yB P Q R 7B S T U V W X Y Z a b c d e f g h i j k l m dC eC fC gC zB NC hC 0B"},G:{"2":"F BC iC OC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC 0C 1C EC FC 1B 2C 2B GC HC IC JC KC 3C 3B LC MC"},H:{"2":"4C"},I:{"2":"4B I D 5C 6C 7C 8C OC 9C AD"},J:{"2":"E A"},K:{"2":"A B C r zB NC 0B"},L:{"2":"D"},M:{"2":"D"},N:{"2":"A B"},O:{"2":"1B"},P:{"2":"I n o p q BD CD DD ED FD CC GD HD ID JD KD 2B 3B LD MD"},Q:{"2":"DC"},R:{"2":"ND"},S:{"2":"OD PD"}},B:6,C:"zstd (Zstandard) content-encoding",D:true}; diff --git a/node_modules/caniuse-lite/data/regions/AD.js b/node_modules/caniuse-lite/data/regions/AD.js new file mode 100644 index 00000000..68afdc07 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/AD.js @@ -0,0 +1 @@ +module.exports={C:{"4":0.00444,"9":0.00444,"31":0.00444,"40":0.00444,"48":0.04444,"52":0.01333,"78":0.00889,"81":0.00444,"88":0.00444,"89":0.00444,"91":0.00889,"97":0.00444,"98":0.00444,"103":0.00889,"104":0.00889,"106":0.00444,"107":0.00444,"108":0.00444,"109":0.05333,"113":0.00444,"114":0.00444,"115":0.19998,"116":0.01333,"117":0.09332,"118":1.02212,"119":0.2222,_:"2 3 5 6 7 8 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 82 83 84 85 86 87 90 92 93 94 95 96 99 100 101 102 105 110 111 112 120 121 122","3.5":0.00444,"3.6":0.00444},D:{"11":0.00444,"16":0.00444,"34":0.00444,"38":0.00444,"39":0.00889,"41":0.00444,"42":0.00444,"43":0.00444,"44":0.00889,"45":0.00889,"46":0.00889,"47":0.00889,"49":0.02222,"51":0.00444,"70":0.00444,"79":0.02222,"84":0.00444,"86":0.00444,"87":0.02222,"88":0.00889,"89":0.00444,"90":0.01333,"91":0.02222,"92":0.00444,"96":0.00889,"97":0.00889,"98":0.11554,"99":0.04,"100":0.01333,"103":0.17332,"104":0.00444,"105":0.03111,"106":0.00444,"107":0.00889,"108":0.01333,"109":0.92435,"110":0.03555,"111":0.00444,"112":0.02222,"113":0.07555,"114":0.43107,"115":0.06222,"116":0.96879,"117":8.98132,"118":9.2613,"119":0.01333,_:"4 5 6 7 8 9 10 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 40 48 50 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 80 81 83 85 93 94 95 101 102 120 121 122"},F:{"31":0.00444,"83":0.00444,"84":0.00444,"95":0.00889,"98":0.00444,"99":0.00444,"101":0.00444,"102":1.64872,"103":0.25775,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 85 86 87 88 89 90 91 92 93 94 96 97 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"84":0.00444,"86":0.00444,"87":0.00444,"88":0.00444,"90":0.00444,"92":0.00889,"94":0.00444,"95":0.00889,"96":0.00444,"97":0.00444,"98":0.01778,"99":0.00444,"100":0.00444,"105":0.00444,"106":0.05777,"107":0.00444,"108":0.00444,"109":0.03555,"111":0.00889,"114":0.00444,"115":0.00444,"116":0.07555,"117":1.45763,"118":1.01323,_:"12 13 14 15 16 17 18 79 80 81 83 85 89 91 93 101 102 103 104 110 112 113 119"},E:{"7":0.00444,"9":0.02222,"13":0.00889,"14":0.03111,"15":0.00444,_:"0 4 5 6 8 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.00444,"13.1":0.12443,"14.1":0.26664,"15.1":0.06666,"15.2-15.3":0.10221,"15.4":0.1111,"15.5":0.2622,"15.6":1.02212,"16.0":0.43551,"16.1":0.28886,"16.2":0.39552,"16.3":1.53762,"16.4":0.45329,"16.5":1.12433,"16.6":5.31058,"17.0":3.39077,"17.1":0.40885,"17.2":0.00444},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00359,"5.0-5.1":0.00359,"6.0-6.1":0.01076,"7.0-7.1":0.02512,"8.1-8.4":0.00359,"9.0-9.2":0.02512,"9.3":0.08611,"10.0-10.2":0.00359,"10.3":0.12558,"11.0-11.2":0.11482,"11.3-11.4":0.03947,"12.0-12.1":0.03229,"12.2-12.5":0.5705,"13.0-13.1":0.01794,"13.2":0.09688,"13.3":0.03588,"13.4-13.7":0.11482,"14.0-14.4":0.31575,"14.5-14.8":0.50951,"15.0-15.1":0.20093,"15.2-15.3":0.22964,"15.4":0.25475,"15.5":0.36239,"15.6-15.7":2.50806,"16.0":0.92572,"16.1":1.7725,"16.2":0.86472,"16.3":1.60386,"16.4":0.34445,"16.5":0.91854,"16.6-16.7":17.20477,"17.0":6.12841,"17.1":0.36957,"17.2":0.01076},P:{"4":0.03111,"20":0.01037,"21":0.03111,"22":0.99564,"23":0.30076,_:"5.0-5.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 18.0","6.2-6.4":0.01037,"17.0":0.01037,"19.0":0.01037},I:{"0":0.0995,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00007,"4.4":0,"4.4.3-4.4.4":0.0003},A:{"6":0.00444,"7":0.00889,"8":0.07555,"9":0.01778,"10":0.01333,"11":0.04888,_:"5.5"},K:{"0":0.22224,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00556,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.23335},Q:{_:"13.1"},O:{"0":0.03334},H:{"0":0},L:{"0":18.01468}}; diff --git a/node_modules/caniuse-lite/data/regions/AE.js b/node_modules/caniuse-lite/data/regions/AE.js new file mode 100644 index 00000000..0a8441ce --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/AE.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00273,"44":0.00273,"52":0.00273,"66":0.00273,"68":0.00273,"72":0.00273,"78":0.00273,"81":0.00273,"101":0.00273,"102":0.01093,"103":0.01366,"105":0.00273,"107":0.00273,"108":0.00273,"109":0.00273,"110":0.00273,"111":0.00546,"112":0.00273,"113":0.00273,"114":0.00273,"115":0.07103,"116":0.00546,"117":0.02459,"118":0.43439,"119":0.0683,"120":0.01639,"121":0.00546,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 69 70 71 73 74 75 76 77 79 80 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 104 106 122 3.5 3.6"},D:{"11":0.00546,"22":0.00273,"29":0.01093,"35":0.39341,"38":0.0082,"41":0.04098,"43":0.00273,"49":0.00546,"51":0.00273,"56":0.00273,"58":0.01093,"65":0.00546,"66":0.00273,"68":0.00546,"69":0.01912,"70":0.00273,"71":0.00273,"72":0.00273,"73":0.00546,"74":0.00273,"75":0.00546,"76":0.01639,"77":0.00273,"78":0.0082,"79":0.04098,"80":0.0082,"81":0.00546,"83":0.01639,"84":0.00546,"85":0.02186,"86":0.01639,"87":0.02459,"88":0.0082,"89":0.00546,"90":0.00546,"91":0.01093,"92":0.00546,"93":0.04098,"94":0.01366,"95":0.01366,"96":0.00546,"97":0.0082,"98":0.02459,"99":0.01639,"100":0.01366,"101":0.02732,"102":0.02459,"103":0.18304,"104":0.04098,"105":0.03005,"106":0.03552,"107":0.05191,"108":0.05191,"109":0.86058,"110":0.02459,"111":0.04371,"112":0.04098,"113":0.15026,"114":0.2732,"115":0.10108,"116":0.79774,"117":7.75342,"118":7.45563,"119":0.01912,"120":0.00546,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 30 31 32 33 34 36 37 39 40 42 44 45 46 47 48 50 52 53 54 55 57 59 60 61 62 63 64 67 121 122"},F:{"28":0.0082,"36":0.00273,"46":0.0082,"74":0.00273,"78":0.00273,"83":0.00273,"85":0.00546,"92":0.00273,"94":0.01093,"95":0.02459,"96":0.00546,"97":0.00273,"99":0.00546,"100":0.0082,"101":0.01093,"102":0.61743,"103":0.09835,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 79 80 81 82 84 86 87 88 89 90 91 93 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00546,"84":0.00273,"92":0.0082,"96":0.00273,"100":0.00273,"105":0.00546,"106":0.00546,"107":0.00546,"108":0.01093,"109":0.01639,"110":0.00273,"111":0.00546,"112":0.00273,"113":0.00546,"114":0.02459,"115":0.01912,"116":0.03278,"117":1.14471,"118":1.10919,"119":0.00546,_:"12 13 14 15 16 17 79 80 81 83 85 86 87 88 89 90 91 93 94 95 97 98 99 101 102 103 104"},E:{"9":0.00273,"11":0.00546,"13":0.00273,"14":0.03825,"15":0.00546,_:"0 4 5 6 7 8 10 12 3.1 3.2 6.1 7.1 10.1 11.1 17.2","5.1":0.0082,"9.1":0.00546,"12.1":0.00546,"13.1":0.03278,"14.1":0.10108,"15.1":0.02186,"15.2-15.3":0.01366,"15.4":0.03278,"15.5":0.04371,"15.6":0.22402,"16.0":0.02459,"16.1":0.0683,"16.2":0.06557,"16.3":0.14753,"16.4":0.07103,"16.5":0.1284,"16.6":0.79774,"17.0":0.55186,"17.1":0.03552},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00117,"5.0-5.1":0.00117,"6.0-6.1":0.00352,"7.0-7.1":0.00822,"8.1-8.4":0.00117,"9.0-9.2":0.00822,"9.3":0.02819,"10.0-10.2":0.00117,"10.3":0.04111,"11.0-11.2":0.03758,"11.3-11.4":0.01292,"12.0-12.1":0.01057,"12.2-12.5":0.18675,"13.0-13.1":0.00587,"13.2":0.03171,"13.3":0.01175,"13.4-13.7":0.03758,"14.0-14.4":0.10336,"14.5-14.8":0.16678,"15.0-15.1":0.06577,"15.2-15.3":0.07517,"15.4":0.08339,"15.5":0.11863,"15.6-15.7":0.82098,"16.0":0.30302,"16.1":0.58021,"16.2":0.28306,"16.3":0.52501,"16.4":0.11275,"16.5":0.30067,"16.6-16.7":5.63177,"17.0":2.00606,"17.1":0.12097,"17.2":0.00352},P:{"4":0.07272,"20":0.03117,"21":0.06233,"22":1.35051,"23":0.25971,"5.0-5.4":0.01039,_:"6.2-6.4 8.2 9.2 10.1 12.0 14.0 15.0","7.2-7.4":0.03117,"11.1-11.2":0.01039,"13.0":0.01039,"16.0":0.01039,"17.0":0.02078,"18.0":0.01039,"19.0":0.03117},I:{"0":0.05785,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00017},A:{"8":0.00303,"11":0.58435,_:"6 7 9 10 5.5"},K:{"0":1.19922,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00727,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.14536},Q:{_:"13.1"},O:{"0":3.00895},H:{"0":0},L:{"0":55.7459}}; diff --git a/node_modules/caniuse-lite/data/regions/AF.js b/node_modules/caniuse-lite/data/regions/AF.js new file mode 100644 index 00000000..bb260e67 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/AF.js @@ -0,0 +1 @@ +module.exports={C:{"29":0.00143,"38":0.0043,"41":0.00143,"44":0.00143,"47":0.00287,"48":0.00143,"52":0.00287,"56":0.00717,"57":0.00287,"66":0.0043,"72":0.0086,"73":0.00143,"77":0.00143,"84":0.00143,"86":0.00143,"92":0.00143,"93":0.00143,"94":0.00287,"95":0.00143,"99":0.00143,"102":0.00143,"105":0.00143,"106":0.00143,"107":0.00287,"110":0.0043,"111":0.00143,"113":0.00287,"114":0.00287,"115":0.17913,"116":0.0043,"117":0.0172,"118":0.23788,"119":0.04872,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 39 40 42 43 45 46 49 50 51 53 54 55 58 59 60 61 62 63 64 65 67 68 69 70 71 74 75 76 78 79 80 81 82 83 85 87 88 89 90 91 96 97 98 100 101 103 104 108 109 112 120 121 122 3.5 3.6"},D:{"30":0.00573,"31":0.00143,"34":0.00573,"36":0.00287,"37":0.00143,"38":0.00143,"41":0.00287,"43":0.00287,"44":0.00287,"45":0.00143,"46":0.00143,"47":0.00287,"48":0.07595,"49":0.00143,"50":0.00143,"51":0.0043,"52":0.00287,"53":0.00143,"54":0.00287,"55":0.00287,"56":0.00143,"60":0.00573,"61":0.00573,"62":0.01863,"63":0.00573,"64":0.0043,"65":0.00717,"66":0.00143,"67":0.0043,"68":0.00287,"69":0.00143,"70":0.00287,"71":0.0172,"72":0.00573,"73":0.00717,"74":0.00287,"75":0.00287,"76":0.01863,"77":0.0043,"78":0.01433,"79":0.01146,"80":0.0129,"81":0.0129,"83":0.11321,"84":0.0043,"85":0.00573,"86":0.01863,"87":0.01576,"88":0.00287,"89":0.00717,"90":0.00143,"91":0.02293,"92":0.0215,"93":0.00287,"94":0.00717,"95":0.0086,"96":0.0086,"97":0.00717,"98":0.01003,"99":0.01003,"100":0.0043,"101":0.00573,"102":0.02723,"103":0.01433,"104":0.0043,"105":0.02006,"106":0.02006,"107":0.02723,"108":0.02579,"109":1.65225,"110":0.01003,"111":0.01433,"112":0.06449,"113":0.0172,"114":0.05445,"115":0.04299,"116":0.20349,"117":2.38308,"118":2.2971,"119":0.01146,"120":0.00143,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 32 33 35 39 40 42 57 58 59 121 122"},F:{"64":0.00287,"73":0.00143,"79":0.0129,"82":0.00143,"89":0.00143,"93":0.00143,"95":0.05875,"97":0.00287,"99":0.00143,"101":0.00287,"102":0.17053,"103":0.07452,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 66 67 68 69 70 71 72 74 75 76 77 78 80 81 83 84 85 86 87 88 90 91 92 94 96 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.01003,"13":0.00717,"14":0.0086,"15":0.00717,"16":0.04442,"17":0.01146,"18":0.07882,"81":0.0086,"83":0.00287,"84":0.0129,"85":0.00143,"88":0.0043,"89":0.02293,"90":0.02293,"92":0.11751,"94":0.00143,"96":0.00143,"100":0.02293,"103":0.07882,"104":0.00143,"105":0.00143,"107":0.00143,"108":0.00287,"109":0.06735,"110":0.0043,"111":0.00143,"112":0.0086,"113":0.00573,"114":0.01576,"115":0.01433,"116":0.03153,"117":0.43707,"118":0.41557,"119":0.00143,_:"79 80 86 87 91 93 95 97 98 99 101 102 106"},E:{"13":0.00143,"14":0.00287,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1","5.1":0.0129,"13.1":0.0043,"14.1":0.0043,"15.1":0.03726,"15.2-15.3":0.02293,"15.4":0.0215,"15.5":0.04729,"15.6":0.10031,"16.0":0.01146,"16.1":0.12467,"16.2":0.04012,"16.3":0.10318,"16.4":0.07308,"16.5":0.17483,"16.6":0.62479,"17.0":0.90996,"17.1":0.12181,"17.2":0.01003},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00127,"5.0-5.1":0.00127,"6.0-6.1":0.00381,"7.0-7.1":0.00888,"8.1-8.4":0.00127,"9.0-9.2":0.00888,"9.3":0.03045,"10.0-10.2":0.00127,"10.3":0.04441,"11.0-11.2":0.0406,"11.3-11.4":0.01396,"12.0-12.1":0.01142,"12.2-12.5":0.20173,"13.0-13.1":0.00634,"13.2":0.03426,"13.3":0.01269,"13.4-13.7":0.0406,"14.0-14.4":0.11165,"14.5-14.8":0.18017,"15.0-15.1":0.07105,"15.2-15.3":0.0812,"15.4":0.09008,"15.5":0.12815,"15.6-15.7":0.88687,"16.0":0.32734,"16.1":0.62677,"16.2":0.30577,"16.3":0.56714,"16.4":0.1218,"16.5":0.32481,"16.6-16.7":6.08377,"17.0":2.16706,"17.1":0.13068,"17.2":0.00381},P:{"4":0.25347,"20":0.09125,"21":0.15208,"22":0.81111,"23":0.08111,"5.0-5.4":0.06083,"6.2-6.4":0.04056,"7.2-7.4":0.20278,"8.2":0.02028,"9.2":0.07097,_:"10.1","11.1-11.2":0.04056,"12.0":0.01014,"13.0":0.05069,"14.0":0.02028,"15.0":0.02028,"16.0":0.08111,"17.0":0.06083,"18.0":0.03042,"19.0":0.11153},I:{"0":0.04262,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00013},A:{"8":0.00158,"9":0.00475,"10":0.00316,"11":0.23412,_:"6 7 5.5"},K:{"0":0.59109,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00857,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.0514},Q:{_:"13.1"},O:{"0":0.831},H:{"0":0.06},L:{"0":70.73364}}; diff --git a/node_modules/caniuse-lite/data/regions/AG.js b/node_modules/caniuse-lite/data/regions/AG.js new file mode 100644 index 00000000..bd906b4b --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/AG.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.00709,"66":0.00355,"88":0.01064,"97":0.00355,"102":0.00355,"110":0.01064,"115":0.20212,"116":0.00709,"117":0.02128,"118":0.60282,"119":0.07801,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 95 96 98 99 100 101 103 104 105 106 107 108 109 111 112 113 114 120 121 122 3.5 3.6"},D:{"11":0.00709,"38":0.00355,"49":0.03901,"50":0.00355,"74":0.01064,"75":0.00355,"76":0.00355,"79":0.00709,"81":0.01064,"85":0.00355,"86":0.01773,"87":0.00355,"88":0.06028,"89":0.00709,"91":0.00709,"92":0.00709,"93":0.07801,"94":0.00709,"95":0.01418,"100":0.00355,"102":0.07801,"103":0.18085,"105":0.00709,"106":0.01064,"107":0.00709,"108":0.00709,"109":0.64183,"110":0.00355,"111":0.01773,"112":0.02482,"113":0.03546,"114":0.07092,"115":0.08156,"116":0.74111,"117":7.19483,"118":8.54231,"119":0.01418,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 77 78 80 83 84 90 96 97 98 99 101 104 120 121 122"},F:{"28":0.0851,"91":0.00709,"101":0.01773,"102":0.20212,"103":0.02482,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00709,"84":0.00709,"102":0.01064,"105":0.01064,"109":0.09929,"110":0.00355,"111":0.00355,"112":0.01418,"113":0.01064,"114":0.02482,"115":0.02482,"116":0.08156,"117":2.38291,"118":2.42192,"119":0.00709,_:"12 13 14 15 16 17 79 80 81 83 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 106 107 108"},E:{"12":0.00355,"14":0.03546,"15":0.01418,_:"0 4 5 6 7 8 9 10 11 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.00355,"13.1":0.01773,"14.1":0.08865,"15.1":0.01773,"15.2-15.3":0.00355,"15.4":0.00709,"15.5":0.05674,"15.6":0.4858,"16.0":0.14539,"16.1":0.04964,"16.2":0.09574,"16.3":0.80494,"16.4":0.59927,"16.5":0.25531,"16.6":4.3864,"17.0":0.75884,"17.1":0.08865,"17.2":0.00355},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00192,"5.0-5.1":0.00192,"6.0-6.1":0.00575,"7.0-7.1":0.01343,"8.1-8.4":0.00192,"9.0-9.2":0.01343,"9.3":0.04604,"10.0-10.2":0.00192,"10.3":0.06713,"11.0-11.2":0.06138,"11.3-11.4":0.0211,"12.0-12.1":0.01726,"12.2-12.5":0.30498,"13.0-13.1":0.00959,"13.2":0.05179,"13.3":0.01918,"13.4-13.7":0.06138,"14.0-14.4":0.1688,"14.5-14.8":0.27237,"15.0-15.1":0.10742,"15.2-15.3":0.12276,"15.4":0.13619,"15.5":0.19373,"15.6-15.7":1.34077,"16.0":0.49488,"16.1":0.94756,"16.2":0.46227,"16.3":0.8574,"16.4":0.18414,"16.5":0.49104,"16.6-16.7":9.19743,"17.0":3.27616,"17.1":0.19757,"17.2":0.00575},P:{"4":0.17893,"20":0.04473,"21":0.2572,"22":3.16474,"23":0.60387,"5.0-5.4":0.01118,_:"6.2-6.4 8.2 10.1 12.0 15.0","7.2-7.4":0.13419,"9.2":0.04473,"11.1-11.2":0.03355,"13.0":0.03355,"14.0":0.01118,"16.0":0.05591,"17.0":0.02237,"18.0":0.04473,"19.0":0.04473},I:{"0":0.01926,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00006},A:{"10":0.04255,"11":0.01064,_:"6 7 8 9 5.5"},K:{"0":0.47114,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.0839},Q:{_:"13.1"},O:{"0":0.01291},H:{"0":0},L:{"0":42.86472}}; diff --git a/node_modules/caniuse-lite/data/regions/AI.js b/node_modules/caniuse-lite/data/regions/AI.js new file mode 100644 index 00000000..f40abccf --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/AI.js @@ -0,0 +1 @@ +module.exports={C:{"78":0.24083,"104":0.02369,"115":0.01974,"117":0.0079,"118":1.83187,"119":0.08686,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 105 106 107 108 109 110 111 112 113 114 116 120 121 122 3.5 3.6"},D:{"60":0.0079,"79":0.0079,"87":0.0079,"93":0.01184,"100":0.0079,"101":0.0079,"103":0.20924,"108":0.01184,"109":0.304,"110":0.05132,"111":0.0079,"113":0.22109,"114":0.01974,"115":0.13423,"116":1.09754,"117":10.20953,"118":6.51815,"119":0.01974,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 84 85 86 88 89 90 91 92 94 95 96 97 98 99 102 104 105 106 107 112 120 121 122"},F:{"101":0.0079,"102":0.46981,"103":0.1066,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"92":0.03158,"113":0.03948,"114":0.01184,"116":0.0079,"117":4.41386,"118":2.92942,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 115 119"},E:{"14":0.0079,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.4 17.2","13.1":0.08686,"14.1":0.18556,"15.1":0.08291,"15.2-15.3":0.03158,"15.5":0.01974,"15.6":0.76196,"16.0":0.0079,"16.1":0.07106,"16.2":0.54482,"16.3":0.2961,"16.4":0.16582,"16.5":0.33163,"16.6":2.53067,"17.0":2.11218,"17.1":0.0079},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00187,"5.0-5.1":0.00187,"6.0-6.1":0.00561,"7.0-7.1":0.01308,"8.1-8.4":0.00187,"9.0-9.2":0.01308,"9.3":0.04485,"10.0-10.2":0.00187,"10.3":0.0654,"11.0-11.2":0.05979,"11.3-11.4":0.02055,"12.0-12.1":0.01682,"12.2-12.5":0.2971,"13.0-13.1":0.00934,"13.2":0.05045,"13.3":0.01869,"13.4-13.7":0.05979,"14.0-14.4":0.16443,"14.5-14.8":0.26533,"15.0-15.1":0.10464,"15.2-15.3":0.11959,"15.4":0.13267,"15.5":0.18872,"15.6-15.7":1.30612,"16.0":0.48209,"16.1":0.92306,"16.2":0.45032,"16.3":0.83524,"16.4":0.17938,"16.5":0.47835,"16.6-16.7":8.95969,"17.0":3.19148,"17.1":0.19246,"17.2":0.00561},P:{"4":0.79173,"20":0.03299,"21":0.04399,"22":4.87135,"23":1.05564,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 16.0","7.2-7.4":0.08797,"11.1-11.2":0.06598,"12.0":0.05498,"13.0":0.011,"14.0":0.011,"15.0":0.011,"17.0":0.52782,"18.0":0.03299,"19.0":0.04399},I:{"0":0.08428,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00025},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0.00605,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.07866},Q:{_:"13.1"},O:{_:"0"},H:{"0":0},L:{"0":36.85712}}; diff --git a/node_modules/caniuse-lite/data/regions/AL.js b/node_modules/caniuse-lite/data/regions/AL.js new file mode 100644 index 00000000..79fef143 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/AL.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.00914,"68":0.00152,"72":0.00152,"78":0.00152,"87":0.00305,"89":0.00305,"99":0.00152,"102":0.00457,"103":0.00152,"104":0.00152,"105":0.00457,"106":0.00152,"107":0.00457,"108":0.0061,"110":0.01219,"111":0.00152,"112":0.00152,"113":0.00305,"114":0.00152,"115":0.10668,"116":0.01067,"117":0.02438,"118":0.29108,"119":0.04877,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 88 90 91 92 93 94 95 96 97 98 100 101 109 120 121 122 3.5 3.6"},D:{"11":0.00152,"38":0.00152,"43":0.00152,"46":0.00152,"47":0.00152,"49":0.11582,"51":0.0061,"53":0.00152,"54":0.00152,"55":0.00152,"56":0.00152,"58":0.00152,"62":0.00305,"63":0.00152,"65":0.00152,"68":0.0061,"69":0.00305,"70":0.00457,"71":0.00305,"72":0.00152,"73":0.00152,"74":0.00152,"75":0.00457,"76":0.00457,"78":0.00152,"79":0.05182,"80":0.00305,"81":0.00152,"83":0.01981,"84":0.00457,"85":0.00305,"86":0.0061,"87":0.00762,"88":0.00457,"89":0.01219,"90":0.00457,"91":0.00457,"93":0.0061,"94":0.00305,"95":0.00305,"96":0.00305,"97":0.00762,"98":0.00152,"99":0.00305,"100":0.00305,"101":0.00305,"102":0.00762,"103":0.01829,"104":0.00305,"105":0.00762,"106":0.01219,"107":0.02896,"108":0.07163,"109":1.49962,"110":0.03505,"111":0.00914,"112":0.02591,"113":0.01219,"114":0.04877,"115":0.02743,"116":0.30023,"117":3.29032,"118":3.27508,"119":0.03048,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 48 50 52 57 59 60 61 64 66 67 77 92 120 121 122"},F:{"28":0.00457,"36":0.00152,"40":0.00152,"46":0.01676,"69":0.00305,"94":0.00152,"95":0.01372,"102":0.20422,"103":0.05029,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00152,"18":0.00305,"84":0.00152,"86":0.00152,"89":0.0061,"92":0.00457,"106":0.01219,"107":0.00152,"108":0.00305,"109":0.01829,"110":0.01067,"111":0.00152,"112":0.0061,"113":0.00305,"114":0.00305,"115":0.00457,"116":0.01067,"117":0.3749,"118":0.32461,"119":0.00152,_:"13 14 15 16 17 79 80 81 83 85 87 88 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105"},E:{"9":0.00914,"13":0.00305,"14":0.00914,"15":0.00152,_:"0 4 5 6 7 8 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.0061,"11.1":0.00152,"12.1":0.00305,"13.1":0.01067,"14.1":0.01524,"15.1":0.01676,"15.2-15.3":0.01219,"15.4":0.03048,"15.5":0.06096,"15.6":0.34138,"16.0":0.01067,"16.1":0.04877,"16.2":0.08687,"16.3":0.10058,"16.4":0.04724,"16.5":0.39776,"16.6":1.25882,"17.0":1.37008,"17.1":0.04724,"17.2":0.00305},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0057,"5.0-5.1":0.0057,"6.0-6.1":0.0171,"7.0-7.1":0.03989,"8.1-8.4":0.0057,"9.0-9.2":0.03989,"9.3":0.13676,"10.0-10.2":0.0057,"10.3":0.19944,"11.0-11.2":0.18235,"11.3-11.4":0.06268,"12.0-12.1":0.05129,"12.2-12.5":0.90605,"13.0-13.1":0.02849,"13.2":0.15386,"13.3":0.05698,"13.4-13.7":0.18235,"14.0-14.4":0.50146,"14.5-14.8":0.80917,"15.0-15.1":0.31911,"15.2-15.3":0.3647,"15.4":0.40459,"15.5":0.57554,"15.6-15.7":3.98319,"16.0":1.47019,"16.1":2.81502,"16.2":1.37332,"16.3":2.54719,"16.4":0.54705,"16.5":1.45879,"16.6-16.7":27.3239,"17.0":9.73289,"17.1":0.58694,"17.2":0.0171},P:{"4":0.10183,"20":0.05092,"21":0.1222,"22":1.79228,"23":0.3666,"5.0-5.4":0.01018,_:"6.2-6.4 8.2 10.1","7.2-7.4":0.08147,"9.2":0.01018,"11.1-11.2":0.02037,"12.0":0.04073,"13.0":0.02037,"14.0":0.02037,"15.0":0.01018,"16.0":0.02037,"17.0":0.07128,"18.0":0.02037,"19.0":0.07128},I:{"0":0.04216,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00013},A:{"8":0.00492,"9":0.00164,"10":0.00164,"11":0.01313,_:"6 7 5.5"},K:{"0":0.09324,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00848,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.15257},Q:{_:"13.1"},O:{"0":0.02543},H:{"0":0},L:{"0":25.09228}}; diff --git a/node_modules/caniuse-lite/data/regions/AM.js b/node_modules/caniuse-lite/data/regions/AM.js new file mode 100644 index 00000000..297b6203 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/AM.js @@ -0,0 +1 @@ +module.exports={C:{"52":52.0869,"56":0.00729,"68":0.00729,"102":0.00729,"104":0.00729,"108":0.00729,"110":0.00729,"112":0.00729,"115":0.19686,"116":0.00729,"117":0.02916,"118":0.39371,"119":0.05104,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 105 106 107 109 111 113 114 120 121 122 3.5 3.6"},D:{"48":0.02187,"49":0.03646,"51":0.01458,"79":0.01458,"80":0.01458,"85":0.00729,"87":0.00729,"89":0.00729,"92":0.00729,"94":0.00729,"96":0.00729,"97":0.02916,"98":0.03646,"99":0.01458,"100":0.00729,"102":0.02916,"103":0.03646,"104":0.00729,"105":0.00729,"106":0.02916,"107":0.02916,"108":0.05833,"109":2.1873,"110":0.03646,"111":0.00729,"112":0.04375,"113":0.02916,"114":0.0802,"115":0.06562,"116":0.65619,"117":5.68698,"118":6.32859,"119":0.01458,"120":0.01458,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 50 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 81 83 84 86 88 90 91 93 95 101 121 122"},F:{"71":0.00729,"79":0.00729,"82":0.01458,"85":0.00729,"95":0.10207,"101":0.01458,"102":0.59057,"103":0.19686,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 78 80 81 83 84 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"92":0.02916,"98":0.00729,"106":0.00729,"109":0.00729,"111":0.03646,"115":0.00729,"116":0.00729,"117":0.43017,"118":0.45933,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 99 100 101 102 103 104 105 107 108 110 112 113 114 119"},E:{"14":0.01458,"15":0.02187,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.1 17.2","13.1":0.02187,"14.1":0.02187,"15.2-15.3":0.00729,"15.4":0.00729,"15.5":0.00729,"15.6":0.0802,"16.0":0.00729,"16.1":0.18957,"16.2":0.02187,"16.3":0.13853,"16.4":0.03646,"16.5":0.07291,"16.6":0.27706,"17.0":0.3281,"17.1":0.02187},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00071,"5.0-5.1":0.00071,"6.0-6.1":0.00212,"7.0-7.1":0.00495,"8.1-8.4":0.00071,"9.0-9.2":0.00495,"9.3":0.01698,"10.0-10.2":0.00071,"10.3":0.02477,"11.0-11.2":0.02264,"11.3-11.4":0.00778,"12.0-12.1":0.00637,"12.2-12.5":0.11251,"13.0-13.1":0.00354,"13.2":0.0191,"13.3":0.00708,"13.4-13.7":0.02264,"14.0-14.4":0.06227,"14.5-14.8":0.10048,"15.0-15.1":0.03962,"15.2-15.3":0.04529,"15.4":0.05024,"15.5":0.07147,"15.6-15.7":0.4946,"16.0":0.18256,"16.1":0.34955,"16.2":0.17053,"16.3":0.31629,"16.4":0.06793,"16.5":0.18114,"16.6-16.7":3.39285,"17.0":1.20855,"17.1":0.07288,"17.2":0.00212},P:{"4":0.03142,"20":0.03142,"21":0.06284,"22":0.62838,"23":0.12568,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 13.0 14.0 15.0","7.2-7.4":0.05237,"11.1-11.2":0.01047,"16.0":0.01047,"17.0":0.01047,"18.0":0.01047,"19.0":0.03142},I:{"0":0.01078,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00003},A:{"8":0.00729,"11":0.03646,_:"6 7 9 10 5.5"},K:{"0":0.24455,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00271,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.06233},Q:{_:"13.1"},O:{"0":0.13279},H:{"0":0.04},L:{"0":18.56323}}; diff --git a/node_modules/caniuse-lite/data/regions/AO.js b/node_modules/caniuse-lite/data/regions/AO.js new file mode 100644 index 00000000..4b1dbe7a --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/AO.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.01376,"78":0.00344,"97":0.00344,"99":0.01376,"102":0.00688,"108":0.00344,"110":0.00344,"112":0.00344,"115":0.1204,"116":0.00344,"117":0.01032,"118":0.3268,"119":0.086,"120":0.00344,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 98 100 101 103 104 105 106 107 109 111 113 114 121 122 3.5 3.6"},D:{"11":0.01032,"31":0.00344,"40":0.00344,"42":0.01376,"43":0.0344,"46":0.00344,"47":0.00344,"49":0.00688,"50":0.00344,"53":0.00688,"55":0.00344,"60":0.00344,"63":0.00344,"67":0.00344,"69":0.00344,"70":0.00344,"71":0.00344,"73":0.00688,"75":0.01032,"76":0.00344,"77":0.00344,"78":0.00344,"79":0.0172,"80":0.00688,"81":0.06536,"83":0.00344,"84":0.01032,"85":0.00688,"86":0.0344,"87":0.11352,"88":0.02064,"89":0.01376,"90":0.01376,"91":0.0172,"92":0.01376,"93":0.01376,"94":0.0172,"95":0.0172,"96":0.00344,"97":0.00344,"98":0.00344,"99":0.01032,"100":0.01032,"101":0.00688,"102":0.06192,"103":0.0344,"104":0.00344,"105":0.01032,"106":0.0172,"107":0.01376,"108":0.03096,"109":2.04336,"110":0.01376,"111":0.01032,"112":0.02752,"113":0.0172,"114":0.086,"115":0.05504,"116":0.33368,"117":3.5604,"118":4.52016,"119":0.0344,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 41 44 45 48 51 52 54 56 57 58 59 61 62 64 65 66 68 72 74 120 121 122"},F:{"32":0.00688,"42":0.00344,"78":0.00688,"79":0.02064,"85":0.00344,"87":0.00344,"94":0.00344,"95":0.17544,"101":0.00344,"102":0.32336,"103":0.2752,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 81 82 83 84 86 88 89 90 91 92 93 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00688,"13":0.00344,"14":0.00344,"15":0.00344,"18":0.02408,"84":0.01032,"89":0.0172,"90":0.01032,"92":0.0172,"100":0.00688,"101":0.00344,"104":0.00688,"105":0.00344,"107":0.00344,"109":0.09976,"110":0.00344,"111":0.01032,"112":0.01032,"113":0.02064,"114":0.02408,"115":0.03784,"116":0.07568,"117":1.21088,"118":1.24528,_:"16 17 79 80 81 83 85 86 87 88 91 93 94 95 96 97 98 99 102 103 106 108 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 15.1 15.4 15.5 16.0 16.4","12.1":0.00344,"13.1":0.02064,"14.1":0.01032,"15.2-15.3":0.00344,"15.6":0.03096,"16.1":0.00344,"16.2":0.00344,"16.3":0.00344,"16.5":0.00344,"16.6":0.0344,"17.0":0.02752,"17.1":0.0172,"17.2":0.00688},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00091,"5.0-5.1":0.00091,"6.0-6.1":0.00274,"7.0-7.1":0.00638,"8.1-8.4":0.00091,"9.0-9.2":0.00638,"9.3":0.02188,"10.0-10.2":0.00091,"10.3":0.03191,"11.0-11.2":0.02918,"11.3-11.4":0.01003,"12.0-12.1":0.00821,"12.2-12.5":0.14498,"13.0-13.1":0.00456,"13.2":0.02462,"13.3":0.00912,"13.4-13.7":0.02918,"14.0-14.4":0.08024,"14.5-14.8":0.12948,"15.0-15.1":0.05106,"15.2-15.3":0.05836,"15.4":0.06474,"15.5":0.0921,"15.6-15.7":0.63738,"16.0":0.23525,"16.1":0.45045,"16.2":0.21975,"16.3":0.40759,"16.4":0.08754,"16.5":0.23343,"16.6-16.7":4.37227,"17.0":1.55742,"17.1":0.09392,"17.2":0.00274},P:{"4":0.47667,"20":0.0829,"21":0.11399,"22":0.35232,"23":0.05181,"5.0-5.4":0.01036,_:"6.2-6.4 8.2 12.0","7.2-7.4":0.14507,"9.2":0.02072,"10.1":0.01036,"11.1-11.2":0.01036,"13.0":0.04145,"14.0":0.03109,"15.0":0.02072,"16.0":0.07254,"17.0":0.06217,"18.0":0.07254,"19.0":0.05181},I:{"0":0.11748,"3":0,"4":0.00002,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00008,"4.4":0,"4.4.3-4.4.4":0.00035},A:{"11":0.01376,_:"6 7 8 9 10 5.5"},K:{"0":0.58376,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.15088,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.08528},Q:{"13.1":0.00656},O:{"0":0.23616},H:{"0":0.21},L:{"0":71.56984}}; diff --git a/node_modules/caniuse-lite/data/regions/AR.js b/node_modules/caniuse-lite/data/regions/AR.js new file mode 100644 index 00000000..49b6f38e --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/AR.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.03235,"59":0.00809,"60":0.00404,"66":0.00404,"68":0.00404,"72":0.00404,"73":0.00404,"78":0.01213,"80":0.00404,"82":0.00404,"84":0.00404,"86":0.01213,"87":0.00809,"88":0.02831,"89":0.00404,"90":0.01213,"91":0.09706,"93":0.00404,"99":0.00404,"100":0.00404,"101":0.00404,"102":0.00809,"103":0.02426,"104":0.00404,"105":0.00809,"106":0.00809,"107":0.00404,"108":0.00404,"109":0.00404,"110":0.00809,"111":0.00404,"112":0.01213,"113":0.02022,"114":0.02426,"115":0.4044,"116":0.01213,"117":0.04044,"118":0.8735,"119":0.18602,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 61 62 63 64 65 67 69 70 71 74 75 76 77 79 81 83 85 92 94 95 96 97 98 120 121 122 3.5 3.6"},D:{"34":0.00404,"38":0.01213,"47":0.00404,"49":0.05662,"51":0.00404,"58":0.00404,"60":0.00404,"62":0.02831,"63":0.00404,"66":0.02831,"67":0.00404,"70":0.00404,"71":0.00404,"73":0.00404,"74":0.00404,"75":0.00404,"76":0.00404,"77":0.00404,"78":0.00809,"79":0.03235,"80":0.00404,"81":0.00809,"83":0.00809,"84":0.00404,"85":0.01213,"86":0.00809,"87":0.01213,"88":0.02831,"89":0.01213,"90":0.01213,"91":0.04448,"92":0.0364,"93":0.01213,"94":0.01213,"95":0.01618,"96":0.01213,"97":0.01618,"98":0.00809,"99":0.01213,"100":0.01213,"101":0.01618,"102":0.01213,"103":0.0647,"104":0.02022,"105":0.0364,"106":0.02022,"107":0.03235,"108":0.05257,"109":3.99143,"110":0.02426,"111":0.02831,"112":0.04448,"113":0.0364,"114":0.10919,"115":0.10514,"116":0.7441,"117":11.82466,"118":13.34116,"119":0.01213,"120":0.00404,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 52 53 54 55 56 57 59 61 64 65 68 69 72 121 122"},F:{"28":0.00809,"36":0.00404,"77":0.00404,"79":0.00404,"85":0.00809,"86":0.00404,"89":0.00404,"91":0.00404,"95":0.06066,"100":0.00404,"101":0.00404,"102":2.17972,"103":0.20624,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 80 81 82 83 84 87 88 90 92 93 94 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"17":0.00404,"18":0.00404,"92":0.02426,"106":0.00404,"108":0.00404,"109":0.04853,"110":0.00404,"111":0.00404,"112":0.00404,"113":0.01213,"114":0.01213,"115":0.01618,"116":0.03235,"117":1.26173,"118":1.29812,"119":0.00404,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 107"},E:{"14":0.00809,"15":0.00404,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 15.2-15.3 17.2","5.1":0.00404,"11.1":0.00809,"12.1":0.00404,"13.1":0.02022,"14.1":0.04044,"15.1":0.00404,"15.4":0.00404,"15.5":0.00809,"15.6":0.06875,"16.0":0.00404,"16.1":0.01618,"16.2":0.00809,"16.3":0.02831,"16.4":0.01213,"16.5":0.04044,"16.6":0.2022,"17.0":0.12536,"17.1":0.00809},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00047,"5.0-5.1":0.00047,"6.0-6.1":0.00142,"7.0-7.1":0.00331,"8.1-8.4":0.00047,"9.0-9.2":0.00331,"9.3":0.01134,"10.0-10.2":0.00047,"10.3":0.01653,"11.0-11.2":0.01511,"11.3-11.4":0.0052,"12.0-12.1":0.00425,"12.2-12.5":0.0751,"13.0-13.1":0.00236,"13.2":0.01275,"13.3":0.00472,"13.4-13.7":0.01511,"14.0-14.4":0.04156,"14.5-14.8":0.06707,"15.0-15.1":0.02645,"15.2-15.3":0.03023,"15.4":0.03353,"15.5":0.0477,"15.6-15.7":0.33015,"16.0":0.12186,"16.1":0.23332,"16.2":0.11383,"16.3":0.21112,"16.4":0.04534,"16.5":0.12091,"16.6-16.7":2.26473,"17.0":0.80671,"17.1":0.04865,"17.2":0.00142},P:{"4":0.10181,"20":0.04072,"21":0.11199,"22":1.80201,"23":0.45814,_:"5.0-5.4 6.2-6.4 8.2 10.1","7.2-7.4":0.16289,"9.2":0.01018,"11.1-11.2":0.01018,"12.0":0.01018,"13.0":0.03054,"14.0":0.02036,"15.0":0.01018,"16.0":0.03054,"17.0":0.09163,"18.0":0.02036,"19.0":0.03054},I:{"0":0.0237,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00007},A:{"11":0.04853,_:"6 7 8 9 10 5.5"},K:{"0":0.15677,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.12508},Q:{_:"13.1"},O:{"0":0.03574},H:{"0":0.01},L:{"0":52.72634}}; diff --git a/node_modules/caniuse-lite/data/regions/AS.js b/node_modules/caniuse-lite/data/regions/AS.js new file mode 100644 index 00000000..5466da84 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/AS.js @@ -0,0 +1 @@ +module.exports={C:{"115":0.23293,"118":1.00937,"119":0.17747,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 116 117 120 121 122 3.5 3.6"},D:{"61":0.25512,"65":0.00555,"74":0.00555,"75":0.21075,"76":0.04437,"79":0.00555,"84":0.00555,"86":0.00555,"87":0.11647,"88":0.01109,"90":0.00555,"91":0.00555,"92":0.00555,"93":0.38822,"96":0.00555,"98":0.00555,"99":0.00555,"100":0.07764,"101":0.00555,"103":0.58233,"105":0.2052,"106":0.00555,"108":0.01664,"109":0.60451,"110":0.00555,"111":0.05546,"112":0.00555,"113":0.24957,"114":3.48289,"115":0.03882,"116":4.86939,"117":7.72558,"118":0.85963,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 62 63 64 66 67 68 69 70 71 72 73 77 78 80 81 83 85 89 94 95 97 102 104 107 119 120 121 122"},F:{"101":0.00555,"102":0.03328,"103":0.03328,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"92":0.01109,"96":0.00555,"100":0.26621,"109":0.04437,"115":0.01664,"116":0.01109,"117":1.78027,"118":0.26066,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 97 98 99 101 102 103 104 105 106 107 108 110 111 112 113 114 119"},E:{"12":0.00555,"13":0.00555,"14":0.0721,"15":0.00555,_:"0 4 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 17.2","13.1":0.12201,"14.1":0.04991,"15.1":1.09811,"15.2-15.3":0.64888,"15.4":0.21075,"15.5":3.45516,"15.6":1.85791,"16.0":0.66552,"16.1":0.33276,"16.2":0.51578,"16.3":2.09084,"16.4":0.18856,"16.5":0.95946,"16.6":9.58903,"17.0":3.20559,"17.1":0.30503},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00417,"5.0-5.1":0.00417,"6.0-6.1":0.01251,"7.0-7.1":0.02919,"8.1-8.4":0.00417,"9.0-9.2":0.02919,"9.3":0.1001,"10.0-10.2":0.00417,"10.3":0.14597,"11.0-11.2":0.13346,"11.3-11.4":0.04588,"12.0-12.1":0.03754,"12.2-12.5":0.66314,"13.0-13.1":0.02085,"13.2":0.11261,"13.3":0.04171,"13.4-13.7":0.13346,"14.0-14.4":0.36702,"14.5-14.8":0.59224,"15.0-15.1":0.23356,"15.2-15.3":0.26692,"15.4":0.29612,"15.5":0.42124,"15.6-15.7":2.91531,"16.0":1.07604,"16.1":2.06032,"16.2":1.00513,"16.3":1.86429,"16.4":0.40039,"16.5":1.06769,"16.6-16.7":19.99841,"17.0":7.12352,"17.1":0.42958,"17.2":0.01251},P:{"21":0.01032,"22":0.38195,"23":0.01032,_:"4 20 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 18.0 19.0","17.0":0.05161},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0.06234,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.1425},Q:{_:"13.1"},O:{"0":0.01336},H:{"0":0},L:{"0":2.59213}}; diff --git a/node_modules/caniuse-lite/data/regions/AT.js b/node_modules/caniuse-lite/data/regions/AT.js new file mode 100644 index 00000000..14a33039 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/AT.js @@ -0,0 +1 @@ +module.exports={C:{"47":0.00537,"48":0.00537,"52":0.05907,"53":0.00537,"65":0.00537,"68":0.01611,"72":0.00537,"75":0.00537,"78":0.04296,"83":0.01074,"88":0.00537,"91":0.02148,"94":0.00537,"96":0.02685,"99":0.00537,"102":0.20406,"103":0.00537,"104":0.01074,"105":0.01074,"106":0.00537,"107":0.01074,"108":0.01611,"109":0.03222,"110":0.01611,"111":0.01074,"112":0.00537,"113":0.02148,"114":0.03759,"115":0.95586,"116":0.04833,"117":0.22017,"118":4.8867,"119":0.98271,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 49 50 51 54 55 56 57 58 59 60 61 62 63 64 66 67 69 70 71 73 74 76 77 79 80 81 82 84 85 86 87 89 90 92 93 95 97 98 100 101 120 121 122 3.5 3.6"},D:{"34":0.00537,"38":0.01074,"49":0.02148,"65":0.00537,"68":0.00537,"70":0.00537,"75":0.00537,"77":0.00537,"78":0.00537,"79":0.11277,"80":0.01074,"81":0.01074,"83":0.01074,"84":0.00537,"85":0.01611,"86":0.13425,"87":0.03759,"88":0.01074,"89":0.04833,"90":0.01074,"91":0.00537,"92":0.00537,"93":0.01074,"94":0.00537,"95":0.00537,"96":0.01074,"97":0.00537,"98":0.00537,"99":0.01611,"100":0.13425,"101":0.25239,"102":0.13962,"103":0.18795,"104":0.13962,"105":0.01611,"106":0.01074,"107":0.02685,"108":0.06444,"109":0.81087,"110":0.03759,"111":0.03759,"112":0.05907,"113":0.17721,"114":0.38127,"115":0.15573,"116":0.90753,"117":11.22867,"118":11.05146,"119":0.01074,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 69 71 72 73 74 76 120 121 122"},F:{"28":0.00537,"46":0.01074,"71":0.00537,"84":0.00537,"85":0.03222,"95":0.0537,"98":0.00537,"99":0.00537,"100":0.01074,"101":0.03759,"102":3.79122,"103":0.55311,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 78 79 80 81 82 83 86 87 88 89 90 91 92 93 94 96 97 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"16":0.00537,"18":0.00537,"92":0.01074,"100":0.00537,"104":0.00537,"105":0.00537,"106":0.00537,"107":0.01074,"108":0.01074,"109":0.13962,"110":0.01074,"111":0.00537,"112":0.01611,"113":0.02685,"114":0.0537,"115":0.0537,"116":0.31146,"117":4.17786,"118":3.9738,"119":0.00537,_:"12 13 14 15 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103"},E:{"9":0.00537,"13":0.01074,"14":0.07518,"15":0.01074,_:"0 4 5 6 7 8 10 11 12 3.1 3.2 6.1 7.1 10.1 17.2","5.1":0.00537,"9.1":0.00537,"11.1":0.01611,"12.1":0.02148,"13.1":0.11277,"14.1":0.18795,"15.1":0.02685,"15.2-15.3":0.03759,"15.4":0.04833,"15.5":0.07518,"15.6":0.46719,"16.0":0.06981,"16.1":0.14499,"16.2":0.15036,"16.3":0.38127,"16.4":0.12351,"16.5":0.35442,"16.6":1.79358,"17.0":1.00956,"17.1":0.09129},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00192,"5.0-5.1":0.00192,"6.0-6.1":0.00577,"7.0-7.1":0.01347,"8.1-8.4":0.00192,"9.0-9.2":0.01347,"9.3":0.04619,"10.0-10.2":0.00192,"10.3":0.06736,"11.0-11.2":0.06159,"11.3-11.4":0.02117,"12.0-12.1":0.01732,"12.2-12.5":0.30603,"13.0-13.1":0.00962,"13.2":0.05197,"13.3":0.01925,"13.4-13.7":0.06159,"14.0-14.4":0.16937,"14.5-14.8":0.27331,"15.0-15.1":0.10778,"15.2-15.3":0.12318,"15.4":0.13665,"15.5":0.19439,"15.6-15.7":1.34536,"16.0":0.49657,"16.1":0.9508,"16.2":0.46385,"16.3":0.86034,"16.4":0.18477,"16.5":0.49272,"16.6-16.7":9.22889,"17.0":3.28737,"17.1":0.19824,"17.2":0.00577},P:{"4":0.18798,"20":0.05222,"21":0.11488,"22":2.90332,"23":0.69972,"5.0-5.4":0.01044,_:"6.2-6.4 7.2-7.4 8.2 9.2 10.1","11.1-11.2":0.01044,"12.0":0.01044,"13.0":0.02089,"14.0":0.02089,"15.0":0.01044,"16.0":0.02089,"17.0":0.02089,"18.0":0.02089,"19.0":0.06266},I:{"0":0.03685,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00011},A:{"9":0.01074,"11":0.08592,_:"6 7 8 10 5.5"},K:{"0":0.42133,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.72691},Q:{_:"13.1"},O:{"0":0.03241},H:{"0":0},L:{"0":22.00872}}; diff --git a/node_modules/caniuse-lite/data/regions/AU.js b/node_modules/caniuse-lite/data/regions/AU.js new file mode 100644 index 00000000..4e849eee --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/AU.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00527,"48":0.00527,"52":0.01582,"54":0.01055,"59":0.00527,"78":0.02109,"81":0.00527,"83":0.00527,"87":0.01055,"88":0.00527,"102":0.02109,"103":0.00527,"105":0.00527,"108":0.00527,"109":0.00527,"110":0.00527,"111":0.00527,"113":0.01055,"114":0.02637,"115":0.24783,"116":0.02109,"117":0.14237,"118":1.57663,"119":0.29002,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 55 56 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 82 84 85 86 89 90 91 92 93 94 95 96 97 98 99 100 101 104 106 107 112 120 121 122 3.5 3.6"},D:{"25":0.02637,"26":0.00527,"34":0.02637,"38":0.07382,"39":0.00527,"40":0.00527,"41":0.00527,"42":0.00527,"43":0.00527,"44":0.00527,"45":0.00527,"46":0.00527,"47":0.00527,"48":0.00527,"49":0.02637,"50":0.00527,"51":0.00527,"52":0.01055,"53":0.00527,"54":0.00527,"55":0.00527,"56":0.01055,"57":0.00527,"58":0.00527,"59":0.02637,"60":0.00527,"65":0.00527,"66":0.02637,"67":0.03691,"68":0.00527,"69":0.26892,"70":0.00527,"71":0.00527,"72":0.00527,"73":0.00527,"74":0.00527,"75":0.00527,"76":0.00527,"77":0.00527,"78":0.00527,"79":0.09491,"80":0.01582,"81":0.03691,"83":0.01582,"84":0.00527,"85":0.02637,"86":0.04218,"87":0.08964,"88":0.03164,"89":0.01055,"90":0.01055,"91":0.02637,"92":0.01055,"93":0.02109,"94":0.01055,"95":0.01055,"96":0.02637,"97":0.02109,"98":0.02109,"99":0.03691,"100":0.04218,"101":0.06855,"102":0.04218,"103":0.23729,"104":0.058,"105":0.02637,"106":0.03164,"107":0.058,"108":0.10546,"109":0.79095,"110":0.058,"111":0.07382,"112":0.09491,"113":0.13183,"114":0.40075,"115":0.45348,"116":2.61014,"117":13.89436,"118":12.1279,"119":0.02637,"120":0.01582,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 27 28 29 30 31 32 33 35 36 37 61 62 63 64 121 122"},F:{"28":0.00527,"46":0.03691,"72":0.00527,"95":0.01055,"99":0.00527,"100":0.01055,"101":0.01582,"102":0.92278,"103":0.12128,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"16":0.00527,"17":0.00527,"18":0.00527,"85":0.01055,"90":0.00527,"92":0.00527,"99":0.00527,"105":0.00527,"106":0.01055,"107":0.00527,"108":0.01055,"109":0.06328,"110":0.01055,"111":0.01055,"112":0.01582,"113":0.02637,"114":0.058,"115":0.03691,"116":0.15292,"117":3.15853,"118":2.96343,"119":0.01055,_:"12 13 14 15 79 80 81 83 84 86 87 88 89 91 93 94 95 96 97 98 100 101 102 103 104"},E:{"9":0.00527,"13":0.03164,"14":0.14237,"15":0.03164,_:"0 4 5 6 7 8 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 17.2","9.1":0.00527,"11.1":0.01055,"12.1":0.04746,"13.1":0.18983,"14.1":0.38493,"15.1":0.058,"15.2-15.3":0.06855,"15.4":0.10019,"15.5":0.16874,"15.6":0.88586,"16.0":0.0791,"16.1":0.24783,"16.2":0.18456,"16.3":0.5273,"16.4":0.18456,"16.5":0.4693,"16.6":3.86511,"17.0":0.95969,"17.1":0.06855},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00254,"5.0-5.1":0.00254,"6.0-6.1":0.00763,"7.0-7.1":0.0178,"8.1-8.4":0.00254,"9.0-9.2":0.0178,"9.3":0.06101,"10.0-10.2":0.00254,"10.3":0.08898,"11.0-11.2":0.08135,"11.3-11.4":0.02796,"12.0-12.1":0.02288,"12.2-12.5":0.40421,"13.0-13.1":0.01271,"13.2":0.06864,"13.3":0.02542,"13.4-13.7":0.08135,"14.0-14.4":0.22371,"14.5-14.8":0.36099,"15.0-15.1":0.14236,"15.2-15.3":0.1627,"15.4":0.18049,"15.5":0.25676,"15.6-15.7":1.77698,"16.0":0.65588,"16.1":1.25584,"16.2":0.61267,"16.3":1.13635,"16.4":0.24405,"16.5":0.6508,"16.6-16.7":12.18976,"17.0":4.34204,"17.1":0.26184,"17.2":0.00763},P:{"4":0.17744,"20":0.07763,"21":0.13308,"22":2.12933,"23":0.47688,"5.0-5.4":0.02218,_:"6.2-6.4 7.2-7.4 8.2 9.2 10.1 12.0","11.1-11.2":0.01109,"13.0":0.01109,"14.0":0.01109,"15.0":0.01109,"16.0":0.02218,"17.0":0.02218,"18.0":0.02218,"19.0":0.04436},I:{"0":0.04703,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00014},A:{"8":0.03002,"9":0.06003,"11":0.10505,_:"6 7 10 5.5"},K:{"0":0.14654,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.36398},Q:{"13.1":0.00473},O:{"0":0.04254},H:{"0":0},L:{"0":18.37282}}; diff --git a/node_modules/caniuse-lite/data/regions/AW.js b/node_modules/caniuse-lite/data/regions/AW.js new file mode 100644 index 00000000..03c6f715 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/AW.js @@ -0,0 +1 @@ +module.exports={C:{"78":0.0118,"82":0.00295,"88":0.00295,"98":0.0059,"101":0.02655,"102":0.00295,"103":0.00295,"104":0.00295,"105":0.00295,"106":0.04425,"107":0.00885,"109":0.00295,"113":0.0059,"115":0.0531,"116":0.00885,"117":0.02655,"118":0.5074,"119":0.0944,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 84 85 86 87 89 90 91 92 93 94 95 96 97 99 100 108 110 111 112 114 120 121 122 3.5 3.6"},D:{"47":0.0059,"49":0.00885,"53":0.0059,"69":0.00295,"77":0.00885,"78":0.00295,"79":0.00885,"81":0.00295,"87":0.0885,"89":0.00295,"91":0.00295,"92":0.0059,"93":0.03245,"98":0.0059,"99":0.01475,"103":0.29795,"105":0.00295,"106":0.00295,"107":0.00885,"108":0.1062,"109":1.1269,"110":0.0295,"111":0.38645,"112":0.1593,"113":0.0531,"114":0.1003,"115":0.1888,"116":0.8201,"117":6.77615,"118":6.8971,"119":0.0177,"120":0.0177,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 50 51 52 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 70 71 72 73 74 75 76 80 83 84 85 86 88 90 94 95 96 97 100 101 102 104 121 122"},F:{"95":0.00295,"102":0.29205,"103":0.0944,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.0059,"100":0.00295,"106":0.00295,"108":0.00295,"109":0.03245,"110":0.00295,"111":0.1298,"113":0.0059,"114":0.0177,"115":0.0295,"116":0.06195,"117":3.07685,"118":2.85855,"119":0.00295,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 101 102 103 104 105 107 112"},E:{"13":0.00295,"14":0.0472,"15":0.00885,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.02655,"13.1":0.08555,"14.1":0.08555,"15.1":0.01475,"15.2-15.3":0.0118,"15.4":0.059,"15.5":0.05605,"15.6":0.2419,"16.0":0.03835,"16.1":0.09735,"16.2":0.52215,"16.3":0.2714,"16.4":0.09145,"16.5":0.23895,"16.6":1.4455,"17.0":0.6431,"17.1":0.059},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00289,"5.0-5.1":0.00289,"6.0-6.1":0.00867,"7.0-7.1":0.02023,"8.1-8.4":0.00289,"9.0-9.2":0.02023,"9.3":0.06937,"10.0-10.2":0.00289,"10.3":0.10117,"11.0-11.2":0.0925,"11.3-11.4":0.0318,"12.0-12.1":0.02601,"12.2-12.5":0.45959,"13.0-13.1":0.01445,"13.2":0.07804,"13.3":0.02891,"13.4-13.7":0.0925,"14.0-14.4":0.25436,"14.5-14.8":0.41045,"15.0-15.1":0.16187,"15.2-15.3":0.18499,"15.4":0.20523,"15.5":0.29194,"15.6-15.7":2.02046,"16.0":0.74575,"16.1":1.42791,"16.2":0.69661,"16.3":1.29205,"16.4":0.27749,"16.5":0.73997,"16.6-16.7":13.85995,"17.0":4.93697,"17.1":0.29772,"17.2":0.00867},P:{"4":0.0932,"20":0.12427,"21":0.24854,"22":6.02707,"23":1.34625,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0","7.2-7.4":0.0932,"11.1-11.2":0.02071,"13.0":0.06213,"14.0":0.07249,"15.0":0.01036,"16.0":0.01036,"17.0":0.13463,"18.0":0.03107,"19.0":0.05178},I:{"0":0.01403,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00004},A:{"8":0.00295,"11":0.0118,_:"6 7 9 10 5.5"},K:{"0":0.13395,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.44415},Q:{_:"13.1"},O:{"0":0.0141},H:{"0":0},L:{"0":33.2254}}; diff --git a/node_modules/caniuse-lite/data/regions/AX.js b/node_modules/caniuse-lite/data/regions/AX.js new file mode 100644 index 00000000..7232f741 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/AX.js @@ -0,0 +1 @@ +module.exports={C:{"78":0.00632,"101":0.00632,"108":0.04423,"110":0.01264,"115":0.21481,"116":0.10741,"117":0.16427,"118":3.58862,"119":0.76448,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 102 103 104 105 106 107 109 111 112 113 114 120 121 122 3.5 3.6"},D:{"49":0.01264,"76":0.15795,"79":0.01895,"85":0.00632,"87":0.21481,"92":0.01264,"94":0.01264,"103":0.16427,"109":1.54159,"111":0.00632,"113":0.01895,"114":0.19586,"115":0.08845,"116":2.43243,"117":19.81325,"118":18.67601,"119":0.03791,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 78 80 81 83 84 86 88 89 90 91 93 95 96 97 98 99 100 101 102 104 105 106 107 108 110 112 120 121 122"},F:{"97":0.00632,"102":1.30783,"103":0.03159,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"92":0.03791,"109":0.06318,"113":0.04423,"114":0.02527,"115":0.01264,"116":0.07582,"117":4.42892,"118":3.62021,"119":0.00632,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 110 111 112"},E:{"14":0.81502,"15":0.01895,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.02527,"13.1":0.10109,"14.1":0.139,"15.1":0.00632,"15.2-15.3":0.01264,"15.4":0.03159,"15.5":0.04423,"15.6":0.32222,"16.0":0.0695,"16.1":0.05686,"16.2":0.12004,"16.3":0.26536,"16.4":0.02527,"16.5":0.10109,"16.6":1.37101,"17.0":0.28431,"17.1":0.01264},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00054,"5.0-5.1":0.00054,"6.0-6.1":0.00162,"7.0-7.1":0.00379,"8.1-8.4":0.00054,"9.0-9.2":0.00379,"9.3":0.01299,"10.0-10.2":0.00054,"10.3":0.01894,"11.0-11.2":0.01732,"11.3-11.4":0.00595,"12.0-12.1":0.00487,"12.2-12.5":0.08606,"13.0-13.1":0.00271,"13.2":0.01461,"13.3":0.00541,"13.4-13.7":0.01732,"14.0-14.4":0.04763,"14.5-14.8":0.07686,"15.0-15.1":0.03031,"15.2-15.3":0.03464,"15.4":0.03843,"15.5":0.05467,"15.6-15.7":0.37834,"16.0":0.13964,"16.1":0.26738,"16.2":0.13044,"16.3":0.24194,"16.4":0.05196,"16.5":0.13856,"16.6-16.7":2.59531,"17.0":0.92446,"17.1":0.05575,"17.2":0.00162},P:{"4":0.01136,"21":0.05681,"22":3.7266,"23":0.52263,_:"20 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 15.0 16.0 17.0 18.0","14.0":0.01136,"19.0":0.04545},I:{"0":0.01465,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00004},A:{"11":0.00632,_:"6 7 8 9 10 5.5"},K:{"0":0.82109,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":2.6584},Q:{_:"13.1"},O:{_:"0"},H:{"0":0},L:{"0":24.66367}}; diff --git a/node_modules/caniuse-lite/data/regions/AZ.js b/node_modules/caniuse-lite/data/regions/AZ.js new file mode 100644 index 00000000..e7f6e5e0 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/AZ.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.01354,"68":0.00451,"78":0.00226,"79":0.00226,"95":0.00451,"101":0.00226,"102":0.00226,"111":0.00902,"112":0.00226,"113":0.00226,"115":0.07445,"116":0.00677,"117":0.01128,"118":0.25493,"119":0.04738,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 103 104 105 106 107 108 109 110 114 120 121 122 3.5 3.6"},D:{"11":0.00226,"22":0.00677,"26":0.00226,"38":0.00451,"41":0.00226,"42":0.00226,"49":0.02256,"53":0.00677,"56":0.00451,"63":0.00451,"65":0.00226,"66":0.00226,"68":0.00226,"69":0.00226,"70":0.00451,"71":0.00677,"72":0.00451,"73":0.00226,"74":0.00902,"75":0.00226,"76":0.00226,"77":0.00226,"78":0.00226,"79":0.13762,"80":0.02482,"81":0.00451,"83":0.02256,"84":0.00226,"85":0.00226,"86":0.00677,"87":0.05189,"88":0.01354,"89":0.00677,"90":0.01805,"91":0.00451,"92":0.00451,"93":0.00226,"94":0.00902,"95":0.00451,"96":0.00451,"97":0.00677,"98":0.00451,"99":0.00902,"100":0.03384,"101":0.01805,"102":0.01805,"103":0.02707,"104":0.01128,"105":0.01805,"106":0.03835,"107":0.06768,"108":0.04963,"109":2.89445,"110":0.00451,"111":0.02933,"112":0.06994,"113":0.01805,"114":0.06317,"115":0.06994,"116":0.42187,"117":5.96261,"118":6.23107,"119":0.01128,"120":0.00226,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 34 35 36 37 39 40 43 44 45 46 47 48 50 51 52 54 55 57 58 59 60 61 62 64 67 121 122"},F:{"28":0.00226,"36":0.00226,"40":0.00226,"46":0.00902,"55":0.00451,"65":0.00226,"79":0.01579,"82":0.00226,"83":0.00677,"84":0.01128,"85":0.04738,"86":0.00226,"87":0.00226,"92":0.00226,"93":0.01805,"95":0.12634,"99":0.00226,"100":0.00226,"101":0.00451,"102":0.6407,"103":0.24365,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 88 89 90 91 94 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.01354,"18":0.00451,"84":0.00226,"92":0.01128,"100":0.00226,"108":0.00226,"109":0.0361,"110":0.00226,"111":0.00451,"112":0.00451,"113":0.00451,"114":0.00677,"115":0.00451,"116":0.03384,"117":0.60912,"118":0.6768,"119":0.00226,_:"13 14 15 16 17 79 80 81 83 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103 104 105 106 107"},E:{"13":0.00226,"14":0.01354,"15":0.00226,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 10.1 11.1 12.1 15.2-15.3 17.2","5.1":0.38352,"9.1":0.01805,"13.1":0.00902,"14.1":0.02707,"15.1":0.00451,"15.4":0.01805,"15.5":0.02256,"15.6":0.05189,"16.0":0.00677,"16.1":0.06768,"16.2":0.00902,"16.3":0.05866,"16.4":0.01579,"16.5":0.02707,"16.6":0.1692,"17.0":0.09701,"17.1":0.00902},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00105,"5.0-5.1":0.00105,"6.0-6.1":0.00314,"7.0-7.1":0.00732,"8.1-8.4":0.00105,"9.0-9.2":0.00732,"9.3":0.02511,"10.0-10.2":0.00105,"10.3":0.03662,"11.0-11.2":0.03348,"11.3-11.4":0.01151,"12.0-12.1":0.00942,"12.2-12.5":0.16635,"13.0-13.1":0.00523,"13.2":0.02825,"13.3":0.01046,"13.4-13.7":0.03348,"14.0-14.4":0.09207,"14.5-14.8":0.14856,"15.0-15.1":0.05859,"15.2-15.3":0.06696,"15.4":0.07428,"15.5":0.10567,"15.6-15.7":0.7313,"16.0":0.26992,"16.1":0.51683,"16.2":0.25214,"16.3":0.46766,"16.4":0.10044,"16.5":0.26783,"16.6-16.7":5.0166,"17.0":1.78693,"17.1":0.10776,"17.2":0.00314},P:{"4":0.46219,"20":0.08217,"21":0.23623,"22":3.29694,"23":0.69842,_:"5.0-5.4 10.1 12.0","6.2-6.4":0.01027,"7.2-7.4":0.08217,"8.2":0.01027,"9.2":0.01027,"11.1-11.2":0.02054,"13.0":0.08217,"14.0":0.01027,"15.0":0.02054,"16.0":0.04108,"17.0":0.14379,"18.0":0.05135,"19.0":0.09244},I:{"0":0.04623,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00014},A:{"8":0.00451,"11":0.08798,_:"6 7 9 10 5.5"},K:{"0":1.23453,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00774,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.36397},Q:{_:"13.1"},O:{"0":0.15488},H:{"0":0.02},L:{"0":60.66739}}; diff --git a/node_modules/caniuse-lite/data/regions/BA.js b/node_modules/caniuse-lite/data/regions/BA.js new file mode 100644 index 00000000..44f66429 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BA.js @@ -0,0 +1 @@ +module.exports={C:{"43":0.00376,"52":0.09012,"56":0.00376,"64":0.00376,"66":0.00376,"68":0.00376,"72":0.00376,"78":0.00751,"84":0.00376,"88":0.00751,"89":0.00376,"91":0.00376,"97":0.00376,"99":0.01127,"101":0.00376,"102":0.00376,"103":0.00376,"108":0.00751,"109":0.00376,"110":0.01878,"111":0.00751,"112":0.00376,"113":0.00751,"114":0.00376,"115":0.9763,"116":0.01127,"117":0.04506,"118":1.88501,"119":0.35297,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 65 67 69 70 71 73 74 75 76 77 79 80 81 82 83 85 86 87 90 92 93 94 95 96 98 100 104 105 106 107 120 121 122 3.5 3.6"},D:{"11":0.00376,"38":0.00751,"39":0.00376,"41":0.00376,"43":0.00376,"44":0.00376,"45":0.00376,"46":0.00376,"47":0.00376,"49":0.07886,"51":0.00376,"53":0.04882,"56":0.00376,"58":0.00376,"59":0.00376,"63":0.00376,"65":0.00376,"68":0.02253,"69":0.00751,"70":0.00751,"71":0.00376,"72":0.00751,"73":0.00751,"74":0.00376,"75":0.00751,"76":0.00751,"77":0.00751,"78":0.01127,"79":0.3342,"80":0.00376,"81":0.00751,"83":0.02253,"84":0.01127,"85":0.01502,"86":0.01878,"87":0.07135,"88":0.01502,"89":0.01502,"90":0.01127,"91":0.01878,"92":0.01127,"93":0.01502,"94":0.04131,"95":0.00751,"96":0.01127,"97":0.01502,"98":0.00751,"99":0.02253,"100":0.02629,"101":0.00751,"102":0.01127,"103":0.03755,"104":0.04131,"105":0.01127,"106":0.01878,"107":0.05633,"108":0.05633,"109":4.29948,"110":0.0338,"111":0.03004,"112":0.05633,"113":0.03755,"114":0.10514,"115":0.11641,"116":0.751,"117":10.26617,"118":10.57784,"119":0.00751,"120":0.00376,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 42 48 50 52 54 55 57 60 61 62 64 66 67 121 122"},F:{"28":0.04506,"36":0.01127,"40":0.00376,"46":0.04506,"69":0.00376,"72":0.00376,"79":0.00376,"85":0.00376,"86":0.00376,"95":0.09763,"96":0.01878,"100":0.00376,"101":0.00751,"102":1.02887,"103":0.37175,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 73 74 75 76 77 78 80 81 82 83 84 87 88 89 90 91 92 93 94 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"14":0.00751,"17":0.00376,"18":0.00751,"85":0.02253,"89":0.00376,"92":0.01127,"102":0.00376,"106":0.00376,"108":0.01127,"109":0.05633,"112":0.00751,"113":0.00751,"114":0.02253,"115":0.02253,"116":0.01878,"117":1.07393,"118":1.1603,"119":0.00376,_:"12 13 15 16 79 80 81 83 84 86 87 88 90 91 93 94 95 96 97 98 99 100 101 103 104 105 107 110 111"},E:{"9":0.00751,"14":0.01878,"15":0.00376,_:"0 4 5 6 7 8 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.01127,"13.1":0.02253,"14.1":0.02253,"15.1":0.01502,"15.2-15.3":0.00376,"15.4":0.00751,"15.5":0.02253,"15.6":0.12016,"16.0":0.02629,"16.1":0.02253,"16.2":0.02253,"16.3":0.05257,"16.4":0.00751,"16.5":0.0751,"16.6":0.31542,"17.0":0.29665,"17.1":0.01502},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00084,"5.0-5.1":0.00084,"6.0-6.1":0.00253,"7.0-7.1":0.00591,"8.1-8.4":0.00084,"9.0-9.2":0.00591,"9.3":0.02026,"10.0-10.2":0.00084,"10.3":0.02955,"11.0-11.2":0.02702,"11.3-11.4":0.00929,"12.0-12.1":0.0076,"12.2-12.5":0.13425,"13.0-13.1":0.00422,"13.2":0.0228,"13.3":0.00844,"13.4-13.7":0.02702,"14.0-14.4":0.0743,"14.5-14.8":0.11989,"15.0-15.1":0.04728,"15.2-15.3":0.05404,"15.4":0.05995,"15.5":0.08528,"15.6-15.7":0.59018,"16.0":0.21784,"16.1":0.4171,"16.2":0.20348,"16.3":0.37741,"16.4":0.08106,"16.5":0.21615,"16.6-16.7":4.04853,"17.0":1.44211,"17.1":0.08697,"17.2":0.00253},P:{"4":0.59473,"20":0.07178,"21":0.17432,"22":2.95314,"23":0.70752,"5.0-5.4":0.03076,"6.2-6.4":0.01025,"7.2-7.4":0.05127,_:"8.2 10.1 12.0","9.2":0.01025,"11.1-11.2":0.03076,"13.0":0.04102,"14.0":0.01025,"15.0":0.01025,"16.0":0.03076,"17.0":0.03076,"18.0":0.02051,"19.0":0.06152},I:{"0":0.13669,"3":0,"4":0.00003,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00003,"4.2-4.3":0.0001,"4.4":0,"4.4.3-4.4.4":0.00041},A:{"7":0.00376,"8":0.02253,"9":0.00376,"10":0.00376,"11":0.0751,_:"6 5.5"},K:{"0":0.31225,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.29352},Q:{_:"13.1"},O:{"0":0.03747},H:{"0":0},L:{"0":49.25517}}; diff --git a/node_modules/caniuse-lite/data/regions/BB.js b/node_modules/caniuse-lite/data/regions/BB.js new file mode 100644 index 00000000..a6f82ba7 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BB.js @@ -0,0 +1 @@ +module.exports={C:{"78":0.00465,"101":0.08377,"108":0.00465,"110":0.00931,"113":0.00465,"115":0.08377,"117":0.04189,"118":1.8011,"119":0.2932,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 102 103 104 105 106 107 109 111 112 114 116 120 121 122 3.5 3.6"},D:{"49":0.01396,"50":0.01862,"58":0.00465,"65":0.00465,"74":0.01396,"76":0.01396,"77":0.00465,"79":0.21408,"80":0.08843,"81":0.00931,"83":0.07912,"84":0.01396,"85":0.03258,"87":0.07912,"89":0.00931,"93":0.04654,"95":0.00465,"96":0.00465,"97":0.02327,"98":0.00465,"99":0.00465,"102":0.00465,"103":0.26062,"104":0.00465,"105":0.01396,"106":0.00931,"107":0.00931,"109":1.03319,"110":0.00465,"111":0.00931,"112":0.05585,"113":0.01396,"114":0.21874,"115":0.1117,"116":1.52186,"117":13.54314,"118":13.52918,"119":0.03723,"120":0.00465,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 51 52 53 54 55 56 57 59 60 61 62 63 64 66 67 68 69 70 71 72 73 75 78 86 88 90 91 92 94 100 101 108 121 122"},F:{"89":0.00931,"95":0.01396,"97":0.00931,"101":0.00465,"102":0.9308,"103":0.15358,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 90 91 92 93 94 96 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"16":0.03258,"18":0.00465,"108":0.00465,"109":0.01862,"110":0.00465,"114":0.00465,"115":0.00465,"116":0.04189,"117":3.32296,"118":3.38811,_:"12 13 14 15 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 111 112 113 119"},E:{"13":0.00465,"14":0.00465,"15":0.00465,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.00465,"13.1":0.02792,"14.1":0.1117,"15.1":0.01396,"15.2-15.3":0.00465,"15.4":0.03258,"15.5":0.08377,"15.6":0.32113,"16.0":0.01862,"16.1":0.19081,"16.2":0.03723,"16.3":0.1722,"16.4":0.06516,"16.5":0.13497,"16.6":2.02449,"17.0":0.55848,"17.1":0.02792},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00141,"5.0-5.1":0.00141,"6.0-6.1":0.00424,"7.0-7.1":0.0099,"8.1-8.4":0.00141,"9.0-9.2":0.0099,"9.3":0.03395,"10.0-10.2":0.00141,"10.3":0.04951,"11.0-11.2":0.04527,"11.3-11.4":0.01556,"12.0-12.1":0.01273,"12.2-12.5":0.22491,"13.0-13.1":0.00707,"13.2":0.03819,"13.3":0.01415,"13.4-13.7":0.04527,"14.0-14.4":0.12448,"14.5-14.8":0.20087,"15.0-15.1":0.07921,"15.2-15.3":0.09053,"15.4":0.10043,"15.5":0.14287,"15.6-15.7":0.98877,"16.0":0.36495,"16.1":0.69879,"16.2":0.34091,"16.3":0.6323,"16.4":0.1358,"16.5":0.36213,"16.6-16.7":6.78277,"17.0":2.41605,"17.1":0.1457,"17.2":0.00424},P:{"4":0.15825,"20":0.18086,"21":0.24868,"22":3.69627,"23":0.9382,_:"5.0-5.4 8.2 9.2 10.1 11.1-11.2 15.0","6.2-6.4":0.0113,"7.2-7.4":0.18086,"12.0":0.0113,"13.0":0.04521,"14.0":0.04521,"16.0":0.02261,"17.0":0.11304,"18.0":0.04521,"19.0":0.03391},I:{"0":0.01064,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00003},A:{"11":0.01396,_:"6 7 8 9 10 5.5"},K:{"0":0.24592,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.43837},Q:{_:"13.1"},O:{"0":0.05881},H:{"0":0},L:{"0":33.69913}}; diff --git a/node_modules/caniuse-lite/data/regions/BD.js b/node_modules/caniuse-lite/data/regions/BD.js new file mode 100644 index 00000000..daa5c24b --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BD.js @@ -0,0 +1 @@ +module.exports={C:{"37":0.00264,"40":0.01849,"43":0.00264,"44":0.00264,"47":0.00264,"49":0.00528,"52":0.01849,"56":0.00264,"65":0.00528,"68":0.00264,"72":0.00528,"75":0.00264,"78":0.00264,"80":0.00264,"81":0.00264,"86":0.00264,"87":0.01056,"89":0.00264,"91":0.00264,"99":0.00264,"102":0.01056,"103":0.00264,"104":0.00264,"105":0.01056,"106":0.01321,"107":0.01056,"108":0.01585,"109":0.00792,"110":0.01849,"111":0.01321,"112":0.00264,"113":0.00792,"114":0.00528,"115":0.64705,"116":0.02905,"117":0.05018,"118":1.43935,"119":0.33013,"120":0.01585,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 41 42 45 46 48 50 51 53 54 55 57 58 59 60 61 62 63 64 66 67 69 70 71 73 74 76 77 79 82 83 84 85 88 90 92 93 94 95 96 97 98 100 101 121 122 3.5 3.6"},D:{"38":0.00264,"41":0.00528,"46":0.00264,"48":0.00528,"49":0.00528,"50":0.00264,"53":0.00264,"56":0.00528,"58":0.00264,"63":0.00264,"64":0.00264,"65":0.00528,"66":0.00264,"68":0.00264,"69":0.00792,"70":0.00528,"71":0.00264,"72":0.00264,"73":0.01056,"74":0.00792,"75":0.01056,"76":0.00264,"77":0.00528,"78":0.00792,"79":0.01585,"80":0.00528,"81":0.02113,"83":0.00792,"84":0.00528,"85":0.07659,"86":0.02377,"87":0.01585,"88":0.01056,"89":0.00792,"90":0.00528,"91":0.00792,"92":0.00528,"93":0.01056,"94":0.01849,"95":0.01321,"96":0.00528,"97":0.01056,"98":0.00792,"99":0.00792,"100":0.01056,"101":0.00792,"102":0.02113,"103":0.03697,"104":0.01056,"105":0.07131,"106":0.14526,"107":0.16902,"108":0.20864,"109":1.76419,"110":0.12413,"111":0.1162,"112":0.11885,"113":0.03169,"114":0.07395,"115":0.06074,"116":0.26674,"117":7.04091,"118":7.16767,"119":0.0449,"120":0.02377,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 47 51 52 54 55 57 59 60 61 62 67 121 122"},F:{"28":0.00264,"36":0.00264,"46":0.00264,"70":0.00264,"75":0.00264,"78":0.00264,"79":0.00264,"85":0.00264,"90":0.00264,"91":0.00528,"92":0.00528,"93":0.01056,"94":0.01321,"95":0.03433,"96":0.00528,"97":0.00264,"99":0.00264,"100":0.00264,"101":0.00264,"102":0.3222,"103":0.13733,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 76 77 80 81 82 83 84 86 87 88 89 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00528,"16":0.00264,"18":0.01056,"84":0.00264,"85":0.00264,"86":0.00264,"89":0.00264,"92":0.02113,"100":0.00264,"101":0.00264,"103":0.00792,"104":0.00264,"105":0.00264,"106":0.01321,"107":0.02905,"108":0.03433,"109":0.03697,"110":0.02113,"111":0.01849,"112":0.00528,"113":0.00264,"114":0.00528,"115":0.00528,"116":0.01056,"117":0.50443,"118":0.4833,"119":0.00528,_:"13 14 15 17 79 80 81 83 87 88 90 91 93 94 95 96 97 98 99 102"},E:{"8":0.00264,"14":0.00528,_:"0 4 5 6 7 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.1 15.2-15.3 17.2","13.1":0.00528,"14.1":0.01321,"15.4":0.00528,"15.5":0.00792,"15.6":0.02905,"16.0":0.00528,"16.1":0.01056,"16.2":0.00792,"16.3":0.01585,"16.4":0.00528,"16.5":0.01056,"16.6":0.07131,"17.0":0.07131,"17.1":0.00792},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00023,"5.0-5.1":0.00023,"6.0-6.1":0.00068,"7.0-7.1":0.00159,"8.1-8.4":0.00023,"9.0-9.2":0.00159,"9.3":0.00544,"10.0-10.2":0.00023,"10.3":0.00793,"11.0-11.2":0.00725,"11.3-11.4":0.00249,"12.0-12.1":0.00204,"12.2-12.5":0.03603,"13.0-13.1":0.00113,"13.2":0.00612,"13.3":0.00227,"13.4-13.7":0.00725,"14.0-14.4":0.01994,"14.5-14.8":0.03218,"15.0-15.1":0.01269,"15.2-15.3":0.0145,"15.4":0.01609,"15.5":0.02289,"15.6-15.7":0.15841,"16.0":0.05847,"16.1":0.11195,"16.2":0.05462,"16.3":0.1013,"16.4":0.02176,"16.5":0.05802,"16.6-16.7":1.08667,"17.0":0.38708,"17.1":0.02334,"17.2":0.00068},P:{"4":0.17775,"20":0.03137,"21":0.05228,"22":0.47052,"23":0.08365,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 14.0 15.0","7.2-7.4":0.06274,"11.1-11.2":0.01046,"13.0":0.01046,"16.0":0.02091,"17.0":0.03137,"18.0":0.01046,"19.0":0.03137},I:{"0":0.08053,"3":0,"4":0.00002,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00024},A:{"7":0.01098,"8":0.01098,"9":0.00274,"10":0.00274,"11":0.11253,_:"6 5.5"},K:{"0":2.0974,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.01472,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.09565},Q:{_:"13.1"},O:{"0":3.679},H:{"0":0.11},L:{"0":67.51111}}; diff --git a/node_modules/caniuse-lite/data/regions/BE.js b/node_modules/caniuse-lite/data/regions/BE.js new file mode 100644 index 00000000..2a615ef4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BE.js @@ -0,0 +1 @@ +module.exports={C:{"48":0.00561,"52":0.02243,"68":0.00561,"78":0.05608,"83":0.01122,"87":0.0729,"91":0.00561,"102":0.03926,"104":0.01122,"107":0.00561,"108":0.00561,"109":0.00561,"110":0.00561,"111":0.00561,"113":0.01682,"114":0.00561,"115":0.35891,"116":0.02243,"117":0.11777,"118":2.70306,"119":0.52715,"120":0.00561,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 88 89 90 92 93 94 95 96 97 98 99 100 101 103 105 106 112 121 122 3.5 3.6"},D:{"38":0.00561,"49":0.03926,"65":0.00561,"66":0.03365,"67":0.00561,"72":0.00561,"74":0.07851,"75":0.0729,"76":0.07851,"77":0.0729,"78":1.17768,"79":1.55342,"80":0.01122,"81":0.01122,"83":0.08412,"84":0.00561,"85":0.01122,"86":0.00561,"87":0.02243,"88":0.00561,"89":0.02243,"90":0.01122,"91":0.00561,"92":0.00561,"93":0.04486,"94":0.00561,"95":0.16263,"96":0.00561,"97":0.00561,"98":0.00561,"99":0.00561,"100":0.01122,"101":0.00561,"102":0.00561,"103":0.09534,"104":0.01122,"105":0.0673,"106":0.02243,"107":0.03926,"108":0.05047,"109":0.97018,"110":0.02243,"111":0.03926,"112":0.04486,"113":0.0673,"114":0.24675,"115":0.2075,"116":1.53659,"117":14.02561,"118":13.54332,"119":0.01682,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 68 69 70 71 73 120 121 122"},F:{"46":0.00561,"95":0.02243,"100":0.00561,"101":0.00561,"102":1.51416,"103":0.22993,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00561,"92":0.00561,"94":0.00561,"102":0.00561,"104":0.00561,"105":0.00561,"106":0.00561,"107":0.00561,"108":0.01682,"109":0.12898,"110":0.00561,"111":0.00561,"112":0.02243,"113":0.02804,"114":0.05608,"115":0.04486,"116":0.17946,"117":4.14431,"118":3.91999,"119":0.01122,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 95 96 97 98 99 100 101 103"},E:{"13":0.00561,"14":0.0673,"15":0.01682,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 11.1 17.2","9.1":0.01122,"12.1":0.03365,"13.1":0.18506,"14.1":0.23554,"15.1":0.03365,"15.2-15.3":0.05047,"15.4":0.0673,"15.5":0.10094,"15.6":0.67857,"16.0":0.05608,"16.1":0.15142,"16.2":0.15702,"16.3":0.3533,"16.4":0.15702,"16.5":0.38695,"16.6":2.3105,"17.0":1.02626,"17.1":0.0673},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00198,"5.0-5.1":0.00198,"6.0-6.1":0.00593,"7.0-7.1":0.01384,"8.1-8.4":0.00198,"9.0-9.2":0.01384,"9.3":0.04746,"10.0-10.2":0.00198,"10.3":0.06922,"11.0-11.2":0.06329,"11.3-11.4":0.02175,"12.0-12.1":0.0178,"12.2-12.5":0.31446,"13.0-13.1":0.00989,"13.2":0.0534,"13.3":0.01978,"13.4-13.7":0.06329,"14.0-14.4":0.17404,"14.5-14.8":0.28083,"15.0-15.1":0.11075,"15.2-15.3":0.12657,"15.4":0.14042,"15.5":0.19975,"15.6-15.7":1.38242,"16.0":0.51025,"16.1":0.97699,"16.2":0.47663,"16.3":0.88403,"16.4":0.18986,"16.5":0.50629,"16.6-16.7":9.4831,"17.0":3.37792,"17.1":0.2037,"17.2":0.00593},P:{"4":0.04255,"20":0.03191,"21":0.08511,"22":2.57443,"23":0.57446,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 11.1-11.2 12.0 14.0 15.0 16.0","7.2-7.4":0.01064,"13.0":0.01064,"17.0":0.01064,"18.0":0.01064,"19.0":0.02128},I:{"0":0.06553,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.0002},A:{"8":0.00608,"11":0.06683,_:"6 7 9 10 5.5"},K:{"0":0.14929,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.33811},Q:{_:"13.1"},O:{"0":0.01756},H:{"0":0},L:{"0":20.36844}}; diff --git a/node_modules/caniuse-lite/data/regions/BF.js b/node_modules/caniuse-lite/data/regions/BF.js new file mode 100644 index 00000000..abafd17a --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BF.js @@ -0,0 +1 @@ +module.exports={C:{"30":0.00246,"33":0.00246,"43":0.00246,"47":0.00491,"48":0.00246,"52":0.00491,"62":0.00246,"63":0.00491,"72":0.01228,"76":0.00246,"78":0.00246,"85":0.46418,"93":0.00246,"99":0.01474,"100":0.02456,"102":0.00491,"103":0.00246,"107":0.00246,"108":0.00246,"109":0.00246,"110":0.00246,"111":0.02456,"113":0.00491,"114":0.02947,"115":0.89398,"116":0.0614,"117":0.0614,"118":2.3111,"119":0.35121,"120":0.00491,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 34 35 36 37 38 39 40 41 42 44 45 46 49 50 51 53 54 55 56 57 58 59 60 61 64 65 66 67 68 69 70 71 73 74 75 77 79 80 81 82 83 84 86 87 88 89 90 91 92 94 95 96 97 98 101 104 105 106 112 121 122 3.5 3.6"},D:{"17":0.00246,"28":0.00246,"31":0.00246,"34":0.00246,"41":0.00491,"49":0.00246,"50":0.00246,"64":0.00246,"65":0.00737,"68":0.00246,"72":0.00246,"73":0.00246,"74":0.00491,"75":0.00491,"79":0.11543,"80":0.00246,"81":0.00246,"84":0.00246,"85":0.00246,"87":0.01228,"88":0.00246,"89":0.00246,"91":0.02702,"92":0.00246,"93":0.01228,"94":0.00246,"95":0.01474,"96":0.00246,"97":0.03438,"98":0.00246,"99":0.00246,"100":0.00491,"102":0.00737,"103":0.05158,"104":0.01965,"105":0.00737,"106":0.00491,"107":0.00246,"108":0.01474,"109":1.65043,"110":0.02947,"111":0.00491,"112":0.21367,"113":0.00982,"114":0.04175,"115":0.02702,"116":0.24069,"117":2.94966,"118":3.97872,"119":0.00982,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 29 30 32 33 35 36 37 38 39 40 42 43 44 45 46 47 48 51 52 53 54 55 56 57 58 59 60 61 62 63 66 67 69 70 71 76 77 78 83 86 90 101 120 121 122"},F:{"40":0.00246,"79":0.00491,"84":0.00246,"85":0.00246,"86":0.00246,"95":0.0614,"101":0.03193,"102":0.53295,"103":0.47155,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00491,"13":0.00737,"14":0.00246,"15":0.00246,"16":0.00246,"17":0.00246,"18":0.04666,"84":0.00491,"89":0.00246,"90":0.00246,"92":0.04912,"98":0.00246,"100":0.00246,"103":0.00246,"104":0.00246,"105":0.02702,"107":0.00246,"108":0.00737,"109":0.0393,"110":0.00246,"112":0.00246,"113":0.00246,"114":0.01965,"115":0.03684,"116":0.18666,"117":1.8027,"118":1.7806,"119":0.00246,_:"79 80 81 83 85 86 87 88 91 93 94 95 96 97 99 101 102 106 111"},E:{"13":0.00491,"14":0.00246,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 15.4 17.2","5.1":0.00737,"12.1":0.00491,"13.1":0.10315,"14.1":0.00246,"15.1":0.00246,"15.2-15.3":0.00491,"15.5":0.00246,"15.6":0.02456,"16.0":0.00246,"16.1":0.00246,"16.2":0.00491,"16.3":0.02456,"16.4":0.00737,"16.5":0.02702,"16.6":0.05649,"17.0":0.09087,"17.1":0.01228},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00039,"5.0-5.1":0.00039,"6.0-6.1":0.00117,"7.0-7.1":0.00274,"8.1-8.4":0.00039,"9.0-9.2":0.00274,"9.3":0.00938,"10.0-10.2":0.00039,"10.3":0.01368,"11.0-11.2":0.0125,"11.3-11.4":0.0043,"12.0-12.1":0.00352,"12.2-12.5":0.06213,"13.0-13.1":0.00195,"13.2":0.01055,"13.3":0.00391,"13.4-13.7":0.0125,"14.0-14.4":0.03439,"14.5-14.8":0.05549,"15.0-15.1":0.02188,"15.2-15.3":0.02501,"15.4":0.02775,"15.5":0.03947,"15.6-15.7":0.27315,"16.0":0.10082,"16.1":0.19304,"16.2":0.09418,"16.3":0.17468,"16.4":0.03751,"16.5":0.10004,"16.6-16.7":1.87379,"17.0":0.66745,"17.1":0.04025,"17.2":0.00117},P:{"4":0.06068,"20":0.0708,"21":0.05057,"22":0.49558,"23":0.12137,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 11.1-11.2 12.0 14.0 15.0 16.0","7.2-7.4":0.05057,"13.0":0.01011,"17.0":0.01011,"18.0":0.01011,"19.0":0.04046},I:{"0":0.09007,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00027},A:{"11":0.02702,_:"6 7 8 9 10 5.5"},K:{"0":2.49656,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00754,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.10562},Q:{"13.1":0.09807},O:{"0":0.33948},H:{"0":1.2},L:{"0":71.01358}}; diff --git a/node_modules/caniuse-lite/data/regions/BG.js b/node_modules/caniuse-lite/data/regions/BG.js new file mode 100644 index 00000000..16de0b6a --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BG.js @@ -0,0 +1 @@ +module.exports={C:{"38":0.00319,"45":0.07328,"48":0.09558,"50":0.00319,"52":0.10195,"56":0.00319,"57":0.00319,"60":0.00319,"65":0.00319,"66":0.01912,"67":0.00319,"68":0.00637,"72":0.00637,"75":0.00319,"78":0.02549,"80":0.00956,"81":0.00319,"83":0.01593,"84":0.01274,"85":0.00319,"86":0.00319,"87":0.00319,"88":0.01274,"89":0.00319,"90":0.00637,"91":0.00637,"94":0.00319,"95":0.00319,"96":0.00956,"97":0.00319,"98":0.00637,"99":0.01274,"100":0.00637,"102":0.02867,"103":0.00956,"104":0.00637,"105":0.00319,"106":0.00637,"107":0.00637,"108":0.0223,"109":0.00637,"110":0.00637,"111":0.00956,"112":0.01593,"113":0.01912,"114":0.01274,"115":1.03545,"116":0.01912,"117":0.09877,"118":2.25569,"119":0.47471,"120":0.00319,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 46 47 49 51 53 54 55 58 59 61 62 63 64 69 70 71 73 74 76 77 79 82 92 93 101 121 122 3.5 3.6"},D:{"5":0.00319,"9":0.00319,"26":0.00319,"33":0.01274,"38":0.00637,"41":0.00637,"49":0.06691,"53":0.00319,"55":0.00319,"63":0.00637,"67":0.00319,"69":0.00319,"70":0.00319,"71":0.00637,"73":0.00319,"74":0.00319,"75":0.00319,"76":0.00319,"77":0.00319,"78":0.00319,"79":0.05098,"80":0.00319,"81":0.00956,"83":0.01274,"84":0.00319,"85":0.01593,"86":0.01274,"87":0.02549,"88":0.00956,"89":0.00637,"90":0.00956,"91":0.00637,"92":0.00637,"93":0.0223,"94":0.00637,"95":0.01274,"96":0.00319,"97":0.00956,"98":0.00956,"99":0.01912,"100":0.01274,"101":0.00319,"102":0.02549,"103":0.03186,"104":0.01274,"105":0.00956,"106":0.02549,"107":0.01912,"108":0.04142,"109":3.18281,"110":0.01912,"111":0.02549,"112":0.02867,"113":0.02549,"114":0.06053,"115":0.07965,"116":0.59897,"117":7.86942,"118":8.42697,"119":0.01274,"120":0.00319,_:"4 6 7 8 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 34 35 36 37 39 40 42 43 44 45 46 47 48 50 51 52 54 56 57 58 59 60 61 62 64 65 66 68 72 121 122"},F:{"28":0.0223,"36":0.00637,"40":0.00319,"46":0.01274,"55":0.00319,"64":0.00319,"78":0.00319,"79":0.00319,"81":0.00319,"83":0.00319,"85":0.00637,"89":0.00319,"91":0.00319,"93":0.00319,"94":0.00637,"95":0.11788,"96":0.00319,"97":0.00319,"99":0.00319,"100":0.00319,"101":0.00956,"102":0.85703,"103":0.29311,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 56 57 58 60 62 63 65 66 67 68 69 70 71 72 73 74 75 76 77 80 82 84 86 87 88 90 92 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"15":0.00319,"16":0.00319,"18":0.00956,"92":0.00319,"106":0.00319,"107":0.00637,"108":0.00956,"109":0.09558,"110":0.00637,"111":0.00319,"112":0.00637,"113":0.00637,"114":0.01274,"115":0.01274,"116":0.04779,"117":1.23298,"118":1.36998,"119":0.00319,_:"12 13 14 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105"},E:{"8":0.00319,"14":0.01593,"15":0.00319,_:"0 4 5 6 7 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.00637,"13.1":0.01593,"14.1":0.0446,"15.1":0.00319,"15.2-15.3":0.00319,"15.4":0.00637,"15.5":0.01274,"15.6":0.06372,"16.0":0.00637,"16.1":0.0223,"16.2":0.01912,"16.3":0.03505,"16.4":0.01274,"16.5":0.03823,"16.6":0.2039,"17.0":0.14018,"17.1":0.00956},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0009,"5.0-5.1":0.0009,"6.0-6.1":0.0027,"7.0-7.1":0.00631,"8.1-8.4":0.0009,"9.0-9.2":0.00631,"9.3":0.02163,"10.0-10.2":0.0009,"10.3":0.03155,"11.0-11.2":0.02884,"11.3-11.4":0.00991,"12.0-12.1":0.00811,"12.2-12.5":0.14332,"13.0-13.1":0.00451,"13.2":0.02434,"13.3":0.00901,"13.4-13.7":0.02884,"14.0-14.4":0.07932,"14.5-14.8":0.12799,"15.0-15.1":0.05048,"15.2-15.3":0.05769,"15.4":0.064,"15.5":0.09104,"15.6-15.7":0.63005,"16.0":0.23255,"16.1":0.44527,"16.2":0.21723,"16.3":0.40291,"16.4":0.08653,"16.5":0.23075,"16.6-16.7":4.32202,"17.0":1.53952,"17.1":0.09284,"17.2":0.0027},P:{"4":0.07187,"20":0.09241,"21":0.16428,"22":2.52587,"23":0.49285,"5.0-5.4":0.01027,"6.2-6.4":0.01027,"7.2-7.4":0.01027,_:"8.2 9.2 10.1","11.1-11.2":0.02054,"12.0":0.01027,"13.0":0.02054,"14.0":0.02054,"15.0":0.01027,"16.0":0.0308,"17.0":0.0308,"18.0":0.0308,"19.0":0.07187},I:{"0":0.2169,"3":0,"4":0.00004,"2.1":0,"2.2":0.00007,"2.3":0,"4.1":0.00004,"4.2-4.3":0.00015,"4.4":0,"4.4.3-4.4.4":0.00065},A:{"8":0.00333,"11":0.14641,_:"6 7 9 10 5.5"},K:{"0":0.29296,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.18395},Q:{_:"13.1"},O:{"0":0.02044},H:{"0":0},L:{"0":55.84006}}; diff --git a/node_modules/caniuse-lite/data/regions/BH.js b/node_modules/caniuse-lite/data/regions/BH.js new file mode 100644 index 00000000..3e02eb80 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BH.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.0031,"52":0.00619,"78":0.0031,"105":0.00929,"113":0.00619,"114":0.0031,"115":0.08047,"117":0.02476,"118":0.57258,"119":0.09285,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 106 107 108 109 110 111 112 116 120 121 122 3.5 3.6"},D:{"11":0.0031,"38":0.0031,"47":0.00619,"49":0.0031,"50":0.0031,"56":0.0031,"58":0.11142,"64":0.0031,"65":0.00619,"66":0.00619,"68":0.01548,"70":0.0031,"73":0.0031,"75":0.0031,"76":0.00929,"78":0.0031,"79":0.08357,"80":0.0031,"81":0.0031,"83":0.00929,"85":0.00619,"86":0.01238,"87":0.05571,"88":0.00929,"89":0.00619,"90":0.0031,"91":0.01548,"92":0.0031,"93":0.02167,"94":0.01548,"95":0.00619,"96":0.00929,"97":0.0031,"98":0.00929,"99":0.00929,"100":0.0031,"101":0.01857,"102":0.01548,"103":0.08976,"104":0.0031,"105":0.01857,"106":0.01548,"107":0.02476,"108":0.01238,"109":1.03373,"110":0.01548,"111":0.01548,"112":0.04333,"113":0.04643,"114":0.13928,"115":0.0619,"116":0.76447,"117":9.46761,"118":9.79258,"119":0.01238,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 51 52 53 54 55 57 59 60 61 62 63 67 69 71 72 74 77 84 120 121 122"},F:{"28":0.01857,"36":0.02167,"46":0.01857,"78":0.0031,"83":0.0031,"90":0.0031,"95":0.00619,"96":0.0031,"98":0.0031,"99":0.04643,"100":0.02476,"101":0.13309,"102":0.24141,"103":0.0619,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 87 88 89 91 92 93 94 97 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"15":0.0031,"18":0.00929,"92":0.02786,"100":0.03714,"107":0.0031,"108":0.01548,"109":0.08976,"110":0.0031,"111":0.0031,"112":0.01238,"113":0.03095,"114":0.02167,"115":0.1888,"116":0.04643,"117":1.95914,"118":1.77963,"119":0.0031,_:"12 13 14 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103 104 105 106"},E:{"13":0.00929,"14":0.05571,"15":0.0031,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.00619,"12.1":0.0031,"13.1":0.03095,"14.1":0.04024,"15.1":0.00929,"15.2-15.3":0.01238,"15.4":0.01548,"15.5":0.03405,"15.6":0.16713,"16.0":0.00929,"16.1":0.05571,"16.2":0.03095,"16.3":0.10833,"16.4":0.03714,"16.5":0.14856,"16.6":0.54163,"17.0":0.40854,"17.1":0.02167},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00172,"5.0-5.1":0.00172,"6.0-6.1":0.00515,"7.0-7.1":0.01201,"8.1-8.4":0.00172,"9.0-9.2":0.01201,"9.3":0.04118,"10.0-10.2":0.00172,"10.3":0.06006,"11.0-11.2":0.05491,"11.3-11.4":0.01887,"12.0-12.1":0.01544,"12.2-12.5":0.27283,"13.0-13.1":0.00858,"13.2":0.04633,"13.3":0.01716,"13.4-13.7":0.05491,"14.0-14.4":0.151,"14.5-14.8":0.24366,"15.0-15.1":0.09609,"15.2-15.3":0.10982,"15.4":0.12183,"15.5":0.17331,"15.6-15.7":1.19941,"16.0":0.4427,"16.1":0.84765,"16.2":0.41353,"16.3":0.767,"16.4":0.16473,"16.5":0.43927,"16.6-16.7":8.2277,"17.0":2.93074,"17.1":0.17674,"17.2":0.00515},P:{"4":0.09283,"20":0.05157,"21":0.11346,"22":2.1557,"23":0.4332,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 15.0","7.2-7.4":0.04126,"11.1-11.2":0.10314,"12.0":0.01031,"13.0":0.01031,"14.0":0.02063,"16.0":0.02063,"17.0":0.18566,"18.0":0.02063,"19.0":0.04126},I:{"0":0.08244,"3":0,"4":0.00002,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00025},A:{"11":0.03714,_:"6 7 8 9 10 5.5"},K:{"0":1.44696,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.47645},Q:{_:"13.1"},O:{"0":3.12797},H:{"0":0.01},L:{"0":44.59259}}; diff --git a/node_modules/caniuse-lite/data/regions/BI.js b/node_modules/caniuse-lite/data/regions/BI.js new file mode 100644 index 00000000..ac1d271e --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BI.js @@ -0,0 +1 @@ +module.exports={C:{"47":0.00226,"50":0.00226,"52":0.00903,"56":0.00677,"72":0.00677,"75":0.00226,"91":0.00226,"93":0.00226,"101":0.02483,"102":0.00903,"107":0.00226,"110":0.02483,"111":0.00226,"113":0.00226,"114":0.00677,"115":0.14671,"116":0.00903,"117":0.06094,"118":0.9344,"119":0.18056,"120":0.00226,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 92 94 95 96 97 98 99 100 103 104 105 106 108 109 112 121 122 3.5 3.6"},D:{"38":0.00451,"43":0.00226,"48":0.0158,"52":0.00226,"59":0.00226,"63":0.00451,"64":0.08802,"65":0.00903,"66":0.00226,"67":0.01129,"68":0.00677,"70":0.00677,"72":0.02708,"73":0.01129,"74":0.00226,"75":0.00677,"76":0.00226,"77":0.00226,"79":0.08577,"80":0.00677,"83":0.00903,"84":0.00226,"85":0.00451,"87":0.00677,"88":0.00226,"89":0.00226,"90":0.00451,"91":0.0474,"92":0.02031,"93":0.0474,"94":0.04965,"95":0.00451,"96":0.00226,"97":0.01354,"99":0.01354,"101":0.00677,"103":0.02708,"104":0.00226,"105":0.01354,"106":0.01354,"107":0.00451,"108":0.01354,"109":1.07885,"110":0.00226,"111":0.00903,"112":0.03611,"113":0.03386,"114":0.03611,"115":0.04965,"116":0.36338,"117":3.76919,"118":3.92267,"119":0.14445,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 47 49 50 51 53 54 55 56 57 58 60 61 62 69 71 78 81 86 98 100 102 120 121 122"},F:{"37":0.00226,"42":0.00226,"48":0.00226,"68":0.00226,"79":0.00226,"89":0.00226,"95":0.04514,"97":0.00226,"99":0.00677,"101":0.00903,"102":0.20539,"103":0.16702,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 43 44 45 46 47 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 85 86 87 88 90 91 92 93 94 96 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.0158,"13":0.00451,"14":0.00226,"16":0.00451,"17":0.01129,"18":0.03386,"84":0.00226,"89":0.00677,"90":0.00903,"92":0.03611,"100":0.01354,"104":0.00226,"105":0.00226,"108":0.00226,"109":0.00451,"110":0.08802,"111":0.02934,"112":0.00226,"113":0.00451,"114":0.07222,"115":0.01354,"116":0.01806,"117":0.71096,"118":0.89829,_:"15 79 80 81 83 85 86 87 88 91 93 94 95 96 97 98 99 101 102 103 106 107 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 6.1 7.1 9.1 11.1 15.1 15.2-15.3 15.4 16.0 16.2 16.4 17.2","5.1":0.37015,"10.1":0.02934,"12.1":0.00451,"13.1":0.09479,"14.1":0.02708,"15.5":0.00226,"15.6":0.01354,"16.1":0.00677,"16.3":0.00677,"16.5":0.00226,"16.6":0.06771,"17.0":0.0158,"17.1":0.00226},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00025,"5.0-5.1":0.00025,"6.0-6.1":0.00074,"7.0-7.1":0.00172,"8.1-8.4":0.00025,"9.0-9.2":0.00172,"9.3":0.00591,"10.0-10.2":0.00025,"10.3":0.00862,"11.0-11.2":0.00788,"11.3-11.4":0.00271,"12.0-12.1":0.00222,"12.2-12.5":0.03915,"13.0-13.1":0.00123,"13.2":0.00665,"13.3":0.00246,"13.4-13.7":0.00788,"14.0-14.4":0.02167,"14.5-14.8":0.03496,"15.0-15.1":0.01379,"15.2-15.3":0.01576,"15.4":0.01748,"15.5":0.02487,"15.6-15.7":0.17211,"16.0":0.06353,"16.1":0.12164,"16.2":0.05934,"16.3":0.11006,"16.4":0.02364,"16.5":0.06303,"16.6-16.7":1.18066,"17.0":0.42056,"17.1":0.02536,"17.2":0.00074},P:{"4":0.18482,"20":0.01027,"21":0.0308,"22":0.33884,"23":0.04107,_:"5.0-5.4 8.2 10.1 12.0 15.0","6.2-6.4":0.01027,"7.2-7.4":0.07188,"9.2":0.12321,"11.1-11.2":0.01027,"13.0":0.02054,"14.0":0.02054,"16.0":0.02054,"17.0":0.01027,"18.0":0.01027,"19.0":0.04107},I:{"0":0.11555,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00008,"4.4":0,"4.4.3-4.4.4":0.00035},A:{"10":0.01354,"11":0.0158,_:"6 7 8 9 5.5"},K:{"0":5.47346,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.12389,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.02323},Q:{_:"13.1"},O:{"0":0.20906},H:{"0":5.63},L:{"0":69.96871}}; diff --git a/node_modules/caniuse-lite/data/regions/BJ.js b/node_modules/caniuse-lite/data/regions/BJ.js new file mode 100644 index 00000000..14d5bbc9 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BJ.js @@ -0,0 +1 @@ +module.exports={C:{"43":0.00225,"45":0.00225,"47":0.00225,"52":0.00225,"62":0.00225,"72":0.00225,"79":0.00225,"85":0.02022,"88":0.00225,"91":0.00225,"94":0.00225,"96":0.00225,"99":0.00225,"102":0.00449,"103":0.00225,"107":0.00225,"108":0.00225,"110":0.00225,"111":0.00225,"112":0.01798,"113":0.00225,"114":0.00225,"115":0.17302,"116":0.00449,"117":0.05393,"118":0.95498,"119":0.31233,"120":0.00225,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 46 48 49 50 51 53 54 55 56 57 58 59 60 61 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 80 81 82 83 84 86 87 89 90 92 93 95 97 98 100 101 104 105 106 109 121 122 3.5 3.6"},D:{"11":0.00449,"33":0.01348,"42":0.00225,"44":0.00225,"45":0.00225,"46":0.02247,"47":0.00449,"50":0.00449,"51":0.00674,"54":0.00225,"58":0.00225,"61":0.0382,"62":0.00225,"63":0.00899,"65":0.00899,"66":0.00225,"68":0.01124,"69":0.00449,"70":0.03371,"71":0.00449,"72":0.00225,"74":0.03595,"76":0.00225,"77":0.00674,"78":0.00674,"79":0.00899,"80":0.05618,"81":0.05168,"83":0.00225,"84":0.00674,"85":0.00449,"86":0.00449,"87":0.04943,"88":0.05842,"89":0.00225,"90":0.00674,"91":0.02696,"92":0.01124,"93":0.02247,"94":0.06516,"95":0.00899,"97":0.01573,"98":0.01124,"99":0.1101,"100":0.02247,"101":0.00449,"102":0.01798,"103":0.06292,"104":0.00449,"105":0.07865,"106":0.02247,"107":0.01798,"108":0.0719,"109":1.60211,"110":0.00674,"111":0.00899,"112":0.02472,"113":0.02696,"114":0.09887,"115":0.06966,"116":0.34604,"117":3.78844,"118":4.57939,"119":0.00674,"120":0.00225,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 43 48 49 52 53 55 56 57 59 60 64 67 73 75 96 121 122"},F:{"37":0.00225,"57":0.00674,"73":0.00225,"79":0.27413,"82":0.05393,"85":0.01573,"86":0.00225,"87":0.00225,"91":0.01124,"95":0.03371,"99":0.00225,"101":0.00449,"102":0.22695,"103":0.22919,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 78 80 81 83 84 88 89 90 92 93 94 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00225,"13":0.00225,"17":0.00674,"18":0.02022,"84":0.00225,"85":0.00225,"89":0.00225,"90":0.00449,"92":0.01348,"98":0.00225,"99":0.02472,"100":0.00225,"107":0.00899,"109":0.01573,"110":0.02472,"112":0.00225,"113":0.00225,"114":0.04045,"115":0.02696,"116":0.02921,"117":0.69657,"118":0.83364,"119":0.01348,_:"14 15 16 79 80 81 83 86 87 88 91 93 94 95 96 97 101 102 103 104 105 106 108 111"},E:{"14":0.00225,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 17.2","5.1":0.01348,"13.1":0.00674,"14.1":0.00449,"15.1":0.00899,"15.2-15.3":0.00674,"15.4":0.00225,"15.5":0.01573,"15.6":0.02247,"16.0":0.00449,"16.1":0.02022,"16.2":0.01348,"16.3":0.03146,"16.4":0.01348,"16.5":0.0382,"16.6":0.27413,"17.0":0.10112,"17.1":0.00449},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00065,"5.0-5.1":0.00065,"6.0-6.1":0.00196,"7.0-7.1":0.00457,"8.1-8.4":0.00065,"9.0-9.2":0.00457,"9.3":0.01567,"10.0-10.2":0.00065,"10.3":0.02285,"11.0-11.2":0.02089,"11.3-11.4":0.00718,"12.0-12.1":0.00588,"12.2-12.5":0.10381,"13.0-13.1":0.00326,"13.2":0.01763,"13.3":0.00653,"13.4-13.7":0.02089,"14.0-14.4":0.05745,"14.5-14.8":0.09271,"15.0-15.1":0.03656,"15.2-15.3":0.04178,"15.4":0.04635,"15.5":0.06594,"15.6-15.7":0.45637,"16.0":0.16844,"16.1":0.32253,"16.2":0.15735,"16.3":0.29184,"16.4":0.06268,"16.5":0.16714,"16.6-16.7":3.13059,"17.0":1.11513,"17.1":0.06725,"17.2":0.00196},P:{"4":0.10662,"20":0.01066,"21":0.03199,"22":0.21324,"23":0.03199,"5.0-5.4":0.01066,_:"6.2-6.4 8.2 10.1 12.0 13.0 14.0","7.2-7.4":0.01066,"9.2":0.01066,"11.1-11.2":0.01066,"15.0":0.07463,"16.0":0.01066,"17.0":0.02132,"18.0":0.01066,"19.0":0.04265},I:{"0":0.02314,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00007},A:{"11":0.00674,_:"6 7 8 9 10 5.5"},K:{"0":2.34823,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.06979,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.03877},Q:{"13.1":0.03877},O:{"0":0.34118},H:{"0":2.94},L:{"0":70.31636}}; diff --git a/node_modules/caniuse-lite/data/regions/BM.js b/node_modules/caniuse-lite/data/regions/BM.js new file mode 100644 index 00000000..b3eee4bf --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BM.js @@ -0,0 +1 @@ +module.exports={C:{"78":0.00522,"115":0.00522,"117":0.00261,"118":0.03133,"119":0.00522,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 116 120 121 122 3.5 3.6"},D:{"67":0.00261,"76":0.01828,"79":0.00261,"103":0.00783,"109":0.05744,"111":0.00261,"113":0.00522,"114":0.00522,"115":0.02089,"116":0.08877,"117":0.43343,"118":0.43082,"119":0.00261,"120":0.00261,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 72 73 74 75 77 78 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 104 105 106 107 108 110 112 121 122"},F:{"102":0.01828,"103":0.00261,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"115":0.00261,"116":0.00261,"117":0.21671,"118":0.14622,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 119"},E:{"14":0.00261,"15":0.00261,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1","13.1":0.01306,"14.1":0.047,"15.1":0.06528,"15.2-15.3":0.05222,"15.4":0.13577,"15.5":0.27416,"15.6":2.36818,"16.0":0.08355,"16.1":0.44387,"16.2":0.69192,"16.3":1.38383,"16.4":0.39687,"16.5":1.0679,"16.6":13.70253,"17.0":3.01832,"17.1":0.38643,"17.2":0.01044},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0073,"5.0-5.1":0.0073,"6.0-6.1":0.02189,"7.0-7.1":0.05109,"8.1-8.4":0.0073,"9.0-9.2":0.05109,"9.3":0.17515,"10.0-10.2":0.0073,"10.3":0.25543,"11.0-11.2":0.23354,"11.3-11.4":0.08028,"12.0-12.1":0.06568,"12.2-12.5":1.1604,"13.0-13.1":0.03649,"13.2":0.19705,"13.3":0.07298,"13.4-13.7":0.23354,"14.0-14.4":0.64223,"14.5-14.8":1.03633,"15.0-15.1":0.40869,"15.2-15.3":0.46708,"15.4":0.51817,"15.5":0.73711,"15.6-15.7":5.10138,"16.0":1.88291,"16.1":3.60527,"16.2":1.75885,"16.3":3.26226,"16.4":0.70062,"16.5":1.86832,"16.6-16.7":34.99446,"17.0":12.46518,"17.1":0.75171,"17.2":0.02189},P:{"22":0.10882,"23":0.02418,_:"4 20 21 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0"},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.02956},Q:{_:"13.1"},O:{_:"0"},H:{"0":0},L:{"0":0.7124}}; diff --git a/node_modules/caniuse-lite/data/regions/BN.js b/node_modules/caniuse-lite/data/regions/BN.js new file mode 100644 index 00000000..34ad3b19 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BN.js @@ -0,0 +1 @@ +module.exports={C:{"3":0.00416,"4":0.00416,"5":0.00833,"28":0.00416,"32":0.00416,"34":0.00416,"37":0.00416,"38":0.00416,"39":0.00416,"40":0.00416,"48":0.00833,"52":0.00833,"78":0.02082,"82":0.00416,"84":0.00416,"89":0.00833,"90":0.00416,"105":0.00416,"106":0.00416,"107":0.00416,"114":0.00416,"115":0.43712,"116":0.04163,"117":0.08326,"118":1.38628,"119":0.2248,"120":0.00416,_:"2 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 33 35 36 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 85 86 87 88 91 92 93 94 95 96 97 98 99 100 101 102 103 104 108 109 110 111 112 113 121 122","3.5":0.00416,"3.6":0.00833},D:{"31":0.00416,"36":0.00416,"37":0.00416,"38":0.11656,"39":0.00416,"40":0.00833,"41":0.00833,"42":0.00833,"43":0.01249,"44":0.01665,"45":0.00833,"46":0.01665,"47":0.00833,"49":0.75767,"51":0.01665,"53":0.00416,"55":0.04996,"62":0.02498,"65":0.01249,"66":0.00833,"68":0.00416,"70":0.03747,"73":0.00833,"74":0.00416,"79":0.14571,"80":0.00416,"81":0.33304,"83":0.00833,"85":0.02914,"87":0.00833,"88":0.01249,"89":0.0333,"91":0.11656,"92":0.03747,"95":0.00833,"96":0.00416,"97":0.08326,"98":0.01249,"99":0.02498,"100":0.02914,"101":0.00416,"102":0.00416,"103":0.16236,"104":0.01249,"105":0.01665,"106":0.04996,"107":0.00416,"108":0.01249,"109":1.78176,"110":0.00833,"111":0.04163,"112":0.04163,"113":0.07493,"114":0.07077,"115":0.1124,"116":0.96582,"117":11.0153,"118":11.06942,"119":0.03747,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 48 50 52 54 56 57 58 59 60 61 63 64 67 69 71 72 75 76 77 78 84 86 90 93 94 120 121 122"},F:{"28":0.04163,"31":0.00833,"32":0.00416,"85":0.00833,"95":0.04996,"101":0.00416,"102":1.24474,"103":0.14571,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.00416},B:{"15":0.00416,"18":0.01249,"100":0.00416,"106":0.00416,"108":0.02498,"109":0.02082,"110":0.00416,"111":0.00416,"112":0.00416,"113":0.15403,"114":0.00833,"115":0.01249,"116":0.17485,"117":1.61524,"118":1.35714,"119":0.00416,_:"12 13 14 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 101 102 103 104 105 107"},E:{"9":0.02082,"12":0.00416,"13":0.04579,"14":0.1124,"15":0.03747,_:"0 4 5 6 7 8 10 11 3.1 3.2 6.1 7.1 9.1 10.1 11.1","5.1":0.00416,"12.1":0.00833,"13.1":0.03747,"14.1":0.1915,"15.1":0.04996,"15.2-15.3":0.02498,"15.4":0.09991,"15.5":0.04996,"15.6":0.4496,"16.0":0.05828,"16.1":0.12073,"16.2":0.05828,"16.3":0.16652,"16.4":0.1124,"16.5":0.24145,"16.6":2.45617,"17.0":0.72436,"17.1":0.07077,"17.2":0.00416},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00163,"5.0-5.1":0.00163,"6.0-6.1":0.00488,"7.0-7.1":0.01138,"8.1-8.4":0.00163,"9.0-9.2":0.01138,"9.3":0.03903,"10.0-10.2":0.00163,"10.3":0.05692,"11.0-11.2":0.05204,"11.3-11.4":0.01789,"12.0-12.1":0.01464,"12.2-12.5":0.25856,"13.0-13.1":0.00813,"13.2":0.04391,"13.3":0.01626,"13.4-13.7":0.05204,"14.0-14.4":0.1431,"14.5-14.8":0.23092,"15.0-15.1":0.09107,"15.2-15.3":0.10408,"15.4":0.11546,"15.5":0.16425,"15.6-15.7":1.13671,"16.0":0.41956,"16.1":0.80334,"16.2":0.39191,"16.3":0.72691,"16.4":0.15611,"16.5":0.4163,"16.6-16.7":7.79757,"17.0":2.77753,"17.1":0.1675,"17.2":0.00488},P:{"4":0.43462,"20":0.0326,"21":0.06519,"22":1.40164,"23":0.36942,"5.0-5.4":0.01087,"6.2-6.4":0.01087,"7.2-7.4":0.06519,_:"8.2 9.2 10.1 11.1-11.2 14.0 15.0 16.0","12.0":0.01087,"13.0":0.04346,"17.0":0.01087,"18.0":0.02173,"19.0":0.0326},I:{"0":0.12776,"3":0,"4":0.00003,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00003,"4.2-4.3":0.00009,"4.4":0,"4.4.3-4.4.4":0.00039},A:{"6":0.00432,"7":0.00863,"8":0.08634,"9":0.01295,"10":0.01727,"11":0.0993,_:"5.5"},K:{"0":2.39819,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00584,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.36773},Q:{"13.1":0.02919},O:{"0":1.38337},H:{"0":0.03},L:{"0":36.12868}}; diff --git a/node_modules/caniuse-lite/data/regions/BO.js b/node_modules/caniuse-lite/data/regions/BO.js new file mode 100644 index 00000000..4430a6c9 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BO.js @@ -0,0 +1 @@ +module.exports={C:{"50":0.00455,"51":0.03184,"52":0.1228,"54":0.00455,"58":0.02274,"60":0.0091,"72":0.00455,"76":0.0091,"78":0.02729,"81":0.00455,"82":0.00455,"84":0.00455,"86":0.00455,"87":0.00455,"88":0.0091,"89":0.00455,"91":0.00455,"93":0.02729,"94":0.00455,"99":0.00455,"100":0.0091,"102":0.0091,"103":0.00455,"104":0.00455,"105":0.00455,"106":0.00455,"107":0.00455,"108":0.00455,"109":0.01364,"110":0.00455,"111":0.01364,"112":0.00455,"113":0.09551,"114":0.01364,"115":0.60943,"116":0.02729,"117":0.07732,"118":1.81465,"119":0.27743,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 53 55 56 57 59 61 62 63 64 65 66 67 68 69 70 71 73 74 75 77 79 80 83 85 90 92 95 96 97 98 101 120 121 122 3.5 3.6"},D:{"38":0.01364,"41":0.00455,"43":0.00455,"44":0.00455,"45":0.00455,"46":0.00455,"47":0.01364,"49":0.0091,"51":0.00455,"53":0.0091,"55":0.00455,"57":0.00455,"60":0.0091,"62":0.00455,"63":0.00455,"65":0.00455,"67":0.0091,"68":0.02274,"69":0.00455,"70":0.01819,"72":0.00455,"73":0.00455,"74":0.01819,"75":0.00455,"76":0.00455,"77":0.00455,"78":0.00455,"79":0.15463,"80":0.00455,"81":0.06367,"83":0.0091,"84":0.00455,"85":0.0091,"86":0.0091,"87":0.04093,"88":0.01819,"89":0.0091,"90":0.0091,"91":0.19556,"92":0.0091,"93":0.00455,"94":0.0091,"95":0.0091,"96":0.01364,"97":0.02729,"98":0.0091,"99":0.01364,"100":0.01819,"101":0.02274,"102":0.04548,"103":0.07277,"104":0.01364,"105":0.03184,"106":0.01819,"107":0.03184,"108":0.07277,"109":3.62476,"110":0.08186,"111":0.03184,"112":0.08186,"113":0.06367,"114":0.71858,"115":0.10006,"116":1.65092,"117":15.14484,"118":10.74238,"119":0.01819,"120":0.00455,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 48 50 52 54 56 58 59 61 64 66 71 121 122"},F:{"12":0.00455,"28":0.02274,"36":0.00455,"46":0.00455,"79":0.00455,"85":0.0091,"94":0.01364,"95":0.13644,"99":0.00455,"101":0.00455,"102":1.75098,"103":0.35929,_:"9 11 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 86 87 88 89 90 91 92 93 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00455,"13":0.00455,"14":0.00455,"15":0.00455,"17":0.00455,"18":0.01364,"84":0.00455,"92":0.02274,"100":0.00455,"107":0.0091,"108":0.00455,"109":0.04093,"110":0.00455,"112":0.00455,"113":0.00455,"114":0.01364,"115":0.02729,"116":0.03184,"117":1.38714,"118":1.469,"119":0.00455,_:"16 79 80 81 83 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103 104 105 106 111"},E:{"8":0.00455,"9":0.00455,"14":0.01364,_:"0 4 5 6 7 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.0091,"12.1":0.00455,"13.1":0.01364,"14.1":0.02729,"15.1":0.00455,"15.2-15.3":0.00455,"15.4":0.00455,"15.5":0.00455,"15.6":0.05458,"16.0":0.00455,"16.1":0.0091,"16.2":0.01819,"16.3":0.02729,"16.4":0.01819,"16.5":0.03184,"16.6":0.13189,"17.0":0.1228,"17.1":0.00455},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00028,"5.0-5.1":0.00028,"6.0-6.1":0.00084,"7.0-7.1":0.00196,"8.1-8.4":0.00028,"9.0-9.2":0.00196,"9.3":0.00671,"10.0-10.2":0.00028,"10.3":0.00979,"11.0-11.2":0.00895,"11.3-11.4":0.00308,"12.0-12.1":0.00252,"12.2-12.5":0.04447,"13.0-13.1":0.0014,"13.2":0.00755,"13.3":0.0028,"13.4-13.7":0.00895,"14.0-14.4":0.02461,"14.5-14.8":0.03972,"15.0-15.1":0.01566,"15.2-15.3":0.0179,"15.4":0.01986,"15.5":0.02825,"15.6-15.7":0.1955,"16.0":0.07216,"16.1":0.13817,"16.2":0.0674,"16.3":0.12502,"16.4":0.02685,"16.5":0.0716,"16.6-16.7":1.3411,"17.0":0.47771,"17.1":0.02881,"17.2":0.00084},P:{"4":0.23932,"20":0.09365,"21":0.15608,"22":1.55035,"23":0.35377,"5.0-5.4":0.01041,_:"6.2-6.4 8.2 10.1","7.2-7.4":0.28094,"9.2":0.02081,"11.1-11.2":0.02081,"12.0":0.01041,"13.0":0.06243,"14.0":0.02081,"15.0":0.01041,"16.0":0.04162,"17.0":0.08324,"18.0":0.03122,"19.0":0.08324},I:{"0":0.09221,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00028},A:{"7":0.00455,"8":0.02729,"9":0.00455,"10":0.00455,"11":0.05458,_:"6 5.5"},K:{"0":0.45797,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.11994},Q:{_:"13.1"},O:{"0":0.15811},H:{"0":0},L:{"0":50.05366}}; diff --git a/node_modules/caniuse-lite/data/regions/BR.js b/node_modules/caniuse-lite/data/regions/BR.js new file mode 100644 index 00000000..7a38b319 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BR.js @@ -0,0 +1 @@ +module.exports={C:{"7":0.16111,"42":0.10252,"45":0.02441,"50":0.31245,"52":0.32709,"54":0.35639,"68":0.00488,"75":0.00488,"78":0.00976,"81":0.00488,"87":0.00488,"88":0.00488,"89":0.00488,"90":0.00488,"91":0.01953,"99":0.00488,"102":0.01465,"104":0.00488,"105":0.00976,"106":0.00488,"107":0.00488,"108":0.00488,"109":0.00976,"110":0.00976,"111":0.00488,"112":0.00488,"113":0.00976,"114":0.00976,"115":0.25386,"116":0.01465,"117":0.06835,"118":1.02034,"119":0.20016,_:"2 3 4 5 6 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 46 47 48 49 51 53 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 76 77 79 80 82 83 84 85 86 92 93 94 95 96 97 98 100 101 103 120 121 122 3.5 3.6"},D:{"38":0.00488,"47":0.15134,"48":0.00488,"49":0.00976,"51":0.00488,"55":0.17087,"57":0.35639,"58":0.00488,"60":1.01546,"63":0.00488,"65":0.00488,"66":0.00488,"67":0.00488,"68":0.00488,"69":0.00488,"70":0.00488,"71":0.00488,"72":0.00488,"74":0.00488,"75":0.01465,"76":0.00488,"77":0.01465,"78":0.00488,"79":0.06835,"80":0.00976,"81":0.03417,"83":0.00488,"84":0.00976,"85":0.02929,"86":0.01465,"87":0.03417,"88":0.00976,"89":0.00976,"90":0.01465,"91":0.9764,"92":0.02441,"93":0.01465,"94":0.00976,"95":0.00488,"96":0.00976,"97":0.00976,"98":0.00976,"99":0.00976,"100":0.00976,"101":0.00976,"102":0.01465,"103":0.06835,"104":0.01953,"105":0.03417,"106":0.06347,"107":0.08299,"108":0.09764,"109":2.49958,"110":0.04882,"111":0.06835,"112":0.07811,"113":0.03417,"114":0.12693,"115":0.13181,"116":0.78112,"117":12.25382,"118":12.92754,"119":0.04394,"120":0.00976,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 50 52 53 54 56 59 61 62 64 73 121 122"},F:{"36":0.00488,"85":0.00488,"93":0.00488,"94":0.00488,"95":0.07323,"100":0.00488,"101":0.00976,"102":4.15946,"103":0.32221,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.16111,"13":0.33198,"14":0.33198,"15":0.20016,"18":0.00488,"90":0.00488,"92":0.01953,"103":0.00488,"105":0.00488,"106":0.00488,"107":0.00976,"108":0.00976,"109":0.06347,"110":0.00976,"111":0.00976,"112":0.00976,"113":0.00976,"114":0.01465,"115":0.01465,"116":0.04394,"117":1.99674,"118":2.03579,"119":0.01465,_:"16 17 79 80 81 83 84 85 86 87 88 89 91 93 94 95 96 97 98 99 100 101 102 104"},E:{"14":0.00976,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 10.1 11.1 12.1 17.2","5.1":0.02441,"9.1":0.00976,"13.1":0.01953,"14.1":0.02441,"15.1":0.00488,"15.2-15.3":0.00488,"15.4":0.00488,"15.5":0.00976,"15.6":0.06347,"16.0":0.00976,"16.1":0.01465,"16.2":0.01465,"16.3":0.03906,"16.4":0.01465,"16.5":0.04394,"16.6":0.18063,"17.0":0.16111,"17.1":0.00976},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00075,"5.0-5.1":0.00075,"6.0-6.1":0.00225,"7.0-7.1":0.00525,"8.1-8.4":0.00075,"9.0-9.2":0.00525,"9.3":0.01801,"10.0-10.2":0.00075,"10.3":0.02627,"11.0-11.2":0.02401,"11.3-11.4":0.00825,"12.0-12.1":0.00675,"12.2-12.5":0.11932,"13.0-13.1":0.00375,"13.2":0.02026,"13.3":0.0075,"13.4-13.7":0.02401,"14.0-14.4":0.06604,"14.5-14.8":0.10656,"15.0-15.1":0.04202,"15.2-15.3":0.04803,"15.4":0.05328,"15.5":0.07579,"15.6-15.7":0.52456,"16.0":0.19361,"16.1":0.37072,"16.2":0.18086,"16.3":0.33545,"16.4":0.07204,"16.5":0.19211,"16.6-16.7":3.59839,"17.0":1.28176,"17.1":0.0773,"17.2":0.00225},P:{"4":0.06215,"20":0.03107,"21":0.06215,"22":1.48122,"23":0.30039,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 14.0 15.0","7.2-7.4":0.15537,"11.1-11.2":0.01036,"13.0":0.01036,"16.0":0.01036,"17.0":0.04143,"18.0":0.01036,"19.0":0.03107},I:{"0":0.04584,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00014},A:{"8":0.00497,"9":0.33815,"11":0.72603,_:"6 7 10 5.5"},K:{"0":0.28666,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.12798},Q:{_:"13.1"},O:{"0":0.06143},H:{"0":0},L:{"0":41.82228}}; diff --git a/node_modules/caniuse-lite/data/regions/BS.js b/node_modules/caniuse-lite/data/regions/BS.js new file mode 100644 index 00000000..e1c2e207 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BS.js @@ -0,0 +1 @@ +module.exports={C:{"40":0.00343,"48":0.03771,"52":0.00686,"75":0.00343,"78":0.00343,"95":0.01371,"102":0.00343,"111":0.00343,"114":0.04114,"115":0.12341,"116":0.00343,"117":0.02057,"118":0.58276,"119":0.10627,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 103 104 105 106 107 108 109 110 112 113 120 121 122 3.5","3.6":0.00343},D:{"41":0.00343,"42":0.00343,"43":0.00343,"44":0.00343,"45":0.00343,"46":0.00343,"47":0.00343,"49":0.04456,"51":0.00686,"71":0.00343,"75":0.00343,"76":0.14398,"77":0.00343,"83":0.00686,"84":0.00686,"87":0.01371,"88":0.00686,"90":0.03428,"91":0.02057,"92":0.00343,"93":0.06856,"94":0.01714,"95":0.00343,"96":0.00343,"97":0.00343,"98":0.01028,"100":0.00343,"101":0.00343,"102":0.00686,"103":0.20568,"105":0.00686,"106":0.024,"107":0.01028,"108":0.00343,"109":0.77816,"110":0.01714,"111":0.02742,"112":0.01371,"113":0.00686,"114":0.07199,"115":0.14398,"116":1.0284,"117":5.09058,"118":5.14886,"119":0.00686,"120":0.00343,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 48 50 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 72 73 74 78 79 80 81 85 86 89 99 104 121 122"},F:{"89":0.00343,"95":0.00686,"101":0.00343,"102":0.16112,"103":0.04114,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00686,"15":0.00343,"16":0.00343,"17":0.00686,"18":0.01371,"92":0.00686,"104":0.00343,"107":0.01028,"109":0.05485,"111":0.00343,"112":0.00343,"113":0.01028,"114":0.00686,"115":0.08227,"116":0.07542,"117":2.30362,"118":2.32076,"119":0.01028,_:"13 14 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 105 106 108 110"},E:{"9":0.01028,"13":0.00343,"14":0.04114,"15":0.00343,_:"0 4 5 6 7 8 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.00343,"12.1":0.024,"13.1":0.10284,"14.1":0.15426,"15.1":0.04114,"15.2-15.3":0.05142,"15.4":0.18854,"15.5":0.22625,"15.6":1.20666,"16.0":0.05485,"16.1":0.24682,"16.2":0.29824,"16.3":0.72331,"16.4":0.21939,"16.5":0.64104,"16.6":7.26393,"17.0":1.57688,"17.1":0.20911,"17.2":0.01028},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00463,"5.0-5.1":0.00463,"6.0-6.1":0.01388,"7.0-7.1":0.0324,"8.1-8.4":0.00463,"9.0-9.2":0.0324,"9.3":0.11107,"10.0-10.2":0.00463,"10.3":0.16198,"11.0-11.2":0.1481,"11.3-11.4":0.05091,"12.0-12.1":0.04165,"12.2-12.5":0.73585,"13.0-13.1":0.02314,"13.2":0.12496,"13.3":0.04628,"13.4-13.7":0.1481,"14.0-14.4":0.40726,"14.5-14.8":0.65718,"15.0-15.1":0.25917,"15.2-15.3":0.29619,"15.4":0.32859,"15.5":0.46743,"15.6-15.7":3.23497,"16.0":1.19402,"16.1":2.28623,"16.2":1.11535,"16.3":2.06872,"16.4":0.44429,"16.5":1.18477,"16.6-16.7":22.19127,"17.0":7.90463,"17.1":0.47668,"17.2":0.01388},P:{"20":0.05164,"21":0.07229,"22":2.07581,"23":0.40277,_:"4 5.0-5.4 6.2-6.4 8.2 10.1 12.0 15.0","7.2-7.4":0.12393,"9.2":0.01033,"11.1-11.2":0.02065,"13.0":0.02065,"14.0":0.02065,"16.0":0.02065,"17.0":0.01033,"18.0":0.02065,"19.0":0.04131},I:{"0":0.05231,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00016},A:{"7":0.00343,"8":0.02057,"9":0.00343,"10":0.00343,"11":0.04114,_:"6 5.5"},K:{"0":0.03943,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.09858},Q:{_:"13.1"},O:{"0":0.00657},H:{"0":0},L:{"0":17.40465}}; diff --git a/node_modules/caniuse-lite/data/regions/BT.js b/node_modules/caniuse-lite/data/regions/BT.js new file mode 100644 index 00000000..2d389bea --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BT.js @@ -0,0 +1 @@ +module.exports={C:{"2":0.00305,"3":0.00914,"4":0.00914,"5":0.00305,"9":0.00305,"10":0.00305,"11":0.00305,"12":0.00305,"13":0.00305,"14":0.00305,"15":0.00305,"17":0.0061,"18":0.00305,"19":0.00305,"20":0.00305,"21":0.00305,"22":0.00305,"23":0.0061,"24":0.00305,"26":0.0061,"29":0.00305,"30":0.00305,"31":0.0061,"33":0.00305,"34":0.0061,"35":0.0061,"36":0.0061,"37":0.00305,"38":0.0061,"39":0.00914,"40":0.01219,"41":0.0061,"42":0.00305,"43":0.00305,"48":0.00305,"55":0.00305,"60":0.00305,"72":0.00305,"78":0.00305,"90":0.00305,"112":0.00305,"114":0.07925,"115":0.18288,"116":0.00305,"117":0.03962,"118":0.84734,"119":0.11887,_:"6 7 8 16 25 27 28 32 44 45 46 47 49 50 51 52 53 54 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 113 120 121 122","3.5":0.00305,"3.6":0.01219},D:{"4":0.00305,"6":0.00305,"7":0.00305,"10":0.00305,"18":0.00305,"20":0.00305,"21":0.0061,"24":0.00305,"25":0.00305,"26":0.0061,"27":0.00305,"29":0.0061,"31":0.00914,"32":0.0061,"33":0.0061,"35":0.0061,"36":0.0061,"37":0.0061,"38":0.00914,"39":0.01524,"40":0.01219,"41":0.01829,"42":0.01524,"43":0.02438,"44":0.03962,"45":0.02438,"46":0.02743,"47":0.01829,"51":0.04572,"55":0.0061,"56":0.00305,"57":0.00305,"58":0.00305,"65":0.00305,"66":0.00914,"67":0.00305,"70":0.01524,"74":0.00305,"77":0.0061,"78":0.01219,"79":0.00914,"80":0.00305,"81":0.0061,"83":0.00305,"85":0.0061,"87":0.0701,"88":0.00914,"90":0.00305,"91":0.01829,"93":0.00305,"94":0.01524,"96":0.00305,"97":0.0061,"98":0.10363,"99":0.03048,"100":0.00305,"102":0.00305,"103":0.04572,"104":0.00305,"105":0.01219,"106":0.00305,"108":0.0061,"109":2.1397,"110":0.05182,"111":0.02438,"112":0.00305,"113":0.03962,"114":0.05486,"115":0.04267,"116":0.6096,"117":8.79653,"118":8.97026,"119":0.01524,"120":0.00305,_:"5 8 9 11 12 13 14 15 16 17 19 22 23 28 30 34 48 49 50 52 53 54 59 60 61 62 63 64 68 69 71 72 73 75 76 84 86 89 92 95 101 107 121 122"},F:{"11":0.00305,"12":0.00305,"23":0.00305,"24":0.00305,"25":0.00305,"30":0.00305,"31":0.01219,"32":0.00914,"56":0.00305,"83":0.00305,"95":0.0061,"102":0.11887,"103":0.04877,_:"9 15 16 17 18 19 20 21 22 26 27 28 29 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 10.0-10.1 10.5 10.6 11.6","9.5-9.6":0.00305,"11.1":0.00305,"11.5":0.00305,"12.1":0.00914},B:{"12":0.00914,"15":0.00305,"16":0.02438,"18":0.0061,"80":0.00305,"84":0.00305,"87":0.00305,"92":0.02134,"93":0.00305,"95":0.0061,"96":0.01524,"98":0.00914,"99":0.0061,"100":0.00305,"101":0.02134,"102":0.00914,"103":0.03962,"105":0.00305,"106":0.04267,"107":0.10973,"108":0.0061,"109":0.01219,"110":0.02438,"111":0.05486,"112":0.03048,"113":0.05791,"114":0.04877,"115":0.10668,"116":0.11887,"117":1.6002,"118":1.46609,"119":0.00914,_:"13 14 17 79 81 83 85 86 88 89 90 91 94 97 104"},E:{"5":0.00305,"6":0.00305,"7":0.0061,"8":0.00305,"9":0.09449,"11":0.00305,"13":0.0061,"14":0.00305,"15":0.01829,_:"0 4 10 12 3.1 3.2 10.1 11.1 12.1 16.0 17.2","5.1":0.0061,"6.1":0.00305,"7.1":0.00914,"9.1":0.00305,"13.1":0.01524,"14.1":0.0701,"15.1":0.0061,"15.2-15.3":0.01524,"15.4":0.03658,"15.5":0.0061,"15.6":0.32309,"16.1":0.01219,"16.2":0.03658,"16.3":0.09144,"16.4":0.00305,"16.5":0.01829,"16.6":0.29261,"17.0":0.27737,"17.1":0.05182},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0005,"5.0-5.1":0.0005,"6.0-6.1":0.0015,"7.0-7.1":0.00349,"8.1-8.4":0.0005,"9.0-9.2":0.00349,"9.3":0.01196,"10.0-10.2":0.0005,"10.3":0.01745,"11.0-11.2":0.01595,"11.3-11.4":0.00548,"12.0-12.1":0.00449,"12.2-12.5":0.07927,"13.0-13.1":0.00249,"13.2":0.01346,"13.3":0.00499,"13.4-13.7":0.01595,"14.0-14.4":0.04387,"14.5-14.8":0.07079,"15.0-15.1":0.02792,"15.2-15.3":0.03191,"15.4":0.0354,"15.5":0.05035,"15.6-15.7":0.34847,"16.0":0.12862,"16.1":0.24627,"16.2":0.12015,"16.3":0.22284,"16.4":0.04786,"16.5":0.12762,"16.6-16.7":2.39045,"17.0":0.85149,"17.1":0.05135,"17.2":0.0015},P:{"4":0.35692,"20":0.11218,"21":0.10198,"22":0.85661,"23":0.14277,"5.0-5.4":0.0204,"6.2-6.4":0.04079,"7.2-7.4":0.07138,_:"8.2 9.2 10.1 11.1-11.2 12.0 14.0 15.0","13.0":0.0102,"16.0":0.0204,"17.0":0.0102,"18.0":0.07138,"19.0":0.0204},I:{"0":0.38046,"3":0,"4":0.00008,"2.1":0,"2.2":0.00011,"2.3":0,"4.1":0.00008,"4.2-4.3":0.00027,"4.4":0,"4.4.3-4.4.4":0.00115},A:{"6":0.00923,"7":0.02461,"8":0.22146,"9":0.04921,"10":0.04614,"11":0.29836,"5.5":0.00308},K:{"0":0.63272,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.02086,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.01391},Q:{_:"13.1"},O:{"0":1.81473},H:{"0":0},L:{"0":60.74926}}; diff --git a/node_modules/caniuse-lite/data/regions/BW.js b/node_modules/caniuse-lite/data/regions/BW.js new file mode 100644 index 00000000..30674f13 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BW.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.02216,"43":0.00369,"48":0.00369,"49":0.02954,"52":0.03324,"60":0.00369,"68":0.00369,"72":0.00369,"78":0.00369,"98":0.00369,"102":0.01477,"103":0.00369,"104":0.00369,"107":0.00369,"110":0.00369,"112":0.00739,"113":0.00739,"114":0.04062,"115":0.21789,"116":0.02216,"117":0.06278,"118":0.8974,"119":0.16619,"120":0.00369,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 44 45 46 47 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 99 100 101 105 106 108 109 111 121 122 3.5 3.6"},D:{"11":0.00369,"43":0.00369,"48":0.00369,"49":0.01108,"56":0.00369,"58":0.00369,"63":0.00739,"65":0.00369,"66":0.00739,"67":0.00369,"69":0.01108,"70":0.00369,"72":0.00369,"74":0.00369,"75":0.00369,"76":0.00369,"78":0.00739,"79":0.01108,"80":0.00369,"81":0.01847,"83":0.01477,"84":0.00369,"85":0.00369,"86":0.00739,"87":0.01108,"88":0.0517,"89":0.02216,"90":0.02585,"91":0.02216,"92":0.01108,"93":0.00739,"94":0.00739,"95":0.02216,"96":0.00739,"97":0.00739,"98":0.00369,"99":0.03324,"100":0.01108,"101":0.00369,"102":0.01477,"103":0.03324,"104":0.07755,"105":0.00739,"106":0.01108,"107":0.01477,"108":0.02216,"109":1.90928,"110":0.00739,"111":0.01847,"112":0.03693,"113":0.02585,"114":0.14772,"115":0.1071,"116":0.97495,"117":9.33221,"118":9.46885,"119":0.00739,"120":0.00739,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 50 51 52 53 54 55 57 59 60 61 62 64 68 71 73 77 121 122"},F:{"28":0.00739,"46":0.01477,"79":0.00369,"89":0.00369,"95":0.03693,"100":0.01477,"101":0.01847,"102":0.48748,"103":0.36561,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 85 86 87 88 90 91 92 93 94 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00739,"13":0.00739,"14":0.00739,"15":0.01108,"16":0.01108,"17":0.00369,"18":0.02954,"80":0.01108,"84":0.00369,"89":0.00369,"90":0.01477,"92":0.09971,"100":0.01108,"102":0.00369,"105":0.00369,"107":0.01108,"108":0.00739,"109":0.06647,"110":0.02585,"111":0.01108,"112":0.00369,"113":0.02585,"114":0.0554,"115":0.0517,"116":0.14772,"117":2.37091,"118":2.20472,"119":0.01108,_:"79 81 83 85 86 87 88 91 93 94 95 96 97 98 99 101 103 104 106"},E:{"14":0.05909,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 15.1 17.2","5.1":0.00369,"12.1":0.01108,"13.1":0.02585,"14.1":0.03324,"15.2-15.3":0.00369,"15.4":0.02954,"15.5":0.00369,"15.6":0.09602,"16.0":0.00369,"16.1":0.04062,"16.2":0.00739,"16.3":0.04062,"16.4":0.06278,"16.5":0.03324,"16.6":0.39515,"17.0":0.19942,"17.1":0.00739},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00038,"5.0-5.1":0.00038,"6.0-6.1":0.00115,"7.0-7.1":0.00268,"8.1-8.4":0.00038,"9.0-9.2":0.00268,"9.3":0.00919,"10.0-10.2":0.00038,"10.3":0.0134,"11.0-11.2":0.01225,"11.3-11.4":0.00421,"12.0-12.1":0.00345,"12.2-12.5":0.06087,"13.0-13.1":0.00191,"13.2":0.01034,"13.3":0.00383,"13.4-13.7":0.01225,"14.0-14.4":0.03369,"14.5-14.8":0.05436,"15.0-15.1":0.02144,"15.2-15.3":0.0245,"15.4":0.02718,"15.5":0.03867,"15.6-15.7":0.2676,"16.0":0.09877,"16.1":0.18912,"16.2":0.09226,"16.3":0.17113,"16.4":0.03675,"16.5":0.09801,"16.6-16.7":1.83569,"17.0":0.65388,"17.1":0.03943,"17.2":0.00115},P:{"4":0.16378,"20":0.07165,"21":0.21496,"22":1.40238,"23":0.18425,_:"5.0-5.4 8.2 9.2","6.2-6.4":0.01024,"7.2-7.4":0.19449,"10.1":0.01024,"11.1-11.2":0.02047,"12.0":0.01024,"13.0":0.01024,"14.0":0.05118,"15.0":0.02047,"16.0":0.04095,"17.0":0.02047,"18.0":0.03071,"19.0":0.12284},I:{"0":0.06275,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00019},A:{"10":0.00369,"11":0.04432,_:"6 7 8 9 5.5"},K:{"0":1.0968,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.11353,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.09461},Q:{"13.1":0.01892},O:{"0":0.70638},H:{"0":0.07},L:{"0":59.5021}}; diff --git a/node_modules/caniuse-lite/data/regions/BY.js b/node_modules/caniuse-lite/data/regions/BY.js new file mode 100644 index 00000000..dc8e997e --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BY.js @@ -0,0 +1 @@ +module.exports={C:{"39":0.01406,"50":0.00469,"52":0.29997,"53":0.00469,"56":0.00469,"60":0.00469,"64":0.01406,"66":0.00469,"68":0.00469,"78":0.00469,"88":0.00469,"91":0.00469,"96":0.01875,"98":0.00469,"99":0.00469,"100":0.00469,"102":0.01875,"103":0.00469,"104":0.00937,"105":0.06093,"107":0.00469,"108":0.00937,"109":0.02344,"110":0.01406,"111":0.01875,"112":0.02812,"113":0.03281,"114":0.02812,"115":0.99833,"116":0.00937,"117":0.05156,"118":1.35923,"119":0.30934,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 46 47 48 49 51 54 55 57 58 59 61 62 63 65 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 94 95 97 101 106 120 121 122 3.5 3.6"},D:{"26":0.02344,"49":0.06093,"51":0.00469,"53":0.00469,"55":0.00937,"58":0.0375,"59":0.00469,"62":0.00469,"64":0.04218,"67":0.00469,"69":0.00469,"70":0.00937,"72":0.00469,"73":0.00937,"75":0.00469,"76":0.00937,"77":0.01875,"78":0.00469,"79":0.04687,"80":0.00937,"81":0.00469,"83":0.02344,"84":0.00937,"85":0.01406,"86":0.01406,"87":0.04687,"88":0.01406,"89":0.00937,"90":0.01875,"91":0.00937,"92":0.00469,"93":0.11249,"94":0.01406,"95":0.00937,"96":0.00469,"97":0.01875,"98":0.00937,"99":0.02812,"100":0.01875,"101":0.02344,"102":0.07499,"103":0.04218,"104":0.01875,"105":0.15936,"106":0.08905,"107":0.07031,"108":0.1453,"109":3.45901,"110":0.07031,"111":0.08437,"112":0.05624,"113":0.03281,"114":0.15936,"115":0.06562,"116":0.65618,"117":8.92405,"118":8.38036,"119":0.00937,"120":0.00469,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 52 54 56 57 60 61 63 65 66 68 71 74 121 122"},F:{"36":0.03281,"56":0.00937,"69":0.00469,"72":0.00469,"73":0.01406,"77":0.00469,"79":0.07031,"80":0.01875,"81":0.00937,"82":0.0375,"83":0.02344,"84":0.00937,"85":0.09374,"86":0.04687,"87":0.01406,"89":0.00937,"90":0.00937,"93":0.00469,"94":0.00937,"95":1.31705,"99":0.01406,"100":0.01406,"101":0.07499,"102":3.01843,"103":1.66389,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 60 62 63 64 65 66 67 68 70 71 74 75 76 78 88 91 92 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.01875},B:{"18":0.00937,"92":0.01406,"102":0.00469,"107":0.02812,"109":0.03281,"110":0.01406,"111":0.00469,"112":0.01406,"114":0.00469,"115":0.00469,"116":0.01875,"117":0.92334,"118":1.23268,"119":0.00937,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 103 104 105 106 108 113"},E:{"13":0.00937,"14":0.03281,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 10.1","5.1":0.04218,"9.1":0.00469,"11.1":0.00469,"12.1":0.01406,"13.1":0.02344,"14.1":0.0375,"15.1":0.01406,"15.2-15.3":0.00937,"15.4":0.07499,"15.5":0.07031,"15.6":0.32809,"16.0":0.02344,"16.1":0.08437,"16.2":0.07499,"16.3":0.25779,"16.4":0.08905,"16.5":0.15467,"16.6":1.32173,"17.0":1.48109,"17.1":0.12186,"17.2":0.00469},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00167,"5.0-5.1":0.00167,"6.0-6.1":0.00501,"7.0-7.1":0.01169,"8.1-8.4":0.00167,"9.0-9.2":0.01169,"9.3":0.04006,"10.0-10.2":0.00167,"10.3":0.05843,"11.0-11.2":0.05342,"11.3-11.4":0.01836,"12.0-12.1":0.01502,"12.2-12.5":0.26543,"13.0-13.1":0.00835,"13.2":0.04507,"13.3":0.01669,"13.4-13.7":0.05342,"14.0-14.4":0.1469,"14.5-14.8":0.23705,"15.0-15.1":0.09348,"15.2-15.3":0.10684,"15.4":0.11852,"15.5":0.1686,"15.6-15.7":1.16687,"16.0":0.43069,"16.1":0.82466,"16.2":0.40231,"16.3":0.7462,"16.4":0.16026,"16.5":0.42735,"16.6-16.7":8.00451,"17.0":2.85124,"17.1":0.17194,"17.2":0.00501},P:{"4":0.4575,"20":0.03119,"21":0.04159,"22":0.69665,"23":0.18716,_:"5.0-5.4 8.2 9.2 10.1 12.0 15.0 16.0","6.2-6.4":0.18716,"7.2-7.4":0.0104,"11.1-11.2":0.0104,"13.0":0.0104,"14.0":0.0208,"17.0":0.0208,"18.0":0.0104,"19.0":0.0104},I:{"0":0.01586,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00005},A:{"8":0.01453,"11":0.13077,_:"6 7 9 10 5.5"},K:{"0":1.08448,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.13283},Q:{_:"13.1"},O:{"0":0.13814},H:{"0":0.01},L:{"0":32.12339}}; diff --git a/node_modules/caniuse-lite/data/regions/BZ.js b/node_modules/caniuse-lite/data/regions/BZ.js new file mode 100644 index 00000000..7a0cd522 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/BZ.js @@ -0,0 +1 @@ +module.exports={C:{"2":0.00434,"3":0.03039,"4":0.00434,"5":0.00434,"11":0.00434,"12":0.00434,"16":0.00434,"23":0.00434,"24":0.00434,"26":0.00434,"30":0.00434,"31":0.00868,"32":0.00434,"34":0.00434,"35":0.00434,"37":0.00434,"38":0.00868,"39":0.00868,"40":0.01302,"41":0.00868,"52":0.00434,"72":0.00434,"78":0.00434,"91":0.00434,"102":0.00434,"108":0.02605,"110":0.00868,"111":0.00434,"112":0.00434,"114":0.00434,"115":0.15628,"116":0.02171,"117":0.13891,"118":0.66417,"119":0.18666,_:"6 7 8 9 10 13 14 15 17 18 19 20 21 22 25 27 28 29 33 36 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 98 99 100 101 103 104 105 106 107 109 113 120 121 122","3.5":0.00434,"3.6":0.01302},D:{"6":0.00434,"11":0.00434,"17":0.00434,"21":0.01302,"22":0.00434,"27":0.00434,"29":0.00434,"31":0.01302,"33":0.00434,"34":0.00434,"36":0.00868,"37":0.00868,"38":0.00434,"39":0.01736,"40":0.00868,"41":0.00868,"42":0.01302,"43":0.02171,"44":0.03473,"45":0.01736,"46":0.02605,"47":0.01736,"51":0.03907,"55":0.00434,"63":0.00434,"66":0.00434,"70":0.01302,"71":0.00434,"75":0.05643,"76":0.06077,"77":0.00434,"79":0.00868,"81":0.00434,"83":0.01302,"84":0.00434,"85":0.00434,"86":0.00868,"87":0.00434,"91":0.09984,"92":0.00868,"93":0.11721,"99":0.00868,"103":0.16496,"105":0.00434,"107":0.00434,"108":5.90376,"109":0.92897,"110":0.00868,"111":0.03907,"112":0.03039,"113":0.01302,"114":0.06077,"115":0.03907,"116":0.75968,"117":10.01469,"118":8.49534,"119":0.00868,_:"4 5 7 8 9 10 12 13 14 15 16 18 19 20 23 24 25 26 28 30 32 35 48 49 50 52 53 54 56 57 58 59 60 61 62 64 65 67 68 69 72 73 74 78 80 88 89 90 94 95 96 97 98 100 101 102 104 106 120 121 122"},F:{"12":0.00434,"31":0.00868,"32":0.00434,"95":0.00434,"101":0.00434,"102":0.31255,"103":0.06946,_:"9 11 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.5 11.6","11.1":0.00434,"12.1":0.00868},B:{"12":0.01302,"18":0.00868,"90":0.00434,"92":0.01302,"100":0.00434,"109":0.07814,"111":0.01736,"113":0.00868,"114":0.00434,"115":0.00434,"116":0.10853,"117":1.5671,"118":1.31966,_:"13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 91 93 94 95 96 97 98 99 101 102 103 104 105 106 107 108 110 112 119"},E:{"4":0.02605,"5":0.00434,"7":0.00434,"8":0.00868,"9":0.05643,"13":0.01302,"14":0.13457,"15":0.00434,_:"0 6 10 11 12 3.1 3.2 6.1 10.1 11.1","5.1":0.00434,"7.1":0.00434,"9.1":0.00434,"12.1":0.00434,"13.1":0.0955,"14.1":0.03907,"15.1":0.06946,"15.2-15.3":0.09116,"15.4":0.30387,"15.5":0.08682,"15.6":0.65115,"16.0":0.03039,"16.1":0.22573,"16.2":0.06077,"16.3":0.26914,"16.4":0.13023,"16.5":0.43844,"16.6":2.15748,"17.0":1.15471,"17.1":0.11287,"17.2":0.00434},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00248,"5.0-5.1":0.00248,"6.0-6.1":0.00745,"7.0-7.1":0.01738,"8.1-8.4":0.00248,"9.0-9.2":0.01738,"9.3":0.05958,"10.0-10.2":0.00248,"10.3":0.08689,"11.0-11.2":0.07944,"11.3-11.4":0.02731,"12.0-12.1":0.02234,"12.2-12.5":0.39473,"13.0-13.1":0.01241,"13.2":0.06703,"13.3":0.02483,"13.4-13.7":0.07944,"14.0-14.4":0.21847,"14.5-14.8":0.35253,"15.0-15.1":0.13903,"15.2-15.3":0.15889,"15.4":0.17626,"15.5":0.25074,"15.6-15.7":1.73534,"16.0":0.64051,"16.1":1.22641,"16.2":0.59831,"16.3":1.10972,"16.4":0.23833,"16.5":0.63555,"16.6-16.7":11.90408,"17.0":4.24029,"17.1":0.25571,"17.2":0.00745},P:{"4":0.10639,"20":0.02128,"21":0.10639,"22":1.35114,"23":0.32981,"5.0-5.4":0.02128,"6.2-6.4":0.02128,"7.2-7.4":0.06383,_:"8.2 9.2 10.1 12.0 14.0 15.0 17.0","11.1-11.2":0.02128,"13.0":0.01064,"16.0":0.03192,"18.0":0.01064,"19.0":0.03192},I:{"0":0.30966,"3":0,"4":0.00006,"2.1":0,"2.2":0.00009,"2.3":0,"4.1":0.00006,"4.2-4.3":0.00022,"4.4":0,"4.4.3-4.4.4":0.00093},A:{"6":0.00938,"7":0.01407,"8":0.19223,"9":0.03751,"10":0.03751,"11":1.86609,_:"5.5"},K:{"0":0.15845,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.01132,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.29993},Q:{_:"13.1"},O:{"0":0.15279},H:{"0":0},L:{"0":30.7593}}; diff --git a/node_modules/caniuse-lite/data/regions/CA.js b/node_modules/caniuse-lite/data/regions/CA.js new file mode 100644 index 00000000..5973af40 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CA.js @@ -0,0 +1 @@ +module.exports={C:{"38":0.01058,"43":0.01058,"44":0.05819,"45":0.01587,"47":0.00529,"48":0.02116,"52":0.03703,"56":0.00529,"57":0.01587,"59":0.00529,"68":0.00529,"77":0.00529,"78":0.04232,"87":0.02116,"88":0.00529,"89":0.00529,"91":0.00529,"94":0.00529,"100":0.00529,"102":0.02645,"103":0.00529,"104":0.00529,"105":0.01058,"106":0.00529,"107":0.01058,"108":0.01058,"109":0.03174,"110":0.01058,"111":0.00529,"112":0.01058,"113":0.02116,"114":0.01587,"115":0.36501,"116":0.03174,"117":0.13225,"118":1.98904,"119":0.38088,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 46 49 50 51 53 54 55 58 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 79 80 81 82 83 84 85 86 90 92 93 95 96 97 98 99 101 120 121 122 3.5 3.6"},D:{"29":0.00529,"38":0.00529,"39":0.00529,"40":0.00529,"41":0.00529,"42":0.01058,"43":0.00529,"44":0.00529,"45":0.00529,"46":0.00529,"47":0.01587,"48":0.13754,"49":0.07406,"50":0.00529,"51":0.00529,"52":0.00529,"53":0.00529,"54":0.00529,"55":0.00529,"56":0.00529,"57":0.01058,"58":0.00529,"59":0.00529,"60":0.06348,"65":0.00529,"66":0.03703,"67":0.00529,"68":0.00529,"69":0.00529,"70":0.00529,"72":0.00529,"74":0.00529,"75":0.00529,"76":0.01587,"77":0.00529,"78":0.02116,"79":0.47081,"80":0.03174,"81":0.05819,"83":0.64009,"84":0.01587,"85":0.02645,"86":0.08464,"87":0.0529,"88":0.11638,"89":0.01058,"90":0.01058,"91":0.01058,"92":0.01058,"93":0.06348,"94":0.01058,"95":0.00529,"96":0.01058,"97":0.01058,"98":0.01587,"99":0.01587,"100":0.03703,"101":0.04232,"102":0.03174,"103":0.30682,"104":0.04232,"105":0.0529,"106":0.06348,"107":0.07935,"108":0.17457,"109":1.16909,"110":0.07935,"111":0.08993,"112":0.14283,"113":0.16399,"114":0.32269,"115":0.33856,"116":2.32231,"117":12.17229,"118":11.76496,"119":0.02116,"120":0.00529,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 61 62 63 64 71 73 121 122"},F:{"52":0.00529,"89":0.00529,"93":0.00529,"94":0.00529,"95":0.0529,"99":0.00529,"100":0.00529,"101":0.01058,"102":0.71415,"103":0.13754,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 90 91 92 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.01058,"13":0.00529,"15":0.00529,"17":0.00529,"18":0.00529,"85":0.00529,"92":0.00529,"103":0.00529,"105":0.00529,"106":0.01058,"107":0.01587,"108":0.02116,"109":0.11638,"110":0.01587,"111":0.01058,"112":0.01058,"113":0.01587,"114":0.02645,"115":0.03174,"116":0.13225,"117":3.29567,"118":3.29567,"119":0.01058,_:"14 16 79 80 81 83 84 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 104"},E:{"8":0.00529,"9":0.02116,"13":0.01587,"14":0.10051,"15":0.01587,_:"0 4 5 6 7 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 17.2","9.1":0.00529,"11.1":0.01058,"12.1":0.04232,"13.1":0.21689,"14.1":0.29095,"15.1":0.03703,"15.2-15.3":0.03703,"15.4":0.07935,"15.5":0.12696,"15.6":0.87285,"16.0":0.08464,"16.1":0.1587,"16.2":0.17986,"16.3":0.42849,"16.4":0.1587,"16.5":0.41791,"16.6":3.86699,"17.0":1.16909,"17.1":0.08993},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00255,"5.0-5.1":0.00255,"6.0-6.1":0.00764,"7.0-7.1":0.01784,"8.1-8.4":0.00255,"9.0-9.2":0.01784,"9.3":0.06115,"10.0-10.2":0.00255,"10.3":0.08918,"11.0-11.2":0.08154,"11.3-11.4":0.02803,"12.0-12.1":0.02293,"12.2-12.5":0.40514,"13.0-13.1":0.01274,"13.2":0.0688,"13.3":0.02548,"13.4-13.7":0.08154,"14.0-14.4":0.22423,"14.5-14.8":0.36182,"15.0-15.1":0.14269,"15.2-15.3":0.16307,"15.4":0.18091,"15.5":0.25735,"15.6-15.7":1.78108,"16.0":0.65739,"16.1":1.25873,"16.2":0.61408,"16.3":1.13897,"16.4":0.24461,"16.5":0.6523,"16.6-16.7":12.21785,"17.0":4.35205,"17.1":0.26245,"17.2":0.00764},P:{"4":0.11137,"20":0.03341,"21":0.11137,"22":2.06032,"23":0.52343,"5.0-5.4":0.01114,_:"6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 14.0 15.0","13.0":0.01114,"16.0":0.02227,"17.0":0.02227,"18.0":0.01114,"19.0":0.01114},I:{"0":0.03279,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.0001},A:{"8":0.01278,"9":0.01278,"11":0.12784,_:"6 7 10 5.5"},K:{"0":0.21661,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.4709},Q:{"13.1":0.01413},O:{"0":0.11302},H:{"0":0},L:{"0":18.26872}}; diff --git a/node_modules/caniuse-lite/data/regions/CD.js b/node_modules/caniuse-lite/data/regions/CD.js new file mode 100644 index 00000000..6502dba4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CD.js @@ -0,0 +1 @@ +module.exports={C:{"31":0.00129,"37":0.00129,"43":0.00129,"47":0.00129,"57":0.03996,"60":0.00129,"72":0.00258,"78":0.00129,"102":0.00516,"112":0.00387,"114":0.00129,"115":0.09668,"116":0.00516,"117":0.03609,"118":0.31967,"119":0.05027,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 38 39 40 41 42 44 45 46 48 49 50 51 52 53 54 55 56 58 59 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 105 106 107 108 109 110 111 113 120 121 122 3.5 3.6"},D:{"11":0.00516,"26":0.00129,"29":0.00129,"33":0.00129,"38":0.00129,"43":0.00773,"49":0.00258,"50":0.00129,"52":0.00129,"55":0.00129,"57":0.00129,"58":0.00129,"63":0.00129,"64":0.00129,"68":0.00129,"69":0.00258,"70":0.00129,"73":0.00129,"74":0.00516,"76":0.00129,"77":0.00129,"78":0.00387,"79":0.00645,"80":0.00129,"81":0.00773,"83":0.00129,"84":0.00129,"86":0.00129,"87":0.00387,"88":0.00258,"89":0.00129,"90":0.00258,"91":0.00387,"92":0.00387,"93":0.00129,"95":0.00258,"97":0.00129,"98":0.01805,"99":0.00645,"100":0.00129,"101":0.00129,"102":0.00258,"103":0.00645,"104":0.00129,"105":0.00902,"106":0.00129,"107":0.00258,"108":0.01676,"109":0.30807,"110":0.05414,"111":0.02191,"112":0.00645,"113":0.00773,"114":0.03094,"115":0.03867,"116":0.09281,"117":0.80305,"118":1.0196,"119":0.00129,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 30 31 32 34 35 36 37 39 40 41 42 44 45 46 47 48 51 53 54 56 59 60 61 62 65 66 67 71 72 75 85 94 96 120 121 122"},F:{"42":0.00129,"46":0.00129,"72":0.00129,"75":0.0116,"76":0.00129,"77":0.00129,"78":0.00129,"79":0.02578,"83":0.00129,"85":0.00129,"89":0.00129,"90":0.00773,"95":0.02449,"99":0.00129,"101":0.00902,"102":0.13406,"103":0.1057,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 73 74 80 81 82 84 86 87 88 91 92 93 94 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.02062,"13":0.00258,"14":0.00258,"15":0.00258,"16":0.00129,"17":0.00258,"18":0.02062,"84":0.00387,"85":0.00129,"89":0.00258,"90":0.00387,"92":0.0116,"96":0.00129,"100":0.00129,"108":0.00129,"109":0.00902,"110":0.00129,"111":0.00645,"112":0.00258,"113":0.00387,"114":0.01805,"115":0.00773,"116":0.02449,"117":0.36608,"118":0.36092,"119":0.00129,_:"79 80 81 83 86 87 88 91 93 94 95 97 98 99 101 102 103 104 105 106 107"},E:{"11":0.00129,"13":0.00129,"14":0.00387,_:"0 4 5 6 7 8 9 10 12 15 3.1 3.2 6.1 7.1 9.1 10.1 15.1 15.2-15.3 17.2","5.1":0.00516,"11.1":0.00129,"12.1":0.00129,"13.1":0.00516,"14.1":0.02836,"15.4":0.00129,"15.5":0.00258,"15.6":0.01934,"16.0":0.00129,"16.1":0.00129,"16.2":0.00516,"16.3":0.01289,"16.4":0.00773,"16.5":0.00387,"16.6":0.05929,"17.0":0.03223,"17.1":0.00258},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00072,"5.0-5.1":0.00072,"6.0-6.1":0.00216,"7.0-7.1":0.00504,"8.1-8.4":0.00072,"9.0-9.2":0.00504,"9.3":0.01727,"10.0-10.2":0.00072,"10.3":0.02518,"11.0-11.2":0.02302,"11.3-11.4":0.00791,"12.0-12.1":0.00648,"12.2-12.5":0.11441,"13.0-13.1":0.0036,"13.2":0.01943,"13.3":0.0072,"13.4-13.7":0.02302,"14.0-14.4":0.06332,"14.5-14.8":0.10217,"15.0-15.1":0.04029,"15.2-15.3":0.04605,"15.4":0.05109,"15.5":0.07267,"15.6-15.7":0.50295,"16.0":0.18564,"16.1":0.35545,"16.2":0.17341,"16.3":0.32163,"16.4":0.06907,"16.5":0.1842,"16.6-16.7":3.45014,"17.0":1.22895,"17.1":0.07411,"17.2":0.00216},P:{"4":0.11776,"20":0.04907,"21":0.03925,"22":0.2159,"23":0.05888,"5.0-5.4":0.01963,"6.2-6.4":0.01963,"7.2-7.4":0.05888,_:"8.2 10.1 12.0 15.0 17.0","9.2":0.04907,"11.1-11.2":0.02944,"13.0":0.01963,"14.0":0.01963,"16.0":0.02944,"18.0":0.01963,"19.0":0.02944},I:{"0":0.04333,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00013},A:{"11":0.0232,_:"6 7 8 9 10 5.5"},K:{"0":9.94262,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.10453,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.03484},Q:{"13.1":0.00871},O:{"0":0.21778},H:{"0":7.34},L:{"0":69.50024}}; diff --git a/node_modules/caniuse-lite/data/regions/CF.js b/node_modules/caniuse-lite/data/regions/CF.js new file mode 100644 index 00000000..14a34729 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CF.js @@ -0,0 +1 @@ +module.exports={C:{"50":0.00279,"51":0.00279,"60":0.00279,"72":0.00698,"79":0.0014,"102":0.0014,"110":0.03769,"115":0.02932,"116":0.0014,"117":0.05584,"118":1.26896,"119":0.07957,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 105 106 107 108 109 111 112 113 114 120 121 122 3.5 3.6"},D:{"11":0.00558,"37":0.00279,"49":0.0014,"50":0.00698,"52":0.0014,"58":0.0014,"60":0.1033,"69":0.00279,"77":0.0014,"79":0.00419,"80":0.02652,"86":0.00279,"87":0.00698,"93":0.00279,"94":0.00698,"95":0.0014,"98":0.0014,"105":0.0014,"107":0.02932,"108":0.00419,"109":0.11866,"111":0.12006,"112":0.0014,"114":0.02932,"115":0.06282,"116":0.08795,"117":0.68404,"118":0.70777,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 43 44 45 46 47 48 51 53 54 55 56 57 59 61 62 63 64 65 66 67 68 70 71 72 73 74 75 76 78 81 83 84 85 88 89 90 91 92 96 97 99 100 101 102 103 104 106 110 113 119 120 121 122"},F:{"79":0.00977,"90":0.00698,"94":0.00279,"95":0.00698,"97":0.00279,"102":0.06561,"103":0.00977,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 85 86 87 88 89 91 92 93 96 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.0349,"17":0.00698,"18":0.05305,"84":0.00977,"86":0.00279,"89":0.00279,"90":0.00279,"92":0.00279,"100":0.0014,"105":0.0014,"107":0.0014,"109":0.0684,"112":0.00838,"113":0.0014,"114":0.00558,"115":0.00558,"116":0.01536,"117":0.28618,"118":0.22476,_:"13 14 15 16 79 80 81 83 85 87 88 91 93 94 95 96 97 98 99 101 102 103 104 106 108 110 111 119"},E:{"11":0.1061,"14":0.04607,_:"0 4 5 6 7 8 9 10 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 13.1 15.1 15.2-15.3 15.4 15.5 16.0 16.1 16.2 16.3 16.4 16.5 17.1 17.2","5.1":0.00419,"14.1":0.0014,"15.6":0.0014,"16.6":0.0014,"17.0":0.00279},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00032,"5.0-5.1":0.00032,"6.0-6.1":0.00096,"7.0-7.1":0.00224,"8.1-8.4":0.00032,"9.0-9.2":0.00224,"9.3":0.00768,"10.0-10.2":0.00032,"10.3":0.0112,"11.0-11.2":0.01024,"11.3-11.4":0.00352,"12.0-12.1":0.00288,"12.2-12.5":0.05089,"13.0-13.1":0.0016,"13.2":0.00864,"13.3":0.0032,"13.4-13.7":0.01024,"14.0-14.4":0.02817,"14.5-14.8":0.04545,"15.0-15.1":0.01792,"15.2-15.3":0.02048,"15.4":0.02272,"15.5":0.03233,"15.6-15.7":0.22373,"16.0":0.08258,"16.1":0.15811,"16.2":0.07714,"16.3":0.14307,"16.4":0.03073,"16.5":0.08194,"16.6-16.7":1.53473,"17.0":0.54668,"17.1":0.03297,"17.2":0.00096},P:{"4":0.07836,"20":0.03918,"21":0.03918,"22":0.10775,"23":0.0098,"5.0-5.4":0.04898,"6.2-6.4":0.0098,"7.2-7.4":0.05877,"8.2":0.05877,"9.2":0.02939,_:"10.1 12.0 14.0 17.0","11.1-11.2":0.0098,"13.0":0.0098,"15.0":0.0098,"16.0":0.0098,"18.0":0.01959,"19.0":0.09795},I:{"0":0.29104,"3":0,"4":0.00006,"2.1":0,"2.2":0.00009,"2.3":0,"4.1":0.00006,"4.2-4.3":0.0002,"4.4":0,"4.4.3-4.4.4":0.00088},A:{"11":0.01815,_:"6 7 8 9 10 5.5"},K:{"0":2.0287,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.53345,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.0086},Q:{_:"13.1"},O:{"0":0.07744},H:{"0":8.95},L:{"0":79.54791}}; diff --git a/node_modules/caniuse-lite/data/regions/CG.js b/node_modules/caniuse-lite/data/regions/CG.js new file mode 100644 index 00000000..c8cf05d4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CG.js @@ -0,0 +1 @@ +module.exports={C:{"115":0.37149,"117":0.0391,"118":0.76742,"119":0.16619,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 116 120 121 122 3.5 3.6"},D:{"11":0.01466,"37":0.00489,"38":0.01466,"39":0.01466,"42":0.00489,"46":0.00489,"64":0.00489,"66":0.00489,"69":0.00978,"71":0.00978,"73":0.12709,"76":0.00489,"79":0.02444,"81":0.00489,"83":0.00978,"84":0.00489,"86":0.0391,"87":0.05866,"89":0.00978,"91":0.00978,"93":0.01955,"95":0.02933,"98":0.03422,"102":0.00978,"103":0.06354,"104":0.05377,"106":0.00489,"107":0.02444,"108":0.01466,"109":0.91406,"110":0.01466,"112":0.00978,"113":0.00489,"114":0.01466,"115":0.03422,"116":0.1613,"117":9.14056,"118":14.46359,"119":0.02444,"120":0.01955,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 40 41 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 65 67 68 70 72 74 75 77 78 80 85 88 90 92 94 96 97 99 100 101 105 111 121 122"},F:{"42":0.00489,"79":0.00978,"85":0.00489,"95":0.10754,"99":0.00489,"101":0.00489,"102":0.49369,"103":0.26884,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 86 87 88 89 90 91 92 93 94 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"17":0.00489,"18":0.00978,"84":0.00489,"89":0.00489,"92":0.01955,"108":0.01466,"109":0.11731,"111":0.04399,"112":0.01466,"113":0.00489,"114":0.00489,"115":0.01955,"116":0.02933,"117":6.05623,"118":5.19594,_:"12 13 14 15 16 79 80 81 83 85 86 87 88 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 110 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 14.1 15.1 15.2-15.3 15.4 15.5 16.0 16.1 16.4 17.1 17.2","13.1":0.06843,"15.6":0.01466,"16.2":0.00489,"16.3":0.00489,"16.5":0.00489,"16.6":0.01955,"17.0":0.00489},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00085,"5.0-5.1":0.00085,"6.0-6.1":0.00254,"7.0-7.1":0.00592,"8.1-8.4":0.00085,"9.0-9.2":0.00592,"9.3":0.02031,"10.0-10.2":0.00085,"10.3":0.02962,"11.0-11.2":0.02708,"11.3-11.4":0.00931,"12.0-12.1":0.00762,"12.2-12.5":0.13457,"13.0-13.1":0.00423,"13.2":0.02285,"13.3":0.00846,"13.4-13.7":0.02708,"14.0-14.4":0.07448,"14.5-14.8":0.12019,"15.0-15.1":0.0474,"15.2-15.3":0.05417,"15.4":0.06009,"15.5":0.08548,"15.6-15.7":0.59162,"16.0":0.21837,"16.1":0.41811,"16.2":0.20398,"16.3":0.37833,"16.4":0.08125,"16.5":0.21667,"16.6-16.7":4.0584,"17.0":1.44562,"17.1":0.08718,"17.2":0.00254},P:{"4":0.17718,"20":0.01042,"21":0.02084,"22":0.17718,"23":0.02084,_:"5.0-5.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0 18.0","6.2-6.4":0.02084,"7.2-7.4":0.0938,"19.0":0.01042},I:{"0":0.01525,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00005},A:{"11":0.00489,_:"6 7 8 9 10 5.5"},K:{"0":0.32421,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.138,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.02044},Q:{"13.1":0.02044},O:{"0":0.10222},H:{"0":0.33},L:{"0":49.98474}}; diff --git a/node_modules/caniuse-lite/data/regions/CH.js b/node_modules/caniuse-lite/data/regions/CH.js new file mode 100644 index 00000000..788d90be --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CH.js @@ -0,0 +1 @@ +module.exports={C:{"48":0.0236,"52":0.04129,"55":0.0118,"71":0.0059,"72":0.0059,"75":0.0118,"78":0.08259,"81":0.0059,"83":0.0059,"84":0.0059,"89":0.0059,"91":0.0118,"92":0.0059,"98":0.0118,"99":0.0118,"100":0.0059,"102":0.10618,"105":0.0059,"106":0.0059,"107":0.0059,"108":0.03539,"109":0.0177,"110":0.0059,"111":0.0059,"112":0.0059,"113":0.07079,"114":0.0236,"115":0.74917,"116":0.04129,"117":0.18877,"118":4.1411,"119":0.87895,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 73 74 76 77 79 80 82 85 86 87 88 90 93 94 95 96 97 101 103 104 120 121 122 3.5 3.6"},D:{"38":0.0059,"49":0.0295,"51":0.0059,"52":0.33624,"65":0.0059,"66":0.07669,"71":0.0059,"72":0.0059,"75":0.0059,"76":0.0059,"78":0.0059,"79":0.07079,"80":0.0118,"81":0.0177,"83":0.0295,"84":0.0236,"85":0.0236,"86":0.0295,"87":0.05899,"88":0.0059,"89":0.0177,"90":0.0118,"91":0.0059,"92":0.0059,"93":0.0059,"94":0.0118,"95":0.0059,"96":0.0118,"97":0.0059,"98":0.0118,"99":0.0177,"100":0.04129,"101":0.05309,"102":0.03539,"103":0.20057,"104":0.04129,"105":0.0177,"106":0.0236,"107":0.0295,"108":0.06489,"109":0.95564,"110":0.0295,"111":0.04129,"112":0.07079,"113":0.06489,"114":0.27725,"115":0.51321,"116":1.41576,"117":10.22887,"118":13.93934,"119":0.0177,"120":0.0059,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 53 54 55 56 57 58 59 60 61 62 63 64 67 68 69 70 73 74 77 121 122"},F:{"46":0.0059,"84":0.0118,"89":0.0059,"95":0.0236,"96":0.0059,"99":0.0059,"100":0.0059,"101":0.0118,"102":1.61043,"103":0.32445,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 85 86 87 88 90 91 92 93 94 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.0059,"85":0.0059,"92":0.0177,"96":0.0177,"97":0.0059,"99":0.0059,"100":0.0059,"106":0.0059,"107":0.0059,"108":0.0236,"109":0.22416,"110":0.0236,"111":0.0177,"112":0.0295,"113":0.0295,"114":0.07079,"115":0.11798,"116":0.34214,"117":4.67791,"118":7.43274,"119":0.0177,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 88 89 90 91 93 94 95 98 101 102 103 104 105"},E:{"9":0.0059,"13":0.0177,"14":0.09438,"15":0.0236,_:"0 4 5 6 7 8 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.0059,"11.1":0.0059,"12.1":0.10028,"13.1":0.21826,"14.1":0.27135,"15.1":0.05309,"15.2-15.3":0.08849,"15.4":0.08259,"15.5":0.10618,"15.6":0.81406,"16.0":0.10028,"16.1":0.19467,"16.2":0.16517,"16.3":0.40703,"16.4":0.19467,"16.5":0.48372,"16.6":2.58376,"17.0":1.34497,"17.1":0.09438,"17.2":0.0059},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00215,"5.0-5.1":0.00215,"6.0-6.1":0.00646,"7.0-7.1":0.01508,"8.1-8.4":0.00215,"9.0-9.2":0.01508,"9.3":0.05169,"10.0-10.2":0.00215,"10.3":0.07538,"11.0-11.2":0.06892,"11.3-11.4":0.02369,"12.0-12.1":0.01938,"12.2-12.5":0.34246,"13.0-13.1":0.01077,"13.2":0.05815,"13.3":0.02154,"13.4-13.7":0.06892,"14.0-14.4":0.18954,"14.5-14.8":0.30585,"15.0-15.1":0.12062,"15.2-15.3":0.13785,"15.4":0.15292,"15.5":0.21754,"15.6-15.7":1.50554,"16.0":0.55569,"16.1":1.064,"16.2":0.51908,"16.3":0.96277,"16.4":0.20677,"16.5":0.55138,"16.6-16.7":10.32769,"17.0":3.67877,"17.1":0.22185,"17.2":0.00646},P:{"4":0.06396,"20":0.0533,"21":0.11726,"22":2.61174,"23":0.60763,"5.0-5.4":0.02132,_:"6.2-6.4 7.2-7.4 8.2 9.2 10.1 12.0 14.0","11.1-11.2":0.01066,"13.0":0.01066,"15.0":0.01066,"16.0":0.01066,"17.0":0.03198,"18.0":0.01066,"19.0":0.03198},I:{"0":0.0408,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00012},A:{"8":0.00618,"11":0.1236,_:"6 7 9 10 5.5"},K:{"0":0.25016,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.0041,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.65206},Q:{_:"13.1"},O:{"0":0.04101},H:{"0":0},L:{"0":15.0635}}; diff --git a/node_modules/caniuse-lite/data/regions/CI.js b/node_modules/caniuse-lite/data/regions/CI.js new file mode 100644 index 00000000..eb43d78d --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CI.js @@ -0,0 +1 @@ +module.exports={C:{"43":0.00227,"52":0.00682,"56":0.00227,"59":0.00227,"60":0.00227,"67":0.00227,"68":0.00454,"70":0.00227,"72":0.00909,"76":0.00227,"78":0.00454,"79":0.00227,"88":0.00227,"89":0.00454,"97":0.00227,"99":0.00227,"100":0.00909,"102":0.00227,"106":0.00227,"108":0.00227,"111":0.00227,"113":0.00909,"114":0.00227,"115":0.18176,"116":0.00682,"117":0.02954,"118":0.73158,"119":0.13405,"120":0.00227,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 53 54 55 57 58 61 62 63 64 65 66 69 71 73 74 75 77 80 81 82 83 84 85 86 87 90 91 92 93 94 95 96 98 101 103 104 105 107 109 110 112 121 122 3.5 3.6"},D:{"11":0.00454,"38":0.00227,"41":0.00682,"43":0.00227,"46":0.00227,"47":0.00909,"49":0.01136,"50":0.00227,"55":0.00227,"56":0.00454,"58":0.00227,"63":0.00454,"64":0.00454,"65":0.00227,"66":0.00227,"67":0.00454,"68":0.00227,"69":0.00227,"70":0.01136,"71":0.00227,"72":0.00227,"73":0.00227,"74":0.00227,"75":0.01136,"76":0.00227,"77":0.00682,"78":0.00227,"79":0.04317,"80":0.03181,"81":0.00682,"83":0.0159,"84":0.00227,"85":0.00682,"86":0.00909,"87":0.18403,"88":0.02045,"89":0.01363,"90":0.01363,"91":0.01363,"92":0.00682,"93":0.01136,"94":0.0159,"95":0.0159,"96":0.00682,"97":0.00682,"98":0.03181,"99":0.01136,"100":0.12496,"101":0.00682,"102":0.05907,"103":0.06589,"104":0.04317,"105":0.03862,"106":0.02499,"107":0.0568,"108":0.04317,"109":2.44694,"110":0.0159,"111":0.02272,"112":0.01818,"113":0.0159,"114":0.06362,"115":0.08861,"116":0.33853,"117":4.46902,"118":4.91206,"119":0.01363,"120":0.00227,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 44 45 48 51 52 53 54 57 59 60 61 62 121 122"},F:{"46":0.00227,"74":0.00454,"78":0.00227,"79":0.00454,"95":0.05453,"99":0.00454,"101":0.00227,"102":0.26355,"103":0.24083,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00227,"14":0.00454,"15":0.00227,"16":0.00227,"17":0.00227,"18":0.0159,"84":0.00227,"85":0.00227,"89":0.00227,"90":0.00454,"92":0.01818,"100":0.00227,"105":0.00227,"107":0.00227,"108":0.00227,"109":0.03181,"111":0.00227,"112":0.00454,"113":0.00454,"114":0.01136,"115":0.0159,"116":0.02045,"117":0.87472,"118":1.01786,"119":0.00454,_:"13 79 80 81 83 86 87 88 91 93 94 95 96 97 98 99 101 102 103 104 106 110"},E:{"14":0.00454,"15":0.00227,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 15.1 17.2","5.1":0.00227,"11.1":0.00227,"12.1":0.00227,"13.1":0.03181,"14.1":0.01818,"15.2-15.3":0.00227,"15.4":0.00227,"15.5":0.00454,"15.6":0.04771,"16.0":0.00227,"16.1":0.00454,"16.2":0.00227,"16.3":0.01818,"16.4":0.02045,"16.5":0.01363,"16.6":0.13632,"17.0":0.08179,"17.1":0.01136},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00171,"5.0-5.1":0.00171,"6.0-6.1":0.00514,"7.0-7.1":0.01198,"8.1-8.4":0.00171,"9.0-9.2":0.01198,"9.3":0.04108,"10.0-10.2":0.00171,"10.3":0.05991,"11.0-11.2":0.05478,"11.3-11.4":0.01883,"12.0-12.1":0.01541,"12.2-12.5":0.27217,"13.0-13.1":0.00856,"13.2":0.04622,"13.3":0.01712,"13.4-13.7":0.05478,"14.0-14.4":0.15063,"14.5-14.8":0.24307,"15.0-15.1":0.09586,"15.2-15.3":0.10955,"15.4":0.12153,"15.5":0.17289,"15.6-15.7":1.19651,"16.0":0.44163,"16.1":0.84561,"16.2":0.41253,"16.3":0.76515,"16.4":0.16433,"16.5":0.43821,"16.6-16.7":8.20785,"17.0":2.92367,"17.1":0.17631,"17.2":0.00514},P:{"4":0.05078,"20":0.03047,"21":0.1422,"22":0.61956,"23":0.06094,_:"5.0-5.4 6.2-6.4 8.2 10.1 12.0 13.0","7.2-7.4":0.25392,"9.2":0.03047,"11.1-11.2":0.02031,"14.0":0.05078,"15.0":0.01016,"16.0":0.06094,"17.0":0.01016,"18.0":0.02031,"19.0":0.06094},I:{"0":0.06151,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00019},A:{"11":0.00682,_:"6 7 8 9 10 5.5"},K:{"0":0.8183,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.03091,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.10046},Q:{"13.1":0.02318},O:{"0":0.10819},H:{"0":0.48},L:{"0":61.73877}}; diff --git a/node_modules/caniuse-lite/data/regions/CK.js b/node_modules/caniuse-lite/data/regions/CK.js new file mode 100644 index 00000000..aad92f92 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CK.js @@ -0,0 +1 @@ +module.exports={C:{"72":0.00667,"78":0.01333,"107":0.02666,"113":0.05333,"114":0.02333,"115":0.08999,"117":0.00667,"118":0.35996,"119":0.10999,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 108 109 110 111 112 116 120 121 122 3.5 3.6"},D:{"41":1.06323,"50":0.00667,"53":0.05333,"80":0.02,"83":0.01333,"87":0.04666,"94":0.01667,"98":0.00333,"103":0.01333,"104":0.00667,"106":0.12999,"109":0.50662,"111":0.00333,"112":0.41996,"114":0.10999,"115":0.09666,"116":0.52661,"117":13.30534,"118":12.17545,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 43 44 45 46 47 48 49 51 52 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 84 85 86 88 89 90 91 92 93 95 96 97 99 100 101 102 105 107 108 110 113 119 120 121 122"},F:{"99":0.00333,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 100 101 102 103 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"110":0.00667,"114":0.04333,"115":0.01667,"116":0.02,"117":0.82658,"118":0.74659,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 111 112 113 119"},E:{"11":0.00333,"13":0.01,"14":0.05666,_:"0 4 5 6 7 8 9 10 12 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 15.2-15.3 17.2","12.1":0.01,"13.1":0.01,"14.1":0.07333,"15.1":0.00333,"15.4":0.00667,"15.5":0.03333,"15.6":0.09332,"16.0":0.15665,"16.1":0.04,"16.2":0.07333,"16.3":0.04,"16.4":0.09999,"16.5":0.05999,"16.6":0.9999,"17.0":0.20331,"17.1":0.00333},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00246,"5.0-5.1":0.00246,"6.0-6.1":0.00739,"7.0-7.1":0.01725,"8.1-8.4":0.00246,"9.0-9.2":0.01725,"9.3":0.05914,"10.0-10.2":0.00246,"10.3":0.08624,"11.0-11.2":0.07885,"11.3-11.4":0.02711,"12.0-12.1":0.02218,"12.2-12.5":0.3918,"13.0-13.1":0.01232,"13.2":0.06653,"13.3":0.02464,"13.4-13.7":0.07885,"14.0-14.4":0.21684,"14.5-14.8":0.34991,"15.0-15.1":0.13799,"15.2-15.3":0.1577,"15.4":0.17495,"15.5":0.24888,"15.6-15.7":1.72242,"16.0":0.63574,"16.1":1.21728,"16.2":0.59385,"16.3":1.10146,"16.4":0.23656,"16.5":0.63082,"16.6-16.7":11.81547,"17.0":4.20872,"17.1":0.2538,"17.2":0.00739},P:{"20":0.14366,"21":0.3489,"22":4.56647,"23":2.81171,_:"4 8.2 9.2 10.1 12.0 15.0 17.0","5.0-5.4":0.01026,"6.2-6.4":0.02052,"7.2-7.4":0.1334,"11.1-11.2":0.06157,"13.0":0.01026,"14.0":0.01026,"16.0":0.04105,"18.0":0.24628,"19.0":0.36942},I:{"0":0.00663,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.00002},A:{"10":0.03333,"11":0.03,_:"6 7 8 9 5.5"},K:{"0":0.17334,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.36002},Q:{_:"13.1"},O:{"0":0.03334},H:{"0":0},L:{"0":32.97493}}; diff --git a/node_modules/caniuse-lite/data/regions/CL.js b/node_modules/caniuse-lite/data/regions/CL.js new file mode 100644 index 00000000..f65e580b --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CL.js @@ -0,0 +1 @@ +module.exports={C:{"48":0.00471,"52":0.00941,"68":0.00941,"73":0.00471,"78":0.00941,"87":0.00471,"102":0.00471,"103":0.00471,"105":0.00471,"108":0.00471,"109":0.00471,"110":0.00471,"111":0.00471,"113":0.00471,"114":0.01882,"115":0.16,"116":0.01412,"117":0.04235,"118":1.07767,"119":0.24471,"120":0.00471,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 74 75 76 77 79 80 81 82 83 84 85 86 88 89 90 91 92 93 94 95 96 97 98 99 100 101 104 106 107 112 121 122 3.5 3.6"},D:{"38":0.01882,"47":0.00471,"48":0.00941,"49":0.03765,"51":0.00471,"58":0.00471,"63":0.00471,"65":0.00941,"68":0.00941,"70":0.00471,"72":0.00471,"74":0.01882,"76":0.00471,"77":0.00941,"79":0.09883,"80":0.00471,"81":0.00471,"83":0.00471,"85":0.00471,"86":0.00471,"87":0.03294,"88":0.00471,"89":0.00941,"90":0.00471,"91":0.03765,"92":0.00471,"93":0.00471,"94":0.00471,"95":0.00941,"96":0.01412,"97":0.00941,"98":0.00471,"99":0.01882,"100":0.00941,"101":0.00941,"102":0.01882,"103":0.09412,"104":0.00941,"105":0.01882,"106":0.01882,"107":0.03294,"108":0.04706,"109":1.68475,"110":0.02353,"111":0.05177,"112":0.03765,"113":0.06118,"114":0.18353,"115":0.14589,"116":1.19062,"117":14.16035,"118":14.07094,"119":0.01412,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 50 52 53 54 55 56 57 59 60 61 62 64 66 67 69 71 73 75 78 84 120 121 122"},F:{"28":0.00471,"85":0.00941,"95":0.03765,"99":0.00471,"100":0.00941,"101":0.01412,"102":5.4119,"103":0.40942,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"92":0.01412,"100":0.00941,"104":0.00471,"107":0.00471,"108":0.00471,"109":0.03294,"110":0.00471,"111":0.03294,"112":0.00471,"113":0.00941,"114":0.01882,"115":0.02824,"116":0.06118,"117":2.07535,"118":1.98593,"119":0.00471,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103 105 106"},E:{"9":0.00471,"14":0.01882,"15":0.00471,_:"0 4 5 6 7 8 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.00471,"13.1":0.04235,"14.1":0.07059,"15.1":0.00941,"15.2-15.3":0.01412,"15.4":0.01412,"15.5":0.03294,"15.6":0.12706,"16.0":0.00941,"16.1":0.04706,"16.2":0.02824,"16.3":0.08471,"16.4":0.04235,"16.5":0.10353,"16.6":0.3953,"17.0":0.32942,"17.1":0.01882},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00097,"5.0-5.1":0.00097,"6.0-6.1":0.00292,"7.0-7.1":0.0068,"8.1-8.4":0.00097,"9.0-9.2":0.0068,"9.3":0.02333,"10.0-10.2":0.00097,"10.3":0.03402,"11.0-11.2":0.0311,"11.3-11.4":0.01069,"12.0-12.1":0.00875,"12.2-12.5":0.15454,"13.0-13.1":0.00486,"13.2":0.02624,"13.3":0.00972,"13.4-13.7":0.0311,"14.0-14.4":0.08553,"14.5-14.8":0.13802,"15.0-15.1":0.05443,"15.2-15.3":0.06221,"15.4":0.06901,"15.5":0.09817,"15.6-15.7":0.67941,"16.0":0.25077,"16.1":0.48016,"16.2":0.23425,"16.3":0.43447,"16.4":0.09331,"16.5":0.24883,"16.6-16.7":4.66064,"17.0":1.66014,"17.1":0.10011,"17.2":0.00292},P:{"4":0.0943,"20":0.05239,"21":0.07334,"22":1.38306,"23":0.25147,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0","7.2-7.4":0.03143,"11.1-11.2":0.01048,"13.0":0.01048,"14.0":0.01048,"15.0":0.01048,"16.0":0.03143,"17.0":0.01048,"18.0":0.01048,"19.0":0.03143},I:{"0":0.0474,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00014},A:{"8":0.01548,"9":0.00516,"10":0.01032,"11":0.12904,_:"6 7 5.5"},K:{"0":0.21705,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.18529},Q:{_:"13.1"},O:{"0":0.02118},H:{"0":0},L:{"0":41.69324}}; diff --git a/node_modules/caniuse-lite/data/regions/CM.js b/node_modules/caniuse-lite/data/regions/CM.js new file mode 100644 index 00000000..0d9e7b54 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CM.js @@ -0,0 +1 @@ +module.exports={C:{"4":0.00173,"32":0.00173,"34":0.00173,"43":0.00173,"46":0.00173,"47":0.00346,"48":0.00173,"49":0.00173,"50":0.00173,"51":0.00346,"52":0.09688,"56":0.00173,"58":0.00173,"60":0.00173,"61":0.00173,"68":0.00173,"72":0.00692,"78":0.00346,"81":0.01038,"82":0.00519,"84":0.00346,"86":0.00173,"88":0.00865,"99":0.00173,"100":0.00346,"101":0.00173,"102":0.02595,"103":0.01557,"105":0.00173,"106":0.00173,"107":0.00519,"108":0.00519,"109":0.00519,"110":0.00692,"111":0.00173,"112":0.00346,"113":0.01211,"114":0.00865,"115":0.38752,"116":0.00865,"117":0.04844,"118":0.69027,"119":0.13321,"120":0.00173,_:"2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 35 36 37 38 39 40 41 42 44 45 53 54 55 57 59 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 83 85 87 89 90 91 92 93 94 95 96 97 98 104 121 122 3.5 3.6"},D:{"11":0.00173,"38":0.00346,"41":0.01038,"49":0.00346,"55":0.00173,"56":0.01903,"57":0.00346,"58":0.00519,"61":0.00173,"63":0.00173,"64":0.00346,"65":0.00346,"67":0.00346,"68":0.01384,"69":0.00173,"70":0.00173,"72":0.00346,"73":0.00173,"74":0.00692,"75":0.00519,"76":0.00346,"77":0.00173,"79":0.01038,"80":0.00692,"81":0.00346,"83":0.00173,"84":0.00173,"85":0.02768,"86":0.00346,"87":0.00692,"88":0.00692,"89":0.00346,"90":0.00346,"91":0.00346,"92":0.00519,"93":0.00346,"94":0.00865,"95":0.0173,"96":0.00519,"97":0.00173,"98":0.00173,"99":0.00173,"100":0.01038,"101":0.00519,"102":0.00865,"103":0.02422,"104":0.00173,"105":0.00865,"106":0.01903,"107":0.00519,"108":0.01211,"109":0.82002,"110":0.00692,"111":0.0173,"112":0.01038,"113":0.02249,"114":0.04844,"115":0.05709,"116":0.21625,"117":2.18499,"118":1.92203,"119":0.00173,"120":0.00173,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 46 47 48 50 51 52 53 54 59 60 62 66 71 78 121 122"},F:{"44":0.00173,"46":0.00173,"66":0.00173,"79":0.02076,"84":0.00692,"85":0.00173,"90":0.00173,"95":0.11072,"99":0.00346,"101":0.00519,"102":0.19722,"103":0.13667,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 86 87 88 89 91 92 93 94 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00865,"13":0.00346,"14":0.00865,"15":0.00346,"16":0.00346,"17":0.00519,"18":0.02076,"83":0.00173,"84":0.00692,"85":0.00173,"86":0.00173,"89":0.00519,"90":0.00692,"92":0.02941,"100":0.00519,"105":0.00173,"107":0.00173,"108":0.00173,"109":0.01038,"110":0.00692,"111":0.00173,"112":0.00865,"113":0.00346,"114":0.0173,"115":0.01903,"116":0.02768,"117":0.44634,"118":0.29583,"119":0.00173,_:"79 80 81 87 88 91 93 94 95 96 97 98 99 101 102 103 104 106"},E:{"10":0.00346,"13":0.00346,"14":0.00865,_:"0 4 5 6 7 8 9 11 12 15 3.1 3.2 6.1 7.1 9.1 15.1 16.2 17.2","5.1":0.00865,"10.1":0.00173,"11.1":0.00173,"12.1":0.00173,"13.1":0.01211,"14.1":0.00692,"15.2-15.3":0.00173,"15.4":0.00173,"15.5":0.00692,"15.6":0.02768,"16.0":0.00173,"16.1":0.00173,"16.3":0.00173,"16.4":0.00692,"16.5":0.00346,"16.6":0.02076,"17.0":0.01557,"17.1":0.00173},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0011,"5.0-5.1":0.0011,"6.0-6.1":0.0033,"7.0-7.1":0.00771,"8.1-8.4":0.0011,"9.0-9.2":0.00771,"9.3":0.02643,"10.0-10.2":0.0011,"10.3":0.03855,"11.0-11.2":0.03525,"11.3-11.4":0.01212,"12.0-12.1":0.00991,"12.2-12.5":0.17513,"13.0-13.1":0.00551,"13.2":0.02974,"13.3":0.01101,"13.4-13.7":0.03525,"14.0-14.4":0.09693,"14.5-14.8":0.1564,"15.0-15.1":0.06168,"15.2-15.3":0.07049,"15.4":0.0782,"15.5":0.11124,"15.6-15.7":0.7699,"16.0":0.28417,"16.1":0.54411,"16.2":0.26544,"16.3":0.49234,"16.4":0.10574,"16.5":0.28197,"16.6-16.7":5.28136,"17.0":1.88124,"17.1":0.11345,"17.2":0.0033},P:{"4":0.16504,"20":0.06189,"21":0.10315,"22":0.28882,"23":0.02063,"5.0-5.4":0.05157,"6.2-6.4":0.01031,"7.2-7.4":0.08252,_:"8.2 10.1 12.0","9.2":0.06189,"11.1-11.2":0.02063,"13.0":0.02063,"14.0":0.02063,"15.0":0.01031,"16.0":0.03094,"17.0":0.01031,"18.0":0.01031,"19.0":0.03094},I:{"0":0.02468,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00007},A:{"8":0.00173,"10":0.00173,"11":0.05363,_:"6 7 9 5.5"},K:{"0":1.94201,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.18192,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.17365},Q:{"13.1":0.00827},O:{"0":0.27288},H:{"0":1.87},L:{"0":74.38847}}; diff --git a/node_modules/caniuse-lite/data/regions/CN.js b/node_modules/caniuse-lite/data/regions/CN.js new file mode 100644 index 00000000..71157446 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CN.js @@ -0,0 +1 @@ +module.exports={C:{"4":0.00366,"21":0.00366,"34":0.00731,"43":0.06945,"48":0.00366,"52":0.01828,"56":0.00366,"63":0.00366,"72":0.02924,"78":0.00731,"83":0.01828,"89":0.00366,"91":0.00366,"100":0.00366,"102":0.00366,"104":0.00366,"105":0.00366,"106":0.00366,"107":0.00366,"108":0.01097,"109":0.01097,"110":0.02193,"111":0.01097,"112":0.00366,"113":0.00366,"114":0.00366,"115":0.15351,"116":0.15351,"117":0.02924,"118":0.43495,"119":0.0731,_:"2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 44 45 46 47 49 50 51 53 54 55 57 58 59 60 61 62 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 84 85 86 87 88 90 92 93 94 95 96 97 98 99 101 103 120 121 122 3.5 3.6"},D:{"11":0.00731,"26":0.00366,"27":0.00366,"31":0.00731,"36":0.00366,"40":0.00366,"41":0.01097,"42":0.00366,"43":0.00366,"45":0.01097,"47":0.01097,"48":0.0731,"49":0.06945,"50":0.17179,"51":0.00366,"53":0.02924,"54":0.00366,"55":0.04752,"56":0.00731,"57":0.0329,"58":0.00366,"59":0.00731,"60":0.00731,"61":0.01462,"62":0.01097,"63":0.02924,"64":0.00366,"65":0.01097,"66":0.00366,"67":0.01097,"68":0.00366,"69":0.89913,"70":1.18788,"71":0.01462,"72":0.01828,"73":0.83334,"74":0.01097,"75":0.08407,"76":0.05848,"77":0.12427,"78":0.13889,"79":0.20103,"80":0.05483,"81":0.04021,"83":0.21199,"84":0.05483,"85":0.01462,"86":0.41667,"87":0.18275,"88":0.02559,"89":0.05483,"90":0.13524,"91":0.09503,"92":0.57018,"93":0.01097,"94":0.19737,"95":0.08041,"96":0.02559,"97":0.14255,"98":1.3158,"99":0.33261,"100":0.18641,"101":0.106,"102":0.05117,"103":0.05483,"104":0.02193,"105":0.04752,"106":0.0329,"107":0.08041,"108":0.12062,"109":0.72004,"110":0.04021,"111":0.04021,"112":0.12427,"113":0.08772,"114":0.31799,"115":0.09869,"116":0.21565,"117":1.61917,"118":1.30118,"119":0.02924,"120":0.0329,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 28 29 30 32 33 34 35 37 38 39 44 46 52 121 122"},F:{"11":0.00366,"95":0.00366,"101":0.00366,"102":0.02193,"103":0.01097,_:"9 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"14":0.00366,"15":0.00366,"16":0.00731,"17":0.00731,"18":0.05848,"84":0.00366,"87":0.00366,"88":0.00731,"89":0.00366,"90":0.00366,"92":0.05117,"94":0.00366,"95":0.00366,"96":0.00366,"97":0.00366,"98":0.00366,"99":0.00366,"100":0.01097,"101":0.00731,"102":0.00731,"103":0.00731,"104":0.00366,"105":0.00731,"106":0.01097,"107":0.02559,"108":0.06214,"109":0.1462,"110":0.0731,"111":0.07676,"112":0.06945,"113":0.26316,"114":0.19372,"115":0.13889,"116":0.41302,"117":3.00807,"118":2.59505,"119":0.02193,_:"12 13 79 80 81 83 85 86 91 93"},E:{"5":0.00366,"9":0.00366,"13":0.01097,"14":0.05117,"15":0.01097,_:"0 4 6 7 8 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.00731,"13.1":0.06214,"14.1":0.06945,"15.1":0.01828,"15.2-15.3":0.01462,"15.4":0.03655,"15.5":0.04386,"15.6":0.16082,"16.0":0.01828,"16.1":0.06214,"16.2":0.05483,"16.3":0.12793,"16.4":0.0329,"16.5":0.08407,"16.6":0.53729,"17.0":0.16082,"17.1":0.01097},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00117,"5.0-5.1":0.00117,"6.0-6.1":0.00351,"7.0-7.1":0.00819,"8.1-8.4":0.00117,"9.0-9.2":0.00819,"9.3":0.02808,"10.0-10.2":0.00117,"10.3":0.04094,"11.0-11.2":0.03743,"11.3-11.4":0.01287,"12.0-12.1":0.01053,"12.2-12.5":0.186,"13.0-13.1":0.00585,"13.2":0.03159,"13.3":0.0117,"13.4-13.7":0.03743,"14.0-14.4":0.10295,"14.5-14.8":0.16612,"15.0-15.1":0.06551,"15.2-15.3":0.07487,"15.4":0.08306,"15.5":0.11815,"15.6-15.7":0.81771,"16.0":0.30182,"16.1":0.5779,"16.2":0.28193,"16.3":0.52292,"16.4":0.1123,"16.5":0.29948,"16.6-16.7":5.60935,"17.0":1.99808,"17.1":0.12049,"17.2":0.00351},P:{"20":0.01158,"21":0.02317,"22":0.22011,_:"4 23 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 18.0 19.0","17.0":0.01158},I:{"0":2.79606,"3":0,"4":0.00056,"2.1":0,"2.2":0.00084,"2.3":0,"4.1":0.00056,"4.2-4.3":0.00197,"4.4":0,"4.4.3-4.4.4":0.00843},A:{"6":0.03658,"7":0.03658,"8":0.07316,"9":2.01194,"10":0.03658,"11":6.51137,_:"5.5"},K:{"0":0.03806,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.13322},Q:{"13.1":4.31392},O:{"0":7.77774},H:{"0":0},L:{"0":36.35277}}; diff --git a/node_modules/caniuse-lite/data/regions/CO.js b/node_modules/caniuse-lite/data/regions/CO.js new file mode 100644 index 00000000..ba203a37 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CO.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00373,"52":0.00745,"73":0.00373,"78":0.00745,"80":0.00373,"88":0.00745,"102":0.00373,"105":0.00373,"107":0.00373,"109":0.00373,"110":0.00373,"111":0.00373,"112":0.00373,"113":0.00745,"114":0.00373,"115":0.10803,"116":0.00745,"117":0.02235,"118":0.62208,"119":0.12665,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 81 82 83 84 85 86 87 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 106 108 120 121 122 3.5 3.6"},D:{"22":0.00373,"26":0.00373,"38":0.01863,"39":0.00373,"44":0.00373,"47":0.01118,"49":0.00745,"50":0.00373,"51":0.00373,"53":0.00373,"56":0.00373,"58":0.00373,"60":0.00373,"62":0.00373,"63":0.00373,"65":0.00373,"68":0.00745,"69":0.00373,"70":0.00373,"72":0.00373,"73":0.00373,"75":0.00373,"76":0.00373,"77":0.00373,"78":0.00373,"79":0.15645,"80":0.00745,"81":0.00745,"83":0.00745,"84":0.00373,"85":0.00745,"86":0.00745,"87":0.03353,"88":0.0298,"89":0.01863,"90":0.00745,"91":0.02608,"92":0.00745,"93":0.00745,"94":0.00745,"95":0.00745,"96":0.0149,"97":0.01863,"98":0.00373,"99":0.01863,"100":0.00745,"101":0.01118,"102":0.01118,"103":0.0745,"104":0.01118,"105":0.0298,"106":0.0298,"107":0.0298,"108":0.0447,"109":1.67253,"110":0.02608,"111":0.03725,"112":0.04843,"113":0.0447,"114":0.1043,"115":0.11175,"116":0.85303,"117":11.5028,"118":12.60168,"119":0.01863,"120":0.00745,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 34 35 36 37 40 41 42 43 45 46 48 52 54 55 57 59 61 64 66 67 71 74 121 122"},F:{"28":0.00373,"85":0.00373,"91":0.00373,"95":0.0298,"100":0.00373,"101":0.00745,"102":1.86995,"103":0.21978,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 92 93 94 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00745,"92":0.0149,"100":0.00373,"103":0.00373,"106":0.00373,"107":0.00373,"108":0.00745,"109":0.03353,"110":0.00373,"111":0.00373,"112":0.00745,"113":0.00745,"114":0.01863,"115":0.01863,"116":0.0447,"117":1.63528,"118":1.61665,"119":0.01118,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 104 105"},E:{"14":0.01118,"15":0.00373,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 10.1 11.1 17.2","5.1":0.01118,"9.1":0.00745,"12.1":0.00373,"13.1":0.02235,"14.1":0.03725,"15.1":0.00745,"15.2-15.3":0.00745,"15.4":0.0149,"15.5":0.01118,"15.6":0.09313,"16.0":0.00745,"16.1":0.03353,"16.2":0.0298,"16.3":0.07078,"16.4":0.02235,"16.5":0.05588,"16.6":0.25703,"17.0":0.20115,"17.1":0.01118},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00131,"5.0-5.1":0.00131,"6.0-6.1":0.00394,"7.0-7.1":0.00919,"8.1-8.4":0.00131,"9.0-9.2":0.00919,"9.3":0.0315,"10.0-10.2":0.00131,"10.3":0.04593,"11.0-11.2":0.04199,"11.3-11.4":0.01444,"12.0-12.1":0.01181,"12.2-12.5":0.20866,"13.0-13.1":0.00656,"13.2":0.03543,"13.3":0.01312,"13.4-13.7":0.04199,"14.0-14.4":0.11548,"14.5-14.8":0.18635,"15.0-15.1":0.07349,"15.2-15.3":0.08399,"15.4":0.09317,"15.5":0.13254,"15.6-15.7":0.91731,"16.0":0.33858,"16.1":0.64828,"16.2":0.31627,"16.3":0.5866,"16.4":0.12598,"16.5":0.33595,"16.6-16.7":6.29253,"17.0":2.24143,"17.1":0.13517,"17.2":0.00394},P:{"4":0.13298,"20":0.03069,"21":0.04092,"22":0.74675,"23":0.16367,"5.0-5.4":0.03069,_:"6.2-6.4 8.2 9.2 10.1 12.0 14.0 15.0","7.2-7.4":0.06138,"11.1-11.2":0.01023,"13.0":0.01023,"16.0":0.02046,"17.0":0.02046,"18.0":0.01023,"19.0":0.02046},I:{"0":0.03746,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00011},A:{"8":0.00373,"11":0.02608,_:"6 7 9 10 5.5"},K:{"0":0.1318,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.10669},Q:{_:"13.1"},O:{"0":0.0251},H:{"0":0},L:{"0":49.5929}}; diff --git a/node_modules/caniuse-lite/data/regions/CR.js b/node_modules/caniuse-lite/data/regions/CR.js new file mode 100644 index 00000000..6f301f22 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CR.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.00436,"56":0.00436,"62":0.00436,"73":0.03925,"78":0.00436,"88":0.00436,"95":0.00436,"98":0.00436,"102":0.00436,"109":0.00872,"110":0.00436,"113":0.00436,"114":0.01744,"115":0.34452,"116":0.00872,"117":0.05669,"118":1.33447,"119":0.27038,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 96 97 99 100 101 103 104 105 106 107 108 111 112 120 121 122 3.5 3.6"},D:{"38":0.00436,"39":0.00436,"43":0.00436,"44":0.00436,"45":0.00436,"46":0.00436,"47":0.00436,"49":0.00436,"51":0.00872,"63":0.00436,"65":0.00436,"67":0.00436,"68":0.01744,"70":0.00436,"73":0.01744,"76":0.00436,"77":0.00436,"79":0.02617,"80":0.01744,"81":0.00872,"83":0.01308,"85":0.00436,"86":0.04797,"87":0.03489,"88":0.00436,"90":0.00436,"91":0.00872,"92":0.00436,"93":0.00436,"94":0.01744,"95":0.00436,"96":0.13083,"97":0.01308,"98":0.01744,"99":0.01744,"100":0.00436,"101":0.00436,"102":0.00872,"103":0.08286,"104":0.00872,"105":0.01308,"106":0.02181,"107":0.01308,"108":0.01308,"109":0.75009,"110":0.00872,"111":0.01744,"112":0.02617,"113":0.02617,"114":0.12647,"115":0.13519,"116":1.12514,"117":13.23127,"118":12.12794,"119":0.01308,"120":0.00436,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 41 42 48 50 52 53 54 55 56 57 58 59 60 61 62 64 66 69 71 72 74 75 78 84 89 121 122"},F:{"28":0.01308,"95":0.03925,"97":0.00436,"100":0.00436,"101":0.05669,"102":2.32005,"103":0.22241,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"17":0.01744,"18":0.00436,"92":0.01308,"100":0.00436,"109":0.03053,"112":0.00436,"113":0.00436,"114":0.01744,"115":0.02181,"116":0.04797,"117":2.35494,"118":2.5948,"119":0.01308,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103 104 105 106 107 108 110 111"},E:{"9":0.01308,"13":0.00872,"14":0.00872,"15":0.00436,_:"0 4 5 6 7 8 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.00436,"12.1":0.00436,"13.1":0.04361,"14.1":0.06542,"15.1":0.01308,"15.2-15.3":0.00872,"15.4":0.02181,"15.5":0.03489,"15.6":0.27038,"16.0":0.03053,"16.1":0.06542,"16.2":0.03925,"16.3":0.21369,"16.4":0.08286,"16.5":0.14827,"16.6":1.16875,"17.0":0.65415,"17.1":0.08286},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00114,"5.0-5.1":0.00114,"6.0-6.1":0.00342,"7.0-7.1":0.00799,"8.1-8.4":0.00114,"9.0-9.2":0.00799,"9.3":0.02738,"10.0-10.2":0.00114,"10.3":0.03993,"11.0-11.2":0.0365,"11.3-11.4":0.01255,"12.0-12.1":0.01027,"12.2-12.5":0.18138,"13.0-13.1":0.0057,"13.2":0.0308,"13.3":0.01141,"13.4-13.7":0.0365,"14.0-14.4":0.10039,"14.5-14.8":0.16199,"15.0-15.1":0.06388,"15.2-15.3":0.07301,"15.4":0.08099,"15.5":0.11522,"15.6-15.7":0.7974,"16.0":0.29432,"16.1":0.56354,"16.2":0.27493,"16.3":0.50992,"16.4":0.10951,"16.5":0.29204,"16.6-16.7":5.46999,"17.0":1.94843,"17.1":0.1175,"17.2":0.00342},P:{"4":0.07194,"20":0.08221,"21":0.12332,"22":2.52803,"23":0.53438,_:"5.0-5.4 8.2 9.2","6.2-6.4":0.02055,"7.2-7.4":0.08221,"10.1":0.02055,"11.1-11.2":0.05138,"12.0":0.02055,"13.0":0.03083,"14.0":0.01028,"15.0":0.01028,"16.0":0.03083,"17.0":0.07194,"18.0":0.02055,"19.0":0.05138},I:{"0":0.08976,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00027},A:{"7":0.00436,"8":0.02181,"9":0.00436,"10":0.00872,"11":0.03489,_:"6 5.5"},K:{"0":0.26631,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00564,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.24812},Q:{_:"13.1"},O:{"0":0.05075},H:{"0":0.01},L:{"0":42.36747}}; diff --git a/node_modules/caniuse-lite/data/regions/CU.js b/node_modules/caniuse-lite/data/regions/CU.js new file mode 100644 index 00000000..5b34e3ae --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CU.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.20023,"38":0.00247,"40":0.00494,"41":0.00247,"42":0.00247,"43":0.01236,"45":0.00494,"46":0.00247,"47":0.00742,"48":0.00742,"49":0.00247,"50":0.00742,"51":0.00247,"52":0.11618,"53":0.00247,"54":0.06922,"56":0.01978,"57":0.04697,"58":0.00247,"59":0.00494,"60":0.02472,"61":0.00989,"63":0.00494,"64":0.0173,"65":0.02225,"66":0.0173,"67":0.00494,"68":0.01236,"69":0.00742,"70":0.00742,"71":0.0173,"72":0.07663,"73":0.00494,"74":0.00494,"75":0.00494,"76":0.00494,"77":0.00989,"78":0.00989,"79":0.00247,"80":0.00494,"81":0.00247,"82":0.03461,"83":0.00494,"84":0.03708,"85":0.01483,"86":0.00247,"87":0.00494,"88":0.03461,"89":0.03955,"90":0.00742,"91":0.05686,"92":0.01483,"93":0.01978,"94":0.01236,"95":0.02719,"96":0.02966,"97":0.03955,"98":0.02966,"99":0.09641,"100":0.05686,"101":0.09888,"102":0.07169,"103":0.02472,"104":0.04202,"105":0.00742,"106":0.04944,"107":0.03214,"108":0.03461,"109":0.04944,"110":0.07416,"111":0.05933,"112":0.06922,"113":0.11618,"114":0.10135,"115":1.27308,"116":0.13349,"117":0.4326,"118":3.97003,"119":0.67733,"120":0.01236,"121":0.00247,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 44 55 62 122 3.5 3.6"},D:{"33":0.00247,"38":0.00247,"42":0.00247,"43":0.00247,"49":0.00247,"52":0.00247,"54":0.00247,"55":0.00742,"56":0.00247,"58":0.00247,"60":0.00247,"61":0.00247,"62":0.00247,"63":0.00494,"64":0.00247,"67":0.00247,"68":0.00247,"69":0.00247,"70":0.00494,"71":0.00989,"72":0.00742,"73":0.01236,"74":0.00494,"75":0.00494,"76":0.00247,"77":0.00989,"78":0.00247,"79":0.0173,"80":0.00742,"81":0.01978,"83":0.00494,"84":0.00742,"85":0.00247,"86":0.0173,"87":0.01483,"88":0.13349,"89":0.08158,"90":0.07663,"91":0.02719,"92":0.00989,"93":0.00742,"94":0.02472,"95":0.0173,"96":0.00742,"97":0.00742,"98":0.00742,"99":0.01978,"100":0.0173,"101":0.01236,"102":0.03461,"103":0.01978,"104":0.01236,"105":0.01978,"106":0.05191,"107":0.02966,"108":0.07416,"109":0.61306,"110":0.08158,"111":0.06922,"112":0.06674,"113":0.03708,"114":0.18046,"115":0.08405,"116":0.41282,"117":2.3657,"118":2.21738,"119":0.0173,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 39 40 41 44 45 46 47 48 50 51 53 57 59 65 66 120 121 122"},F:{"34":0.00247,"36":0.00247,"37":0.00247,"42":0.00247,"45":0.00247,"46":0.00247,"56":0.00247,"57":0.00247,"60":0.00247,"64":0.00494,"69":0.00989,"70":0.00494,"77":0.00247,"79":0.0791,"82":0.00494,"85":0.00247,"86":0.00494,"90":0.00494,"91":0.00247,"92":0.00247,"95":0.10135,"96":0.00989,"97":0.00742,"98":0.00494,"99":0.04697,"100":0.00989,"101":0.03214,"102":0.46721,"103":0.27192,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 38 39 40 41 43 44 47 48 49 50 51 52 53 54 55 58 62 63 65 66 67 68 71 72 73 74 75 76 78 80 81 83 84 87 88 89 93 94 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00742,"13":0.0173,"14":0.02225,"15":0.00742,"16":0.01236,"17":0.0173,"18":0.06674,"83":0.00247,"84":0.02719,"85":0.00742,"88":0.00247,"89":0.01483,"90":0.02225,"92":0.11866,"98":0.00247,"99":0.00247,"100":0.04697,"101":0.00247,"102":0.00247,"103":0.00742,"105":0.00247,"107":0.00247,"108":0.00494,"109":0.02225,"110":0.01236,"111":0.01483,"112":0.00989,"113":0.01236,"114":0.05686,"115":0.04944,"116":0.0791,"117":0.86273,"118":0.73171,"119":0.00742,_:"79 80 81 86 87 91 93 94 95 96 97 104 106"},E:{"13":0.00494,"14":0.00247,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 9.1 10.1 12.1 15.4 15.5 16.0 17.2","5.1":0.01236,"11.1":0.00494,"13.1":0.0173,"14.1":0.00494,"15.1":0.00247,"15.2-15.3":0.00247,"15.6":0.08158,"16.1":0.00247,"16.2":0.00247,"16.3":0.0173,"16.4":0.00494,"16.5":0.13596,"16.6":0.0791,"17.0":0.0618,"17.1":0.01483},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00062,"5.0-5.1":0.00062,"6.0-6.1":0.00187,"7.0-7.1":0.00437,"8.1-8.4":0.00062,"9.0-9.2":0.00437,"9.3":0.01499,"10.0-10.2":0.00062,"10.3":0.02187,"11.0-11.2":0.01999,"11.3-11.4":0.00687,"12.0-12.1":0.00562,"12.2-12.5":0.09933,"13.0-13.1":0.00312,"13.2":0.01687,"13.3":0.00625,"13.4-13.7":0.01999,"14.0-14.4":0.05498,"14.5-14.8":0.08871,"15.0-15.1":0.03499,"15.2-15.3":0.03998,"15.4":0.04436,"15.5":0.0631,"15.6-15.7":0.43669,"16.0":0.16118,"16.1":0.30862,"16.2":0.15056,"16.3":0.27926,"16.4":0.05998,"16.5":0.15993,"16.6-16.7":2.99563,"17.0":1.06706,"17.1":0.06435,"17.2":0.00187},P:{"4":0.26528,"20":0.09183,"21":0.37752,"22":0.88768,"23":0.08163,"5.0-5.4":0.02041,"6.2-6.4":0.02041,"7.2-7.4":0.28569,_:"8.2","9.2":0.04081,"10.1":0.0102,"11.1-11.2":0.05102,"12.0":0.02041,"13.0":0.04081,"14.0":0.04081,"15.0":0.05102,"16.0":0.10203,"17.0":0.15305,"18.0":0.04081,"19.0":0.17346},I:{"0":0.09735,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00007,"4.4":0,"4.4.3-4.4.4":0.00029},A:{"8":0.00247,"9":0.00247,"11":0.03461,_:"6 7 10 5.5"},K:{"0":0.96873,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.57958},Q:{"13.1":0.03011},O:{"0":0.09032},H:{"0":0.07},L:{"0":69.20964}}; diff --git a/node_modules/caniuse-lite/data/regions/CV.js b/node_modules/caniuse-lite/data/regions/CV.js new file mode 100644 index 00000000..03705c72 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CV.js @@ -0,0 +1 @@ +module.exports={C:{"50":0.00382,"52":0.00382,"54":0.00382,"61":0.00763,"78":0.01526,"115":0.14501,"116":0.03816,"117":0.03053,"118":0.67925,"119":0.11448,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 53 55 56 57 58 59 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 120 121 122 3.5 3.6"},D:{"39":0.00382,"43":0.00382,"47":0.00382,"49":0.01908,"50":0.00382,"53":0.00382,"55":0.00382,"56":0.00763,"57":0.00382,"59":0.00382,"60":0.01145,"63":0.00763,"65":0.01145,"68":0.00382,"69":0.05342,"70":0.01145,"71":0.00763,"73":0.00763,"78":0.00382,"79":0.06106,"80":0.00763,"81":0.00382,"83":0.03434,"84":0.00382,"87":0.02671,"88":0.00763,"90":0.02671,"91":0.00382,"93":0.03053,"95":0.01145,"96":0.00382,"97":0.03434,"99":0.1183,"101":0.00382,"102":0.00763,"103":0.09922,"104":0.01526,"105":0.00763,"106":0.08014,"108":0.01145,"109":1.33178,"110":0.08014,"111":0.04961,"112":0.0229,"113":0.03816,"114":0.13738,"115":0.08395,"116":0.59148,"117":10.90613,"118":10.31846,"119":0.01145,"120":0.01526,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 44 45 46 48 51 52 54 58 61 62 64 66 67 72 74 75 76 77 85 86 89 92 94 98 100 107 121 122"},F:{"79":0.00382,"83":0.00382,"94":0.00382,"95":0.03053,"97":0.00382,"102":0.66017,"103":0.43502,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 84 85 86 87 88 89 90 91 92 93 96 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.01526,"13":0.00382,"14":0.00763,"16":0.00763,"18":0.01526,"89":0.01526,"92":0.01145,"96":0.14501,"99":0.01526,"100":0.04579,"105":0.00382,"108":0.00382,"109":0.03434,"110":0.00382,"111":0.01145,"112":0.4999,"113":0.0229,"114":0.0229,"115":0.03816,"116":0.40831,"117":2.9345,"118":2.6941,"119":0.00382,_:"15 17 79 80 81 83 84 85 86 87 88 90 91 93 94 95 97 98 101 102 103 104 106 107"},E:{"14":0.00382,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 12.1 15.1 16.0 17.2","11.1":0.00763,"13.1":0.01145,"14.1":0.12593,"15.2-15.3":0.01526,"15.4":0.00382,"15.5":0.0229,"15.6":0.15646,"16.1":0.00382,"16.2":0.00382,"16.3":0.04579,"16.4":0.01145,"16.5":0.0229,"16.6":0.42358,"17.0":0.27094,"17.1":0.00763},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.001,"5.0-5.1":0.001,"6.0-6.1":0.003,"7.0-7.1":0.007,"8.1-8.4":0.001,"9.0-9.2":0.007,"9.3":0.02399,"10.0-10.2":0.001,"10.3":0.03498,"11.0-11.2":0.03198,"11.3-11.4":0.01099,"12.0-12.1":0.009,"12.2-12.5":0.15892,"13.0-13.1":0.005,"13.2":0.02699,"13.3":0.00999,"13.4-13.7":0.03198,"14.0-14.4":0.08796,"14.5-14.8":0.14193,"15.0-15.1":0.05597,"15.2-15.3":0.06397,"15.4":0.07096,"15.5":0.10095,"15.6-15.7":0.69865,"16.0":0.25787,"16.1":0.49375,"16.2":0.24088,"16.3":0.44677,"16.4":0.09595,"16.5":0.25587,"16.6-16.7":4.79258,"17.0":1.70714,"17.1":0.10295,"17.2":0.003},P:{"4":0.17736,"20":0.0939,"21":0.0626,"22":1.40843,"23":0.18779,_:"5.0-5.4 8.2 10.1 12.0 14.0","6.2-6.4":0.0313,"7.2-7.4":0.11476,"9.2":0.02087,"11.1-11.2":0.02087,"13.0":0.01043,"15.0":0.31298,"16.0":0.0626,"17.0":0.04173,"18.0":0.08346,"19.0":0.13563},I:{"0":0.07384,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.00022},A:{"9":0.00382,"11":0.01908,_:"6 7 8 10 5.5"},K:{"0":0.21029,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.02474,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.22266},Q:{_:"13.1"},O:{"0":0.06185},H:{"0":0},L:{"0":51.00179}}; diff --git a/node_modules/caniuse-lite/data/regions/CX.js b/node_modules/caniuse-lite/data/regions/CX.js new file mode 100644 index 00000000..2cc04e7e --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CX.js @@ -0,0 +1 @@ +module.exports={C:{_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 3.5 3.6"},D:{"93":14.286,"117":14.286,"118":28.572,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 119 120 121 122"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 15.2-15.3 15.4 15.5 15.6 16.0 16.1 16.2 16.3 16.4 16.5 17.0 17.1 17.2","16.6":14.286},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0,"15.0-15.1":0,"15.2-15.3":0,"15.4":0,"15.5":0,"15.6-15.7":0,"16.0":0,"16.1":0,"16.2":0,"16.3":0,"16.4":0,"16.5":0,"16.6-16.7":0,"17.0":0,"17.1":0,"17.2":0},P:{"23":14.285,_:"4 20 21 22 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0"},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{_:"0"},Q:{_:"13.1"},O:{_:"0"},H:{"0":0},L:{"0":14.285}}; diff --git a/node_modules/caniuse-lite/data/regions/CY.js b/node_modules/caniuse-lite/data/regions/CY.js new file mode 100644 index 00000000..164e558f --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CY.js @@ -0,0 +1 @@ +module.exports={C:{"24":0.00392,"52":0.01962,"72":0.00392,"78":0.00392,"88":0.01177,"92":0.00392,"94":0.00392,"102":0.00392,"108":0.00392,"109":0.00392,"111":0.01177,"112":0.00785,"113":0.00392,"114":0.00392,"115":0.18835,"116":0.0157,"117":0.03924,"118":1.18897,"119":0.23152,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 91 93 95 96 97 98 99 100 101 103 104 105 106 107 110 120 121 122 3.5 3.6"},D:{"38":0.02354,"42":0.00392,"43":0.00392,"44":0.00392,"45":0.00392,"46":0.00392,"47":0.00785,"49":0.01177,"51":0.00785,"53":0.01177,"56":0.00785,"58":0.00392,"68":0.01177,"69":0.00392,"70":0.00785,"71":0.00392,"72":0.00785,"73":0.00392,"74":0.00785,"75":0.00392,"76":0.00392,"77":0.01177,"78":0.00785,"79":0.08633,"80":0.01177,"81":0.00785,"83":0.01177,"84":0.00392,"85":0.00785,"86":0.0157,"87":0.12164,"88":0.02354,"89":0.0157,"90":0.01177,"91":0.04709,"93":0.16481,"94":0.00392,"95":0.03139,"96":0.01962,"98":0.01962,"99":0.00785,"100":0.00392,"101":0.00392,"102":0.0157,"103":0.06278,"104":0.00785,"105":0.00392,"106":0.01962,"107":0.01962,"108":0.04709,"109":2.42896,"110":0.01177,"111":0.01177,"112":0.03139,"113":0.07456,"114":0.10987,"115":0.07456,"116":1.10264,"117":11.772,"118":9.49608,"119":0.00785,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 48 50 52 54 55 57 59 60 61 62 63 64 65 66 67 92 97 120 121 122"},F:{"28":0.00785,"46":0.00392,"79":0.00392,"82":0.01177,"95":0.03139,"101":0.00392,"102":1.47542,"103":0.20405,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"13":0.00392,"15":0.00392,"18":0.00785,"80":0.00392,"81":0.00392,"83":0.00392,"84":0.00392,"86":0.00392,"89":0.00392,"90":0.00392,"92":0.00392,"99":0.01177,"107":0.02354,"108":0.00392,"109":0.0981,"110":0.00785,"112":0.00392,"113":0.00392,"114":0.02354,"115":0.00392,"116":0.04316,"117":2.7625,"118":2.37402,_:"12 14 16 17 79 85 87 88 91 93 94 95 96 97 98 100 101 102 103 104 105 106 111 119"},E:{"9":0.01177,"13":0.00392,"14":0.07456,"15":0.00392,_:"0 4 5 6 7 8 10 11 12 3.1 3.2 6.1 7.1 10.1 11.1 17.2","5.1":0.00392,"9.1":0.03924,"12.1":0.00785,"13.1":0.1805,"14.1":0.11772,"15.1":0.07848,"15.2-15.3":0.01177,"15.4":0.0157,"15.5":0.02747,"15.6":0.20405,"16.0":0.01962,"16.1":0.03532,"16.2":0.03139,"16.3":0.12164,"16.4":0.09025,"16.5":0.10987,"16.6":1.02809,"17.0":0.48658,"17.1":0.06278},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00126,"5.0-5.1":0.00126,"6.0-6.1":0.00379,"7.0-7.1":0.00885,"8.1-8.4":0.00126,"9.0-9.2":0.00885,"9.3":0.03034,"10.0-10.2":0.00126,"10.3":0.04424,"11.0-11.2":0.04045,"11.3-11.4":0.0139,"12.0-12.1":0.01138,"12.2-12.5":0.20098,"13.0-13.1":0.00632,"13.2":0.03413,"13.3":0.01264,"13.4-13.7":0.04045,"14.0-14.4":0.11123,"14.5-14.8":0.17949,"15.0-15.1":0.07078,"15.2-15.3":0.0809,"15.4":0.08975,"15.5":0.12767,"15.6-15.7":0.88355,"16.0":0.32612,"16.1":0.62442,"16.2":0.30463,"16.3":0.56502,"16.4":0.12135,"16.5":0.32359,"16.6-16.7":6.06096,"17.0":2.15894,"17.1":0.13019,"17.2":0.00379},P:{"4":0.07235,"20":0.05168,"21":0.12404,"22":3.72106,"23":0.7132,"5.0-5.4":0.05168,"6.2-6.4":0.01034,_:"7.2-7.4 8.2 10.1 12.0 15.0","9.2":0.90959,"11.1-11.2":0.01034,"13.0":0.02067,"14.0":0.01034,"16.0":0.02067,"17.0":0.02067,"18.0":0.02067,"19.0":0.08269},I:{"0":0.09069,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00027},A:{"7":0.00392,"8":0.02747,"9":0.00392,"10":0.00392,"11":0.20797,_:"6 5.5"},K:{"0":0.35677,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00608,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.20054},Q:{_:"13.1"},O:{"0":0.22485},H:{"0":0.02},L:{"0":41.85796}}; diff --git a/node_modules/caniuse-lite/data/regions/CZ.js b/node_modules/caniuse-lite/data/regions/CZ.js new file mode 100644 index 00000000..edbddb31 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/CZ.js @@ -0,0 +1 @@ +module.exports={C:{"48":0.0834,"52":0.15568,"56":0.0278,"60":0.00556,"65":0.00556,"68":0.00556,"78":0.02224,"80":0.00556,"81":0.00556,"83":0.01112,"87":0.00556,"88":0.01112,"89":0.00556,"91":0.01112,"95":0.00556,"96":0.00556,"97":0.00556,"99":0.00556,"100":0.00556,"102":0.04448,"103":0.00556,"104":0.01668,"105":0.01668,"106":0.00556,"107":0.01112,"108":0.01668,"109":0.02224,"110":0.01112,"111":0.01112,"112":0.01112,"113":0.03892,"114":0.02224,"115":0.82844,"116":0.07784,"117":0.23352,"118":4.4758,"119":0.85068,"120":0.00556,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 59 61 62 63 64 66 67 69 70 71 72 73 74 75 76 77 79 82 84 85 86 90 92 93 94 98 101 121 122 3.5 3.6"},D:{"38":0.00556,"41":0.00556,"49":0.02224,"51":0.00556,"53":0.00556,"67":0.00556,"70":0.00556,"72":0.00556,"74":0.04448,"76":0.00556,"77":0.00556,"79":0.07784,"80":0.01112,"81":0.00556,"83":0.00556,"84":0.01112,"85":0.03892,"86":0.00556,"87":0.03336,"88":0.01112,"89":0.01668,"90":0.01668,"91":0.00556,"92":0.00556,"93":0.01668,"94":0.00556,"95":0.00556,"96":0.01112,"97":0.00556,"98":0.01112,"99":0.01668,"100":0.01112,"101":0.00556,"102":0.278,"103":0.07228,"104":0.01668,"105":0.03892,"106":0.01112,"107":0.03892,"108":0.05004,"109":1.51232,"110":0.03892,"111":0.0278,"112":1.07864,"113":0.03892,"114":0.26132,"115":0.14456,"116":1.00636,"117":13.7332,"118":13.48856,"119":0.01668,"120":0.00556,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 46 47 48 50 52 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 71 73 75 78 121 122"},F:{"36":0.01112,"46":0.01112,"69":0.00556,"75":0.00556,"85":0.03892,"89":0.00556,"93":0.00556,"95":0.21128,"96":0.00556,"99":0.00556,"101":0.02224,"102":2.69104,"103":0.85068,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 76 77 78 79 80 81 82 83 84 86 87 88 90 91 92 94 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00556,"85":0.00556,"92":0.00556,"103":0.00556,"105":0.00556,"106":0.00556,"107":0.01112,"108":0.00556,"109":0.11676,"110":0.00556,"111":0.01112,"112":0.02224,"113":0.01112,"114":0.06672,"115":0.03336,"116":0.12232,"117":3.71408,"118":3.63068,"119":0.01112,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 104"},E:{"8":0.00556,"9":0.00556,"13":0.00556,"14":0.03892,"15":0.00556,_:"0 4 5 6 7 10 11 12 3.1 3.2 6.1 7.1 10.1 11.1 17.2","5.1":0.00556,"9.1":0.01112,"12.1":0.00556,"13.1":0.07228,"14.1":0.0834,"15.1":0.01112,"15.2-15.3":0.01112,"15.4":0.04448,"15.5":0.04448,"15.6":0.20572,"16.0":0.0278,"16.1":0.07784,"16.2":0.1112,"16.3":0.13344,"16.4":0.06116,"16.5":0.17236,"16.6":0.82288,"17.0":0.61716,"17.1":0.0556},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0011,"5.0-5.1":0.0011,"6.0-6.1":0.00331,"7.0-7.1":0.00772,"8.1-8.4":0.0011,"9.0-9.2":0.00772,"9.3":0.02647,"10.0-10.2":0.0011,"10.3":0.0386,"11.0-11.2":0.03529,"11.3-11.4":0.01213,"12.0-12.1":0.00993,"12.2-12.5":0.17536,"13.0-13.1":0.00551,"13.2":0.02978,"13.3":0.01103,"13.4-13.7":0.03529,"14.0-14.4":0.09705,"14.5-14.8":0.15661,"15.0-15.1":0.06176,"15.2-15.3":0.07059,"15.4":0.07831,"15.5":0.11139,"15.6-15.7":0.77092,"16.0":0.28455,"16.1":0.54483,"16.2":0.2658,"16.3":0.49299,"16.4":0.10588,"16.5":0.28234,"16.6-16.7":5.28839,"17.0":1.88375,"17.1":0.1136,"17.2":0.00331},P:{"4":0.08334,"20":0.03125,"21":0.08334,"22":1.771,"23":0.3542,"5.0-5.4":0.01042,_:"6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 15.0","13.0":0.01042,"14.0":0.01042,"16.0":0.01042,"17.0":0.01042,"18.0":0.01042,"19.0":0.02084},I:{"0":0.13252,"3":0,"4":0.00003,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00003,"4.2-4.3":0.00009,"4.4":0,"4.4.3-4.4.4":0.0004},A:{"8":0.10008,"10":0.14456,"11":0.1112,_:"6 7 9 5.5"},K:{"0":0.57608,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.34632},Q:{_:"13.1"},O:{"0":0.17316},H:{"0":0.01},L:{"0":30.36268}}; diff --git a/node_modules/caniuse-lite/data/regions/DE.js b/node_modules/caniuse-lite/data/regions/DE.js new file mode 100644 index 00000000..7645717b --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/DE.js @@ -0,0 +1 @@ +module.exports={C:{"4":0.00543,"11":0.00543,"40":0.00543,"48":0.0434,"49":0.00543,"50":0.00543,"52":0.08138,"55":0.00543,"56":0.02713,"59":0.01085,"68":0.00543,"71":0.00543,"72":0.00543,"77":0.00543,"78":0.03798,"82":0.00543,"83":0.00543,"84":0.00543,"87":0.00543,"88":0.00543,"91":0.0217,"92":0.00543,"95":0.00543,"96":0.00543,"97":0.00543,"98":0.00543,"99":0.00543,"100":0.00543,"101":0.00543,"102":0.72695,"103":0.00543,"104":0.01085,"105":0.01085,"106":0.01628,"107":0.01628,"108":0.01628,"109":0.01628,"110":0.01628,"111":0.0217,"112":0.0217,"113":0.04883,"114":0.0217,"115":0.88428,"116":0.04883,"117":0.2387,"118":5.7505,"119":1.1935,"120":0.00543,_:"2 3 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 51 53 54 57 58 60 61 62 63 64 65 66 67 69 70 73 74 75 76 79 80 81 85 86 89 90 93 94 121 122 3.5 3.6"},D:{"11":0.00543,"34":0.00543,"35":0.01628,"41":0.00543,"42":0.00543,"43":0.03255,"49":0.01628,"51":0.00543,"52":0.01085,"55":0.00543,"56":0.00543,"60":0.01085,"63":0.00543,"66":0.05968,"68":0.00543,"69":0.00543,"70":0.00543,"71":0.00543,"72":0.01628,"73":0.00543,"74":0.00543,"75":0.01628,"76":0.01085,"77":0.00543,"78":0.00543,"79":0.04883,"80":0.0434,"81":0.03255,"83":0.01628,"84":0.01628,"85":0.02713,"86":0.0217,"87":0.07053,"88":0.02713,"89":0.0217,"90":0.01628,"91":0.05425,"92":0.01085,"93":0.13563,"94":0.03255,"95":0.01085,"96":0.0217,"97":0.00543,"98":0.01085,"99":0.02713,"100":0.01085,"101":0.01085,"102":0.01628,"103":0.07053,"104":0.01628,"105":0.0434,"106":0.40145,"107":0.0868,"108":0.1519,"109":0.92768,"110":0.05968,"111":0.07595,"112":0.11935,"113":0.13563,"114":0.37975,"115":0.20073,"116":1.1067,"117":11.0453,"118":9.31473,"119":0.01628,"120":0.00543,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 36 37 38 39 40 44 45 46 47 48 50 53 54 57 58 59 61 62 64 65 67 121 122"},F:{"32":0.00543,"36":0.00543,"46":0.03255,"79":0.00543,"85":0.00543,"91":0.00543,"92":0.00543,"93":0.00543,"94":0.00543,"95":0.08138,"99":0.00543,"100":0.01628,"101":0.0217,"102":4.17183,"103":0.64558,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 86 87 88 89 90 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.00543},B:{"17":0.00543,"18":0.00543,"85":0.00543,"90":0.00543,"92":0.01085,"96":0.00543,"97":0.00543,"98":0.00543,"99":0.00543,"100":0.00543,"101":0.00543,"103":0.01085,"104":0.00543,"105":0.00543,"106":0.01085,"107":0.0217,"108":0.03255,"109":0.13563,"110":0.0217,"111":0.0651,"112":0.02713,"113":0.0217,"114":0.05425,"115":0.08138,"116":0.18445,"117":4.03078,"118":3.61848,"119":0.00543,_:"12 13 14 15 16 79 80 81 83 84 86 87 88 89 91 93 94 95 102"},E:{"7":0.00543,"13":0.00543,"14":0.04883,"15":0.01085,_:"0 4 5 6 8 9 10 11 12 3.1 3.2 6.1 7.1 10.1 17.2","5.1":0.01085,"9.1":0.01628,"11.1":0.01628,"12.1":0.01628,"13.1":0.08138,"14.1":0.14105,"15.1":0.03255,"15.2-15.3":0.0217,"15.4":0.0434,"15.5":0.07053,"15.6":0.38518,"16.0":0.09223,"16.1":0.14648,"16.2":0.13563,"16.3":0.2821,"16.4":0.1085,"16.5":0.27125,"16.6":1.8228,"17.0":1.09043,"17.1":0.07053},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00167,"5.0-5.1":0.00167,"6.0-6.1":0.005,"7.0-7.1":0.01166,"8.1-8.4":0.00167,"9.0-9.2":0.01166,"9.3":0.03996,"10.0-10.2":0.00167,"10.3":0.05828,"11.0-11.2":0.05329,"11.3-11.4":0.01832,"12.0-12.1":0.01499,"12.2-12.5":0.26477,"13.0-13.1":0.00833,"13.2":0.04496,"13.3":0.01665,"13.4-13.7":0.05329,"14.0-14.4":0.14654,"14.5-14.8":0.23646,"15.0-15.1":0.09325,"15.2-15.3":0.10657,"15.4":0.11823,"15.5":0.16819,"15.6-15.7":1.16398,"16.0":0.42962,"16.1":0.82261,"16.2":0.40131,"16.3":0.74435,"16.4":0.15986,"16.5":0.42629,"16.6-16.7":7.98466,"17.0":2.84417,"17.1":0.17152,"17.2":0.005},P:{"4":0.08423,"20":0.07371,"21":0.14741,"22":3.04298,"23":0.67388,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1","11.1-11.2":0.01053,"12.0":0.01053,"13.0":0.03159,"14.0":0.03159,"15.0":0.01053,"16.0":0.02106,"17.0":0.03159,"18.0":0.02106,"19.0":0.04212},I:{"0":0.05008,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00015},A:{"8":0.00563,"9":0.00563,"11":0.14065,_:"6 7 10 5.5"},K:{"0":0.63606,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00458,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.88774},Q:{"13.1":0.00458},O:{"0":0.1327},H:{"0":0},L:{"0":23.48439}}; diff --git a/node_modules/caniuse-lite/data/regions/DJ.js b/node_modules/caniuse-lite/data/regions/DJ.js new file mode 100644 index 00000000..408c4aa6 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/DJ.js @@ -0,0 +1 @@ +module.exports={C:{"29":0.0026,"33":0.013,"89":0.0026,"91":0.0052,"102":0.0052,"109":0.03119,"111":0.01819,"113":0.10396,"115":1.15656,"117":0.0104,"118":0.98242,"119":0.47822,"120":0.0078,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 90 92 93 94 95 96 97 98 99 100 101 103 104 105 106 107 108 110 112 114 116 121 122 3.5 3.6"},D:{"22":0.0026,"46":0.0026,"49":0.0104,"58":0.03379,"59":0.0052,"68":0.0078,"69":0.05198,"74":0.0026,"78":0.0026,"84":0.0026,"87":0.0052,"88":0.013,"89":0.0052,"91":0.0078,"93":0.0104,"95":0.0026,"96":0.0026,"97":0.0026,"99":0.0026,"101":0.0026,"103":0.02339,"104":0.0052,"105":0.0026,"106":0.0078,"107":0.0026,"108":0.0052,"109":2.65098,"110":0.03639,"111":0.0104,"112":0.03639,"113":0.05198,"114":0.11436,"115":0.02859,"116":0.68354,"117":5.77238,"118":6.01409,"119":0.02339,"120":0.04158,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 50 51 52 53 54 55 56 57 60 61 62 63 64 65 66 67 70 71 72 73 75 76 77 79 80 81 83 85 86 90 92 94 98 100 102 121 122"},F:{"40":0.0026,"95":0.0104,"99":0.47042,"102":0.06757,"103":0.06238,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.0078,"14":0.0026,"15":0.0026,"16":0.01819,"17":0.0026,"18":0.02339,"89":0.0104,"90":0.0026,"92":0.03379,"101":0.0026,"107":0.0026,"108":0.0026,"109":0.05458,"110":0.0104,"111":0.0052,"112":0.013,"113":0.07797,"114":0.01819,"115":0.14035,"116":0.04418,"117":2.43266,"118":1.98564,_:"13 79 80 81 83 84 85 86 87 88 91 93 94 95 96 97 98 99 100 102 103 104 105 106 119"},E:{"14":0.0026,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.1 15.4 15.5 17.1 17.2","13.1":0.0078,"14.1":0.013,"15.2-15.3":0.0104,"15.6":0.02859,"16.0":0.01559,"16.1":0.0104,"16.2":0.0052,"16.3":0.01559,"16.4":0.0052,"16.5":0.0104,"16.6":0.12215,"17.0":0.03899},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00068,"5.0-5.1":0.00068,"6.0-6.1":0.00203,"7.0-7.1":0.00473,"8.1-8.4":0.00068,"9.0-9.2":0.00473,"9.3":0.01621,"10.0-10.2":0.00068,"10.3":0.02365,"11.0-11.2":0.02162,"11.3-11.4":0.00743,"12.0-12.1":0.00608,"12.2-12.5":0.10742,"13.0-13.1":0.00338,"13.2":0.01824,"13.3":0.00676,"13.4-13.7":0.02162,"14.0-14.4":0.05945,"14.5-14.8":0.09594,"15.0-15.1":0.03783,"15.2-15.3":0.04324,"15.4":0.04797,"15.5":0.06824,"15.6-15.7":0.47226,"16.0":0.17431,"16.1":0.33376,"16.2":0.16282,"16.3":0.302,"16.4":0.06486,"16.5":0.17296,"16.6-16.7":3.2396,"17.0":1.15396,"17.1":0.06959,"17.2":0.00203},P:{"4":0.4544,"20":0.4342,"21":0.39381,"22":1.36319,"23":0.15147,"5.0-5.4":0.03029,"6.2-6.4":0.0101,"7.2-7.4":0.36352,_:"8.2 10.1 15.0 17.0","9.2":0.0101,"11.1-11.2":0.12117,"12.0":0.0202,"13.0":0.30293,"14.0":0.0101,"16.0":0.06059,"18.0":0.09088,"19.0":0.17166},I:{"0":0.08835,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00027},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0.8606,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.259},Q:{"13.1":0.0148},O:{"0":1.6132},H:{"0":0.02},L:{"0":61.7806}}; diff --git a/node_modules/caniuse-lite/data/regions/DK.js b/node_modules/caniuse-lite/data/regions/DK.js new file mode 100644 index 00000000..a759af8e --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/DK.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.02812,"78":0.02109,"87":0.00703,"91":0.00703,"96":0.00703,"102":0.02109,"110":0.00703,"115":0.14761,"116":0.01406,"117":0.05623,"118":1.22305,"119":0.24602,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 89 90 92 93 94 95 97 98 99 100 101 103 104 105 106 107 108 109 111 112 113 114 120 121 122 3.5 3.6"},D:{"44":0.00703,"48":0.00703,"49":0.01406,"52":0.02109,"66":0.00703,"76":0.00703,"78":0.00703,"79":0.02109,"85":0.01406,"86":0.00703,"87":0.04217,"88":0.02109,"89":0.02109,"90":0.00703,"91":0.00703,"92":0.01406,"93":0.06326,"94":0.00703,"95":0.01406,"96":0.00703,"97":0.01406,"98":0.00703,"99":0.01406,"100":0.01406,"101":0.00703,"102":0.01406,"103":0.29522,"104":0.02812,"105":0.02812,"106":0.01406,"107":0.0492,"108":0.0492,"109":0.7029,"110":0.07732,"111":0.07029,"112":0.1687,"113":0.16167,"114":0.56935,"115":0.66776,"116":4.46342,"117":23.85643,"118":19.76555,"119":0.01406,"120":0.00703,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 77 80 81 83 84 121 122"},F:{"46":0.00703,"95":0.02109,"99":0.00703,"100":0.00703,"101":0.00703,"102":1.52529,"103":0.14761,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"92":0.00703,"97":0.03515,"107":0.02109,"108":0.01406,"109":0.05623,"110":0.00703,"111":0.00703,"112":0.01406,"113":0.01406,"114":0.02109,"115":0.0492,"116":0.17573,"117":3.57776,"118":3.0787,"119":0.00703,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 98 99 100 101 102 103 104 105 106"},E:{"5":0.00703,"13":0.00703,"14":0.13355,"15":0.02812,_:"0 4 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.01406,"13.1":0.11949,"14.1":0.52718,"15.1":0.07732,"15.2-15.3":0.07732,"15.4":0.11949,"15.5":0.16167,"15.6":0.71696,"16.0":0.11246,"16.1":0.25304,"16.2":0.21087,"16.3":0.61152,"16.4":0.37254,"16.5":0.58341,"16.6":2.25631,"17.0":1.06841,"17.1":0.05623},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0019,"5.0-5.1":0.0019,"6.0-6.1":0.00569,"7.0-7.1":0.01327,"8.1-8.4":0.0019,"9.0-9.2":0.01327,"9.3":0.0455,"10.0-10.2":0.0019,"10.3":0.06635,"11.0-11.2":0.06067,"11.3-11.4":0.02085,"12.0-12.1":0.01706,"12.2-12.5":0.30144,"13.0-13.1":0.00948,"13.2":0.05119,"13.3":0.01896,"13.4-13.7":0.06067,"14.0-14.4":0.16683,"14.5-14.8":0.26921,"15.0-15.1":0.10617,"15.2-15.3":0.12133,"15.4":0.1346,"15.5":0.19148,"15.6-15.7":1.32519,"16.0":0.48913,"16.1":0.93654,"16.2":0.4569,"16.3":0.84744,"16.4":0.182,"16.5":0.48533,"16.6-16.7":9.09055,"17.0":3.23809,"17.1":0.19527,"17.2":0.00569},P:{"4":0.0106,"20":0.02119,"21":0.03179,"22":0.93243,"23":0.21192,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0 18.0","19.0":0.0106},I:{"0":0.06801,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.00021},A:{"8":0.09841,"9":0.00703,"11":0.12652,_:"6 7 10 5.5"},K:{"0":0.0951,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.21993},Q:{_:"13.1"},O:{"0":0.01189},H:{"0":0},L:{"0":9.20277}}; diff --git a/node_modules/caniuse-lite/data/regions/DM.js b/node_modules/caniuse-lite/data/regions/DM.js new file mode 100644 index 00000000..8d88e138 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/DM.js @@ -0,0 +1 @@ +module.exports={C:{"115":0.02397,"117":0.01918,"118":0.70472,"119":0.06232,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 116 120 121 122 3.5 3.6"},D:{"53":0.00959,"56":0.00959,"65":0.00959,"69":0.00959,"72":0.00479,"74":0.00959,"75":0.01918,"76":0.81498,"77":0.06232,"79":0.01438,"81":0.00959,"84":0.00479,"87":0.01438,"88":0.01438,"91":0.02876,"93":0.07191,"94":0.00959,"95":0.00959,"100":0.00959,"102":0.00479,"103":0.23491,"104":0.00959,"105":0.13903,"107":0.03356,"109":1.10262,"110":0.02397,"113":0.00959,"114":0.03835,"115":0.08629,"116":0.94442,"117":13.20268,"118":10.15369,"119":0.02876,"120":0.03835,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 54 55 57 58 59 60 61 62 63 64 66 67 68 70 71 73 78 80 83 85 86 89 90 92 96 97 98 99 101 106 108 111 112 121 122"},F:{"77":0.01438,"101":0.00479,"102":0.43625,"103":0.03835,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"92":0.01918,"109":0.04794,"114":0.06232,"115":0.00959,"116":0.0767,"117":3.36059,"118":3.3558,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 110 111 112 113 119"},E:{"14":0.43146,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 13.1 15.1 15.4 17.2","5.1":0.00959,"14.1":0.11506,"15.2-15.3":0.00479,"15.5":0.02397,"15.6":0.17738,"16.0":0.01918,"16.1":0.11985,"16.2":0.12944,"16.3":0.01438,"16.4":0.04794,"16.5":0.04794,"16.6":0.67595,"17.0":1.46696,"17.1":0.00479},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00074,"5.0-5.1":0.00074,"6.0-6.1":0.00223,"7.0-7.1":0.00521,"8.1-8.4":0.00074,"9.0-9.2":0.00521,"9.3":0.01788,"10.0-10.2":0.00074,"10.3":0.02607,"11.0-11.2":0.02384,"11.3-11.4":0.00819,"12.0-12.1":0.0067,"12.2-12.5":0.11845,"13.0-13.1":0.00372,"13.2":0.02011,"13.3":0.00745,"13.4-13.7":0.02384,"14.0-14.4":0.06556,"14.5-14.8":0.10579,"15.0-15.1":0.04172,"15.2-15.3":0.04768,"15.4":0.05289,"15.5":0.07524,"15.6-15.7":0.52074,"16.0":0.1922,"16.1":0.36802,"16.2":0.17954,"16.3":0.33301,"16.4":0.07152,"16.5":0.19071,"16.6-16.7":3.57217,"17.0":1.27242,"17.1":0.07673,"17.2":0.00223},P:{"4":0.03311,"20":0.14347,"21":0.05518,"22":2.03063,"23":0.58491,_:"5.0-5.4 6.2-6.4 8.2 11.1-11.2 14.0 18.0","7.2-7.4":0.11036,"9.2":0.01104,"10.1":0.02207,"12.0":0.01104,"13.0":0.03311,"15.0":0.06622,"16.0":0.02207,"17.0":0.04414,"19.0":0.05518},I:{"0":0.06733,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.0002},A:{"11":2.09498,_:"6 7 8 9 10 5.5"},K:{"0":0.47895,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.27071},Q:{_:"13.1"},O:{"0":0.11974},H:{"0":0},L:{"0":47.20877}}; diff --git a/node_modules/caniuse-lite/data/regions/DO.js b/node_modules/caniuse-lite/data/regions/DO.js new file mode 100644 index 00000000..455e2ec1 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/DO.js @@ -0,0 +1 @@ +module.exports={C:{"48":0.00448,"52":0.00896,"61":0.02241,"73":0.10754,"78":0.00448,"81":0.00448,"102":0.00448,"104":0.00448,"105":0.01792,"106":0.00448,"108":0.00448,"109":0.01344,"110":0.04481,"113":0.00448,"114":0.01344,"115":0.10754,"116":0.00448,"117":0.06273,"118":0.77969,"119":0.10754,"120":0.00448,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 107 111 112 121 122 3.5 3.6"},D:{"38":0.00896,"47":0.00896,"48":0.00448,"49":0.05825,"52":0.00448,"56":0.00448,"60":0.00448,"63":0.00448,"65":0.00448,"66":0.00448,"68":0.00448,"69":0.2599,"70":0.00448,"72":0.01344,"73":0.00448,"74":0.00896,"75":0.00896,"76":0.00896,"77":0.06273,"78":0.00448,"79":0.03585,"80":0.01792,"81":0.00896,"83":0.01792,"84":0.00896,"85":0.00896,"86":0.02689,"87":0.08514,"88":0.01792,"89":0.00448,"90":0.00896,"91":0.0717,"92":0.00448,"93":0.6139,"94":0.00896,"95":0.01344,"96":0.00896,"97":0.06722,"98":0.00448,"99":0.00448,"100":0.00448,"101":0.00448,"102":0.01792,"103":0.38537,"104":0.01344,"105":0.08962,"106":0.04481,"107":0.17476,"108":0.10306,"109":2.13744,"110":0.07618,"111":0.08066,"112":0.08962,"113":0.04481,"114":0.23749,"115":0.10754,"116":1.13369,"117":12.027,"118":12.70364,"119":0.01344,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 50 51 53 54 55 57 58 59 61 62 64 67 71 120 121 122"},F:{"28":0.00448,"69":0.00448,"78":0.00448,"90":0.01344,"93":0.00448,"95":0.02241,"100":0.00448,"101":0.01792,"102":1.44736,"103":0.21509,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 91 92 94 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"15":0.00448,"17":0.00448,"18":0.04481,"80":0.00448,"85":0.00448,"89":0.00448,"92":0.04033,"100":0.00448,"103":0.00448,"106":0.01344,"107":0.01344,"108":0.04929,"109":0.10306,"110":0.02241,"111":0.00896,"112":0.01792,"113":0.01344,"114":0.02241,"115":0.03137,"116":0.0717,"117":2.19121,"118":2.24498,"119":0.01344,_:"12 13 14 16 79 81 83 84 86 87 88 90 91 93 94 95 96 97 98 99 101 102 104 105"},E:{"12":0.00448,"14":0.05377,"15":0.01792,_:"0 4 5 6 7 8 9 10 11 13 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.00448,"11.1":0.00448,"12.1":0.00448,"13.1":0.05825,"14.1":0.22405,"15.1":0.00896,"15.2-15.3":0.01344,"15.4":0.0941,"15.5":0.03137,"15.6":0.16132,"16.0":0.02241,"16.1":0.08514,"16.2":0.06722,"16.3":0.0941,"16.4":0.08962,"16.5":0.17028,"16.6":0.89172,"17.0":0.26886,"17.1":0.02689},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00161,"5.0-5.1":0.00161,"6.0-6.1":0.00482,"7.0-7.1":0.01124,"8.1-8.4":0.00161,"9.0-9.2":0.01124,"9.3":0.03854,"10.0-10.2":0.00161,"10.3":0.05621,"11.0-11.2":0.05139,"11.3-11.4":0.01767,"12.0-12.1":0.01445,"12.2-12.5":0.25536,"13.0-13.1":0.00803,"13.2":0.04336,"13.3":0.01606,"13.4-13.7":0.05139,"14.0-14.4":0.14133,"14.5-14.8":0.22806,"15.0-15.1":0.08994,"15.2-15.3":0.10279,"15.4":0.11403,"15.5":0.16221,"15.6-15.7":1.12261,"16.0":0.41436,"16.1":0.79338,"16.2":0.38705,"16.3":0.71789,"16.4":0.15418,"16.5":0.41114,"16.6-16.7":7.70091,"17.0":2.7431,"17.1":0.16542,"17.2":0.00482},P:{"4":0.08475,"20":0.04237,"21":0.07415,"22":0.90045,"23":0.1589,"5.0-5.4":0.01059,_:"6.2-6.4 8.2 10.1 12.0","7.2-7.4":0.07415,"9.2":0.01059,"11.1-11.2":0.04237,"13.0":0.01059,"14.0":0.01059,"15.0":0.01059,"16.0":0.04237,"17.0":0.02119,"18.0":0.03178,"19.0":0.05297},I:{"0":0.04942,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00015},A:{"8":0.00982,"9":0.00491,"10":0.00491,"11":0.08343,_:"6 7 5.5"},K:{"0":0.25939,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.33666},Q:{_:"13.1"},O:{"0":0.06623},H:{"0":0},L:{"0":39.57428}}; diff --git a/node_modules/caniuse-lite/data/regions/DZ.js b/node_modules/caniuse-lite/data/regions/DZ.js new file mode 100644 index 00000000..96dc3282 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/DZ.js @@ -0,0 +1 @@ +module.exports={C:{"15":0.00632,"25":0.00316,"29":0.00316,"30":0.00316,"31":0.00316,"33":0.00316,"36":0.00316,"37":0.00316,"38":0.00632,"39":0.00316,"40":0.00316,"41":0.00316,"43":0.00632,"44":0.00632,"45":0.00316,"47":0.01581,"48":0.01581,"49":0.00316,"52":0.1296,"56":0.00316,"67":0.00316,"68":0.00948,"72":0.00948,"75":0.00632,"78":0.00316,"80":0.00316,"82":0.00316,"83":0.00316,"86":0.00316,"88":0.00632,"89":0.00632,"90":0.00316,"91":0.00316,"94":0.00316,"95":0.00316,"96":0.00316,"97":0.00316,"99":0.00948,"100":0.00316,"102":0.00632,"103":0.00632,"104":0.00316,"105":0.01581,"106":0.00948,"107":0.00316,"108":0.00632,"109":0.00632,"110":0.01264,"111":0.01264,"112":0.00948,"113":0.01897,"114":0.01581,"115":1.26124,"116":0.01581,"117":0.03793,"118":0.79341,"119":0.15805,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22 23 24 26 27 28 32 34 35 42 46 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 69 70 71 73 74 76 77 79 81 84 85 87 92 93 98 101 120 121 122 3.5 3.6"},D:{"11":0.00316,"26":0.00316,"31":0.00632,"32":0.00632,"33":0.01897,"35":0.00316,"37":0.00316,"38":0.00632,"39":0.00316,"40":0.00948,"42":0.00316,"43":0.0569,"44":0.00316,"45":0.00316,"46":0.00316,"47":0.00316,"48":0.00316,"49":0.07903,"50":0.00632,"51":0.00632,"52":0.00316,"53":0.00316,"55":0.00316,"56":0.01581,"57":0.00632,"58":0.01897,"59":0.00316,"60":0.00948,"61":0.00316,"62":0.00632,"63":0.01897,"64":0.00632,"65":0.01264,"66":0.00316,"67":0.00316,"68":0.01897,"69":0.01897,"70":0.00948,"71":0.00948,"72":0.01897,"73":0.00316,"74":0.04109,"75":0.00632,"76":0.01264,"77":0.00948,"78":0.01264,"79":0.0569,"80":0.01264,"81":0.03793,"83":0.02845,"84":0.01264,"85":0.03161,"86":0.01264,"87":0.04109,"88":0.01264,"89":0.01581,"90":0.01264,"91":0.01897,"92":0.00948,"93":0.00632,"94":0.00948,"95":0.03793,"96":0.02213,"97":0.02213,"98":0.06322,"99":0.01897,"100":0.01581,"101":0.00948,"102":0.0569,"103":0.06006,"104":0.02213,"105":0.05374,"106":0.06954,"107":0.12328,"108":0.14857,"109":8.98672,"110":0.0569,"111":0.0569,"112":0.06322,"113":0.04109,"114":0.09483,"115":0.06954,"116":0.41093,"117":5.28835,"118":5.33577,"119":0.01264,"120":0.00632,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 34 36 41 54 121 122"},F:{"25":0.00316,"28":0.00948,"36":0.00316,"42":0.00316,"67":0.00316,"79":0.04425,"82":0.00316,"83":0.00316,"84":0.01581,"85":0.03793,"86":0.00948,"87":0.00316,"91":0.00948,"93":0.00316,"94":0.00316,"95":0.26236,"97":0.00316,"98":0.00316,"99":0.00316,"100":0.00316,"101":0.00632,"102":0.75232,"103":0.24024,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 26 27 29 30 31 32 33 34 35 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 78 80 81 88 89 90 92 96 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.00316},B:{"12":0.00632,"13":0.00316,"14":0.00316,"15":0.00316,"16":0.00316,"17":0.00316,"18":0.01897,"84":0.00316,"85":0.00316,"89":0.00316,"92":0.02845,"94":0.00316,"100":0.00316,"106":0.00316,"107":0.00632,"108":0.00948,"109":0.09799,"110":0.01581,"111":0.01264,"112":0.00948,"113":0.00632,"114":0.02213,"115":0.01264,"116":0.04109,"117":0.96411,"118":0.85979,"119":0.00632,_:"79 80 81 83 86 87 88 90 91 93 95 96 97 98 99 101 102 103 104 105"},E:{"9":0.00316,"14":0.00948,_:"0 4 5 6 7 8 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.00632,"12.1":0.00316,"13.1":0.00948,"14.1":0.00948,"15.1":0.00632,"15.2-15.3":0.00316,"15.4":0.00948,"15.5":0.02213,"15.6":0.08851,"16.0":0.00948,"16.1":0.02845,"16.2":0.01264,"16.3":0.03793,"16.4":0.01264,"16.5":0.08535,"16.6":0.23708,"17.0":0.30346,"17.1":0.01264},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0009,"5.0-5.1":0.0009,"6.0-6.1":0.0027,"7.0-7.1":0.00629,"8.1-8.4":0.0009,"9.0-9.2":0.00629,"9.3":0.02157,"10.0-10.2":0.0009,"10.3":0.03145,"11.0-11.2":0.02876,"11.3-11.4":0.00989,"12.0-12.1":0.00809,"12.2-12.5":0.14288,"13.0-13.1":0.00449,"13.2":0.02426,"13.3":0.00899,"13.4-13.7":0.02876,"14.0-14.4":0.07908,"14.5-14.8":0.12761,"15.0-15.1":0.05032,"15.2-15.3":0.05751,"15.4":0.0638,"15.5":0.09076,"15.6-15.7":0.62815,"16.0":0.23185,"16.1":0.44393,"16.2":0.21657,"16.3":0.40169,"16.4":0.08627,"16.5":0.23005,"16.6-16.7":4.309,"17.0":1.53488,"17.1":0.09256,"17.2":0.0027},P:{"4":0.09469,"20":0.06313,"21":0.11574,"22":0.84172,"23":0.10522,_:"5.0-5.4 8.2 10.1","6.2-6.4":0.01052,"7.2-7.4":0.10522,"9.2":0.02104,"11.1-11.2":0.02104,"12.0":0.01052,"13.0":0.02104,"14.0":0.02104,"15.0":0.01052,"16.0":0.04209,"17.0":0.04209,"18.0":0.03156,"19.0":0.08417},I:{"0":0.08165,"3":0,"4":0.00002,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00025},A:{"8":0.03015,"9":0.0067,"10":0.00335,"11":0.18423,_:"6 7 5.5"},K:{"0":0.51396,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.1231},Q:{_:"13.1"},O:{"0":0.38298},H:{"0":0.04},L:{"0":58.42467}}; diff --git a/node_modules/caniuse-lite/data/regions/EC.js b/node_modules/caniuse-lite/data/regions/EC.js new file mode 100644 index 00000000..e97b73de --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/EC.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.01095,"57":0.01095,"66":0.00548,"72":0.00548,"73":0.0219,"75":0.00548,"78":0.01643,"80":0.00548,"88":0.0219,"89":0.01643,"91":0.00548,"92":0.00548,"96":0.00548,"99":0.00548,"100":0.00548,"101":0.00548,"102":0.00548,"104":0.00548,"105":0.00548,"106":0.00548,"107":0.00548,"108":0.01643,"109":0.01643,"110":0.01095,"111":0.07666,"112":0.01095,"113":0.0219,"114":0.02738,"115":0.4326,"116":0.03286,"117":0.14238,"118":2.24516,"119":0.39975,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 58 59 60 61 62 63 64 65 67 68 69 70 71 74 76 77 79 81 82 83 84 85 86 87 90 93 94 95 97 98 103 120 121 122 3.5 3.6"},D:{"38":0.02738,"47":0.02738,"49":0.01643,"53":0.00548,"55":0.01095,"65":0.00548,"68":0.01643,"71":0.00548,"73":0.00548,"74":0.01643,"75":0.00548,"76":0.01095,"78":0.01095,"79":0.15333,"80":0.00548,"81":0.01095,"83":0.00548,"84":0.00548,"85":0.01643,"86":0.00548,"87":0.04928,"88":0.01095,"89":0.00548,"90":0.00548,"91":0.2519,"92":0.00548,"93":0.01643,"94":0.00548,"95":0.01643,"96":0.01643,"97":0.0219,"98":0.01095,"99":0.01095,"100":0.01095,"101":0.00548,"102":0.01643,"103":0.14785,"104":0.02738,"105":0.02738,"106":0.04381,"107":0.03286,"108":0.04928,"109":2.31087,"110":0.01643,"111":0.06024,"112":0.07119,"113":0.07119,"114":0.2957,"115":0.12595,"116":1.33067,"117":16.55395,"118":17.85176,"119":0.01643,"120":0.00548,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 56 57 58 59 60 61 62 63 64 66 67 69 70 72 77 121 122"},F:{"28":0.01095,"46":0.00548,"69":0.00548,"77":0.00548,"95":0.06024,"99":0.00548,"100":0.00548,"101":0.01095,"102":2.0754,"103":0.35594,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00548,"92":0.01095,"103":0.00548,"104":0.00548,"106":0.00548,"107":0.00548,"108":0.00548,"109":0.06024,"110":0.01095,"111":0.00548,"112":0.00548,"113":0.01095,"114":0.02738,"115":0.03833,"116":0.04928,"117":2.10278,"118":2.24516,"119":0.00548,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 105"},E:{"9":0.00548,"14":0.01643,"15":0.00548,_:"0 4 5 6 7 8 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.01643,"12.1":0.00548,"13.1":0.04381,"14.1":0.06571,"15.1":0.01095,"15.2-15.3":0.02738,"15.4":0.01643,"15.5":0.0219,"15.6":0.115,"16.0":0.01095,"16.1":0.05476,"16.2":0.05476,"16.3":0.26285,"16.4":0.04928,"16.5":0.13142,"16.6":0.46546,"17.0":0.35594,"17.1":0.01643},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00068,"5.0-5.1":0.00068,"6.0-6.1":0.00205,"7.0-7.1":0.00478,"8.1-8.4":0.00068,"9.0-9.2":0.00478,"9.3":0.01639,"10.0-10.2":0.00068,"10.3":0.02391,"11.0-11.2":0.02186,"11.3-11.4":0.00751,"12.0-12.1":0.00615,"12.2-12.5":0.10862,"13.0-13.1":0.00342,"13.2":0.01844,"13.3":0.00683,"13.4-13.7":0.02186,"14.0-14.4":0.06011,"14.5-14.8":0.097,"15.0-15.1":0.03825,"15.2-15.3":0.04372,"15.4":0.0485,"15.5":0.069,"15.6-15.7":0.4775,"16.0":0.17625,"16.1":0.33746,"16.2":0.16463,"16.3":0.30536,"16.4":0.06558,"16.5":0.17488,"16.6-16.7":3.27558,"17.0":1.16678,"17.1":0.07036,"17.2":0.00205},P:{"4":0.13544,"20":0.06251,"21":0.08335,"22":1.06265,"23":0.19794,"5.0-5.4":0.01042,_:"6.2-6.4 8.2 9.2 10.1 15.0","7.2-7.4":0.08335,"11.1-11.2":0.01042,"12.0":0.01042,"13.0":0.01042,"14.0":0.01042,"16.0":0.03125,"17.0":0.07293,"18.0":0.01042,"19.0":0.03125},I:{"0":0.04501,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00014},A:{"8":0.00608,"9":0.01217,"11":0.03651,_:"6 7 10 5.5"},K:{"0":0.14477,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.14477},Q:{_:"13.1"},O:{"0":0.03619},H:{"0":0},L:{"0":37.96049}}; diff --git a/node_modules/caniuse-lite/data/regions/EE.js b/node_modules/caniuse-lite/data/regions/EE.js new file mode 100644 index 00000000..5c056640 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/EE.js @@ -0,0 +1 @@ +module.exports={C:{"48":0.34447,"52":0.02812,"69":0.02109,"78":0.00703,"81":0.01406,"87":0.04921,"91":0.00703,"92":0.02109,"102":0.02109,"103":0.00703,"104":0.00703,"105":0.00703,"107":0.00703,"108":0.00703,"109":0.04921,"111":0.00703,"112":0.00703,"113":0.00703,"114":0.02812,"115":5.54667,"116":0.02109,"117":0.09842,"118":1.99652,"119":0.38665,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 79 80 82 83 84 85 86 88 89 90 93 94 95 96 97 98 99 100 101 106 110 120 121 122 3.5 3.6"},D:{"43":0.00703,"44":0.00703,"45":0.00703,"46":0.00703,"49":0.00703,"51":0.00703,"59":0.02109,"60":0.02109,"78":0.02109,"79":0.01406,"80":0.00703,"81":0.00703,"85":0.01406,"86":0.02109,"87":0.02109,"88":0.00703,"89":0.00703,"90":0.02109,"91":0.01406,"92":0.00703,"93":0.15466,"94":0.00703,"95":0.01406,"96":0.00703,"97":0.04921,"99":0.00703,"100":0.01406,"101":0.00703,"102":0.03515,"103":0.04218,"105":0.02812,"106":0.1406,"107":0.10545,"108":0.25308,"109":1.69423,"110":0.08436,"111":0.20387,"112":0.08436,"113":0.08436,"114":0.25308,"115":0.29526,"116":2.15821,"117":18.52405,"118":19.64182,"119":0.02109,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 47 48 50 52 53 54 55 56 57 58 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 83 84 98 104 120 121 122"},F:{"85":0.00703,"94":0.00703,"95":0.12654,"99":0.00703,"100":0.00703,"101":0.03515,"102":4.23206,"103":2.01761,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"14":0.00703,"16":0.00703,"17":0.00703,"18":0.02109,"86":0.00703,"92":0.02109,"98":0.00703,"104":0.01406,"106":0.04218,"107":0.04921,"108":0.09139,"109":0.04218,"110":0.01406,"111":0.00703,"112":0.01406,"113":0.00703,"114":0.01406,"115":0.04921,"116":0.11248,"117":3.14241,"118":2.98072,"119":0.01406,_:"12 13 15 79 80 81 83 84 85 87 88 89 90 91 93 94 95 96 97 99 100 101 102 103 105"},E:{"9":0.01406,"11":0.00703,"12":0.00703,"14":0.03515,"15":0.00703,_:"0 4 5 6 7 8 10 13 3.1 3.2 5.1 6.1 7.1 10.1 11.1 17.2","9.1":0.00703,"12.1":0.01406,"13.1":0.0703,"14.1":0.11951,"15.1":0.02109,"15.2-15.3":0.02109,"15.4":0.05624,"15.5":0.1406,"15.6":0.39368,"16.0":0.02812,"16.1":0.11951,"16.2":0.09842,"16.3":0.14763,"16.4":0.09842,"16.5":0.21793,"16.6":0.75924,"17.0":0.59755,"17.1":0.03515},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00103,"5.0-5.1":0.00103,"6.0-6.1":0.00309,"7.0-7.1":0.00721,"8.1-8.4":0.00103,"9.0-9.2":0.00721,"9.3":0.02473,"10.0-10.2":0.00103,"10.3":0.03606,"11.0-11.2":0.03297,"11.3-11.4":0.01133,"12.0-12.1":0.00927,"12.2-12.5":0.16382,"13.0-13.1":0.00515,"13.2":0.02782,"13.3":0.0103,"13.4-13.7":0.03297,"14.0-14.4":0.09067,"14.5-14.8":0.1463,"15.0-15.1":0.0577,"15.2-15.3":0.06594,"15.4":0.07315,"15.5":0.10406,"15.6-15.7":0.72017,"16.0":0.26582,"16.1":0.50896,"16.2":0.2483,"16.3":0.46054,"16.4":0.09891,"16.5":0.26376,"16.6-16.7":4.94025,"17.0":1.75974,"17.1":0.10612,"17.2":0.00309},P:{"4":0.03137,"20":0.03137,"21":0.11503,"22":1.45351,"23":0.29279,_:"5.0-5.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 15.0","6.2-6.4":0.01046,"14.0":0.01046,"16.0":0.01046,"17.0":0.01046,"18.0":0.01046,"19.0":0.03137},I:{"0":0.0916,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00028},A:{"7":0.00703,"8":0.02812,"9":0.00703,"10":0.00703,"11":0.11248,_:"6 5.5"},K:{"0":0.27621,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00297,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.19305},Q:{"13.1":0.00297},O:{"0":0.04158},H:{"0":0},L:{"0":16.94173}}; diff --git a/node_modules/caniuse-lite/data/regions/EG.js b/node_modules/caniuse-lite/data/regions/EG.js new file mode 100644 index 00000000..a360a623 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/EG.js @@ -0,0 +1 @@ +module.exports={C:{"43":0.00316,"47":0.00316,"48":0.00316,"50":0.00316,"51":0.00316,"52":0.07257,"56":0.00316,"57":0.00316,"60":0.00316,"65":0.00316,"66":0.00316,"68":0.00316,"72":0.00316,"75":0.00316,"78":0.00947,"80":0.00316,"88":0.00316,"95":0.00316,"99":0.00631,"102":0.00631,"103":0.00316,"104":0.00316,"105":0.01262,"106":0.00316,"107":0.00631,"108":0.00631,"109":0.00631,"110":0.00947,"111":0.00631,"112":0.00631,"113":0.00631,"114":0.00947,"115":0.77298,"116":0.01578,"117":0.0631,"118":1.05693,"119":0.22085,"120":0.00316,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 49 53 54 55 58 59 61 62 63 64 67 69 70 71 73 74 76 77 79 81 82 83 84 85 86 87 89 90 91 92 93 94 96 97 98 100 101 121 122 3.5 3.6"},D:{"26":0.00316,"33":0.00631,"34":0.00316,"37":0.00316,"38":0.00631,"40":0.00631,"41":0.00316,"43":0.09465,"47":0.00631,"48":0.00631,"49":0.0284,"51":0.00316,"53":0.00947,"56":0.00316,"58":0.06941,"61":0.00316,"62":0.00316,"63":0.00631,"64":0.05048,"65":0.00316,"66":0.00316,"68":0.00631,"69":0.00947,"70":0.00631,"71":0.00631,"72":0.00631,"73":0.00316,"74":0.00947,"75":0.00631,"76":0.01578,"77":0.00631,"78":0.00631,"79":0.32497,"80":0.01893,"81":0.01578,"83":0.00947,"84":0.01262,"85":0.02209,"86":0.09465,"87":0.03471,"88":0.01262,"89":0.00631,"90":0.00947,"91":0.02209,"92":0.00631,"93":0.00947,"94":0.01262,"95":0.00631,"96":0.00947,"97":0.00947,"98":0.04417,"99":0.02524,"100":0.00947,"101":0.00631,"102":0.04733,"103":0.05048,"104":0.01262,"105":0.03471,"106":0.04102,"107":0.05679,"108":0.09465,"109":4.28765,"110":0.03786,"111":0.04733,"112":0.04417,"113":0.03471,"114":0.10096,"115":0.07257,"116":0.52373,"117":8.14937,"118":8.74566,"119":0.02209,"120":0.01262,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 35 36 39 42 44 45 46 50 52 54 55 57 59 60 67 121 122"},F:{"28":0.00316,"40":0.00316,"46":0.00316,"56":0.00316,"63":0.00316,"64":0.00947,"66":0.00316,"68":0.00316,"70":0.00631,"71":0.00316,"72":0.00631,"73":0.02524,"74":0.00316,"75":0.00316,"79":0.03155,"80":0.00316,"81":0.00316,"82":0.01893,"83":0.01578,"84":0.00631,"85":0.00316,"86":0.00316,"88":0.00631,"89":0.00631,"90":0.00947,"91":0.00631,"92":0.00947,"93":0.00631,"94":0.01893,"95":0.01893,"96":0.00631,"97":0.00947,"98":0.01262,"99":0.0284,"100":0.02209,"101":0.03155,"102":0.07572,"103":0.00631,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 57 58 60 62 65 67 69 76 77 78 87 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00316,"13":0.00316,"14":0.00316,"16":0.00316,"17":0.00316,"18":0.01578,"84":0.00631,"85":0.00316,"89":0.00316,"90":0.00316,"92":0.03155,"100":0.00316,"103":0.00316,"104":0.00316,"106":0.00316,"107":0.01262,"108":0.00631,"109":0.09465,"110":0.00631,"111":0.00316,"112":0.00316,"113":0.00947,"114":0.01262,"115":0.02209,"116":0.05364,"117":1.36927,"118":1.43237,"119":0.00947,_:"15 79 80 81 83 86 87 88 91 93 94 95 96 97 98 99 101 102 105"},E:{"13":0.00316,"14":0.01578,"15":0.00316,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 10.1 11.1 17.2","5.1":0.17353,"9.1":0.00316,"12.1":0.00316,"13.1":0.01262,"14.1":0.02209,"15.1":0.00631,"15.2-15.3":0.00316,"15.4":0.00631,"15.5":0.00947,"15.6":0.07257,"16.0":0.01893,"16.1":0.01893,"16.2":0.01578,"16.3":0.04102,"16.4":0.02209,"16.5":0.03786,"16.6":0.1546,"17.0":0.1262,"17.1":0.00947},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00079,"5.0-5.1":0.00079,"6.0-6.1":0.00237,"7.0-7.1":0.00553,"8.1-8.4":0.00079,"9.0-9.2":0.00553,"9.3":0.01896,"10.0-10.2":0.00079,"10.3":0.02765,"11.0-11.2":0.02528,"11.3-11.4":0.00869,"12.0-12.1":0.00711,"12.2-12.5":0.1256,"13.0-13.1":0.00395,"13.2":0.02133,"13.3":0.0079,"13.4-13.7":0.02528,"14.0-14.4":0.06951,"14.5-14.8":0.11217,"15.0-15.1":0.04424,"15.2-15.3":0.05055,"15.4":0.05608,"15.5":0.07978,"15.6-15.7":0.55215,"16.0":0.2038,"16.1":0.39022,"16.2":0.19037,"16.3":0.35309,"16.4":0.07583,"16.5":0.20222,"16.6-16.7":3.78763,"17.0":1.34917,"17.1":0.08136,"17.2":0.00237},P:{"4":0.16612,"20":0.05191,"21":0.09344,"22":1.51585,"23":0.28033,_:"5.0-5.4 8.2 10.1","6.2-6.4":0.02077,"7.2-7.4":0.0623,"9.2":0.01038,"11.1-11.2":0.02077,"12.0":0.01038,"13.0":0.03115,"14.0":0.02077,"15.0":0.01038,"16.0":0.04153,"17.0":0.05191,"18.0":0.03115,"19.0":0.05191},I:{"0":0.08853,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00027},A:{"7":0.0065,"8":0.01299,"9":0.0065,"10":0.0065,"11":0.18837,_:"6 5.5"},K:{"0":0.49284,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00685,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.2122},Q:{_:"13.1"},O:{"0":0.57498},H:{"0":0},L:{"0":57.32107}}; diff --git a/node_modules/caniuse-lite/data/regions/ER.js b/node_modules/caniuse-lite/data/regions/ER.js new file mode 100644 index 00000000..6edaac94 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/ER.js @@ -0,0 +1 @@ +module.exports={C:{"38":0.00339,"40":0.00339,"44":0.04402,"47":0.01016,"61":0.04402,"104":0.00339,"113":0.01016,"114":0.02709,"115":0.27427,"116":0.02032,"117":0.1456,"118":2.58013,"119":0.32506,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 41 42 43 45 46 48 49 50 51 52 53 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 105 106 107 108 109 110 111 112 120 121 122 3.5 3.6"},D:{"43":0.1456,"46":0.00339,"53":0.06433,"61":0.08465,"63":0.03386,"69":0.03047,"70":0.00339,"72":0.00339,"73":0.01016,"74":0.04402,"77":0.02032,"79":1.30022,"80":0.07111,"83":0.01693,"85":0.0474,"86":0.01693,"87":0.01693,"88":0.03047,"89":0.01693,"92":0.09481,"93":0.03047,"97":0.20655,"98":0.32167,"100":0.01016,"101":0.02709,"102":0.02709,"103":0.06095,"104":0.02709,"105":0.05418,"106":0.00339,"108":0.31828,"109":1.53724,"110":0.01016,"111":0.01693,"112":0.11851,"113":0.01016,"114":0.21332,"115":0.04402,"116":0.27427,"117":5.83069,"118":9.65687,"119":0.02032,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 47 48 49 50 51 52 54 55 56 57 58 59 60 62 64 65 66 67 68 71 75 76 78 81 84 90 91 94 95 96 99 107 120 121 122"},F:{"42":0.00339,"57":0.30474,"62":0.00339,"63":0.03386,"64":0.03386,"71":0.00339,"72":0.00339,"73":0.00339,"79":0.01354,"82":0.01016,"86":0.08465,"88":0.00339,"90":0.01016,"95":0.08126,"100":0.01016,"102":0.27427,"103":0.32844,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 58 60 65 66 67 68 69 70 74 75 76 77 78 80 81 83 84 85 87 89 91 92 93 94 96 97 98 99 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.01016,"13":0.02032,"14":0.01354,"15":0.00339,"17":0.03386,"18":0.10835,"83":0.01016,"84":0.02709,"89":0.04402,"90":0.03725,"92":0.03386,"100":0.01354,"106":0.01016,"108":0.02709,"109":0.01016,"111":0.01693,"112":0.01354,"114":0.07111,"115":0.03386,"116":0.12867,"117":0.66366,"118":1.88939,_:"16 79 80 81 85 86 87 88 91 93 94 95 96 97 98 99 101 102 103 104 105 107 110 113 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 15.2-15.3 15.4 15.5 15.6 16.0 16.1 16.2 16.3 16.4 16.5 17.0 17.1 17.2","16.6":1.96049},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00004,"5.0-5.1":0.00004,"6.0-6.1":0.00013,"7.0-7.1":0.00031,"8.1-8.4":0.00004,"9.0-9.2":0.00031,"9.3":0.00105,"10.0-10.2":0.00004,"10.3":0.00153,"11.0-11.2":0.0014,"11.3-11.4":0.00048,"12.0-12.1":0.00039,"12.2-12.5":0.00694,"13.0-13.1":0.00022,"13.2":0.00118,"13.3":0.00044,"13.4-13.7":0.0014,"14.0-14.4":0.00384,"14.5-14.8":0.0062,"15.0-15.1":0.00244,"15.2-15.3":0.00279,"15.4":0.0031,"15.5":0.00441,"15.6-15.7":0.03051,"16.0":0.01126,"16.1":0.02156,"16.2":0.01052,"16.3":0.01951,"16.4":0.00419,"16.5":0.01117,"16.6-16.7":0.20928,"17.0":0.07455,"17.1":0.0045,"17.2":0.00013},P:{"4":0.25309,"20":0.13161,"21":0.01012,"22":0.11136,"23":0.01012,"5.0-5.4":0.03037,"6.2-6.4":0.02025,"7.2-7.4":0.10124,_:"8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 18.0","16.0":0.02025,"17.0":0.05062,"19.0":0.08099},I:{"0":0.5395,"3":0,"4":0.00011,"2.1":0,"2.2":0.00016,"2.3":0,"4.1":0.00011,"4.2-4.3":0.00038,"4.4":0,"4.4.3-4.4.4":0.00163},A:{"11":0.00339,_:"6 7 8 9 10 5.5"},K:{"0":1.95767,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.01323,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.06613},Q:{_:"13.1"},O:{"0":6.16993},H:{"0":4.08},L:{"0":54.26402}}; diff --git a/node_modules/caniuse-lite/data/regions/ES.js b/node_modules/caniuse-lite/data/regions/ES.js new file mode 100644 index 00000000..d16f2d26 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/ES.js @@ -0,0 +1 @@ +module.exports={C:{"48":0.00783,"52":0.03131,"56":0.00391,"59":0.00783,"60":0.00391,"67":0.00391,"68":0.00391,"78":0.02348,"79":0.00391,"81":0.00783,"85":0.00391,"86":0.00391,"88":0.01174,"89":0.00391,"91":0.00391,"95":0.00391,"97":0.00391,"99":0.00391,"100":0.01174,"101":0.00391,"102":0.02348,"103":0.00391,"104":0.00391,"105":0.00391,"106":0.00391,"107":0.00783,"108":0.00783,"109":0.05088,"110":0.00783,"111":0.00783,"112":0.00391,"113":0.01957,"114":0.01174,"115":0.28964,"116":0.01957,"117":0.08219,"118":1.44818,"119":0.29355,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 61 62 63 64 65 66 69 70 71 72 73 74 75 76 77 80 82 83 84 87 90 92 93 94 96 98 120 121 122 3.5 3.6"},D:{"38":0.00391,"46":0.00783,"49":0.04305,"63":0.00391,"64":0.00391,"65":0.00391,"66":0.03131,"67":0.00391,"68":0.00391,"70":0.00391,"72":0.00391,"73":0.00783,"74":0.00391,"75":0.01174,"76":0.00391,"77":0.00391,"78":0.00391,"79":0.0548,"80":0.00783,"81":0.00783,"83":0.00783,"84":0.01566,"85":0.00783,"86":0.00783,"87":0.03914,"88":0.01174,"89":0.00783,"90":0.00783,"91":0.01566,"92":0.00391,"93":0.03523,"94":0.00783,"95":0.01174,"96":0.00783,"97":0.01174,"98":0.00783,"99":0.02348,"100":0.01566,"101":0.01174,"102":0.01566,"103":0.11742,"104":0.01174,"105":0.03523,"106":0.0274,"107":0.07045,"108":0.05088,"109":1.27988,"110":0.03914,"111":0.04305,"112":0.07045,"113":0.04697,"114":0.1683,"115":0.10568,"116":0.9785,"117":11.36626,"118":11.62067,"119":0.01566,"120":0.00391,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 69 71 121 122"},F:{"28":0.00391,"46":0.00391,"85":0.00391,"89":0.00391,"94":0.00391,"95":0.02348,"100":0.00391,"101":0.00783,"102":1.79653,"103":0.25832,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 90 91 92 93 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"17":0.00391,"18":0.00391,"84":0.00783,"90":0.00391,"92":0.00783,"97":0.00391,"106":0.00391,"107":0.01174,"108":0.00783,"109":0.0548,"110":0.00783,"111":0.00391,"112":0.01174,"113":0.01957,"114":0.02348,"115":0.01957,"116":0.05871,"117":1.56951,"118":1.71433,"119":0.00783,_:"12 13 14 15 16 79 80 81 83 85 86 87 88 89 91 93 94 95 96 98 99 100 101 102 103 104 105"},E:{"13":0.00783,"14":0.05088,"15":0.01174,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 17.2","9.1":0.00391,"11.1":0.00783,"12.1":0.01566,"13.1":0.09002,"14.1":0.12525,"15.1":0.02348,"15.2-15.3":0.01957,"15.4":0.03523,"15.5":0.0548,"15.6":0.27789,"16.0":0.03131,"16.1":0.08219,"16.2":0.08219,"16.3":0.18004,"16.4":0.07437,"16.5":0.18787,"16.6":0.91588,"17.0":0.46968,"17.1":0.0274},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00128,"5.0-5.1":0.00128,"6.0-6.1":0.00385,"7.0-7.1":0.00898,"8.1-8.4":0.00128,"9.0-9.2":0.00898,"9.3":0.0308,"10.0-10.2":0.00128,"10.3":0.04492,"11.0-11.2":0.04107,"11.3-11.4":0.01412,"12.0-12.1":0.01155,"12.2-12.5":0.20408,"13.0-13.1":0.00642,"13.2":0.03466,"13.3":0.01284,"13.4-13.7":0.04107,"14.0-14.4":0.11295,"14.5-14.8":0.18226,"15.0-15.1":0.07188,"15.2-15.3":0.08215,"15.4":0.09113,"15.5":0.12964,"15.6-15.7":0.89719,"16.0":0.33115,"16.1":0.63407,"16.2":0.30933,"16.3":0.57374,"16.4":0.12322,"16.5":0.32859,"16.6-16.7":6.15456,"17.0":2.19228,"17.1":0.1322,"17.2":0.00385},P:{"4":0.0727,"20":0.06232,"21":0.11424,"22":1.98371,"23":0.44659,"5.0-5.4":0.01039,_:"6.2-6.4 7.2-7.4 8.2 9.2 10.1","11.1-11.2":0.01039,"12.0":0.01039,"13.0":0.02077,"14.0":0.01039,"15.0":0.01039,"16.0":0.02077,"17.0":0.02077,"18.0":0.02077,"19.0":0.05193},I:{"0":0.04844,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00015},A:{"8":0.0041,"11":0.08201,_:"6 7 9 10 5.5"},K:{"0":0.24344,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.29821},Q:{_:"13.1"},O:{"0":0.02434},H:{"0":0},L:{"0":45.71118}}; diff --git a/node_modules/caniuse-lite/data/regions/ET.js b/node_modules/caniuse-lite/data/regions/ET.js new file mode 100644 index 00000000..7c0f0910 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/ET.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00291,"38":0.00291,"41":0.00291,"43":0.00291,"47":0.01165,"48":0.00291,"52":0.01456,"56":0.00291,"60":0.00291,"63":0.00582,"64":0.00291,"67":0.00874,"68":0.00291,"70":0.00291,"72":0.01165,"76":0.00291,"77":0.2417,"82":0.00291,"84":0.01165,"88":0.00874,"89":0.01165,"91":0.00291,"95":0.04368,"96":0.00291,"97":0.01747,"98":0.00291,"99":0.00291,"102":0.00874,"103":0.01165,"104":0.00291,"105":0.00582,"108":0.03203,"109":0.00291,"110":0.00874,"111":0.02038,"112":0.02621,"113":0.00582,"114":0.01165,"115":0.72509,"116":0.02038,"117":0.0495,"118":1.41232,"119":0.47174,"120":0.02621,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 42 44 45 46 49 50 51 53 54 55 57 58 59 61 62 65 66 69 71 73 74 75 78 79 80 81 83 85 86 87 90 92 93 94 100 101 106 107 121 122 3.5 3.6"},D:{"11":0.00874,"33":0.02038,"34":0.01165,"36":0.00291,"37":0.00291,"38":0.01165,"40":0.00291,"41":0.00291,"43":0.01456,"49":0.00582,"50":0.01165,"53":0.00582,"55":0.00582,"56":0.01456,"58":0.00291,"63":0.00582,"64":0.00582,"65":0.00874,"66":0.00582,"67":0.00291,"68":0.01456,"69":0.00582,"70":0.02038,"71":0.00874,"72":0.01165,"73":0.00582,"74":0.00582,"75":0.00582,"76":0.01165,"77":0.00582,"78":0.00582,"79":0.3145,"80":0.02038,"81":0.02621,"83":0.0233,"84":0.01456,"85":0.00874,"86":0.02038,"87":0.01747,"88":0.05242,"89":0.00291,"90":0.01456,"91":0.01165,"92":0.00874,"93":0.10774,"94":0.01747,"95":0.01747,"96":0.00874,"97":0.00582,"98":0.19802,"99":0.00874,"100":0.00291,"101":0.00291,"102":0.03494,"103":0.16307,"104":0.01456,"105":0.01747,"106":0.02912,"107":0.02912,"108":0.05242,"109":2.8159,"110":0.01747,"111":0.03494,"112":0.03494,"113":0.02038,"114":0.08154,"115":0.05242,"116":0.41642,"117":5.39885,"118":6.86358,"119":0.0233,"120":0.00874,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 39 42 44 45 46 47 48 51 52 54 57 59 60 61 62 121 122"},F:{"36":0.00291,"46":0.02038,"79":0.0233,"81":0.00291,"82":0.00582,"83":0.00291,"84":0.00291,"85":0.00582,"86":0.00291,"89":0.00291,"90":0.00291,"95":0.11066,"98":0.00582,"99":0.00291,"100":0.00291,"101":0.00874,"102":0.48339,"103":0.42515,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 87 88 91 92 93 94 96 97 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.01165,"13":0.00291,"14":0.00874,"15":0.00291,"16":0.00582,"17":0.00582,"18":0.11648,"84":0.00291,"89":0.00291,"90":0.00582,"92":0.02038,"100":0.00291,"104":0.00291,"106":0.00291,"107":0.00291,"108":0.00291,"109":0.13978,"110":0.00291,"111":0.00291,"112":0.01456,"113":0.01456,"114":0.04077,"115":0.03494,"116":0.0495,"117":1.19392,"118":1.3599,"119":0.00291,_:"79 80 81 83 85 86 87 88 91 93 94 95 96 97 98 99 101 102 103 105"},E:{"7":0.00291,"13":0.00291,"14":0.00291,_:"0 4 5 6 8 9 10 11 12 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 15.1 15.2-15.3 15.4 16.0 17.1 17.2","12.1":0.00291,"13.1":0.00291,"14.1":0.01165,"15.5":0.00582,"15.6":0.02621,"16.1":0.00291,"16.2":0.00291,"16.3":0.00291,"16.4":0.00291,"16.5":0.02621,"16.6":0.0233,"17.0":0.01747},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00022,"5.0-5.1":0.00022,"6.0-6.1":0.00067,"7.0-7.1":0.00157,"8.1-8.4":0.00022,"9.0-9.2":0.00157,"9.3":0.00538,"10.0-10.2":0.00022,"10.3":0.00784,"11.0-11.2":0.00717,"11.3-11.4":0.00246,"12.0-12.1":0.00202,"12.2-12.5":0.03561,"13.0-13.1":0.00112,"13.2":0.00605,"13.3":0.00224,"13.4-13.7":0.00717,"14.0-14.4":0.01971,"14.5-14.8":0.03181,"15.0-15.1":0.01254,"15.2-15.3":0.01433,"15.4":0.0159,"15.5":0.02262,"15.6-15.7":0.15656,"16.0":0.05779,"16.1":0.11065,"16.2":0.05398,"16.3":0.10012,"16.4":0.0215,"16.5":0.05734,"16.6-16.7":1.07399,"17.0":0.38256,"17.1":0.02307,"17.2":0.00067},P:{"4":0.36827,"20":0.06313,"21":0.10522,"22":0.45244,"23":0.07365,"5.0-5.4":0.01052,"6.2-6.4":0.01052,"7.2-7.4":0.23148,_:"8.2 10.1 12.0","9.2":0.02104,"11.1-11.2":0.01052,"13.0":0.04209,"14.0":0.01052,"15.0":0.01052,"16.0":0.03157,"17.0":0.10522,"18.0":0.07365,"19.0":0.07365},I:{"0":0.18335,"3":0,"4":0.00004,"2.1":0,"2.2":0.00006,"2.3":0,"4.1":0.00004,"4.2-4.3":0.00013,"4.4":0,"4.4.3-4.4.4":0.00055},A:{"11":0.02621,_:"6 7 8 9 10 5.5"},K:{"0":2.00883,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.11341,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.07797},Q:{"13.1":0.01418},O:{"0":0.38275},H:{"0":1.28},L:{"0":66.42664}}; diff --git a/node_modules/caniuse-lite/data/regions/FI.js b/node_modules/caniuse-lite/data/regions/FI.js new file mode 100644 index 00000000..9f80262d --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/FI.js @@ -0,0 +1 @@ +module.exports={C:{"31":0.00584,"50":0.92256,"52":0.6131,"53":1.62908,"55":0.01752,"56":0.81746,"59":0.03503,"60":0.00584,"68":0.00584,"72":0.01168,"75":0.01168,"78":0.01752,"83":0.01168,"91":0.00584,"95":0.00584,"101":0.00584,"102":0.03503,"103":0.00584,"104":0.01752,"105":0.01752,"106":0.00584,"107":0.00584,"108":0.01752,"109":0.01168,"110":0.02336,"111":0.00584,"112":0.00584,"113":0.01752,"114":0.00584,"115":0.51383,"116":0.0292,"117":0.26276,"118":2.58084,"119":0.50799,"120":0.00584,"121":0.00584,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 54 57 58 61 62 63 64 65 66 67 69 70 71 73 74 76 77 79 80 81 82 84 85 86 87 88 89 90 92 93 94 96 97 98 99 100 122 3.5 3.6"},D:{"38":0.01168,"42":0.01752,"46":0.00584,"47":0.00584,"48":0.00584,"49":0.00584,"51":0.00584,"52":0.01752,"55":0.00584,"56":0.00584,"57":0.00584,"59":0.00584,"60":0.01168,"61":0.0292,"62":0.00584,"65":0.00584,"66":0.17517,"70":0.00584,"71":0.01752,"75":0.02336,"76":0.01752,"77":0.03503,"78":0.00584,"79":0.04087,"80":0.01168,"81":0.05255,"83":0.05255,"84":0.00584,"85":0.05255,"86":0.28027,"87":0.05255,"88":0.00584,"89":0.0292,"90":0.00584,"91":0.49632,"92":0.01752,"93":0.05839,"94":0.01752,"95":0.01168,"96":0.03503,"98":0.01168,"99":0.22188,"100":0.29195,"101":0.56054,"102":0.28611,"103":0.36202,"104":0.28611,"105":0.09926,"106":0.07007,"107":0.51967,"108":0.22772,"109":0.94008,"110":0.09342,"111":0.32115,"112":0.18685,"113":0.2394,"114":0.78243,"115":0.30947,"116":2.19546,"117":15.12885,"118":12.78157,"119":0.01752,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 43 44 45 50 53 54 58 63 64 67 68 69 72 73 74 97 120 121 122"},F:{"42":0.00584,"43":0.00584,"46":0.00584,"47":0.00584,"48":0.00584,"68":0.00584,"93":0.00584,"94":0.01168,"95":0.02336,"97":0.00584,"99":0.00584,"101":0.01752,"102":1.86264,"103":0.29195,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 44 45 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 96 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.00584},B:{"17":0.01752,"18":0.00584,"92":0.00584,"98":0.00584,"103":0.00584,"105":0.00584,"106":0.02336,"107":0.03503,"108":0.03503,"109":0.05255,"110":0.00584,"111":0.00584,"112":0.00584,"113":0.02336,"114":0.08759,"115":0.03503,"116":0.12262,"117":2.85527,"118":2.25385,"119":0.01168,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 99 100 101 102 104"},E:{"9":0.00584,"13":0.00584,"14":0.0292,"15":0.00584,_:"0 4 5 6 7 8 10 11 12 3.1 3.2 6.1 7.1 10.1 17.2","5.1":0.01168,"9.1":0.00584,"11.1":0.0292,"12.1":0.00584,"13.1":0.04671,"14.1":0.09926,"15.1":0.00584,"15.2-15.3":0.01168,"15.4":0.0292,"15.5":0.02336,"15.6":0.25108,"16.0":0.04087,"16.1":0.06423,"16.2":0.06423,"16.3":0.16933,"16.4":0.09926,"16.5":0.18101,"16.6":0.98679,"17.0":0.61893,"17.1":0.04087},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0013,"5.0-5.1":0.0013,"6.0-6.1":0.00391,"7.0-7.1":0.00913,"8.1-8.4":0.0013,"9.0-9.2":0.00913,"9.3":0.03129,"10.0-10.2":0.0013,"10.3":0.04563,"11.0-11.2":0.04172,"11.3-11.4":0.01434,"12.0-12.1":0.01173,"12.2-12.5":0.20728,"13.0-13.1":0.00652,"13.2":0.0352,"13.3":0.01304,"13.4-13.7":0.04172,"14.0-14.4":0.11472,"14.5-14.8":0.18512,"15.0-15.1":0.073,"15.2-15.3":0.08343,"15.4":0.09256,"15.5":0.13167,"15.6-15.7":0.91125,"16.0":0.33634,"16.1":0.644,"16.2":0.31418,"16.3":0.58273,"16.4":0.12515,"16.5":0.33373,"16.6-16.7":6.25096,"17.0":2.22662,"17.1":0.13428,"17.2":0.00391},P:{"4":0.02081,"20":0.07282,"21":0.15604,"22":1.45635,"23":0.23926,"5.0-5.4":0.0104,_:"6.2-6.4 8.2 10.1 12.0","7.2-7.4":0.0104,"9.2":0.0104,"11.1-11.2":0.02081,"13.0":0.02081,"14.0":0.02081,"15.0":0.0104,"16.0":0.04161,"17.0":0.03121,"18.0":0.03121,"19.0":0.05201},I:{"0":0.03726,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00011},A:{"8":0.02704,"9":0.01352,"10":0.00676,"11":0.08113,_:"6 7 5.5"},K:{"0":0.53677,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.6616},Q:{"13.1":0.00416},O:{"0":0.20805},H:{"0":0},L:{"0":25.40454}}; diff --git a/node_modules/caniuse-lite/data/regions/FJ.js b/node_modules/caniuse-lite/data/regions/FJ.js new file mode 100644 index 00000000..6616b64f --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/FJ.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00246,"40":0.00246,"52":0.02215,"56":0.01231,"63":0.00246,"66":0.00246,"75":0.00246,"78":0.00984,"87":0.00246,"100":0.00492,"102":0.00984,"105":0.00492,"110":0.00246,"113":0.00492,"114":0.00492,"115":0.09844,"116":0.00246,"117":0.04184,"118":1.21081,"119":0.24118,"120":0.00246,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 64 65 67 68 69 70 71 72 73 74 76 77 79 80 81 82 83 84 85 86 88 89 90 91 92 93 94 95 96 97 98 99 101 103 104 106 107 108 109 111 112 121 122 3.5 3.6"},D:{"11":0.00246,"36":0.00246,"49":0.00984,"56":0.00492,"63":0.01477,"65":0.00738,"67":0.00246,"68":0.00246,"69":0.00246,"71":0.00246,"73":0.00738,"74":0.00492,"76":0.00246,"77":0.00246,"78":0.00984,"79":0.00984,"80":0.00246,"81":0.12059,"83":0.00984,"86":0.00738,"87":0.01231,"88":0.07137,"89":0.01477,"90":0.00984,"91":0.01477,"92":0.04922,"93":0.01477,"94":0.0566,"95":0.00246,"97":0.00246,"98":0.00492,"99":0.00984,"101":0.00984,"102":0.00246,"103":0.02707,"104":0.02461,"105":0.00738,"106":0.00492,"107":0.00492,"108":0.01477,"109":0.85643,"111":0.00738,"112":0.01231,"113":0.01969,"114":0.05168,"115":0.0566,"116":0.56357,"117":5.36006,"118":6.03437,"119":0.01477,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 62 64 66 70 72 75 84 85 96 100 110 120 121 122"},F:{"28":0.01477,"95":0.00492,"101":0.04922,"102":0.23626,"103":0.08367,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00246,"13":0.00246,"14":0.00246,"15":0.00246,"17":0.01231,"18":0.02461,"84":0.00492,"90":0.00492,"92":0.01477,"96":0.00246,"99":0.00492,"100":0.00246,"103":0.00492,"105":0.01969,"107":0.00246,"108":0.00246,"109":0.02953,"110":0.00246,"111":0.00492,"112":0.00738,"113":0.00492,"114":0.01477,"115":0.03938,"116":0.06399,"117":1.30925,"118":1.50121,"119":0.00246,_:"16 79 80 81 83 85 86 87 88 89 91 93 94 95 97 98 101 102 104 106"},E:{"12":0.00246,"13":0.00984,"14":0.01477,_:"0 4 5 6 7 8 9 10 11 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 15.2-15.3 17.2","12.1":0.00492,"13.1":0.02707,"14.1":0.02215,"15.1":0.00738,"15.4":0.02707,"15.5":0.00738,"15.6":0.22641,"16.0":0.00984,"16.1":0.02461,"16.2":0.02461,"16.3":0.06891,"16.4":0.02707,"16.5":0.17473,"16.6":0.54142,"17.0":0.30024,"17.1":0.01231},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00066,"5.0-5.1":0.00066,"6.0-6.1":0.00197,"7.0-7.1":0.0046,"8.1-8.4":0.00066,"9.0-9.2":0.0046,"9.3":0.01576,"10.0-10.2":0.00066,"10.3":0.02298,"11.0-11.2":0.02101,"11.3-11.4":0.00722,"12.0-12.1":0.00591,"12.2-12.5":0.10441,"13.0-13.1":0.00328,"13.2":0.01773,"13.3":0.00657,"13.4-13.7":0.02101,"14.0-14.4":0.05778,"14.5-14.8":0.09324,"15.0-15.1":0.03677,"15.2-15.3":0.04203,"15.4":0.04662,"15.5":0.06632,"15.6-15.7":0.459,"16.0":0.16941,"16.1":0.32438,"16.2":0.15825,"16.3":0.29352,"16.4":0.06304,"16.5":0.1681,"16.6-16.7":3.14862,"17.0":1.12155,"17.1":0.06763,"17.2":0.00197},P:{"4":0.22904,"20":0.3748,"21":0.58302,"22":4.85153,"23":0.97863,"5.0-5.4":0.01041,"6.2-6.4":0.01041,"7.2-7.4":0.45808,_:"8.2 10.1","9.2":0.02082,"11.1-11.2":0.06247,"12.0":0.01041,"13.0":0.05206,"14.0":0.03123,"15.0":0.07288,"16.0":0.14575,"17.0":0.06247,"18.0":0.23945,"19.0":0.77041},I:{"0":0.03,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00009},A:{"10":0.0041,"11":0.02051,_:"6 7 8 9 5.5"},K:{"0":0.73882,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.10555},Q:{"13.1":0.09801},O:{"0":0.39203},H:{"0":0},L:{"0":62.60634}}; diff --git a/node_modules/caniuse-lite/data/regions/FK.js b/node_modules/caniuse-lite/data/regions/FK.js new file mode 100644 index 00000000..417238fe --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/FK.js @@ -0,0 +1 @@ +module.exports={C:{"87":0.0254,"90":0.0254,"108":3.48882,"114":0.0254,"115":0.66897,"116":0.17783,"117":0.23287,"118":4.72091,"119":0.20323,"120":0.05081,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 88 89 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 109 110 111 112 113 121 122 3.5 3.6"},D:{"49":0.0254,"62":0.0254,"79":0.89761,"94":0.12702,"103":0.12702,"109":0.51231,"113":0.0254,"115":0.46151,"116":0.28368,"117":9.62388,"118":3.8233,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 84 85 86 87 88 89 90 91 92 93 95 96 97 98 99 100 101 102 104 105 106 107 108 110 111 112 114 119 120 121 122"},F:{"102":1.40992,"103":0.46151,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"91":0.0254,"109":0.28368,"111":0.0254,"114":0.99922,"116":0.61393,"117":4.6447,"118":2.20591,"119":0.0254,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 110 112 113 115"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.1 15.2-15.3 15.5 16.0 16.2 17.2","13.1":0.46151,"14.1":0.0254,"15.4":0.10162,"15.6":2.00268,"16.1":0.05081,"16.3":0.12702,"16.4":0.25827,"16.5":0.30908,"16.6":0.74518,"17.0":0.92301,"17.1":0.17783},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00123,"5.0-5.1":0.00123,"6.0-6.1":0.0037,"7.0-7.1":0.00864,"8.1-8.4":0.00123,"9.0-9.2":0.00864,"9.3":0.02963,"10.0-10.2":0.00123,"10.3":0.04321,"11.0-11.2":0.0395,"11.3-11.4":0.01358,"12.0-12.1":0.01111,"12.2-12.5":0.19629,"13.0-13.1":0.00617,"13.2":0.03333,"13.3":0.01235,"13.4-13.7":0.0395,"14.0-14.4":0.10864,"14.5-14.8":0.1753,"15.0-15.1":0.06913,"15.2-15.3":0.07901,"15.4":0.08765,"15.5":0.12468,"15.6-15.7":0.86292,"16.0":0.3185,"16.1":0.60984,"16.2":0.29751,"16.3":0.55182,"16.4":0.11851,"16.5":0.31603,"16.6-16.7":5.91943,"17.0":2.10853,"17.1":0.12715,"17.2":0.0037},P:{"21":0.5018,"22":4.03624,"23":0.44726,_:"4 20 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 16.0 17.0 18.0","14.0":9.65426,"15.0":0.03273,"19.0":0.16363},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0.10955,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.47858},Q:{_:"13.1"},O:{_:"0"},H:{"0":0},L:{"0":30.61072}}; diff --git a/node_modules/caniuse-lite/data/regions/FM.js b/node_modules/caniuse-lite/data/regions/FM.js new file mode 100644 index 00000000..f900e4bb --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/FM.js @@ -0,0 +1 @@ +module.exports={C:{"99":0.09439,"103":0.00787,"108":0.0354,"112":0.00787,"115":0.11012,"116":0.0354,"117":0.05113,"118":3.5397,"119":0.4405,"120":0.00787,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 100 101 102 104 105 106 107 109 110 111 113 114 121 122 3.5 3.6"},D:{"49":0.0236,"61":0.01573,"79":0.05113,"85":0.08653,"87":0.19665,"89":0.04326,"93":1.1681,"94":0.0354,"98":0.0236,"103":0.24385,"106":0.01573,"107":0.07473,"108":0.00787,"109":1.63613,"113":0.059,"114":0.0236,"116":1.25463,"117":9.93476,"118":6.57204,"119":0.00787,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 84 86 88 90 91 92 95 96 97 99 100 101 102 104 105 110 111 112 115 120 121 122"},F:{"101":0.00787,"102":0.56635,"103":0.01573,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"17":0.00787,"18":0.00787,"95":0.01573,"97":0.00787,"99":0.00787,"107":0.0354,"108":0.21238,"109":0.06686,"114":0.059,"115":0.09439,"116":0.10226,"117":3.72062,"118":4.23584,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 96 98 100 101 102 103 104 105 106 110 111 112 113 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 15.2-15.3 15.4 16.1 17.1 17.2","12.1":0.00787,"13.1":0.0354,"14.1":0.04326,"15.1":0.00787,"15.5":0.00787,"15.6":0.15339,"16.0":0.13372,"16.2":0.13372,"16.3":0.05113,"16.4":0.0236,"16.5":0.0354,"16.6":0.45623,"17.0":0.22025},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00093,"5.0-5.1":0.00093,"6.0-6.1":0.0028,"7.0-7.1":0.00654,"8.1-8.4":0.00093,"9.0-9.2":0.00654,"9.3":0.02242,"10.0-10.2":0.00093,"10.3":0.0327,"11.0-11.2":0.0299,"11.3-11.4":0.01028,"12.0-12.1":0.00841,"12.2-12.5":0.14856,"13.0-13.1":0.00467,"13.2":0.02523,"13.3":0.00934,"13.4-13.7":0.0299,"14.0-14.4":0.08222,"14.5-14.8":0.13267,"15.0-15.1":0.05232,"15.2-15.3":0.0598,"15.4":0.06634,"15.5":0.09437,"15.6-15.7":0.65309,"16.0":0.24105,"16.1":0.46155,"16.2":0.22517,"16.3":0.41764,"16.4":0.08969,"16.5":0.23919,"16.6-16.7":4.48005,"17.0":1.59582,"17.1":0.09623,"17.2":0.0028},P:{"21":0.0311,"22":0.64275,"23":0.29027,_:"4 20 5.0-5.4 6.2-6.4 8.2 9.2 10.1 11.1-11.2 15.0 17.0","7.2-7.4":0.01037,"12.0":0.01037,"13.0":0.01037,"14.0":0.01037,"16.0":0.0311,"18.0":0.02073,"19.0":0.01037},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0.30942,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.25481},Q:{_:"13.1"},O:{"0":0.82511},H:{"0":0},L:{"0":51.61145}}; diff --git a/node_modules/caniuse-lite/data/regions/FO.js b/node_modules/caniuse-lite/data/regions/FO.js new file mode 100644 index 00000000..4c1330b9 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/FO.js @@ -0,0 +1 @@ +module.exports={C:{"115":0.29198,"116":0.00739,"117":0.01848,"118":0.90182,"119":0.16632,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 120 121 122 3.5 3.6"},D:{"38":0.0037,"49":0.00739,"68":0.0887,"76":0.0037,"79":0.01478,"85":0.02218,"87":0.00739,"89":0.0037,"92":0.01478,"97":0.23654,"100":0.0037,"103":0.23285,"106":0.57288,"107":0.62462,"108":0.04805,"109":0.57288,"110":0.22176,"111":0.29938,"112":0.15893,"113":0.01478,"114":0.04435,"115":0.10718,"116":0.87595,"117":4.36128,"118":3.58512,"119":0.0037,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 77 78 80 81 83 84 86 88 90 91 93 94 95 96 98 99 101 102 104 105 120 121 122"},F:{"99":0.01109,"102":0.67267,"103":0.19219,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"90":0.00739,"100":0.0037,"109":0.01109,"110":0.0037,"114":0.01848,"115":0.0037,"116":0.04435,"117":1.17902,"118":1.08662,"119":0.0037,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 91 92 93 94 95 96 97 98 99 101 102 103 104 105 106 107 108 111 112 113"},E:{"14":0.19589,"15":0.0037,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.01478,"13.1":0.12566,"14.1":0.1885,"15.1":0.02957,"15.2-15.3":0.04805,"15.4":0.12936,"15.5":0.35112,"15.6":1.97736,"16.0":0.04805,"16.1":0.62462,"16.2":0.60984,"16.3":1.32317,"16.4":0.37699,"16.5":0.97944,"16.6":9.39523,"17.0":2.50958,"17.1":0.21806,"17.2":0.0037},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00559,"5.0-5.1":0.00559,"6.0-6.1":0.01676,"7.0-7.1":0.0391,"8.1-8.4":0.00559,"9.0-9.2":0.0391,"9.3":0.13407,"10.0-10.2":0.00559,"10.3":0.19552,"11.0-11.2":0.17876,"11.3-11.4":0.06145,"12.0-12.1":0.05028,"12.2-12.5":0.88823,"13.0-13.1":0.02793,"13.2":0.15083,"13.3":0.05586,"13.4-13.7":0.17876,"14.0-14.4":0.4916,"14.5-14.8":0.79326,"15.0-15.1":0.31284,"15.2-15.3":0.35753,"15.4":0.39663,"15.5":0.56422,"15.6-15.7":3.90486,"16.0":1.44128,"16.1":2.75966,"16.2":1.34631,"16.3":2.4971,"16.4":0.53629,"16.5":1.43011,"16.6-16.7":26.78654,"17.0":9.54148,"17.1":0.57539,"17.2":0.01676},P:{"20":0.04224,"21":0.02112,"22":0.61246,"23":0.11616,_:"4 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0","18.0":0.01056,"19.0":0.01056},I:{"0":0.02508,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00008},A:{"8":0.0037,"9":0.0037,"11":0.12936,_:"6 7 10 5.5"},K:{"0":0.13236,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.05042},Q:{"13.1":0.0063},O:{"0":0.01261},H:{"0":0},L:{"0":6.15698}}; diff --git a/node_modules/caniuse-lite/data/regions/FR.js b/node_modules/caniuse-lite/data/regions/FR.js new file mode 100644 index 00000000..21eb4c5b --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/FR.js @@ -0,0 +1 @@ +module.exports={C:{"4":0.00465,"12":0.06969,"38":0.00465,"45":0.00465,"48":0.03252,"52":0.03717,"55":0.00465,"59":0.03252,"60":0.00465,"68":0.00465,"72":0.00465,"75":0.00929,"78":0.08363,"81":0.00465,"82":0.00465,"83":0.00465,"84":0.00465,"85":0.00465,"86":0.00465,"87":0.00465,"88":0.00929,"89":0.00465,"90":0.00465,"91":0.02788,"92":0.00465,"93":0.01394,"94":0.01858,"95":0.00465,"96":0.00465,"97":0.00465,"98":0.00465,"99":0.00465,"100":0.00465,"101":0.00465,"102":0.10221,"103":1.70508,"104":0.01394,"105":0.00929,"106":0.01394,"107":0.01858,"108":0.01858,"109":0.01858,"110":0.01858,"111":0.01394,"112":0.01394,"113":0.04181,"114":0.01858,"115":0.70155,"116":0.03252,"117":0.15796,"118":3.26149,"119":0.65044,"120":0.00465,_:"2 3 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 46 47 49 50 51 53 54 56 57 58 61 62 63 64 65 66 67 69 70 71 73 74 76 77 79 80 121 122 3.5","3.6":0.00465},D:{"4":0.00465,"38":0.00465,"48":0.00465,"49":0.04646,"51":0.00465,"52":0.00465,"56":0.00465,"58":0.00465,"60":0.18119,"62":0.00465,"63":0.00465,"65":0.00465,"66":0.12544,"67":0.00465,"68":0.00465,"69":0.00465,"70":0.00929,"71":0.01858,"72":0.00929,"73":0.00465,"74":0.00929,"75":0.00465,"76":0.01394,"77":0.00929,"78":0.01394,"79":0.04646,"80":0.02323,"81":0.06969,"83":0.04646,"84":0.04181,"85":0.0604,"86":0.07434,"87":0.1208,"88":0.05111,"89":0.04181,"90":0.08827,"91":0.06969,"92":0.04646,"93":0.04181,"94":0.31128,"95":0.04646,"96":0.06969,"97":0.03717,"98":0.04646,"99":0.05111,"100":0.04646,"101":0.06504,"102":0.06504,"103":0.14867,"104":0.05575,"105":0.06504,"106":0.09757,"107":0.1208,"108":0.16261,"109":1.42632,"110":0.08827,"111":0.25553,"112":0.1208,"113":0.06969,"114":0.24624,"115":0.39026,"116":1.79336,"117":9.00859,"118":9.04112,"119":0.01394,"120":0.00465,_:"5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 50 53 54 55 57 59 61 64 121 122"},F:{"28":0.00465,"36":0.00465,"46":0.00929,"73":0.00465,"74":0.00465,"75":0.00465,"76":0.00465,"77":0.00465,"78":0.00465,"79":0.00465,"80":0.00465,"82":0.00465,"83":0.00465,"84":0.00465,"85":0.00465,"89":0.00465,"90":0.00465,"91":0.00465,"92":0.00465,"93":0.00465,"94":0.00465,"95":0.05111,"96":0.00465,"99":0.00465,"100":0.01394,"101":0.02788,"102":1.30088,"103":0.24624,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 81 86 87 88 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"14":0.00465,"16":0.00465,"17":0.01858,"18":0.00465,"84":0.01394,"85":0.00929,"86":0.00929,"87":0.00929,"88":0.01394,"89":0.00929,"90":0.01394,"91":0.01394,"92":0.01858,"93":0.00929,"94":0.00929,"95":0.01394,"96":0.02323,"97":0.01394,"98":0.01394,"99":0.01394,"100":0.00929,"103":0.00929,"105":0.01394,"106":0.01858,"107":0.03717,"108":0.04181,"109":0.13938,"110":0.02788,"111":0.02323,"112":0.02323,"113":0.03252,"114":0.07898,"115":0.06969,"116":0.16726,"117":2.49955,"118":2.44844,"119":0.00465,_:"12 13 15 79 80 81 83 101 102 104"},E:{"13":0.04181,"14":0.11615,"15":0.03252,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 17.2","5.1":0.00929,"9.1":0.02788,"10.1":0.00465,"11.1":0.03252,"12.1":0.07434,"13.1":0.17655,"14.1":0.26947,"15.1":0.04646,"15.2-15.3":0.04181,"15.4":0.06504,"15.5":0.08827,"15.6":0.48783,"16.0":0.07434,"16.1":0.13473,"16.2":0.1115,"16.3":0.27876,"16.4":0.13009,"16.5":0.32057,"16.6":1.3938,"17.0":0.62721,"17.1":0.03717},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00176,"5.0-5.1":0.00176,"6.0-6.1":0.00529,"7.0-7.1":0.01235,"8.1-8.4":0.00176,"9.0-9.2":0.01235,"9.3":0.04233,"10.0-10.2":0.00176,"10.3":0.06173,"11.0-11.2":0.05644,"11.3-11.4":0.0194,"12.0-12.1":0.01587,"12.2-12.5":0.28041,"13.0-13.1":0.00882,"13.2":0.04762,"13.3":0.01764,"13.4-13.7":0.05644,"14.0-14.4":0.1552,"14.5-14.8":0.25043,"15.0-15.1":0.09876,"15.2-15.3":0.11287,"15.4":0.12522,"15.5":0.17812,"15.6-15.7":1.23276,"16.0":0.45501,"16.1":0.87122,"16.2":0.42503,"16.3":0.78833,"16.4":0.16931,"16.5":0.45148,"16.6-16.7":8.4565,"17.0":3.01224,"17.1":0.18165,"17.2":0.00529},P:{"4":0.05324,"20":0.06389,"21":0.12779,"22":2.03395,"23":0.38336,_:"5.0-5.4 6.2-6.4 8.2 10.1 12.0","7.2-7.4":0.01065,"9.2":0.01065,"11.1-11.2":0.0213,"13.0":0.0213,"14.0":0.0213,"15.0":0.01065,"16.0":0.03195,"17.0":0.0213,"18.0":0.03195,"19.0":0.05324},I:{"0":0.06925,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.00021},A:{"8":0.0048,"9":0.02881,"11":0.11042,_:"6 7 10 5.5"},K:{"0":0.54146,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00535,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.65854},Q:{"13.1":0.00535},O:{"0":0.55146},H:{"0":0.01},L:{"0":31.88297}}; diff --git a/node_modules/caniuse-lite/data/regions/GA.js b/node_modules/caniuse-lite/data/regions/GA.js new file mode 100644 index 00000000..9cdf5f32 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GA.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.0029,"37":0.00579,"40":0.0029,"52":0.00869,"64":0.0029,"78":0.06369,"88":0.00579,"91":0.00579,"107":0.02316,"112":0.01448,"113":0.0029,"114":0.0029,"115":0.15344,"116":0.0029,"117":0.01158,"118":0.70638,"119":0.15923,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 38 39 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 108 109 110 111 120 121 122 3.5 3.6"},D:{"40":0.0029,"43":0.0029,"50":0.0029,"53":0.00579,"55":0.00579,"56":0.0029,"58":0.0608,"66":0.0029,"67":0.00579,"68":0.0029,"69":0.01158,"70":0.08106,"73":0.01448,"74":0.00579,"75":0.03185,"76":0.0029,"79":0.07238,"80":0.0029,"81":0.00579,"83":0.06659,"84":0.02027,"87":0.00869,"88":0.01448,"89":0.07238,"92":0.01158,"93":0.00869,"94":0.00869,"95":0.01737,"96":0.0029,"97":0.0029,"98":0.04632,"99":0.0029,"101":0.05211,"102":0.07238,"103":0.02027,"105":0.00579,"106":0.04632,"107":0.00869,"108":0.00869,"109":2.70104,"110":0.02895,"111":0.0029,"112":0.17949,"113":0.00869,"114":0.05501,"115":0.06659,"116":1.33749,"117":5.45708,"118":6.82931,"119":0.0029,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 44 45 46 47 48 49 51 52 54 57 59 60 61 62 63 64 65 71 72 77 78 85 86 90 91 100 104 120 121 122"},F:{"28":0.02316,"46":0.02316,"85":0.00579,"89":0.00869,"95":0.20555,"101":0.0029,"102":0.31266,"103":0.2345,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00869,"92":0.01158,"109":0.04053,"113":0.00579,"114":0.01737,"115":0.0608,"116":0.07817,"117":1.63857,"118":1.7399,"119":0.0029,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 110 111 112"},E:{"14":0.0029,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 15.2-15.3 16.0 17.2","5.1":0.0029,"13.1":0.02316,"14.1":0.0029,"15.1":0.02027,"15.4":0.0029,"15.5":0.11001,"15.6":0.05501,"16.1":0.01158,"16.2":0.00579,"16.3":0.00869,"16.4":0.0029,"16.5":0.00579,"16.6":0.0608,"17.0":0.03764,"17.1":0.0029},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00122,"5.0-5.1":0.00122,"6.0-6.1":0.00366,"7.0-7.1":0.00854,"8.1-8.4":0.00122,"9.0-9.2":0.00854,"9.3":0.02928,"10.0-10.2":0.00122,"10.3":0.0427,"11.0-11.2":0.03904,"11.3-11.4":0.01342,"12.0-12.1":0.01098,"12.2-12.5":0.19397,"13.0-13.1":0.0061,"13.2":0.03294,"13.3":0.0122,"13.4-13.7":0.03904,"14.0-14.4":0.10735,"14.5-14.8":0.17323,"15.0-15.1":0.06832,"15.2-15.3":0.07808,"15.4":0.08661,"15.5":0.12321,"15.6-15.7":0.85273,"16.0":0.31474,"16.1":0.60264,"16.2":0.294,"16.3":0.54531,"16.4":0.11711,"16.5":0.3123,"16.6-16.7":5.84956,"17.0":2.08364,"17.1":0.12565,"17.2":0.00366},P:{"4":0.2167,"20":0.17543,"21":0.09287,"22":1.08351,"23":0.28894,_:"5.0-5.4 8.2 9.2 10.1 14.0","6.2-6.4":0.01032,"7.2-7.4":0.44372,"11.1-11.2":0.12383,"12.0":0.01032,"13.0":0.01032,"15.0":0.01032,"16.0":0.07223,"17.0":0.02064,"18.0":0.01032,"19.0":0.03096},I:{"0":0.01414,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00004},A:{"11":0.03474,_:"6 7 8 9 10 5.5"},K:{"0":1.61783,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.01421,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.03553},Q:{_:"13.1"},O:{"0":0.22736},H:{"0":0.13},L:{"0":58.74952}}; diff --git a/node_modules/caniuse-lite/data/regions/GB.js b/node_modules/caniuse-lite/data/regions/GB.js new file mode 100644 index 00000000..32159af7 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GB.js @@ -0,0 +1 @@ +module.exports={C:{"11":0.00461,"48":0.01382,"52":0.01842,"59":0.02303,"60":0.00461,"65":0.00921,"66":0.00461,"78":0.01382,"83":0.00461,"87":0.00461,"88":0.00461,"89":0.00461,"102":0.00921,"104":0.00461,"105":0.00461,"108":0.00461,"109":0.00461,"110":0.00461,"111":0.00461,"112":0.00461,"113":0.01382,"114":0.00921,"115":0.17042,"116":0.01382,"117":0.09212,"118":1.2298,"119":0.20727,"120":0.00461,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 61 62 63 64 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 90 91 92 93 94 95 96 97 98 99 100 101 103 106 107 121 122 3.5 3.6"},D:{"38":0.00461,"41":0.00461,"42":0.00461,"43":0.00461,"44":0.00461,"45":0.00461,"49":0.02303,"51":0.00461,"52":0.00461,"56":0.02303,"58":0.00921,"59":0.00461,"60":0.03685,"65":0.00461,"66":0.08751,"67":0.00461,"70":0.00461,"71":0.00461,"72":0.00921,"73":0.02303,"74":0.00921,"75":0.00461,"76":0.01842,"77":0.00921,"78":0.00461,"79":0.03224,"80":0.01382,"81":0.01842,"83":0.03685,"84":0.00921,"85":0.01382,"86":0.01842,"87":0.02764,"88":0.02303,"89":0.01382,"90":0.00921,"91":0.02764,"92":0.01842,"93":0.10133,"94":0.00921,"95":0.00461,"96":0.0783,"97":0.00461,"98":0.01382,"99":0.01382,"100":0.01382,"101":0.02303,"102":0.01842,"103":0.27636,"104":0.01842,"105":0.03685,"106":0.01842,"107":0.05527,"108":0.03685,"109":0.80605,"110":0.03224,"111":0.04606,"112":0.08291,"113":0.0737,"114":0.33624,"115":0.23951,"116":2.00361,"117":11.79136,"118":9.68181,"119":0.02764,"120":0.00461,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 46 47 48 50 53 54 55 57 61 62 63 64 68 69 121 122"},F:{"46":0.00461,"95":0.01842,"98":0.00461,"99":0.00921,"100":0.00921,"101":0.00921,"102":1.0732,"103":0.13818,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"17":0.00921,"18":0.00461,"85":0.00461,"90":0.00461,"92":0.00921,"99":0.00461,"105":0.00461,"106":0.00461,"107":0.00461,"108":0.00921,"109":0.0783,"110":0.00921,"111":0.00921,"112":0.01842,"113":0.02764,"114":0.04145,"115":0.04145,"116":0.18885,"117":4.67048,"118":4.0671,"119":0.01382,_:"12 13 14 15 16 79 80 81 83 84 86 87 88 89 91 93 94 95 96 97 98 100 101 102 103 104"},E:{"12":0.00461,"13":0.00921,"14":0.0783,"15":0.01382,_:"0 4 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 10.1 17.2","5.1":0.00461,"9.1":0.00921,"11.1":0.02303,"12.1":0.02303,"13.1":0.11054,"14.1":0.22569,"15.1":0.03224,"15.2-15.3":0.02764,"15.4":0.05067,"15.5":0.08291,"15.6":0.62642,"16.0":0.05988,"16.1":0.12436,"16.2":0.14739,"16.3":0.33163,"16.4":0.12436,"16.5":0.32703,"16.6":2.90639,"17.0":0.75078,"17.1":0.05527},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00262,"5.0-5.1":0.00262,"6.0-6.1":0.00787,"7.0-7.1":0.01836,"8.1-8.4":0.00262,"9.0-9.2":0.01836,"9.3":0.06295,"10.0-10.2":0.00262,"10.3":0.09181,"11.0-11.2":0.08394,"11.3-11.4":0.02885,"12.0-12.1":0.02361,"12.2-12.5":0.41707,"13.0-13.1":0.01312,"13.2":0.07082,"13.3":0.02623,"13.4-13.7":0.08394,"14.0-14.4":0.23083,"14.5-14.8":0.37248,"15.0-15.1":0.14689,"15.2-15.3":0.16788,"15.4":0.18624,"15.5":0.26493,"15.6-15.7":1.83355,"16.0":0.67676,"16.1":1.29581,"16.2":0.63217,"16.3":1.17253,"16.4":0.25182,"16.5":0.67151,"16.6-16.7":12.57778,"17.0":4.48026,"17.1":0.27018,"17.2":0.00787},P:{"4":0.03301,"20":0.05502,"21":0.13205,"22":2.83913,"23":0.66026,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 12.0 15.0","11.1-11.2":0.011,"13.0":0.011,"14.0":0.02201,"16.0":0.011,"17.0":0.02201,"18.0":0.011,"19.0":0.03301},I:{"0":0.04293,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00013},A:{"8":0.00485,"9":0.0097,"11":0.07757,_:"6 7 10 5.5"},K:{"0":0.23273,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.34522},Q:{_:"13.1"},O:{"0":0.11867},H:{"0":0.01},L:{"0":23.43789}}; diff --git a/node_modules/caniuse-lite/data/regions/GD.js b/node_modules/caniuse-lite/data/regions/GD.js new file mode 100644 index 00000000..cbb1b288 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GD.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.02232,"60":0.02232,"101":0.00558,"102":0.00558,"115":0.07253,"116":0.00558,"117":0.05021,"118":1.0098,"119":0.11716,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 103 104 105 106 107 108 109 110 111 112 113 114 120 121 122 3.5 3.6"},D:{"31":0.00558,"63":0.00558,"65":0.01116,"66":0.01116,"73":0.02232,"75":0.00558,"76":0.02232,"77":0.01116,"79":0.10042,"83":0.0279,"87":0.00558,"91":0.00558,"93":0.01116,"95":0.00558,"96":0.00558,"103":0.49653,"104":0.00558,"105":0.01116,"108":0.0279,"109":1.39475,"110":0.01116,"111":0.01116,"112":0.22316,"113":0.01116,"114":0.19527,"115":0.12274,"116":1.47286,"117":16.20142,"118":10.48294,"119":0.00558,"120":0.00558,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 64 67 68 69 70 71 72 74 78 80 81 84 85 86 88 89 90 92 94 97 98 99 100 101 102 106 107 121 122"},F:{"83":0.00558,"101":0.00558,"102":0.35148,"103":0.09484,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.0279,"88":0.00558,"108":0.01116,"109":0.01674,"111":0.03347,"114":0.01116,"115":0.12832,"116":0.25663,"117":11.93348,"118":2.15907,"119":0.00558,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 110 112 113"},E:{"14":0.04463,"15":0.00558,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 17.2","11.1":0.03347,"12.1":0.06137,"13.1":0.10042,"14.1":0.40169,"15.1":0.00558,"15.2-15.3":0.00558,"15.4":0.24548,"15.5":0.03905,"15.6":1.27201,"16.0":0.00558,"16.1":0.06137,"16.2":0.07253,"16.3":0.15621,"16.4":0.16179,"16.5":0.31242,"16.6":1.69044,"17.0":0.85359,"17.1":0.03905},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00096,"5.0-5.1":0.00096,"6.0-6.1":0.00289,"7.0-7.1":0.00674,"8.1-8.4":0.00096,"9.0-9.2":0.00674,"9.3":0.02313,"10.0-10.2":0.00096,"10.3":0.03372,"11.0-11.2":0.03083,"11.3-11.4":0.0106,"12.0-12.1":0.00867,"12.2-12.5":0.15321,"13.0-13.1":0.00482,"13.2":0.02602,"13.3":0.00964,"13.4-13.7":0.03083,"14.0-14.4":0.08479,"14.5-14.8":0.13683,"15.0-15.1":0.05396,"15.2-15.3":0.06167,"15.4":0.06841,"15.5":0.09732,"15.6-15.7":0.67353,"16.0":0.2486,"16.1":0.476,"16.2":0.23222,"16.3":0.43071,"16.4":0.0925,"16.5":0.24667,"16.6-16.7":4.62027,"17.0":1.64576,"17.1":0.09925,"17.2":0.00289},P:{"4":0.0325,"20":0.02167,"21":0.07583,"22":1.98237,"23":0.38997,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 13.0 14.0 15.0 17.0","7.2-7.4":0.04333,"11.1-11.2":0.01083,"16.0":0.05416,"18.0":0.01083,"19.0":0.02167},I:{"0":0.01319,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00004},A:{"11":0.00558,_:"6 7 8 9 10 5.5"},K:{"0":0.22542,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.07514},Q:{_:"13.1"},O:{"0":0.10608},H:{"0":0},L:{"0":34.25454}}; diff --git a/node_modules/caniuse-lite/data/regions/GE.js b/node_modules/caniuse-lite/data/regions/GE.js new file mode 100644 index 00000000..af416995 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GE.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00429,"52":0.00429,"57":0.00429,"68":0.01287,"78":0.01287,"88":0.01716,"91":0.01287,"96":0.00429,"99":0.03862,"104":0.00429,"113":0.07724,"115":0.22742,"116":0.63078,"117":0.02575,"118":0.59645,"119":0.09869,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 94 95 97 98 100 101 102 103 105 106 107 108 109 110 111 112 114 120 121 122 3.5 3.6"},D:{"11":0.00429,"36":0.00429,"38":0.00858,"43":0.00429,"44":0.00429,"45":0.00429,"46":0.00429,"47":0.02146,"49":0.02146,"51":0.00429,"53":0.00429,"56":0.01287,"61":0.00429,"62":0.00858,"63":0.00858,"64":0.00429,"65":0.00429,"66":0.00429,"68":0.03433,"69":0.00429,"70":0.01287,"71":0.00429,"73":0.03433,"74":0.00429,"75":0.00429,"76":0.00429,"78":0.01716,"79":0.24459,"80":0.00429,"81":0.00429,"83":0.11586,"84":0.00858,"85":0.01287,"86":0.01287,"87":0.18022,"88":0.05578,"89":0.00858,"90":0.06866,"91":0.00429,"92":0.00858,"93":0.01287,"94":0.02575,"95":0.01716,"96":0.02146,"97":0.01287,"98":0.05149,"99":0.01287,"100":0.03433,"101":0.01287,"102":0.03004,"103":0.13302,"104":0.02146,"105":0.01287,"106":0.03433,"107":0.0472,"108":0.09869,"109":5.04193,"110":0.02575,"111":0.03862,"112":0.05149,"113":0.03004,"114":0.14589,"115":0.0944,"116":0.82387,"117":11.09653,"118":11.5385,"119":0.01287,"120":0.00858,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 39 40 41 42 48 50 52 54 55 57 58 59 60 67 72 77 121 122"},F:{"28":0.02575,"36":0.00429,"40":0.00429,"46":0.06866,"63":0.01287,"66":0.00429,"67":0.00429,"77":0.00429,"79":0.02146,"82":0.00429,"83":0.00429,"84":0.00429,"85":0.03433,"86":0.01287,"87":0.01716,"89":0.00429,"92":0.01716,"94":0.01716,"95":0.5707,"98":0.00429,"99":0.00429,"101":0.01287,"102":2.03393,"103":0.7638,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 64 65 68 69 70 71 72 73 74 75 76 78 80 81 88 90 91 93 96 97 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00429,"13":0.03004,"14":0.02146,"15":0.00429,"16":0.01716,"18":0.03004,"84":0.00858,"92":0.01716,"93":0.00429,"100":0.00858,"102":0.00429,"107":0.01287,"108":0.02575,"109":0.03004,"110":0.00858,"111":0.00429,"112":0.03004,"113":0.01716,"114":0.03004,"115":0.03004,"116":0.17164,"117":1.622,"118":1.5276,"119":0.00429,_:"17 79 80 81 83 85 86 87 88 89 90 91 94 95 96 97 98 99 101 103 104 105 106"},E:{"9":0.00858,"14":0.01716,"15":0.00429,_:"0 4 5 6 7 8 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.00429,"12.1":0.00429,"13.1":0.03004,"14.1":0.06866,"15.1":0.00429,"15.2-15.3":0.00858,"15.4":0.03004,"15.5":0.02146,"15.6":0.13302,"16.0":0.01287,"16.1":0.0944,"16.2":0.02575,"16.3":0.09011,"16.4":0.0472,"16.5":0.08153,"16.6":0.35186,"17.0":0.39048,"17.1":0.02575},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00123,"5.0-5.1":0.00123,"6.0-6.1":0.00368,"7.0-7.1":0.00859,"8.1-8.4":0.00123,"9.0-9.2":0.00859,"9.3":0.02947,"10.0-10.2":0.00123,"10.3":0.04297,"11.0-11.2":0.03929,"11.3-11.4":0.01351,"12.0-12.1":0.01105,"12.2-12.5":0.19522,"13.0-13.1":0.00614,"13.2":0.03315,"13.3":0.01228,"13.4-13.7":0.03929,"14.0-14.4":0.10805,"14.5-14.8":0.17435,"15.0-15.1":0.06876,"15.2-15.3":0.07858,"15.4":0.08717,"15.5":0.12401,"15.6-15.7":0.85823,"16.0":0.31677,"16.1":0.60653,"16.2":0.2959,"16.3":0.54882,"16.4":0.11787,"16.5":0.31431,"16.6-16.7":5.88726,"17.0":2.09707,"17.1":0.12646,"17.2":0.00368},P:{"4":0.60715,"20":0.05326,"21":0.07456,"22":1.28886,"23":0.22369,"5.0-5.4":0.03196,"6.2-6.4":0.0213,"7.2-7.4":0.07456,_:"8.2 9.2 10.1 12.0 14.0 15.0","11.1-11.2":0.01065,"13.0":0.03196,"16.0":0.0213,"17.0":0.03196,"18.0":0.0213,"19.0":0.05326},I:{"0":0.13629,"3":0,"4":0.00003,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00003,"4.2-4.3":0.0001,"4.4":0,"4.4.3-4.4.4":0.00041},A:{"8":0.02503,"9":0.00501,"10":0.00501,"11":0.05507,_:"6 7 5.5"},K:{"0":0.29111,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.10274},Q:{_:"13.1"},O:{"0":0.03996},H:{"0":0},L:{"0":42.14125}}; diff --git a/node_modules/caniuse-lite/data/regions/GF.js b/node_modules/caniuse-lite/data/regions/GF.js new file mode 100644 index 00000000..6c362aa2 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GF.js @@ -0,0 +1 @@ +module.exports={C:{"47":0.00434,"50":0.00434,"52":0.00434,"54":0.00434,"68":0.00434,"78":0.08686,"88":0.00434,"89":0.00434,"91":0.00869,"94":0.00434,"96":0.02172,"100":0.00434,"102":0.10858,"103":0.00434,"108":0.01303,"109":0.00869,"112":0.05212,"113":0.00434,"114":0.03474,"115":0.51682,"116":0.01737,"117":0.16503,"118":4.19534,"119":0.5559,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 51 53 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 90 92 93 95 97 98 99 101 104 105 106 107 110 111 120 121 122 3.5 3.6"},D:{"11":0.03909,"41":0.01737,"47":0.00434,"49":0.00434,"60":0.00869,"61":0.00434,"65":0.01303,"69":0.00434,"72":0.00434,"74":0.01303,"76":0.05646,"77":0.00434,"79":0.02606,"83":0.00434,"86":0.00434,"87":0.00434,"88":0.00434,"89":0.00434,"95":0.00434,"99":0.14766,"100":0.00434,"101":0.00434,"102":0.00434,"103":0.11292,"105":0.0304,"106":0.00434,"108":0.00869,"109":0.84689,"110":0.00434,"111":0.0608,"112":0.02606,"113":0.03909,"114":0.07817,"115":0.15635,"116":0.76003,"117":8.38633,"118":7.71751,"119":0.00434,"120":0.00434,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 43 44 45 46 48 50 51 52 53 54 55 56 57 58 59 62 63 64 66 67 68 70 71 73 75 78 80 81 84 85 90 91 92 93 94 96 97 98 104 107 121 122"},F:{"28":0.01737,"36":0.01303,"46":0.16503,"102":0.9598,"103":0.33007,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"15":0.16503,"17":0.00434,"18":0.03474,"92":0.02606,"99":0.0608,"102":0.01737,"103":0.01303,"105":0.01737,"107":0.00434,"109":0.02172,"111":0.00434,"112":0.01737,"113":0.0304,"114":0.07383,"115":0.07817,"116":0.05646,"117":4.27351,"118":3.93042,"119":0.00869,_:"12 13 14 16 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 100 101 104 106 108 110"},E:{"13":0.01737,"14":0.23452,"15":0.05646,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 17.2","11.1":0.00434,"12.1":0.01303,"13.1":0.11726,"14.1":0.42127,"15.1":0.01737,"15.2-15.3":0.03474,"15.4":0.05646,"15.5":0.04343,"15.6":0.66448,"16.0":0.13029,"16.1":0.19978,"16.2":0.11292,"16.3":0.51247,"16.4":0.36481,"16.5":0.78174,"16.6":1.96738,"17.0":1.19867,"17.1":0.0304},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00153,"5.0-5.1":0.00153,"6.0-6.1":0.00458,"7.0-7.1":0.01069,"8.1-8.4":0.00153,"9.0-9.2":0.01069,"9.3":0.03666,"10.0-10.2":0.00153,"10.3":0.05346,"11.0-11.2":0.04888,"11.3-11.4":0.0168,"12.0-12.1":0.01375,"12.2-12.5":0.24286,"13.0-13.1":0.00764,"13.2":0.04124,"13.3":0.01527,"13.4-13.7":0.04888,"14.0-14.4":0.13441,"14.5-14.8":0.21689,"15.0-15.1":0.08553,"15.2-15.3":0.09775,"15.4":0.10844,"15.5":0.15427,"15.6-15.7":1.06765,"16.0":0.39407,"16.1":0.75453,"16.2":0.3681,"16.3":0.68274,"16.4":0.14663,"16.5":0.39101,"16.6-16.7":7.32384,"17.0":2.60878,"17.1":0.15732,"17.2":0.00458},P:{"4":0.03111,"20":0.04147,"21":0.11405,"22":2.4055,"23":0.3629,"5.0-5.4":0.01037,_:"6.2-6.4 8.2 9.2 10.1 15.0","7.2-7.4":0.07258,"11.1-11.2":0.1659,"12.0":0.01037,"13.0":0.01037,"14.0":0.01037,"16.0":0.01037,"17.0":0.01037,"18.0":0.03111,"19.0":0.43548},I:{"0":0.04503,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00014},A:{"11":0.00869,_:"6 7 8 9 10 5.5"},K:{"0":0.14708,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.70713},Q:{"13.1":0.01697},O:{"0":0.03394},H:{"0":0},L:{"0":37.88267}}; diff --git a/node_modules/caniuse-lite/data/regions/GG.js b/node_modules/caniuse-lite/data/regions/GG.js new file mode 100644 index 00000000..24dc4980 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GG.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00486,"78":0.06315,"84":0.00486,"87":0.00486,"102":0.01457,"103":0.00486,"112":0.00972,"113":0.00972,"115":0.0583,"116":0.01943,"117":0.06315,"118":1.3651,"119":0.36921,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 88 89 90 91 92 93 94 95 96 97 98 99 100 101 104 105 106 107 108 109 110 111 114 120 121 122 3.5 3.6"},D:{"47":0.00486,"49":0.00972,"76":0.2429,"77":0.04372,"79":0.00486,"83":0.02915,"84":0.00486,"85":0.00486,"87":0.00972,"89":0.00486,"90":0.00486,"93":0.07287,"99":0.01943,"103":0.11659,"108":0.06315,"109":1.33595,"112":0.05344,"113":0.05344,"114":0.22833,"115":0.05344,"116":2.74963,"117":12.95143,"118":8.4092,"119":0.00486,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 78 80 81 86 88 91 92 94 95 96 97 98 100 101 102 104 105 106 107 110 111 120 121 122"},F:{"95":0.00486,"99":0.13602,"102":0.58782,"103":0.0583,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"109":0.00486,"115":0.02429,"116":0.07287,"117":3.95927,"118":2.59417,"119":0.00486,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 110 111 112 113 114"},E:{"13":0.00486,"14":0.14088,"15":0.06315,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 17.2","11.1":0.03401,"12.1":0.0583,"13.1":0.22347,"14.1":0.29634,"15.1":0.02429,"15.2-15.3":0.03401,"15.4":0.07773,"15.5":0.10202,"15.6":0.94731,"16.0":0.77242,"16.1":0.07773,"16.2":0.16517,"16.3":0.3012,"16.4":0.06315,"16.5":0.29148,"16.6":7.35987,"17.0":0.95217,"17.1":0.03886},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00345,"5.0-5.1":0.00345,"6.0-6.1":0.01035,"7.0-7.1":0.02414,"8.1-8.4":0.00345,"9.0-9.2":0.02414,"9.3":0.08277,"10.0-10.2":0.00345,"10.3":0.12071,"11.0-11.2":0.11036,"11.3-11.4":0.03794,"12.0-12.1":0.03104,"12.2-12.5":0.54835,"13.0-13.1":0.01724,"13.2":0.09312,"13.3":0.03449,"13.4-13.7":0.11036,"14.0-14.4":0.30349,"14.5-14.8":0.48972,"15.0-15.1":0.19313,"15.2-15.3":0.22072,"15.4":0.24486,"15.5":0.34832,"15.6-15.7":2.41067,"16.0":0.88977,"16.1":1.70368,"16.2":0.83115,"16.3":1.54159,"16.4":0.33108,"16.5":0.88288,"16.6-16.7":16.53671,"17.0":5.89045,"17.1":0.35522,"17.2":0.01035},P:{"4":0.02227,"20":0.0334,"21":0.1002,"22":2.93919,"23":0.6012,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 14.0 15.0 16.0 17.0 18.0 19.0","13.0":0.01113},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.08744,_:"6 7 8 9 10 5.5"},K:{"0":0.05142,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.68903},Q:{_:"13.1"},O:{"0":0.00514},H:{"0":0},L:{"0":12.48373}}; diff --git a/node_modules/caniuse-lite/data/regions/GH.js b/node_modules/caniuse-lite/data/regions/GH.js new file mode 100644 index 00000000..d47e22e4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GH.js @@ -0,0 +1 @@ +module.exports={C:{"30":0.00225,"34":0.00225,"38":0.00225,"43":0.00225,"45":0.00225,"46":0.00225,"47":0.00225,"48":0.00225,"49":0.00225,"50":0.00225,"52":0.00225,"60":0.00225,"66":0.00225,"68":0.00225,"72":0.00675,"76":0.00225,"78":0.009,"85":0.00225,"86":0.00225,"87":0.00225,"90":0.00225,"100":0.00225,"101":0.00225,"102":0.0045,"103":0.00225,"104":0.00675,"106":0.00225,"107":0.0045,"108":0.0045,"109":0.00225,"110":0.00675,"111":0.0045,"112":0.0045,"113":0.009,"114":0.01349,"115":0.2249,"116":0.02024,"117":0.08546,"118":0.86137,"119":0.17317,"120":0.009,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 35 36 37 39 40 41 42 44 51 53 54 55 56 57 58 59 61 62 63 64 65 67 69 70 71 73 74 75 77 79 80 81 82 83 84 88 89 91 92 93 94 95 96 97 98 99 105 121 122 3.5 3.6"},D:{"11":0.0045,"30":0.0045,"33":0.00225,"37":0.00225,"38":0.00225,"39":0.00225,"41":0.00225,"43":0.00225,"44":0.00225,"45":0.00225,"46":0.00225,"47":0.00225,"49":0.02024,"50":0.01125,"51":0.00225,"53":0.00225,"55":0.00225,"56":0.00225,"57":0.00225,"58":0.00225,"63":0.01125,"64":0.01125,"65":0.0045,"67":0.0045,"68":0.01125,"69":0.009,"70":0.01125,"71":0.0045,"72":0.00675,"73":0.01349,"74":0.01574,"75":0.01574,"76":0.01574,"77":0.02024,"78":0.00225,"79":0.03823,"80":0.01574,"81":0.02699,"83":0.01349,"84":0.009,"85":0.01125,"86":0.01125,"87":0.02024,"88":0.01125,"89":0.009,"90":0.01574,"91":0.01349,"92":0.009,"93":0.03149,"94":0.009,"95":0.02249,"96":0.00675,"97":0.0045,"98":0.009,"99":0.01799,"100":0.00675,"101":0.00675,"102":0.02699,"103":0.1237,"104":0.02249,"105":0.03598,"106":0.02474,"107":0.02924,"108":0.04498,"109":1.9184,"110":0.01349,"111":0.02024,"112":0.02924,"113":0.04273,"114":0.09896,"115":0.08996,"116":0.53076,"117":4.42603,"118":4.44178,"119":0.02249,"120":0.009,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 34 35 36 40 42 48 52 54 59 60 61 62 66 121 122"},F:{"28":0.0045,"31":0.00225,"34":0.00675,"36":0.009,"42":0.00675,"46":0.00225,"50":0.00225,"62":0.009,"76":0.00225,"77":0.0045,"78":0.00225,"79":0.02474,"83":0.00225,"85":0.0045,"86":0.0045,"90":0.00225,"95":0.09446,"96":0.00225,"99":0.02024,"100":0.00675,"101":0.03149,"102":0.59149,"103":0.37333,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 32 33 35 37 38 39 40 41 43 44 45 47 48 49 51 52 53 54 55 56 57 58 60 63 64 65 66 67 68 69 70 71 72 73 74 75 80 81 82 84 87 88 89 91 92 93 94 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.01125,"13":0.0045,"14":0.00675,"15":0.0045,"16":0.00675,"17":0.0045,"18":0.05623,"84":0.01574,"85":0.00225,"88":0.00225,"89":0.01799,"90":0.02699,"92":0.07422,"100":0.01349,"101":0.00225,"103":0.00225,"104":0.00225,"105":0.00225,"107":0.00675,"108":0.00675,"109":0.03374,"110":0.00675,"111":0.009,"112":0.009,"113":0.00675,"114":0.03823,"115":0.03374,"116":0.07647,"117":0.95807,"118":0.7894,"119":0.009,_:"79 80 81 83 86 87 91 93 94 95 96 97 98 99 102 106"},E:{"9":0.00225,"11":0.00675,"12":0.00225,"13":0.00675,"14":0.01574,"15":0.00225,_:"0 4 5 6 7 8 10 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.009,"11.1":0.009,"12.1":0.0045,"13.1":0.05398,"14.1":0.02699,"15.1":0.0045,"15.2-15.3":0.00225,"15.4":0.00675,"15.5":0.00675,"15.6":0.08096,"16.0":0.0045,"16.1":0.01125,"16.2":0.03374,"16.3":0.02249,"16.4":0.01349,"16.5":0.04048,"16.6":0.08096,"17.0":0.10121,"17.1":0.009},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00122,"5.0-5.1":0.00122,"6.0-6.1":0.00366,"7.0-7.1":0.00853,"8.1-8.4":0.00122,"9.0-9.2":0.00853,"9.3":0.02926,"10.0-10.2":0.00122,"10.3":0.04267,"11.0-11.2":0.03902,"11.3-11.4":0.01341,"12.0-12.1":0.01097,"12.2-12.5":0.19386,"13.0-13.1":0.0061,"13.2":0.03292,"13.3":0.01219,"13.4-13.7":0.03902,"14.0-14.4":0.10729,"14.5-14.8":0.17313,"15.0-15.1":0.06828,"15.2-15.3":0.07803,"15.4":0.08657,"15.5":0.12314,"15.6-15.7":0.85224,"16.0":0.31456,"16.1":0.6023,"16.2":0.29383,"16.3":0.545,"16.4":0.11705,"16.5":0.31212,"16.6-16.7":5.84622,"17.0":2.08245,"17.1":0.12558,"17.2":0.00366},P:{"4":0.1847,"20":0.05131,"21":0.1334,"22":0.6875,"23":0.09235,"5.0-5.4":0.02052,"6.2-6.4":0.01026,"7.2-7.4":0.11287,_:"8.2 10.1","9.2":0.09235,"11.1-11.2":0.06157,"12.0":0.02052,"13.0":0.02052,"14.0":0.02052,"15.0":0.01026,"16.0":0.06157,"17.0":0.03078,"18.0":0.04105,"19.0":0.15392},I:{"0":0.09254,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00007,"4.4":0,"4.4.3-4.4.4":0.00028},A:{"8":0.00727,"9":0.00242,"10":0.00484,"11":0.01695,_:"6 7 5.5"},K:{"0":11.59112,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.0155,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.25578},Q:{"13.1":0.02325},O:{"0":0.90687},H:{"0":0.95},L:{"0":53.46878}}; diff --git a/node_modules/caniuse-lite/data/regions/GI.js b/node_modules/caniuse-lite/data/regions/GI.js new file mode 100644 index 00000000..eb595164 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GI.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.01063,"78":0.00532,"96":0.00532,"99":0.00532,"107":0.00532,"108":0.00532,"111":0.32959,"113":0.00532,"115":0.0319,"117":0.05848,"118":1.02599,"119":0.22327,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 97 98 100 101 102 103 104 105 106 109 110 112 114 116 120 121 122 3.5 3.6"},D:{"42":0.00532,"49":0.00532,"65":0.02658,"86":0.01063,"87":0.01595,"91":0.01063,"93":0.00532,"96":0.00532,"98":0.00532,"103":0.19669,"106":1.27584,"107":0.01595,"108":1.81276,"109":3.91789,"110":0.1329,"111":0.53692,"112":1.43,"113":0.50502,"114":0.07974,"115":0.05848,"116":1.64796,"117":14.66684,"118":10.80211,"119":0.01595,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 88 89 90 92 94 95 97 99 100 101 102 104 105 120 121 122"},F:{"95":0.00532,"102":1.28116,"103":0.03721,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"108":0.00532,"109":0.02126,"114":0.00532,"115":0.11164,"116":0.101,"117":3.26402,"118":3.31187,"119":0.00532,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 110 111 112 113"},E:{"13":0.02126,"14":0.10632,"15":0.00532,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.00532,"13.1":0.08506,"14.1":0.38275,"15.1":0.01063,"15.2-15.3":0.03721,"15.4":0.04253,"15.5":0.04253,"15.6":0.30833,"16.0":0.04784,"16.1":0.12758,"16.2":0.20201,"16.3":0.12227,"16.4":0.07974,"16.5":0.41465,"16.6":2.20614,"17.0":0.43591,"17.1":0.03721},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00201,"5.0-5.1":0.00201,"6.0-6.1":0.00604,"7.0-7.1":0.01409,"8.1-8.4":0.00201,"9.0-9.2":0.01409,"9.3":0.04831,"10.0-10.2":0.00201,"10.3":0.07045,"11.0-11.2":0.06441,"11.3-11.4":0.02214,"12.0-12.1":0.01811,"12.2-12.5":0.32002,"13.0-13.1":0.01006,"13.2":0.05434,"13.3":0.02013,"13.4-13.7":0.06441,"14.0-14.4":0.17712,"14.5-14.8":0.28581,"15.0-15.1":0.11271,"15.2-15.3":0.12881,"15.4":0.1429,"15.5":0.20328,"15.6-15.7":1.40689,"16.0":0.51928,"16.1":0.99428,"16.2":0.48506,"16.3":0.89968,"16.4":0.19322,"16.5":0.51525,"16.6-16.7":9.65097,"17.0":3.43772,"17.1":0.20731,"17.2":0.00604},P:{"4":0.10437,"20":0.02087,"21":0.01044,"22":2.84931,"23":0.3653,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 15.0 16.0 17.0","14.0":0.05219,"18.0":0.02087,"19.0":0.05219},I:{"0":0.00466,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.00001},A:{"8":0.01063,"11":0.56881,_:"6 7 9 10 5.5"},K:{"0":0.09836,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.1452},Q:{"13.1":0.00468},O:{"0":0.03747},H:{"0":0},L:{"0":23.30216}}; diff --git a/node_modules/caniuse-lite/data/regions/GL.js b/node_modules/caniuse-lite/data/regions/GL.js new file mode 100644 index 00000000..b0e90eaf --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GL.js @@ -0,0 +1 @@ +module.exports={C:{"2":0.01432,"3":0.07158,"4":0.02863,"5":0.01909,"6":0.00954,"7":0.01909,"8":0.00477,"9":0.01909,"10":0.00477,"12":0.00477,"13":0.01432,"14":0.00954,"15":0.01909,"16":0.00954,"17":0.00954,"18":0.00477,"19":0.00954,"20":0.01432,"21":0.00954,"22":0.00477,"23":0.00477,"24":0.01432,"25":0.01909,"26":0.00477,"28":0.01432,"29":0.00954,"30":0.00477,"31":0.00954,"32":0.01432,"33":0.01909,"34":0.02386,"35":0.0334,"36":0.0334,"37":0.0334,"38":0.05249,"39":0.06204,"40":0.09544,"41":0.02386,"42":0.01909,"43":0.01909,"46":0.00477,"48":0.01432,"52":0.08112,"78":0.06204,"98":0.00477,"102":0.00477,"108":0.07158,"110":0.00477,"113":0.00954,"115":0.02863,"116":0.15748,"117":0.05249,"118":1.61771,"119":0.22428,_:"11 27 44 45 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 99 100 101 103 104 105 106 107 109 111 112 114 120 121 122","3.5":0.0334,"3.6":0.05249},D:{"4":0.00954,"6":0.01432,"7":0.00477,"8":0.00954,"9":0.00477,"10":0.00954,"11":0.00954,"12":0.00477,"13":0.00477,"14":0.01432,"15":0.00477,"16":0.01432,"17":0.00477,"18":0.00477,"19":0.00954,"20":0.00477,"21":0.04295,"22":0.00954,"23":0.00477,"24":0.00954,"25":0.00954,"27":0.01432,"28":0.00954,"29":0.00954,"30":0.00477,"31":0.02863,"32":0.01432,"33":0.01432,"34":0.01432,"35":0.02386,"36":0.02386,"37":0.05249,"38":0.06204,"39":0.07635,"40":0.08112,"41":0.06204,"42":0.07635,"43":0.12407,"44":0.25292,"45":0.14316,"46":0.12884,"47":0.10498,"51":0.25292,"70":0.08112,"73":0.00477,"78":0.00477,"79":0.00954,"80":0.01432,"81":0.00954,"83":0.01432,"87":0.00477,"89":0.00954,"90":0.00954,"94":0.0334,"95":0.00954,"99":0.01432,"102":0.00477,"103":0.02386,"107":0.42471,"109":0.88759,"110":0.00477,"111":0.01432,"112":0.31495,"113":0.02386,"114":0.10021,"115":0.09067,"116":6.77147,"117":7.27253,"118":8.8282,"119":0.00477,_:"5 26 48 49 50 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 74 75 76 77 84 85 86 88 91 92 93 96 97 98 100 101 104 105 106 108 120 121 122"},F:{"11":0.00477,"12":0.00477,"19":0.00477,"20":0.00954,"23":0.00477,"24":0.00477,"26":0.01432,"28":0.00477,"29":0.00954,"30":0.01432,"31":0.05726,"32":0.01432,"33":0.00477,"36":0.01909,"91":0.00477,"95":0.00954,"101":0.02386,"102":0.52492,"103":0.0334,_:"9 15 16 17 18 21 22 25 27 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 96 97 98 99 100 10.0-10.1 10.5 10.6 11.6","9.5-9.6":0.00954,"11.1":0.00954,"11.5":0.00954,"12.1":0.04295},B:{"12":0.03818,"15":0.00477,"17":0.00477,"18":0.00477,"97":0.00477,"100":0.00477,"105":0.00477,"107":0.00477,"108":0.00477,"109":0.03818,"110":0.00954,"111":0.01909,"113":0.00954,"114":0.01909,"115":0.01432,"116":0.05249,"117":2.67709,"118":2.16649,"119":0.00954,_:"13 14 16 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 98 99 101 102 103 104 106 112"},E:{"4":0.01432,"5":0.00954,"6":0.00477,"7":0.01909,"8":0.03818,"9":0.46766,"13":0.24337,"14":0.11453,"15":0.00477,_:"0 10 11 12 9.1 10.1 11.1 17.2","3.1":0.00477,"3.2":0.00477,"5.1":0.02386,"6.1":0.00954,"7.1":0.00477,"12.1":0.01432,"13.1":0.04772,"14.1":0.14793,"15.1":0.07158,"15.2-15.3":0.09544,"15.4":0.01432,"15.5":0.01909,"15.6":0.31495,"16.0":0.00954,"16.1":0.07635,"16.2":0.07158,"16.3":0.19565,"16.4":0.06681,"16.5":0.25292,"16.6":2.87274,"17.0":0.73489,"17.1":0.05249},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00186,"5.0-5.1":0.00186,"6.0-6.1":0.00558,"7.0-7.1":0.01301,"8.1-8.4":0.00186,"9.0-9.2":0.01301,"9.3":0.04462,"10.0-10.2":0.00186,"10.3":0.06507,"11.0-11.2":0.05949,"11.3-11.4":0.02045,"12.0-12.1":0.01673,"12.2-12.5":0.29559,"13.0-13.1":0.0093,"13.2":0.0502,"13.3":0.01859,"13.4-13.7":0.05949,"14.0-14.4":0.1636,"14.5-14.8":0.26399,"15.0-15.1":0.10411,"15.2-15.3":0.11898,"15.4":0.13199,"15.5":0.18777,"15.6-15.7":1.29949,"16.0":0.47964,"16.1":0.91838,"16.2":0.44804,"16.3":0.83101,"16.4":0.17847,"16.5":0.47592,"16.6-16.7":8.91427,"17.0":3.1753,"17.1":0.19148,"17.2":0.00558},P:{"4":0.2502,"20":0.01088,"21":0.04351,"22":2.83921,"23":0.88114,_:"5.0-5.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0","6.2-6.4":0.18493,"17.0":0.01088,"18.0":0.3481,"19.0":0.01088},I:{"0":2.325,"3":0,"4":0.00047,"2.1":0,"2.2":0.0007,"2.3":0,"4.1":0.00047,"4.2-4.3":0.00164,"4.4":0,"4.4.3-4.4.4":0.00701},A:{"6":0.08145,"7":0.11978,"8":1.08279,"9":0.23955,"10":0.20123,"11":0.59889,"5.5":0.00479},K:{"0":0.32028,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.18821,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.61168},Q:{"13.1":0.00523},O:{"0":0.39733},H:{"0":0.03},L:{"0":24.8498}}; diff --git a/node_modules/caniuse-lite/data/regions/GM.js b/node_modules/caniuse-lite/data/regions/GM.js new file mode 100644 index 00000000..ddca672d --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GM.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00123,"40":0.00369,"41":0.00123,"43":0.00246,"45":0.00123,"47":0.00985,"49":0.00123,"50":0.00123,"62":0.00123,"72":0.00246,"75":0.00123,"77":0.00123,"94":0.00123,"102":0.00246,"110":0.00123,"114":0.00123,"115":0.29298,"116":0.00492,"117":0.00739,"118":0.43824,"119":0.09356,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 42 44 46 48 51 52 53 54 55 56 57 58 59 60 61 63 64 65 66 67 68 69 70 71 73 74 76 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 95 96 97 98 99 100 101 103 104 105 106 107 108 109 111 112 113 120 121 122 3.5 3.6"},D:{"11":0.00739,"31":0.00369,"32":0.00123,"34":0.00246,"36":0.04185,"38":0.00123,"39":0.00123,"40":0.00246,"41":0.00246,"43":0.00123,"45":0.00123,"46":0.00246,"47":0.00369,"48":0.00246,"49":0.00739,"50":0.00123,"51":0.00369,"52":0.00123,"53":0.00246,"54":0.00985,"55":0.00246,"56":0.00492,"57":0.00492,"58":0.00492,"59":0.016,"60":0.00369,"61":0.00246,"62":0.00246,"63":0.00246,"64":0.00739,"65":0.05663,"66":0.00246,"67":0.00246,"68":0.00123,"69":0.04924,"70":0.00616,"71":0.00246,"72":0.00369,"73":0.00123,"74":0.00492,"75":0.00369,"76":0.02708,"77":0.00616,"78":0.00616,"79":0.02831,"80":0.01354,"81":0.00492,"83":0.00739,"84":0.00985,"85":0.04924,"86":0.00492,"87":0.00492,"88":0.00246,"89":0.01108,"90":0.00616,"92":0.00246,"93":0.06401,"95":0.00492,"99":0.00246,"103":0.04432,"104":0.00123,"105":0.02093,"106":0.03693,"107":0.01354,"108":0.00246,"109":1.09928,"110":0.00985,"111":0.00369,"112":0.00123,"113":0.01108,"114":0.01723,"115":0.05663,"116":0.1428,"117":1.54737,"118":1.64339,"119":0.02954,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 33 35 37 42 44 91 94 96 97 98 100 101 102 120 121 122"},F:{"54":0.00123,"77":0.00123,"79":0.00123,"81":0.00123,"93":0.016,"95":0.01477,"100":0.00369,"102":0.11202,"103":0.04062,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 80 82 83 84 85 86 87 88 89 90 91 92 94 96 97 98 99 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00123,"13":0.00123,"15":0.00369,"16":0.00123,"17":0.00739,"18":0.07263,"84":0.00123,"85":0.00123,"88":0.00123,"90":0.00123,"92":0.00616,"104":0.00123,"109":0.00492,"110":0.00369,"111":0.00246,"112":0.00862,"113":0.00246,"114":0.00985,"115":0.016,"116":0.03816,"117":0.38407,"118":0.48378,"119":0.00246,_:"14 79 80 81 83 86 87 89 91 93 94 95 96 97 98 99 100 101 102 103 105 106 107 108"},E:{"14":0.00123,"15":0.00492,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 11.1 15.2-15.3 15.4 15.5 16.0 17.2","5.1":0.00369,"12.1":0.00123,"13.1":0.00616,"14.1":0.00369,"15.1":0.00123,"15.6":0.04801,"16.1":0.14526,"16.2":0.00123,"16.3":0.03939,"16.4":0.00862,"16.5":0.00862,"16.6":0.13787,"17.0":0.06524,"17.1":0.00246},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0022,"5.0-5.1":0.0022,"6.0-6.1":0.00661,"7.0-7.1":0.01542,"8.1-8.4":0.0022,"9.0-9.2":0.01542,"9.3":0.05287,"10.0-10.2":0.0022,"10.3":0.0771,"11.0-11.2":0.07049,"11.3-11.4":0.02423,"12.0-12.1":0.01982,"12.2-12.5":0.35024,"13.0-13.1":0.01101,"13.2":0.05947,"13.3":0.02203,"13.4-13.7":0.07049,"14.0-14.4":0.19384,"14.5-14.8":0.31279,"15.0-15.1":0.12336,"15.2-15.3":0.14098,"15.4":0.1564,"15.5":0.22248,"15.6-15.7":1.53974,"16.0":0.56832,"16.1":1.08817,"16.2":0.53087,"16.3":0.98464,"16.4":0.21147,"16.5":0.56391,"16.6-16.7":10.5623,"17.0":3.76234,"17.1":0.22689,"17.2":0.00661},P:{"4":0.38508,"20":0.12489,"21":0.14571,"22":0.88465,"23":0.06245,"5.0-5.4":0.05204,"6.2-6.4":0.01041,"7.2-7.4":0.11448,_:"8.2 10.1 13.0 15.0 18.0","9.2":0.01041,"11.1-11.2":0.02082,"12.0":0.01041,"14.0":0.03122,"16.0":0.07285,"17.0":0.01041,"19.0":0.12489},I:{"0":0.0349,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00011},A:{"11":0.00739,_:"6 7 8 9 10 5.5"},K:{"0":0.64398,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00877,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.07015},Q:{_:"13.1"},O:{"0":0.15784},H:{"0":0.04},L:{"0":66.98487}}; diff --git a/node_modules/caniuse-lite/data/regions/GN.js b/node_modules/caniuse-lite/data/regions/GN.js new file mode 100644 index 00000000..445a05f1 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GN.js @@ -0,0 +1 @@ +module.exports={C:{"35":0.00098,"37":0.00098,"43":0.00098,"45":0.00098,"66":0.00098,"70":0.00098,"83":0.00098,"107":0.00489,"114":0.00196,"115":0.01174,"117":0.00489,"118":0.17897,"119":0.0313,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 38 39 40 41 42 44 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 71 72 73 74 75 76 77 78 79 80 81 82 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 108 109 110 111 112 113 116 120 121 122 3.5 3.6"},D:{"11":0.00098,"19":0.00098,"33":0.00196,"37":0.00098,"41":0.00098,"43":0.00293,"54":0.00098,"56":0.00489,"59":0.00098,"62":0.00098,"64":0.00196,"69":0.00098,"70":0.00098,"71":0.00098,"72":0.00587,"73":0.00098,"74":0.00098,"78":0.00196,"79":0.00391,"81":0.00489,"83":0.00098,"86":0.00098,"87":0.0176,"88":0.00196,"90":0.00098,"91":0.00489,"92":0.00098,"93":0.01174,"94":0.00391,"99":0.00978,"100":0.00196,"102":0.00196,"103":0.0577,"105":0.11051,"106":0.01369,"107":0.00098,"108":0.00098,"109":0.09584,"110":0.00587,"111":0.00196,"112":0.00489,"113":0.00196,"114":0.00587,"115":0.01565,"116":0.05183,"117":0.52225,"118":0.6846,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 38 39 40 42 44 45 46 47 48 49 50 51 52 53 55 57 58 60 61 63 65 66 67 68 75 76 77 80 84 85 89 95 96 97 98 101 104 119 120 121 122"},F:{"37":0.00098,"40":0.00098,"45":0.00098,"58":0.00098,"64":0.00098,"79":0.00391,"95":0.00391,"99":0.00098,"100":0.00098,"101":0.00196,"102":0.0401,"103":0.03423,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 41 42 43 44 46 47 48 49 50 51 52 53 54 55 56 57 60 62 63 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.01076,"13":0.00098,"14":0.00098,"15":0.00489,"17":0.00293,"18":0.0088,"84":0.00196,"89":0.00196,"90":0.00196,"92":0.0088,"95":0.00098,"104":0.00196,"107":0.00098,"109":0.00098,"112":0.00685,"113":0.00098,"114":0.00293,"115":0.0176,"116":0.01565,"117":0.20342,"118":0.28069,"119":0.00098,_:"16 79 80 81 83 85 86 87 88 91 93 94 96 97 98 99 100 101 102 103 105 106 108 110 111"},E:{"12":0.00098,_:"0 4 5 6 7 8 9 10 11 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 12.1 15.1 15.2-15.3 15.5 16.0 16.1 16.2 17.2","11.1":0.00098,"13.1":0.00098,"14.1":0.00489,"15.4":0.00098,"15.6":0.00293,"16.3":0.00293,"16.4":0.00293,"16.5":0.00196,"16.6":0.01369,"17.0":0.00782,"17.1":0.00098},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00142,"5.0-5.1":0.00142,"6.0-6.1":0.00427,"7.0-7.1":0.00996,"8.1-8.4":0.00142,"9.0-9.2":0.00996,"9.3":0.03416,"10.0-10.2":0.00142,"10.3":0.04982,"11.0-11.2":0.04555,"11.3-11.4":0.01566,"12.0-12.1":0.01281,"12.2-12.5":0.22634,"13.0-13.1":0.00712,"13.2":0.03843,"13.3":0.01424,"13.4-13.7":0.04555,"14.0-14.4":0.12527,"14.5-14.8":0.20214,"15.0-15.1":0.07972,"15.2-15.3":0.0911,"15.4":0.10107,"15.5":0.14377,"15.6-15.7":0.99504,"16.0":0.36727,"16.1":0.70322,"16.2":0.34307,"16.3":0.63631,"16.4":0.13666,"16.5":0.36442,"16.6-16.7":6.82575,"17.0":2.43136,"17.1":0.14662,"17.2":0.00427},P:{"4":0.19512,"20":0.1027,"21":0.16431,"22":0.82157,"23":0.04108,"5.0-5.4":0.02054,"6.2-6.4":0.04108,"7.2-7.4":0.37997,_:"8.2 12.0","9.2":0.07189,"10.1":0.01027,"11.1-11.2":0.04108,"13.0":0.05135,"14.0":0.03081,"15.0":0.06162,"16.0":0.32863,"17.0":0.01027,"18.0":0.09243,"19.0":0.50321},I:{"0":0.0359,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00011},A:{"11":0.02152,_:"6 7 8 9 10 5.5"},K:{"0":0.77644,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.25259,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.02706},Q:{"13.1":0.02706},O:{"0":0.04511},H:{"0":1.56},L:{"0":77.2053}}; diff --git a/node_modules/caniuse-lite/data/regions/GP.js b/node_modules/caniuse-lite/data/regions/GP.js new file mode 100644 index 00000000..9eb0c4d5 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GP.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.00433,"78":0.06926,"91":0.01732,"94":0.01299,"96":0.00433,"98":0.00433,"100":0.00433,"101":0.00433,"102":0.00866,"103":0.01299,"105":0.39394,"106":0.00866,"109":0.00866,"110":0.00433,"111":0.00433,"114":0.03896,"115":0.78788,"116":0.03896,"117":0.12121,"118":2.17316,"119":0.45455,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 95 97 99 104 107 108 112 113 120 121 122 3.5 3.6"},D:{"38":0.01732,"49":0.01299,"56":0.00433,"61":0.00433,"63":0.00433,"72":0.00433,"75":0.00866,"79":0.01732,"80":0.00433,"83":0.00866,"84":0.00866,"85":0.01299,"86":0.00866,"87":0.03463,"88":0.00433,"90":0.00433,"91":0.02165,"92":0.00433,"94":0.00433,"95":0.00433,"96":0.00866,"97":0.03896,"98":0.00433,"99":0.00866,"100":0.00866,"101":0.00433,"102":0.0303,"103":0.04329,"104":0.00433,"105":0.04762,"106":0.33766,"107":0.2684,"108":0.00866,"109":1.30303,"110":0.34199,"111":0.02165,"112":0.19913,"113":0.04329,"114":0.1342,"115":0.05195,"116":0.95671,"117":9.42423,"118":10.01731,"119":0.02597,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 62 64 65 66 67 68 69 70 71 73 74 76 77 78 81 89 93 120 121 122"},F:{"36":0.00433,"46":0.04762,"77":0.00433,"78":0.00433,"95":0.00866,"101":0.00433,"102":1.50649,"103":0.38095,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"17":0.00433,"18":0.00433,"90":0.00433,"92":0.00433,"96":0.00433,"97":0.14719,"98":0.00433,"100":0.00433,"105":0.00433,"107":0.01299,"108":0.00433,"109":0.07792,"110":0.00433,"111":0.01732,"112":0.00433,"113":0.00866,"114":0.05195,"115":0.18615,"116":0.16017,"117":3.20779,"118":3.32034,"119":0.00433,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 89 91 93 94 95 99 101 102 103 104 106"},E:{"13":0.01732,"14":0.09957,"15":0.03463,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.01732,"13.1":0.38095,"14.1":0.329,"15.1":0.01299,"15.2-15.3":0.02597,"15.4":0.17749,"15.5":0.06061,"15.6":0.5974,"16.0":0.05195,"16.1":0.15584,"16.2":0.07359,"16.3":0.1342,"16.4":0.11688,"16.5":0.329,"16.6":0.8658,"17.0":1.55844,"17.1":0.04329},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00171,"5.0-5.1":0.00171,"6.0-6.1":0.00512,"7.0-7.1":0.01195,"8.1-8.4":0.00171,"9.0-9.2":0.01195,"9.3":0.04098,"10.0-10.2":0.00171,"10.3":0.05976,"11.0-11.2":0.05464,"11.3-11.4":0.01878,"12.0-12.1":0.01537,"12.2-12.5":0.2715,"13.0-13.1":0.00854,"13.2":0.0461,"13.3":0.01708,"13.4-13.7":0.05464,"14.0-14.4":0.15026,"14.5-14.8":0.24247,"15.0-15.1":0.09562,"15.2-15.3":0.10928,"15.4":0.12124,"15.5":0.17246,"15.6-15.7":1.19357,"16.0":0.44054,"16.1":0.84352,"16.2":0.41152,"16.3":0.76327,"16.4":0.16392,"16.5":0.43713,"16.6-16.7":8.18765,"17.0":2.91648,"17.1":0.17588,"17.2":0.00512},P:{"4":0.04196,"20":0.23076,"21":0.11538,"22":3.70269,"23":0.90207,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0","7.2-7.4":0.0944,"11.1-11.2":0.03147,"13.0":0.01049,"14.0":0.20978,"15.0":0.04196,"16.0":0.05245,"17.0":0.01049,"18.0":0.06294,"19.0":0.07342},I:{"0":0.08463,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00026},A:{"8":0.00433,"9":0.00433,"11":0.05628,_:"6 7 10 5.5"},K:{"0":0.14745,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.29489},Q:{_:"13.1"},O:{"0":0.00567},H:{"0":0},L:{"0":34.27427}}; diff --git a/node_modules/caniuse-lite/data/regions/GQ.js b/node_modules/caniuse-lite/data/regions/GQ.js new file mode 100644 index 00000000..7ccc1fc2 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GQ.js @@ -0,0 +1 @@ +module.exports={C:{"56":0.01298,"62":0.00649,"64":0.00649,"68":0.00649,"72":0.00649,"93":0.03246,"95":0.00649,"97":0.00649,"100":0.05194,"102":0.00649,"112":0.01298,"114":0.03895,"115":0.22073,"117":0.03246,"118":0.35706,"119":0.0844,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 59 60 61 63 65 66 67 69 70 71 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 94 96 98 99 101 103 104 105 106 107 108 109 110 111 113 116 120 121 122 3.5 3.6"},D:{"52":0.00649,"60":0.01298,"64":0.00649,"65":0.00649,"68":0.00649,"69":0.00649,"72":0.01948,"79":0.04544,"80":0.01948,"81":0.00649,"86":0.04544,"87":0.00649,"88":0.00649,"89":0.00649,"90":0.00649,"92":0.01298,"102":0.00649,"103":0.02597,"105":0.00649,"106":0.00649,"107":0.00649,"108":0.00649,"109":3.34987,"111":0.01298,"113":0.03895,"114":0.04544,"115":0.26617,"116":0.7271,"117":7.13471,"118":6.62184,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 66 67 70 71 73 74 75 76 77 78 83 84 85 91 93 94 95 96 97 98 99 100 101 104 110 112 119 120 121 122"},F:{"80":0.00649,"102":0.07141,"103":0.01298,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00649,"16":0.00649,"18":0.13633,"89":0.05194,"92":0.02597,"104":0.05194,"109":0.21424,"110":0.04544,"112":0.00649,"113":1.75284,"114":0.75956,"115":3.38882,"116":1.07767,"117":15.821,"118":20.14468,_:"13 14 15 17 79 80 81 83 84 85 86 87 88 90 91 93 94 95 96 97 98 99 100 101 102 103 105 106 107 108 111 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 15.1 15.4 15.5 16.0 16.1 16.3 16.4 16.5 17.1 17.2","5.1":0.00649,"13.1":0.01298,"14.1":0.01298,"15.2-15.3":0.00649,"15.6":0.01298,"16.2":0.00649,"16.6":0.01948,"17.0":0.01298},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00073,"5.0-5.1":0.00073,"6.0-6.1":0.00218,"7.0-7.1":0.00509,"8.1-8.4":0.00073,"9.0-9.2":0.00509,"9.3":0.01746,"10.0-10.2":0.00073,"10.3":0.02546,"11.0-11.2":0.02328,"11.3-11.4":0.008,"12.0-12.1":0.00655,"12.2-12.5":0.11568,"13.0-13.1":0.00364,"13.2":0.01964,"13.3":0.00728,"13.4-13.7":0.02328,"14.0-14.4":0.06403,"14.5-14.8":0.10331,"15.0-15.1":0.04074,"15.2-15.3":0.04656,"15.4":0.05166,"15.5":0.07348,"15.6-15.7":0.50856,"16.0":0.18771,"16.1":0.35941,"16.2":0.17534,"16.3":0.32522,"16.4":0.06985,"16.5":0.18626,"16.6-16.7":3.48865,"17.0":1.24267,"17.1":0.07494,"17.2":0.00218},P:{"4":0.15511,"20":0.01034,"21":0.04136,"22":0.8583,"23":0.04136,_:"5.0-5.4 6.2-6.4 8.2 10.1 12.0 13.0 14.0 15.0 16.0","7.2-7.4":0.01034,"9.2":0.03102,"11.1-11.2":0.01034,"17.0":0.01034,"18.0":0.01034,"19.0":0.01034},I:{"0":0.01047,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00003},A:{"11":0.05194,_:"6 7 8 9 10 5.5"},K:{"0":0.17189,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.41044,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.01052},Q:{"13.1":0.00702},O:{"0":0.0877},H:{"0":0},L:{"0":27.60942}}; diff --git a/node_modules/caniuse-lite/data/regions/GR.js b/node_modules/caniuse-lite/data/regions/GR.js new file mode 100644 index 00000000..5dc0d4e1 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GR.js @@ -0,0 +1 @@ +module.exports={C:{"45":0.01038,"47":0.00346,"48":0.00692,"52":0.23521,"56":0.01384,"68":0.03113,"70":0.00346,"78":0.0173,"83":0.01038,"86":0.00692,"87":0.00346,"88":0.00346,"91":0.00346,"99":0.00346,"102":0.01038,"103":0.00346,"105":0.09685,"106":0.00346,"107":0.00692,"108":0.00692,"109":0.00346,"110":0.00346,"111":0.01038,"112":0.03459,"113":0.02075,"114":0.00346,"115":1.18298,"116":0.01038,"117":0.06918,"118":1.75371,"119":0.35628,"120":0.00346,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 69 71 72 73 74 75 76 77 79 80 81 82 84 85 89 90 92 93 94 95 96 97 98 100 101 104 121 122 3.5 3.6"},D:{"34":0.09339,"38":0.12798,"39":0.06572,"47":0.09685,"49":0.10723,"57":0.00346,"58":0.02075,"64":0.00692,"65":0.00346,"66":0.03805,"70":0.00346,"73":0.10377,"75":0.00346,"76":0.00346,"78":0.00346,"79":0.13836,"80":0.00346,"81":0.01038,"83":0.00346,"84":0.00346,"85":0.00692,"86":0.01038,"87":0.01038,"88":0.03113,"89":0.12452,"90":0.00346,"91":0.02075,"92":0.00346,"93":0.02075,"94":0.00346,"95":0.01038,"96":0.00346,"97":0.00346,"98":0.00346,"99":0.01384,"100":0.00692,"101":0.01038,"102":0.07264,"103":0.03113,"104":0.00692,"105":0.02421,"106":0.02767,"107":0.01038,"108":0.0173,"109":4.46903,"110":0.01038,"111":0.01038,"112":0.02075,"113":0.0173,"114":0.05534,"115":0.03459,"116":0.47734,"117":7.82772,"118":8.39153,"119":0.01038,"120":0.00346,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 40 41 42 43 44 45 46 48 50 51 52 53 54 55 56 59 60 61 62 63 67 68 69 71 72 74 77 121 122"},F:{"25":0.01384,"28":0.00346,"31":0.32515,"40":0.30439,"46":0.22138,"77":0.00346,"85":0.00346,"90":0.00346,"95":0.04843,"101":0.00346,"102":0.59841,"103":0.18679,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 26 27 29 30 32 33 34 35 36 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 79 80 81 82 83 84 86 87 88 89 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"15":0.14182,"17":0.00346,"108":0.00346,"109":0.03459,"112":0.00346,"113":0.00346,"114":0.00692,"115":0.00346,"116":0.07264,"117":0.93393,"118":0.90626,"119":0.00346,_:"12 13 14 16 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 110 111"},E:{"8":0.00346,"13":0.00346,"14":0.01384,"15":0.00346,_:"0 4 5 6 7 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 11.1 17.2","9.1":0.00346,"12.1":0.00692,"13.1":0.02421,"14.1":0.03459,"15.1":0.00346,"15.2-15.3":0.01384,"15.4":0.01038,"15.5":0.01384,"15.6":0.08648,"16.0":0.00692,"16.1":0.0173,"16.2":0.02421,"16.3":0.04843,"16.4":0.02075,"16.5":0.03805,"16.6":0.35282,"17.0":0.15566,"17.1":0.01038},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00058,"5.0-5.1":0.00058,"6.0-6.1":0.00174,"7.0-7.1":0.00405,"8.1-8.4":0.00058,"9.0-9.2":0.00405,"9.3":0.01389,"10.0-10.2":0.00058,"10.3":0.02026,"11.0-11.2":0.01852,"11.3-11.4":0.00637,"12.0-12.1":0.00521,"12.2-12.5":0.09204,"13.0-13.1":0.00289,"13.2":0.01563,"13.3":0.00579,"13.4-13.7":0.01852,"14.0-14.4":0.05094,"14.5-14.8":0.0822,"15.0-15.1":0.03242,"15.2-15.3":0.03705,"15.4":0.0411,"15.5":0.05847,"15.6-15.7":0.40464,"16.0":0.14935,"16.1":0.28597,"16.2":0.13951,"16.3":0.25876,"16.4":0.05557,"16.5":0.14819,"16.6-16.7":2.77572,"17.0":0.98872,"17.1":0.05962,"17.2":0.00174},P:{"4":0.10502,"20":0.05251,"21":0.14703,"22":1.57531,"23":0.40958,"5.0-5.4":0.0105,"6.2-6.4":0.021,"7.2-7.4":0.021,"8.2":0.021,"9.2":0.09452,_:"10.1","11.1-11.2":0.021,"12.0":0.0105,"13.0":0.0105,"14.0":0.021,"15.0":0.0105,"16.0":0.021,"17.0":0.021,"18.0":0.021,"19.0":0.04201},I:{"0":0.63775,"3":0,"4":0.00013,"2.1":0,"2.2":0.00019,"2.3":0,"4.1":0.00013,"4.2-4.3":0.00045,"4.4":0,"4.4.3-4.4.4":0.00192},A:{"8":0.00346,"11":0.02767,_:"6 7 9 10 5.5"},K:{"0":0.19931,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.22894},Q:{_:"13.1"},O:{"0":0.03271},H:{"0":0.01},L:{"0":57.73479}}; diff --git a/node_modules/caniuse-lite/data/regions/GT.js b/node_modules/caniuse-lite/data/regions/GT.js new file mode 100644 index 00000000..9c288747 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GT.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.00353,"73":0.19046,"78":0.00353,"88":0.00353,"101":0.00353,"102":0.01058,"112":0.00353,"113":0.01058,"114":0.00705,"115":0.14813,"116":0.00705,"117":0.0388,"118":0.94171,"119":0.20104,"120":0.00353,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 95 96 97 98 99 100 103 104 105 106 107 108 109 110 111 121 122 3.5 3.6"},D:{"14":0.00353,"38":0.00353,"49":0.00353,"67":0.01411,"69":0.00353,"73":0.00353,"74":0.00353,"75":0.01058,"76":0.01058,"78":0.00353,"79":0.05643,"80":0.00353,"81":0.00353,"83":0.00353,"84":0.00705,"86":0.00353,"87":0.02116,"88":0.01058,"91":0.08465,"92":0.00353,"93":0.01058,"94":0.00353,"95":0.00353,"96":0.00353,"97":0.01411,"99":0.01411,"100":0.01058,"101":0.00353,"102":0.00353,"103":0.07759,"104":0.00353,"105":0.02822,"106":0.01411,"107":0.01411,"108":0.01411,"109":1.56246,"110":0.01058,"111":0.04232,"112":0.03527,"113":0.03174,"114":0.11992,"115":0.08818,"116":0.65955,"117":9.88265,"118":10.30237,"119":0.01058,_:"4 5 6 7 8 9 10 11 12 13 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 70 71 72 77 85 89 90 98 120 121 122"},F:{"28":0.00353,"73":0.00353,"94":0.00353,"95":0.02469,"99":0.00353,"100":0.00353,"101":0.00705,"102":1.82346,"103":0.261,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00353,"90":0.00353,"92":0.01411,"98":0.00705,"100":0.00705,"106":0.00353,"107":0.00353,"109":0.0388,"110":0.00353,"111":0.01764,"112":0.02469,"113":0.0388,"114":0.01411,"115":0.02116,"116":0.04585,"117":1.55541,"118":1.57304,"119":0.01411,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 91 93 94 95 96 97 99 101 102 103 104 105 108"},E:{"14":0.01058,"15":0.00353,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.01058,"11.1":0.00353,"12.1":0.00353,"13.1":0.01764,"14.1":0.07407,"15.1":0.00353,"15.2-15.3":0.01058,"15.4":0.01058,"15.5":0.01764,"15.6":0.15872,"16.0":0.01058,"16.1":0.04232,"16.2":0.04585,"16.3":0.06701,"16.4":0.04585,"16.5":0.1305,"16.6":0.44793,"17.0":0.57137,"17.1":0.03527},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00107,"5.0-5.1":0.00107,"6.0-6.1":0.00321,"7.0-7.1":0.00749,"8.1-8.4":0.00107,"9.0-9.2":0.00749,"9.3":0.0257,"10.0-10.2":0.00107,"10.3":0.03747,"11.0-11.2":0.03426,"11.3-11.4":0.01178,"12.0-12.1":0.00964,"12.2-12.5":0.17023,"13.0-13.1":0.00535,"13.2":0.02891,"13.3":0.01071,"13.4-13.7":0.03426,"14.0-14.4":0.09422,"14.5-14.8":0.15203,"15.0-15.1":0.05996,"15.2-15.3":0.06852,"15.4":0.07602,"15.5":0.10813,"15.6-15.7":0.74837,"16.0":0.27622,"16.1":0.52889,"16.2":0.25802,"16.3":0.47857,"16.4":0.10278,"16.5":0.27408,"16.6-16.7":5.13369,"17.0":1.82864,"17.1":0.11028,"17.2":0.00321},P:{"4":0.06178,"20":0.07208,"21":0.11327,"22":2.17268,"23":0.52515,"5.0-5.4":0.0103,_:"6.2-6.4 8.2 9.2 10.1 12.0","7.2-7.4":0.09267,"11.1-11.2":0.03089,"13.0":0.02059,"14.0":0.03089,"15.0":0.0103,"16.0":0.05149,"17.0":0.04119,"18.0":0.03089,"19.0":0.08238},I:{"0":0.09016,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00027},A:{"11":0.01764,_:"6 7 8 9 10 5.5"},K:{"0":0.34485,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.47253},Q:{_:"13.1"},O:{"0":0.06473},H:{"0":0.05},L:{"0":52.41221}}; diff --git a/node_modules/caniuse-lite/data/regions/GU.js b/node_modules/caniuse-lite/data/regions/GU.js new file mode 100644 index 00000000..2fc62689 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GU.js @@ -0,0 +1 @@ +module.exports={C:{"69":0.00436,"78":0.02182,"83":0.01309,"87":0.048,"107":0.00873,"109":0.00436,"113":0.02618,"115":0.25311,"116":0.00436,"117":0.02618,"118":0.9208,"119":0.18765,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 108 110 111 112 114 120 121 122 3.5 3.6"},D:{"49":0.00873,"51":0.00436,"65":0.42767,"75":0.00436,"76":0.00436,"79":0.02182,"84":0.00436,"85":0.00873,"86":0.00873,"87":0.01746,"91":0.00873,"92":0.02618,"93":0.00873,"98":0.00873,"99":0.42767,"100":0.00873,"102":0.00436,"103":0.37967,"105":0.01746,"106":0.00436,"108":0.00873,"109":0.78552,"110":0.00436,"111":0.02618,"112":0.048,"113":0.10474,"114":0.09164,"115":0.13092,"116":1.66268,"117":11.1282,"118":10.59143,"119":0.06546,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 72 73 74 77 78 80 81 83 88 89 90 94 95 96 97 101 104 107 120 121 122"},F:{"102":0.72006,"103":0.09164,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.01309,"101":0.00436,"103":0.00436,"107":0.00436,"109":0.06982,"112":0.00436,"113":0.00436,"114":0.1091,"115":0.08292,"116":0.26184,"117":2.59658,"118":2.17764,"119":0.00436,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 102 104 105 106 108 110 111"},E:{"13":0.01309,"14":0.09164,"15":0.02182,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.048,"13.1":0.12656,"14.1":0.19638,"15.1":0.03928,"15.2-15.3":0.048,"15.4":0.03928,"15.5":0.06982,"15.6":0.68078,"16.0":0.02618,"16.1":0.11346,"16.2":0.19638,"16.3":0.67642,"16.4":0.20947,"16.5":0.4975,"16.6":3.59157,"17.0":0.7157,"17.1":0.048},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00275,"5.0-5.1":0.00275,"6.0-6.1":0.00824,"7.0-7.1":0.01922,"8.1-8.4":0.00275,"9.0-9.2":0.01922,"9.3":0.0659,"10.0-10.2":0.00275,"10.3":0.09611,"11.0-11.2":0.08787,"11.3-11.4":0.0302,"12.0-12.1":0.02471,"12.2-12.5":0.43659,"13.0-13.1":0.01373,"13.2":0.07414,"13.3":0.02746,"13.4-13.7":0.08787,"14.0-14.4":0.24164,"14.5-14.8":0.38991,"15.0-15.1":0.15377,"15.2-15.3":0.17573,"15.4":0.19496,"15.5":0.27733,"15.6-15.7":1.91936,"16.0":0.70843,"16.1":1.35645,"16.2":0.66175,"16.3":1.2274,"16.4":0.2636,"16.5":0.70294,"16.6-16.7":13.16639,"17.0":4.68993,"17.1":0.28282,"17.2":0.00824},P:{"4":0.10708,"20":0.14992,"21":0.11779,"22":2.71993,"23":0.49259,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 13.0 14.0 15.0","7.2-7.4":0.04283,"11.1-11.2":0.01071,"16.0":0.05354,"17.0":0.01071,"18.0":0.03213,"19.0":0.11779},I:{"0":0.01682,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00005},A:{"11":0.01309,_:"6 7 8 9 10 5.5"},K:{"0":0.06763,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":2.1755},Q:{_:"13.1"},O:{"0":0.00564},H:{"0":0},L:{"0":22.52667}}; diff --git a/node_modules/caniuse-lite/data/regions/GW.js b/node_modules/caniuse-lite/data/regions/GW.js new file mode 100644 index 00000000..55fd8eb7 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GW.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00436,"56":0.00871,"78":0.00436,"115":0.02178,"116":0.01307,"118":0.1786,"119":0.02178,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 117 120 121 122 3.5 3.6"},D:{"11":0.03049,"49":0.03485,"60":0.00436,"64":0.00436,"70":0.00436,"75":0.01742,"79":0.67518,"81":0.00871,"85":0.01307,"86":0.00871,"88":0.00436,"90":0.0392,"93":0.00871,"99":0.00436,"103":0.02614,"105":0.00871,"106":0.00436,"107":0.00871,"108":0.00436,"109":11.28204,"110":0.19166,"111":0.54014,"113":0.00436,"114":0.01742,"115":0.01742,"116":0.08276,"117":7.60122,"118":9.90554,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 61 62 63 65 66 67 68 69 71 72 73 74 76 77 78 80 83 84 87 89 91 92 94 95 96 97 98 100 101 102 104 112 119 120 121 122"},F:{"102":0.13504,"103":0.06098,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00871,"18":0.05663,"90":0.00436,"92":0.04792,"109":0.06098,"113":0.00436,"114":0.02178,"115":0.73616,"116":0.0392,"117":2.05603,"118":1.65964,_:"13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 110 111 112 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 15.2-15.3 15.4 15.5 16.1 16.3 16.5 17.1 17.2","15.6":0.00436,"16.0":0.00436,"16.2":0.04356,"16.4":0.00436,"16.6":0.02614,"17.0":0.00436},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0005,"5.0-5.1":0.0005,"6.0-6.1":0.00149,"7.0-7.1":0.00348,"8.1-8.4":0.0005,"9.0-9.2":0.00348,"9.3":0.01195,"10.0-10.2":0.0005,"10.3":0.01742,"11.0-11.2":0.01593,"11.3-11.4":0.00548,"12.0-12.1":0.00448,"12.2-12.5":0.07915,"13.0-13.1":0.00249,"13.2":0.01344,"13.3":0.00498,"13.4-13.7":0.01593,"14.0-14.4":0.04381,"14.5-14.8":0.07069,"15.0-15.1":0.02788,"15.2-15.3":0.03186,"15.4":0.03534,"15.5":0.05028,"15.6-15.7":0.34796,"16.0":0.12843,"16.1":0.24591,"16.2":0.11997,"16.3":0.22252,"16.4":0.04779,"16.5":0.12744,"16.6-16.7":2.38695,"17.0":0.85024,"17.1":0.05127,"17.2":0.00149},P:{"4":0.22159,"20":0.0211,"21":0.12662,"22":0.17938,"23":0.01055,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 14.0 18.0","7.2-7.4":0.12662,"11.1-11.2":0.01055,"13.0":0.10552,"15.0":0.06331,"16.0":0.03166,"17.0":0.0211,"19.0":0.05276},I:{"0":0.00562,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.00002},A:{"11":0.00436,_:"6 7 8 9 10 5.5"},K:{"0":0.15318,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.85789,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.02258},Q:{_:"13.1"},O:{"0":0.01693},H:{"0":0.05},L:{"0":57.07561}}; diff --git a/node_modules/caniuse-lite/data/regions/GY.js b/node_modules/caniuse-lite/data/regions/GY.js new file mode 100644 index 00000000..1d5c4fc1 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/GY.js @@ -0,0 +1 @@ +module.exports={C:{"89":0.00319,"107":0.00638,"108":0.00319,"110":0.00638,"113":0.00319,"114":0.00319,"115":0.27762,"116":0.00957,"117":0.02234,"118":0.61905,"119":0.13083,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 109 111 112 120 121 122 3.5 3.6"},D:{"11":0.01915,"49":0.01276,"55":0.00319,"65":0.00638,"69":0.02234,"73":0.01915,"74":0.00319,"75":0.01276,"76":0.0351,"77":0.05425,"79":0.05425,"81":0.00319,"83":0.01596,"86":0.00638,"87":0.09254,"88":0.00638,"90":0.00319,"91":0.00638,"92":0.00957,"93":0.12445,"94":0.00957,"96":0.00638,"97":0.00319,"98":0.00319,"99":0.01596,"100":0.00638,"101":0.00319,"103":0.10211,"104":0.00319,"105":0.06063,"106":0.03191,"107":0.00957,"108":0.00638,"109":0.73712,"110":0.01596,"111":0.01915,"112":0.02872,"113":0.02553,"114":0.08616,"115":0.09254,"116":1.14238,"117":8.1913,"118":7.802,"119":0.00957,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 56 57 58 59 60 61 62 63 64 66 67 68 70 71 72 78 80 84 85 89 95 102 120 121 122"},F:{"28":0.00319,"36":0.00638,"46":0.00319,"95":0.01596,"102":1.21258,"103":0.1787,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"14":0.00319,"15":0.17551,"16":0.00957,"17":0.00319,"18":0.01276,"84":0.00319,"90":0.00319,"92":0.02872,"101":0.00319,"103":0.00319,"105":0.00319,"107":0.00319,"109":0.06701,"112":0.00957,"113":0.00957,"114":0.01596,"115":0.04787,"116":0.16912,"117":2.40921,"118":2.4475,"119":0.00319,_:"12 13 79 80 81 83 85 86 87 88 89 91 93 94 95 96 97 98 99 100 102 104 106 108 110 111"},E:{"14":0.11807,"15":0.00638,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.01596,"11.1":0.00319,"12.1":0.00319,"13.1":0.02872,"14.1":0.06063,"15.1":0.00319,"15.2-15.3":0.00319,"15.4":0.20742,"15.5":0.02234,"15.6":0.13083,"16.0":0.00638,"16.1":0.01596,"16.2":0.02234,"16.3":0.06382,"16.4":0.03829,"16.5":0.11807,"16.6":0.37016,"17.0":0.26166,"17.1":0.02872},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00092,"5.0-5.1":0.00092,"6.0-6.1":0.00275,"7.0-7.1":0.00641,"8.1-8.4":0.00092,"9.0-9.2":0.00641,"9.3":0.02197,"10.0-10.2":0.00092,"10.3":0.03203,"11.0-11.2":0.02929,"11.3-11.4":0.01007,"12.0-12.1":0.00824,"12.2-12.5":0.14553,"13.0-13.1":0.00458,"13.2":0.02471,"13.3":0.00915,"13.4-13.7":0.02929,"14.0-14.4":0.08054,"14.5-14.8":0.12997,"15.0-15.1":0.05125,"15.2-15.3":0.05858,"15.4":0.06498,"15.5":0.09244,"15.6-15.7":0.63977,"16.0":0.23614,"16.1":0.45214,"16.2":0.22058,"16.3":0.40912,"16.4":0.08787,"16.5":0.23431,"16.6-16.7":4.38869,"17.0":1.56327,"17.1":0.09427,"17.2":0.00275},P:{"4":0.18144,"20":0.07471,"21":0.18144,"22":4.06646,"23":0.65106,_:"5.0-5.4 6.2-6.4 8.2 10.1 14.0","7.2-7.4":0.26683,"9.2":0.02135,"11.1-11.2":0.07471,"12.0":0.01067,"13.0":0.03202,"15.0":0.01067,"16.0":0.08539,"17.0":0.02135,"18.0":0.03202,"19.0":0.1601},I:{"0":0.06098,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00018},A:{"10":0.01117,"11":0.01117,_:"6 7 8 9 5.5"},K:{"0":0.99107,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.05448},Q:{"13.1":0.05448},O:{"0":0.32688},H:{"0":0.01},L:{"0":54.84925}}; diff --git a/node_modules/caniuse-lite/data/regions/HK.js b/node_modules/caniuse-lite/data/regions/HK.js new file mode 100644 index 00000000..446ad360 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/HK.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.0337,"48":0.00421,"52":0.01264,"56":0.00421,"72":0.00421,"78":0.00842,"84":0.00421,"88":0.00421,"101":0.00421,"102":0.01264,"104":0.00421,"106":0.00421,"107":0.00421,"108":0.00421,"109":0.00421,"111":0.00842,"112":0.00421,"113":0.00421,"114":0.00421,"115":0.15584,"116":0.01264,"117":0.0337,"118":0.7034,"119":0.14321,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 85 86 87 89 90 91 92 93 94 95 96 97 98 99 100 103 105 110 120 121 122 3.5 3.6"},D:{"25":0.00421,"26":0.00842,"30":0.01264,"34":0.05476,"38":0.14321,"45":0.00421,"48":0.00421,"49":0.0337,"51":0.00421,"53":0.0337,"55":0.01685,"57":0.00421,"58":0.00421,"61":0.03791,"62":0.00421,"63":0.00421,"65":0.00421,"66":0.00421,"67":0.01264,"68":0.00421,"69":0.01264,"70":0.00421,"71":0.00421,"72":0.00842,"73":0.00421,"74":0.0337,"75":0.01685,"76":0.00842,"77":0.00421,"78":0.02948,"79":0.75816,"80":0.01685,"81":0.02106,"83":0.06739,"84":0.00842,"85":0.00842,"86":0.05054,"87":0.23587,"88":0.00421,"89":0.139,"90":0.01264,"91":0.02527,"92":0.02106,"93":0.00421,"94":0.10109,"95":0.02527,"96":0.02106,"97":0.02948,"98":0.02948,"99":0.08003,"100":0.02527,"101":0.0337,"102":0.0337,"103":0.13057,"104":0.02106,"105":0.0337,"106":0.02948,"107":0.04633,"108":0.06739,"109":1.61741,"110":0.02527,"111":0.04633,"112":0.08424,"113":0.13057,"114":0.26536,"115":0.2106,"116":1.09091,"117":9.90662,"118":9.30431,"119":0.02948,"120":0.0337,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 27 28 29 31 32 33 35 36 37 39 40 41 42 43 44 46 47 50 52 54 56 59 60 64 121 122"},F:{"28":0.01264,"36":0.0337,"40":0.00421,"46":0.1053,"95":0.04633,"101":0.00421,"102":0.12215,"103":0.04633,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00421,"17":0.00421,"18":0.0337,"92":0.00842,"107":0.00842,"108":0.00421,"109":0.17269,"110":0.01264,"111":0.01685,"112":0.01264,"113":0.04212,"114":0.0337,"115":0.04212,"116":0.12636,"117":2.03018,"118":2.03018,"119":0.01264,_:"13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106"},E:{"8":0.00421,"12":0.00842,"13":0.03791,"14":0.15163,"15":0.0337,_:"0 4 5 6 7 9 10 11 3.1 3.2 5.1 6.1 7.1 10.1 17.2","9.1":0.00421,"11.1":0.00421,"12.1":0.02948,"13.1":0.11794,"14.1":0.30326,"15.1":0.03791,"15.2-15.3":0.03791,"15.4":0.15584,"15.5":0.18954,"15.6":0.80449,"16.0":0.06739,"16.1":0.139,"16.2":0.15584,"16.3":0.48859,"16.4":0.13057,"16.5":0.37908,"16.6":3.74868,"17.0":0.64444,"17.1":0.03791},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00245,"5.0-5.1":0.00245,"6.0-6.1":0.00735,"7.0-7.1":0.01715,"8.1-8.4":0.00245,"9.0-9.2":0.01715,"9.3":0.05882,"10.0-10.2":0.00245,"10.3":0.08577,"11.0-11.2":0.07842,"11.3-11.4":0.02696,"12.0-12.1":0.02206,"12.2-12.5":0.38965,"13.0-13.1":0.01225,"13.2":0.06617,"13.3":0.02451,"13.4-13.7":0.07842,"14.0-14.4":0.21566,"14.5-14.8":0.34799,"15.0-15.1":0.13724,"15.2-15.3":0.15684,"15.4":0.174,"15.5":0.24751,"15.6-15.7":1.713,"16.0":0.63226,"16.1":1.21062,"16.2":0.5906,"16.3":1.09544,"16.4":0.23526,"16.5":0.62736,"16.6-16.7":11.75081,"17.0":4.18569,"17.1":0.25242,"17.2":0.00735},P:{"4":1.01545,"20":0.07898,"21":0.21437,"22":4.16336,"23":0.97032,"5.0-5.4":0.14668,"6.2-6.4":0.01128,_:"7.2-7.4 8.2 10.1","9.2":0.01128,"11.1-11.2":0.01128,"12.0":0.01128,"13.0":0.03385,"14.0":0.01128,"15.0":0.01128,"16.0":0.03385,"17.0":0.0677,"18.0":0.05641,"19.0":0.05641},I:{"0":0.02879,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00009},A:{"9":0.20218,"11":0.40435,_:"6 7 8 10 5.5"},K:{"0":0.10418,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.22573},Q:{"13.1":0.08103},O:{"0":0.29519},H:{"0":0},L:{"0":27.19782}}; diff --git a/node_modules/caniuse-lite/data/regions/HN.js b/node_modules/caniuse-lite/data/regions/HN.js new file mode 100644 index 00000000..d94973b3 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/HN.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.00869,"54":0.00435,"73":0.07388,"78":0.00869,"94":0.00435,"102":0.00869,"105":0.00435,"106":0.00435,"108":0.00869,"111":0.00435,"112":0.00435,"113":0.00869,"114":0.00435,"115":0.13038,"116":0.04346,"117":0.07823,"118":0.79097,"119":0.19122,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 95 96 97 98 99 100 101 103 104 107 109 110 120 121 122 3.5 3.6"},D:{"33":0.00869,"38":0.00869,"41":0.00869,"43":0.00869,"47":0.00435,"49":0.01304,"53":0.01738,"55":0.00435,"56":0.00435,"65":0.00435,"68":0.01304,"69":0.00869,"70":0.00435,"73":0.02173,"74":0.00869,"75":0.00869,"76":0.02173,"77":0.00435,"79":0.34768,"81":0.01738,"83":0.00435,"84":0.00435,"85":0.01304,"86":0.02173,"87":0.04781,"88":0.04346,"89":0.00435,"90":0.00435,"91":0.17819,"92":0.00435,"93":0.09996,"94":0.00869,"95":0.00435,"96":0.02173,"97":0.02173,"98":0.00869,"99":0.03042,"100":0.00435,"101":0.00435,"102":0.02608,"103":0.14342,"104":0.00869,"105":0.05215,"106":0.02608,"107":0.06084,"108":2.9379,"109":1.42549,"110":0.03477,"111":0.02173,"112":0.20426,"113":0.04346,"114":0.1608,"115":0.10865,"116":1.03869,"117":11.09968,"118":11.54298,"119":0.01304,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 39 40 42 44 45 46 48 50 51 52 54 57 58 59 60 61 62 63 64 66 67 71 72 78 80 120 121 122"},F:{"28":0.00435,"46":0.00435,"79":0.00435,"86":0.01304,"90":0.00435,"93":0.00435,"95":0.03911,"99":0.00435,"100":0.00435,"101":0.01738,"102":1.80359,"103":0.27814,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 85 87 88 89 91 92 94 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"13":0.00435,"18":0.00869,"87":0.00435,"92":0.01738,"100":0.00435,"105":0.00435,"107":0.00435,"108":0.00435,"109":0.04346,"110":0.00869,"111":0.00435,"112":0.00869,"113":0.01304,"114":0.02173,"115":0.04346,"116":0.07388,"117":2.47287,"118":2.59022,"119":0.00435,_:"12 14 15 16 17 79 80 81 83 84 85 86 88 89 90 91 93 94 95 96 97 98 99 101 102 103 104 106"},E:{"13":0.00435,"14":0.01304,"15":0.00435,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 10.1 11.1 12.1 15.1 17.2","5.1":0.00435,"9.1":0.00435,"13.1":0.03042,"14.1":0.02173,"15.2-15.3":0.00435,"15.4":0.00869,"15.5":0.01304,"15.6":0.113,"16.0":0.01738,"16.1":0.03911,"16.2":0.03042,"16.3":0.12169,"16.4":0.03477,"16.5":0.113,"16.6":0.57802,"17.0":0.36506,"17.1":0.02173},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00115,"5.0-5.1":0.00115,"6.0-6.1":0.00344,"7.0-7.1":0.00802,"8.1-8.4":0.00115,"9.0-9.2":0.00802,"9.3":0.0275,"10.0-10.2":0.00115,"10.3":0.0401,"11.0-11.2":0.03666,"11.3-11.4":0.0126,"12.0-12.1":0.01031,"12.2-12.5":0.18217,"13.0-13.1":0.00573,"13.2":0.03093,"13.3":0.01146,"13.4-13.7":0.03666,"14.0-14.4":0.10082,"14.5-14.8":0.16269,"15.0-15.1":0.06416,"15.2-15.3":0.07332,"15.4":0.08134,"15.5":0.11572,"15.6-15.7":0.80085,"16.0":0.29559,"16.1":0.56598,"16.2":0.27611,"16.3":0.51213,"16.4":0.10999,"16.5":0.2933,"16.6-16.7":5.49365,"17.0":1.95686,"17.1":0.11801,"17.2":0.00344},P:{"4":0.26635,"20":0.06146,"21":0.1639,"22":1.83368,"23":0.37903,"5.0-5.4":0.04098,_:"6.2-6.4 10.1","7.2-7.4":0.12293,"8.2":0.01024,"9.2":0.01024,"11.1-11.2":0.05122,"12.0":0.01024,"13.0":0.03073,"14.0":0.01024,"15.0":0.01024,"16.0":0.04098,"17.0":0.04098,"18.0":0.04098,"19.0":0.08195},I:{"0":0.04501,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00014},A:{"11":0.01304,_:"6 7 8 9 10 5.5"},K:{"0":0.28275,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.15834},Q:{_:"13.1"},O:{"0":0.05655},H:{"0":0},L:{"0":43.94811}}; diff --git a/node_modules/caniuse-lite/data/regions/HR.js b/node_modules/caniuse-lite/data/regions/HR.js new file mode 100644 index 00000000..711c2dba --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/HR.js @@ -0,0 +1 @@ +module.exports={C:{"48":0.16225,"52":0.03155,"53":0.00451,"57":0.00451,"68":0.00451,"72":0.00901,"78":0.02254,"83":0.00451,"88":0.00901,"89":0.00451,"91":0.00451,"94":0.00451,"98":0.00451,"99":0.00451,"101":0.00451,"102":0.02254,"103":0.00451,"104":0.00451,"105":0.00901,"106":0.00901,"107":0.05408,"108":0.02704,"109":0.00901,"110":0.00451,"111":0.02254,"112":0.01803,"113":0.02704,"114":0.00901,"115":0.58591,"116":0.02704,"117":0.09915,"118":2.74026,"119":0.49577,"120":0.00451,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 54 55 56 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 84 85 86 87 90 92 93 95 96 97 100 121 122 3.5 3.6"},D:{"41":0.01803,"43":0.00451,"44":0.00451,"47":0.00451,"49":0.05859,"51":0.00451,"53":0.01352,"56":0.00451,"59":0.00451,"65":0.00451,"66":0.00451,"69":0.00451,"70":0.00451,"73":0.00451,"75":0.01352,"76":0.00901,"77":0.02704,"78":0.00451,"79":0.21634,"80":0.00451,"81":0.0631,"83":0.00451,"84":0.01352,"85":0.01352,"86":0.00901,"87":0.04507,"88":0.00901,"89":0.01352,"90":0.00901,"91":0.00901,"92":0.00451,"93":0.00901,"94":0.00901,"95":0.01352,"96":0.00901,"97":0.02254,"98":0.00901,"99":0.02254,"100":0.01352,"101":0.01803,"102":0.00901,"103":0.04056,"104":0.00451,"105":0.01803,"106":0.05408,"107":0.01803,"108":0.03606,"109":1.95604,"110":0.03606,"111":0.04056,"112":0.04507,"113":0.03155,"114":0.10366,"115":0.07662,"116":0.89689,"117":13.2641,"118":14.26466,"119":0.00901,"120":0.00451,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 45 46 48 50 52 54 55 57 58 60 61 62 63 64 67 68 71 72 74 121 122"},F:{"28":0.00901,"36":0.00451,"46":0.02704,"85":0.00451,"86":0.00451,"93":0.00901,"94":0.00451,"95":0.07211,"100":0.00451,"101":0.01352,"102":1.71266,"103":0.47324,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 87 88 89 90 91 92 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"17":0.00451,"18":0.00451,"86":0.00451,"92":0.00451,"105":0.00451,"108":0.00451,"109":0.06761,"110":0.01352,"112":0.00451,"113":0.01352,"114":0.02254,"115":0.01803,"116":0.04958,"117":1.59097,"118":1.68111,"119":0.00451,_:"12 13 14 15 16 79 80 81 83 84 85 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 106 107 111"},E:{"9":0.00451,"14":0.01803,"15":0.00451,_:"0 4 5 6 7 8 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.10366,"12.1":0.00451,"13.1":0.05408,"14.1":0.07211,"15.1":0.01352,"15.2-15.3":0.00901,"15.4":0.01803,"15.5":0.04056,"15.6":0.1938,"16.0":0.07662,"16.1":0.04056,"16.2":0.02704,"16.3":0.08113,"16.4":0.02704,"16.5":0.07211,"16.6":0.59492,"17.0":0.23436,"17.1":0.01352},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00099,"5.0-5.1":0.00099,"6.0-6.1":0.00296,"7.0-7.1":0.00692,"8.1-8.4":0.00099,"9.0-9.2":0.00692,"9.3":0.02372,"10.0-10.2":0.00099,"10.3":0.03459,"11.0-11.2":0.03162,"11.3-11.4":0.01087,"12.0-12.1":0.00889,"12.2-12.5":0.15712,"13.0-13.1":0.00494,"13.2":0.02668,"13.3":0.00988,"13.4-13.7":0.03162,"14.0-14.4":0.08696,"14.5-14.8":0.14032,"15.0-15.1":0.05534,"15.2-15.3":0.06324,"15.4":0.07016,"15.5":0.09981,"15.6-15.7":0.69075,"16.0":0.25495,"16.1":0.48817,"16.2":0.23815,"16.3":0.44172,"16.4":0.09487,"16.5":0.25298,"16.6-16.7":4.73837,"17.0":1.68783,"17.1":0.10178,"17.2":0.00296},P:{"4":0.22659,"20":0.0824,"21":0.13389,"22":3.08981,"23":0.57677,"5.0-5.4":0.0309,_:"6.2-6.4 8.2 9.2 12.0","7.2-7.4":0.0103,"10.1":0.0103,"11.1-11.2":0.0206,"13.0":0.0309,"14.0":0.0206,"15.0":0.0103,"16.0":0.0309,"17.0":0.0206,"18.0":0.0309,"19.0":0.0412},I:{"0":0.06558,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.0002},A:{"8":0.00901,"9":0.00451,"10":0.00451,"11":0.06761,_:"6 7 5.5"},K:{"0":0.52184,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.39},Q:{_:"13.1"},O:{"0":0.09887},H:{"0":0},L:{"0":40.38283}}; diff --git a/node_modules/caniuse-lite/data/regions/HT.js b/node_modules/caniuse-lite/data/regions/HT.js new file mode 100644 index 00000000..152605c6 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/HT.js @@ -0,0 +1 @@ +module.exports={C:{"77":0.00775,"78":0.00646,"87":0.00129,"115":0.04131,"117":0.00516,"118":0.18978,"119":0.04389,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 79 80 81 82 83 84 85 86 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 116 120 121 122 3.5 3.6"},D:{"11":0.00516,"36":0.00129,"38":0.00129,"40":0.00129,"42":0.00129,"43":0.00258,"49":0.00646,"50":0.00129,"56":0.00258,"58":0.00129,"61":0.00129,"63":0.00129,"64":0.00646,"65":0.00258,"66":0.00129,"68":0.00516,"69":0.01291,"70":0.00775,"71":0.00129,"72":0.00129,"74":0.00775,"75":0.0142,"76":0.02969,"77":0.00258,"78":0.00129,"79":0.00646,"80":0.00516,"81":0.04906,"83":0.00258,"84":0.01033,"86":0.00646,"87":0.0142,"88":0.01937,"90":0.0142,"91":0.0142,"92":0.03098,"93":0.12523,"94":0.00904,"95":0.01549,"96":0.00129,"97":0.00129,"98":0.00258,"99":0.00516,"100":0.00129,"101":0.00516,"102":0.01033,"103":0.16783,"104":0.00258,"105":0.01033,"106":0.01162,"107":0.00387,"108":0.02066,"109":0.28015,"110":0.01807,"111":0.00904,"112":0.01937,"113":0.01291,"114":0.06197,"115":0.04389,"116":0.10974,"117":1.2768,"118":2.06689,"119":0.00387,"120":0.00516,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 39 41 44 45 46 47 48 51 52 53 54 55 57 59 60 62 67 73 85 89 121 122"},F:{"95":0.00516,"97":0.00129,"102":0.19494,"103":0.10199,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00646,"13":0.00387,"14":0.00516,"15":0.00129,"16":0.00516,"17":0.00129,"18":0.01033,"80":0.00387,"84":0.00387,"85":0.00258,"88":0.00129,"89":0.00129,"90":0.00258,"92":0.0142,"100":0.00129,"101":0.00129,"103":0.00258,"107":0.00129,"108":0.00129,"109":0.05164,"110":0.00129,"111":0.00775,"112":0.01549,"113":0.00516,"114":0.01291,"115":0.00904,"116":0.03615,"117":0.45185,"118":0.99794,"119":0.00516,_:"79 81 83 86 87 91 93 94 95 96 97 98 99 102 104 105 106"},E:{"11":0.00129,"13":0.00646,"14":0.00646,_:"0 4 5 6 7 8 9 10 12 15 3.1 3.2 6.1 9.1 10.1 17.2","5.1":0.00516,"7.1":0.00129,"11.1":0.00387,"12.1":0.00646,"13.1":0.02195,"14.1":0.03873,"15.1":0.00129,"15.2-15.3":0.00258,"15.4":0.00516,"15.5":0.00904,"15.6":0.02195,"16.0":0.00904,"16.1":0.00258,"16.2":0.00129,"16.3":0.00258,"16.4":0.00516,"16.5":0.01807,"16.6":0.06842,"17.0":0.25304,"17.1":0.00129},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00101,"5.0-5.1":0.00101,"6.0-6.1":0.00302,"7.0-7.1":0.00705,"8.1-8.4":0.00101,"9.0-9.2":0.00705,"9.3":0.02416,"10.0-10.2":0.00101,"10.3":0.03524,"11.0-11.2":0.03222,"11.3-11.4":0.01107,"12.0-12.1":0.00906,"12.2-12.5":0.16007,"13.0-13.1":0.00503,"13.2":0.02718,"13.3":0.01007,"13.4-13.7":0.03222,"14.0-14.4":0.08859,"14.5-14.8":0.14296,"15.0-15.1":0.05638,"15.2-15.3":0.06443,"15.4":0.07148,"15.5":0.10168,"15.6-15.7":0.70373,"16.0":0.25974,"16.1":0.49734,"16.2":0.24263,"16.3":0.45002,"16.4":0.09665,"16.5":0.25773,"16.6-16.7":4.82742,"17.0":1.71955,"17.1":0.1037,"17.2":0.00302},P:{"4":0.37277,"20":0.08284,"21":0.14497,"22":0.50738,"23":0.04142,"5.0-5.4":0.04142,"6.2-6.4":0.01035,"7.2-7.4":0.13461,"8.2":0.02071,"9.2":0.2071,_:"10.1","11.1-11.2":0.321,"12.0":0.01035,"13.0":0.12426,"14.0":0.10355,"15.0":0.01035,"16.0":0.24852,"17.0":0.03106,"18.0":0.13461,"19.0":0.08284},I:{"0":0.02599,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00008},A:{"11":0.01162,_:"6 7 8 9 10 5.5"},K:{"0":0.29611,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.1916},Q:{_:"13.1"},O:{"0":0.06967},H:{"0":0},L:{"0":79.09454}}; diff --git a/node_modules/caniuse-lite/data/regions/HU.js b/node_modules/caniuse-lite/data/regions/HU.js new file mode 100644 index 00000000..5b25bc03 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/HU.js @@ -0,0 +1 @@ +module.exports={C:{"43":0.00371,"48":0.00371,"52":0.0519,"61":0.00371,"65":0.00371,"66":0.00371,"68":0.00741,"72":0.00371,"76":0.01483,"77":0.00371,"78":0.01112,"83":0.00371,"84":0.00371,"88":0.00741,"89":0.01112,"91":0.01112,"94":0.00371,"95":0.00371,"97":0.00371,"98":0.00371,"99":0.00371,"101":0.00371,"102":0.01854,"103":0.01112,"104":0.00371,"105":0.01112,"106":0.00371,"107":0.00371,"108":0.00371,"109":0.00741,"110":0.00371,"111":0.00741,"112":0.00741,"113":0.01483,"114":0.01112,"115":1.68298,"116":0.20759,"117":0.11121,"118":2.68387,"119":0.55976,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 62 63 64 67 69 70 71 73 74 75 79 80 81 82 85 86 87 90 92 93 96 100 120 121 122 3.5 3.6"},D:{"26":0.00371,"34":0.02224,"38":0.03707,"47":0.00371,"49":0.02224,"53":0.01483,"58":0.00371,"68":0.00371,"74":0.00741,"76":0.00371,"78":0.00371,"79":0.41148,"80":0.05561,"81":0.00371,"83":0.01483,"84":0.00371,"85":0.00371,"86":0.00371,"87":0.07414,"88":0.00741,"89":0.00741,"90":0.00371,"91":0.00741,"92":0.00371,"93":0.00371,"94":0.00741,"95":0.01112,"96":0.00741,"97":0.00371,"98":0.00371,"99":0.01483,"100":0.01112,"101":0.00371,"102":0.01483,"103":0.04819,"104":0.01854,"105":0.01112,"106":0.01112,"107":0.01483,"108":0.02595,"109":1.97583,"110":0.01112,"111":0.02966,"112":0.03707,"113":0.01483,"114":0.05561,"115":0.06302,"116":0.75623,"117":9.23784,"118":9.46026,"119":0.01483,"120":0.00741,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 55 56 57 59 60 61 62 63 64 65 66 67 69 70 71 72 73 75 77 121 122"},F:{"28":0.00371,"36":0.00741,"40":0.00371,"46":0.01112,"79":0.00371,"85":0.00741,"86":0.00371,"94":0.00371,"95":0.12975,"99":0.00371,"101":0.05561,"102":1.4309,"103":0.42631,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 87 88 89 90 91 92 93 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"17":0.00371,"18":0.00371,"84":0.00371,"86":0.00371,"92":0.00371,"97":0.00371,"98":0.00371,"106":0.00371,"108":0.00371,"109":0.08155,"110":0.01112,"112":0.35958,"113":0.05561,"114":0.00741,"115":0.00741,"116":0.13716,"117":1.44202,"118":1.39013,"119":0.00741,_:"12 13 14 15 16 79 80 81 83 85 87 88 89 90 91 93 94 95 96 99 100 101 102 103 104 105 107 111"},E:{"13":0.00371,"14":0.01854,"15":0.00741,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 17.2","11.1":0.00741,"12.1":0.00741,"13.1":0.02595,"14.1":0.04448,"15.1":0.00741,"15.2-15.3":0.00741,"15.4":0.01483,"15.5":0.01854,"15.6":0.12604,"16.0":0.01483,"16.1":0.04078,"16.2":0.02966,"16.3":0.08526,"16.4":0.02966,"16.5":0.08526,"16.6":0.44113,"17.0":0.34846,"17.1":0.02595},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00106,"5.0-5.1":0.00106,"6.0-6.1":0.00317,"7.0-7.1":0.00739,"8.1-8.4":0.00106,"9.0-9.2":0.00739,"9.3":0.02534,"10.0-10.2":0.00106,"10.3":0.03696,"11.0-11.2":0.03379,"11.3-11.4":0.01162,"12.0-12.1":0.0095,"12.2-12.5":0.1679,"13.0-13.1":0.00528,"13.2":0.02851,"13.3":0.01056,"13.4-13.7":0.03379,"14.0-14.4":0.09292,"14.5-14.8":0.14995,"15.0-15.1":0.05913,"15.2-15.3":0.06758,"15.4":0.07497,"15.5":0.10665,"15.6-15.7":0.73812,"16.0":0.27244,"16.1":0.52165,"16.2":0.25449,"16.3":0.47202,"16.4":0.10137,"16.5":0.27033,"16.6-16.7":5.06335,"17.0":1.80359,"17.1":0.10876,"17.2":0.00317},P:{"4":0.51904,"20":0.06228,"21":0.12457,"22":2.28377,"23":0.49828,"5.0-5.4":0.02076,_:"6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 15.0","13.0":0.01038,"14.0":0.01038,"16.0":0.02076,"17.0":0.01038,"18.0":0.02076,"19.0":0.06228},I:{"0":0.144,"3":0,"4":0.00003,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00003,"4.2-4.3":0.0001,"4.4":0,"4.4.3-4.4.4":0.00043},A:{"8":0.00417,"11":0.02919,_:"6 7 9 10 5.5"},K:{"0":0.44051,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.30206},Q:{_:"13.1"},O:{"0":0.01888},H:{"0":0},L:{"0":49.1909}}; diff --git a/node_modules/caniuse-lite/data/regions/ID.js b/node_modules/caniuse-lite/data/regions/ID.js new file mode 100644 index 00000000..d2586280 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/ID.js @@ -0,0 +1 @@ +module.exports={C:{"36":0.07948,"45":0.00397,"52":0.00795,"56":0.00397,"68":0.00397,"72":0.00397,"78":0.00397,"86":0.00397,"88":0.00397,"91":0.00397,"99":0.00397,"100":0.00397,"101":0.00397,"102":0.00397,"103":0.00397,"104":0.00397,"105":0.00397,"106":0.00397,"107":0.00795,"108":0.01192,"109":0.00795,"110":0.03179,"111":0.00795,"112":0.00397,"113":0.03179,"114":0.0159,"115":0.32984,"116":0.01987,"117":0.07948,"118":1.94329,"119":0.35766,"120":0.00795,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 87 89 90 92 93 94 95 96 97 98 121 122 3.5 3.6"},D:{"25":0.00397,"49":0.00795,"57":0.02782,"63":0.00795,"67":0.01192,"69":0.00397,"70":0.00795,"71":0.00795,"72":0.00397,"73":0.00795,"74":0.05166,"75":0.00397,"76":0.01192,"77":0.00397,"78":0.00397,"79":0.03974,"80":0.13512,"81":0.01192,"83":0.00795,"84":0.00795,"85":0.01192,"86":0.01987,"87":0.03974,"88":0.00397,"89":0.07948,"90":0.02384,"91":0.00795,"92":0.03179,"93":0.00397,"94":0.00795,"95":0.00795,"96":0.03974,"97":0.00795,"98":0.00795,"99":0.01987,"100":0.02782,"101":0.00795,"102":0.0159,"103":0.04769,"104":0.01192,"105":0.02384,"106":0.02782,"107":0.03179,"108":0.04371,"109":2.15788,"110":0.03179,"111":0.05166,"112":0.05564,"113":0.03577,"114":0.13114,"115":0.12717,"116":0.71929,"117":11.56434,"118":13.87721,"119":0.0159,"120":0.00397,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 58 59 60 61 62 64 65 66 68 121 122"},F:{"28":0.00795,"37":0.00397,"95":0.02782,"101":0.00397,"102":0.27818,"103":0.16293,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.05961,"13":0.00397,"14":0.00397,"15":0.00397,"16":0.00397,"17":0.00397,"18":0.0159,"92":0.00795,"100":0.00397,"106":0.00397,"107":0.00397,"108":0.00397,"109":0.02384,"110":0.00397,"111":0.00397,"112":0.00397,"113":0.00397,"114":0.0159,"115":0.01192,"116":0.03577,"117":1.62537,"118":1.85586,"119":0.00795,_:"79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103 104 105"},E:{"13":0.00397,"14":0.02384,"15":0.01192,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 10.1 11.1 17.2","5.1":0.02384,"9.1":0.00397,"12.1":0.00795,"13.1":0.03577,"14.1":0.06756,"15.1":0.01987,"15.2-15.3":0.01192,"15.4":0.0159,"15.5":0.03577,"15.6":0.1073,"16.0":0.02782,"16.1":0.05564,"16.2":0.03974,"16.3":0.0914,"16.4":0.03577,"16.5":0.07948,"16.6":0.37753,"17.0":0.19473,"17.1":0.0159},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00061,"5.0-5.1":0.00061,"6.0-6.1":0.00183,"7.0-7.1":0.00427,"8.1-8.4":0.00061,"9.0-9.2":0.00427,"9.3":0.01464,"10.0-10.2":0.00061,"10.3":0.02134,"11.0-11.2":0.01951,"11.3-11.4":0.00671,"12.0-12.1":0.00549,"12.2-12.5":0.09696,"13.0-13.1":0.00305,"13.2":0.01647,"13.3":0.0061,"13.4-13.7":0.01951,"14.0-14.4":0.05367,"14.5-14.8":0.0866,"15.0-15.1":0.03415,"15.2-15.3":0.03903,"15.4":0.0433,"15.5":0.06159,"15.6-15.7":0.42627,"16.0":0.15734,"16.1":0.30126,"16.2":0.14697,"16.3":0.27259,"16.4":0.05854,"16.5":0.15612,"16.6-16.7":2.92414,"17.0":1.04159,"17.1":0.06281,"17.2":0.00183},P:{"4":0.08161,"20":0.051,"21":0.09181,"22":0.91808,"23":0.13261,_:"5.0-5.4 6.2-6.4 8.2 10.1","7.2-7.4":0.051,"9.2":0.0102,"11.1-11.2":0.0204,"12.0":0.0102,"13.0":0.0102,"14.0":0.0204,"15.0":0.0102,"16.0":0.0306,"17.0":0.0408,"18.0":0.0306,"19.0":0.051},I:{"0":0.02398,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00007},A:{"8":0.00422,"11":0.06334,_:"6 7 9 10 5.5"},K:{"0":0.82159,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.08436},Q:{_:"13.1"},O:{"0":1.5065},H:{"0":0.01},L:{"0":51.10517}}; diff --git a/node_modules/caniuse-lite/data/regions/IE.js b/node_modules/caniuse-lite/data/regions/IE.js new file mode 100644 index 00000000..008582f1 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/IE.js @@ -0,0 +1 @@ +module.exports={C:{"48":0.00335,"52":0.0067,"53":0.00335,"67":0.00335,"78":0.02009,"81":0.00335,"85":0.00335,"87":0.0134,"88":0.00335,"91":0.00335,"102":0.0067,"104":0.00335,"106":0.00335,"107":0.02344,"108":0.00335,"109":0.0067,"110":0.00335,"111":0.00335,"112":0.00335,"113":0.0134,"114":0.00335,"115":0.12726,"116":0.0067,"117":0.06028,"118":1.14871,"119":0.20764,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 79 80 82 83 84 86 89 90 92 93 94 95 96 97 98 99 100 101 103 105 120 121 122 3.5 3.6"},D:{"17":0.00335,"36":0.00335,"38":0.00335,"39":0.01675,"40":0.01675,"41":0.01675,"42":0.01675,"43":0.01675,"44":0.01675,"45":0.01675,"46":0.01675,"47":0.01675,"48":0.01675,"49":0.03014,"50":0.01675,"51":0.01675,"52":0.01675,"53":0.02344,"54":0.01675,"55":0.01675,"56":0.01675,"57":0.02679,"58":0.03349,"59":0.01675,"60":0.01675,"63":0.01005,"65":0.0067,"66":0.00335,"67":0.00335,"70":0.00335,"74":0.07033,"75":0.01005,"76":0.01005,"78":0.00335,"79":0.04689,"80":0.0067,"81":0.21434,"83":0.01005,"84":0.0067,"85":0.0134,"86":0.0067,"87":0.03349,"88":0.02344,"89":0.02344,"90":0.00335,"91":0.01675,"92":0.01005,"93":0.03684,"94":0.00335,"95":0.00335,"96":0.0067,"97":0.0067,"98":0.0067,"99":0.0067,"100":0.0067,"101":0.00335,"102":0.0067,"103":0.12056,"104":0.01005,"105":0.01675,"106":0.02344,"107":0.02009,"108":0.01675,"109":0.51575,"110":0.04689,"111":0.02009,"112":0.03349,"113":0.04354,"114":0.28132,"115":0.16075,"116":1.1688,"117":9.32027,"118":8.07444,"119":0.07033,"120":0.0067,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 61 62 64 68 69 71 72 73 77 121 122"},F:{"28":0.00335,"46":0.01005,"89":0.00335,"95":0.01675,"101":0.01005,"102":0.68989,"103":0.11052,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00335,"92":0.00335,"106":0.00335,"107":0.00335,"108":0.01005,"109":0.02679,"110":0.00335,"111":0.0067,"112":0.02009,"113":0.0067,"114":0.0134,"115":0.02009,"116":0.12056,"117":2.07303,"118":1.8453,"119":0.00335,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105"},E:{"8":0.00335,"9":0.00335,"13":0.0134,"14":0.11387,"15":0.0134,_:"0 4 5 6 7 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 17.2","9.1":0.00335,"11.1":0.00335,"12.1":0.01675,"13.1":0.09712,"14.1":0.18754,"15.1":0.03014,"15.2-15.3":0.03014,"15.4":0.06698,"15.5":0.08707,"15.6":0.4923,"16.0":0.04689,"16.1":0.10717,"16.2":0.1641,"16.3":0.42867,"16.4":0.09712,"16.5":0.26122,"16.6":1.852,"17.0":0.45881,"17.1":0.02344},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00273,"5.0-5.1":0.00273,"6.0-6.1":0.0082,"7.0-7.1":0.01913,"8.1-8.4":0.00273,"9.0-9.2":0.01913,"9.3":0.06557,"10.0-10.2":0.00273,"10.3":0.09563,"11.0-11.2":0.08743,"11.3-11.4":0.03005,"12.0-12.1":0.02459,"12.2-12.5":0.43442,"13.0-13.1":0.01366,"13.2":0.07377,"13.3":0.02732,"13.4-13.7":0.08743,"14.0-14.4":0.24044,"14.5-14.8":0.38798,"15.0-15.1":0.153,"15.2-15.3":0.17486,"15.4":0.19399,"15.5":0.27596,"15.6-15.7":1.90983,"16.0":0.70492,"16.1":1.34972,"16.2":0.65847,"16.3":1.22131,"16.4":0.26229,"16.5":0.69945,"16.6-16.7":13.10105,"17.0":4.66665,"17.1":0.28142,"17.2":0.0082},P:{"4":0.03146,"20":0.08389,"21":0.13633,"22":3.06216,"23":0.67116,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0","7.2-7.4":0.02097,"11.1-11.2":0.02097,"13.0":0.02097,"14.0":0.02097,"15.0":0.01049,"16.0":0.03146,"17.0":0.02097,"18.0":0.03146,"19.0":0.07341},I:{"0":0.12572,"3":0,"4":0.00003,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00003,"4.2-4.3":0.00009,"4.4":0,"4.4.3-4.4.4":0.00038},A:{"8":0.0034,"9":0.16308,"11":0.06795,_:"6 7 10 5.5"},K:{"0":0.21274,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.51878},Q:{_:"13.1"},O:{"0":0.03326},H:{"0":0.04},L:{"0":34.40339}}; diff --git a/node_modules/caniuse-lite/data/regions/IL.js b/node_modules/caniuse-lite/data/regions/IL.js new file mode 100644 index 00000000..5652d348 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/IL.js @@ -0,0 +1 @@ +module.exports={C:{"24":0.00289,"25":0.00579,"26":0.02025,"27":0.00289,"28":0.00289,"31":0.00289,"36":0.00289,"52":0.00868,"56":0.01157,"59":0.01447,"66":0.00289,"68":0.00289,"72":0.00289,"78":0.00289,"80":0.01157,"89":0.00289,"98":0.00289,"102":0.00289,"104":0.00289,"105":0.00579,"106":0.00289,"108":0.00289,"109":0.00289,"110":0.00579,"111":0.00579,"112":0.00289,"113":0.01447,"114":0.00289,"115":0.15333,"116":0.00579,"117":0.03761,"118":0.68564,"119":0.13597,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 29 30 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 60 61 62 63 64 65 67 69 70 71 73 74 75 76 77 79 81 82 83 84 85 86 87 88 90 91 92 93 94 95 96 97 99 100 101 103 107 120 121 122 3.5 3.6"},D:{"31":0.02604,"32":0.00579,"35":0.00289,"38":0.02025,"40":0.00289,"41":0.00289,"49":0.00579,"51":0.00289,"52":0.02604,"55":0.00289,"57":0.00289,"65":0.00579,"66":0.06075,"68":0.01157,"69":0.00868,"70":0.00579,"71":0.00579,"72":0.00868,"73":0.00579,"74":0.01736,"75":0.00868,"76":0.00868,"77":0.00579,"78":0.00868,"79":0.05207,"80":0.02314,"81":0.02314,"83":0.01736,"84":0.00868,"85":0.01157,"86":0.01736,"87":0.02314,"88":0.01447,"89":0.01157,"90":0.01447,"91":0.00868,"92":0.00289,"93":0.00579,"94":0.00579,"95":0.00868,"96":0.00579,"97":0.00579,"98":0.01157,"99":0.00579,"100":0.00579,"101":0.00289,"102":0.01736,"103":0.03472,"104":0.01157,"105":0.02025,"106":0.02604,"107":0.02604,"108":0.04918,"109":1.11381,"110":0.01447,"111":0.02604,"112":0.0434,"113":0.02893,"114":0.1649,"115":0.07522,"116":0.78979,"117":8.48228,"118":9.9201,"119":0.01447,"120":0.00289,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 33 34 36 37 39 42 43 44 45 46 47 48 50 53 54 56 58 59 60 61 62 63 64 67 121 122"},F:{"28":0.00289,"46":0.00289,"54":0.00289,"55":0.00289,"78":0.00289,"85":0.00289,"94":0.00579,"95":0.03472,"99":0.00868,"101":0.00579,"102":0.61332,"103":0.17069,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 86 87 88 89 90 91 92 93 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.00289},B:{"17":0.00579,"18":0.00579,"80":0.00289,"81":0.00289,"83":0.00289,"84":0.00289,"85":0.00289,"86":0.00289,"88":0.00289,"89":0.00289,"90":0.00289,"92":0.00289,"98":0.00289,"102":0.00289,"104":0.00289,"106":0.00289,"107":0.00289,"108":0.00289,"109":0.03182,"110":0.00868,"111":0.00289,"112":0.00289,"113":0.00868,"114":0.01447,"115":0.01736,"116":0.06365,"117":1.12827,"118":1.20638,"119":0.00289,_:"12 13 14 15 16 79 87 91 93 94 95 96 97 99 100 101 103 105"},E:{"6":0.00289,"7":0.00289,"8":0.10993,"9":0.00289,"13":0.00579,"14":0.0405,"15":0.00289,_:"0 4 5 10 11 12 3.1 3.2 7.1 10.1 17.2","5.1":0.00289,"6.1":0.00579,"9.1":0.0434,"11.1":0.01157,"12.1":0.00289,"13.1":0.01736,"14.1":0.07233,"15.1":0.00579,"15.2-15.3":0.01157,"15.4":0.00579,"15.5":0.02893,"15.6":0.10993,"16.0":0.00868,"16.1":0.02604,"16.2":0.02314,"16.3":0.07233,"16.4":0.02025,"16.5":0.03472,"16.6":0.56124,"17.0":0.17937,"17.1":0.01157},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00147,"5.0-5.1":0.00147,"6.0-6.1":0.00441,"7.0-7.1":0.01029,"8.1-8.4":0.00147,"9.0-9.2":0.01029,"9.3":0.03527,"10.0-10.2":0.00147,"10.3":0.05144,"11.0-11.2":0.04703,"11.3-11.4":0.01617,"12.0-12.1":0.01323,"12.2-12.5":0.23369,"13.0-13.1":0.00735,"13.2":0.03968,"13.3":0.0147,"13.4-13.7":0.04703,"14.0-14.4":0.12934,"14.5-14.8":0.2087,"15.0-15.1":0.0823,"15.2-15.3":0.09406,"15.4":0.10435,"15.5":0.14844,"15.6-15.7":1.02734,"16.0":0.37919,"16.1":0.72605,"16.2":0.3542,"16.3":0.65697,"16.4":0.14109,"16.5":0.37625,"16.6-16.7":7.04734,"17.0":2.51029,"17.1":0.15138,"17.2":0.00441},P:{"4":0.03076,"20":0.15381,"21":0.22559,"22":5.56806,"23":1.28178,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2","9.2":0.02051,"10.1":0.02051,"11.1-11.2":0.06153,"12.0":0.01025,"13.0":0.06153,"14.0":0.06153,"15.0":0.02051,"16.0":0.05127,"17.0":0.05127,"18.0":0.06153,"19.0":0.12305},I:{"0":0.02121,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00006},A:{"8":0.00289,"9":0.00289,"10":0.00579,"11":0.06654,_:"6 7 5.5"},K:{"0":0.42063,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.14925},Q:{_:"13.1"},O:{"0":0.06396},H:{"0":0.02},L:{"0":48.59738}}; diff --git a/node_modules/caniuse-lite/data/regions/IM.js b/node_modules/caniuse-lite/data/regions/IM.js new file mode 100644 index 00000000..36c93109 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/IM.js @@ -0,0 +1 @@ +module.exports={C:{"2":0.00458,"3":0.00458,"4":0.00916,"8":0.00458,"10":0.00458,"12":0.00458,"16":0.00458,"21":0.00458,"23":0.00458,"25":0.00458,"26":0.00458,"31":0.00458,"33":0.00458,"34":0.00458,"35":0.00458,"37":0.00458,"38":0.00458,"39":0.00458,"40":0.00916,"41":0.00458,"42":0.00458,"48":0.00458,"52":0.04578,"70":0.00458,"78":0.00458,"96":0.02289,"102":0.00916,"103":0.02289,"104":0.20143,"109":0.00458,"113":0.00458,"115":0.27468,"116":0.00458,"117":0.0824,"118":1.07583,"119":0.2701,"120":0.00458,_:"5 6 7 9 11 13 14 15 17 18 19 20 22 24 27 28 29 30 32 36 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 97 98 99 100 101 105 106 107 108 110 111 112 114 121 122","3.5":0.00458,"3.6":0.00916},D:{"4":0.00458,"15":0.00458,"19":0.00458,"21":0.00458,"27":0.00458,"28":0.00458,"31":0.00916,"32":0.00458,"33":0.00458,"36":0.00458,"37":0.00458,"38":0.00916,"39":0.00916,"40":0.01373,"41":0.00916,"42":0.00916,"43":0.02289,"44":0.02289,"45":0.03205,"46":0.03205,"47":0.01373,"51":0.03205,"65":0.06409,"67":0.07783,"70":0.01373,"76":0.01373,"77":0.00458,"79":0.00458,"85":0.00458,"86":0.00458,"87":0.01373,"88":0.00458,"89":0.00458,"91":0.00458,"93":0.00458,"94":0.01831,"99":0.05951,"102":0.00916,"103":0.27926,"104":0.05494,"105":0.71875,"107":0.00458,"108":0.01831,"109":0.52189,"111":0.02289,"112":0.02289,"113":0.09156,"114":0.61803,"115":0.13276,"116":1.47412,"117":7.54912,"118":8.72567,_:"5 6 7 8 9 10 11 12 13 14 16 17 18 20 22 23 24 25 26 29 30 34 35 48 49 50 52 53 54 55 56 57 58 59 60 61 62 63 64 66 68 69 71 72 73 74 75 78 80 81 83 84 90 92 95 96 97 98 100 101 106 110 119 120 121 122"},F:{"30":0.00458,"31":0.01373,"32":0.00458,"95":0.00458,"101":0.00458,"102":0.70959,"103":0.21974,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.00916},B:{"12":0.00458,"92":0.00458,"104":0.00458,"107":0.02289,"108":0.00458,"109":0.05036,"114":0.00458,"115":0.01373,"116":0.08698,"117":4.4956,"118":4.06984,_:"13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 105 106 110 111 112 113 119"},E:{"5":0.00458,"8":0.00458,"9":0.06409,"13":0.00458,"14":0.37082,"15":0.00458,_:"0 4 6 7 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.00458,"12.1":0.36166,"13.1":0.22432,"14.1":0.19685,"15.1":0.10987,"15.2-15.3":0.03662,"15.4":0.02747,"15.5":0.0824,"15.6":3.36483,"16.0":0.01831,"16.1":0.09614,"16.2":0.10072,"16.3":0.34335,"16.4":0.0412,"16.5":0.34793,"16.6":4.63294,"17.0":1.16281,"17.1":0.05036},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00312,"5.0-5.1":0.00312,"6.0-6.1":0.00935,"7.0-7.1":0.02182,"8.1-8.4":0.00312,"9.0-9.2":0.02182,"9.3":0.07481,"10.0-10.2":0.00312,"10.3":0.1091,"11.0-11.2":0.09975,"11.3-11.4":0.03429,"12.0-12.1":0.02805,"12.2-12.5":0.49562,"13.0-13.1":0.01559,"13.2":0.08416,"13.3":0.03117,"13.4-13.7":0.09975,"14.0-14.4":0.27431,"14.5-14.8":0.44263,"15.0-15.1":0.17456,"15.2-15.3":0.19949,"15.4":0.22131,"15.5":0.31483,"15.6-15.7":2.17886,"16.0":0.80421,"16.1":1.53985,"16.2":0.75122,"16.3":1.39335,"16.4":0.29924,"16.5":0.79798,"16.6-16.7":14.94653,"17.0":5.32402,"17.1":0.32106,"17.2":0.00935},P:{"4":0.04395,"20":0.04395,"21":0.10988,"22":2.12074,"23":0.48349,_:"5.0-5.4 8.2 9.2 10.1 11.1-11.2 12.0 14.0 15.0 16.0 18.0","6.2-6.4":0.03296,"7.2-7.4":0.01099,"13.0":0.02198,"17.0":0.01099,"19.0":0.01099},I:{"0":0.29669,"3":0,"4":0.00006,"2.1":0,"2.2":0.00009,"2.3":0,"4.1":0.00006,"4.2-4.3":0.00021,"4.4":0,"4.4.3-4.4.4":0.00089},A:{"6":0.00458,"7":0.01373,"8":0.15107,"9":0.02747,"10":0.03662,"11":0.17854,_:"5.5"},K:{"0":0.14639,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.01084,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.5422},Q:{_:"13.1"},O:{"0":0.05422},H:{"0":0},L:{"0":19.43273}}; diff --git a/node_modules/caniuse-lite/data/regions/IN.js b/node_modules/caniuse-lite/data/regions/IN.js new file mode 100644 index 00000000..e3068411 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/IN.js @@ -0,0 +1 @@ +module.exports={C:{"42":0.00411,"48":0.00205,"52":0.01438,"56":0.00205,"59":0.00205,"66":0.00205,"72":0.00205,"78":0.00205,"83":0.00205,"88":0.00822,"91":0.00616,"102":0.00411,"103":0.00205,"104":0.00205,"105":0.00205,"106":0.00205,"107":0.00205,"108":0.00205,"109":0.00205,"110":0.00411,"111":0.00411,"112":0.00411,"113":0.01232,"114":0.00205,"115":0.25059,"116":0.00822,"117":0.02465,"118":0.42723,"119":0.09448,"120":0.00205,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 49 50 51 53 54 55 57 58 60 61 62 63 64 65 67 68 69 70 71 73 74 75 76 77 79 80 81 82 84 85 86 87 89 90 92 93 94 95 96 97 98 99 100 101 121 122 3.5 3.6"},D:{"49":0.00822,"55":0.00205,"56":0.00205,"63":0.00205,"64":0.00205,"66":0.01027,"68":0.00411,"69":0.00205,"70":0.00616,"71":0.01027,"72":0.00205,"73":0.00205,"74":0.01027,"75":0.00205,"76":0.00205,"77":0.00205,"78":0.00411,"79":0.01027,"80":0.01232,"81":0.00822,"83":0.01232,"84":0.00205,"85":0.00616,"86":0.00822,"87":0.02259,"88":0.00822,"89":0.00822,"90":0.00822,"91":0.01027,"92":0.00616,"93":0.00411,"94":0.01643,"95":0.00822,"96":0.00822,"97":0.01438,"98":0.00616,"99":0.01232,"100":0.00616,"101":0.01643,"102":0.01027,"103":0.03697,"104":0.0267,"105":0.0267,"106":0.03492,"107":0.03081,"108":0.0534,"109":2.39291,"110":0.0267,"111":0.13351,"112":0.06573,"113":0.08011,"114":0.22183,"115":0.19513,"116":0.55663,"117":6.162,"118":5.2644,"119":0.01643,"120":0.00411,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 57 58 59 60 61 62 65 67 121 122"},F:{"28":0.00205,"77":0.00205,"78":0.00205,"79":0.00205,"85":0.00205,"89":0.00205,"95":0.02054,"101":0.00205,"102":0.10681,"103":0.0493,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 80 81 82 83 84 86 87 88 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00205,"16":0.00205,"17":0.00205,"18":0.00616,"84":0.00205,"92":0.00616,"100":0.00205,"106":0.00205,"107":0.00205,"108":0.00411,"109":0.01438,"110":0.00205,"111":0.00205,"112":0.00205,"113":0.00205,"114":0.00822,"115":0.01027,"116":0.01849,"117":0.49912,"118":0.46831,"119":0.00411,_:"13 14 15 79 80 81 83 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103 104 105"},E:{"13":0.00205,"14":0.00205,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 10.1 12.1 17.2","5.1":0.00205,"9.1":0.00411,"11.1":0.00205,"13.1":0.00411,"14.1":0.00822,"15.1":0.00205,"15.2-15.3":0.00205,"15.4":0.00205,"15.5":0.00411,"15.6":0.01849,"16.0":0.00411,"16.1":0.00822,"16.2":0.00411,"16.3":0.01232,"16.4":0.00616,"16.5":0.02465,"16.6":0.06984,"17.0":0.06778,"17.1":0.00616},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00022,"5.0-5.1":0.00022,"6.0-6.1":0.00065,"7.0-7.1":0.00152,"8.1-8.4":0.00022,"9.0-9.2":0.00152,"9.3":0.00521,"10.0-10.2":0.00022,"10.3":0.00759,"11.0-11.2":0.00694,"11.3-11.4":0.00239,"12.0-12.1":0.00195,"12.2-12.5":0.0345,"13.0-13.1":0.00108,"13.2":0.00586,"13.3":0.00217,"13.4-13.7":0.00694,"14.0-14.4":0.01909,"14.5-14.8":0.03081,"15.0-15.1":0.01215,"15.2-15.3":0.01388,"15.4":0.0154,"15.5":0.02191,"15.6-15.7":0.15165,"16.0":0.05597,"16.1":0.10717,"16.2":0.05229,"16.3":0.09698,"16.4":0.02083,"16.5":0.05554,"16.6-16.7":1.04029,"17.0":0.37056,"17.1":0.02235,"17.2":0.00065},P:{"4":0.05221,"20":0.03133,"21":0.06265,"22":0.5221,"23":0.07309,_:"5.0-5.4 8.2 10.1 12.0 14.0 15.0","6.2-6.4":0.01044,"7.2-7.4":0.04177,"9.2":0.01044,"11.1-11.2":0.01044,"13.0":0.01044,"16.0":0.01044,"17.0":0.01044,"18.0":0.01044,"19.0":0.04177},I:{"0":0.03163,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.0001},A:{"7":0.00411,"9":0.00205,"11":0.0267,_:"6 8 10 5.5"},K:{"0":3.27569,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.50066,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.15099},Q:{_:"13.1"},O:{"0":2.09801},H:{"0":0.07},L:{"0":72.50633}}; diff --git a/node_modules/caniuse-lite/data/regions/IQ.js b/node_modules/caniuse-lite/data/regions/IQ.js new file mode 100644 index 00000000..17bae3f1 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/IQ.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00508,"35":0.00254,"47":0.00508,"52":0.01016,"66":0.00254,"67":0.00254,"68":0.00254,"69":0.01016,"72":0.00254,"97":0.00254,"99":0.00254,"108":0.00508,"110":0.00254,"112":0.00254,"113":0.01523,"114":0.00254,"115":0.19043,"116":0.00762,"117":0.01777,"118":0.43925,"119":0.09648,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 70 71 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 98 100 101 102 103 104 105 106 107 109 111 120 121 122 3.5 3.6"},D:{"11":0.02285,"33":0.00254,"34":0.00508,"38":0.03301,"40":0.00254,"41":0.00254,"43":0.07871,"47":0.00508,"49":0.00254,"50":0.00254,"52":0.00254,"53":0.00254,"55":0.00508,"56":0.0127,"57":0.00254,"58":0.01777,"59":0.00254,"60":0.00508,"62":0.00254,"63":0.01016,"64":0.00508,"65":0.0127,"66":0.0127,"67":0.00254,"68":0.02793,"69":0.01016,"70":0.01016,"71":0.00508,"72":0.00508,"73":0.03301,"74":0.00508,"75":0.0127,"76":0.00254,"77":0.00254,"78":0.00762,"79":0.11426,"80":0.01016,"81":0.02031,"83":0.05078,"84":0.00762,"85":0.00762,"86":0.02285,"87":0.03047,"88":0.02031,"89":0.01016,"90":0.0127,"91":0.00508,"92":0.00762,"93":0.00508,"94":0.00762,"95":0.03809,"96":0.00762,"97":0.01523,"98":0.06601,"99":0.02793,"100":0.0127,"101":0.00762,"102":0.04316,"103":0.21328,"104":0.00508,"105":0.02539,"106":0.03047,"107":0.02793,"108":0.03555,"109":2.26733,"110":0.02539,"111":0.02285,"112":0.02285,"113":0.0127,"114":0.10156,"115":0.04824,"116":0.37831,"117":5.01706,"118":4.99167,"119":0.0127,"120":0.00254,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 36 37 39 42 44 45 46 48 51 54 61 121 122"},F:{"28":0.00254,"46":0.00254,"79":0.00762,"82":0.00254,"83":0.00254,"85":0.00254,"93":0.00762,"95":0.11172,"98":0.00508,"99":0.01016,"100":0.00254,"101":0.00254,"102":0.56874,"103":0.12949,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 84 86 87 88 89 90 91 92 94 96 97 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00254,"16":0.00254,"18":0.01016,"84":0.00508,"89":0.00254,"90":0.00254,"92":0.02793,"98":0.03047,"100":0.00254,"104":0.00254,"107":0.00762,"108":0.00254,"109":0.0914,"110":0.00254,"111":0.00762,"112":0.00508,"113":0.00762,"114":0.01016,"115":0.01016,"116":0.02539,"117":0.95466,"118":0.8201,"119":0.00254,_:"13 14 15 17 79 80 81 83 85 86 87 88 91 93 94 95 96 97 99 101 102 103 105 106"},E:{"13":0.00254,"14":0.02031,"15":0.00254,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 12.1 17.2","5.1":0.23359,"11.1":0.00254,"13.1":0.00762,"14.1":0.06855,"15.1":0.01777,"15.2-15.3":0.00762,"15.4":0.0457,"15.5":0.0457,"15.6":0.37577,"16.0":0.02031,"16.1":0.07109,"16.2":0.14472,"16.3":0.36054,"16.4":0.08125,"16.5":0.16757,"16.6":1.97026,"17.0":0.52811,"17.1":0.02793},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00155,"5.0-5.1":0.00155,"6.0-6.1":0.00464,"7.0-7.1":0.01082,"8.1-8.4":0.00155,"9.0-9.2":0.01082,"9.3":0.0371,"10.0-10.2":0.00155,"10.3":0.0541,"11.0-11.2":0.04946,"11.3-11.4":0.017,"12.0-12.1":0.01391,"12.2-12.5":0.24577,"13.0-13.1":0.00773,"13.2":0.04173,"13.3":0.01546,"13.4-13.7":0.04946,"14.0-14.4":0.13602,"14.5-14.8":0.21949,"15.0-15.1":0.08656,"15.2-15.3":0.09893,"15.4":0.10975,"15.5":0.15612,"15.6-15.7":1.08045,"16.0":0.39879,"16.1":0.76358,"16.2":0.37252,"16.3":0.69093,"16.4":0.14839,"16.5":0.3957,"16.6-16.7":7.41169,"17.0":2.64008,"17.1":0.15921,"17.2":0.00464},P:{"4":0.16452,"20":0.07198,"21":0.15424,"22":2.03598,"23":0.50385,"5.0-5.4":0.01028,_:"6.2-6.4 10.1","7.2-7.4":0.08226,"8.2":0.01028,"9.2":0.02057,"11.1-11.2":0.05141,"12.0":0.01028,"13.0":0.0617,"14.0":0.03085,"15.0":0.02057,"16.0":0.04113,"17.0":0.0617,"18.0":0.03085,"19.0":0.0617},I:{"0":0.08164,"3":0,"4":0.00002,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00025},A:{"7":0.0027,"8":0.0027,"9":0.0027,"11":0.07568,_:"6 10 5.5"},K:{"0":0.54458,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.13428},Q:{_:"13.1"},O:{"0":0.47744},H:{"0":0},L:{"0":57.14421}}; diff --git a/node_modules/caniuse-lite/data/regions/IR.js b/node_modules/caniuse-lite/data/regions/IR.js new file mode 100644 index 00000000..692ecd0d --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/IR.js @@ -0,0 +1 @@ +module.exports={C:{"33":0.00291,"38":0.00291,"39":0.00291,"40":0.00291,"41":0.00291,"43":0.00291,"47":0.00581,"48":0.00291,"49":0.00291,"50":0.00872,"52":0.04651,"56":0.00581,"60":0.00291,"65":0.00291,"68":0.00291,"71":0.00291,"72":0.01163,"75":0.00291,"77":0.00291,"78":0.00291,"79":0.00291,"80":0.00291,"81":0.00291,"82":0.00581,"84":0.00291,"86":0.00291,"87":0.00291,"88":0.00291,"89":0.00291,"90":0.00291,"91":0.00291,"92":0.00291,"93":0.00291,"94":0.00581,"95":0.00291,"96":0.00291,"97":0.00291,"98":0.00291,"99":0.00581,"100":0.00581,"101":0.00581,"102":0.01454,"103":0.00581,"104":0.00581,"105":0.00872,"106":0.01163,"107":0.00872,"108":0.01163,"109":0.01454,"110":0.00872,"111":0.01163,"112":0.01744,"113":0.02326,"114":0.02616,"115":1.6599,"116":0.03779,"117":0.11919,"118":1.96513,"119":0.38663,"120":0.00291,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 42 44 45 46 51 53 54 55 57 58 59 61 62 63 64 66 67 69 70 73 74 76 83 85 121 122 3.5 3.6"},D:{"33":0.00291,"34":0.00291,"38":0.00581,"45":0.00291,"46":0.00291,"48":0.00291,"49":0.00872,"52":0.00291,"58":0.00291,"59":0.00291,"60":0.00291,"62":0.00581,"63":0.00581,"64":0.00291,"65":0.00291,"66":0.00291,"67":0.00291,"68":0.00581,"69":0.00581,"70":0.00581,"71":0.02035,"72":0.00872,"73":0.00581,"74":0.00581,"75":0.00581,"76":0.00581,"77":0.00581,"78":0.01744,"79":0.02326,"80":0.02035,"81":0.01163,"83":0.01744,"84":0.01163,"85":0.01454,"86":0.02907,"87":0.02326,"88":0.01454,"89":0.01454,"90":0.01163,"91":0.02035,"92":0.01454,"93":0.00581,"94":0.01163,"95":0.01163,"96":0.02326,"97":0.01454,"98":0.01744,"99":0.02035,"100":0.02616,"101":0.01454,"102":0.04651,"103":0.05233,"104":0.03198,"105":0.04942,"106":0.06977,"107":0.0814,"108":0.11337,"109":4.71225,"110":0.0407,"111":0.06395,"112":0.06686,"113":0.05523,"114":0.13372,"115":0.11628,"116":0.49419,"117":5.99714,"118":6.34307,"119":0.00581,"120":0.00291,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 36 37 39 40 41 42 43 44 47 50 51 53 54 55 56 57 61 121 122"},F:{"46":0.00291,"64":0.00291,"79":0.01454,"83":0.00291,"84":0.00291,"85":0.00291,"91":0.00291,"93":0.00291,"94":0.00291,"95":0.07558,"99":0.00291,"100":0.00291,"101":0.01163,"102":0.21221,"103":0.10465,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 86 87 88 89 90 92 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00872,"13":0.00872,"14":0.00872,"15":0.00581,"16":0.00581,"17":0.00872,"18":0.0407,"81":0.00291,"84":0.00581,"89":0.01163,"90":0.01163,"92":0.10465,"96":0.00291,"100":0.02326,"103":0.00291,"105":0.00291,"106":0.00291,"107":0.00872,"108":0.01163,"109":0.125,"110":0.01163,"111":0.00581,"112":0.00581,"113":0.00581,"114":0.01744,"115":0.03198,"116":0.04651,"117":0.50582,"118":0.44477,"119":0.00291,_:"79 80 83 85 86 87 88 91 93 94 95 97 98 99 101 102 104"},E:{"14":0.00291,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 15.2-15.3 17.2","5.1":0.00581,"13.1":0.00581,"14.1":0.00581,"15.1":0.00291,"15.4":0.00291,"15.5":0.00291,"15.6":0.01744,"16.0":0.00291,"16.1":0.00581,"16.2":0.00291,"16.3":0.00872,"16.4":0.00581,"16.5":0.00872,"16.6":0.02326,"17.0":0.0407,"17.1":0.00291},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00051,"5.0-5.1":0.00051,"6.0-6.1":0.00152,"7.0-7.1":0.00354,"8.1-8.4":0.00051,"9.0-9.2":0.00354,"9.3":0.01212,"10.0-10.2":0.00051,"10.3":0.01768,"11.0-11.2":0.01616,"11.3-11.4":0.00556,"12.0-12.1":0.00455,"12.2-12.5":0.0803,"13.0-13.1":0.00253,"13.2":0.01364,"13.3":0.00505,"13.4-13.7":0.01616,"14.0-14.4":0.04444,"14.5-14.8":0.07171,"15.0-15.1":0.02828,"15.2-15.3":0.03232,"15.4":0.03586,"15.5":0.05101,"15.6-15.7":0.35301,"16.0":0.1303,"16.1":0.24948,"16.2":0.12171,"16.3":0.22574,"16.4":0.04848,"16.5":0.12929,"16.6-16.7":2.42158,"17.0":0.86258,"17.1":0.05202,"17.2":0.00152},P:{"4":0.23192,"20":0.47391,"21":0.59491,"22":2.93424,"23":0.21175,"5.0-5.4":0.03025,"6.2-6.4":0.03025,"7.2-7.4":0.27225,"8.2":0.03025,"9.2":0.10083,"10.1":0.03025,"11.1-11.2":0.14117,"12.0":0.05042,"13.0":0.19158,"14.0":0.1815,"15.0":0.10083,"16.0":0.28233,"17.0":0.38316,"18.0":0.29242,"19.0":0.44366},I:{"0":0.01411,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00004},A:{"8":0.00291,"9":0.00291,"11":2.44769,_:"6 7 10 5.5"},K:{"0":0.43232,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.87953},Q:{_:"13.1"},O:{"0":0.07093},H:{"0":0.05},L:{"0":58.26226}}; diff --git a/node_modules/caniuse-lite/data/regions/IS.js b/node_modules/caniuse-lite/data/regions/IS.js new file mode 100644 index 00000000..b4079508 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/IS.js @@ -0,0 +1 @@ +module.exports={C:{"48":0.05171,"52":0.01724,"77":0.00575,"78":0.04597,"91":0.00575,"102":0.05171,"109":0.00575,"112":0.00575,"113":0.01149,"114":0.00575,"115":0.24133,"116":0.01724,"117":0.0747,"118":2.37884,"119":0.44244,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 98 99 100 101 103 104 105 106 107 108 110 111 120 121 122 3.5 3.6"},D:{"49":0.00575,"53":0.00575,"63":0.00575,"65":0.00575,"73":0.00575,"79":0.01149,"81":0.00575,"85":0.03448,"87":0.04597,"89":0.00575,"90":0.00575,"91":0.01149,"92":0.01724,"95":0.00575,"96":0.00575,"97":0.00575,"100":0.00575,"102":0.01149,"103":0.20111,"104":0.01724,"105":0.01724,"106":0.00575,"107":0.01724,"108":0.05171,"109":0.35051,"110":0.04022,"111":0.03448,"112":0.08619,"113":0.13216,"114":0.31028,"115":0.35625,"116":3.74065,"117":16.0141,"118":14.003,"119":0.03448,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 64 66 67 68 69 70 71 72 74 75 76 77 78 80 83 84 86 88 93 94 98 99 101 120 121 122"},F:{"46":0.00575,"85":0.00575,"95":0.02873,"98":0.00575,"100":0.00575,"101":0.00575,"102":2.30415,"103":0.32178,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 96 97 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00575,"96":0.00575,"105":0.00575,"107":0.00575,"108":0.01149,"109":0.02298,"112":0.00575,"113":0.00575,"114":0.00575,"115":0.11492,"116":0.12067,"117":2.53973,"118":2.54548,"119":0.01149,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 97 98 99 100 101 102 103 104 106 110 111"},E:{"9":0.00575,"13":0.01149,"14":0.10343,"15":0.10343,_:"0 4 5 6 7 8 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.03448,"13.1":0.1379,"14.1":0.44819,"15.1":0.06321,"15.2-15.3":0.04022,"15.4":0.10343,"15.5":0.23559,"15.6":1.2239,"16.0":0.18962,"16.1":0.18387,"16.2":0.23559,"16.3":0.45393,"16.4":0.23559,"16.5":0.77571,"16.6":3.00516,"17.0":1.26987,"17.1":0.06321},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00197,"5.0-5.1":0.00197,"6.0-6.1":0.00591,"7.0-7.1":0.0138,"8.1-8.4":0.00197,"9.0-9.2":0.0138,"9.3":0.0473,"10.0-10.2":0.00197,"10.3":0.06898,"11.0-11.2":0.06307,"11.3-11.4":0.02168,"12.0-12.1":0.01774,"12.2-12.5":0.31337,"13.0-13.1":0.00985,"13.2":0.05321,"13.3":0.01971,"13.4-13.7":0.06307,"14.0-14.4":0.17344,"14.5-14.8":0.27986,"15.0-15.1":0.11037,"15.2-15.3":0.12614,"15.4":0.13993,"15.5":0.19906,"15.6-15.7":1.37764,"16.0":0.50849,"16.1":0.97361,"16.2":0.47498,"16.3":0.88098,"16.4":0.1892,"16.5":0.50454,"16.6-16.7":9.45036,"17.0":3.36626,"17.1":0.203,"17.2":0.00591},P:{"4":0.01045,"20":0.01045,"21":0.11499,"22":2.96875,"23":0.63765,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 11.1-11.2 12.0 14.0 15.0 16.0 18.0","10.1":0.01045,"13.0":0.02091,"17.0":0.01045,"19.0":0.01045},I:{"0":0.0127,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00004},A:{"9":0.04022,"10":0.00575,"11":0.01149,_:"6 7 8 5.5"},K:{"0":0.19994,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.31054},Q:{_:"13.1"},O:{"0":0.01276},H:{"0":0},L:{"0":18.8721}}; diff --git a/node_modules/caniuse-lite/data/regions/IT.js b/node_modules/caniuse-lite/data/regions/IT.js new file mode 100644 index 00000000..c3b9af6e --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/IT.js @@ -0,0 +1 @@ +module.exports={C:{"47":0.00481,"48":0.00481,"52":0.05771,"54":0.00481,"55":0.00481,"56":0.00481,"59":0.01924,"66":0.00481,"68":0.00481,"72":0.00481,"78":0.04328,"82":0.00481,"84":0.00481,"87":0.00962,"88":0.00481,"91":0.00481,"96":0.00481,"99":0.00481,"100":0.00481,"102":0.02405,"104":0.00481,"105":0.00481,"106":0.00481,"107":0.00481,"108":0.01924,"109":0.00962,"110":0.00481,"111":0.00962,"112":0.00481,"113":0.01924,"114":0.01443,"115":0.81753,"116":0.08656,"117":0.09618,"118":2.95754,"119":0.64441,"120":0.00481,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 49 50 51 53 57 58 60 61 62 63 64 65 67 69 70 71 73 74 75 76 77 79 80 81 83 85 86 89 90 92 93 94 95 97 98 101 103 121 122 3.5 3.6"},D:{"38":0.00481,"49":0.04809,"59":0.00481,"60":0.04328,"63":0.08656,"65":0.00481,"66":0.08656,"68":0.00481,"74":0.00481,"75":0.00481,"77":0.00481,"79":0.06252,"80":0.00481,"81":0.01443,"83":0.00481,"84":0.00481,"85":0.02405,"86":0.01443,"87":0.04328,"88":0.00962,"89":0.00962,"90":0.00962,"91":0.01443,"92":0.1587,"93":0.06733,"94":0.00481,"95":0.02405,"96":0.00962,"97":0.00962,"98":0.00481,"99":0.01924,"100":0.00962,"101":0.00962,"102":0.01443,"103":0.10099,"104":0.02405,"105":0.03366,"106":0.07694,"107":0.04809,"108":0.0529,"109":2.53434,"110":0.02885,"111":0.06252,"112":0.06733,"113":0.03847,"114":0.15389,"115":0.08656,"116":0.98104,"117":12.7727,"118":14.52318,"119":0.01924,"120":0.00481,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 61 62 64 67 69 70 71 72 73 76 78 121 122"},F:{"28":0.00481,"46":0.00962,"76":0.04809,"85":0.00481,"93":0.00481,"95":0.02885,"101":0.00962,"102":0.92333,"103":0.25488,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"17":0.00962,"18":0.00481,"85":0.00962,"90":0.09618,"92":0.00481,"106":0.00481,"107":0.00962,"108":0.00481,"109":0.07214,"110":0.00962,"111":0.00481,"112":0.00962,"113":0.00962,"114":0.02405,"115":0.07214,"116":0.04328,"117":1.76971,"118":2.01978,"119":0.00962,_:"12 13 14 15 16 79 80 81 83 84 86 87 88 89 91 93 94 95 96 97 98 99 100 101 102 103 104 105"},E:{"8":0.00481,"13":0.00962,"14":0.07214,"15":0.01443,_:"0 4 5 6 7 9 10 11 12 3.1 3.2 5.1 6.1 7.1 17.2","9.1":0.00481,"10.1":0.00481,"11.1":0.01924,"12.1":0.02405,"13.1":0.12023,"14.1":0.34625,"15.1":0.02885,"15.2-15.3":0.01924,"15.4":0.03847,"15.5":0.05771,"15.6":0.30778,"16.0":0.04328,"16.1":0.11542,"16.2":0.08175,"16.3":0.19236,"16.4":0.10099,"16.5":0.25007,"16.6":0.94737,"17.0":0.78387,"17.1":0.04809},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00155,"5.0-5.1":0.00155,"6.0-6.1":0.00464,"7.0-7.1":0.01082,"8.1-8.4":0.00155,"9.0-9.2":0.01082,"9.3":0.0371,"10.0-10.2":0.00155,"10.3":0.05411,"11.0-11.2":0.04947,"11.3-11.4":0.017,"12.0-12.1":0.01391,"12.2-12.5":0.24579,"13.0-13.1":0.00773,"13.2":0.04174,"13.3":0.01546,"13.4-13.7":0.04947,"14.0-14.4":0.13604,"14.5-14.8":0.21951,"15.0-15.1":0.08657,"15.2-15.3":0.09894,"15.4":0.10976,"15.5":0.15613,"15.6-15.7":1.08057,"16.0":0.39884,"16.1":0.76366,"16.2":0.37256,"16.3":0.69101,"16.4":0.1484,"16.5":0.39575,"16.6-16.7":7.41249,"17.0":2.64036,"17.1":0.15923,"17.2":0.00464},P:{"4":0.08306,"20":0.06229,"21":0.13497,"22":2.29442,"23":0.46719,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1","11.1-11.2":0.02076,"12.0":0.01038,"13.0":0.01038,"14.0":0.02076,"15.0":0.02076,"16.0":0.02076,"17.0":0.03115,"18.0":0.02076,"19.0":0.05191},I:{"0":0.04648,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00014},A:{"8":0.00491,"9":0.00491,"11":0.2162,_:"6 7 10 5.5"},K:{"0":0.27551,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.39971},Q:{"13.1":0.00519},O:{"0":0.09344},H:{"0":0.01},L:{"0":33.02348}}; diff --git a/node_modules/caniuse-lite/data/regions/JE.js b/node_modules/caniuse-lite/data/regions/JE.js new file mode 100644 index 00000000..cfc91ed5 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/JE.js @@ -0,0 +1 @@ +module.exports={C:{"48":0.00429,"53":0.00429,"78":0.00429,"102":0.00429,"109":0.00429,"113":0.00429,"115":0.15888,"117":0.06441,"118":1.66607,"119":0.30917,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 52 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 105 106 107 108 110 111 112 114 116 120 121 122 3.5 3.6"},D:{"49":0.00859,"80":0.06441,"84":0.00429,"85":0.00859,"87":0.00429,"88":0.00429,"90":0.03435,"92":0.00429,"93":0.00429,"94":0.01718,"98":0.00429,"101":0.00429,"103":0.06012,"104":0.00429,"106":0.00429,"107":0.00859,"109":0.36499,"112":0.00859,"113":0.07729,"114":0.08159,"115":0.15029,"116":2.147,"117":9.61427,"118":8.41624,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 83 86 89 91 95 96 97 99 100 102 105 108 110 111 119 120 121 122"},F:{"102":0.74286,"103":0.03006,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"80":0.00429,"88":0.00429,"105":0.00429,"108":0.00859,"109":0.02576,"110":0.00429,"112":0.00429,"114":0.01288,"115":0.00429,"116":0.03435,"117":3.70572,"118":3.5769,_:"12 13 14 15 16 17 18 79 81 83 84 85 86 87 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 106 107 111 113 119"},E:{"12":0.08159,"13":0.00429,"14":0.08588,"15":0.02576,_:"0 4 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.00429,"12.1":0.03865,"13.1":0.12023,"14.1":0.23188,"15.1":0.03006,"15.2-15.3":0.13741,"15.4":0.06012,"15.5":0.17176,"15.6":0.89315,"16.0":0.13741,"16.1":0.62692,"16.2":0.17176,"16.3":0.5754,"16.4":0.15458,"16.5":0.36499,"16.6":5.56932,"17.0":1.32255,"17.1":0.09017,"17.2":0.00429},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00373,"5.0-5.1":0.00373,"6.0-6.1":0.0112,"7.0-7.1":0.02614,"8.1-8.4":0.00373,"9.0-9.2":0.02614,"9.3":0.08963,"10.0-10.2":0.00373,"10.3":0.13071,"11.0-11.2":0.11951,"11.3-11.4":0.04108,"12.0-12.1":0.03361,"12.2-12.5":0.5938,"13.0-13.1":0.01867,"13.2":0.10083,"13.3":0.03735,"13.4-13.7":0.11951,"14.0-14.4":0.32864,"14.5-14.8":0.53031,"15.0-15.1":0.20914,"15.2-15.3":0.23901,"15.4":0.26515,"15.5":0.37719,"15.6-15.7":2.61047,"16.0":0.96352,"16.1":1.84488,"16.2":0.90003,"16.3":1.66936,"16.4":0.35852,"16.5":0.95605,"16.6-16.7":17.9073,"17.0":6.37866,"17.1":0.38466,"17.2":0.0112},P:{"4":0.19169,"20":0.0451,"21":0.14659,"22":3.07839,"23":0.64274,"5.0-5.4":0.05638,_:"6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 17.0 18.0 19.0","16.0":0.10149},I:{"0":0.01703,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00005},A:{"11":0.01288,_:"6 7 8 9 10 5.5"},K:{"0":0.07418,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.65619},Q:{_:"13.1"},O:{_:"0"},H:{"0":0},L:{"0":14.73223}}; diff --git a/node_modules/caniuse-lite/data/regions/JM.js b/node_modules/caniuse-lite/data/regions/JM.js new file mode 100644 index 00000000..7abd23ba --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/JM.js @@ -0,0 +1 @@ +module.exports={C:{"48":0.0038,"50":0.0038,"52":0.0076,"56":0.01519,"73":0.04178,"78":0.03418,"86":0.0038,"87":0.0038,"103":0.01139,"111":0.01899,"112":0.0076,"115":0.08735,"116":0.0076,"117":0.02659,"118":0.68364,"119":0.1975,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 82 83 84 85 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 104 105 106 107 108 109 110 113 114 120 121 122 3.5 3.6"},D:{"29":0.0076,"47":0.0038,"49":0.01139,"53":0.0038,"56":0.0038,"60":0.0038,"61":0.0038,"63":0.01519,"65":0.0038,"68":0.0038,"69":0.01519,"70":0.02279,"73":0.02279,"74":0.0038,"75":0.0076,"76":0.06836,"77":0.0038,"79":0.16331,"80":0.0038,"81":0.0076,"83":0.20509,"84":0.0076,"86":0.02659,"87":0.04558,"88":0.01139,"89":0.0038,"90":0.0038,"91":0.01519,"92":0.01139,"93":0.26586,"94":0.0076,"95":0.0076,"96":0.0038,"97":0.0038,"98":0.0038,"99":0.0038,"100":0.0076,"101":0.0038,"102":0.05317,"103":0.32283,"104":0.03418,"105":0.04558,"106":0.0076,"107":0.02659,"108":0.02659,"109":0.67604,"110":0.02659,"111":0.01899,"112":0.06457,"113":0.04937,"114":0.15192,"115":0.10255,"116":1.58756,"117":10.38373,"118":9.38486,"119":0.02279,"120":0.0076,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 50 51 52 54 55 57 58 59 62 64 66 67 71 72 78 85 121 122"},F:{"28":0.0076,"85":0.0076,"91":0.03418,"95":0.01139,"100":0.0038,"101":0.01139,"102":0.60768,"103":0.16331,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 92 93 94 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.0038,"15":0.0038,"16":0.0038,"17":0.0038,"18":0.0076,"92":0.01139,"106":0.0038,"107":0.01519,"108":0.0038,"109":0.02279,"110":0.0038,"111":0.0038,"112":0.0038,"113":0.0038,"114":0.0076,"115":0.03038,"116":0.07216,"117":2.61302,"118":2.62442,_:"13 14 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 119"},E:{"10":0.0038,"13":0.0076,"14":0.01139,"15":0.0038,_:"0 4 5 6 7 8 9 11 12 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.0038,"11.1":0.0038,"12.1":0.01899,"13.1":0.06457,"14.1":0.11394,"15.1":0.01519,"15.2-15.3":0.04558,"15.4":0.02279,"15.5":0.05317,"15.6":0.15952,"16.0":0.01139,"16.1":0.07976,"16.2":0.06457,"16.3":0.08735,"16.4":0.53552,"16.5":0.11394,"16.6":0.99128,"17.0":1.24195,"17.1":0.05317},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0015,"5.0-5.1":0.0015,"6.0-6.1":0.00449,"7.0-7.1":0.01047,"8.1-8.4":0.0015,"9.0-9.2":0.01047,"9.3":0.03589,"10.0-10.2":0.0015,"10.3":0.05234,"11.0-11.2":0.04785,"11.3-11.4":0.01645,"12.0-12.1":0.01346,"12.2-12.5":0.23775,"13.0-13.1":0.00748,"13.2":0.04037,"13.3":0.01495,"13.4-13.7":0.04785,"14.0-14.4":0.13159,"14.5-14.8":0.21233,"15.0-15.1":0.08374,"15.2-15.3":0.0957,"15.4":0.10617,"15.5":0.15103,"15.6-15.7":1.04522,"16.0":0.38579,"16.1":0.73868,"16.2":0.36037,"16.3":0.6684,"16.4":0.14355,"16.5":0.3828,"16.6-16.7":7.16997,"17.0":2.55398,"17.1":0.15402,"17.2":0.00449},P:{"4":0.12713,"20":0.11653,"21":0.15891,"22":2.54251,"23":0.52969,"5.0-5.4":0.01059,"6.2-6.4":0.01059,"7.2-7.4":0.24366,_:"8.2 10.1","9.2":0.02119,"11.1-11.2":0.04238,"12.0":0.01059,"13.0":0.03178,"14.0":0.04238,"15.0":0.02119,"16.0":0.06356,"17.0":0.03178,"18.0":0.03178,"19.0":0.13772},I:{"0":0.06787,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.0002},A:{"10":0.00633,"11":0.01266,_:"6 7 8 9 5.5"},K:{"0":0.3039,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.0124,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.17986},Q:{_:"13.1"},O:{"0":0.34731},H:{"0":0},L:{"0":44.41576}}; diff --git a/node_modules/caniuse-lite/data/regions/JO.js b/node_modules/caniuse-lite/data/regions/JO.js new file mode 100644 index 00000000..f6b55fd5 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/JO.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00505,"52":0.0101,"78":0.00253,"88":0.00253,"94":0.00505,"102":0.00758,"103":0.00253,"105":0.00253,"114":0.00253,"115":0.14398,"116":0.0101,"117":0.02526,"118":0.39153,"119":0.08083,"120":0.00253,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 91 92 93 95 96 97 98 99 100 101 104 106 107 108 109 110 111 112 113 121 122 3.5 3.6"},D:{"11":0.01768,"34":0.00253,"38":0.00253,"47":0.00253,"49":0.01516,"50":0.00253,"55":0.00505,"56":0.00253,"58":0.02526,"63":0.00505,"65":0.00253,"66":0.00505,"68":0.00253,"69":0.00505,"70":0.00253,"71":0.00253,"72":0.00253,"73":0.00505,"74":0.00253,"76":0.00253,"77":0.00253,"78":0.00758,"79":0.01516,"80":0.00253,"81":0.00505,"83":0.01263,"84":0.00253,"85":0.0101,"86":0.00505,"87":0.01263,"88":0.01263,"89":0.00758,"90":0.00505,"91":0.00253,"92":0.00758,"93":0.00758,"94":0.0101,"95":0.00505,"96":0.01516,"97":0.00505,"98":0.02779,"99":0.05052,"100":0.00505,"101":0.00505,"102":0.01263,"103":0.02273,"104":0.00758,"105":0.01516,"106":0.01516,"107":0.0581,"108":0.05557,"109":1.70758,"110":0.02273,"111":0.03536,"112":0.08841,"113":0.01768,"114":0.08083,"115":0.12125,"116":0.51025,"117":7.07533,"118":7.61842,"119":0.06062,"120":0.00505,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 51 52 53 54 57 59 60 61 62 64 67 75 121 122"},F:{"28":0.00505,"79":0.00505,"82":0.00505,"83":0.00505,"84":0.00253,"85":0.00253,"86":0.00253,"89":0.00253,"94":0.0101,"95":0.02779,"98":0.00253,"99":0.02526,"100":0.01768,"101":0.01516,"102":0.29302,"103":0.0682,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 87 88 90 91 92 93 96 97 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00253,"15":0.00253,"18":0.00758,"90":0.00253,"92":0.02021,"100":0.0101,"105":0.00253,"106":0.00253,"108":0.02779,"109":0.02779,"110":0.00253,"111":0.00253,"112":0.00505,"113":0.00253,"114":0.00758,"115":0.01768,"116":0.03789,"117":1.10134,"118":1.16701,"119":0.00505,_:"13 14 16 17 79 80 81 83 84 85 86 87 88 89 91 93 94 95 96 97 98 99 101 102 103 104 107"},E:{"14":0.00758,"15":0.00505,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.06062,"11.1":0.00253,"12.1":0.00253,"13.1":0.02021,"14.1":0.03536,"15.1":0.01263,"15.2-15.3":0.00758,"15.4":0.00505,"15.5":0.02273,"15.6":0.07325,"16.0":0.00505,"16.1":0.02526,"16.2":0.03031,"16.3":0.05052,"16.4":0.03536,"16.5":0.07073,"16.6":0.33091,"17.0":0.19703,"17.1":0.01263},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00142,"5.0-5.1":0.00142,"6.0-6.1":0.00426,"7.0-7.1":0.00993,"8.1-8.4":0.00142,"9.0-9.2":0.00993,"9.3":0.03405,"10.0-10.2":0.00142,"10.3":0.04965,"11.0-11.2":0.04539,"11.3-11.4":0.0156,"12.0-12.1":0.01277,"12.2-12.5":0.22555,"13.0-13.1":0.00709,"13.2":0.0383,"13.3":0.01419,"13.4-13.7":0.04539,"14.0-14.4":0.12483,"14.5-14.8":0.20144,"15.0-15.1":0.07944,"15.2-15.3":0.09079,"15.4":0.10072,"15.5":0.14328,"15.6-15.7":0.99158,"16.0":0.36599,"16.1":0.70077,"16.2":0.34187,"16.3":0.6341,"16.4":0.13618,"16.5":0.36315,"16.6-16.7":6.80202,"17.0":2.42291,"17.1":0.14611,"17.2":0.00426},P:{"4":0.08147,"20":0.07128,"21":0.21385,"22":2.59675,"23":0.43788,_:"5.0-5.4 6.2-6.4 8.2","7.2-7.4":0.09165,"9.2":0.01018,"10.1":0.01018,"11.1-11.2":0.0611,"12.0":0.01018,"13.0":0.04073,"14.0":0.0611,"15.0":0.11202,"16.0":0.08147,"17.0":0.04073,"18.0":0.04073,"19.0":0.11202},I:{"0":0.07436,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.00022},A:{"8":0.00253,"11":0.04042,_:"6 7 9 10 5.5"},K:{"0":0.25159,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.19432},Q:{_:"13.1"},O:{"0":0.20927},H:{"0":0.01},L:{"0":58.13235}}; diff --git a/node_modules/caniuse-lite/data/regions/JP.js b/node_modules/caniuse-lite/data/regions/JP.js new file mode 100644 index 00000000..c041524a --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/JP.js @@ -0,0 +1 @@ +module.exports={C:{"48":0.01778,"52":0.03557,"54":0.4031,"56":0.01186,"78":0.02964,"83":0.00593,"88":0.00593,"91":0.00593,"97":0.00593,"101":0.00593,"102":0.03557,"104":0.00593,"105":0.00593,"106":0.00593,"107":0.00593,"108":0.00593,"109":0.01186,"110":0.00593,"111":0.00593,"112":0.00593,"113":0.01778,"114":0.01186,"115":0.31418,"116":0.01778,"117":0.12449,"118":2.22893,"119":0.43867,"120":0.00593,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 87 89 90 92 93 94 95 96 98 99 100 103 121 122 3.5 3.6"},D:{"48":0.00593,"49":0.05335,"52":0.01186,"53":0.01186,"54":0.00593,"57":0.00593,"61":0.00593,"65":0.00593,"67":0.00593,"68":0.00593,"69":0.00593,"74":0.00593,"75":0.00593,"76":0.00593,"77":0.05335,"78":0.00593,"79":0.01186,"80":0.05928,"81":0.11856,"83":0.03557,"84":0.00593,"85":0.01186,"86":0.02371,"87":0.01778,"88":0.00593,"89":0.01778,"90":0.01778,"91":0.01778,"92":0.01778,"93":0.00593,"94":0.02371,"95":0.02964,"96":0.01186,"97":0.05335,"98":0.03557,"99":0.03557,"100":0.01778,"101":0.02371,"102":0.03557,"103":0.09485,"104":0.02371,"105":0.0415,"106":0.05928,"107":0.0415,"108":0.07706,"109":0.98405,"110":0.05335,"111":0.07114,"112":0.07706,"113":0.05928,"114":0.27862,"115":0.18377,"116":1.49386,"117":13.43878,"118":12.88154,"119":0.02964,"120":0.01778,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 50 51 55 56 58 59 60 62 63 64 66 70 71 72 73 121 122"},F:{"46":0.00593,"80":0.00593,"95":0.01778,"101":0.00593,"102":0.2549,"103":0.16006,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.00593},B:{"17":0.00593,"18":0.00593,"84":0.00593,"88":0.00593,"91":0.00593,"92":0.00593,"96":0.00593,"97":0.00593,"98":0.00593,"100":0.00593,"101":0.00593,"102":0.00593,"103":0.00593,"105":0.00593,"106":0.00593,"107":0.01186,"108":0.02371,"109":0.32604,"110":0.01778,"111":0.01778,"112":0.01778,"113":0.02964,"114":0.04742,"115":0.06521,"116":0.21341,"117":5.95764,"118":5.96357,"119":0.01186,_:"12 13 14 15 16 79 80 81 83 85 86 87 89 90 93 94 95 99 104"},E:{"13":0.01186,"14":0.05928,"15":0.01186,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 17.2","10.1":0.00593,"11.1":0.00593,"12.1":0.01778,"13.1":0.08892,"14.1":0.18377,"15.1":0.01778,"15.2-15.3":0.02371,"15.4":0.04742,"15.5":0.05928,"15.6":0.35568,"16.0":0.03557,"16.1":0.08299,"16.2":0.07706,"16.3":0.20748,"16.4":0.07114,"16.5":0.21341,"16.6":1.51164,"17.0":0.50981,"17.1":0.0415},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00253,"5.0-5.1":0.00253,"6.0-6.1":0.0076,"7.0-7.1":0.01774,"8.1-8.4":0.00253,"9.0-9.2":0.01774,"9.3":0.06084,"10.0-10.2":0.00253,"10.3":0.08872,"11.0-11.2":0.08111,"11.3-11.4":0.02788,"12.0-12.1":0.02281,"12.2-12.5":0.40304,"13.0-13.1":0.01267,"13.2":0.06844,"13.3":0.02535,"13.4-13.7":0.08111,"14.0-14.4":0.22306,"14.5-14.8":0.35994,"15.0-15.1":0.14195,"15.2-15.3":0.16223,"15.4":0.17997,"15.5":0.25602,"15.6-15.7":1.77184,"16.0":0.65398,"16.1":1.2522,"16.2":0.61089,"16.3":1.13306,"16.4":0.24334,"16.5":0.64891,"16.6-16.7":12.15446,"17.0":4.32947,"17.1":0.26109,"17.2":0.0076},P:{"20":0.01095,"21":0.02189,"22":0.77718,"23":0.16419,_:"4 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 14.0 15.0 18.0","13.0":0.01095,"16.0":0.01095,"17.0":0.01095,"19.0":0.01095},I:{"0":0.12964,"3":0,"4":0.00003,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00003,"4.2-4.3":0.00009,"4.4":0,"4.4.3-4.4.4":0.00039},A:{"6":0.00808,"8":0.00808,"9":0.03233,"10":0.00808,"11":0.56585,_:"7 5.5"},K:{"0":0.11402,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.26468},Q:{"13.1":0.0285},O:{"0":0.18324},H:{"0":0},L:{"0":19.84253}}; diff --git a/node_modules/caniuse-lite/data/regions/KE.js b/node_modules/caniuse-lite/data/regions/KE.js new file mode 100644 index 00000000..80ef0259 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/KE.js @@ -0,0 +1 @@ +module.exports={C:{"21":0.00227,"34":0.00227,"47":0.00682,"50":0.00227,"52":0.03181,"66":0.00227,"68":0.00227,"71":0.00227,"72":0.00227,"78":0.00454,"87":0.00227,"88":0.00227,"91":0.00227,"99":0.00227,"102":0.01136,"103":0.00227,"107":0.00227,"108":0.00227,"109":0.00227,"110":0.00454,"111":0.00227,"112":0.00227,"113":0.01136,"114":0.00227,"115":0.25674,"116":0.00909,"117":0.06134,"118":0.76566,"119":0.1863,"120":0.00682,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 48 49 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 69 70 73 74 75 76 77 79 80 81 82 83 84 85 86 89 90 92 93 94 95 96 97 98 100 101 104 105 106 121 122 3.5 3.6"},D:{"9":0.00227,"11":0.00227,"38":0.00682,"41":0.00227,"43":0.00227,"48":0.00227,"49":0.00454,"50":0.00454,"51":0.00682,"53":0.00227,"54":0.00682,"55":0.00227,"56":0.01136,"58":0.00454,"60":0.00227,"62":0.00227,"63":0.00227,"64":0.00227,"65":0.00454,"66":0.00682,"67":0.00227,"68":0.00227,"69":0.00454,"70":0.00454,"72":0.01136,"73":0.01818,"74":0.00682,"75":0.00227,"76":0.00454,"77":0.00454,"78":0.00227,"79":0.03635,"80":0.00454,"81":0.00682,"83":0.03408,"84":0.00227,"85":0.00454,"86":0.00454,"87":0.02499,"88":0.0159,"89":0.00682,"90":0.00227,"91":0.00682,"92":0.01136,"93":0.01136,"94":0.00454,"95":0.02272,"96":0.01818,"97":0.00682,"98":0.00454,"99":0.00682,"100":0.00682,"101":0.00454,"102":0.01136,"103":0.05453,"104":0.00682,"105":0.01136,"106":0.02954,"107":0.03181,"108":0.80883,"109":1.22234,"110":0.01136,"111":0.04771,"112":0.02499,"113":0.02954,"114":0.13405,"115":0.09997,"116":0.46122,"117":5.45053,"118":5.8095,"119":0.02499,"120":0.00909,_:"4 5 6 7 8 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 44 45 46 47 52 57 59 61 71 121 122"},F:{"28":0.00682,"46":0.00227,"49":0.00227,"72":0.00227,"73":0.00227,"74":0.00227,"77":0.02045,"78":0.00909,"79":0.00227,"85":0.00227,"90":0.00227,"91":0.00227,"93":0.00227,"95":0.02726,"100":0.00227,"101":0.00909,"102":0.24992,"103":0.22266,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 75 76 80 81 82 83 84 86 87 88 89 92 94 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00682,"13":0.00454,"15":0.00227,"16":0.00454,"17":0.00227,"18":0.0159,"84":0.00227,"89":0.00227,"90":0.00454,"92":0.02045,"100":0.00227,"104":0.00227,"106":0.00227,"107":0.00227,"108":0.00454,"109":0.0159,"110":0.00682,"111":0.00227,"112":0.00454,"113":0.00454,"114":0.00909,"115":0.01363,"116":0.02954,"117":0.64979,"118":0.69523,"119":0.00227,_:"14 79 80 81 83 85 86 87 88 91 93 94 95 96 97 98 99 101 102 103 105"},E:{"12":0.00227,"13":0.00227,"14":0.00227,_:"0 4 5 6 7 8 9 10 11 15 3.1 3.2 6.1 7.1 9.1 10.1 16.0 17.2","5.1":0.01136,"11.1":0.00227,"12.1":0.00227,"13.1":0.0159,"14.1":0.01818,"15.1":0.00227,"15.2-15.3":0.00227,"15.4":0.00227,"15.5":0.00454,"15.6":0.0409,"16.1":0.00909,"16.2":0.00454,"16.3":0.01818,"16.4":0.01363,"16.5":0.02045,"16.6":0.07952,"17.0":0.07952,"17.1":0.00909},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00018,"5.0-5.1":0.00018,"6.0-6.1":0.00053,"7.0-7.1":0.00123,"8.1-8.4":0.00018,"9.0-9.2":0.00123,"9.3":0.00421,"10.0-10.2":0.00018,"10.3":0.00614,"11.0-11.2":0.00561,"11.3-11.4":0.00193,"12.0-12.1":0.00158,"12.2-12.5":0.02789,"13.0-13.1":0.00088,"13.2":0.00474,"13.3":0.00175,"13.4-13.7":0.00561,"14.0-14.4":0.01544,"14.5-14.8":0.02491,"15.0-15.1":0.00982,"15.2-15.3":0.01123,"15.4":0.01245,"15.5":0.01772,"15.6-15.7":0.12261,"16.0":0.04525,"16.1":0.08665,"16.2":0.04227,"16.3":0.07841,"16.4":0.01684,"16.5":0.0449,"16.6-16.7":0.84106,"17.0":0.29959,"17.1":0.01807,"17.2":0.00053},P:{"4":0.1105,"20":0.02009,"21":0.05023,"22":0.52235,"23":0.07032,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 15.0","7.2-7.4":0.10045,"11.1-11.2":0.02009,"13.0":0.01005,"14.0":0.01005,"16.0":0.02009,"17.0":0.02009,"18.0":0.01005,"19.0":0.04018},I:{"0":0.04613,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00014},A:{"10":0.00265,"11":0.04506,_:"6 7 8 9 5.5"},K:{"0":23.51431,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00773,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.17772},Q:{_:"13.1"},O:{"0":0.19318},H:{"0":8.8},L:{"0":45.45911}}; diff --git a/node_modules/caniuse-lite/data/regions/KG.js b/node_modules/caniuse-lite/data/regions/KG.js new file mode 100644 index 00000000..25ec098a --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/KG.js @@ -0,0 +1 @@ +module.exports={C:{"38":0.00237,"40":0.00237,"52":0.0071,"78":0.00237,"88":0.00237,"91":0.0071,"94":0.02129,"102":0.00473,"104":0.00473,"112":0.00237,"113":0.00946,"114":0.00237,"115":0.34766,"116":0.00946,"117":0.04021,"118":0.2838,"119":0.06149,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 95 96 97 98 99 100 101 103 105 106 107 108 109 110 111 120 121 122 3.5 3.6"},D:{"39":0.00237,"40":0.00237,"41":0.00237,"42":0.00237,"43":0.00237,"44":0.00473,"45":0.00237,"49":0.03784,"53":0.00473,"57":0.00946,"60":0.0071,"63":0.00946,"64":0.00237,"65":0.00237,"66":0.00237,"68":0.00237,"69":0.00473,"70":0.00237,"71":0.00473,"74":0.00237,"75":0.00237,"77":0.00237,"78":0.00237,"79":0.00946,"80":0.00237,"81":0.02365,"83":0.00946,"84":0.02129,"85":0.01419,"87":0.00946,"88":0.00473,"89":0.01183,"90":0.00473,"91":0.00237,"92":0.00237,"93":0.00237,"94":0.02365,"95":0.00237,"96":0.0071,"97":0.01183,"98":0.00473,"99":0.01419,"100":0.01419,"101":0.02129,"102":0.02838,"103":0.03075,"104":0.01656,"105":0.00473,"106":0.02838,"107":0.03311,"108":0.03548,"109":2.46433,"110":0.02129,"111":0.02365,"112":0.03784,"113":0.03548,"114":0.15136,"115":0.12062,"116":0.47537,"117":5.27868,"118":6.4399,"119":0.00237,"120":0.0071,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 46 47 48 50 51 52 54 55 56 58 59 61 62 67 72 73 76 86 121 122"},F:{"28":0.00473,"42":0.00237,"79":0.03784,"82":0.00237,"85":0.08751,"86":0.04257,"87":0.00237,"95":0.2365,"98":0.00237,"99":0.00473,"100":0.00237,"101":0.01183,"102":0.79228,"103":0.32874,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 84 88 89 90 91 92 93 94 96 97 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.00237},B:{"14":0.00473,"18":0.00473,"92":0.00473,"97":0.00237,"101":0.00473,"105":0.00237,"106":0.00473,"107":0.00473,"109":0.00237,"110":0.0071,"112":0.00473,"113":0.00237,"114":0.02602,"115":0.00237,"116":0.21049,"117":0.47773,"118":0.4257,"119":0.00237,_:"12 13 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 98 99 100 102 103 104 108 111"},E:{"13":0.00237,"14":0.01419,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.31928,"12.1":0.00237,"13.1":0.00473,"14.1":0.03311,"15.1":0.00237,"15.2-15.3":0.00473,"15.4":0.0071,"15.5":0.00946,"15.6":0.09697,"16.0":0.04967,"16.1":0.03311,"16.2":0.00946,"16.3":0.04257,"16.4":0.0544,"16.5":0.0473,"16.6":0.17265,"17.0":0.17738,"17.1":0.01419},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00131,"5.0-5.1":0.00131,"6.0-6.1":0.00393,"7.0-7.1":0.00918,"8.1-8.4":0.00131,"9.0-9.2":0.00918,"9.3":0.03146,"10.0-10.2":0.00131,"10.3":0.04588,"11.0-11.2":0.04195,"11.3-11.4":0.01442,"12.0-12.1":0.0118,"12.2-12.5":0.20844,"13.0-13.1":0.00655,"13.2":0.0354,"13.3":0.01311,"13.4-13.7":0.04195,"14.0-14.4":0.11536,"14.5-14.8":0.18615,"15.0-15.1":0.07341,"15.2-15.3":0.0839,"15.4":0.09308,"15.5":0.1324,"15.6-15.7":0.91634,"16.0":0.33822,"16.1":0.6476,"16.2":0.31593,"16.3":0.58599,"16.4":0.12585,"16.5":0.3356,"16.6-16.7":6.28591,"17.0":2.23907,"17.1":0.13503,"17.2":0.00393},P:{"4":0.11232,"20":0.13274,"21":0.194,"22":1.19465,"23":0.15316,"5.0-5.4":0.01021,"6.2-6.4":0.04084,"7.2-7.4":0.17358,_:"8.2 10.1","9.2":0.03063,"11.1-11.2":0.04084,"12.0":0.01021,"13.0":0.02042,"14.0":0.04084,"15.0":0.03063,"16.0":0.07147,"17.0":0.03063,"18.0":0.06126,"19.0":0.194},I:{"0":0.0076,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00002},A:{"11":0.02602,_:"6 7 8 9 10 5.5"},K:{"0":0.45047,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.04581},Q:{_:"13.1"},O:{"0":0.45047},H:{"0":0},L:{"0":59.85521}}; diff --git a/node_modules/caniuse-lite/data/regions/KH.js b/node_modules/caniuse-lite/data/regions/KH.js new file mode 100644 index 00000000..8b0fab70 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/KH.js @@ -0,0 +1 @@ +module.exports={C:{"3":0.00332,"4":0.00997,"40":0.00332,"44":0.00332,"50":0.00665,"51":0.01329,"52":0.01994,"57":0.00332,"72":0.00332,"78":0.01329,"88":0.00332,"99":0.00332,"102":0.00332,"104":0.00665,"105":0.03655,"106":0.04985,"107":0.00665,"108":0.03655,"109":0.00665,"110":0.01329,"111":0.00665,"112":0.07975,"113":0.00332,"114":0.00665,"115":0.10634,"116":0.00997,"117":0.04652,"118":1.00355,"119":0.17612,"120":0.01329,_:"2 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 45 46 47 48 49 53 54 55 56 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 95 96 97 98 100 101 103 121 122 3.5","3.6":0.00332},D:{"38":0.01329,"40":0.00332,"41":0.01662,"43":0.00332,"44":0.00332,"45":0.00332,"46":0.00332,"47":0.00997,"48":0.02326,"49":0.00665,"51":0.00332,"53":0.00332,"56":0.06646,"57":0.00665,"58":0.00665,"61":0.00997,"63":0.00332,"69":0.00332,"70":0.00332,"71":0.03323,"72":0.00665,"74":0.00332,"75":0.00332,"78":0.00332,"79":0.03323,"80":0.00332,"81":0.00332,"83":0.01329,"84":0.00665,"85":0.00332,"86":0.02658,"87":0.02991,"88":0.01329,"89":0.00332,"90":0.00332,"91":0.00997,"92":0.00332,"93":0.00332,"94":0.02326,"95":0.02658,"96":0.00997,"97":0.00997,"98":0.02326,"99":0.02991,"100":0.03988,"101":0.00997,"102":0.02326,"103":0.16283,"104":0.06978,"105":0.17612,"106":0.16283,"107":0.30239,"108":0.35888,"109":0.8673,"110":0.13292,"111":0.11963,"112":0.1595,"113":0.03988,"114":0.11963,"115":0.10301,"116":0.94041,"117":8.51353,"118":9.69319,"119":0.02326,"120":0.03323,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 42 50 52 54 55 59 60 62 64 65 66 67 68 73 76 77 121 122"},F:{"28":0.00332,"44":0.00665,"91":0.01662,"92":0.00332,"93":0.04985,"95":0.01662,"101":0.00332,"102":0.57488,"103":0.23926,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00332,"14":0.00665,"16":0.00332,"18":0.00665,"84":0.00665,"89":0.00332,"92":0.03988,"100":0.00332,"103":0.00997,"106":0.0432,"107":0.05317,"108":0.01662,"109":0.01329,"110":0.0432,"111":0.02658,"112":0.01329,"113":0.00665,"114":0.01329,"115":0.02326,"116":0.01994,"117":0.83075,"118":0.84404,"119":0.00665,_:"13 15 17 79 80 81 83 85 86 87 88 90 91 93 94 95 96 97 98 99 101 102 104 105"},E:{"4":0.00665,"7":0.00332,"9":0.00997,"10":0.00997,"13":0.01662,"14":0.02326,"15":0.00997,_:"0 5 6 8 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.00665,"13.1":0.02658,"14.1":0.05649,"15.1":0.02658,"15.2-15.3":0.01329,"15.4":0.02326,"15.5":0.02991,"15.6":0.23261,"16.0":0.06314,"16.1":0.07643,"16.2":0.03323,"16.3":0.12627,"16.4":0.02991,"16.5":0.08308,"16.6":0.66128,"17.0":0.32565,"17.1":0.01662},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00219,"5.0-5.1":0.00219,"6.0-6.1":0.00658,"7.0-7.1":0.01536,"8.1-8.4":0.00219,"9.0-9.2":0.01536,"9.3":0.05267,"10.0-10.2":0.00219,"10.3":0.0768,"11.0-11.2":0.07022,"11.3-11.4":0.02414,"12.0-12.1":0.01975,"12.2-12.5":0.34891,"13.0-13.1":0.01097,"13.2":0.05925,"13.3":0.02194,"13.4-13.7":0.07022,"14.0-14.4":0.19311,"14.5-14.8":0.3116,"15.0-15.1":0.12289,"15.2-15.3":0.14044,"15.4":0.1558,"15.5":0.22163,"15.6-15.7":1.53388,"16.0":0.56615,"16.1":1.08403,"16.2":0.52885,"16.3":0.98089,"16.4":0.21066,"16.5":0.56176,"16.6-16.7":10.5221,"17.0":3.74802,"17.1":0.22602,"17.2":0.00658},P:{"4":0.07172,"20":0.05123,"21":0.07172,"22":1.045,"23":0.26637,"5.0-5.4":0.01025,_:"6.2-6.4 8.2 9.2 10.1 11.1-11.2 12.0 14.0 15.0","7.2-7.4":0.01025,"13.0":0.01025,"16.0":0.01025,"17.0":0.02049,"18.0":0.02049,"19.0":0.06147},I:{"0":0.08637,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00026},A:{"7":0.00351,"8":0.0667,"9":0.01755,"10":0.02106,"11":2.0046,_:"6 5.5"},K:{"0":0.64777,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.16027},Q:{"13.1":0.05342},O:{"0":0.79468},H:{"0":0},L:{"0":42.68168}}; diff --git a/node_modules/caniuse-lite/data/regions/KI.js b/node_modules/caniuse-lite/data/regions/KI.js new file mode 100644 index 00000000..144661f4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/KI.js @@ -0,0 +1 @@ +module.exports={C:{"54":0.07452,"56":0.00426,"76":0.00426,"105":0.02981,"115":0.0149,"117":0.01065,"118":0.35767,"119":0.00426,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 106 107 108 109 110 111 112 113 114 116 120 121 122 3.5 3.6"},D:{"38":0.00426,"43":0.01065,"64":0.00426,"77":0.01065,"78":0.01065,"80":0.03619,"81":0.01065,"88":0.09581,"90":0.02555,"93":0.01065,"94":0.01065,"95":0.33212,"99":0.02981,"101":0.01065,"103":0.04045,"106":0.00426,"107":0.01916,"109":0.08516,"110":0.02555,"112":0.07452,"113":0.05961,"114":0.17671,"115":0.02981,"116":0.34703,"117":3.73214,"118":1.92887,"120":0.01916,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 65 66 67 68 69 70 71 72 73 74 75 76 79 83 84 85 86 87 89 91 92 96 97 98 100 102 104 105 108 111 119 121 122"},F:{"72":0.00426,"78":0.02981,"101":0.00426,"102":0.31722,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 103 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00426,"13":0.0149,"16":0.05535,"18":0.04471,"80":0.00426,"84":0.1469,"89":0.01065,"92":0.7558,"97":0.03619,"99":0.00426,"102":0.0149,"105":0.12561,"107":0.04045,"109":0.02555,"110":0.00426,"111":0.066,"112":0.01065,"113":0.03619,"114":0.0511,"115":0.09581,"116":0.12987,"117":1.83307,"118":0.5429,_:"14 15 17 79 81 83 85 86 87 88 90 91 93 94 95 96 98 100 101 103 104 106 108 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.1 15.2-15.3 15.4 15.6 16.0 16.1 16.2 16.3 16.4 17.1 17.2","13.1":0.00426,"14.1":0.02555,"15.5":0.00426,"16.5":0.00426,"16.6":0.12987,"17.0":0.01916},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00013,"5.0-5.1":0.00013,"6.0-6.1":0.0004,"7.0-7.1":0.00094,"8.1-8.4":0.00013,"9.0-9.2":0.00094,"9.3":0.00321,"10.0-10.2":0.00013,"10.3":0.00468,"11.0-11.2":0.00428,"11.3-11.4":0.00147,"12.0-12.1":0.0012,"12.2-12.5":0.02128,"13.0-13.1":0.00067,"13.2":0.00361,"13.3":0.00134,"13.4-13.7":0.00428,"14.0-14.4":0.01178,"14.5-14.8":0.019,"15.0-15.1":0.00749,"15.2-15.3":0.00856,"15.4":0.0095,"15.5":0.01351,"15.6-15.7":0.09353,"16.0":0.03452,"16.1":0.0661,"16.2":0.03225,"16.3":0.05981,"16.4":0.01285,"16.5":0.03425,"16.6-16.7":0.6416,"17.0":0.22854,"17.1":0.01378,"17.2":0.0004},P:{"4":0.03073,"20":0.08196,"21":0.3688,"22":1.00395,_:"23 5.0-5.4 6.2-6.4 8.2","7.2-7.4":0.54295,"9.2":0.15367,"10.1":0.10244,"11.1-11.2":0.04098,"12.0":0.02049,"13.0":0.04098,"14.0":0.11269,"15.0":0.07171,"16.0":0.2766,"17.0":0.02049,"18.0":0.12293,"19.0":0.33807},I:{"0":0.07048,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.00021},A:{"11":0.04471,_:"6 7 8 9 10 5.5"},K:{"0":2.69356,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{_:"0"},Q:{_:"13.1"},O:{"0":1.52697},H:{"0":0.14},L:{"0":78.12757}}; diff --git a/node_modules/caniuse-lite/data/regions/KM.js b/node_modules/caniuse-lite/data/regions/KM.js new file mode 100644 index 00000000..edea3d72 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/KM.js @@ -0,0 +1 @@ +module.exports={C:{"36":0.00166,"49":0.00166,"56":0.00499,"66":0.00166,"103":0.00166,"115":1.54326,"117":0.04324,"118":0.59203,"119":0.04823,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 104 105 106 107 108 109 110 111 112 113 114 116 120 121 122 3.5 3.6"},D:{"37":0.00499,"39":0.00166,"41":0.00499,"51":0.00166,"54":0.00166,"58":0.01164,"78":0.00166,"79":0.00166,"81":0.01663,"83":0.01497,"87":0.00665,"89":0.05654,"90":0.00499,"92":0.00499,"97":0.00166,"98":0.08149,"100":0.00166,"103":0.00665,"105":0.00166,"106":0.02328,"107":0.00665,"109":1.87254,"112":0.04989,"113":0.02328,"114":0.02661,"115":0.05488,"116":0.23116,"117":3.00172,"118":2.44627,"119":0.00166,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 43 44 45 46 47 48 49 50 52 53 55 56 57 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 84 85 86 88 91 93 94 95 96 99 101 102 104 108 110 111 120 121 122"},F:{"49":0.01663,"79":0.01497,"90":0.00166,"95":0.01497,"102":0.52717,"103":0.12805,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 85 86 87 88 89 91 92 93 94 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"13":0.00499,"14":0.02661,"15":0.01164,"18":0.03326,"84":0.00166,"85":0.01164,"89":0.00499,"90":0.0316,"92":0.00665,"93":0.02661,"100":0.00166,"103":0.00166,"107":0.02827,"110":0.01164,"113":0.00499,"114":0.03326,"115":0.02328,"116":0.01497,"117":0.89303,"118":0.51054,_:"12 16 17 79 80 81 83 86 87 88 91 94 95 96 97 98 99 101 102 104 105 106 108 109 111 112 119"},E:{"12":0.00998,_:"0 4 5 6 7 8 9 10 11 13 14 15 3.1 3.2 6.1 7.1 9.1 10.1 14.1 15.1 15.4 16.0 16.1 16.2 16.5 17.1 17.2","5.1":0.00998,"11.1":0.00499,"12.1":0.00665,"13.1":0.01164,"15.2-15.3":0.00166,"15.5":0.00665,"15.6":0.0316,"16.3":0.00499,"16.4":0.00166,"16.6":0.02162,"17.0":0.0449},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0009,"5.0-5.1":0.0009,"6.0-6.1":0.00269,"7.0-7.1":0.00628,"8.1-8.4":0.0009,"9.0-9.2":0.00628,"9.3":0.02155,"10.0-10.2":0.0009,"10.3":0.03142,"11.0-11.2":0.02873,"11.3-11.4":0.00988,"12.0-12.1":0.00808,"12.2-12.5":0.14275,"13.0-13.1":0.00449,"13.2":0.02424,"13.3":0.00898,"13.4-13.7":0.02873,"14.0-14.4":0.07901,"14.5-14.8":0.12749,"15.0-15.1":0.05028,"15.2-15.3":0.05746,"15.4":0.06374,"15.5":0.09068,"15.6-15.7":0.62755,"16.0":0.23163,"16.1":0.44351,"16.2":0.21637,"16.3":0.40131,"16.4":0.08619,"16.5":0.22983,"16.6-16.7":4.30489,"17.0":1.53342,"17.1":0.09247,"17.2":0.00269},P:{"4":0.36799,"20":0.03067,"21":0.35777,"22":1.74798,"23":0.01022,"5.0-5.4":0.02044,_:"6.2-6.4 8.2 10.1 12.0 13.0 14.0 15.0","7.2-7.4":0.08178,"9.2":0.07155,"11.1-11.2":0.23511,"16.0":0.02044,"17.0":0.57244,"18.0":0.08178,"19.0":0.06133},I:{"0":0.03317,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.0001},A:{"8":0.00166,"11":0.04324,_:"6 7 9 10 5.5"},K:{"0":2.04899,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.01667,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.05002},Q:{_:"13.1"},O:{"0":0.16672},H:{"0":0.01},L:{"0":71.70615}}; diff --git a/node_modules/caniuse-lite/data/regions/KN.js b/node_modules/caniuse-lite/data/regions/KN.js new file mode 100644 index 00000000..b9d5ecf5 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/KN.js @@ -0,0 +1 @@ +module.exports={C:{"97":0.00511,"112":0.02045,"115":0.36302,"116":0.01534,"117":0.12783,"118":0.37325,"119":0.09203,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 98 99 100 101 102 103 104 105 106 107 108 109 110 111 113 114 120 121 122 3.5 3.6"},D:{"29":0.03579,"46":0.00511,"61":0.00511,"63":0.00511,"66":0.00511,"68":0.01023,"69":0.00511,"70":0.01534,"71":0.01023,"72":0.00511,"73":0.00511,"74":0.10226,"75":0.02557,"76":0.02045,"78":0.02045,"79":0.3528,"80":0.01534,"81":0.01023,"83":0.06136,"84":0.01023,"85":0.00511,"86":0.01023,"87":0.01023,"88":0.03068,"89":0.00511,"90":0.00511,"92":0.00511,"93":0.01534,"94":0.02045,"95":0.05113,"97":0.01534,"98":0.00511,"99":0.01023,"100":0.00511,"103":0.28122,"105":0.00511,"106":0.00511,"107":0.01534,"108":0.01023,"109":1.00726,"110":0.00511,"112":0.05624,"113":0.01023,"114":0.06136,"115":0.09715,"116":3.22119,"117":11.43778,"118":7.49055,"119":0.00511,"120":0.00511,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 59 60 62 64 65 67 77 91 96 101 102 104 111 121 122"},F:{"28":0.00511,"54":0.00511,"83":0.01534,"95":0.00511,"102":0.54709,"103":0.02557,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.03068},B:{"18":0.00511,"83":0.00511,"84":0.00511,"85":0.00511,"86":0.00511,"92":0.02557,"97":0.00511,"98":0.00511,"100":0.01534,"108":0.00511,"109":0.06136,"110":0.01023,"112":0.00511,"114":0.00511,"115":0.01023,"116":0.06136,"117":3.7376,"118":2.58207,_:"12 13 14 15 16 17 79 80 81 87 88 89 90 91 93 94 95 96 99 101 102 103 104 105 106 107 111 113 119"},E:{"14":0.05113,"15":0.04602,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 10.1 12.1 17.2","9.1":0.05113,"11.1":0.00511,"13.1":0.05113,"14.1":0.05113,"15.1":0.00511,"15.2-15.3":0.03068,"15.4":0.02045,"15.5":4.79088,"15.6":1.32427,"16.0":0.16362,"16.1":2.91952,"16.2":0.04602,"16.3":0.17384,"16.4":0.63401,"16.5":0.79763,"16.6":1.99918,"17.0":0.56243,"17.1":0.06647},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00137,"5.0-5.1":0.00137,"6.0-6.1":0.0041,"7.0-7.1":0.00957,"8.1-8.4":0.00137,"9.0-9.2":0.00957,"9.3":0.03281,"10.0-10.2":0.00137,"10.3":0.04785,"11.0-11.2":0.04375,"11.3-11.4":0.01504,"12.0-12.1":0.0123,"12.2-12.5":0.21737,"13.0-13.1":0.00684,"13.2":0.03691,"13.3":0.01367,"13.4-13.7":0.04375,"14.0-14.4":0.12031,"14.5-14.8":0.19413,"15.0-15.1":0.07656,"15.2-15.3":0.08749,"15.4":0.09706,"15.5":0.13808,"15.6-15.7":0.9556,"16.0":0.35271,"16.1":0.67535,"16.2":0.32947,"16.3":0.61109,"16.4":0.13124,"16.5":0.34998,"16.6-16.7":6.55526,"17.0":2.33501,"17.1":0.14081,"17.2":0.0041},P:{"4":0.07477,"20":0.06409,"21":0.14954,"22":1.86925,"23":0.43794,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 13.0 14.0 15.0 16.0 18.0","7.2-7.4":0.26704,"11.1-11.2":0.01068,"12.0":0.03204,"17.0":0.01068,"19.0":0.01068},I:{"0":0.12153,"3":0,"4":0.00002,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00009,"4.4":0,"4.4.3-4.4.4":0.00037},A:{"11":0.0767,_:"6 7 8 9 10 5.5"},K:{"0":1.84202,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.05375},Q:{_:"13.1"},O:{"0":0.00489},H:{"0":0},L:{"0":33.94422}}; diff --git a/node_modules/caniuse-lite/data/regions/KP.js b/node_modules/caniuse-lite/data/regions/KP.js new file mode 100644 index 00000000..b4533cff --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/KP.js @@ -0,0 +1 @@ +module.exports={C:{"114":1.001,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 115 116 117 118 119 120 121 122 3.5 3.6"},D:{"101":1.3335,"115":0.665,"116":0.3325,"117":8.9985,"118":1.001,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 102 103 104 105 106 107 108 109 110 111 112 113 114 119 120 121 122"},F:{"95":0.3325,"103":0.665,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 102 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"92":1.001,"109":0.3325,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 110 111 112 113 114 115 116 117 118 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 15.1 15.2-15.3 15.4 15.5 15.6 16.0 16.1 16.2 16.3 16.4 16.5 17.2","14.1":1.666,"16.6":6.6675,"17.0":9.667,"17.1":0.3325},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00623,"5.0-5.1":0.00623,"6.0-6.1":0.01869,"7.0-7.1":0.04361,"8.1-8.4":0.00623,"9.0-9.2":0.04361,"9.3":0.14953,"10.0-10.2":0.00623,"10.3":0.21806,"11.0-11.2":0.19937,"11.3-11.4":0.06853,"12.0-12.1":0.05607,"12.2-12.5":0.99061,"13.0-13.1":0.03115,"13.2":0.16822,"13.3":0.0623,"13.4-13.7":0.19937,"14.0-14.4":0.54826,"14.5-14.8":0.8847,"15.0-15.1":0.34889,"15.2-15.3":0.39874,"15.4":0.44235,"15.5":0.62926,"15.6-15.7":4.35494,"16.0":1.6074,"16.1":3.07774,"16.2":1.50149,"16.3":2.78492,"16.4":0.5981,"16.5":1.59494,"16.6-16.7":29.87405,"17.0":10.64127,"17.1":0.64172,"17.2":0.01869},P:{_:"4 20 21 22 23 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0"},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{_:"0"},Q:{_:"13.1"},O:{_:"0"},H:{"0":0},L:{"0":2.6975}}; diff --git a/node_modules/caniuse-lite/data/regions/KR.js b/node_modules/caniuse-lite/data/regions/KR.js new file mode 100644 index 00000000..e0df45f5 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/KR.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.00378,"78":0.00378,"95":0.00378,"102":0.00378,"107":0.00378,"109":0.00755,"115":0.04153,"116":0.00378,"117":0.01888,"118":0.37373,"119":0.08305,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 103 104 105 106 108 110 111 112 113 114 120 121 122 3.5 3.6"},D:{"42":0.01133,"48":0.00378,"49":0.00378,"56":0.00378,"68":0.01133,"70":0.00378,"77":0.06795,"79":0.00755,"80":0.00378,"81":0.0302,"83":0.00378,"85":0.00378,"86":0.01888,"87":0.01133,"88":0.00378,"89":0.00755,"90":0.05663,"91":0.00378,"92":0.00378,"93":0.00378,"94":0.12458,"95":0.00755,"96":0.00378,"97":0.00378,"98":0.01133,"99":0.00378,"100":0.0151,"101":0.0302,"102":0.02643,"103":0.03398,"104":0.01888,"105":0.0151,"106":0.03398,"107":0.02643,"108":0.04908,"109":0.93243,"110":0.01888,"111":0.0453,"112":0.03775,"113":0.03398,"114":0.11325,"115":0.0906,"116":0.74368,"117":11.8535,"118":11.41938,"119":0.01888,"120":0.00755,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 50 51 52 53 54 55 57 58 59 60 61 62 63 64 65 66 67 69 71 72 73 74 75 76 78 84 121 122"},F:{"95":0.00378,"102":0.09438,"103":0.05285,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00378,"92":0.00755,"97":0.00378,"100":0.00378,"103":0.00755,"104":0.00378,"105":0.00378,"106":0.00378,"107":0.01888,"108":0.0151,"109":0.0906,"110":0.01133,"111":0.01888,"112":0.01133,"113":0.0151,"114":0.04908,"115":0.02643,"116":0.06418,"117":2.66515,"118":2.81238,"119":0.00755,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 98 99 101 102"},E:{"8":0.00378,"14":0.00755,_:"0 4 5 6 7 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 10.1 11.1 17.2","9.1":0.00755,"12.1":0.00378,"13.1":0.00755,"14.1":0.0151,"15.1":0.00378,"15.2-15.3":0.00378,"15.4":0.01133,"15.5":0.01133,"15.6":0.05285,"16.0":0.01133,"16.1":0.0302,"16.2":0.02643,"16.3":0.0604,"16.4":0.0151,"16.5":0.05285,"16.6":0.38128,"17.0":0.24538,"17.1":0.01888},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00137,"5.0-5.1":0.00137,"6.0-6.1":0.0041,"7.0-7.1":0.00957,"8.1-8.4":0.00137,"9.0-9.2":0.00957,"9.3":0.03281,"10.0-10.2":0.00137,"10.3":0.04785,"11.0-11.2":0.04374,"11.3-11.4":0.01504,"12.0-12.1":0.0123,"12.2-12.5":0.21735,"13.0-13.1":0.00684,"13.2":0.03691,"13.3":0.01367,"13.4-13.7":0.04374,"14.0-14.4":0.1203,"14.5-14.8":0.19412,"15.0-15.1":0.07655,"15.2-15.3":0.08749,"15.4":0.09706,"15.5":0.13807,"15.6-15.7":0.95554,"16.0":0.35269,"16.1":0.6753,"16.2":0.32945,"16.3":0.61105,"16.4":0.13123,"16.5":0.34995,"16.6-16.7":6.55481,"17.0":2.33485,"17.1":0.1408,"17.2":0.0041},P:{"20":0.12221,"21":0.2648,"22":12.63905,"23":2.83131,_:"4 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2","12.0":0.01018,"13.0":0.01018,"14.0":0.01018,"15.0":0.01018,"16.0":0.03055,"17.0":0.03055,"18.0":0.07129,"19.0":0.06111},I:{"0":0.12387,"3":0,"4":0.00002,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00009,"4.4":0,"4.4.3-4.4.4":0.00037},A:{"8":0.00499,"11":0.13469,_:"6 7 9 10 5.5"},K:{"0":0.25523,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.14318},Q:{"13.1":0.00623},O:{"0":0.06225},H:{"0":0},L:{"0":27.87315}}; diff --git a/node_modules/caniuse-lite/data/regions/KW.js b/node_modules/caniuse-lite/data/regions/KW.js new file mode 100644 index 00000000..652eb2a4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/KW.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00276,"48":0.00276,"65":0.00276,"68":0.00276,"78":0.00276,"102":0.00552,"112":0.00276,"115":0.07447,"116":0.00276,"117":0.02758,"118":0.3613,"119":0.06619,"120":0.00276,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 105 106 107 108 109 110 111 113 114 121 122 3.5 3.6"},D:{"38":0.00552,"47":0.00276,"49":0.01655,"56":0.00552,"58":0.00552,"64":0.00276,"68":0.00552,"74":0.00276,"75":0.00827,"76":0.00276,"78":0.01103,"79":0.02206,"80":0.00552,"81":0.00276,"83":0.00827,"85":0.00276,"86":0.01379,"87":0.01379,"88":0.01103,"89":0.00276,"90":0.02206,"91":0.00552,"92":0.00827,"93":0.01379,"94":0.00827,"95":0.00276,"96":0.00552,"97":0.00276,"98":0.00276,"99":0.01379,"100":0.00552,"101":0.00552,"102":0.01655,"103":0.1379,"104":0.00827,"105":0.00827,"106":0.01103,"107":0.03861,"108":0.01103,"109":0.73363,"110":0.01655,"111":0.02758,"112":0.01931,"113":0.02482,"114":0.1048,"115":0.07447,"116":0.57091,"117":9.28619,"118":8.23539,"119":0.00827,"120":0.00276,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 53 54 55 57 59 60 61 62 63 65 66 67 69 70 71 72 73 77 84 121 122"},F:{"28":0.01379,"46":0.01379,"95":0.01379,"101":0.01931,"102":0.78327,"103":0.11859,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"16":0.00276,"18":0.01103,"84":0.00276,"91":0.00276,"92":0.00552,"100":0.00276,"104":0.00552,"105":0.01379,"106":0.01379,"107":0.00552,"108":0.00276,"109":0.0331,"110":0.00276,"111":0.00276,"112":0.00276,"113":0.00827,"114":0.01655,"115":0.00827,"116":0.06895,"117":1.40106,"118":1.21628,"119":0.01379,_:"12 13 14 15 17 79 80 81 83 85 86 87 88 89 90 93 94 95 96 97 98 99 101 102 103"},E:{"7":0.09101,"13":0.00276,"14":0.0331,"15":0.01655,_:"0 4 5 6 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.00552,"12.1":0.00276,"13.1":0.02482,"14.1":0.28132,"15.1":0.02206,"15.2-15.3":0.00827,"15.4":0.04413,"15.5":0.06619,"15.6":0.15445,"16.0":0.01379,"16.1":0.12411,"16.2":0.04964,"16.3":0.17651,"16.4":0.0524,"16.5":0.09377,"16.6":0.65089,"17.0":0.31717,"17.1":0.02206},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00254,"5.0-5.1":0.00254,"6.0-6.1":0.00762,"7.0-7.1":0.01779,"8.1-8.4":0.00254,"9.0-9.2":0.01779,"9.3":0.06099,"10.0-10.2":0.00254,"10.3":0.08894,"11.0-11.2":0.08132,"11.3-11.4":0.02795,"12.0-12.1":0.02287,"12.2-12.5":0.40405,"13.0-13.1":0.01271,"13.2":0.06861,"13.3":0.02541,"13.4-13.7":0.08132,"14.0-14.4":0.22363,"14.5-14.8":0.36085,"15.0-15.1":0.14231,"15.2-15.3":0.16264,"15.4":0.18043,"15.5":0.25666,"15.6-15.7":1.77631,"16.0":0.65563,"16.1":1.25536,"16.2":0.61243,"16.3":1.13592,"16.4":0.24396,"16.5":0.65055,"16.6-16.7":12.18514,"17.0":4.3404,"17.1":0.26175,"17.2":0.00762},P:{"4":0.0306,"20":0.13258,"21":0.39774,"22":3.27373,"23":0.48953,"5.0-5.4":0.0102,_:"6.2-6.4 10.1 12.0","7.2-7.4":0.14278,"8.2":0.0102,"9.2":0.0102,"11.1-11.2":0.04079,"13.0":0.0306,"14.0":0.04079,"15.0":0.04079,"16.0":0.07139,"17.0":0.04079,"18.0":0.06119,"19.0":0.12238},I:{"0":0.05044,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00015},A:{"11":0.02206,_:"6 7 8 9 10 5.5"},K:{"0":1.79602,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.12311},Q:{"13.1":0.00724},O:{"0":1.73084},H:{"0":0},L:{"0":39.21509}}; diff --git a/node_modules/caniuse-lite/data/regions/KY.js b/node_modules/caniuse-lite/data/regions/KY.js new file mode 100644 index 00000000..89cd4798 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/KY.js @@ -0,0 +1 @@ +module.exports={C:{"78":0.01379,"110":0.0069,"114":0.0069,"115":0.24822,"117":0.06206,"118":0.99978,"119":0.38612,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 111 112 113 116 120 121 122 3.5 3.6"},D:{"50":0.0069,"63":0.0069,"68":0.02758,"74":0.0069,"76":0.0069,"77":0.0069,"78":0.0069,"79":0.08964,"81":0.0069,"83":0.0069,"87":0.04827,"88":0.0069,"89":0.0069,"90":0.0069,"91":0.0069,"92":0.01379,"93":0.02069,"95":0.02758,"99":0.0069,"101":0.03448,"102":0.02069,"103":0.64813,"104":0.0069,"106":0.01379,"108":0.0069,"109":0.36544,"110":0.0069,"111":0.0069,"112":0.06206,"113":0.02758,"114":1.66859,"115":0.20685,"116":1.379,"117":16.04467,"118":16.24462,"119":0.0069,"120":0.0069,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 52 53 54 55 56 57 58 59 60 61 62 64 65 66 67 69 70 71 72 73 75 80 84 85 86 94 96 97 98 100 105 107 121 122"},F:{"102":0.84809,"103":0.02758,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"104":0.01379,"109":0.0069,"110":0.09653,"112":0.0069,"113":0.0069,"114":0.0069,"115":0.02758,"116":0.05516,"117":3.24065,"118":3.07517,"119":0.0069,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 105 106 107 108 111"},E:{"14":0.18617,"15":0.02069,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 10.1 11.1 17.2","9.1":0.02069,"12.1":0.10343,"13.1":0.59987,"14.1":0.19306,"15.1":0.0069,"15.2-15.3":0.04137,"15.4":0.21375,"15.5":0.02758,"15.6":0.62745,"16.0":0.2827,"16.1":2.45462,"16.2":0.18617,"16.3":8.75665,"16.4":0.08274,"16.5":0.17927,"16.6":7.39144,"17.0":0.75845,"17.1":0.07585},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00139,"5.0-5.1":0.00139,"6.0-6.1":0.00418,"7.0-7.1":0.00976,"8.1-8.4":0.00139,"9.0-9.2":0.00976,"9.3":0.03345,"10.0-10.2":0.00139,"10.3":0.04878,"11.0-11.2":0.0446,"11.3-11.4":0.01533,"12.0-12.1":0.01254,"12.2-12.5":0.22162,"13.0-13.1":0.00697,"13.2":0.03763,"13.3":0.01394,"13.4-13.7":0.0446,"14.0-14.4":0.12266,"14.5-14.8":0.19792,"15.0-15.1":0.07805,"15.2-15.3":0.08921,"15.4":0.09896,"15.5":0.14078,"15.6-15.7":0.97429,"16.0":0.35961,"16.1":0.68855,"16.2":0.33591,"16.3":0.62304,"16.4":0.13381,"16.5":0.35682,"16.6-16.7":6.68344,"17.0":2.38067,"17.1":0.14356,"17.2":0.00418},P:{"4":0.08331,"20":0.02083,"21":0.02083,"22":2.6556,"23":0.63526,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 13.0 15.0 18.0","7.2-7.4":0.02083,"11.1-11.2":0.04166,"14.0":0.01041,"16.0":0.02083,"17.0":0.01041,"19.0":0.01041},I:{"0":0.00618,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.00002},A:{"11":0.04827,_:"6 7 8 9 10 5.5"},K:{"0":0.02795,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.11178},Q:{_:"13.1"},O:{"0":0.05279},H:{"0":0},L:{"0":13.54452}}; diff --git a/node_modules/caniuse-lite/data/regions/KZ.js b/node_modules/caniuse-lite/data/regions/KZ.js new file mode 100644 index 00000000..34508aa4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/KZ.js @@ -0,0 +1 @@ +module.exports={C:{"47":0.00326,"48":0.00326,"50":0.00326,"51":0.00652,"52":0.04237,"56":0.00326,"59":0.00326,"62":0.00326,"72":0.00326,"99":0.00652,"101":0.01304,"102":0.00326,"104":0.00652,"107":0.00978,"108":0.00326,"109":0.00326,"111":0.00652,"112":0.00326,"113":0.00326,"114":0.00326,"115":0.34871,"116":0.00652,"117":0.03911,"118":0.69743,"119":0.1271,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 49 53 54 55 57 58 60 61 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 100 103 105 106 110 120 121 122 3.5 3.6"},D:{"22":0.00326,"26":0.00326,"34":0.00652,"35":0.01304,"38":0.00326,"40":0.00652,"41":0.00326,"43":0.00326,"44":0.00326,"45":0.00326,"46":0.00326,"47":0.00326,"48":0.00326,"49":0.0163,"51":0.00652,"53":0.00652,"64":0.00978,"66":0.00652,"67":0.00326,"68":0.00326,"69":0.00326,"70":0.00326,"71":0.00326,"72":0.00652,"73":0.00326,"74":0.0163,"75":0.00652,"76":0.00326,"77":0.00652,"78":0.00652,"79":0.03259,"80":0.00978,"81":0.00326,"83":0.01955,"84":0.00652,"85":0.02933,"86":0.01304,"87":0.01304,"88":0.01304,"89":0.00652,"90":0.00978,"91":0.06192,"92":0.00652,"93":0.00326,"94":0.00652,"95":0.00652,"96":0.00978,"97":0.04563,"98":0.00652,"99":0.01304,"100":0.01955,"101":0.00978,"102":0.05214,"103":0.08473,"104":0.00978,"105":0.03911,"106":0.15643,"107":0.03911,"108":0.11407,"109":2.52898,"110":0.06518,"111":0.06192,"112":0.07496,"113":0.09777,"114":0.15317,"115":0.0717,"116":1.05266,"117":7.00033,"118":6.81131,"119":0.00978,"120":0.00326,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 36 37 39 42 50 52 54 55 56 57 58 59 60 61 62 63 65 121 122"},F:{"36":0.00978,"56":0.00652,"70":0.00326,"77":0.00326,"78":0.00326,"79":0.02933,"82":0.00326,"83":0.00326,"84":0.0163,"85":0.05214,"86":0.00652,"87":0.00326,"88":0.00326,"93":0.00326,"95":0.34545,"96":0.00978,"99":0.00652,"100":0.00326,"101":0.0163,"102":1.39485,"103":0.56055,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 80 81 89 90 91 92 94 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00652,"84":0.00326,"89":0.00652,"90":0.00326,"92":0.00978,"100":0.00326,"107":0.00652,"108":0.00978,"109":0.01304,"110":0.00326,"111":0.00326,"112":0.00326,"113":0.00652,"114":0.00652,"115":0.00652,"116":0.03259,"117":1.17324,"118":1.07221,"119":0.00326,_:"12 13 14 15 16 17 79 80 81 83 85 86 87 88 91 93 94 95 96 97 98 99 101 102 103 104 105 106"},E:{"9":0.00652,"13":0.00326,"14":0.01955,_:"0 4 5 6 7 8 10 11 12 15 3.1 3.2 6.1 7.1 10.1 11.1 17.2","5.1":0.07496,"9.1":0.01304,"12.1":0.00652,"13.1":0.03585,"14.1":0.04563,"15.1":0.01304,"15.2-15.3":0.00652,"15.4":0.01955,"15.5":0.02281,"15.6":0.11732,"16.0":0.00978,"16.1":0.06518,"16.2":0.06192,"16.3":0.09777,"16.4":0.10103,"16.5":0.12058,"16.6":0.46604,"17.0":0.39434,"17.1":0.04889},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00199,"5.0-5.1":0.00199,"6.0-6.1":0.00597,"7.0-7.1":0.01392,"8.1-8.4":0.00199,"9.0-9.2":0.01392,"9.3":0.04773,"10.0-10.2":0.00199,"10.3":0.06961,"11.0-11.2":0.06364,"11.3-11.4":0.02188,"12.0-12.1":0.0179,"12.2-12.5":0.31623,"13.0-13.1":0.00994,"13.2":0.0537,"13.3":0.01989,"13.4-13.7":0.06364,"14.0-14.4":0.17502,"14.5-14.8":0.28242,"15.0-15.1":0.11138,"15.2-15.3":0.12729,"15.4":0.14121,"15.5":0.20088,"15.6-15.7":1.39023,"16.0":0.51313,"16.1":0.98251,"16.2":0.47932,"16.3":0.88903,"16.4":0.19093,"16.5":0.50916,"16.6-16.7":9.53673,"17.0":3.39702,"17.1":0.20486,"17.2":0.00597},P:{"4":0.07132,"20":0.12226,"21":0.19358,"22":1.70147,"23":0.25471,_:"5.0-5.4 6.2-6.4 8.2 10.1","7.2-7.4":0.07132,"9.2":0.01019,"11.1-11.2":0.02038,"12.0":0.01019,"13.0":0.03057,"14.0":0.02038,"15.0":0.01019,"16.0":0.04075,"17.0":0.04075,"18.0":0.05094,"19.0":0.08151},I:{"0":0.03354,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.0001},A:{"6":0.00674,"8":0.01686,"9":0.00337,"10":0.00337,"11":0.06743,_:"7 5.5"},K:{"0":0.41126,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.10113},Q:{_:"13.1"},O:{"0":0.58655},H:{"0":0},L:{"0":42.24852}}; diff --git a/node_modules/caniuse-lite/data/regions/LA.js b/node_modules/caniuse-lite/data/regions/LA.js new file mode 100644 index 00000000..83a43778 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/LA.js @@ -0,0 +1 @@ +module.exports={C:{"2":0.00228,"3":0.00456,"4":0.00228,"5":0.00228,"21":0.00228,"26":0.00228,"30":0.00228,"31":0.00228,"36":0.00228,"37":0.00228,"38":0.00228,"39":0.01367,"40":0.00456,"42":0.00228,"44":0.00228,"45":0.00228,"47":0.00228,"52":0.00684,"72":0.00228,"88":0.00228,"100":0.0114,"101":0.00228,"104":0.00228,"106":0.05242,"107":0.02735,"108":0.00228,"109":0.00228,"110":0.08888,"112":0.00228,"114":0.00228,"115":0.10028,"116":0.00456,"117":0.02051,"118":0.49454,"119":0.07521,_:"6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 27 28 29 32 33 34 35 41 43 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 95 96 97 98 99 102 103 105 111 113 120 121 122","3.5":0.00228,"3.6":0.00456},D:{"11":0.00228,"21":0.00228,"22":0.00228,"28":0.00228,"31":0.00228,"32":0.00228,"33":0.00228,"36":0.00456,"37":0.09572,"38":0.00228,"39":0.00228,"40":0.00228,"41":0.0114,"42":0.00228,"43":0.01823,"44":0.00912,"45":0.0114,"46":0.00912,"47":0.00684,"49":0.00228,"51":0.01823,"55":0.00228,"56":0.00456,"58":0.00228,"61":0.00228,"63":0.00228,"64":0.00228,"65":0.00684,"66":0.00228,"68":0.00228,"69":0.00228,"70":0.0114,"71":0.00228,"72":0.00456,"74":0.00912,"75":0.00684,"76":0.00228,"77":0.00228,"78":0.00456,"79":0.01367,"80":0.00228,"83":0.04558,"84":0.00228,"85":0.00228,"86":0.02963,"87":0.00912,"88":0.01595,"89":0.00912,"90":0.0114,"91":0.00684,"92":0.01367,"93":0.00228,"94":0.01595,"95":0.00228,"96":0.02963,"97":0.00684,"98":0.05014,"99":0.07065,"100":0.00684,"101":0.00456,"102":0.02279,"103":0.05925,"104":0.0114,"105":0.02735,"106":0.01367,"107":0.02735,"108":0.04786,"109":1.43805,"110":0.01367,"111":0.03874,"112":0.05925,"113":0.06381,"114":0.09344,"115":0.07977,"116":0.37604,"117":5.89577,"118":5.75448,"119":0.00684,"120":0.00912,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 23 24 25 26 27 29 30 34 35 48 50 52 53 54 57 59 60 62 67 73 81 121 122"},F:{"30":0.00228,"31":0.00228,"89":0.00456,"94":0.00228,"95":0.04102,"102":0.19372,"103":0.11851,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 90 91 92 93 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.00456},B:{"12":0.00456,"14":0.00228,"15":0.00456,"17":0.00228,"18":0.02051,"84":0.00228,"89":0.00228,"90":0.00228,"92":0.04558,"100":0.00456,"102":0.00228,"108":0.00228,"109":0.02507,"110":0.00228,"111":0.00456,"112":0.00228,"113":0.00912,"114":0.0114,"115":0.00912,"116":0.03646,"117":1.15545,"118":1.10304,"119":0.00684,_:"13 16 79 80 81 83 85 86 87 88 91 93 94 95 96 97 98 99 101 103 104 105 106 107"},E:{"5":0.00228,"8":0.0114,"9":0.02051,"13":0.00456,"14":0.00912,_:"0 4 6 7 10 11 12 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 17.2","5.1":0.00228,"13.1":0.0114,"14.1":0.14586,"15.1":0.00912,"15.2-15.3":0.00228,"15.4":0.00684,"15.5":0.00684,"15.6":0.10939,"16.0":0.01823,"16.1":0.03191,"16.2":0.03874,"16.3":0.04558,"16.4":0.02507,"16.5":0.02963,"16.6":0.24841,"17.0":0.26664,"17.1":0.02963},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00176,"5.0-5.1":0.00176,"6.0-6.1":0.00529,"7.0-7.1":0.01234,"8.1-8.4":0.00176,"9.0-9.2":0.01234,"9.3":0.04232,"10.0-10.2":0.00176,"10.3":0.06172,"11.0-11.2":0.05643,"11.3-11.4":0.0194,"12.0-12.1":0.01587,"12.2-12.5":0.28039,"13.0-13.1":0.00882,"13.2":0.04761,"13.3":0.01763,"13.4-13.7":0.05643,"14.0-14.4":0.15519,"14.5-14.8":0.25041,"15.0-15.1":0.09875,"15.2-15.3":0.11286,"15.4":0.12521,"15.5":0.17811,"15.6-15.7":1.23267,"16.0":0.45498,"16.1":0.87116,"16.2":0.425,"16.3":0.78827,"16.4":0.16929,"16.5":0.45145,"16.6-16.7":8.45587,"17.0":3.01202,"17.1":0.18164,"17.2":0.00529},P:{"4":0.12256,"20":0.09192,"21":0.26555,"22":1.57286,"23":0.23491,"5.0-5.4":0.01021,"6.2-6.4":0.01021,"7.2-7.4":0.11235,_:"8.2 10.1 12.0","9.2":0.02043,"11.1-11.2":0.02043,"13.0":0.03064,"14.0":0.05107,"15.0":0.02043,"16.0":0.14299,"17.0":0.05107,"18.0":0.05107,"19.0":0.10213},I:{"0":0.16131,"3":0,"4":0.00003,"2.1":0,"2.2":0.00005,"2.3":0,"4.1":0.00003,"4.2-4.3":0.00011,"4.4":0,"4.4.3-4.4.4":0.00049},A:{"6":0.0081,"7":0.01215,"8":0.12155,"9":0.02431,"10":0.02431,"11":0.20258,_:"5.5"},K:{"0":0.25479,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00772,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.10037},Q:{"13.1":0.12354},O:{"0":1.1041},H:{"0":0},L:{"0":56.85032}}; diff --git a/node_modules/caniuse-lite/data/regions/LB.js b/node_modules/caniuse-lite/data/regions/LB.js new file mode 100644 index 00000000..c67b1eb4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/LB.js @@ -0,0 +1 @@ +module.exports={C:{"12":0.00666,"52":0.03662,"68":0.00666,"72":0.00333,"78":0.01332,"91":0.00333,"99":0.00333,"102":0.00666,"104":0.00333,"110":0.00333,"113":0.00333,"114":0.01332,"115":0.3329,"116":0.01332,"117":0.02996,"118":0.97207,"119":0.20307,"120":0.00333,_:"2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 98 100 101 103 105 106 107 108 109 111 112 121 122 3.5 3.6"},D:{"34":0.01332,"38":0.01332,"43":0.00333,"49":0.02996,"57":0.00333,"58":0.06991,"63":0.00333,"64":0.00666,"65":0.00666,"66":0.00666,"67":0.0233,"68":0.00333,"69":0.00333,"70":0.01665,"71":0.00666,"72":0.00333,"73":0.00333,"74":0.00333,"75":0.00666,"76":0.00666,"77":0.00666,"78":0.00333,"79":0.04661,"80":0.00666,"81":0.00666,"83":0.00999,"84":0.00333,"85":0.00666,"86":0.03995,"87":0.0233,"88":0.00666,"89":0.00333,"90":0.00999,"91":0.02663,"92":0.00666,"94":0.00666,"95":0.00999,"96":0.00666,"97":0.00333,"98":0.01332,"99":0.01332,"100":0.01332,"101":0.00666,"102":0.00999,"103":0.05992,"104":0.00666,"105":0.01332,"106":0.00666,"107":0.02663,"108":0.05992,"109":3.05935,"110":0.00999,"111":0.03329,"112":0.07657,"113":0.02663,"114":0.09321,"115":0.08323,"116":0.73238,"117":8.52557,"118":8.93171,"119":0.00999,"120":0.00333,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 44 45 46 47 48 50 51 52 53 54 55 56 59 60 61 62 93 121 122"},F:{"28":0.00333,"79":0.00333,"83":0.00333,"84":0.00333,"85":0.00333,"95":0.03662,"101":0.01997,"102":0.49602,"103":0.14648,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00333,"13":0.00333,"14":0.00333,"15":0.00999,"16":0.00333,"17":0.00666,"18":0.01332,"84":0.00333,"89":0.01332,"90":0.00333,"92":0.03662,"98":0.00999,"100":0.00666,"106":0.00333,"107":0.00666,"109":0.06991,"110":0.00666,"111":0.00666,"112":0.00333,"113":0.00333,"114":0.00999,"115":0.00999,"116":0.11319,"117":1.52135,"118":1.46476,_:"79 80 81 83 85 86 87 88 91 93 94 95 96 97 99 101 102 103 104 105 108 119"},E:{"7":0.00333,"13":0.00333,"14":0.04328,"15":0.00999,_:"0 4 5 6 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.26965,"11.1":0.00333,"12.1":0.01332,"13.1":0.09321,"14.1":0.11319,"15.1":0.01997,"15.2-15.3":0.09321,"15.4":0.01332,"15.5":0.34622,"15.6":0.1831,"16.0":0.01997,"16.1":0.05659,"16.2":0.02996,"16.3":0.19974,"16.4":0.04328,"16.5":0.08323,"16.6":0.67579,"17.0":0.30627,"17.1":0.02663},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00189,"5.0-5.1":0.00189,"6.0-6.1":0.00568,"7.0-7.1":0.01325,"8.1-8.4":0.00189,"9.0-9.2":0.01325,"9.3":0.04541,"10.0-10.2":0.00189,"10.3":0.06623,"11.0-11.2":0.06055,"11.3-11.4":0.02082,"12.0-12.1":0.01703,"12.2-12.5":0.30087,"13.0-13.1":0.00946,"13.2":0.05109,"13.3":0.01892,"13.4-13.7":0.06055,"14.0-14.4":0.16652,"14.5-14.8":0.2687,"15.0-15.1":0.10597,"15.2-15.3":0.12111,"15.4":0.13435,"15.5":0.19112,"15.6-15.7":1.3227,"16.0":0.48821,"16.1":0.93479,"16.2":0.45604,"16.3":0.84585,"16.4":0.18166,"16.5":0.48442,"16.6-16.7":9.07348,"17.0":3.23201,"17.1":0.1949,"17.2":0.00568},P:{"4":0.1642,"20":0.06158,"21":0.20525,"22":3.33534,"23":0.66707,"5.0-5.4":0.01026,_:"6.2-6.4 8.2 10.1","7.2-7.4":0.13341,"9.2":0.01026,"11.1-11.2":0.02053,"12.0":0.01026,"13.0":0.04105,"14.0":0.05131,"15.0":0.04105,"16.0":0.05131,"17.0":0.11289,"18.0":0.04105,"19.0":0.09236},I:{"0":0.073,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.00022},A:{"9":0.00333,"11":0.06991,_:"6 7 8 10 5.5"},K:{"0":0.27347,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.12673},Q:{_:"13.1"},O:{"0":0.25346},H:{"0":0},L:{"0":44.17794}}; diff --git a/node_modules/caniuse-lite/data/regions/LC.js b/node_modules/caniuse-lite/data/regions/LC.js new file mode 100644 index 00000000..121ee36f --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/LC.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.00399,"87":0.01198,"96":0.00399,"102":0.00399,"109":0.00399,"112":0.00399,"115":0.09586,"116":0.00399,"117":0.03994,"118":0.51123,"119":0.07988,"120":0.00399,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 88 89 90 91 92 93 94 95 97 98 99 100 101 103 104 105 106 107 108 110 111 113 114 121 122 3.5 3.6"},D:{"49":0.00799,"70":0.00399,"71":0.00399,"73":0.00399,"74":0.00399,"75":0.00399,"76":0.00799,"79":0.0679,"83":0.00399,"84":0.00799,"87":0.04393,"88":0.01598,"92":0.00399,"93":0.05991,"94":0.00399,"96":0.01198,"99":0.00799,"100":0.00399,"102":0.00399,"103":0.17174,"104":0.03595,"105":0.01598,"106":0.00399,"107":0.00399,"108":0.00399,"109":1.09036,"110":0.10784,"111":0.00799,"112":0.01198,"113":0.00399,"114":0.0679,"115":0.07189,"116":1.56165,"117":12.5811,"118":11.30302,"119":0.07988,"120":0.01997,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 72 77 78 80 81 85 86 89 90 91 95 97 98 101 121 122"},F:{"28":0.00799,"101":0.00399,"102":0.49526,"103":0.09985,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"15":0.00399,"18":0.00799,"92":0.01198,"94":0.00399,"105":0.00399,"109":0.01198,"111":0.00399,"112":0.00799,"113":0.01598,"114":0.1997,"115":0.02396,"116":0.07189,"117":2.30054,"118":2.22466,"119":0.01198,_:"12 13 14 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 95 96 97 98 99 100 101 102 103 104 106 107 108 110"},E:{"14":0.0639,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 17.2","5.1":0.00399,"13.1":0.11583,"14.1":0.01997,"15.1":0.00799,"15.2-15.3":0.01598,"15.4":0.00799,"15.5":0.03195,"15.6":0.24763,"16.0":0.00799,"16.1":0.05192,"16.2":0.04393,"16.3":0.04793,"16.4":0.01598,"16.5":0.07589,"16.6":0.89466,"17.0":0.31553,"17.1":0.01198},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00122,"5.0-5.1":0.00122,"6.0-6.1":0.00366,"7.0-7.1":0.00855,"8.1-8.4":0.00122,"9.0-9.2":0.00855,"9.3":0.02932,"10.0-10.2":0.00122,"10.3":0.04276,"11.0-11.2":0.03909,"11.3-11.4":0.01344,"12.0-12.1":0.01099,"12.2-12.5":0.19424,"13.0-13.1":0.00611,"13.2":0.03298,"13.3":0.01222,"13.4-13.7":0.03909,"14.0-14.4":0.1075,"14.5-14.8":0.17347,"15.0-15.1":0.06841,"15.2-15.3":0.07818,"15.4":0.08674,"15.5":0.12338,"15.6-15.7":0.85391,"16.0":0.31518,"16.1":0.60348,"16.2":0.29441,"16.3":0.54606,"16.4":0.11728,"16.5":0.31273,"16.6-16.7":5.85767,"17.0":2.08653,"17.1":0.12583,"17.2":0.00366},P:{"4":0.05259,"20":0.10518,"21":0.16828,"22":4.36482,"23":0.96762,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1","7.2-7.4":0.61002,"11.1-11.2":0.06311,"12.0":0.01052,"13.0":0.02104,"14.0":0.04207,"15.0":0.03155,"16.0":0.04207,"17.0":0.04207,"18.0":0.02104,"19.0":0.09466},I:{"0":0.01195,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00004},A:{"11":0.01997,_:"6 7 8 9 10 5.5"},K:{"0":0.11814,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00601,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.16817},Q:{_:"13.1"},O:{"0":0.04204},H:{"0":0.02},L:{"0":44.58681}}; diff --git a/node_modules/caniuse-lite/data/regions/LI.js b/node_modules/caniuse-lite/data/regions/LI.js new file mode 100644 index 00000000..23419077 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/LI.js @@ -0,0 +1 @@ +module.exports={C:{"2":0.0067,"3":0.0268,"4":0.0134,"5":0.0067,"8":0.0067,"11":0.0067,"12":0.0067,"14":0.0067,"15":0.0067,"16":0.0134,"17":0.0134,"18":0.0067,"19":0.0134,"20":0.0134,"21":0.0134,"22":0.0067,"23":0.0067,"24":0.0067,"25":0.0067,"26":0.0134,"27":0.0067,"30":0.0067,"31":0.0268,"32":0.0067,"34":0.0067,"35":0.0268,"36":0.0067,"37":0.0134,"38":0.0268,"39":0.0201,"40":0.04019,"41":0.0067,"52":0.0067,"78":0.0067,"89":0.0067,"109":0.0201,"115":0.22107,"116":0.0268,"117":0.09379,"118":5.45299,"119":0.71679,_:"6 7 9 10 13 28 29 33 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 110 111 112 113 114 120 121 122","3.5":0.0067,"3.6":0.05359},D:{"6":0.0134,"9":0.0067,"10":0.0134,"11":0.0134,"12":0.0067,"14":0.0067,"17":0.0067,"18":0.0067,"19":0.0134,"21":0.0201,"22":0.0067,"27":0.0067,"28":0.0067,"29":0.0134,"30":0.0134,"31":0.0201,"32":0.0067,"33":0.0134,"34":0.0067,"35":0.0067,"36":0.0134,"37":0.0134,"38":0.0134,"39":0.0335,"40":0.05359,"41":0.07369,"42":0.0268,"43":0.07369,"44":0.13398,"45":0.09379,"46":0.10049,"47":0.09379,"49":0.20097,"51":0.15408,"69":0.0067,"70":0.06029,"73":0.0134,"79":0.71009,"84":0.0067,"86":0.0067,"94":0.0067,"97":0.0067,"98":0.0134,"100":0.0067,"103":0.0268,"106":1.15223,"107":0.0201,"108":1.85562,"109":0.41534,"110":1.62786,"111":0.83068,"112":1.9896,"113":0.0067,"114":0.06699,"115":0.0268,"116":3.04135,"117":10.16238,"118":11.59597,_:"4 5 7 8 13 15 16 20 23 24 25 26 48 50 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 71 72 74 75 76 77 78 80 81 83 85 87 88 89 90 91 92 93 95 96 99 101 102 104 105 119 120 121 122"},F:{"11":0.0067,"23":0.0067,"24":0.0067,"25":0.0067,"28":0.0067,"29":0.0067,"30":0.0134,"31":0.04019,"32":0.0201,"33":0.0067,"82":0.0067,"95":0.0067,"98":0.0134,"102":1.54077,"103":0.16078,_:"9 12 15 16 17 18 19 20 21 22 26 27 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 96 97 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.0268},B:{"12":0.0134,"18":0.0067,"92":0.0134,"105":0.0067,"107":0.51582,"108":1.62786,"109":0.53592,"112":0.0335,"113":0.0335,"114":0.04019,"115":0.20097,"116":0.58281,"117":3.70455,"118":3.45668,"119":0.0201,_:"13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 106 110 111"},E:{"4":0.0067,"5":0.0134,"7":0.0134,"8":0.04689,"9":0.25456,"14":0.06699,"15":0.0134,_:"0 6 10 11 12 13 3.1 9.1 10.1 11.1 12.1 17.2","3.2":0.0067,"5.1":0.0201,"6.1":0.0067,"7.1":0.0067,"13.1":0.07369,"14.1":1.30631,"15.1":0.10718,"15.2-15.3":0.06029,"15.4":0.0134,"15.5":0.0268,"15.6":0.35505,"16.0":0.15408,"16.1":0.14738,"16.2":0.04019,"16.3":0.26126,"16.4":0.13398,"16.5":0.20097,"16.6":1.9829,"17.0":0.73689,"17.1":0.0335},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00131,"5.0-5.1":0.00131,"6.0-6.1":0.00392,"7.0-7.1":0.00915,"8.1-8.4":0.00131,"9.0-9.2":0.00915,"9.3":0.03137,"10.0-10.2":0.00131,"10.3":0.04575,"11.0-11.2":0.04183,"11.3-11.4":0.01438,"12.0-12.1":0.01176,"12.2-12.5":0.20784,"13.0-13.1":0.00654,"13.2":0.03529,"13.3":0.01307,"13.4-13.7":0.04183,"14.0-14.4":0.11503,"14.5-14.8":0.18562,"15.0-15.1":0.0732,"15.2-15.3":0.08366,"15.4":0.09281,"15.5":0.13203,"15.6-15.7":0.91373,"16.0":0.33726,"16.1":0.64575,"16.2":0.31503,"16.3":0.58432,"16.4":0.12549,"16.5":0.33464,"16.6-16.7":6.268,"17.0":2.23269,"17.1":0.13464,"17.2":0.00392},P:{"4":0.10887,"20":0.04355,"22":2.02495,"23":0.42459,_:"21 5.0-5.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 15.0 16.0 17.0","6.2-6.4":0.09798,"14.0":0.01089,"18.0":0.02177,"19.0":0.04355},I:{"0":1.26769,"3":0,"4":0.00025,"2.1":0,"2.2":0.00038,"2.3":0,"4.1":0.00025,"4.2-4.3":0.00089,"4.4":0,"4.4.3-4.4.4":0.00382},A:{"6":0.03358,"7":0.06044,"8":0.71862,"9":0.11417,"10":0.12089,"11":1.52454,_:"5.5"},K:{"0":0.61049,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.04621,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.3433},Q:{"13.1":0.02971},O:{"0":0.24758},H:{"0":0.02},L:{"0":14.10478}}; diff --git a/node_modules/caniuse-lite/data/regions/LK.js b/node_modules/caniuse-lite/data/regions/LK.js new file mode 100644 index 00000000..7fca29c0 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/LK.js @@ -0,0 +1 @@ +module.exports={C:{"17":0.00451,"52":0.00902,"72":0.00451,"87":0.01804,"89":0.00902,"99":0.00451,"105":0.00902,"108":0.00451,"110":0.00451,"111":0.00451,"112":0.00902,"113":0.00451,"114":0.00902,"115":0.31119,"116":0.00902,"117":0.06314,"118":0.88396,"119":0.17138,"120":0.00451,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 81 82 83 84 85 86 88 90 91 92 93 94 95 96 97 98 100 101 102 103 104 106 107 109 121 122 3.5 3.6"},D:{"22":0.00902,"38":0.00451,"49":0.00902,"63":0.00902,"64":0.00451,"66":0.00451,"67":0.00451,"69":0.00451,"70":0.00902,"71":0.00451,"74":0.01353,"75":0.00451,"76":0.00451,"78":0.00451,"79":0.01353,"80":0.00451,"81":0.01804,"83":0.00451,"84":0.00451,"85":0.01804,"86":0.00451,"87":0.01804,"88":0.00902,"89":0.00902,"90":0.00902,"91":0.01353,"92":0.00902,"93":0.00902,"94":0.00451,"95":0.00902,"96":0.00902,"97":0.00451,"98":0.00902,"99":0.01804,"100":0.00902,"101":0.00451,"102":0.01804,"103":0.0451,"104":0.00902,"105":0.02255,"106":0.03157,"107":0.02255,"108":0.02706,"109":2.12872,"110":0.02255,"111":0.02706,"112":0.02706,"113":0.02706,"114":0.09471,"115":0.07216,"116":0.58179,"117":9.53414,"118":9.38982,"119":0.01353,"120":0.00902,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 65 68 72 73 77 121 122"},F:{"29":0.00451,"64":0.00902,"79":0.00902,"84":0.00451,"85":0.00451,"86":0.00902,"95":0.09922,"100":0.00451,"101":0.00451,"102":0.46904,"103":0.26158,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 87 88 89 90 91 92 93 94 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00451,"15":0.00451,"16":0.00451,"18":0.01804,"84":0.00451,"85":0.00451,"89":0.00451,"92":0.03608,"99":0.00451,"100":0.00451,"105":0.00451,"107":0.00902,"108":0.00902,"109":0.02706,"110":0.00451,"111":0.00451,"112":0.00451,"113":0.00902,"114":0.01353,"115":0.01804,"116":0.18491,"117":8.88019,"118":8.78999,"119":0.00902,_:"13 14 17 79 80 81 83 86 87 88 90 91 93 94 95 96 97 98 101 102 103 104 106"},E:{"9":0.00451,"13":0.00451,"14":0.00902,"15":0.00451,_:"0 4 5 6 7 8 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.00902,"12.1":0.01353,"13.1":0.00902,"14.1":0.01804,"15.1":0.00902,"15.2-15.3":0.00451,"15.4":0.00451,"15.5":0.00451,"15.6":0.05863,"16.0":0.00451,"16.1":0.01804,"16.2":0.01353,"16.3":0.02255,"16.4":0.02255,"16.5":0.04059,"16.6":0.10373,"17.0":0.09922,"17.1":0.00451},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00052,"5.0-5.1":0.00052,"6.0-6.1":0.00155,"7.0-7.1":0.00361,"8.1-8.4":0.00052,"9.0-9.2":0.00361,"9.3":0.01237,"10.0-10.2":0.00052,"10.3":0.01805,"11.0-11.2":0.0165,"11.3-11.4":0.00567,"12.0-12.1":0.00464,"12.2-12.5":0.08198,"13.0-13.1":0.00258,"13.2":0.01392,"13.3":0.00516,"13.4-13.7":0.0165,"14.0-14.4":0.04537,"14.5-14.8":0.07322,"15.0-15.1":0.02887,"15.2-15.3":0.033,"15.4":0.03661,"15.5":0.05208,"15.6-15.7":0.36041,"16.0":0.13303,"16.1":0.25471,"16.2":0.12426,"16.3":0.23048,"16.4":0.0495,"16.5":0.13199,"16.6-16.7":2.47233,"17.0":0.88065,"17.1":0.05311,"17.2":0.00155},P:{"4":0.42581,"20":0.15208,"21":0.19263,"22":1.18619,"23":0.11152,"5.0-5.4":0.01014,"6.2-6.4":0.02028,"7.2-7.4":0.72997,"8.2":0.02028,"9.2":0.04055,"10.1":0.01014,"11.1-11.2":0.09125,"12.0":0.01014,"13.0":0.07097,"14.0":0.07097,"15.0":0.04055,"16.0":0.11152,"17.0":0.08111,"18.0":0.08111,"19.0":0.17235},I:{"0":0.04917,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00015},A:{"8":0.00451,"11":0.04961,_:"6 7 9 10 5.5"},K:{"0":1.57788,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.14277},Q:{_:"13.1"},O:{"0":1.35079},H:{"0":0.02},L:{"0":44.38635}}; diff --git a/node_modules/caniuse-lite/data/regions/LR.js b/node_modules/caniuse-lite/data/regions/LR.js new file mode 100644 index 00000000..4faef74b --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/LR.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00384,"47":0.00192,"58":0.00192,"62":0.00192,"72":0.00575,"73":0.00192,"85":0.00192,"94":0.00192,"104":0.00192,"108":0.04411,"111":0.00192,"114":0.00384,"115":0.30496,"116":0.02302,"117":0.04028,"118":0.60033,"119":0.10549,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 52 53 54 55 56 57 59 60 61 63 64 65 66 67 68 69 70 71 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 95 96 97 98 99 100 101 102 103 105 106 107 109 110 112 113 120 121 122 3.5 3.6"},D:{"23":0.00192,"29":0.00192,"38":0.00192,"43":0.00767,"47":0.00959,"52":0.00192,"55":0.00192,"57":0.00192,"59":0.0211,"61":0.00767,"64":0.02877,"65":0.00575,"66":0.01343,"67":0.00192,"68":0.00575,"69":0.01343,"70":0.03836,"71":0.00384,"75":0.03069,"76":0.04603,"77":0.00575,"78":0.00192,"79":0.00767,"80":0.01534,"81":0.01534,"83":0.00384,"84":0.00192,"86":0.01343,"87":0.00575,"88":0.01151,"89":0.00384,"90":0.00959,"91":0.00384,"92":0.07672,"93":0.07672,"94":0.03261,"95":0.00575,"98":0.00192,"99":0.16111,"100":0.00384,"101":0.00192,"102":0.00767,"103":0.08823,"104":0.00384,"105":0.02685,"106":0.00384,"107":0.00959,"108":0.00959,"109":0.38168,"110":0.00575,"111":0.01918,"112":0.02493,"113":0.03069,"114":0.10165,"115":0.05179,"116":0.33565,"117":2.43586,"118":2.40901,"119":0.00575,"120":0.00192,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 48 49 50 51 53 54 56 58 60 62 63 72 73 74 85 96 97 121 122"},F:{"18":0.00384,"21":0.00192,"28":0.00192,"29":0.00192,"36":0.00192,"42":0.00384,"45":0.00192,"76":0.00192,"77":0.00575,"79":0.00192,"86":0.00192,"90":0.00575,"95":0.0211,"98":0.00192,"99":0.00384,"101":0.01918,"102":0.14001,"103":0.1707,_:"9 11 12 15 16 17 19 20 22 23 24 25 26 27 30 31 32 33 34 35 37 38 39 40 41 43 44 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 78 80 81 82 83 84 85 87 88 89 91 92 93 94 96 97 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.03644,"13":0.01151,"14":0.00575,"15":0.00384,"16":0.01534,"17":0.00575,"18":0.12659,"80":0.00384,"84":0.01918,"85":0.00384,"86":0.00192,"88":0.00384,"89":0.00959,"90":0.01534,"91":0.00192,"92":0.0537,"95":0.00192,"100":0.01343,"101":0.01151,"102":0.00192,"103":0.00384,"105":0.00192,"106":0.00384,"107":0.00384,"108":0.00192,"109":0.0422,"110":0.00959,"111":0.00767,"112":0.00959,"113":0.01918,"114":0.09206,"115":0.0748,"116":0.07097,"117":0.82282,"118":0.89379,_:"79 81 83 87 93 94 96 97 98 99 104 119"},E:{"13":0.00192,"14":0.01534,"15":0.00192,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4 16.0 16.2 17.2","11.1":0.00959,"12.1":0.00384,"13.1":0.03836,"14.1":0.01343,"15.1":0.00192,"15.2-15.3":0.00384,"15.5":0.00575,"15.6":0.06521,"16.1":0.00575,"16.3":0.01151,"16.4":0.00575,"16.5":0.00959,"16.6":0.08056,"17.0":0.0211,"17.1":0.01343},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00065,"5.0-5.1":0.00065,"6.0-6.1":0.00194,"7.0-7.1":0.00452,"8.1-8.4":0.00065,"9.0-9.2":0.00452,"9.3":0.0155,"10.0-10.2":0.00065,"10.3":0.0226,"11.0-11.2":0.02066,"11.3-11.4":0.0071,"12.0-12.1":0.00581,"12.2-12.5":0.10267,"13.0-13.1":0.00323,"13.2":0.01744,"13.3":0.00646,"13.4-13.7":0.02066,"14.0-14.4":0.05683,"14.5-14.8":0.0917,"15.0-15.1":0.03616,"15.2-15.3":0.04133,"15.4":0.04585,"15.5":0.06522,"15.6-15.7":0.45138,"16.0":0.1666,"16.1":0.319,"16.2":0.15563,"16.3":0.28865,"16.4":0.06199,"16.5":0.16531,"16.6-16.7":3.09638,"17.0":1.10294,"17.1":0.06651,"17.2":0.00194},P:{"4":0.05185,"20":0.03111,"21":0.09334,"22":0.54965,"23":0.07259,"5.0-5.4":0.01037,_:"6.2-6.4 8.2 10.1 12.0 15.0","7.2-7.4":0.08297,"9.2":0.03111,"11.1-11.2":0.05185,"13.0":0.03111,"14.0":0.01037,"16.0":0.05185,"17.0":0.02074,"18.0":0.04148,"19.0":0.04148},I:{"0":0.02412,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00007},A:{"7":0.00384,"10":0.00959,"11":0.04411,_:"6 8 9 5.5"},K:{"0":3.90415,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.08082,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.04849},Q:{"13.1":0.00808},O:{"0":1.20422},H:{"0":5.77},L:{"0":70.03016}}; diff --git a/node_modules/caniuse-lite/data/regions/LS.js b/node_modules/caniuse-lite/data/regions/LS.js new file mode 100644 index 00000000..9e010070 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/LS.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00312,"52":0.01249,"72":0.00312,"88":0.00312,"91":0.00312,"107":0.00312,"115":0.10615,"116":0.00312,"117":0.02498,"118":0.32469,"119":0.15922,"120":0.00312,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 89 90 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 108 109 110 111 112 113 114 121 122 3.5 3.6"},D:{"11":0.00312,"36":0.00312,"38":0.00312,"40":0.00312,"43":0.00312,"49":0.00312,"55":0.00312,"69":0.00312,"70":0.03122,"71":0.00624,"75":0.0281,"78":0.08117,"79":0.00937,"80":0.00624,"81":0.01249,"86":0.00312,"87":0.00312,"88":0.00624,"90":0.00624,"91":0.03434,"92":0.01249,"94":0.06868,"95":0.00624,"97":0.00312,"99":0.13425,"102":0.01561,"103":0.11239,"104":0.00937,"105":0.00937,"106":0.02185,"107":0.00624,"108":0.01249,"109":1.47046,"110":0.00937,"111":0.01561,"112":0.02185,"113":0.0281,"114":0.08742,"115":0.06868,"116":0.4121,"117":4.75481,"118":5.41667,"119":0.00312,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 39 41 42 44 45 46 47 48 50 51 52 53 54 56 57 58 59 60 61 62 63 64 65 66 67 68 72 73 74 76 77 83 84 85 89 93 96 98 100 101 120 121 122"},F:{"73":0.00312,"77":0.00312,"79":0.00312,"83":0.00312,"85":0.00312,"90":0.00312,"94":0.00312,"95":0.12176,"99":0.00312,"102":0.49015,"103":0.40898,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 78 80 81 82 84 86 87 88 89 91 92 93 96 97 98 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.01561,"13":0.02185,"14":0.00312,"16":0.00937,"17":0.02185,"18":0.0281,"84":0.01249,"85":0.00624,"89":0.01249,"90":0.01561,"92":0.04995,"100":0.21854,"102":0.00312,"104":0.00312,"106":0.00312,"107":0.00312,"108":0.00312,"109":0.02185,"110":0.01249,"111":0.00312,"112":0.01561,"113":0.00937,"114":0.02498,"115":0.03434,"116":0.09054,"117":1.15202,"118":1.33934,"119":0.00312,_:"15 79 80 81 83 86 87 88 91 93 94 95 96 97 98 99 101 103 105"},E:{"14":0.00312,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 15.4 16.0 16.2 17.2","5.1":0.00937,"12.1":0.00624,"13.1":0.00312,"14.1":0.01561,"15.1":0.00312,"15.2-15.3":0.01561,"15.5":0.00937,"15.6":0.01249,"16.1":0.00312,"16.3":0.00624,"16.4":0.00312,"16.5":0.00312,"16.6":0.04683,"17.0":0.03746,"17.1":0.01561},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0002,"5.0-5.1":0.0002,"6.0-6.1":0.00059,"7.0-7.1":0.00137,"8.1-8.4":0.0002,"9.0-9.2":0.00137,"9.3":0.0047,"10.0-10.2":0.0002,"10.3":0.00686,"11.0-11.2":0.00627,"11.3-11.4":0.00216,"12.0-12.1":0.00176,"12.2-12.5":0.03117,"13.0-13.1":0.00098,"13.2":0.00529,"13.3":0.00196,"13.4-13.7":0.00627,"14.0-14.4":0.01725,"14.5-14.8":0.02784,"15.0-15.1":0.01098,"15.2-15.3":0.01255,"15.4":0.01392,"15.5":0.0198,"15.6-15.7":0.13702,"16.0":0.05057,"16.1":0.09684,"16.2":0.04724,"16.3":0.08762,"16.4":0.01882,"16.5":0.05018,"16.6-16.7":0.93993,"17.0":0.33481,"17.1":0.02019,"17.2":0.00059},P:{"4":0.42916,"20":0.07153,"21":0.17371,"22":0.94007,"23":0.1124,_:"5.0-5.4 8.2 12.0","6.2-6.4":0.03065,"7.2-7.4":0.75614,"9.2":0.02044,"10.1":0.01022,"11.1-11.2":0.1124,"13.0":0.02044,"14.0":0.01022,"15.0":0.01022,"16.0":0.1124,"17.0":0.03065,"18.0":0.12262,"19.0":0.23502},I:{"0":0.0479,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00014},A:{"10":0.00312,"11":0.0281,_:"6 7 8 9 5.5"},K:{"0":4.95698,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.10317,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.03439},Q:{"13.1":0.04815},O:{"0":1.04546},H:{"0":1.02},L:{"0":69.1739}}; diff --git a/node_modules/caniuse-lite/data/regions/LT.js b/node_modules/caniuse-lite/data/regions/LT.js new file mode 100644 index 00000000..dfb22fee --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/LT.js @@ -0,0 +1 @@ +module.exports={C:{"43":0.0061,"48":0.03049,"52":0.03659,"60":0.0061,"77":0.01829,"78":0.0122,"81":0.0061,"89":0.0061,"91":0.0061,"94":0.0061,"95":0.0061,"98":0.0061,"100":0.0061,"102":0.0122,"103":0.0061,"104":0.01829,"106":0.0061,"107":0.01829,"108":0.0061,"109":0.0061,"110":0.0061,"111":0.0122,"112":0.0061,"113":0.0122,"114":0.0061,"115":0.56711,"116":0.01829,"117":0.12806,"118":1.8416,"119":0.49394,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 79 80 82 83 84 85 86 87 88 90 92 93 96 97 99 101 105 120 121 122 3.5 3.6"},D:{"34":0.0061,"38":0.0061,"49":0.01829,"63":0.0061,"66":0.0061,"67":0.0061,"72":0.0061,"73":0.0061,"75":0.0061,"76":0.0061,"77":0.0061,"78":0.0061,"79":0.03659,"80":0.0061,"81":0.0061,"83":0.0122,"84":0.0061,"85":0.05488,"86":0.0122,"87":0.04878,"88":0.0061,"90":0.0061,"91":0.0061,"92":0.0061,"93":0.0061,"94":0.0061,"96":0.0061,"97":0.0061,"98":0.01829,"99":0.01829,"100":0.0061,"101":0.0061,"102":0.04269,"103":0.05488,"104":0.01829,"105":0.0122,"106":0.03659,"107":0.06098,"108":0.06708,"109":2.78069,"110":0.03049,"111":0.05488,"112":0.07927,"113":0.06098,"114":0.20733,"115":0.3049,"116":1.8416,"117":18.81843,"118":19.57458,"119":0.03049,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 65 68 69 70 71 74 89 95 120 121 122"},F:{"28":0.0061,"46":0.0061,"85":0.0061,"86":0.0122,"95":0.15245,"99":0.0061,"101":0.02439,"102":2.11601,"103":0.51833,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 87 88 89 90 91 92 93 94 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.0061,"92":0.03049,"108":0.0061,"109":0.06708,"110":0.03049,"111":0.02439,"112":0.01829,"113":0.02439,"114":0.15855,"115":0.06098,"116":0.23782,"117":3.61002,"118":3.3661,"119":0.0122,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107"},E:{"9":0.0061,"14":0.03049,"15":0.0122,_:"0 4 5 6 7 8 10 11 12 13 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.0061,"11.1":0.0061,"12.1":0.0061,"13.1":0.13416,"14.1":0.06098,"15.1":0.0122,"15.2-15.3":0.0122,"15.4":0.01829,"15.5":0.02439,"15.6":0.17074,"16.0":0.01829,"16.1":0.05488,"16.2":0.04269,"16.3":0.08537,"16.4":0.05488,"16.5":0.09147,"16.6":0.43906,"17.0":0.2988,"17.1":0.02439,"17.2":0.0061},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0009,"5.0-5.1":0.0009,"6.0-6.1":0.0027,"7.0-7.1":0.0063,"8.1-8.4":0.0009,"9.0-9.2":0.0063,"9.3":0.0216,"10.0-10.2":0.0009,"10.3":0.0315,"11.0-11.2":0.0288,"11.3-11.4":0.0099,"12.0-12.1":0.0081,"12.2-12.5":0.14309,"13.0-13.1":0.0045,"13.2":0.0243,"13.3":0.009,"13.4-13.7":0.0288,"14.0-14.4":0.0792,"14.5-14.8":0.12779,"15.0-15.1":0.0504,"15.2-15.3":0.0576,"15.4":0.0639,"15.5":0.0909,"15.6-15.7":0.62907,"16.0":0.23219,"16.1":0.44458,"16.2":0.21689,"16.3":0.40228,"16.4":0.0864,"16.5":0.23039,"16.6-16.7":4.31531,"17.0":1.53713,"17.1":0.0927,"17.2":0.0027},P:{"4":0.10264,"20":0.08211,"21":0.13343,"22":1.98087,"23":1.25216,"5.0-5.4":0.01026,"6.2-6.4":0.01026,"7.2-7.4":0.01026,_:"8.2 9.2 10.1 11.1-11.2 12.0","13.0":0.02053,"14.0":0.01026,"15.0":0.02053,"16.0":0.06158,"17.0":0.02053,"18.0":0.04105,"19.0":0.08211},I:{"0":0.05045,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00015},A:{"8":0.01829,"11":0.12806,_:"6 7 9 10 5.5"},K:{"0":0.55784,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.33939},Q:{_:"13.1"},O:{"0":0.05852},H:{"0":0},L:{"0":25.31941}}; diff --git a/node_modules/caniuse-lite/data/regions/LU.js b/node_modules/caniuse-lite/data/regions/LU.js new file mode 100644 index 00000000..fb7a75dc --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/LU.js @@ -0,0 +1 @@ +module.exports={C:{"40":0.00429,"48":0.01288,"50":0.00429,"52":0.07729,"60":0.00429,"68":0.00859,"78":0.13741,"88":0.00859,"89":0.00429,"91":0.10735,"93":0.00859,"94":0.00429,"97":0.00429,"102":0.93609,"103":0.00429,"104":0.02576,"105":0.00429,"106":0.00429,"107":0.00429,"108":0.00429,"109":0.06441,"110":0.00429,"111":0.02576,"112":0.00859,"113":0.01718,"114":0.00859,"115":1.59307,"116":0.05153,"117":0.12882,"118":3.15609,"119":0.55393,"120":0.00429,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 49 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 90 92 95 96 98 99 100 101 121 122 3.5","3.6":0.00429},D:{"38":0.00429,"39":0.00429,"40":0.00429,"41":0.00429,"42":0.00429,"43":0.00429,"44":0.00859,"45":0.07729,"46":0.00859,"47":0.00429,"49":0.04723,"51":0.01288,"57":0.00429,"64":0.02147,"69":0.04294,"70":0.00429,"72":0.1417,"74":0.02147,"79":0.04294,"80":0.00429,"81":0.00429,"84":0.00429,"85":0.02576,"86":0.00429,"87":0.02147,"89":0.00429,"90":0.00429,"91":0.02147,"92":0.01288,"93":0.00429,"94":0.01718,"95":0.00429,"96":0.00429,"98":0.01288,"99":0.01718,"100":0.01288,"101":0.00429,"102":0.04294,"103":0.12453,"104":0.01718,"105":0.04294,"106":0.073,"107":0.37787,"108":0.27052,"109":0.95327,"110":0.24905,"111":0.21041,"112":0.27911,"113":0.073,"114":0.22758,"115":0.13311,"116":0.97903,"117":7.46297,"118":7.10657,"119":0.01288,"120":0.00429,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 48 50 52 53 54 55 56 58 59 60 61 62 63 65 66 67 68 71 73 75 76 77 78 83 88 97 121 122"},F:{"46":0.00429,"93":0.02147,"95":0.05153,"98":0.00859,"99":0.00429,"101":0.00429,"102":1.33543,"103":0.20182,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 94 96 97 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00429,"17":0.02147,"18":0.00429,"89":0.00429,"92":0.00429,"96":0.00429,"97":0.00429,"98":0.00429,"99":0.00429,"101":0.00429,"102":0.00429,"104":0.00429,"105":0.00429,"106":0.01288,"107":0.06441,"108":0.05153,"109":0.0687,"110":0.01718,"111":0.04294,"112":0.03435,"113":0.03865,"114":0.15888,"115":0.04723,"116":0.12882,"117":2.77822,"118":2.40464,"119":0.00429,_:"13 14 15 16 79 80 81 83 84 85 86 87 88 90 91 93 94 95 100 103"},E:{"9":0.01718,"13":0.00859,"14":0.08588,"15":0.00859,_:"0 4 5 6 7 8 10 11 12 3.1 3.2 6.1 7.1 10.1 11.1 17.2","5.1":0.00429,"9.1":0.00859,"12.1":0.08159,"13.1":0.21041,"14.1":0.30058,"15.1":0.01718,"15.2-15.3":0.01718,"15.4":0.073,"15.5":0.22758,"15.6":0.67416,"16.0":0.11594,"16.1":0.34781,"16.2":0.21041,"16.3":0.68704,"16.4":0.12453,"16.5":0.68704,"16.6":2.08259,"17.0":1.39984,"17.1":0.07729},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00184,"5.0-5.1":0.00184,"6.0-6.1":0.00553,"7.0-7.1":0.01291,"8.1-8.4":0.00184,"9.0-9.2":0.01291,"9.3":0.04425,"10.0-10.2":0.00184,"10.3":0.06453,"11.0-11.2":0.059,"11.3-11.4":0.02028,"12.0-12.1":0.01659,"12.2-12.5":0.29313,"13.0-13.1":0.00922,"13.2":0.04978,"13.3":0.01844,"13.4-13.7":0.059,"14.0-14.4":0.16224,"14.5-14.8":0.26179,"15.0-15.1":0.10324,"15.2-15.3":0.11799,"15.4":0.1309,"15.5":0.1862,"15.6-15.7":1.28868,"16.0":0.47565,"16.1":0.91074,"16.2":0.44431,"16.3":0.82409,"16.4":0.17699,"16.5":0.47196,"16.6-16.7":8.8401,"17.0":3.14888,"17.1":0.18989,"17.2":0.00553},P:{"4":0.13481,"20":0.05185,"21":0.11407,"22":2.73776,"23":0.58074,"5.0-5.4":0.02074,"6.2-6.4":0.01037,"7.2-7.4":0.02074,_:"8.2 9.2 10.1 11.1-11.2 12.0 15.0","13.0":0.02074,"14.0":0.01037,"16.0":0.03111,"17.0":0.02074,"18.0":0.02074,"19.0":0.03111},I:{"0":0.21005,"3":0,"4":0.00004,"2.1":0,"2.2":0.00006,"2.3":0,"4.1":0.00004,"4.2-4.3":0.00015,"4.4":0,"4.4.3-4.4.4":0.00063},A:{"7":0.00483,"8":0.08695,"9":0.01449,"10":0.00966,"11":0.11594,_:"6 5.5"},K:{"0":1.35232,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00571,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.94149},Q:{"13.1":0.7646},O:{"0":1.75174},H:{"0":0},L:{"0":30.16747}}; diff --git a/node_modules/caniuse-lite/data/regions/LV.js b/node_modules/caniuse-lite/data/regions/LV.js new file mode 100644 index 00000000..e2e89e48 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/LV.js @@ -0,0 +1 @@ +module.exports={C:{"16":0.02162,"48":0.09513,"52":0.04324,"60":0.00432,"68":0.00865,"72":0.00432,"75":0.00432,"76":0.00432,"78":0.00432,"88":0.0173,"89":0.00432,"93":0.01297,"95":0.00432,"99":0.00432,"102":0.02594,"103":0.01297,"104":0.00432,"105":0.00865,"107":0.00432,"108":0.00432,"109":0.00432,"110":0.01297,"111":0.00432,"112":0.01297,"113":0.00432,"114":0.0173,"115":0.61401,"116":0.03459,"117":0.08216,"118":1.98904,"119":0.92101,"120":0.01297,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 73 74 77 79 80 81 82 83 84 85 86 87 90 91 92 94 96 97 98 100 101 106 121 122 3.5 3.6"},D:{"38":0.00432,"41":0.00432,"44":0.00432,"49":0.0173,"51":0.00432,"58":0.00432,"75":0.00432,"79":0.09945,"80":0.00432,"81":0.00865,"83":0.00432,"84":0.00432,"85":0.02162,"86":0.00432,"87":0.04756,"88":0.00432,"89":0.00432,"90":0.03027,"91":0.02162,"92":0.01297,"93":0.02162,"94":0.01297,"95":0.00432,"96":0.00865,"97":0.00865,"98":0.00432,"99":0.01297,"100":0.01297,"101":0.00865,"102":0.01297,"103":0.13404,"104":0.00865,"105":0.03027,"106":0.06486,"107":0.03892,"108":0.1254,"109":1.91553,"110":0.01297,"111":0.03459,"112":0.06054,"113":0.22917,"114":0.62266,"115":0.32862,"116":2.2528,"117":9.47821,"118":13.9622,"119":0.02162,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 45 46 47 48 50 52 53 54 55 56 57 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 76 77 78 120 121 122"},F:{"16":0.00865,"46":0.00432,"79":0.00432,"85":0.00865,"92":0.00432,"94":0.00432,"95":0.12972,"99":0.00432,"100":0.00432,"101":0.00432,"102":1.05938,"103":0.51023,_:"9 11 12 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 86 87 88 89 90 91 93 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"17":0.00432,"18":0.00432,"92":0.03027,"98":0.00432,"103":0.00432,"104":0.00432,"106":0.00432,"107":0.02162,"108":0.00432,"109":0.05621,"110":0.00432,"111":0.00432,"112":0.00865,"113":0.00865,"114":0.00865,"115":0.02594,"116":0.05621,"117":1.48746,"118":2.3609,"119":0.00432,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 99 100 101 102 105"},E:{"7":0.00432,"9":0.00432,"13":0.00432,"14":0.02162,"15":0.00865,_:"0 4 5 6 8 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.02594,"13.1":0.05189,"14.1":0.04756,"15.1":0.00432,"15.2-15.3":0.02594,"15.4":0.02594,"15.5":0.0173,"15.6":0.13404,"16.0":0.01297,"16.1":0.04756,"16.2":0.05621,"16.3":0.08648,"16.4":0.04756,"16.5":0.13837,"16.6":0.53185,"17.0":0.41078,"17.1":0.05189},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00129,"5.0-5.1":0.00129,"6.0-6.1":0.00387,"7.0-7.1":0.00904,"8.1-8.4":0.00129,"9.0-9.2":0.00904,"9.3":0.03099,"10.0-10.2":0.00129,"10.3":0.0452,"11.0-11.2":0.04132,"11.3-11.4":0.0142,"12.0-12.1":0.01162,"12.2-12.5":0.20532,"13.0-13.1":0.00646,"13.2":0.03486,"13.3":0.01291,"13.4-13.7":0.04132,"14.0-14.4":0.11363,"14.5-14.8":0.18336,"15.0-15.1":0.07231,"15.2-15.3":0.08264,"15.4":0.09168,"15.5":0.13042,"15.6-15.7":0.90261,"16.0":0.33315,"16.1":0.6379,"16.2":0.3112,"16.3":0.57721,"16.4":0.12396,"16.5":0.33057,"16.6-16.7":6.19174,"17.0":2.20552,"17.1":0.133,"17.2":0.00387},P:{"4":0.03056,"20":0.11206,"21":0.34638,"22":3.12762,"23":2.4858,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0","13.0":0.02038,"14.0":0.04075,"15.0":0.02038,"16.0":0.02038,"17.0":0.05094,"18.0":0.03056,"19.0":0.07131},I:{"0":0.04518,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00014},A:{"8":0.0173,"9":0.00432,"11":0.04756,_:"6 7 10 5.5"},K:{"0":0.72085,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.72085},Q:{_:"13.1"},O:{"0":0.03406},H:{"0":0},L:{"0":36.88032}}; diff --git a/node_modules/caniuse-lite/data/regions/LY.js b/node_modules/caniuse-lite/data/regions/LY.js new file mode 100644 index 00000000..953475b8 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/LY.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00155,"38":0.00155,"43":0.0031,"45":0.00155,"47":0.00155,"52":0.02477,"56":0.00155,"61":0.00155,"67":0.00155,"72":0.0031,"84":0.00155,"85":0.00155,"87":0.00155,"88":0.00155,"95":0.00155,"99":0.00155,"102":0.00155,"104":0.00155,"109":0.00155,"110":0.0031,"112":0.00155,"114":0.0031,"115":0.16409,"116":0.00464,"117":0.01858,"118":0.35449,"119":0.06502,"120":0.00155,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 44 46 48 49 50 51 53 54 55 57 58 59 60 62 63 64 65 66 68 69 70 71 73 74 75 76 77 78 79 80 81 82 83 86 89 90 91 92 93 94 96 97 98 100 101 103 105 106 107 108 111 113 121 122 3.5 3.6"},D:{"11":0.00155,"31":0.00155,"33":0.0031,"35":0.00155,"38":0.00155,"40":0.00155,"41":0.00155,"42":0.00155,"43":0.00464,"47":0.00155,"49":0.00619,"53":0.0031,"54":0.00155,"55":0.00155,"56":0.00155,"58":0.06656,"61":0.0031,"63":0.01393,"64":0.00155,"65":0.0031,"66":0.00155,"67":0.00155,"68":0.01393,"69":0.00619,"70":0.00464,"71":0.00155,"72":0.00155,"73":0.00464,"74":0.00155,"75":0.00464,"76":0.0031,"77":0.00464,"78":0.00464,"79":0.00774,"80":0.00464,"81":0.0031,"83":0.00774,"84":0.00155,"85":0.00155,"86":0.01858,"87":0.01238,"88":0.00929,"89":0.01703,"90":0.00619,"91":0.00929,"92":0.00464,"93":0.00774,"94":0.00464,"95":0.00464,"96":0.00774,"97":0.0031,"98":0.01548,"99":0.01238,"100":0.0031,"101":0.00155,"102":0.07121,"103":0.02941,"104":0.00619,"105":0.00929,"106":0.01084,"107":0.01858,"108":0.05418,"109":1.99847,"110":0.00929,"111":0.00929,"112":0.01703,"113":0.01548,"114":0.05108,"115":0.0418,"116":0.36997,"117":3.54028,"118":3.60684,"119":0.0031,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 34 36 37 39 44 45 46 48 50 51 52 57 59 60 62 120 121 122"},F:{"46":0.0031,"73":0.0031,"79":0.00929,"80":0.00155,"84":0.01858,"85":0.0031,"86":0.0031,"90":0.00155,"94":0.00155,"95":0.04489,"98":0.04025,"99":0.00155,"100":0.00155,"101":0.01238,"102":0.40403,"103":0.14242,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 78 81 82 83 87 88 89 91 92 93 96 97 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00155,"13":0.00155,"14":0.00155,"16":0.00155,"17":0.00155,"18":0.01238,"84":0.00619,"89":0.0031,"90":0.0031,"92":0.0356,"95":0.00155,"100":0.00464,"105":0.0031,"108":0.0031,"109":0.04025,"110":0.00619,"111":0.00155,"112":0.01393,"113":0.0031,"114":0.01703,"115":0.02167,"116":0.04025,"117":0.81115,"118":0.80341,"119":0.0031,_:"15 79 80 81 83 85 86 87 88 91 93 94 96 97 98 99 101 102 103 104 106 107"},E:{"13":0.00155,"14":0.00619,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 17.2","5.1":0.12539,"13.1":0.0031,"14.1":0.00619,"15.1":0.0774,"15.2-15.3":0.00155,"15.4":0.00464,"15.5":0.00464,"15.6":0.06037,"16.0":0.00155,"16.1":0.05108,"16.2":0.02322,"16.3":0.07585,"16.4":0.02632,"16.5":0.0418,"16.6":0.15635,"17.0":0.04954,"17.1":0.02322},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0009,"5.0-5.1":0.0009,"6.0-6.1":0.0027,"7.0-7.1":0.00631,"8.1-8.4":0.0009,"9.0-9.2":0.00631,"9.3":0.02162,"10.0-10.2":0.0009,"10.3":0.03153,"11.0-11.2":0.02883,"11.3-11.4":0.00991,"12.0-12.1":0.00811,"12.2-12.5":0.14324,"13.0-13.1":0.0045,"13.2":0.02432,"13.3":0.00901,"13.4-13.7":0.02883,"14.0-14.4":0.07928,"14.5-14.8":0.12792,"15.0-15.1":0.05045,"15.2-15.3":0.05766,"15.4":0.06396,"15.5":0.09099,"15.6-15.7":0.62971,"16.0":0.23243,"16.1":0.44503,"16.2":0.21711,"16.3":0.40269,"16.4":0.08648,"16.5":0.23062,"16.6-16.7":4.3197,"17.0":1.5387,"17.1":0.09279,"17.2":0.0027},P:{"4":0.07169,"20":0.07169,"21":0.14338,"22":1.24946,"23":0.11266,_:"5.0-5.4 8.2 10.1","6.2-6.4":0.03072,"7.2-7.4":0.28676,"9.2":0.01024,"11.1-11.2":0.04097,"12.0":0.01024,"13.0":0.03072,"14.0":0.04097,"15.0":0.03072,"16.0":0.08193,"17.0":0.04097,"18.0":0.04097,"19.0":0.1229},I:{"0":0.06726,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.0002},A:{"11":0.02786,_:"6 7 8 9 10 5.5"},K:{"0":2.41305,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.0338},Q:{_:"13.1"},O:{"0":0.33804},H:{"0":0.08},L:{"0":71.15206}}; diff --git a/node_modules/caniuse-lite/data/regions/MA.js b/node_modules/caniuse-lite/data/regions/MA.js new file mode 100644 index 00000000..b6e14623 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MA.js @@ -0,0 +1 @@ +module.exports={C:{"43":0.00398,"46":0.01989,"52":0.15514,"55":0.01193,"56":0.00398,"64":0.00398,"65":0.04376,"68":0.00398,"72":0.00398,"75":0.00398,"78":0.00796,"81":0.00398,"82":0.00398,"84":0.00796,"87":0.00398,"94":0.00398,"98":0.00398,"99":0.00398,"102":0.01591,"103":0.00398,"104":0.00398,"105":0.00398,"106":0.01591,"107":0.00796,"108":0.00398,"109":0.02785,"110":0.01591,"111":0.01193,"112":0.00398,"113":0.01193,"114":0.00796,"115":0.4694,"116":0.02387,"117":0.08354,"118":1.30876,"119":0.2705,"120":0.00398,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 47 48 49 50 51 53 54 57 58 59 60 61 62 63 66 67 69 70 71 73 74 76 77 79 80 83 85 86 88 89 90 91 92 93 95 96 97 100 101 121 122 3.5 3.6"},D:{"11":0.00398,"38":0.00398,"41":0.00398,"43":0.00796,"48":0.00398,"49":0.05569,"50":0.00398,"51":0.00398,"55":0.00398,"56":0.01591,"58":0.08752,"59":0.00398,"62":0.00398,"63":0.00398,"64":0.00796,"65":0.00796,"66":0.00398,"67":0.31426,"68":0.01193,"69":0.00796,"70":0.01193,"71":0.00398,"72":0.01591,"73":0.01193,"74":0.00398,"75":0.00398,"76":0.00398,"77":0.00398,"78":0.00796,"79":0.05569,"80":0.00796,"81":0.01193,"83":0.03978,"84":0.00796,"85":0.03182,"86":0.01989,"87":0.05967,"88":0.02785,"89":0.00796,"90":0.00796,"91":0.01989,"92":0.01193,"93":0.01193,"94":0.00796,"95":0.01591,"96":0.01193,"97":0.01193,"98":0.01193,"99":0.03182,"100":0.01193,"101":0.02387,"102":0.03182,"103":0.08354,"104":0.01989,"105":0.06763,"106":0.06763,"107":0.10343,"108":0.17503,"109":3.28583,"110":0.07558,"111":0.09945,"112":0.10343,"113":0.0358,"114":0.16708,"115":0.13127,"116":1.01439,"117":10.45816,"118":11.92207,"119":0.02387,"120":0.01591,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 44 45 46 47 52 53 54 57 60 61 121 122"},F:{"28":0.00398,"40":0.00796,"46":0.00398,"79":0.00796,"84":0.00398,"85":0.01193,"87":0.00398,"91":0.01193,"92":0.00398,"93":0.00398,"94":0.00398,"95":0.10741,"97":0.00398,"99":0.00398,"100":0.01193,"101":0.03182,"102":1.33263,"103":0.38587,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 86 88 89 90 96 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00398,"14":0.00398,"18":0.02785,"84":0.00398,"86":0.00398,"90":0.00398,"91":0.00398,"92":0.04376,"100":0.00398,"101":0.00398,"106":0.00796,"107":0.01591,"108":0.00796,"109":0.06763,"110":0.01193,"111":0.00796,"112":0.00398,"113":0.00398,"114":0.01989,"115":0.01591,"116":0.06365,"117":1.47584,"118":1.54346,"119":0.00398,_:"13 15 16 17 79 80 81 83 85 87 88 89 93 94 95 96 97 98 99 102 103 104 105"},E:{"10":0.00796,"13":0.00398,"14":0.04376,"15":0.00398,_:"0 4 5 6 7 8 9 11 12 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.05569,"11.1":0.00398,"12.1":0.00796,"13.1":0.03182,"14.1":0.05967,"15.1":0.08354,"15.2-15.3":0.00796,"15.4":0.01591,"15.5":0.01989,"15.6":0.19492,"16.0":0.00796,"16.1":0.01193,"16.2":0.0358,"16.3":0.0716,"16.4":0.02387,"16.5":0.03978,"16.6":0.20288,"17.0":0.23868,"17.1":0.00796},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0008,"5.0-5.1":0.0008,"6.0-6.1":0.0024,"7.0-7.1":0.0056,"8.1-8.4":0.0008,"9.0-9.2":0.0056,"9.3":0.01921,"10.0-10.2":0.0008,"10.3":0.02802,"11.0-11.2":0.02561,"11.3-11.4":0.00881,"12.0-12.1":0.0072,"12.2-12.5":0.12727,"13.0-13.1":0.004,"13.2":0.02161,"13.3":0.008,"13.4-13.7":0.02561,"14.0-14.4":0.07044,"14.5-14.8":0.11366,"15.0-15.1":0.04483,"15.2-15.3":0.05123,"15.4":0.05683,"15.5":0.08085,"15.6-15.7":0.55952,"16.0":0.20652,"16.1":0.39543,"16.2":0.19291,"16.3":0.3578,"16.4":0.07684,"16.5":0.20492,"16.6-16.7":3.83819,"17.0":1.36718,"17.1":0.08245,"17.2":0.0024},P:{"4":0.26725,"20":0.07195,"21":0.17474,"22":1.75771,"23":0.29809,"5.0-5.4":0.02056,"6.2-6.4":0.03084,"7.2-7.4":0.22614,_:"8.2 10.1","9.2":0.03084,"11.1-11.2":0.04112,"12.0":0.01028,"13.0":0.07195,"14.0":0.04112,"15.0":0.02056,"16.0":0.04112,"17.0":0.0514,"18.0":0.04112,"19.0":0.06167},I:{"0":0.31759,"3":0,"4":0.00006,"2.1":0,"2.2":0.0001,"2.3":0,"4.1":0.00006,"4.2-4.3":0.00022,"4.4":0,"4.4.3-4.4.4":0.00096},A:{"8":0.01643,"9":0.00411,"10":0.00411,"11":0.22174,_:"6 7 5.5"},K:{"0":0.46786,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00602,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.16864},Q:{_:"13.1"},O:{"0":0.10841},H:{"0":0.02},L:{"0":48.95545}}; diff --git a/node_modules/caniuse-lite/data/regions/MC.js b/node_modules/caniuse-lite/data/regions/MC.js new file mode 100644 index 00000000..972068fd --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MC.js @@ -0,0 +1 @@ +module.exports={C:{"3":0.02037,"4":0.02037,"10":0.00679,"12":0.01358,"14":0.00679,"15":0.00679,"16":0.01358,"17":0.00679,"18":0.00679,"19":0.00679,"22":0.00679,"25":0.00679,"29":0.00679,"30":0.00679,"31":0.01358,"32":0.00679,"34":0.00679,"36":0.00679,"37":0.01358,"38":0.00679,"39":0.00679,"40":0.02716,"41":0.01358,"42":0.00679,"67":0.11545,"68":0.10866,"72":0.12224,"75":0.57724,"78":0.46858,"82":0.0747,"92":0.00679,"100":0.00679,"102":0.02716,"104":0.01358,"105":0.00679,"106":0.00679,"109":0.25127,"115":0.32597,"116":0.00679,"117":0.06791,"118":2.17312,"119":0.23089,_:"2 5 6 7 8 9 11 13 20 21 23 24 26 27 28 33 35 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 69 70 71 73 74 76 77 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 103 107 108 110 111 112 113 114 120 121 122","3.5":0.01358,"3.6":0.04754},D:{"7":0.00679,"9":0.00679,"10":0.00679,"14":0.00679,"17":0.00679,"18":0.00679,"21":0.00679,"27":0.00679,"28":0.01358,"29":0.00679,"30":0.00679,"31":0.00679,"32":0.00679,"33":0.01358,"34":0.01358,"35":0.00679,"36":0.00679,"37":0.01358,"38":0.02037,"39":0.02716,"40":0.01358,"41":0.04075,"42":0.02037,"43":0.04754,"44":0.06112,"45":0.04754,"46":0.06112,"47":0.04075,"51":0.08828,"57":0.00679,"65":0.01358,"70":0.05433,"71":0.09507,"72":0.01358,"74":0.00679,"76":0.11545,"78":0.00679,"79":0.6044,"80":0.02716,"81":0.50933,"83":0.3803,"84":0.03396,"85":1.35141,"86":0.81492,"87":1.35141,"90":0.00679,"92":0.00679,"93":0.00679,"96":0.00679,"98":0.11545,"102":0.00679,"103":0.68589,"104":0.06791,"105":0.02037,"106":0.62477,"107":0.38709,"108":1.11372,"109":1.9626,"110":1.04581,"111":0.46179,"112":1.31745,"113":0.02037,"114":0.06791,"115":0.08828,"116":3.03558,"117":7.80286,"118":7.97263,"119":0.00679,_:"4 5 6 8 11 12 13 15 16 19 20 22 23 24 25 26 48 49 50 52 53 54 55 56 58 59 60 61 62 63 64 66 67 68 69 73 75 77 88 89 91 94 95 97 99 100 101 120 121 122"},F:{"12":0.00679,"23":0.00679,"31":0.02037,"32":0.00679,"65":0.09507,"96":0.19015,"102":10.38344,"103":3.99311,_:"9 11 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.00679},B:{"12":0.01358,"18":0.10187,"86":0.02716,"108":0.40067,"109":0.00679,"114":0.03396,"115":0.08149,"116":0.04754,"117":1.32425,"118":1.34462,_:"13 14 15 16 17 79 80 81 83 84 85 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 110 111 112 113 119"},E:{"4":0.00679,"8":0.00679,"9":0.12224,"14":0.44142,"15":0.01358,_:"0 5 6 7 10 11 12 13 3.1 3.2 10.1 11.1","5.1":0.01358,"6.1":0.00679,"7.1":0.00679,"9.1":0.00679,"12.1":0.02037,"13.1":0.11545,"14.1":0.57724,"15.1":0.61798,"15.2-15.3":0.08828,"15.4":0.04075,"15.5":0.06112,"15.6":0.50253,"16.0":0.04754,"16.1":0.34634,"16.2":0.06112,"16.3":0.57724,"16.4":0.17657,"16.5":0.46858,"16.6":3.76221,"17.0":1.51439,"17.1":0.14261,"17.2":0.00679},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00175,"5.0-5.1":0.00175,"6.0-6.1":0.00526,"7.0-7.1":0.01228,"8.1-8.4":0.00175,"9.0-9.2":0.01228,"9.3":0.0421,"10.0-10.2":0.00175,"10.3":0.06139,"11.0-11.2":0.05613,"11.3-11.4":0.01929,"12.0-12.1":0.01579,"12.2-12.5":0.27889,"13.0-13.1":0.00877,"13.2":0.04736,"13.3":0.01754,"13.4-13.7":0.05613,"14.0-14.4":0.15436,"14.5-14.8":0.24907,"15.0-15.1":0.09823,"15.2-15.3":0.11226,"15.4":0.12454,"15.5":0.17716,"15.6-15.7":1.22607,"16.0":0.45254,"16.1":0.8665,"16.2":0.42272,"16.3":0.78406,"16.4":0.16839,"16.5":0.44903,"16.6-16.7":8.41062,"17.0":2.9959,"17.1":0.18067,"17.2":0.00526},P:{"4":0.09472,"20":0.02105,"22":0.55778,"23":0.16839,_:"21 5.0-5.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0","6.2-6.4":0.05262,"16.0":0.01052,"17.0":0.02105,"18.0":0.01052,"19.0":0.0421},I:{"0":0.76304,"3":0,"4":0.00015,"2.1":0,"2.2":0.00023,"2.3":0,"4.1":0.00015,"4.2-4.3":0.00054,"4.4":0,"4.4.3-4.4.4":0.0023},A:{"6":0.03417,"7":0.03417,"8":0.46475,"9":0.08201,"10":0.08201,"11":0.33489,"5.5":0.00683},K:{"0":0.1059,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.01925,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.18612},Q:{"13.1":0.01605},O:{"0":0.11232},H:{"0":0},L:{"0":12.05807}}; diff --git a/node_modules/caniuse-lite/data/regions/MD.js b/node_modules/caniuse-lite/data/regions/MD.js new file mode 100644 index 00000000..14694cbb --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MD.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00367,"38":0.00367,"40":0.00367,"48":0.08448,"52":0.10284,"55":0.00367,"61":0.00367,"68":0.01102,"78":0.00735,"87":0.12121,"91":0.01102,"99":0.00367,"101":0.00367,"102":0.0551,"103":0.00367,"104":0.01102,"107":0.00735,"108":0.00367,"109":0.01837,"110":0.00367,"111":0.00367,"112":0.00735,"113":0.01102,"114":0.00735,"115":0.66849,"116":0.01837,"117":0.04775,"118":1.08354,"119":0.20569,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 41 42 43 44 45 46 47 49 50 51 53 54 56 57 58 59 60 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 89 90 92 93 94 95 96 97 98 100 105 106 120 121 122 3.5","3.6":0.03673},D:{"37":0.00367,"38":0.00367,"39":0.00367,"40":0.00367,"41":0.00367,"42":0.00367,"43":0.00367,"44":0.00367,"45":0.00735,"46":0.00367,"47":0.00367,"48":0.02571,"49":0.02938,"51":0.02571,"53":0.00367,"56":0.00367,"60":0.00367,"63":0.00367,"67":0.01102,"68":0.01102,"69":0.00367,"70":0.00735,"71":0.01102,"72":0.00735,"73":0.00367,"74":0.01102,"75":0.00367,"76":0.00367,"77":0.00367,"78":0.00735,"79":0.02571,"80":0.07346,"81":0.00735,"83":0.00735,"84":0.00735,"85":0.01469,"86":0.01102,"87":0.01102,"88":0.01102,"89":0.00735,"90":0.03306,"91":0.00367,"92":0.01102,"93":0.02204,"94":0.00735,"95":0.00367,"96":0.03673,"97":0.01102,"98":0.02204,"99":0.01837,"100":0.0404,"101":0.01102,"102":0.10284,"103":0.0404,"104":0.04775,"105":0.06611,"106":0.05877,"107":0.05142,"108":0.11754,"109":3.90807,"110":0.02204,"111":0.02938,"112":0.04775,"113":0.06244,"114":0.16161,"115":0.0955,"116":0.8301,"117":8.95845,"118":9.43594,"119":0.03306,"120":0.01469,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 50 52 54 55 57 58 59 61 62 64 65 66 121 122"},F:{"54":0.00367,"55":0.00367,"70":0.01469,"74":0.00367,"75":0.00367,"76":0.00367,"79":0.00367,"82":0.02571,"85":0.03673,"86":0.00735,"95":0.43709,"99":0.00367,"100":0.00367,"101":0.03306,"102":1.41411,"103":0.55462,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 77 78 80 81 83 84 87 88 89 90 91 92 93 94 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00367,"13":0.02204,"18":0.00735,"80":0.00367,"81":0.00367,"83":0.00367,"84":0.00367,"85":0.00367,"89":0.00367,"90":0.00367,"92":0.01102,"107":0.00367,"108":0.02204,"109":0.02938,"112":0.00367,"113":0.00735,"114":0.00735,"115":0.00735,"116":0.02204,"117":0.84479,"118":0.88152,"119":0.00367,_:"14 15 16 17 79 86 87 88 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 110 111"},E:{"9":0.01102,"14":0.01469,_:"0 4 5 6 7 8 10 11 12 13 15 3.1 3.2 6.1 7.1 10.1 17.2","5.1":0.01102,"9.1":0.0404,"11.1":0.00367,"12.1":0.00735,"13.1":0.02571,"14.1":0.04775,"15.1":0.00735,"15.2-15.3":0.01102,"15.4":0.03673,"15.5":0.01469,"15.6":0.10284,"16.0":0.01102,"16.1":0.04775,"16.2":0.0404,"16.3":0.06979,"16.4":0.05142,"16.5":0.12856,"16.6":0.20202,"17.0":0.29384,"17.1":0.02204},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00128,"5.0-5.1":0.00128,"6.0-6.1":0.00383,"7.0-7.1":0.00894,"8.1-8.4":0.00128,"9.0-9.2":0.00894,"9.3":0.03065,"10.0-10.2":0.00128,"10.3":0.04469,"11.0-11.2":0.04086,"11.3-11.4":0.01405,"12.0-12.1":0.01149,"12.2-12.5":0.20304,"13.0-13.1":0.00638,"13.2":0.03448,"13.3":0.01277,"13.4-13.7":0.04086,"14.0-14.4":0.11238,"14.5-14.8":0.18133,"15.0-15.1":0.07151,"15.2-15.3":0.08173,"15.4":0.09067,"15.5":0.12898,"15.6-15.7":0.89262,"16.0":0.32946,"16.1":0.63083,"16.2":0.30775,"16.3":0.57081,"16.4":0.12259,"16.5":0.32691,"16.6-16.7":6.12317,"17.0":2.1811,"17.1":0.13153,"17.2":0.00383},P:{"4":0.06243,"20":0.06243,"21":0.08324,"22":1.88329,"23":0.32255,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 15.0","7.2-7.4":0.05202,"11.1-11.2":0.0104,"13.0":0.02081,"14.0":0.0104,"16.0":0.02081,"17.0":0.03121,"18.0":0.03121,"19.0":0.04162},I:{"0":0.06925,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.00021},A:{"7":0.00367,"8":0.04775,"9":0.00735,"10":0.00735,"11":0.24976,_:"6 5.5"},K:{"0":0.3507,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.15187},Q:{_:"13.1"},O:{"0":0.08226},H:{"0":0.01},L:{"0":48.61184}}; diff --git a/node_modules/caniuse-lite/data/regions/ME.js b/node_modules/caniuse-lite/data/regions/ME.js new file mode 100644 index 00000000..c8a312b8 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/ME.js @@ -0,0 +1 @@ +module.exports={C:{"3":0.00317,"15":0.00317,"37":0.00317,"38":0.00317,"40":0.00317,"52":0.02222,"56":0.00317,"67":0.00635,"68":0.00635,"72":0.00635,"75":0.02857,"78":0.00635,"79":0.00317,"80":0.00317,"81":0.00635,"82":0.00635,"84":0.00317,"88":0.0127,"91":0.00635,"99":0.00317,"102":0.00317,"103":0.00317,"104":0.01587,"106":0.0127,"107":0.00317,"112":0.00317,"113":0.00317,"114":0.11109,"115":0.26662,"116":0.0127,"117":0.02857,"118":1.02838,"119":0.22218,_:"2 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 39 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 69 70 71 73 74 76 77 83 85 86 87 89 90 92 93 94 95 96 97 98 100 101 105 108 109 110 111 120 121 122 3.5","3.6":0.00317},D:{"21":0.00317,"28":0.00317,"31":0.00317,"33":0.00317,"36":0.00317,"38":0.0127,"39":0.00635,"40":0.00317,"41":0.00635,"42":0.00317,"43":0.00635,"44":0.00952,"45":0.00952,"46":0.00635,"47":0.00635,"49":0.07935,"51":0.0127,"53":0.05396,"58":0.00317,"64":0.00317,"65":0.00317,"66":0.00952,"68":0.06983,"70":0.00952,"71":0.00317,"74":0.00317,"75":0.00317,"76":0.00952,"77":0.00317,"78":0.00317,"79":0.38723,"80":0.01587,"81":0.03809,"83":0.04126,"84":0.0127,"85":0.09522,"86":0.00952,"87":0.14283,"88":0.02222,"89":0.00635,"90":0.00635,"91":0.00317,"92":0.0127,"93":0.0127,"94":0.02222,"95":0.00317,"96":0.00635,"97":0.00317,"98":0.00317,"99":0.03174,"100":0.01587,"101":0.00317,"102":0.00635,"103":0.05713,"104":0.00635,"105":0.02222,"106":0.04444,"107":0.00952,"108":0.02857,"109":2.85343,"110":0.0127,"111":0.0127,"112":0.02222,"113":0.02539,"114":0.09522,"115":0.09839,"116":0.8665,"117":8.58567,"118":9.46169,"119":0.00952,"120":0.00317,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 29 30 32 34 35 37 48 50 52 54 55 56 57 59 60 61 62 63 67 69 72 73 121 122"},F:{"28":0.01587,"31":0.00317,"40":0.00317,"42":0.00635,"46":0.04444,"65":0.00635,"68":0.19679,"70":0.00317,"77":0.00317,"79":0.00317,"85":0.00317,"95":0.04126,"101":0.00952,"102":1.31086,"103":0.33962,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 32 33 34 35 36 37 38 39 41 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 69 71 72 73 74 75 76 78 80 81 82 83 84 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.00317},B:{"12":0.00317,"16":0.00317,"18":0.00635,"85":0.00317,"86":0.00317,"92":0.03809,"107":0.03809,"109":0.01587,"110":0.00635,"111":0.00952,"113":0.00317,"114":0.00952,"115":0.00635,"116":0.0127,"117":0.77446,"118":0.56815,_:"13 14 15 17 79 80 81 83 84 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 108 112 119"},E:{"8":0.00317,"9":0.01904,"12":0.00317,"14":0.04444,"15":0.00317,_:"0 4 5 6 7 10 11 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 17.2","13.1":0.02222,"14.1":0.04444,"15.1":0.00317,"15.2-15.3":0.0127,"15.4":0.01904,"15.5":0.0127,"15.6":0.09205,"16.0":0.00635,"16.1":0.04444,"16.2":0.12061,"16.3":0.19679,"16.4":0.04126,"16.5":0.1714,"16.6":0.43166,"17.0":0.14283,"17.1":0.01587},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00139,"5.0-5.1":0.00139,"6.0-6.1":0.00417,"7.0-7.1":0.00973,"8.1-8.4":0.00139,"9.0-9.2":0.00973,"9.3":0.03337,"10.0-10.2":0.00139,"10.3":0.04867,"11.0-11.2":0.04449,"11.3-11.4":0.0153,"12.0-12.1":0.01251,"12.2-12.5":0.22108,"13.0-13.1":0.00695,"13.2":0.03754,"13.3":0.0139,"13.4-13.7":0.04449,"14.0-14.4":0.12236,"14.5-14.8":0.19744,"15.0-15.1":0.07787,"15.2-15.3":0.08899,"15.4":0.09872,"15.5":0.14044,"15.6-15.7":0.97193,"16.0":0.35874,"16.1":0.68689,"16.2":0.3351,"16.3":0.62153,"16.4":0.13348,"16.5":0.35596,"16.6-16.7":6.66724,"17.0":2.3749,"17.1":0.14322,"17.2":0.00417},P:{"4":0.31984,"20":0.15476,"21":0.14444,"22":2.89916,"23":0.56745,"5.0-5.4":0.05159,"6.2-6.4":0.0619,"7.2-7.4":0.01032,_:"8.2 10.1 12.0 14.0","9.2":0.01032,"11.1-11.2":0.03095,"13.0":0.05159,"15.0":0.01032,"16.0":0.0619,"17.0":0.01032,"18.0":0.04127,"19.0":0.07222},I:{"0":0.10866,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00008,"4.4":0,"4.4.3-4.4.4":0.00033},A:{"6":0.00317,"7":0.00635,"8":0.05396,"9":0.00952,"10":0.00952,"11":0.05396,_:"5.5"},K:{"0":0.24574,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00683,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.28669},Q:{_:"13.1"},O:{"0":0.04096},H:{"0":0},L:{"0":49.73957}}; diff --git a/node_modules/caniuse-lite/data/regions/MG.js b/node_modules/caniuse-lite/data/regions/MG.js new file mode 100644 index 00000000..7be34fea --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MG.js @@ -0,0 +1 @@ +module.exports={C:{"27":0.0037,"30":0.0222,"40":0.0037,"41":0.0037,"43":0.0037,"45":0.0037,"47":0.0074,"48":0.0185,"51":0.0037,"52":0.0629,"56":0.0185,"59":0.0037,"62":0.0037,"67":0.0037,"71":0.0037,"72":0.0111,"78":0.0111,"79":0.0111,"81":0.0037,"83":0.0074,"84":0.0037,"88":0.0074,"89":0.0037,"91":0.0037,"92":0.0037,"93":0.0037,"94":0.0074,"95":0.0037,"96":0.0111,"97":0.0037,"98":0.0037,"99":0.0074,"101":0.0037,"102":0.0296,"103":0.0148,"104":0.0037,"105":0.0148,"106":0.0037,"107":0.0037,"108":0.0111,"109":0.0111,"110":0.0185,"111":0.0703,"112":0.0185,"113":0.0296,"114":0.0222,"115":1.184,"116":0.0407,"117":0.1813,"118":2.6011,"119":0.407,"120":0.0074,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 29 31 32 33 34 35 36 37 38 39 42 44 46 49 50 53 54 55 57 58 60 61 63 64 65 66 68 69 70 73 74 75 76 77 80 82 85 86 87 90 100 121 122 3.5 3.6"},D:{"11":0.0592,"32":0.0037,"37":0.0037,"42":0.0074,"43":0.0111,"46":0.0037,"48":0.0037,"49":0.0148,"50":0.0037,"55":0.0037,"56":0.0037,"57":0.0185,"58":0.0037,"60":0.0037,"61":0.0074,"62":0.0037,"64":0.0074,"65":0.0037,"66":0.0037,"67":0.0037,"68":0.0037,"69":0.0074,"70":0.0148,"71":0.0037,"72":0.0037,"74":0.0407,"75":0.0037,"76":0.0037,"77":0.0185,"78":0.0037,"79":0.0222,"80":0.0111,"81":0.0259,"83":0.0037,"84":0.0037,"85":0.0037,"86":0.0148,"87":0.0148,"88":0.0444,"89":0.0222,"90":0.0148,"91":0.0037,"92":0.0037,"93":0.0148,"94":0.0111,"95":0.0296,"96":0.1036,"97":0.0666,"98":0.0111,"99":0.0148,"100":0.0185,"101":0.0111,"102":0.0333,"103":0.0666,"104":0.0148,"105":0.0407,"106":0.0518,"107":0.0222,"108":0.1147,"109":4.9876,"110":0.0111,"111":0.0185,"112":0.074,"113":0.0518,"114":0.148,"115":0.3108,"116":0.7733,"117":7.3408,"118":7.4222,"119":0.0111,"120":0.0037,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 36 38 39 40 41 44 45 47 51 52 53 54 59 63 73 121 122"},F:{"42":0.0037,"53":0.0629,"62":0.0037,"73":0.0037,"79":0.0148,"82":0.0037,"83":0.0111,"84":0.0037,"85":0.0074,"86":0.0148,"93":0.0074,"94":0.0037,"95":0.0666,"97":0.0037,"99":0.0037,"100":0.0037,"101":0.0074,"102":0.5957,"103":0.4107,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 54 55 56 57 58 60 63 64 65 66 67 68 69 70 71 72 74 75 76 77 78 80 81 87 88 89 90 91 92 96 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.0037},B:{"12":0.0037,"14":0.0037,"15":0.0037,"16":0.0037,"17":0.0111,"18":0.0259,"84":0.0074,"85":0.0037,"89":0.0037,"90":0.0222,"92":0.0629,"100":0.0333,"105":0.0037,"106":0.0037,"107":0.0074,"109":0.1258,"110":0.0074,"111":0.0185,"112":0.0111,"113":0.0074,"114":0.0222,"115":0.0185,"116":0.0481,"117":1.369,"118":1.369,"119":0.0074,_:"13 79 80 81 83 86 87 88 91 93 94 95 96 97 98 99 101 102 103 104 108"},E:{"14":0.0259,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 17.2","13.1":0.0148,"14.1":0.037,"15.1":0.0037,"15.2-15.3":0.0037,"15.4":0.0037,"15.5":0.0111,"15.6":0.0518,"16.0":0.0148,"16.1":0.0222,"16.2":0.0111,"16.3":0.0777,"16.4":0.0111,"16.5":0.0185,"16.6":0.0999,"17.0":0.1147,"17.1":0.0037},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00032,"5.0-5.1":0.00032,"6.0-6.1":0.00096,"7.0-7.1":0.00224,"8.1-8.4":0.00032,"9.0-9.2":0.00224,"9.3":0.0077,"10.0-10.2":0.00032,"10.3":0.01122,"11.0-11.2":0.01026,"11.3-11.4":0.00353,"12.0-12.1":0.00289,"12.2-12.5":0.05099,"13.0-13.1":0.0016,"13.2":0.00866,"13.3":0.00321,"13.4-13.7":0.01026,"14.0-14.4":0.02822,"14.5-14.8":0.04554,"15.0-15.1":0.01796,"15.2-15.3":0.02052,"15.4":0.02277,"15.5":0.03239,"15.6-15.7":0.22415,"16.0":0.08273,"16.1":0.15841,"16.2":0.07728,"16.3":0.14334,"16.4":0.03078,"16.5":0.08209,"16.6-16.7":1.53761,"17.0":0.5477,"17.1":0.03303,"17.2":0.00096},P:{"4":0.031,"20":0.02066,"21":0.05166,"22":0.76457,"23":0.05166,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 11.1-11.2","7.2-7.4":0.01033,"12.0":0.01033,"13.0":0.01033,"14.0":0.01033,"15.0":0.01033,"16.0":0.01033,"17.0":0.02066,"18.0":0.01033,"19.0":0.02066},I:{"0":0.09402,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00007,"4.4":0,"4.4.3-4.4.4":0.00028},A:{"11":0.0222,_:"6 7 8 9 10 5.5"},K:{"0":2.4502,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.8631,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.2268},Q:{"13.1":0.0189},O:{"0":0.9261},H:{"0":2.93},L:{"0":55.6007}}; diff --git a/node_modules/caniuse-lite/data/regions/MH.js b/node_modules/caniuse-lite/data/regions/MH.js new file mode 100644 index 00000000..326c9929 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MH.js @@ -0,0 +1 @@ +module.exports={C:{"113":0.1107,"115":0.01954,"118":2.18152,"119":0.74237,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 114 116 117 120 121 122 3.5 3.6"},D:{"73":0.10419,"78":0.00651,"93":0.12373,"95":0.00651,"103":0.16931,"107":0.02605,"109":22.67478,"112":0.02605,"113":0.00651,"114":0.04558,"115":0.01954,"116":4.42165,"117":9.20146,"118":12.01464,"119":0.00651,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 83 84 85 86 87 88 89 90 91 92 94 96 97 98 99 100 101 102 104 105 106 108 110 111 120 121 122"},F:{"98":0.01954,"102":0.00651,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 99 100 101 103 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.02605,"80":0.01954,"109":0.01954,"112":0.14978,"113":0.19536,"115":0.00651,"116":0.1107,"117":2.14245,"118":3.76394,_:"12 13 14 15 16 17 79 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 110 111 114 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.1 15.5 16.4 17.2","13.1":0.14978,"14.1":0.01954,"15.2-15.3":0.00651,"15.4":0.01954,"15.6":0.08466,"16.0":0.00651,"16.1":0.18885,"16.2":0.04558,"16.3":0.05861,"16.5":0.02605,"16.6":0.29955,"17.0":0.3256,"17.1":0.03907},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00078,"5.0-5.1":0.00078,"6.0-6.1":0.00234,"7.0-7.1":0.00546,"8.1-8.4":0.00078,"9.0-9.2":0.00546,"9.3":0.01873,"10.0-10.2":0.00078,"10.3":0.02732,"11.0-11.2":0.02498,"11.3-11.4":0.00859,"12.0-12.1":0.00703,"12.2-12.5":0.12412,"13.0-13.1":0.0039,"13.2":0.02108,"13.3":0.00781,"13.4-13.7":0.02498,"14.0-14.4":0.06869,"14.5-14.8":0.11085,"15.0-15.1":0.04371,"15.2-15.3":0.04996,"15.4":0.05542,"15.5":0.07884,"15.6-15.7":0.54565,"16.0":0.2014,"16.1":0.38562,"16.2":0.18813,"16.3":0.34893,"16.4":0.07494,"16.5":0.19984,"16.6-16.7":3.74305,"17.0":1.33329,"17.1":0.0804,"17.2":0.00234},P:{"20":0.07418,"21":0.05298,"22":1.07024,"23":0.39207,_:"4 5.0-5.4 6.2-6.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 18.0 19.0","7.2-7.4":0.03179,"17.0":0.05298},I:{"0":0.03123,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00009},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0.69851,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.35926},Q:{_:"13.1"},O:{"0":0.51971},H:{"0":0.17},L:{"0":25.98413}}; diff --git a/node_modules/caniuse-lite/data/regions/MK.js b/node_modules/caniuse-lite/data/regions/MK.js new file mode 100644 index 00000000..af314dd4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MK.js @@ -0,0 +1 @@ +module.exports={C:{"38":0.00348,"40":0.00348,"47":0.00348,"48":0.00348,"51":0.01394,"52":0.09058,"55":0.00697,"56":0.00697,"61":0.00348,"67":0.00348,"68":0.01742,"72":0.00348,"75":0.01394,"78":0.00697,"82":0.00348,"88":0.00697,"94":0.01394,"95":0.00348,"99":0.03832,"102":0.00348,"103":0.00348,"105":0.01742,"106":0.00348,"108":0.00348,"109":0.02439,"110":0.01742,"111":0.00348,"112":0.00348,"113":0.00697,"114":0.00697,"115":0.44595,"116":0.00348,"117":0.05923,"118":1.37618,"119":0.28569,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 41 42 43 44 45 46 49 50 53 54 57 58 59 60 62 63 64 65 66 69 70 71 73 74 76 77 79 80 81 83 84 85 86 87 89 90 91 92 93 96 97 98 100 101 104 107 120 121 122 3.5","3.6":0.00348},D:{"11":0.00348,"34":0.00348,"38":0.00697,"39":0.00348,"41":0.01045,"43":0.00348,"44":0.00348,"45":0.00348,"46":0.00348,"47":0.01742,"49":0.0871,"50":0.00348,"51":0.00348,"53":0.01045,"56":0.00348,"58":0.00697,"60":0.01045,"64":0.00697,"66":0.00348,"68":0.00348,"69":0.00348,"70":0.01045,"71":0.00348,"72":0.00348,"73":0.03832,"74":0.00348,"75":0.01045,"76":0.00697,"78":0.01045,"79":0.23691,"80":0.00348,"81":0.01742,"83":0.02439,"84":0.01394,"85":0.04181,"86":0.0209,"87":0.04878,"88":0.00697,"89":0.05226,"90":0.01394,"91":0.03832,"92":0.01742,"93":0.00697,"94":0.00348,"95":0.01394,"96":0.00697,"97":0.00348,"98":0.00348,"99":0.03484,"100":0.01045,"101":0.01742,"102":0.00697,"103":0.03832,"104":0.00697,"105":0.03484,"106":0.21252,"107":0.17768,"108":0.14633,"109":3.74878,"110":0.08362,"111":0.03832,"112":0.13239,"113":0.03832,"114":0.09407,"115":0.07316,"116":0.75951,"117":9.9085,"118":10.50774,"119":0.01045,"120":0.00348,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 40 42 48 52 54 55 57 59 61 62 63 65 67 77 121 122"},F:{"28":0.03136,"32":0.00348,"36":0.00697,"45":0.00697,"46":0.02787,"65":0.00348,"79":0.00697,"85":0.00348,"92":0.00697,"94":0.01394,"95":0.13936,"100":0.00348,"101":0.00348,"102":0.74558,"103":0.21949,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 33 34 35 37 38 39 40 41 42 43 44 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 86 87 88 89 90 91 93 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"13":0.00348,"18":0.00697,"92":0.01742,"93":0.00348,"95":0.00348,"105":0.00697,"106":0.03136,"107":0.02439,"108":0.02787,"109":0.02439,"110":0.01045,"111":0.00697,"112":0.00697,"113":0.01045,"114":0.01045,"115":0.01045,"116":0.01742,"117":0.86403,"118":0.91629,"119":0.00348,_:"12 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 94 96 97 98 99 100 101 102 103 104"},E:{"9":0.00697,"14":0.01045,"15":0.00348,_:"0 4 5 6 7 8 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 17.2","13.1":0.01742,"14.1":0.02787,"15.1":0.00697,"15.2-15.3":0.00348,"15.4":0.00697,"15.5":0.00697,"15.6":0.04878,"16.0":0.00697,"16.1":0.0209,"16.2":0.01394,"16.3":0.03136,"16.4":0.03832,"16.5":0.05574,"16.6":0.25085,"17.0":0.09407,"17.1":0.01045},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0013,"5.0-5.1":0.0013,"6.0-6.1":0.00389,"7.0-7.1":0.00907,"8.1-8.4":0.0013,"9.0-9.2":0.00907,"9.3":0.03109,"10.0-10.2":0.0013,"10.3":0.04534,"11.0-11.2":0.04145,"11.3-11.4":0.01425,"12.0-12.1":0.01166,"12.2-12.5":0.20597,"13.0-13.1":0.00648,"13.2":0.03498,"13.3":0.01295,"13.4-13.7":0.04145,"14.0-14.4":0.11399,"14.5-14.8":0.18394,"15.0-15.1":0.07254,"15.2-15.3":0.0829,"15.4":0.09197,"15.5":0.13083,"15.6-15.7":0.90547,"16.0":0.33421,"16.1":0.63992,"16.2":0.31219,"16.3":0.57904,"16.4":0.12436,"16.5":0.33162,"16.6-16.7":6.21135,"17.0":2.21251,"17.1":0.13342,"17.2":0.00389},P:{"4":0.27596,"20":0.04088,"21":0.07155,"22":2.02371,"23":0.42927,"5.0-5.4":0.03066,"6.2-6.4":0.01022,"7.2-7.4":0.01022,_:"8.2 10.1 12.0","9.2":0.01022,"11.1-11.2":0.01022,"13.0":0.04088,"14.0":0.01022,"15.0":0.01022,"16.0":0.02044,"17.0":0.01022,"18.0":0.01022,"19.0":0.04088},I:{"0":0.08428,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00025},A:{"7":0.00348,"8":0.04529,"9":0.00697,"10":0.00348,"11":0.14284,_:"6 5.5"},K:{"0":0.24109,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.1238},Q:{_:"13.1"},O:{"0":0.01955},H:{"0":0},L:{"0":49.63637}}; diff --git a/node_modules/caniuse-lite/data/regions/ML.js b/node_modules/caniuse-lite/data/regions/ML.js new file mode 100644 index 00000000..d972812d --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/ML.js @@ -0,0 +1 @@ +module.exports={C:{"41":0.00149,"45":0.00149,"49":0.00149,"52":0.00149,"57":0.00446,"72":0.00149,"78":0.00298,"99":0.02083,"102":0.00149,"108":0.00149,"114":0.00298,"115":0.23362,"116":0.00446,"117":0.02232,"118":0.62347,"119":0.15773,"120":0.00149,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 43 44 46 47 48 50 51 53 54 55 56 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 100 101 103 104 105 106 107 109 110 111 112 113 121 122 3.5 3.6"},D:{"11":0.00149,"44":0.00149,"56":0.00149,"64":0.00298,"65":0.00298,"68":0.00149,"72":0.00744,"73":0.00298,"75":0.00149,"77":0.00298,"79":0.00744,"80":0.00298,"81":0.03422,"83":0.00149,"84":0.00149,"87":0.00298,"88":0.00149,"89":0.00149,"90":0.00298,"92":0.00893,"93":0.00298,"95":0.00446,"98":0.00298,"99":0.01786,"102":0.00298,"103":0.0253,"104":0.00149,"105":0.01934,"106":0.00446,"107":0.00893,"108":0.01042,"109":0.44789,"110":0.00149,"111":0.00893,"112":0.00893,"113":0.00744,"114":0.01488,"115":0.01042,"116":0.10714,"117":2.53406,"118":2.79,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 48 49 50 51 52 53 54 55 57 58 59 60 61 62 63 66 67 69 70 71 74 76 78 85 86 91 94 96 97 100 101 119 120 121 122"},F:{"28":0.00149,"38":0.00298,"79":0.00149,"95":0.02381,"100":0.00149,"102":0.07738,"103":0.10118,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00595,"13":0.04464,"17":0.00149,"18":0.05357,"84":0.00149,"89":0.00149,"90":0.00298,"92":0.00893,"100":0.00149,"105":0.00149,"108":0.00446,"109":0.0625,"110":0.00298,"112":0.00298,"113":0.00149,"114":0.01042,"115":0.10267,"116":0.00893,"117":0.6324,"118":0.84518,_:"14 15 16 79 80 81 83 85 86 87 88 91 93 94 95 96 97 98 99 101 102 103 104 106 107 111 119"},E:{"14":0.00446,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 15.2-15.3 15.5 16.0 16.2 17.2","5.1":0.00744,"12.1":0.00149,"13.1":0.09226,"14.1":0.01488,"15.1":0.00149,"15.4":0.00149,"15.6":0.0253,"16.1":0.00149,"16.3":0.00893,"16.4":0.00149,"16.5":0.00298,"16.6":0.00744,"17.0":0.01339,"17.1":0.00149},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00141,"5.0-5.1":0.00141,"6.0-6.1":0.00424,"7.0-7.1":0.0099,"8.1-8.4":0.00141,"9.0-9.2":0.0099,"9.3":0.03393,"10.0-10.2":0.00141,"10.3":0.04948,"11.0-11.2":0.04524,"11.3-11.4":0.01555,"12.0-12.1":0.01272,"12.2-12.5":0.2248,"13.0-13.1":0.00707,"13.2":0.03817,"13.3":0.01414,"13.4-13.7":0.04524,"14.0-14.4":0.12442,"14.5-14.8":0.20077,"15.0-15.1":0.07918,"15.2-15.3":0.09049,"15.4":0.10038,"15.5":0.1428,"15.6-15.7":0.98828,"16.0":0.36477,"16.1":0.69844,"16.2":0.34074,"16.3":0.63199,"16.4":0.13573,"16.5":0.36194,"16.6-16.7":6.77938,"17.0":2.41484,"17.1":0.14563,"17.2":0.00424},P:{"4":0.19066,"20":0.08028,"21":0.21073,"22":0.84292,"23":0.07024,"5.0-5.4":0.01003,_:"6.2-6.4 8.2 10.1","7.2-7.4":0.25087,"9.2":0.02007,"11.1-11.2":0.01003,"12.0":0.01003,"13.0":0.01003,"14.0":0.04014,"15.0":0.01003,"16.0":0.06021,"17.0":0.06021,"18.0":0.01003,"19.0":0.30104},I:{"0":0.01694,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00005},A:{"11":0.00595,_:"6 7 8 9 10 5.5"},K:{"0":0.35626,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.10214,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.22982},Q:{"13.1":0.00851},O:{"0":0.22131},H:{"0":0.18},L:{"0":72.94077}}; diff --git a/node_modules/caniuse-lite/data/regions/MM.js b/node_modules/caniuse-lite/data/regions/MM.js new file mode 100644 index 00000000..78ceb0ee --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MM.js @@ -0,0 +1 @@ +module.exports={C:{"30":0.00256,"37":0.00256,"40":0.00256,"43":0.00769,"44":0.00256,"45":0.00256,"47":0.00513,"52":0.00256,"56":0.00256,"57":0.00256,"61":0.00256,"62":0.00256,"64":0.00513,"66":0.00256,"69":0.00256,"72":0.00769,"78":0.00256,"84":0.00256,"85":0.00256,"89":0.00256,"91":0.00256,"92":0.00256,"97":0.00256,"99":0.00256,"102":0.00513,"105":0.00513,"106":0.00513,"107":0.01025,"108":0.00513,"109":0.01025,"110":0.00513,"111":0.00513,"112":0.00256,"113":0.00769,"114":0.01538,"115":0.29475,"116":0.01794,"117":0.06408,"118":2.04784,"119":0.55105,"120":0.00513,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 38 39 41 42 46 48 49 50 51 53 54 55 58 59 60 63 65 67 68 70 71 73 74 75 76 77 79 80 81 82 83 86 87 88 90 93 94 95 96 98 100 101 103 104 121 122 3.5 3.6"},D:{"11":0.00256,"31":0.00256,"32":0.00769,"34":0.00256,"37":0.00769,"38":0.00513,"41":0.00256,"43":0.00256,"44":0.00256,"45":0.00256,"46":0.00256,"47":0.00256,"49":0.00256,"51":0.00256,"53":0.0205,"55":0.00256,"56":0.00256,"59":0.00256,"61":0.00513,"62":0.00513,"63":0.00256,"65":0.00256,"67":0.00256,"68":0.00256,"69":0.00256,"70":0.00513,"71":0.01025,"74":0.00769,"75":0.00513,"76":0.00513,"78":0.00513,"79":0.02819,"80":0.00769,"81":0.00513,"83":0.00513,"84":0.00256,"85":0.00256,"86":0.00513,"87":0.01794,"88":0.00513,"89":0.01794,"90":0.00513,"91":0.02819,"92":0.00769,"93":0.00256,"94":0.01538,"95":0.01025,"96":0.00513,"97":0.00513,"98":0.00256,"99":0.04101,"100":0.01025,"101":0.00256,"102":0.01025,"103":0.0205,"104":0.00769,"105":0.01282,"106":0.01538,"107":0.01538,"108":0.01282,"109":0.67151,"110":0.00769,"111":0.01794,"112":0.03588,"113":0.03845,"114":0.26912,"115":0.07433,"116":0.34344,"117":5.65142,"118":5.90772,"119":0.00769,"120":0.00256,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 33 35 36 39 40 42 48 50 52 54 57 58 60 64 66 72 73 77 121 122"},F:{"74":0.00513,"78":0.00513,"79":0.00256,"95":0.01282,"100":0.00513,"101":0.00513,"102":0.41008,"103":0.12559,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00513,"13":0.00256,"14":0.00256,"16":0.00769,"17":0.00513,"18":0.02563,"84":0.00256,"89":0.00256,"92":0.02819,"100":0.00513,"105":0.00256,"108":0.00256,"109":0.01282,"110":0.00256,"111":0.00256,"112":0.00256,"113":0.00513,"114":0.01025,"115":0.03076,"116":0.02819,"117":1.10722,"118":1.03033,"119":0.00513,_:"15 79 80 81 83 85 86 87 88 90 91 93 94 95 96 97 98 99 101 102 103 104 106 107"},E:{"9":0.00513,"13":0.00256,"14":0.01538,"15":0.00769,_:"0 4 5 6 7 8 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 17.2","10.1":0.00256,"11.1":0.00256,"12.1":0.00769,"13.1":0.0205,"14.1":0.03845,"15.1":0.01538,"15.2-15.3":0.00513,"15.4":0.01282,"15.5":0.02307,"15.6":0.33063,"16.0":0.00769,"16.1":0.0487,"16.2":0.01282,"16.3":0.07176,"16.4":0.02819,"16.5":0.07945,"16.6":0.51516,"17.0":0.54079,"17.1":0.01282},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00071,"5.0-5.1":0.00071,"6.0-6.1":0.00213,"7.0-7.1":0.00498,"8.1-8.4":0.00071,"9.0-9.2":0.00498,"9.3":0.01706,"10.0-10.2":0.00071,"10.3":0.02488,"11.0-11.2":0.02275,"11.3-11.4":0.00782,"12.0-12.1":0.0064,"12.2-12.5":0.11303,"13.0-13.1":0.00355,"13.2":0.01919,"13.3":0.00711,"13.4-13.7":0.02275,"14.0-14.4":0.06256,"14.5-14.8":0.10095,"15.0-15.1":0.03981,"15.2-15.3":0.0455,"15.4":0.05047,"15.5":0.0718,"15.6-15.7":0.49691,"16.0":0.18341,"16.1":0.35118,"16.2":0.17132,"16.3":0.31776,"16.4":0.06824,"16.5":0.18199,"16.6-16.7":3.40868,"17.0":1.21419,"17.1":0.07322,"17.2":0.00213},P:{"4":0.09419,"20":0.04186,"21":0.07326,"22":0.8477,"23":0.15698,_:"5.0-5.4 6.2-6.4 8.2 10.1 14.0","7.2-7.4":0.0314,"9.2":0.02093,"11.1-11.2":0.01047,"12.0":0.01047,"13.0":0.02093,"15.0":0.01047,"16.0":0.0314,"17.0":0.02093,"18.0":0.01047,"19.0":0.0314},I:{"0":0.26633,"3":0,"4":0.00005,"2.1":0,"2.2":0.00008,"2.3":0,"4.1":0.00005,"4.2-4.3":0.00019,"4.4":0,"4.4.3-4.4.4":0.0008},A:{"7":0.01185,"8":0.02766,"9":0.0079,"10":0.00395,"11":0.03951,_:"6 5.5"},K:{"0":0.51308,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.17103},Q:{"13.1":0.05205},O:{"0":1.82182},H:{"0":0},L:{"0":66.35664}}; diff --git a/node_modules/caniuse-lite/data/regions/MN.js b/node_modules/caniuse-lite/data/regions/MN.js new file mode 100644 index 00000000..425363e3 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MN.js @@ -0,0 +1 @@ +module.exports={C:{"35":0.00379,"39":0.00379,"40":0.00379,"41":0.00379,"43":0.00379,"47":0.00379,"52":0.00379,"78":0.00379,"89":0.00379,"91":0.00379,"99":0.00379,"102":0.00379,"107":0.00379,"112":0.00379,"113":0.00379,"115":0.19324,"116":0.00379,"117":0.0341,"118":0.68581,"119":0.15156,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 42 44 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 90 92 93 94 95 96 97 98 100 101 103 104 105 106 108 109 110 111 114 120 121 122 3.5","3.6":0.00379},D:{"31":0.00379,"33":0.00379,"37":0.00379,"39":0.00379,"40":0.00379,"41":0.00379,"42":0.00379,"43":0.00758,"44":0.00758,"45":0.00758,"46":0.00758,"47":0.00379,"49":0.00379,"50":0.00379,"51":0.00758,"58":0.00379,"60":0.00379,"61":0.00379,"63":0.00379,"66":0.00379,"67":0.00379,"69":0.00379,"70":0.01895,"72":0.00379,"73":0.00379,"74":0.01137,"76":0.00379,"77":0.01137,"78":0.00379,"79":0.01516,"80":0.00379,"81":0.00379,"83":0.01516,"84":0.00379,"85":0.01516,"86":0.00758,"87":0.01895,"88":0.01137,"89":0.01137,"90":0.00758,"91":0.00758,"92":0.00379,"93":0.00379,"94":0.00758,"95":0.00379,"96":0.00379,"97":0.00758,"98":0.00758,"99":0.02273,"100":0.00758,"101":0.01895,"102":0.03031,"103":0.08336,"104":0.03031,"105":0.04547,"106":0.01516,"107":0.01895,"108":0.01895,"109":2.76976,"110":0.01137,"111":0.04547,"112":0.08715,"113":0.07957,"114":0.15914,"115":0.08715,"116":0.85253,"117":10.04464,"118":11.41626,"119":0.05305,"120":0.01137,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 34 35 36 38 48 52 53 54 55 56 57 59 62 64 65 68 71 75 121 122"},F:{"31":0.00379,"73":0.00379,"78":0.00758,"79":0.00758,"85":0.00379,"87":0.00379,"95":0.04926,"98":0.00379,"99":0.01137,"100":0.00379,"101":0.00758,"102":0.97377,"103":0.28039,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 80 81 82 83 84 86 88 89 90 91 92 93 94 96 97 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00379,"16":0.00379,"17":0.00379,"18":0.01516,"84":0.00379,"89":0.00379,"90":0.00379,"92":0.03031,"100":0.01137,"101":0.00379,"104":0.01137,"105":0.00379,"107":0.00758,"108":0.00758,"109":0.08715,"110":0.00758,"111":0.01516,"112":0.01895,"113":0.02273,"114":0.0341,"115":0.03031,"116":0.06441,"117":2.73945,"118":2.50074,"119":0.00379,_:"13 14 15 79 80 81 83 85 86 87 88 91 93 94 95 96 97 98 99 102 103 106"},E:{"9":0.01516,"13":0.00379,"14":0.02652,"15":0.00758,_:"0 4 5 6 7 8 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.00379,"13.1":0.01895,"14.1":0.07199,"15.1":0.01516,"15.2-15.3":0.00758,"15.4":0.00758,"15.5":0.03789,"15.6":0.12125,"16.0":0.02652,"16.1":0.07957,"16.2":0.04547,"16.3":0.12504,"16.4":0.04926,"16.5":0.10609,"16.6":0.3448,"17.0":0.25007,"17.1":0.01516},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00217,"5.0-5.1":0.00217,"6.0-6.1":0.00651,"7.0-7.1":0.01519,"8.1-8.4":0.00217,"9.0-9.2":0.01519,"9.3":0.05207,"10.0-10.2":0.00217,"10.3":0.07593,"11.0-11.2":0.06942,"11.3-11.4":0.02386,"12.0-12.1":0.01953,"12.2-12.5":0.34495,"13.0-13.1":0.01085,"13.2":0.05858,"13.3":0.0217,"13.4-13.7":0.06942,"14.0-14.4":0.19092,"14.5-14.8":0.30807,"15.0-15.1":0.12149,"15.2-15.3":0.13885,"15.4":0.15403,"15.5":0.21912,"15.6-15.7":1.51648,"16.0":0.55973,"16.1":1.07173,"16.2":0.52285,"16.3":0.96977,"16.4":0.20827,"16.5":0.55539,"16.6-16.7":10.40276,"17.0":3.70551,"17.1":0.22346,"17.2":0.00651},P:{"4":0.07145,"20":0.11228,"21":0.18374,"22":2.31714,"23":0.35727,"5.0-5.4":0.02042,"6.2-6.4":0.02042,"7.2-7.4":0.08166,_:"8.2 10.1 12.0","9.2":0.02042,"11.1-11.2":0.03062,"13.0":0.02042,"14.0":0.01021,"15.0":0.02042,"16.0":0.04083,"17.0":0.06125,"18.0":0.04083,"19.0":0.11228},I:{"0":0.12359,"3":0,"4":0.00002,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00009,"4.4":0,"4.4.3-4.4.4":0.00037},A:{"6":0.00453,"7":0.00906,"8":0.0634,"9":0.00906,"10":0.00906,"11":0.08604,_:"5.5"},K:{"0":0.11801,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00621,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.17391},Q:{_:"13.1"},O:{"0":0.10559},H:{"0":0},L:{"0":37.93276}}; diff --git a/node_modules/caniuse-lite/data/regions/MO.js b/node_modules/caniuse-lite/data/regions/MO.js new file mode 100644 index 00000000..ed46bea3 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MO.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.08468,"78":0.02117,"80":0.01694,"81":0.00423,"91":0.00423,"94":0.03811,"100":0.01694,"108":0.00423,"112":0.01694,"113":0.00423,"115":0.17783,"116":0.00423,"117":0.03811,"118":0.57159,"119":0.12279,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 82 83 84 85 86 87 88 89 90 92 93 95 96 97 98 99 101 102 103 104 105 106 107 109 110 111 114 120 121 122 3.5 3.6"},D:{"30":0.00423,"34":0.06774,"38":0.16513,"43":0.00423,"44":0.00423,"45":0.00423,"46":0.00423,"49":0.03811,"51":0.00423,"53":0.01694,"55":0.04234,"57":0.00423,"58":0.0127,"60":0.00847,"61":0.08045,"62":0.0254,"65":0.00423,"69":0.0127,"70":0.01694,"72":0.00423,"73":0.00847,"74":0.05081,"75":0.00847,"76":0.00847,"77":0.01694,"78":0.0254,"79":0.49114,"80":0.08468,"81":0.05928,"83":0.03387,"84":0.00423,"85":0.00423,"86":0.0254,"87":0.21593,"88":0.00847,"89":0.03387,"91":0.01694,"92":0.0254,"93":0.00423,"94":0.0127,"95":0.00847,"96":0.03387,"97":0.08891,"98":0.06351,"99":0.26674,"100":0.02117,"101":0.03811,"102":0.02964,"103":0.16936,"104":0.01694,"105":0.11855,"106":0.0254,"107":0.03811,"108":0.06351,"109":1.84179,"110":0.03811,"111":0.02964,"112":0.09738,"113":0.11008,"114":0.1863,"115":0.16089,"116":1.11778,"117":9.7128,"118":9.55614,"119":0.05504,"120":0.08891,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 35 36 37 39 40 41 42 47 48 50 52 54 56 59 63 64 66 67 68 71 90 121 122"},F:{"28":0.01694,"36":0.02117,"40":0.00423,"46":0.09315,"74":0.00847,"95":0.02964,"102":0.13972,"103":0.05081,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00423,"18":0.0254,"105":0.00423,"108":0.00423,"109":0.08891,"111":0.02964,"112":0.00847,"113":0.02964,"114":0.0127,"115":0.00847,"116":0.10585,"117":1.79945,"118":1.72324,_:"13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 106 107 110 119"},E:{"9":0.00847,"11":0.00423,"12":0.0127,"13":0.05504,"14":0.30061,"15":0.14819,_:"0 4 5 6 7 8 10 3.1 3.2 5.1 6.1 7.1 9.1 10.1 17.2","11.1":0.00423,"12.1":0.04234,"13.1":0.1863,"14.1":0.68591,"15.1":0.06774,"15.2-15.3":0.07198,"15.4":0.10162,"15.5":0.20747,"15.6":0.68591,"16.0":0.06351,"16.1":0.14396,"16.2":0.11855,"16.3":0.35566,"16.4":0.13972,"16.5":0.36412,"16.6":3.32792,"17.0":0.58006,"17.1":0.02117},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00246,"5.0-5.1":0.00246,"6.0-6.1":0.00738,"7.0-7.1":0.01721,"8.1-8.4":0.00246,"9.0-9.2":0.01721,"9.3":0.05901,"10.0-10.2":0.00246,"10.3":0.08606,"11.0-11.2":0.07868,"11.3-11.4":0.02705,"12.0-12.1":0.02213,"12.2-12.5":0.39094,"13.0-13.1":0.01229,"13.2":0.06639,"13.3":0.02459,"13.4-13.7":0.07868,"14.0-14.4":0.21637,"14.5-14.8":0.34915,"15.0-15.1":0.13769,"15.2-15.3":0.15736,"15.4":0.17457,"15.5":0.24834,"15.6-15.7":1.71868,"16.0":0.63436,"16.1":1.21463,"16.2":0.59256,"16.3":1.09907,"16.4":0.23604,"16.5":0.62945,"16.6-16.7":11.78981,"17.0":4.19958,"17.1":0.25325,"17.2":0.00738},P:{"4":0.75991,"20":0.07939,"21":0.11342,"22":2.37048,"23":0.55576,"5.0-5.4":0.04537,_:"6.2-6.4 7.2-7.4 8.2 10.1 11.1-11.2 14.0 16.0","9.2":0.02268,"12.0":0.01134,"13.0":0.02268,"15.0":0.01134,"17.0":0.04537,"18.0":0.02268,"19.0":0.11342},I:{"0":0.07456,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.00022},A:{"8":0.17642,"9":0.03528,"10":0.03528,"11":0.17642,_:"6 7 5.5"},K:{"0":0.06918,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.26519},Q:{"13.1":0.21331},O:{"0":0.65721},H:{"0":0},L:{"0":30.10729}}; diff --git a/node_modules/caniuse-lite/data/regions/MP.js b/node_modules/caniuse-lite/data/regions/MP.js new file mode 100644 index 00000000..dd97ccf2 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MP.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.01179,"61":0.0059,"78":0.21815,"110":0.04127,"113":0.0059,"114":0.06486,"115":0.09434,"117":0.01179,"118":0.35376,"119":0.10613,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 111 112 116 120 121 122 3.5 3.6"},D:{"49":0.01769,"53":0.01179,"54":0.01179,"65":0.0059,"66":0.01769,"73":0.02358,"77":0.01179,"79":0.15919,"81":0.0059,"87":0.02358,"91":0.0059,"92":0.02948,"93":0.25942,"96":0.05306,"103":0.11202,"105":0.0059,"107":0.0059,"108":0.08254,"109":1.79828,"110":0.0059,"111":0.01179,"112":0.02358,"113":0.04127,"114":0.12971,"115":0.31838,"116":5.61299,"117":17.46985,"118":17.48754,"119":0.01769,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 55 56 57 58 59 60 61 62 63 64 67 68 69 70 71 72 74 75 76 78 80 83 84 85 86 88 89 90 94 95 97 98 99 100 101 102 104 106 120 121 122"},F:{"99":0.0059,"100":0.02948,"101":0.02358,"102":0.77238,"103":0.07075,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"14":0.0059,"18":0.0059,"108":0.17098,"109":0.11792,"114":0.0059,"115":0.0059,"116":0.1415,"117":2.68858,"118":3.20153,_:"12 13 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 110 111 112 113 119"},E:{"14":0.11792,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 11.1 12.1 17.2","10.1":0.04127,"13.1":0.02358,"14.1":0.737,"15.1":0.05306,"15.2-15.3":0.0059,"15.4":0.06486,"15.5":0.0059,"15.6":0.23584,"16.0":0.02948,"16.1":0.11792,"16.2":0.04717,"16.3":0.22994,"16.4":0.02948,"16.5":0.08844,"16.6":0.96105,"17.0":0.35376,"17.1":0.0059},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00105,"5.0-5.1":0.00105,"6.0-6.1":0.00315,"7.0-7.1":0.00734,"8.1-8.4":0.00105,"9.0-9.2":0.00734,"9.3":0.02518,"10.0-10.2":0.00105,"10.3":0.03671,"11.0-11.2":0.03357,"11.3-11.4":0.01154,"12.0-12.1":0.00944,"12.2-12.5":0.16679,"13.0-13.1":0.00524,"13.2":0.02832,"13.3":0.01049,"13.4-13.7":0.03357,"14.0-14.4":0.09231,"14.5-14.8":0.14896,"15.0-15.1":0.05874,"15.2-15.3":0.06713,"15.4":0.07448,"15.5":0.10595,"15.6-15.7":0.73324,"16.0":0.27064,"16.1":0.5182,"16.2":0.2528,"16.3":0.4689,"16.4":0.1007,"16.5":0.26854,"16.6-16.7":5.02987,"17.0":1.79166,"17.1":0.10805,"17.2":0.00315},P:{"4":0.01073,"20":0.01073,"21":0.4291,"22":5.3208,"23":0.82601,"5.0-5.4":0.01073,_:"6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0","18.0":0.01073,"19.0":0.02145},I:{"0":0.00408,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.00001},A:{"11":0.01769,_:"6 7 8 9 10 5.5"},K:{"0":0.04514,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.09439},Q:{"13.1":0.0041},O:{"0":0.09029},H:{"0":0},L:{"0":27.11318}}; diff --git a/node_modules/caniuse-lite/data/regions/MQ.js b/node_modules/caniuse-lite/data/regions/MQ.js new file mode 100644 index 00000000..04236635 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MQ.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.00892,"68":0.01783,"78":0.00446,"95":0.00446,"102":0.03121,"104":0.01783,"110":0.00446,"112":0.00446,"113":0.00446,"114":0.00446,"115":0.23182,"116":0.00892,"117":0.07133,"118":2.16659,"119":0.65087,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 103 105 106 107 108 109 111 120 121 122 3.5 3.6"},D:{"61":0.00446,"63":0.00892,"65":0.00446,"68":0.00446,"70":0.00446,"76":0.02229,"79":0.01783,"81":0.00446,"83":0.00892,"86":0.00446,"87":0.01337,"88":0.14266,"89":0.00892,"91":0.00446,"93":0.01783,"94":0.00446,"95":0.00446,"96":0.00446,"97":0.00446,"98":0.00446,"99":0.02229,"100":0.00446,"102":0.00446,"103":0.02675,"105":0.12482,"106":0.00446,"107":0.00446,"108":0.02229,"109":1.16354,"110":0.00892,"111":0.00446,"112":0.04458,"113":0.04012,"114":0.0535,"115":0.15157,"116":0.91389,"117":10.1687,"118":12.26842,"119":0.00892,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 62 64 66 67 69 71 72 73 74 75 77 78 80 84 85 90 92 101 104 120 121 122"},F:{"28":0.00446,"46":0.01783,"85":0.00446,"89":0.15603,"92":0.00446,"95":0.08024,"99":0.03121,"101":0.00446,"102":1.81441,"103":0.32098,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 90 91 93 94 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"16":0.00446,"18":0.00446,"92":0.01337,"97":0.00446,"101":0.00446,"104":0.06241,"106":0.00446,"108":0.00446,"109":0.02675,"110":0.00446,"111":0.00446,"112":0.00446,"113":0.00446,"114":0.00892,"115":0.02229,"116":0.04904,"117":3.78038,"118":3.29,"119":0.00892,_:"12 13 14 15 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 98 99 100 102 103 105 107"},E:{"14":0.11145,"15":0.01337,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.01337,"13.1":0.0847,"14.1":0.15157,"15.1":0.02229,"15.2-15.3":0.12482,"15.4":0.31206,"15.5":0.1694,"15.6":0.41459,"16.0":0.01337,"16.1":0.09362,"16.2":0.10699,"16.3":0.30314,"16.4":0.12928,"16.5":0.55279,"16.6":1.7297,"17.0":0.90943,"17.1":0.04012},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00199,"5.0-5.1":0.00199,"6.0-6.1":0.00597,"7.0-7.1":0.01393,"8.1-8.4":0.00199,"9.0-9.2":0.01393,"9.3":0.04775,"10.0-10.2":0.00199,"10.3":0.06964,"11.0-11.2":0.06367,"11.3-11.4":0.02189,"12.0-12.1":0.01791,"12.2-12.5":0.31637,"13.0-13.1":0.00995,"13.2":0.05372,"13.3":0.0199,"13.4-13.7":0.06367,"14.0-14.4":0.1751,"14.5-14.8":0.28255,"15.0-15.1":0.11143,"15.2-15.3":0.12735,"15.4":0.14127,"15.5":0.20097,"15.6-15.7":1.39085,"16.0":0.51336,"16.1":0.98295,"16.2":0.47954,"16.3":0.88943,"16.4":0.19102,"16.5":0.50938,"16.6-16.7":9.54096,"17.0":3.39853,"17.1":0.20495,"17.2":0.00597},P:{"4":0.04176,"20":0.28191,"21":0.18794,"22":2.70422,"23":0.54293,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 14.0","7.2-7.4":0.02088,"11.1-11.2":0.02088,"13.0":0.03132,"15.0":0.01044,"16.0":0.05221,"17.0":0.01044,"18.0":0.06265,"19.0":0.09397},I:{"0":0.02756,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00008},A:{"11":0.01337,_:"6 7 8 9 10 5.5"},K:{"0":0.37679,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.71479},Q:{_:"13.1"},O:{"0":0.01108},H:{"0":0},L:{"0":30.86715}}; diff --git a/node_modules/caniuse-lite/data/regions/MR.js b/node_modules/caniuse-lite/data/regions/MR.js new file mode 100644 index 00000000..29ff3112 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MR.js @@ -0,0 +1 @@ +module.exports={C:{"27":0.001,"30":0.001,"43":0.01202,"47":0.01603,"49":0.001,"52":0.002,"57":0.001,"72":0.00301,"92":0.00701,"110":0.01904,"111":0.001,"112":0.001,"113":0.00401,"114":0.01303,"115":0.2495,"116":0.001,"117":0.01202,"118":0.2485,"119":0.09719,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 29 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 48 50 51 53 54 55 56 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 120 121 122 3.5 3.6"},D:{"11":0.00601,"29":0.002,"33":0.00301,"38":0.001,"39":0.001,"40":0.001,"43":0.002,"49":0.001,"55":0.00301,"58":0.8507,"60":0.03507,"61":0.01503,"63":0.002,"65":0.00701,"66":0.00902,"68":0.01303,"69":0.001,"70":0.01102,"72":0.00802,"73":0.002,"74":0.00501,"75":0.01603,"76":0.001,"77":0.00601,"79":0.00301,"80":0.001,"81":0.00501,"83":0.002,"84":0.002,"86":0.001,"87":0.00902,"88":0.00501,"90":0.001,"91":0.002,"92":0.001,"93":0.02305,"94":0.00301,"95":0.02104,"96":0.002,"98":0.00601,"99":0.00401,"100":0.001,"102":0.001,"103":0.00301,"104":0.00301,"105":0.02004,"106":0.002,"107":0.01403,"108":0.01804,"109":0.5521,"111":0.00401,"112":0.01703,"113":0.02204,"114":0.02004,"115":0.09319,"116":0.25651,"117":1.36673,"118":1.78857,"119":0.001,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 34 35 36 37 41 42 44 45 46 47 48 50 51 52 53 54 56 57 59 62 64 67 71 78 85 89 97 101 110 120 121 122"},F:{"77":0.001,"85":0.00301,"95":0.09018,"100":0.001,"101":0.002,"102":0.04008,"103":0.04008,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.002,"13":0.002,"14":0.00501,"15":0.002,"16":0.001,"17":0.00301,"18":0.01002,"84":0.002,"89":0.00501,"90":0.002,"92":0.01703,"94":0.001,"100":0.00401,"106":0.001,"108":0.00501,"109":0.00802,"110":0.00601,"113":0.001,"114":0.01603,"115":0.00601,"116":0.00601,"117":0.31964,"118":0.32264,_:"79 80 81 83 85 86 87 88 91 93 95 96 97 98 99 101 102 103 104 105 107 111 112 119"},E:{"12":0.001,"13":0.001,"14":0.00601,"15":0.001,_:"0 4 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1 10.1 11.1 15.1 17.2","5.1":0.06513,"12.1":0.002,"13.1":0.001,"14.1":0.00701,"15.2-15.3":0.00301,"15.4":0.03206,"15.5":0.001,"15.6":0.00701,"16.0":0.001,"16.1":0.001,"16.2":0.001,"16.3":0.02004,"16.4":0.001,"16.5":0.04208,"16.6":0.03607,"17.0":0.03507,"17.1":0.00401},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00127,"5.0-5.1":0.00127,"6.0-6.1":0.00381,"7.0-7.1":0.00889,"8.1-8.4":0.00127,"9.0-9.2":0.00889,"9.3":0.03047,"10.0-10.2":0.00127,"10.3":0.04443,"11.0-11.2":0.04062,"11.3-11.4":0.01396,"12.0-12.1":0.01143,"12.2-12.5":0.20185,"13.0-13.1":0.00635,"13.2":0.03428,"13.3":0.01269,"13.4-13.7":0.04062,"14.0-14.4":0.11171,"14.5-14.8":0.18027,"15.0-15.1":0.07109,"15.2-15.3":0.08125,"15.4":0.09013,"15.5":0.12822,"15.6-15.7":0.88736,"16.0":0.32752,"16.1":0.62712,"16.2":0.30594,"16.3":0.56746,"16.4":0.12187,"16.5":0.32499,"16.6-16.7":6.08714,"17.0":2.16827,"17.1":0.13076,"17.2":0.00381},P:{"4":0.20257,"20":0.63808,"21":1.08373,"22":3.69684,"23":0.20257,"5.0-5.4":0.01013,"6.2-6.4":0.03038,"7.2-7.4":3.59555,_:"8.2 10.1","9.2":0.0709,"11.1-11.2":0.28359,"12.0":0.03038,"13.0":0.1418,"14.0":0.23295,"15.0":0.1418,"16.0":0.87104,"17.0":0.18231,"18.0":0.47603,"19.0":1.72181},I:{"0":0.06266,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00019},A:{"8":0.01078,"9":0.00108,"10":0.00324,"11":0.12618,_:"6 7 5.5"},K:{"0":1.24557,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.08997},Q:{_:"13.1"},O:{"0":0.12596},H:{"0":0.05},L:{"0":64.68369}}; diff --git a/node_modules/caniuse-lite/data/regions/MS.js b/node_modules/caniuse-lite/data/regions/MS.js new file mode 100644 index 00000000..82a0ebaa --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MS.js @@ -0,0 +1 @@ +module.exports={C:{"78":0.02272,"102":0.02272,"115":0.02272,"116":0.04543,"118":0.69054,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 105 106 107 108 109 110 111 112 113 114 117 119 120 121 122 3.5 3.6"},D:{"87":0.02272,"91":0.04543,"95":0.32255,"103":0.06815,"108":0.06815,"109":1.10849,"114":1.52191,"115":0.02272,"116":0.32255,"117":14.66026,"118":11.03949,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 88 89 90 92 93 94 96 97 98 99 100 101 102 104 105 106 107 110 111 112 113 119 120 121 122"},F:{"101":0.04543,"102":0.43613,"103":0.20898,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"89":0.27712,"109":0.16355,"112":0.02272,"116":0.16355,"117":3.89335,"118":4.14776,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 110 111 113 114 115 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.1 15.2-15.3 16.0 16.1 16.2 16.4 16.5 17.1","13.1":0.16355,"14.1":0.25441,"15.4":0.04543,"15.5":0.02272,"15.6":0.53153,"16.3":0.27712,"16.6":0.78594,"17.0":0.78594,"17.2":0.02272},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.001,"5.0-5.1":0.001,"6.0-6.1":0.00299,"7.0-7.1":0.00698,"8.1-8.4":0.001,"9.0-9.2":0.00698,"9.3":0.02391,"10.0-10.2":0.001,"10.3":0.03488,"11.0-11.2":0.03189,"11.3-11.4":0.01096,"12.0-12.1":0.00897,"12.2-12.5":0.15844,"13.0-13.1":0.00498,"13.2":0.0269,"13.3":0.00996,"13.4-13.7":0.03189,"14.0-14.4":0.08769,"14.5-14.8":0.1415,"15.0-15.1":0.0558,"15.2-15.3":0.06377,"15.4":0.07075,"15.5":0.10064,"15.6-15.7":0.69652,"16.0":0.25708,"16.1":0.49225,"16.2":0.24014,"16.3":0.44541,"16.4":0.09566,"16.5":0.25509,"16.6-16.7":4.77797,"17.0":1.70193,"17.1":0.10263,"17.2":0.00299},P:{"20":0.11423,"21":0.31731,"22":2.31005,"23":0.44424,_:"4 5.0-5.4 6.2-6.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 18.0 19.0","7.2-7.4":0.06346,"17.0":0.1777},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{_:"0"},Q:{_:"13.1"},O:{_:"0"},H:{"0":0},L:{"0":44.04876}}; diff --git a/node_modules/caniuse-lite/data/regions/MT.js b/node_modules/caniuse-lite/data/regions/MT.js new file mode 100644 index 00000000..91a210f6 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MT.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.00504,"68":0.03527,"78":0.01008,"88":0.00504,"107":0.02519,"108":0.01008,"110":0.00504,"113":0.00504,"114":0.00504,"115":0.09572,"116":0.01511,"117":0.09572,"118":1.17385,"119":0.23175,"120":0.00504,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 109 111 112 121 122 3.5 3.6"},D:{"42":0.00504,"43":0.00504,"44":0.00504,"45":0.00504,"46":0.00504,"47":0.00504,"49":0.01008,"51":0.00504,"53":0.00504,"69":0.03527,"70":0.00504,"74":0.00504,"75":0.00504,"76":0.00504,"77":0.02015,"79":0.02519,"80":0.00504,"81":0.00504,"83":0.00504,"85":0.00504,"86":0.00504,"87":0.01008,"88":0.01008,"89":0.00504,"90":0.00504,"91":0.00504,"92":0.02015,"93":0.5038,"96":0.01008,"97":0.00504,"99":0.00504,"100":0.00504,"103":0.07557,"104":0.00504,"105":0.00504,"106":0.02015,"107":0.15114,"108":0.01008,"109":0.94714,"110":0.01511,"111":0.01008,"112":0.08061,"113":0.03527,"114":0.1461,"115":0.2519,"116":1.50132,"117":15.79413,"118":15.47674,"119":0.01511,"120":0.00504,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 48 50 52 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 71 72 73 78 84 94 95 98 101 102 121 122"},F:{"28":0.0403,"36":0.00504,"46":0.00504,"90":0.01511,"95":0.00504,"100":0.00504,"101":0.01008,"102":2.11596,"103":0.2922,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 91 92 93 94 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00504,"92":0.00504,"107":0.00504,"108":0.00504,"109":0.04534,"112":0.01008,"113":0.01008,"114":0.02015,"115":0.02519,"116":0.08565,"117":2.49885,"118":2.4132,"119":0.00504,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 110 111"},E:{"9":0.01008,"13":0.01008,"14":0.04534,"15":0.01008,_:"0 4 5 6 7 8 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 17.2","9.1":0.00504,"11.1":0.00504,"12.1":0.01008,"13.1":0.07557,"14.1":0.16122,"15.1":0.03527,"15.2-15.3":0.02519,"15.4":0.02519,"15.5":0.0403,"15.6":0.37281,"16.0":0.05038,"16.1":0.15114,"16.2":0.12595,"16.3":0.17129,"16.4":0.63983,"16.5":0.32243,"16.6":1.06806,"17.0":0.99752,"17.1":0.03527},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0018,"5.0-5.1":0.0018,"6.0-6.1":0.00541,"7.0-7.1":0.01263,"8.1-8.4":0.0018,"9.0-9.2":0.01263,"9.3":0.04331,"10.0-10.2":0.0018,"10.3":0.06316,"11.0-11.2":0.05775,"11.3-11.4":0.01985,"12.0-12.1":0.01624,"12.2-12.5":0.28694,"13.0-13.1":0.00902,"13.2":0.04873,"13.3":0.01805,"13.4-13.7":0.05775,"14.0-14.4":0.15881,"14.5-14.8":0.25626,"15.0-15.1":0.10106,"15.2-15.3":0.1155,"15.4":0.12813,"15.5":0.18227,"15.6-15.7":1.26147,"16.0":0.46561,"16.1":0.89151,"16.2":0.43493,"16.3":0.80669,"16.4":0.17325,"16.5":0.462,"16.6-16.7":8.65344,"17.0":3.08239,"17.1":0.18588,"17.2":0.00541},P:{"4":0.04205,"20":0.02102,"21":0.06307,"22":1.73441,"23":0.36791,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 14.0","7.2-7.4":0.01051,"11.1-11.2":0.01051,"12.0":0.01051,"13.0":0.01051,"15.0":0.03153,"16.0":0.01051,"17.0":0.01051,"18.0":0.01051,"19.0":0.06307},I:{"0":0.15304,"3":0,"4":0.00003,"2.1":0,"2.2":0.00005,"2.3":0,"4.1":0.00003,"4.2-4.3":0.00011,"4.4":0,"4.4.3-4.4.4":0.00046},A:{"6":0.00504,"7":0.00504,"8":0.03527,"9":0.00504,"10":0.00504,"11":0.03023,_:"5.5"},K:{"0":0.36223,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.15382},Q:{_:"13.1"},O:{"0":0.11909},H:{"0":0},L:{"0":29.05718}}; diff --git a/node_modules/caniuse-lite/data/regions/MU.js b/node_modules/caniuse-lite/data/regions/MU.js new file mode 100644 index 00000000..d9ca826f --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MU.js @@ -0,0 +1 @@ +module.exports={C:{"20":0.00338,"34":0.00338,"52":0.01691,"72":0.00338,"78":0.00676,"87":0.00338,"94":0.00338,"99":0.00338,"102":0.00338,"104":0.01691,"105":0.00338,"110":0.01015,"112":0.00338,"113":0.00338,"114":0.02706,"115":0.2435,"116":0.01353,"117":0.0372,"118":1.51852,"119":0.23336,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 88 89 90 91 92 93 95 96 97 98 100 101 103 106 107 108 109 111 120 121 122 3.5 3.6"},D:{"26":0.00676,"34":0.01015,"38":0.0372,"49":0.02367,"50":0.01691,"56":0.00338,"60":0.00338,"64":0.00338,"65":0.00338,"67":0.00338,"68":0.01015,"69":0.00676,"71":0.00338,"72":0.00338,"74":0.02029,"76":0.00676,"78":0.00338,"79":0.0744,"80":0.01691,"81":0.02029,"83":0.00338,"85":0.01691,"86":0.00338,"87":0.04735,"88":0.01691,"89":0.00338,"90":0.01015,"91":0.00676,"92":0.01353,"93":0.00676,"94":0.01691,"95":0.00338,"96":0.00676,"97":0.00676,"98":0.00676,"99":0.02029,"100":0.00338,"101":0.01015,"102":0.02367,"103":0.07779,"104":0.04058,"105":0.09131,"106":0.00676,"107":0.04735,"108":0.02367,"109":1.58616,"110":0.01015,"111":0.03044,"112":0.04058,"113":0.01691,"114":0.14881,"115":0.13528,"116":1.13973,"117":9.83147,"118":9.62855,"119":0.04058,"120":0.00338,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 51 52 53 54 55 57 58 59 61 62 63 66 70 73 75 77 84 121 122"},F:{"28":0.03044,"95":0.03044,"99":0.00676,"101":0.00676,"102":0.4701,"103":0.17586,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"16":0.00338,"17":0.00338,"18":0.00338,"92":0.01353,"100":0.00338,"107":0.00338,"109":0.08455,"110":0.00676,"111":0.00338,"112":0.01015,"113":0.00338,"114":0.01015,"115":0.04735,"116":0.0947,"117":1.6538,"118":2.20506,"119":0.00338,_:"12 13 14 15 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103 104 105 106 108"},E:{"14":0.01691,"15":0.01353,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.00338,"11.1":0.00338,"12.1":0.00338,"13.1":0.09808,"14.1":0.08117,"15.1":0.00676,"15.2-15.3":0.01353,"15.4":0.01353,"15.5":0.02367,"15.6":0.19616,"16.0":0.04397,"16.1":0.0372,"16.2":0.15895,"16.3":0.14881,"16.4":0.02367,"16.5":0.12175,"16.6":0.50392,"17.0":0.45995,"17.1":0.02367},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00085,"5.0-5.1":0.00085,"6.0-6.1":0.00255,"7.0-7.1":0.00594,"8.1-8.4":0.00085,"9.0-9.2":0.00594,"9.3":0.02037,"10.0-10.2":0.00085,"10.3":0.0297,"11.0-11.2":0.02715,"11.3-11.4":0.00933,"12.0-12.1":0.00764,"12.2-12.5":0.13492,"13.0-13.1":0.00424,"13.2":0.02291,"13.3":0.00849,"13.4-13.7":0.02715,"14.0-14.4":0.07467,"14.5-14.8":0.12049,"15.0-15.1":0.04752,"15.2-15.3":0.05431,"15.4":0.06025,"15.5":0.0857,"15.6-15.7":0.59314,"16.0":0.21893,"16.1":0.41919,"16.2":0.2045,"16.3":0.3793,"16.4":0.08146,"16.5":0.21723,"16.6-16.7":4.06883,"17.0":1.44933,"17.1":0.0874,"17.2":0.00255},P:{"4":0.16481,"20":0.23692,"21":0.13391,"22":4.69712,"23":0.86526,"5.0-5.4":0.0103,"6.2-6.4":0.0206,"7.2-7.4":0.20601,_:"8.2 10.1 12.0","9.2":0.0103,"11.1-11.2":0.0412,"13.0":0.0309,"14.0":0.0412,"15.0":0.0103,"16.0":0.10301,"17.0":0.0721,"18.0":0.0309,"19.0":0.10301},I:{"0":0.03951,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00012},A:{"11":0.02367,_:"6 7 8 9 10 5.5"},K:{"0":0.86047,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.43024},Q:{"13.1":0.00662},O:{"0":0.62881},H:{"0":0},L:{"0":50.0081}}; diff --git a/node_modules/caniuse-lite/data/regions/MV.js b/node_modules/caniuse-lite/data/regions/MV.js new file mode 100644 index 00000000..b7ac1372 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MV.js @@ -0,0 +1 @@ +module.exports={C:{"64":0.01136,"67":0.00284,"72":0.00284,"85":0.00284,"101":0.00284,"108":0.03691,"110":0.0142,"113":0.00568,"114":0.00284,"115":0.0653,"116":0.00284,"117":0.07665,"118":0.93971,"119":0.12208,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 65 66 68 69 70 71 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 102 103 104 105 106 107 109 111 112 120 121 122 3.5 3.6"},D:{"70":0.00852,"74":0.00284,"75":0.00568,"78":0.00284,"80":0.00568,"83":0.03407,"84":0.00284,"86":0.00284,"87":0.02271,"88":0.00568,"91":0.00284,"92":0.00284,"93":0.00284,"94":0.00284,"95":0.00284,"96":0.00568,"97":0.00284,"98":0.00284,"99":0.01703,"100":0.00284,"101":0.00568,"102":0.00284,"103":0.02839,"104":0.00284,"105":0.00568,"106":0.00568,"107":0.02271,"108":0.05394,"109":0.67284,"110":0.00852,"111":0.06246,"112":0.03691,"113":0.0142,"114":0.09369,"115":0.07381,"116":0.93403,"117":9.36586,"118":8.8009,"119":0.0142,"120":0.00284,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 73 76 77 79 81 85 89 90 121 122"},F:{"95":0.00284,"102":0.75801,"103":0.08517,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00284,"16":0.00568,"17":0.00284,"18":0.00284,"84":0.00284,"90":0.00284,"92":0.01136,"100":0.00284,"102":0.01136,"105":0.00284,"107":0.01136,"108":0.22428,"109":0.01987,"110":0.03123,"111":0.00284,"112":0.00568,"113":0.01136,"114":0.0142,"115":0.06814,"116":0.04826,"117":1.17535,"118":1.16399,"119":0.04826,_:"13 14 15 79 80 81 83 85 86 87 88 89 91 93 94 95 96 97 98 99 101 103 104 106"},E:{"11":0.01703,"13":0.00568,"14":0.01703,"15":0.00568,_:"0 4 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.00852,"13.1":0.03123,"14.1":0.18737,"15.1":0.02555,"15.2-15.3":0.01136,"15.4":0.0142,"15.5":0.01136,"15.6":0.09085,"16.0":0.01703,"16.1":0.05678,"16.2":0.0142,"16.3":0.05678,"16.4":0.04259,"16.5":0.13627,"16.6":0.59335,"17.0":0.36339,"17.1":0.02839,"17.2":0.00568},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00219,"5.0-5.1":0.00219,"6.0-6.1":0.00658,"7.0-7.1":0.01534,"8.1-8.4":0.00219,"9.0-9.2":0.01534,"9.3":0.05261,"10.0-10.2":0.00219,"10.3":0.07672,"11.0-11.2":0.07014,"11.3-11.4":0.02411,"12.0-12.1":0.01973,"12.2-12.5":0.34853,"13.0-13.1":0.01096,"13.2":0.05918,"13.3":0.02192,"13.4-13.7":0.07014,"14.0-14.4":0.19289,"14.5-14.8":0.31126,"15.0-15.1":0.12275,"15.2-15.3":0.14029,"15.4":0.15563,"15.5":0.22139,"15.6-15.7":1.5322,"16.0":0.56553,"16.1":1.08284,"16.2":0.52827,"16.3":0.97982,"16.4":0.21043,"16.5":0.56115,"16.6-16.7":10.51055,"17.0":3.74391,"17.1":0.22577,"17.2":0.00658},P:{"4":0.03131,"20":0.03131,"21":0.04175,"22":1.60726,"23":0.20874,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0","7.2-7.4":0.01044,"18.0":0.01044,"19.0":0.02087},I:{"0":0.04987,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00015},A:{"11":0.10788,_:"6 7 8 9 10 5.5"},K:{"0":1.16008,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":1.35343},Q:{_:"13.1"},O:{"0":1.10279},H:{"0":0},L:{"0":45.06736}}; diff --git a/node_modules/caniuse-lite/data/regions/MW.js b/node_modules/caniuse-lite/data/regions/MW.js new file mode 100644 index 00000000..89f98c6a --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MW.js @@ -0,0 +1 @@ +module.exports={C:{"62":0.00678,"72":0.00339,"78":0.00339,"81":0.00339,"88":0.00339,"89":0.01017,"91":0.01017,"94":0.00339,"99":0.00339,"102":0.05084,"104":0.00678,"105":0.00339,"106":0.01017,"108":0.00339,"109":0.00678,"110":0.00339,"111":0.00339,"112":0.01017,"113":0.01356,"114":0.02711,"115":0.3389,"116":0.01017,"117":0.14234,"118":1.97579,"119":0.35246,"120":0.01356,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 82 83 84 85 86 87 90 92 93 95 96 97 98 100 101 103 107 121 122 3.5 3.6"},D:{"31":0.00339,"44":0.02711,"49":0.00678,"50":0.00678,"55":0.00678,"58":0.00339,"64":0.01017,"65":0.00339,"66":0.00339,"67":0.00339,"68":0.00339,"69":0.01695,"70":0.00339,"71":0.00339,"72":0.00339,"74":0.01695,"75":0.03389,"76":0.00339,"78":0.00339,"79":0.02033,"80":0.00678,"81":0.00339,"83":0.00678,"84":0.00339,"85":0.00339,"86":0.01017,"87":0.01695,"88":0.01017,"89":0.00339,"90":0.01695,"91":0.00339,"92":0.02033,"93":0.01695,"94":0.01017,"95":0.01017,"96":0.00339,"97":0.00678,"99":0.01356,"100":0.01017,"102":0.05422,"103":0.05084,"104":0.00678,"105":0.02372,"106":0.01695,"107":0.02711,"108":0.02711,"109":0.96925,"110":0.01695,"111":0.02711,"112":0.02372,"113":0.03728,"114":0.10845,"115":0.05422,"116":0.73202,"117":8.48267,"118":8.11666,"119":0.00678,"120":0.00339,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 48 51 52 53 54 56 57 59 60 61 62 63 73 77 98 101 121 122"},F:{"36":0.00339,"42":0.00678,"64":0.00339,"72":0.00678,"79":0.00678,"84":0.00339,"90":0.00678,"95":0.07117,"99":0.00339,"101":0.01356,"102":0.40329,"103":0.31857,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 66 67 68 69 70 71 73 74 75 76 77 78 80 81 82 83 85 86 87 88 89 91 92 93 94 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.01017,"13":0.00678,"14":0.00339,"15":0.01356,"16":0.00678,"17":0.01017,"18":0.061,"84":0.01017,"85":0.00678,"86":0.00339,"89":0.00678,"90":0.01017,"92":0.04406,"99":0.00339,"100":0.01017,"104":0.00339,"105":0.00339,"107":0.00339,"108":0.01356,"109":0.06439,"110":0.00678,"111":0.00339,"112":0.02711,"113":0.01356,"114":0.03389,"115":0.05422,"116":0.08811,"117":2.37569,"118":1.78261,"119":0.00339,_:"79 80 81 83 87 88 91 93 94 95 96 97 98 101 102 103 106"},E:{"13":0.00339,"14":0.00339,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 15.2-15.3 15.5 16.0 17.1 17.2","5.1":0.00678,"12.1":0.01356,"13.1":0.01356,"14.1":0.00678,"15.1":0.02372,"15.4":0.00678,"15.6":0.01695,"16.1":0.03389,"16.2":0.00678,"16.3":0.01356,"16.4":0.00339,"16.5":0.00678,"16.6":0.04406,"17.0":0.02711},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00019,"5.0-5.1":0.00019,"6.0-6.1":0.00056,"7.0-7.1":0.00131,"8.1-8.4":0.00019,"9.0-9.2":0.00131,"9.3":0.00451,"10.0-10.2":0.00019,"10.3":0.00657,"11.0-11.2":0.00601,"11.3-11.4":0.00207,"12.0-12.1":0.00169,"12.2-12.5":0.02985,"13.0-13.1":0.00094,"13.2":0.00507,"13.3":0.00188,"13.4-13.7":0.00601,"14.0-14.4":0.01652,"14.5-14.8":0.02666,"15.0-15.1":0.01051,"15.2-15.3":0.01202,"15.4":0.01333,"15.5":0.01896,"15.6-15.7":0.13124,"16.0":0.04844,"16.1":0.09275,"16.2":0.04525,"16.3":0.08393,"16.4":0.01802,"16.5":0.04806,"16.6-16.7":0.90027,"17.0":0.32068,"17.1":0.01934,"17.2":0.00056},P:{"4":0.17827,"20":0.0734,"21":0.19924,"22":0.60821,"23":0.03146,_:"5.0-5.4 8.2 10.1 12.0","6.2-6.4":0.01049,"7.2-7.4":0.14681,"9.2":0.02097,"11.1-11.2":0.01049,"13.0":0.03146,"14.0":0.02097,"15.0":0.01049,"16.0":0.03146,"17.0":0.04195,"18.0":0.04195,"19.0":0.06292},I:{"0":0.04604,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00014},A:{"10":0.00339,"11":0.02033,_:"6 7 8 9 5.5"},K:{"0":3.66992,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.06611,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.1785},Q:{"13.1":0.00661},O:{"0":2.02958},H:{"0":1.09},L:{"0":60.9937}}; diff --git a/node_modules/caniuse-lite/data/regions/MX.js b/node_modules/caniuse-lite/data/regions/MX.js new file mode 100644 index 00000000..b3c040df --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MX.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.02211,"59":0.00884,"66":0.00442,"78":0.02211,"88":0.00884,"91":0.00442,"99":0.00442,"102":0.01326,"105":0.00442,"106":0.00442,"107":0.00442,"108":0.00442,"109":0.00442,"110":0.00442,"111":0.00442,"112":0.00884,"113":0.00884,"114":0.02211,"115":0.29621,"116":0.01326,"117":0.05747,"118":1.18925,"119":0.22547,"120":0.00442,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 94 95 96 97 98 100 101 103 104 121 122 3.5 3.6"},D:{"22":0.00442,"38":0.00884,"49":0.03095,"52":0.02211,"58":0.00442,"63":0.00442,"65":0.00884,"66":0.03979,"67":0.00884,"69":0.00442,"70":0.00442,"71":0.00442,"74":0.00884,"75":0.00884,"76":0.01326,"77":0.00884,"78":0.00442,"79":0.06632,"80":0.04421,"81":0.00884,"83":0.00884,"84":0.00442,"85":0.00442,"86":0.00442,"87":0.05305,"88":0.02211,"89":0.00884,"90":0.00442,"91":0.06189,"92":0.00884,"93":0.01768,"94":0.00884,"95":0.01326,"96":0.00884,"97":0.01768,"98":0.00884,"99":0.03095,"100":0.00884,"101":0.01326,"102":0.01326,"103":0.15474,"104":0.01326,"105":0.01326,"106":0.03095,"107":0.03537,"108":0.04863,"109":2.67913,"110":0.04421,"111":0.04421,"112":0.04863,"113":0.04421,"114":0.1901,"115":0.17684,"116":1.21135,"117":12.43185,"118":12.08701,"119":0.02211,"120":0.00884,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 53 54 55 56 57 59 60 61 62 64 68 72 73 121 122"},F:{"28":0.00884,"46":0.00442,"74":0.00442,"85":0.00442,"86":0.00442,"89":0.00442,"95":0.04863,"99":0.00442,"100":0.00442,"101":0.00442,"102":1.46335,"103":0.252,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 79 80 81 82 83 84 87 88 90 91 92 93 94 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00884,"15":0.00442,"17":0.00442,"18":0.00884,"90":0.00442,"92":0.01768,"99":0.00442,"100":0.00442,"102":0.00442,"104":0.00442,"105":0.00442,"107":0.00442,"108":0.00884,"109":0.09284,"110":0.00884,"111":0.00884,"112":0.01326,"113":0.01768,"114":0.03979,"115":0.03537,"116":0.11053,"117":2.77639,"118":2.4625,"119":0.01326,_:"13 14 16 79 80 81 83 84 85 86 87 88 89 91 93 94 95 96 97 98 101 103 106"},E:{"8":0.00442,"13":0.00884,"14":0.03095,"15":0.00442,_:"0 4 5 6 7 9 10 11 12 3.1 3.2 6.1 7.1 10.1 17.2","5.1":0.00884,"9.1":0.00442,"11.1":0.00884,"12.1":0.01326,"13.1":0.06189,"14.1":0.09726,"15.1":0.01768,"15.2-15.3":0.01326,"15.4":0.02211,"15.5":0.03537,"15.6":0.22989,"16.0":0.02653,"16.1":0.06189,"16.2":0.04863,"16.3":0.14147,"16.4":0.06632,"16.5":0.21221,"16.6":0.76483,"17.0":0.43768,"17.1":0.02211},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00108,"5.0-5.1":0.00108,"6.0-6.1":0.00324,"7.0-7.1":0.00755,"8.1-8.4":0.00108,"9.0-9.2":0.00755,"9.3":0.0259,"10.0-10.2":0.00108,"10.3":0.03776,"11.0-11.2":0.03453,"11.3-11.4":0.01187,"12.0-12.1":0.00971,"12.2-12.5":0.17156,"13.0-13.1":0.00539,"13.2":0.02913,"13.3":0.01079,"13.4-13.7":0.03453,"14.0-14.4":0.09495,"14.5-14.8":0.15321,"15.0-15.1":0.06042,"15.2-15.3":0.06905,"15.4":0.07661,"15.5":0.10898,"15.6-15.7":0.75421,"16.0":0.27838,"16.1":0.53302,"16.2":0.26003,"16.3":0.4823,"16.4":0.10358,"16.5":0.27622,"16.6-16.7":5.1737,"17.0":1.8429,"17.1":0.11113,"17.2":0.00324},P:{"4":0.09484,"20":0.01054,"21":0.03161,"22":0.71659,"23":0.15807,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 14.0 15.0 16.0","7.2-7.4":0.06323,"11.1-11.2":0.01054,"13.0":0.01054,"17.0":0.02108,"18.0":0.01054,"19.0":0.01054},I:{"0":0.08326,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00025},A:{"8":0.00482,"11":0.10128,_:"6 7 9 10 5.5"},K:{"0":0.26221,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00558,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.22316},Q:{_:"13.1"},O:{"0":0.05021},H:{"0":0},L:{"0":45.15175}}; diff --git a/node_modules/caniuse-lite/data/regions/MY.js b/node_modules/caniuse-lite/data/regions/MY.js new file mode 100644 index 00000000..e4e565e2 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MY.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.0081,"37":0.00405,"39":0.01214,"48":0.03643,"52":0.0081,"78":0.00405,"83":0.00405,"88":0.0081,"99":0.00405,"102":0.00405,"106":0.00405,"107":0.00405,"109":0.00405,"110":0.00405,"111":0.00405,"112":0.00405,"113":0.0081,"114":0.01214,"115":0.24288,"116":0.01619,"117":0.03643,"118":0.88651,"119":0.18216,"120":0.0081,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 38 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 87 89 90 91 92 93 94 95 96 97 98 100 101 103 104 105 108 121 122 3.5 3.6"},D:{"29":0.01214,"34":0.01214,"38":0.03238,"47":0.00405,"49":0.01619,"53":0.02429,"55":0.02024,"56":0.01214,"58":0.01214,"62":0.00405,"65":0.0081,"67":0.00405,"68":0.00405,"69":0.00405,"70":0.0081,"71":0.00405,"72":0.00405,"73":0.00405,"74":0.01214,"75":0.01214,"76":0.00405,"77":0.00405,"78":0.02429,"79":0.19026,"80":0.01214,"81":0.04048,"83":0.01214,"84":0.0081,"85":0.01214,"86":0.02429,"87":0.12549,"88":0.02834,"89":0.01619,"90":0.01214,"91":0.05667,"92":0.01619,"93":0.01214,"94":0.01619,"95":0.0081,"96":0.01619,"97":0.02429,"98":0.01619,"99":0.17002,"100":0.01214,"101":0.01214,"102":0.03238,"103":0.15382,"104":0.01619,"105":0.03238,"106":0.02429,"107":0.04048,"108":0.06477,"109":2.51381,"110":0.03643,"111":0.06072,"112":0.06072,"113":0.06477,"114":0.17002,"115":0.17811,"116":0.87842,"117":12.64595,"118":11.96184,"119":0.02429,"120":0.02024,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 57 59 60 61 63 64 66 121 122"},F:{"28":0.02834,"36":0.02024,"40":0.00405,"46":0.03643,"74":0.00405,"78":0.00405,"85":0.00405,"95":0.02429,"101":0.00405,"102":0.36837,"103":0.0931,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"92":0.00405,"107":0.00405,"108":0.00405,"109":0.02834,"112":0.00405,"113":0.0081,"114":0.01214,"115":0.01214,"116":0.03238,"117":1.13749,"118":1.04438,"119":0.0081,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 110 111"},E:{"7":0.00405,"13":0.0081,"14":0.05262,"15":0.01214,_:"0 4 5 6 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 17.2","11.1":0.00405,"12.1":0.0081,"13.1":0.03643,"14.1":0.15382,"15.1":0.02429,"15.2-15.3":0.02429,"15.4":0.05262,"15.5":0.09715,"15.6":0.34003,"16.0":0.03238,"16.1":0.11334,"16.2":0.08501,"16.3":0.26717,"16.4":0.06882,"16.5":0.18621,"16.6":1.74469,"17.0":0.48171,"17.1":0.02429},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0015,"5.0-5.1":0.0015,"6.0-6.1":0.00449,"7.0-7.1":0.01048,"8.1-8.4":0.0015,"9.0-9.2":0.01048,"9.3":0.03593,"10.0-10.2":0.0015,"10.3":0.05239,"11.0-11.2":0.0479,"11.3-11.4":0.01647,"12.0-12.1":0.01347,"12.2-12.5":0.23801,"13.0-13.1":0.00748,"13.2":0.04042,"13.3":0.01497,"13.4-13.7":0.0479,"14.0-14.4":0.13173,"14.5-14.8":0.21256,"15.0-15.1":0.08383,"15.2-15.3":0.0958,"15.4":0.10628,"15.5":0.15119,"15.6-15.7":1.04635,"16.0":0.38621,"16.1":0.73948,"16.2":0.36076,"16.3":0.66913,"16.4":0.14371,"16.5":0.38321,"16.6-16.7":7.17777,"17.0":2.55675,"17.1":0.15418,"17.2":0.00449},P:{"4":0.37555,"20":0.05365,"21":0.09657,"22":1.34125,"23":0.25752,"5.0-5.4":0.06438,"6.2-6.4":0.01073,"7.2-7.4":0.03219,_:"8.2 9.2 10.1 12.0 14.0","11.1-11.2":0.01073,"13.0":0.01073,"15.0":0.01073,"16.0":0.02146,"17.0":0.01073,"18.0":0.01073,"19.0":0.03219},I:{"0":0.04145,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00012},A:{"11":0.1012,_:"6 7 8 9 10 5.5"},K:{"0":0.62496,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.20832},Q:{"13.1":0.0119},O:{"0":0.88685},H:{"0":0},L:{"0":42.19283}}; diff --git a/node_modules/caniuse-lite/data/regions/MZ.js b/node_modules/caniuse-lite/data/regions/MZ.js new file mode 100644 index 00000000..e946fbee --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/MZ.js @@ -0,0 +1 @@ +module.exports={C:{"7":0.01368,"42":0.01026,"50":0.03078,"52":0.03078,"54":0.03078,"78":0.01026,"88":0.00342,"90":0.00342,"97":0.00342,"100":0.00342,"104":0.01026,"107":0.00342,"108":0.00684,"112":0.00684,"113":0.03078,"114":0.00342,"115":0.26334,"116":0.00342,"117":0.02052,"118":0.53352,"119":0.1026,_:"2 3 4 5 6 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 51 53 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 91 92 93 94 95 96 98 99 101 102 103 105 106 109 110 111 120 121 122 3.5 3.6"},D:{"11":0.00342,"40":0.00684,"43":0.01368,"47":0.0171,"55":0.0171,"56":0.00342,"57":0.03078,"58":0.00342,"60":0.09576,"61":0.00342,"63":0.00342,"64":0.00342,"68":0.00342,"70":0.0171,"71":0.00342,"73":0.00342,"74":0.01368,"76":0.00342,"79":0.01368,"80":0.00684,"81":0.10944,"83":0.00342,"84":0.00342,"85":0.00342,"86":0.00342,"87":0.04104,"88":0.01026,"90":0.1539,"91":0.09576,"92":0.16416,"93":0.00342,"94":0.04446,"95":0.0513,"96":0.00684,"98":0.00342,"99":0.00342,"100":0.00342,"101":0.00684,"102":0.04104,"103":0.06156,"104":0.04104,"105":0.01368,"106":0.01026,"107":0.0171,"108":0.02394,"109":1.90494,"110":0.01026,"111":0.04104,"112":0.0171,"113":0.0342,"114":0.0855,"115":0.0342,"116":0.31464,"117":4.12452,"118":4.86666,"119":0.01026,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 44 45 46 48 49 50 51 52 53 54 59 62 65 66 67 69 72 75 77 78 89 97 120 121 122"},F:{"36":0.00342,"42":0.00342,"79":0.04788,"85":0.00342,"95":0.19152,"97":0.00342,"100":0.00342,"101":0.00684,"102":0.46512,"103":0.32832,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 86 87 88 89 90 91 92 93 94 96 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.06498,"13":0.0342,"14":0.0342,"15":0.0171,"16":0.00342,"17":0.00342,"18":0.03078,"84":0.00342,"89":0.00342,"90":0.00342,"91":0.00684,"92":0.03078,"99":0.00342,"100":0.00342,"102":0.00684,"105":0.00342,"107":0.00342,"108":0.0171,"109":0.1197,"110":0.00684,"112":0.0171,"113":0.0171,"114":0.04446,"115":0.0171,"116":0.04788,"117":1.09782,"118":1.35774,_:"79 80 81 83 85 86 87 88 93 94 95 96 97 98 101 103 104 106 111 119"},E:{"14":0.00342,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 15.1 15.4 15.5 16.0 16.2 17.2","12.1":0.00342,"13.1":0.02736,"14.1":0.01026,"15.2-15.3":0.00342,"15.6":0.01026,"16.1":0.00342,"16.3":0.01368,"16.4":0.00342,"16.5":0.01026,"16.6":0.02394,"17.0":0.02736,"17.1":0.00342},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00045,"5.0-5.1":0.00045,"6.0-6.1":0.00134,"7.0-7.1":0.00312,"8.1-8.4":0.00045,"9.0-9.2":0.00312,"9.3":0.01069,"10.0-10.2":0.00045,"10.3":0.01559,"11.0-11.2":0.01425,"11.3-11.4":0.0049,"12.0-12.1":0.00401,"12.2-12.5":0.07083,"13.0-13.1":0.00223,"13.2":0.01203,"13.3":0.00445,"13.4-13.7":0.01425,"14.0-14.4":0.0392,"14.5-14.8":0.06326,"15.0-15.1":0.02495,"15.2-15.3":0.02851,"15.4":0.03163,"15.5":0.04499,"15.6-15.7":0.31138,"16.0":0.11493,"16.1":0.22006,"16.2":0.10736,"16.3":0.19912,"16.4":0.04276,"16.5":0.11404,"16.6-16.7":2.13601,"17.0":0.76086,"17.1":0.04588,"17.2":0.00134},P:{"4":0.20101,"20":0.06348,"21":0.04232,"22":0.33855,"23":0.03174,_:"5.0-5.4 8.2 12.0","6.2-6.4":0.01058,"7.2-7.4":0.13753,"9.2":0.01058,"10.1":0.02116,"11.1-11.2":0.01058,"13.0":0.01058,"14.0":0.01058,"15.0":0.03174,"16.0":0.06348,"17.0":0.02116,"18.0":0.02116,"19.0":0.0529},I:{"0":0.05237,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00016},A:{"9":0.03078,"11":0.06156,_:"6 7 8 10 5.5"},K:{"0":2.77424,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.60536,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.0658},Q:{_:"13.1"},O:{"0":0.1316},H:{"0":0.7},L:{"0":71.77902}}; diff --git a/node_modules/caniuse-lite/data/regions/NA.js b/node_modules/caniuse-lite/data/regions/NA.js new file mode 100644 index 00000000..bf4130c8 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/NA.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.02037,"47":0.0034,"48":0.01358,"52":0.02377,"56":0.0034,"60":0.0034,"69":0.0034,"72":0.0034,"78":0.0034,"91":0.0034,"98":0.03395,"99":0.0034,"102":0.0034,"110":0.0034,"113":0.02716,"114":0.0034,"115":0.31913,"116":0.02377,"117":0.04074,"118":0.94721,"119":0.21049,"120":0.05772,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 49 50 51 53 54 55 57 58 59 61 62 63 64 65 66 67 68 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 100 101 103 104 105 106 107 108 109 111 112 121 122 3.5 3.6"},D:{"37":0.0034,"40":0.00679,"42":0.0034,"49":0.0034,"50":0.0034,"58":0.0034,"60":0.0034,"62":0.0034,"63":0.0034,"65":0.0034,"69":0.01358,"70":0.0034,"73":0.02716,"74":0.01358,"75":0.0034,"76":0.0034,"77":0.00679,"78":0.00679,"79":0.01019,"81":0.01019,"83":0.01019,"85":0.0034,"86":0.0034,"87":0.01019,"88":0.02037,"89":0.02716,"90":0.0034,"91":0.00679,"92":0.01019,"93":0.01698,"94":0.03395,"95":0.00679,"96":0.01698,"97":0.0034,"99":0.01019,"100":0.00679,"101":0.01019,"102":0.02716,"103":0.03056,"104":0.01019,"105":0.0034,"106":0.01358,"107":0.00679,"108":0.01698,"109":2.48175,"110":0.01358,"111":0.01358,"112":0.03395,"113":0.03056,"114":0.10525,"115":0.06111,"116":0.58055,"117":7.05481,"118":7.58443,"119":0.0034,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 41 43 44 45 46 47 48 51 52 53 54 55 56 57 59 61 64 66 67 68 71 72 80 84 98 120 121 122"},F:{"28":0.0034,"58":0.00679,"75":0.0034,"79":0.0034,"85":0.0034,"86":0.00679,"95":0.10525,"99":0.0034,"101":0.00679,"102":0.53302,"103":0.3395,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 60 62 63 64 65 66 67 68 69 70 71 72 73 74 76 77 78 80 81 82 83 84 87 88 89 90 91 92 93 94 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00679,"13":0.0034,"14":0.0034,"15":0.0034,"16":0.00679,"17":0.0034,"18":0.0679,"84":0.00679,"90":0.0034,"92":0.02716,"100":0.0034,"104":0.0034,"105":0.0034,"107":0.0034,"108":0.04414,"109":0.0713,"110":0.01019,"111":0.0034,"112":0.14938,"113":0.01019,"114":0.03395,"115":0.01698,"116":0.0713,"117":2.32897,"118":2.50891,"119":0.0034,_:"79 80 81 83 85 86 87 88 89 91 93 94 95 96 97 98 99 101 102 103 106"},E:{"13":0.0034,"14":0.01019,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.0034,"12.1":0.0034,"13.1":0.03395,"14.1":0.04753,"15.1":0.0034,"15.2-15.3":0.0034,"15.4":0.02716,"15.5":0.02037,"15.6":0.07809,"16.0":0.0034,"16.1":0.02037,"16.2":0.01358,"16.3":0.10525,"16.4":0.01698,"16.5":0.02716,"16.6":0.39382,"17.0":0.23426,"17.1":0.01019},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00072,"5.0-5.1":0.00072,"6.0-6.1":0.00215,"7.0-7.1":0.00501,"8.1-8.4":0.00072,"9.0-9.2":0.00501,"9.3":0.01718,"10.0-10.2":0.00072,"10.3":0.02506,"11.0-11.2":0.02291,"11.3-11.4":0.00787,"12.0-12.1":0.00644,"12.2-12.5":0.11382,"13.0-13.1":0.00358,"13.2":0.01933,"13.3":0.00716,"13.4-13.7":0.02291,"14.0-14.4":0.063,"14.5-14.8":0.10165,"15.0-15.1":0.04009,"15.2-15.3":0.04582,"15.4":0.05083,"15.5":0.0723,"15.6-15.7":0.5004,"16.0":0.1847,"16.1":0.35364,"16.2":0.17253,"16.3":0.32,"16.4":0.06872,"16.5":0.18326,"16.6-16.7":3.43261,"17.0":1.22271,"17.1":0.07373,"17.2":0.00215},P:{"4":0.43385,"20":0.06198,"21":0.13429,"22":2.1486,"23":0.34088,"5.0-5.4":0.01033,"6.2-6.4":0.01033,"7.2-7.4":0.29956,_:"8.2 9.2 12.0","10.1":0.03099,"11.1-11.2":0.01033,"13.0":0.03099,"14.0":0.02066,"15.0":0.02066,"16.0":0.04132,"17.0":0.08264,"18.0":0.02066,"19.0":0.16528},I:{"0":0.03285,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.0001},A:{"9":0.00462,"11":0.11081,_:"6 7 8 10 5.5"},K:{"0":1.5576,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.0066,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.24435},Q:{_:"13.1"},O:{"0":0.40284},H:{"0":0.1},L:{"0":58.51811}}; diff --git a/node_modules/caniuse-lite/data/regions/NC.js b/node_modules/caniuse-lite/data/regions/NC.js new file mode 100644 index 00000000..0f2faa75 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/NC.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.10059,"60":0.01437,"68":0.00479,"73":0.00479,"78":0.0479,"80":0.01916,"88":0.04311,"91":0.12933,"96":0.00479,"102":0.11496,"103":0.00479,"108":0.04311,"110":0.00479,"111":0.00479,"113":0.05269,"114":0.00958,"115":0.87178,"116":0.02874,"117":0.16765,"118":3.4488,"119":0.57959,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 72 74 75 76 77 79 81 82 83 84 85 86 87 89 90 92 93 94 95 97 98 99 100 101 104 105 106 107 109 112 120 121 122 3.5 3.6"},D:{"49":0.00479,"76":0.00479,"77":0.00479,"79":0.00958,"86":0.00479,"87":0.00958,"88":0.00958,"89":0.00479,"90":0.00479,"91":0.00479,"92":0.00479,"93":0.00958,"94":0.06227,"96":0.00958,"97":0.01437,"98":0.00958,"103":0.18202,"104":0.00958,"106":0.00479,"107":0.01437,"109":1.73398,"110":0.01437,"111":0.01916,"112":0.01437,"113":0.01437,"114":0.45984,"115":0.06227,"116":0.68497,"117":10.75355,"118":9.67101,"119":0.00479,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 78 80 81 83 84 85 95 99 100 101 102 105 108 120 121 122"},F:{"78":0.01437,"81":0.00479,"91":0.00479,"95":0.00958,"101":0.00958,"102":0.57001,"103":0.20597,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 82 83 84 85 86 87 88 89 90 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"15":0.00958,"17":0.00479,"18":0.01916,"90":0.00479,"92":0.00958,"99":0.00958,"100":0.00958,"102":0.00479,"108":0.00479,"109":0.05269,"110":0.00479,"111":0.00958,"112":0.01437,"114":0.34009,"115":0.02395,"116":0.07664,"117":4.02839,"118":3.45838,_:"12 13 14 16 79 80 81 83 84 85 86 87 88 89 91 93 94 95 96 97 98 101 103 104 105 106 107 113 119"},E:{"12":0.00958,"13":0.00479,"14":0.09101,"15":0.02874,_:"0 4 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 17.2","10.1":0.0479,"11.1":0.00958,"12.1":0.03353,"13.1":0.06706,"14.1":0.18202,"15.1":0.00958,"15.2-15.3":0.04311,"15.4":0.02395,"15.5":0.03832,"15.6":0.29219,"16.0":0.04311,"16.1":0.11017,"16.2":0.05748,"16.3":0.67539,"16.4":0.02395,"16.5":0.18202,"16.6":5.16362,"17.0":0.69934,"17.1":0.03832},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00151,"5.0-5.1":0.00151,"6.0-6.1":0.00454,"7.0-7.1":0.01058,"8.1-8.4":0.00151,"9.0-9.2":0.01058,"9.3":0.03629,"10.0-10.2":0.00151,"10.3":0.05292,"11.0-11.2":0.04838,"11.3-11.4":0.01663,"12.0-12.1":0.01361,"12.2-12.5":0.2404,"13.0-13.1":0.00756,"13.2":0.04082,"13.3":0.01512,"13.4-13.7":0.04838,"14.0-14.4":0.13305,"14.5-14.8":0.2147,"15.0-15.1":0.08467,"15.2-15.3":0.09676,"15.4":0.10735,"15.5":0.15271,"15.6-15.7":1.05685,"16.0":0.39008,"16.1":0.7469,"16.2":0.36438,"16.3":0.67584,"16.4":0.14515,"16.5":0.38706,"16.6-16.7":7.24976,"17.0":2.5824,"17.1":0.15573,"17.2":0.00454},P:{"4":0.02143,"20":0.14998,"21":0.10713,"22":3.17111,"23":0.51423,_:"5.0-5.4 6.2-6.4 8.2 9.2 17.0","7.2-7.4":0.38568,"10.1":0.22498,"11.1-11.2":0.02143,"12.0":0.01071,"13.0":0.02143,"14.0":0.02143,"15.0":0.01071,"16.0":0.09642,"18.0":0.03214,"19.0":0.1607},I:{"0":0.02073,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00006},A:{"11":0.00958,_:"6 7 8 9 10 5.5"},K:{"0":0.08857,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.45848},Q:{_:"13.1"},O:{"0":0.02084},H:{"0":0},L:{"0":32.33052}}; diff --git a/node_modules/caniuse-lite/data/regions/NE.js b/node_modules/caniuse-lite/data/regions/NE.js new file mode 100644 index 00000000..5841777c --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/NE.js @@ -0,0 +1 @@ +module.exports={C:{"47":0.00243,"52":0.00243,"60":0.00486,"67":0.00243,"72":0.00243,"78":0.00243,"87":0.00243,"97":0.00243,"99":0.00243,"104":0.00486,"106":0.0607,"110":0.00243,"115":0.33264,"116":0.00728,"117":0.04128,"118":0.64828,"119":0.0607,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 88 89 90 91 92 93 94 95 96 98 100 101 102 103 105 107 108 109 111 112 113 114 120 121 122 3.5 3.6"},D:{"26":0.00728,"50":0.00243,"58":0.00728,"64":0.00486,"68":0.00243,"69":0.00243,"74":0.00243,"78":0.00243,"79":0.12383,"90":0.00243,"91":0.00243,"92":0.00243,"99":0.00971,"100":0.00243,"102":0.00243,"103":0.00971,"105":0.00243,"107":0.00243,"108":0.00243,"109":0.33021,"110":0.00243,"111":0.00486,"112":0.00486,"113":0.01214,"114":0.03642,"115":0.00728,"116":0.09226,"117":1.89141,"118":1.5175,"120":0.00243,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 52 53 54 55 56 57 59 60 61 62 63 65 66 67 70 71 72 73 75 76 77 80 81 83 84 85 86 87 88 89 93 94 95 96 97 98 101 104 106 119 121 122"},F:{"40":0.00243,"79":0.00243,"83":0.00243,"95":0.08741,"98":0.00486,"99":0.00971,"102":0.27436,"103":0.07041,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 84 85 86 87 88 89 90 91 92 93 94 96 97 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00728,"13":0.00243,"16":0.00486,"17":0.00971,"18":0.017,"84":0.00728,"85":0.00243,"89":0.00971,"90":0.00971,"92":0.00728,"100":0.01457,"102":0.00971,"105":0.02671,"109":0.08741,"110":0.00243,"111":0.00486,"113":0.00243,"114":0.03156,"115":0.01942,"116":0.02671,"117":0.55358,"118":0.51716,_:"14 15 79 80 81 83 86 87 88 91 93 94 95 96 97 98 99 101 103 104 106 107 108 112 119"},E:{"14":0.00486,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 15.2-15.3 15.4 15.5 16.0 16.1 16.2 16.3 17.2","5.1":0.04128,"12.1":0.00971,"13.1":0.00486,"14.1":0.00243,"15.1":12.4265,"15.6":0.00243,"16.4":0.00243,"16.5":0.00243,"16.6":0.00243,"17.0":0.02671,"17.1":0.05584},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00059,"5.0-5.1":0.00059,"6.0-6.1":0.00176,"7.0-7.1":0.00411,"8.1-8.4":0.00059,"9.0-9.2":0.00411,"9.3":0.0141,"10.0-10.2":0.00059,"10.3":0.02057,"11.0-11.2":0.0188,"11.3-11.4":0.00646,"12.0-12.1":0.00529,"12.2-12.5":0.09343,"13.0-13.1":0.00294,"13.2":0.01586,"13.3":0.00588,"13.4-13.7":0.0188,"14.0-14.4":0.05171,"14.5-14.8":0.08344,"15.0-15.1":0.0329,"15.2-15.3":0.03761,"15.4":0.04172,"15.5":0.05935,"15.6-15.7":0.41072,"16.0":0.1516,"16.1":0.29027,"16.2":0.14161,"16.3":0.26265,"16.4":0.05641,"16.5":0.15042,"16.6-16.7":2.81748,"17.0":1.0036,"17.1":0.06052,"17.2":0.00176},P:{"4":0.07142,"20":0.03061,"21":0.11223,"22":0.36728,"23":0.07142,_:"5.0-5.4 6.2-6.4 8.2 10.1 12.0 15.0 17.0","7.2-7.4":0.05101,"9.2":0.06121,"11.1-11.2":0.0102,"13.0":0.0102,"14.0":0.0102,"16.0":0.03061,"18.0":0.11223,"19.0":0.03061},I:{"0":0.03767,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00011},A:{"11":0.11412,_:"6 7 8 9 10 5.5"},K:{"0":2.77168,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.03029,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.04543},Q:{"13.1":0.02272},O:{"0":0.72691},H:{"0":0.56},L:{"0":68.82841}}; diff --git a/node_modules/caniuse-lite/data/regions/NF.js b/node_modules/caniuse-lite/data/regions/NF.js new file mode 100644 index 00000000..ed088ac4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/NF.js @@ -0,0 +1 @@ +module.exports={C:{"102":0.18782,"115":0.18782,"118":0.93038,"119":0.18782,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 105 106 107 108 109 110 111 112 113 114 116 117 120 121 122 3.5 3.6"},D:{"109":5.94922,"117":4.08845,"118":2.60333,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 110 111 112 113 114 115 116 119 120 121 122"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"92":0.74256,"117":7.62216,"118":15.98688,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 119"},E:{"14":0.5591,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 14.1 15.1 15.2-15.3 15.4 15.5 15.6 16.0 16.1 16.2 16.3 16.4 17.0 17.1 17.2","13.1":0.5591,"16.5":0.18782,"16.6":2.23205},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00163,"5.0-5.1":0.00163,"6.0-6.1":0.00489,"7.0-7.1":0.01141,"8.1-8.4":0.00163,"9.0-9.2":0.01141,"9.3":0.0391,"10.0-10.2":0.00163,"10.3":0.05703,"11.0-11.2":0.05214,"11.3-11.4":0.01792,"12.0-12.1":0.01466,"12.2-12.5":0.25906,"13.0-13.1":0.00815,"13.2":0.04399,"13.3":0.01629,"13.4-13.7":0.05214,"14.0-14.4":0.14338,"14.5-14.8":0.23137,"15.0-15.1":0.09124,"15.2-15.3":0.10428,"15.4":0.11568,"15.5":0.16456,"15.6-15.7":1.13891,"16.0":0.42037,"16.1":0.80489,"16.2":0.39267,"16.3":0.72831,"16.4":0.15642,"16.5":0.41711,"16.6-16.7":7.81267,"17.0":2.78291,"17.1":0.16782,"17.2":0.00489},P:{"22":6.23181,_:"4 20 21 23 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0 19.0","18.0":0.20556},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":1.48512,_:"6 7 8 9 10 5.5"},K:{"0":0.20275,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.60262},Q:{_:"13.1"},O:{_:"0"},H:{"0":0},L:{"0":32.78387}}; diff --git a/node_modules/caniuse-lite/data/regions/NG.js b/node_modules/caniuse-lite/data/regions/NG.js new file mode 100644 index 00000000..b681effd --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/NG.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00143,"43":0.01142,"45":0.00143,"47":0.00285,"49":0.00143,"52":0.00285,"57":0.00143,"58":0.00143,"65":0.00285,"66":0.00143,"68":0.00143,"72":0.00428,"77":0.00143,"78":0.00285,"80":0.00143,"89":0.00143,"91":0.00143,"92":0.00143,"93":0.00143,"94":0.00143,"95":0.00143,"96":0.00143,"99":0.00571,"100":0.00143,"101":0.00428,"102":0.00428,"103":0.00143,"104":0.00143,"105":0.00143,"106":0.00428,"107":0.00285,"108":0.00285,"109":0.00428,"110":0.00428,"111":0.00143,"112":0.00285,"113":0.00285,"114":0.00856,"115":0.56224,"116":0.00571,"117":0.02569,"118":0.36246,"119":0.06564,"120":0.00143,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 44 46 48 50 51 53 54 55 56 59 60 61 62 63 64 67 69 70 71 73 74 75 76 79 81 82 83 84 85 86 87 88 90 97 98 121 122 3.5 3.6"},D:{"11":0.00143,"37":0.00143,"41":0.00143,"43":0.00143,"47":0.01142,"49":0.00143,"50":0.00143,"54":0.00285,"55":0.00285,"56":0.00285,"57":0.00143,"58":0.00714,"59":0.00856,"61":0.00143,"62":0.01142,"63":0.01427,"64":0.01284,"65":0.00143,"66":0.00143,"67":0.00143,"68":0.00428,"69":0.00428,"70":0.0157,"71":0.00143,"72":0.00428,"73":0.00285,"74":0.01712,"75":0.00714,"76":0.00999,"77":0.01427,"78":0.00143,"79":0.01855,"80":0.0157,"81":0.00999,"83":0.00428,"84":0.00571,"85":0.00856,"86":0.00856,"87":0.01284,"88":0.00999,"89":0.00428,"90":0.00571,"91":0.0157,"92":0.00428,"93":0.26114,"94":0.00999,"95":0.01855,"96":0.00428,"97":0.00856,"98":0.00714,"99":0.00571,"100":0.00714,"101":0.00571,"102":0.01142,"103":0.02997,"104":0.00999,"105":0.02854,"106":0.01855,"107":0.0157,"108":0.02711,"109":0.83622,"110":0.0157,"111":0.03282,"112":0.02997,"113":0.02854,"114":0.07991,"115":0.06992,"116":0.31109,"117":2.27607,"118":2.16619,"119":0.00999,"120":0.00285,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 42 44 45 46 48 51 52 53 60 121 122"},F:{"33":0.00143,"42":0.00143,"53":0.00143,"58":0.00143,"72":0.00143,"73":0.00143,"74":0.00285,"75":0.00143,"76":0.00285,"77":0.01427,"78":0.00285,"79":0.00856,"83":0.00143,"84":0.00143,"85":0.00428,"94":0.00143,"95":0.03139,"99":0.00143,"100":0.02141,"101":0.00714,"102":0.1584,"103":0.08847,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 54 55 56 57 60 62 63 64 65 66 67 68 69 70 71 80 81 82 86 87 88 89 90 91 92 93 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00856,"13":0.00143,"14":0.00143,"15":0.00143,"17":0.00143,"18":0.01712,"84":0.00285,"89":0.00285,"90":0.00428,"92":0.01427,"100":0.00285,"106":0.00143,"107":0.00285,"108":0.00285,"109":0.01142,"110":0.00285,"111":0.00285,"112":0.00285,"113":0.00285,"114":0.00999,"115":0.01427,"116":0.02711,"117":0.34962,"118":0.31679,"119":0.00143,_:"16 79 80 81 83 85 86 87 88 91 93 94 95 96 97 98 99 101 102 103 104 105"},E:{"11":0.00143,"13":0.00285,"14":0.00999,_:"0 4 5 6 7 8 9 10 12 15 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.00856,"11.1":0.00143,"12.1":0.00285,"13.1":0.01427,"14.1":0.01427,"15.1":0.00714,"15.2-15.3":0.00143,"15.4":0.00428,"15.5":0.00428,"15.6":0.03282,"16.0":0.00428,"16.1":0.00714,"16.2":0.00571,"16.3":0.00999,"16.4":0.00428,"16.5":0.01712,"16.6":0.03282,"17.0":0.03139,"17.1":0.00285},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00068,"5.0-5.1":0.00068,"6.0-6.1":0.00203,"7.0-7.1":0.00475,"8.1-8.4":0.00068,"9.0-9.2":0.00475,"9.3":0.01627,"10.0-10.2":0.00068,"10.3":0.02373,"11.0-11.2":0.0217,"11.3-11.4":0.00746,"12.0-12.1":0.0061,"12.2-12.5":0.10781,"13.0-13.1":0.00339,"13.2":0.01831,"13.3":0.00678,"13.4-13.7":0.0217,"14.0-14.4":0.05967,"14.5-14.8":0.09628,"15.0-15.1":0.03797,"15.2-15.3":0.04339,"15.4":0.04814,"15.5":0.06848,"15.6-15.7":0.47395,"16.0":0.17494,"16.1":0.33495,"16.2":0.16341,"16.3":0.30309,"16.4":0.06509,"16.5":0.17358,"16.6-16.7":3.25123,"17.0":1.1581,"17.1":0.06984,"17.2":0.00203},P:{"4":0.04056,"20":0.03042,"21":0.08112,"22":0.42588,"23":0.04056,_:"5.0-5.4 6.2-6.4 8.2 10.1 12.0","7.2-7.4":0.04056,"9.2":0.02028,"11.1-11.2":0.02028,"13.0":0.01014,"14.0":0.01014,"15.0":0.01014,"16.0":0.03042,"17.0":0.02028,"18.0":0.02028,"19.0":0.03042},I:{"0":0.05117,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00015},A:{"8":0.00304,"9":0.00152,"10":0.00152,"11":0.01674,_:"6 7 5.5"},K:{"0":23.54474,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.03429,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.22287},Q:{"13.1":0.00857},O:{"0":0.73719},H:{"0":4.7},L:{"0":53.20959}}; diff --git a/node_modules/caniuse-lite/data/regions/NI.js b/node_modules/caniuse-lite/data/regions/NI.js new file mode 100644 index 00000000..25d02f12 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/NI.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.00363,"66":0.00363,"78":0.00363,"98":0.1089,"102":0.00363,"112":0.00363,"113":0.01089,"114":0.01452,"115":0.26862,"116":0.01452,"117":0.06534,"118":1.1979,"119":0.29766,"121":0.00363,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 99 100 101 103 104 105 106 107 108 109 110 111 120 122 3.5 3.6"},D:{"11":0.00363,"38":0.00363,"49":0.00726,"53":0.01452,"58":0.00363,"63":0.00363,"65":0.00363,"66":0.00363,"68":0.00363,"69":0.00726,"70":0.01089,"73":0.00726,"75":0.01089,"76":0.01089,"77":0.00363,"79":0.07986,"80":0.00363,"81":0.00363,"83":0.02904,"84":0.00363,"85":0.00363,"86":0.00726,"87":0.02541,"88":0.01815,"89":0.00363,"90":0.00363,"91":2.76969,"93":0.01815,"94":0.00726,"95":0.00726,"96":0.01452,"97":0.01452,"98":0.00726,"99":0.05808,"100":0.01089,"101":0.00363,"102":0.00363,"103":0.08712,"104":0.01452,"105":0.03993,"106":0.01815,"107":0.02541,"108":0.04356,"109":1.49919,"110":0.01452,"111":0.02541,"112":0.02178,"113":0.05082,"114":0.12705,"115":0.05808,"116":0.70059,"117":8.78097,"118":8.97336,"119":0.00726,"120":0.00726,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 59 60 61 62 64 67 71 72 74 78 92 121 122"},F:{"28":0.00363,"78":0.00363,"87":0.00363,"95":0.05082,"97":0.00726,"100":0.00363,"102":1.29228,"103":0.18876,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 89 90 91 92 93 94 96 98 99 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"14":0.00363,"18":0.00726,"84":0.00726,"85":0.00363,"92":0.0363,"100":0.00363,"104":0.01452,"107":0.00363,"108":0.00363,"109":0.04356,"110":0.01089,"111":0.00726,"112":0.01089,"113":0.00363,"114":0.03267,"115":0.0363,"116":0.10164,"117":2.26149,"118":2.19615,"119":0.00363,_:"12 13 15 16 17 79 80 81 83 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103 105 106"},E:{"14":0.00363,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 17.2","5.1":0.01815,"13.1":0.00726,"14.1":0.02178,"15.1":0.00363,"15.2-15.3":0.00363,"15.4":0.00363,"15.5":0.01452,"15.6":0.06171,"16.0":0.00363,"16.1":0.01089,"16.2":0.02904,"16.3":0.04356,"16.4":0.01452,"16.5":0.1089,"16.6":0.42471,"17.0":0.08712,"17.1":0.00726},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00055,"5.0-5.1":0.00055,"6.0-6.1":0.00166,"7.0-7.1":0.00388,"8.1-8.4":0.00055,"9.0-9.2":0.00388,"9.3":0.01332,"10.0-10.2":0.00055,"10.3":0.01942,"11.0-11.2":0.01776,"11.3-11.4":0.0061,"12.0-12.1":0.00499,"12.2-12.5":0.08823,"13.0-13.1":0.00277,"13.2":0.01498,"13.3":0.00555,"13.4-13.7":0.01776,"14.0-14.4":0.04883,"14.5-14.8":0.0788,"15.0-15.1":0.03108,"15.2-15.3":0.03551,"15.4":0.0394,"15.5":0.05605,"15.6-15.7":0.38788,"16.0":0.14317,"16.1":0.27413,"16.2":0.13373,"16.3":0.24805,"16.4":0.05327,"16.5":0.14206,"16.6-16.7":2.66081,"17.0":0.94779,"17.1":0.05716,"17.2":0.00166},P:{"4":0.21573,"20":0.113,"21":0.2671,"22":1.99297,"23":0.31846,_:"5.0-5.4 10.1 12.0","6.2-6.4":0.02055,"7.2-7.4":0.30819,"8.2":0.01027,"9.2":0.03082,"11.1-11.2":0.07191,"13.0":0.02055,"14.0":0.03082,"15.0":0.01027,"16.0":0.10273,"17.0":0.04109,"18.0":0.06164,"19.0":0.17464},I:{"0":0.06339,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00019},A:{"11":0.02904,_:"6 7 8 9 10 5.5"},K:{"0":0.50331,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00637,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.13379},Q:{_:"13.1"},O:{"0":0.14653},H:{"0":0},L:{"0":56.54264}}; diff --git a/node_modules/caniuse-lite/data/regions/NL.js b/node_modules/caniuse-lite/data/regions/NL.js new file mode 100644 index 00000000..cb56d796 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/NL.js @@ -0,0 +1 @@ +module.exports={C:{"38":0.00497,"43":0.00497,"44":0.02979,"45":0.00497,"48":0.14399,"52":0.00993,"68":0.00497,"77":0.00497,"78":0.01986,"81":0.0149,"83":0.00497,"85":0.00993,"88":0.00497,"91":0.00497,"102":0.04469,"103":0.00497,"104":0.00497,"105":0.00497,"106":0.00497,"107":0.00497,"108":0.00497,"109":0.00993,"110":0.00993,"111":0.00497,"112":0.00993,"113":0.03972,"114":0.00993,"115":0.28797,"116":0.01986,"117":0.12413,"118":1.95621,"119":0.40713,"120":0.00497,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 79 80 82 84 86 87 89 90 92 93 94 95 96 97 98 99 100 101 121 122 3.5 3.6"},D:{"38":0.00993,"41":0.00497,"45":0.00993,"47":0.00497,"48":0.05958,"49":0.02483,"52":0.01986,"61":0.00497,"63":0.00497,"65":0.00497,"66":0.00993,"68":0.0149,"69":0.00993,"70":0.00993,"71":0.00993,"72":0.02979,"73":0.00497,"74":0.0149,"75":0.00993,"76":0.00993,"77":0.00993,"78":0.01986,"79":0.05958,"80":0.03476,"81":0.01986,"83":0.03476,"84":0.01986,"85":0.37734,"86":0.08937,"87":0.33266,"88":0.02483,"89":0.01986,"90":0.02483,"91":0.00993,"92":0.0149,"93":0.02979,"94":0.00993,"95":0.00497,"96":0.00993,"97":0.00993,"98":0.00993,"99":0.02483,"100":0.06951,"101":0.11916,"102":0.07448,"103":0.16881,"104":0.10923,"105":0.03476,"106":0.12909,"107":0.05462,"108":0.14895,"109":0.84405,"110":0.04469,"111":0.06455,"112":0.0993,"113":0.14399,"114":0.37734,"115":0.17874,"116":1.68314,"117":12.86432,"118":11.54363,"119":0.0149,"120":0.00497,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 46 50 51 53 54 55 56 57 58 59 60 62 64 67 121 122"},F:{"46":0.00497,"85":0.00497,"92":0.00497,"95":0.03476,"99":0.00497,"100":0.00497,"101":0.00993,"102":0.94832,"103":0.20853,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 93 94 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"80":0.00497,"81":0.00497,"83":0.00497,"84":0.00497,"85":0.00497,"86":0.00497,"88":0.00497,"89":0.00497,"92":0.00993,"103":0.00497,"106":0.00497,"107":0.00993,"108":0.00993,"109":0.08937,"110":0.00993,"111":0.00993,"112":0.00993,"113":0.0149,"114":0.04469,"115":0.04469,"116":0.15888,"117":3.81809,"118":3.53508,"119":0.00993,_:"12 13 14 15 16 17 18 79 87 90 91 93 94 95 96 97 98 99 100 101 102 104 105"},E:{"9":0.00993,"13":0.00497,"14":0.05462,"15":0.04469,_:"0 4 5 6 7 8 10 11 12 3.1 3.2 6.1 7.1 10.1 11.1 17.2","5.1":0.00497,"9.1":0.10923,"12.1":0.04469,"13.1":0.10923,"14.1":0.18867,"15.1":0.03476,"15.2-15.3":0.02483,"15.4":0.05462,"15.5":0.07448,"15.6":0.51636,"16.0":0.06455,"16.1":0.12413,"16.2":0.13902,"16.3":0.30287,"16.4":0.13406,"16.5":0.3128,"16.6":2.20943,"17.0":0.97314,"17.1":0.07448},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00206,"5.0-5.1":0.00206,"6.0-6.1":0.00618,"7.0-7.1":0.01442,"8.1-8.4":0.00206,"9.0-9.2":0.01442,"9.3":0.04944,"10.0-10.2":0.00206,"10.3":0.07209,"11.0-11.2":0.06591,"11.3-11.4":0.02266,"12.0-12.1":0.01854,"12.2-12.5":0.32751,"13.0-13.1":0.0103,"13.2":0.05562,"13.3":0.0206,"13.4-13.7":0.06591,"14.0-14.4":0.18126,"14.5-14.8":0.29249,"15.0-15.1":0.11535,"15.2-15.3":0.13183,"15.4":0.14625,"15.5":0.20804,"15.6-15.7":1.43981,"16.0":0.53143,"16.1":1.01755,"16.2":0.49642,"16.3":0.92074,"16.4":0.19774,"16.5":0.52731,"16.6-16.7":9.87683,"17.0":3.51817,"17.1":0.21216,"17.2":0.00618},P:{"4":0.02103,"20":0.04206,"21":0.09463,"22":3.55382,"23":0.82011,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 11.1-11.2 12.0 15.0","7.2-7.4":0.01051,"13.0":0.01051,"14.0":0.01051,"16.0":0.02103,"17.0":0.02103,"18.0":0.01051,"19.0":0.03154},I:{"0":0.05009,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00015},A:{"9":0.03298,"11":0.12093,_:"6 7 8 10 5.5"},K:{"0":0.38273,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.50854},Q:{"13.1":0.00504},O:{"0":0.38266},H:{"0":0.01},L:{"0":24.14722}}; diff --git a/node_modules/caniuse-lite/data/regions/NO.js b/node_modules/caniuse-lite/data/regions/NO.js new file mode 100644 index 00000000..bf93cf0c --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/NO.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.00672,"59":0.02686,"78":0.01343,"102":0.03358,"108":0.00672,"113":0.00672,"115":0.2082,"116":0.00672,"117":0.05373,"118":27.96542,"119":3.60649,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 105 106 107 109 110 111 112 114 120 121 122 3.5 3.6"},D:{"49":0.01343,"66":0.12089,"79":0.01343,"85":3.15652,"86":0.01343,"87":0.02015,"89":0.01343,"90":0.01343,"93":0.00672,"96":0.00672,"97":0.00672,"98":0.01343,"99":0.00672,"100":0.00672,"101":0.02015,"102":0.01343,"103":0.10074,"104":0.01343,"105":0.01343,"106":0.01343,"107":0.03358,"108":0.03358,"109":0.32237,"110":0.03358,"111":0.02686,"112":0.06044,"113":0.08059,"114":0.18805,"115":0.2082,"116":1.90734,"117":9.17406,"118":8.18009,"119":0.00672,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 84 88 91 92 94 95 120 121 122"},F:{"46":0.00672,"90":0.00672,"95":0.02015,"98":0.00672,"99":0.00672,"100":0.02686,"101":0.02015,"102":1.4708,"103":0.1679,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 91 92 93 94 96 97 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"17":0.01343,"86":0.00672,"107":0.00672,"109":0.03358,"112":0.02015,"113":0.03358,"114":0.01343,"115":0.02015,"116":0.08059,"117":1.86033,"118":1.83347,"119":0.00672,_:"12 13 14 15 16 18 79 80 81 83 84 85 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 108 110 111"},E:{"13":0.00672,"14":0.04701,"15":0.01343,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 17.2","11.1":0.02686,"12.1":0.01343,"13.1":0.06044,"14.1":0.22834,"15.1":0.03358,"15.2-15.3":0.03358,"15.4":0.10746,"15.5":0.10074,"15.6":0.42982,"16.0":0.03358,"16.1":0.15447,"16.2":0.12089,"16.3":0.32908,"16.4":0.22163,"16.5":0.30222,"16.6":1.8469,"17.0":0.97382,"17.1":0.06044},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.002,"5.0-5.1":0.002,"6.0-6.1":0.00599,"7.0-7.1":0.01397,"8.1-8.4":0.002,"9.0-9.2":0.01397,"9.3":0.04788,"10.0-10.2":0.002,"10.3":0.06983,"11.0-11.2":0.06384,"11.3-11.4":0.02195,"12.0-12.1":0.01796,"12.2-12.5":0.31721,"13.0-13.1":0.00998,"13.2":0.05387,"13.3":0.01995,"13.4-13.7":0.06384,"14.0-14.4":0.17556,"14.5-14.8":0.28329,"15.0-15.1":0.11172,"15.2-15.3":0.12768,"15.4":0.14165,"15.5":0.2015,"15.6-15.7":1.39453,"16.0":0.51472,"16.1":0.98554,"16.2":0.4808,"16.3":0.89178,"16.4":0.19152,"16.5":0.51073,"16.6-16.7":9.56617,"17.0":3.40751,"17.1":0.20549,"17.2":0.00599},P:{"4":0.02115,"20":0.02115,"21":0.03173,"22":1.5335,"23":0.33843,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 18.0","17.0":0.01058,"19.0":0.01058},I:{"0":0.02614,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00008},A:{"11":0.05373,_:"6 7 8 9 10 5.5"},K:{"0":0.13778,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.33497},Q:{_:"13.1"},O:{"0":0.0197},H:{"0":0.01},L:{"0":10.48712}}; diff --git a/node_modules/caniuse-lite/data/regions/NP.js b/node_modules/caniuse-lite/data/regions/NP.js new file mode 100644 index 00000000..cf1a1eb4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/NP.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.00182,"65":0.00182,"88":0.00182,"89":0.00182,"91":0.00182,"100":0.00182,"103":0.00182,"105":0.00182,"107":0.00182,"109":0.00182,"110":0.00182,"111":0.00182,"112":0.00182,"113":0.00182,"114":0.00364,"115":0.15106,"116":0.00728,"117":0.0182,"118":0.59696,"119":0.12558,"120":0.00364,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 90 92 93 94 95 96 97 98 99 101 102 104 106 108 121 122 3.5 3.6"},D:{"49":0.00182,"62":0.00182,"63":0.00182,"64":0.00182,"65":0.00182,"69":0.00364,"72":0.00182,"73":0.00182,"74":0.00364,"75":0.00182,"76":0.00182,"77":0.00182,"78":0.00182,"79":0.00728,"81":0.00182,"83":0.00182,"86":0.00182,"87":0.00728,"88":0.00364,"89":0.00182,"91":0.00364,"92":0.00182,"93":0.00546,"94":0.00182,"95":0.00182,"96":0.00728,"97":0.00546,"98":0.00728,"99":0.01274,"100":0.00546,"101":0.00182,"102":0.01092,"103":0.03094,"104":0.00182,"105":0.00364,"106":0.02002,"107":0.01092,"108":0.01456,"109":1.56702,"110":0.00728,"111":0.01456,"112":0.02912,"113":0.01092,"114":0.03094,"115":0.04732,"116":0.32214,"117":7.40194,"118":5.02138,"119":0.0455,"120":0.00364,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 66 67 68 70 71 80 84 85 90 121 122"},F:{"42":0.00182,"79":0.00182,"85":0.00364,"95":0.01638,"101":0.00182,"102":0.18382,"103":0.06188,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00182,"92":0.00546,"100":0.00182,"107":0.00182,"108":0.00182,"109":0.01274,"110":0.00182,"111":0.00182,"112":0.00182,"113":0.00182,"114":0.00546,"115":0.00546,"116":0.01092,"117":0.6825,"118":0.43498,"119":0.00364,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103 104 105 106"},E:{"13":0.00182,"14":0.00546,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 17.2","11.1":0.00182,"12.1":0.00182,"13.1":0.01092,"14.1":0.01456,"15.1":0.00182,"15.2-15.3":0.00364,"15.4":0.00364,"15.5":0.00546,"15.6":0.03276,"16.0":0.00546,"16.1":0.01092,"16.2":0.00728,"16.3":0.01456,"16.4":0.01638,"16.5":0.0182,"16.6":0.10374,"17.0":0.07462,"17.1":0.00728},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00098,"5.0-5.1":0.00098,"6.0-6.1":0.00294,"7.0-7.1":0.00685,"8.1-8.4":0.00098,"9.0-9.2":0.00685,"9.3":0.0235,"10.0-10.2":0.00098,"10.3":0.03427,"11.0-11.2":0.03134,"11.3-11.4":0.01077,"12.0-12.1":0.00881,"12.2-12.5":0.1557,"13.0-13.1":0.0049,"13.2":0.02644,"13.3":0.00979,"13.4-13.7":0.03134,"14.0-14.4":0.08618,"14.5-14.8":0.13906,"15.0-15.1":0.05484,"15.2-15.3":0.06267,"15.4":0.06953,"15.5":0.09891,"15.6-15.7":0.68451,"16.0":0.25265,"16.1":0.48376,"16.2":0.236,"16.3":0.43773,"16.4":0.09401,"16.5":0.25069,"16.6-16.7":4.69558,"17.0":1.67259,"17.1":0.10086,"17.2":0.00294},P:{"4":0.0751,"20":0.01073,"21":0.03219,"22":0.36479,"23":0.06438,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 11.1-11.2 12.0 14.0 15.0 16.0","7.2-7.4":0.03219,"13.0":0.01073,"17.0":0.04292,"18.0":0.01073,"19.0":0.01073},I:{"0":0.0407,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00012},A:{"7":0.00218,"8":0.00218,"11":0.00655,_:"6 9 10 5.5"},K:{"0":0.59721,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.04091},Q:{_:"13.1"},O:{"0":0.88355},H:{"0":0},L:{"0":70.45371}}; diff --git a/node_modules/caniuse-lite/data/regions/NR.js b/node_modules/caniuse-lite/data/regions/NR.js new file mode 100644 index 00000000..d4baf974 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/NR.js @@ -0,0 +1 @@ +module.exports={C:{"104":0.02737,"118":0.19158,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 105 106 107 108 109 110 111 112 113 114 115 116 117 119 120 121 122 3.5 3.6"},D:{"103":0.05474,"109":0.24632,"110":0.02737,"113":0.27369,"116":0.02737,"117":6.12153,"118":14.18018,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 104 105 106 107 108 111 112 114 115 119 120 121 122"},F:{"103":0.02737,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"90":0.02737,"116":0.19158,"117":1.11909,"118":2.81293,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 119"},E:{"14":0.24632,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 15.1 15.2-15.3 15.4 15.5 15.6 16.0 16.2 16.3 16.4 16.5 17.1 17.2","14.1":0.24632,"16.1":0.02737,"16.6":0.13685,"17.0":0.02737},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0005,"5.0-5.1":0.0005,"6.0-6.1":0.0015,"7.0-7.1":0.0035,"8.1-8.4":0.0005,"9.0-9.2":0.0035,"9.3":0.01201,"10.0-10.2":0.0005,"10.3":0.01751,"11.0-11.2":0.01601,"11.3-11.4":0.0055,"12.0-12.1":0.0045,"12.2-12.5":0.07956,"13.0-13.1":0.0025,"13.2":0.01351,"13.3":0.005,"13.4-13.7":0.01601,"14.0-14.4":0.04403,"14.5-14.8":0.07105,"15.0-15.1":0.02802,"15.2-15.3":0.03202,"15.4":0.03552,"15.5":0.05054,"15.6-15.7":0.34975,"16.0":0.12909,"16.1":0.24717,"16.2":0.12058,"16.3":0.22366,"16.4":0.04803,"16.5":0.12809,"16.6-16.7":2.39919,"17.0":0.8546,"17.1":0.05154,"17.2":0.0015},P:{"20":0.03096,"21":0.42316,"22":1.35206,"23":2.03325,_:"4 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 12.0 13.0 15.0 16.0 17.0 18.0","11.1-11.2":0.68119,"14.0":0.03096,"19.0":0.34059},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0.53584,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.73765},Q:{_:"13.1"},O:{"0":0.61935},H:{"0":0},L:{"0":62.11921}}; diff --git a/node_modules/caniuse-lite/data/regions/NU.js b/node_modules/caniuse-lite/data/regions/NU.js new file mode 100644 index 00000000..d5b2b98f --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/NU.js @@ -0,0 +1 @@ +module.exports={C:{"115":0.2723,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 116 117 118 119 120 121 122 3.5 3.6"},D:{"116":0.2723,"117":0.40747,"118":0.2723,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 119 120 121 122"},F:{"102":0.13517,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 15.5 16.4 17.2","15.2-15.3":6.12188,"15.4":0.13517,"15.6":0.40747,"16.0":0.95207,"16.1":0.2723,"16.2":0.13517,"16.3":0.13517,"16.5":0.2723,"16.6":7.21108,"17.0":1.49668,"17.1":0.67977},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00343,"5.0-5.1":0.00343,"6.0-6.1":0.0103,"7.0-7.1":0.02403,"8.1-8.4":0.00343,"9.0-9.2":0.02403,"9.3":0.08238,"10.0-10.2":0.00343,"10.3":0.12014,"11.0-11.2":0.10985,"11.3-11.4":0.03776,"12.0-12.1":0.03089,"12.2-12.5":0.5458,"13.0-13.1":0.01716,"13.2":0.09268,"13.3":0.03433,"13.4-13.7":0.10985,"14.0-14.4":0.30208,"14.5-14.8":0.48744,"15.0-15.1":0.19223,"15.2-15.3":0.21969,"15.4":0.24372,"15.5":0.3467,"15.6-15.7":2.39946,"16.0":0.88564,"16.1":1.69576,"16.2":0.82728,"16.3":1.53442,"16.4":0.32954,"16.5":0.87877,"16.6-16.7":16.45981,"17.0":5.86306,"17.1":0.35357,"17.2":0.0103},P:{_:"4 20 21 22 23 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0"},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{_:"0"},Q:{_:"13.1"},O:{_:"0"},H:{"0":0},L:{"0":46.08297}}; diff --git a/node_modules/caniuse-lite/data/regions/NZ.js b/node_modules/caniuse-lite/data/regions/NZ.js new file mode 100644 index 00000000..55d7d11a --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/NZ.js @@ -0,0 +1 @@ +module.exports={C:{"11":0.21941,"34":0.00522,"37":0.01045,"48":0.02612,"52":0.02612,"54":0.00522,"59":0.02612,"66":0.00522,"78":0.05224,"88":0.00522,"89":0.00522,"90":0.00522,"98":0.00522,"102":0.0209,"104":0.00522,"105":0.00522,"108":0.00522,"110":0.00522,"113":0.01567,"114":0.01045,"115":0.2612,"116":0.0209,"117":0.09926,"118":1.80228,"119":0.32389,"120":0.00522,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 38 39 40 41 42 43 44 45 46 47 49 50 51 53 55 56 57 58 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 91 92 93 94 95 96 97 99 100 101 103 106 107 109 111 112 121 122 3.5 3.6"},D:{"26":0.00522,"34":0.01567,"38":0.08358,"39":0.0209,"40":0.0209,"41":0.0209,"42":0.0209,"43":0.0209,"44":0.0209,"45":0.0209,"46":0.0209,"47":0.0209,"48":0.0209,"49":0.05224,"50":0.0209,"51":0.02612,"52":0.03657,"53":0.03134,"54":0.0209,"55":0.0209,"56":0.0209,"57":0.0209,"58":0.0209,"59":0.04179,"60":0.0209,"61":0.01045,"65":0.01045,"66":0.1515,"67":0.00522,"68":0.00522,"69":0.00522,"70":0.00522,"71":0.00522,"73":0.00522,"74":0.00522,"75":0.00522,"76":0.01045,"77":0.00522,"78":0.00522,"79":0.09926,"80":0.00522,"81":0.00522,"83":0.01567,"85":0.01045,"86":0.01045,"87":0.05746,"88":0.01567,"89":0.0209,"90":0.08358,"91":0.00522,"92":0.0209,"93":0.06269,"94":0.0209,"95":0.01045,"96":0.00522,"97":0.01045,"98":0.01567,"99":0.03657,"100":0.00522,"101":0.01045,"102":0.01045,"103":0.30822,"104":0.02612,"105":0.0209,"106":0.01567,"107":0.07314,"108":0.07836,"109":0.82539,"110":0.04702,"111":0.06791,"112":0.07314,"113":0.13582,"114":0.36568,"115":0.35523,"116":2.27244,"117":14.06823,"118":12.41745,"119":0.02612,"120":0.01567,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 35 36 37 62 63 64 72 84 121 122"},F:{"28":0.01045,"45":0.00522,"46":0.02612,"92":0.00522,"95":0.02612,"99":0.00522,"100":0.01045,"101":0.00522,"102":0.85674,"103":0.11493,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 93 94 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"14":0.00522,"17":0.01567,"18":0.00522,"92":0.00522,"103":0.00522,"104":0.00522,"105":0.01045,"108":0.00522,"109":0.08881,"110":0.00522,"111":0.01567,"112":0.00522,"113":0.02612,"114":0.02612,"115":0.02612,"116":0.09926,"117":3.17097,"118":3.01425,"119":0.00522,_:"12 13 15 16 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 106 107"},E:{"12":0.00522,"13":0.04702,"14":0.12015,"15":0.01567,_:"0 4 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 17.2","11.1":0.03134,"12.1":0.02612,"13.1":0.20896,"14.1":0.29254,"15.1":0.03657,"15.2-15.3":0.04702,"15.4":0.06791,"15.5":0.1515,"15.6":0.86718,"16.0":0.08358,"16.1":0.22986,"16.2":0.17762,"16.3":0.37613,"16.4":0.14105,"16.5":0.44404,"16.6":3.37993,"17.0":0.83584,"17.1":0.07314},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00175,"5.0-5.1":0.00175,"6.0-6.1":0.00526,"7.0-7.1":0.01228,"8.1-8.4":0.00175,"9.0-9.2":0.01228,"9.3":0.0421,"10.0-10.2":0.00175,"10.3":0.0614,"11.0-11.2":0.05614,"11.3-11.4":0.0193,"12.0-12.1":0.01579,"12.2-12.5":0.27892,"13.0-13.1":0.00877,"13.2":0.04736,"13.3":0.01754,"13.4-13.7":0.05614,"14.0-14.4":0.15437,"14.5-14.8":0.2491,"15.0-15.1":0.09824,"15.2-15.3":0.11227,"15.4":0.12455,"15.5":0.17718,"15.6-15.7":1.2262,"16.0":0.45259,"16.1":0.86659,"16.2":0.42277,"16.3":0.78414,"16.4":0.16841,"16.5":0.44908,"16.6-16.7":8.41151,"17.0":2.99622,"17.1":0.18069,"17.2":0.00526},P:{"4":0.17497,"20":0.04374,"21":0.12029,"22":2.14343,"23":0.44837,"5.0-5.4":0.02187,"6.2-6.4":0.01094,_:"7.2-7.4 8.2 9.2 10.1 12.0","11.1-11.2":0.01094,"13.0":0.01094,"14.0":0.01094,"15.0":0.01094,"16.0":0.02187,"17.0":0.02187,"18.0":0.01094,"19.0":0.03281},I:{"0":0.03326,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.0001},A:{"8":0.02032,"11":0.16252,_:"6 7 9 10 5.5"},K:{"0":0.2579,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.43939},Q:{"13.1":0.00478},O:{"0":0.05254},H:{"0":0},L:{"0":26.76653}}; diff --git a/node_modules/caniuse-lite/data/regions/OM.js b/node_modules/caniuse-lite/data/regions/OM.js new file mode 100644 index 00000000..30bf4084 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/OM.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00277,"66":0.00277,"74":0.00277,"102":0.00553,"105":0.00277,"115":0.07189,"117":0.01659,"118":0.28203,"119":0.0553,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 106 107 108 109 110 111 112 113 114 116 120 121 122 3.5 3.6"},D:{"11":0.00277,"38":0.00553,"49":0.00553,"56":0.00277,"58":0.0553,"63":0.00277,"64":0.00277,"65":0.00277,"68":0.02212,"69":0.00553,"70":0.00277,"71":0.00277,"73":0.00277,"75":0.00277,"76":0.00277,"78":0.00277,"79":0.04701,"80":0.00277,"81":0.00553,"83":0.01659,"84":0.00277,"85":0.00553,"86":0.0083,"87":0.02765,"88":0.01106,"89":0.00553,"90":0.00553,"91":0.02765,"92":0.00553,"93":0.03318,"94":0.00277,"95":0.01106,"96":0.00553,"97":0.00277,"98":0.01383,"99":0.0553,"100":0.00553,"101":0.00553,"102":0.00553,"103":0.18249,"104":0.0083,"105":0.0083,"106":0.00553,"107":0.01659,"108":0.03871,"109":1.68942,"110":0.01106,"111":0.01659,"112":0.02212,"113":0.02489,"114":0.05807,"115":0.07189,"116":0.48388,"117":8.53003,"118":8.38348,"119":0.05254,"120":0.01383,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 59 60 61 62 66 67 72 74 77 121 122"},F:{"28":0.0083,"46":0.00553,"85":0.00277,"94":0.00553,"95":0.0083,"98":0.00277,"100":0.00553,"101":0.00277,"102":0.28203,"103":0.06636,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 96 97 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"16":0.00277,"17":0.00277,"18":0.00553,"92":0.0083,"94":0.00277,"97":0.00277,"100":0.00277,"101":0.00553,"103":0.00277,"107":0.00277,"108":0.00277,"109":0.06083,"110":0.01383,"111":0.00553,"112":0.00553,"113":0.00553,"114":0.0083,"115":0.02212,"116":0.06083,"117":1.45716,"118":1.36315,"119":0.00277,_:"12 13 14 15 79 80 81 83 84 85 86 87 88 89 90 91 93 95 96 98 99 102 104 105 106"},E:{"13":0.00277,"14":0.03318,"15":0.00553,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.01383,"12.1":0.00277,"13.1":0.02489,"14.1":0.03871,"15.1":0.00553,"15.2-15.3":0.00553,"15.4":0.01936,"15.5":0.05254,"15.6":0.14378,"16.0":0.0083,"16.1":0.04148,"16.2":0.04148,"16.3":0.11337,"16.4":0.03042,"16.5":0.08295,"16.6":0.48388,"17.0":0.27097,"17.1":0.01383},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0016,"5.0-5.1":0.0016,"6.0-6.1":0.00479,"7.0-7.1":0.01118,"8.1-8.4":0.0016,"9.0-9.2":0.01118,"9.3":0.03834,"10.0-10.2":0.0016,"10.3":0.05591,"11.0-11.2":0.05112,"11.3-11.4":0.01757,"12.0-12.1":0.01438,"12.2-12.5":0.254,"13.0-13.1":0.00799,"13.2":0.04313,"13.3":0.01597,"13.4-13.7":0.05112,"14.0-14.4":0.14058,"14.5-14.8":0.22684,"15.0-15.1":0.08946,"15.2-15.3":0.10224,"15.4":0.11342,"15.5":0.16135,"15.6-15.7":1.11664,"16.0":0.41215,"16.1":0.78916,"16.2":0.38499,"16.3":0.71408,"16.4":0.15336,"16.5":0.40896,"16.6-16.7":7.65995,"17.0":2.72851,"17.1":0.16454,"17.2":0.00479},P:{"4":0.09271,"20":0.07211,"21":0.16482,"22":2.2663,"23":0.50477,_:"5.0-5.4 6.2-6.4 8.2 10.1","7.2-7.4":0.10301,"9.2":0.0103,"11.1-11.2":0.06181,"12.0":0.0206,"13.0":0.05151,"14.0":0.04121,"15.0":0.10301,"16.0":0.06181,"17.0":0.04121,"18.0":0.05151,"19.0":0.07211},I:{"0":0.09358,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00007,"4.4":0,"4.4.3-4.4.4":0.00028},A:{"8":0.00283,"11":0.11877,_:"6 7 9 10 5.5"},K:{"0":0.5571,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.05788},Q:{_:"13.1"},O:{"0":1.05631},H:{"0":0},L:{"0":52.75368}}; diff --git a/node_modules/caniuse-lite/data/regions/PA.js b/node_modules/caniuse-lite/data/regions/PA.js new file mode 100644 index 00000000..a3a17ff7 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/PA.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00423,"52":0.00423,"78":0.00423,"85":0.00423,"97":0.01268,"102":0.00423,"109":0.01691,"110":0.00423,"112":0.00423,"113":0.00846,"114":0.04228,"115":0.24522,"116":0.01268,"117":0.03382,"118":0.84137,"119":0.17758,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 95 96 98 99 100 101 103 104 105 106 107 108 111 120 121 122 3.5 3.6"},D:{"11":0.00423,"29":0.00423,"34":0.00423,"43":0.00423,"44":0.00423,"45":0.00423,"46":0.00423,"47":0.00423,"49":0.00423,"51":0.00423,"54":0.00423,"60":0.00423,"68":0.0296,"69":0.01691,"70":0.00423,"73":0.01268,"74":0.01268,"75":0.00846,"76":0.01691,"77":0.00423,"78":0.00846,"79":0.08456,"80":0.05919,"81":0.00423,"83":0.02114,"85":0.00423,"86":0.00846,"87":0.05496,"88":0.02114,"89":0.03382,"91":0.09302,"92":0.01691,"93":0.03805,"94":0.00846,"95":0.00423,"96":0.00423,"97":0.00846,"98":0.01691,"99":0.01691,"100":0.00423,"101":0.00846,"102":0.00846,"103":0.1057,"104":0.00423,"105":0.02114,"106":0.01691,"107":0.06342,"108":0.03382,"109":0.97667,"110":0.00846,"111":0.02114,"112":0.05919,"113":0.05919,"114":0.14375,"115":0.14375,"116":1.03163,"117":11.50439,"118":12.77702,"119":0.01268,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 35 36 37 38 39 40 41 42 48 50 52 53 55 56 57 58 59 61 62 63 64 65 66 67 71 72 84 90 120 121 122"},F:{"28":0.01691,"46":0.00423,"95":0.01691,"100":0.00423,"101":0.01691,"102":2.10977,"103":0.24522,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00423,"14":0.00423,"15":0.00423,"16":0.00423,"18":0.00846,"92":0.00846,"107":0.00423,"109":0.03805,"110":0.00423,"111":0.00423,"112":0.01691,"113":0.01268,"114":0.03382,"115":0.0296,"116":0.06765,"117":2.77357,"118":2.45224,"119":0.00846,_:"13 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 108"},E:{"9":0.00846,"12":0.01268,"14":0.02537,"15":0.00423,_:"0 4 5 6 7 8 10 11 13 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.00846,"11.1":0.00423,"12.1":0.00423,"13.1":0.03805,"14.1":0.15221,"15.1":0.01691,"15.2-15.3":0.02114,"15.4":0.01691,"15.5":0.02114,"15.6":0.25791,"16.0":0.01691,"16.1":0.05919,"16.2":0.06342,"16.3":0.12261,"16.4":0.13952,"16.5":0.11838,"16.6":0.74413,"17.0":0.36361,"17.1":0.04651,"17.2":0.00423},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00096,"5.0-5.1":0.00096,"6.0-6.1":0.00288,"7.0-7.1":0.00673,"8.1-8.4":0.00096,"9.0-9.2":0.00673,"9.3":0.02308,"10.0-10.2":0.00096,"10.3":0.03366,"11.0-11.2":0.03077,"11.3-11.4":0.01058,"12.0-12.1":0.00865,"12.2-12.5":0.1529,"13.0-13.1":0.00481,"13.2":0.02596,"13.3":0.00962,"13.4-13.7":0.03077,"14.0-14.4":0.08462,"14.5-14.8":0.13655,"15.0-15.1":0.05385,"15.2-15.3":0.06154,"15.4":0.06827,"15.5":0.09712,"15.6-15.7":0.67217,"16.0":0.2481,"16.1":0.47504,"16.2":0.23175,"16.3":0.42984,"16.4":0.09232,"16.5":0.24617,"16.6-16.7":4.61094,"17.0":1.64244,"17.1":0.09905,"17.2":0.00288},P:{"4":0.12526,"20":0.1357,"21":0.26096,"22":2.58873,"23":0.45929,"5.0-5.4":0.02088,_:"6.2-6.4 8.2 9.2 10.1 12.0 14.0","7.2-7.4":0.31315,"11.1-11.2":0.03132,"13.0":0.02088,"15.0":0.01044,"16.0":0.04175,"17.0":0.06263,"18.0":0.02088,"19.0":0.10438},I:{"0":0.09188,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00028},A:{"8":0.02602,"9":0.0052,"10":0.0052,"11":0.03122,_:"6 7 5.5"},K:{"0":0.38639,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00577,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.17893},Q:{"13.1":0.01154},O:{"0":0.09812},H:{"0":0.11},L:{"0":45.3135}}; diff --git a/node_modules/caniuse-lite/data/regions/PE.js b/node_modules/caniuse-lite/data/regions/PE.js new file mode 100644 index 00000000..4ab98217 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/PE.js @@ -0,0 +1 @@ +module.exports={C:{"45":0.01117,"52":0.01676,"54":0.00559,"68":0.00559,"88":0.01117,"104":0.00559,"110":0.00559,"111":0.00559,"112":0.00559,"113":0.00559,"114":0.01117,"115":0.13404,"116":0.00559,"117":0.02234,"118":0.80424,"119":0.1508,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 53 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 105 106 107 108 109 120 121 122 3.5 3.6"},D:{"34":0.00559,"38":0.02793,"41":0.00559,"47":0.00559,"49":0.02793,"53":0.01117,"56":0.00559,"62":0.00559,"65":0.00559,"68":0.01676,"70":0.00559,"73":0.00559,"74":0.00559,"77":0.00559,"78":0.00559,"79":0.29601,"80":0.00559,"81":0.01676,"83":0.00559,"84":0.00559,"85":0.01117,"86":0.00559,"87":0.05585,"88":0.03351,"89":0.00559,"90":0.00559,"91":0.08378,"92":0.01117,"93":0.02234,"94":0.01117,"95":0.02234,"96":0.05585,"97":0.02234,"98":0.03351,"99":0.02234,"100":0.02234,"101":0.01117,"102":0.01676,"103":0.10053,"104":0.02234,"105":0.03351,"106":0.04468,"107":0.03351,"108":0.05585,"109":3.10526,"110":0.02793,"111":0.06702,"112":0.06144,"113":0.05027,"114":0.18989,"115":0.15638,"116":0.94945,"117":18.43609,"118":20.46344,"119":0.02793,"120":0.01117,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 42 43 44 45 46 48 50 51 52 54 55 57 58 59 60 61 63 64 66 67 69 71 72 75 76 121 122"},F:{"28":0.00559,"36":0.00559,"83":0.00559,"95":0.07261,"97":0.00559,"99":0.00559,"100":0.00559,"101":0.00559,"102":2.88186,"103":0.31835,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 84 85 86 87 88 89 90 91 92 93 94 96 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00559,"18":0.01117,"92":0.01676,"100":0.00559,"102":0.00559,"108":0.00559,"109":0.05027,"110":0.00559,"111":0.00559,"112":0.00559,"113":0.01676,"114":0.02793,"115":0.02793,"116":0.07261,"117":1.78162,"118":1.93241,"119":0.01676,_:"13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 103 104 105 106 107"},E:{"14":0.01676,"15":0.00559,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 15.2-15.3 17.2","5.1":0.00559,"13.1":0.01117,"14.1":0.03351,"15.1":0.01117,"15.4":0.0391,"15.5":0.01676,"15.6":0.07819,"16.0":0.00559,"16.1":0.0391,"16.2":0.01117,"16.3":0.0391,"16.4":0.01676,"16.5":0.04468,"16.6":0.18431,"17.0":0.13963,"17.1":0.01676},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00035,"5.0-5.1":0.00035,"6.0-6.1":0.00105,"7.0-7.1":0.00246,"8.1-8.4":0.00035,"9.0-9.2":0.00246,"9.3":0.00842,"10.0-10.2":0.00035,"10.3":0.01228,"11.0-11.2":0.01123,"11.3-11.4":0.00386,"12.0-12.1":0.00316,"12.2-12.5":0.05581,"13.0-13.1":0.00175,"13.2":0.00948,"13.3":0.00351,"13.4-13.7":0.01123,"14.0-14.4":0.03089,"14.5-14.8":0.04984,"15.0-15.1":0.01966,"15.2-15.3":0.02246,"15.4":0.02492,"15.5":0.03545,"15.6-15.7":0.24534,"16.0":0.09056,"16.1":0.17339,"16.2":0.08459,"16.3":0.15689,"16.4":0.0337,"16.5":0.08985,"16.6-16.7":1.68301,"17.0":0.5995,"17.1":0.03615,"17.2":0.00105},P:{"4":0.22451,"20":0.03062,"21":0.05103,"22":0.61231,"23":0.08164,"5.0-5.4":0.02041,"6.2-6.4":0.01021,"7.2-7.4":0.06123,_:"8.2 9.2 10.1 12.0","11.1-11.2":0.01021,"13.0":0.04082,"14.0":0.01021,"15.0":0.01021,"16.0":0.03062,"17.0":0.02041,"18.0":0.01021,"19.0":0.02041},I:{"0":0.04392,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00013},A:{"8":0.00878,"11":0.05266,_:"6 7 9 10 5.5"},K:{"0":0.18543,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.08389},Q:{_:"13.1"},O:{"0":0.02208},H:{"0":0},L:{"0":40.43697}}; diff --git a/node_modules/caniuse-lite/data/regions/PF.js b/node_modules/caniuse-lite/data/regions/PF.js new file mode 100644 index 00000000..0707e071 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/PF.js @@ -0,0 +1 @@ +module.exports={C:{"48":0.00512,"57":0.00512,"60":0.00512,"63":0.00512,"67":0.04094,"68":0.04605,"72":0.05629,"74":0.00512,"75":0.20468,"76":0.00512,"78":0.12281,"82":0.03582,"83":0.00512,"85":0.00512,"88":0.00512,"89":0.00512,"91":0.20468,"94":0.02047,"95":0.01023,"97":0.00512,"98":0.01023,"99":0.01023,"102":0.04094,"103":0.00512,"105":0.00512,"107":0.04094,"108":0.01023,"112":0.00512,"113":0.00512,"114":0.02559,"115":0.98758,"116":0.04605,"117":0.1791,"118":3.50003,"119":0.63451,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 52 53 54 55 56 58 59 61 62 64 65 66 69 70 71 73 77 79 80 81 84 86 87 90 92 93 96 100 101 104 106 109 110 111 120 121 122 3.5 3.6"},D:{"41":0.02559,"47":0.00512,"49":0.01023,"53":0.00512,"57":0.00512,"58":0.00512,"65":0.00512,"67":0.03582,"70":0.01535,"71":0.04094,"72":0.00512,"74":0.01023,"76":0.04094,"78":0.00512,"79":0.23538,"80":0.02047,"81":0.19956,"83":0.00512,"84":0.01023,"85":0.48612,"86":0.02047,"87":0.44006,"88":0.00512,"90":0.00512,"92":0.05117,"93":0.03582,"94":0.01023,"95":0.00512,"96":0.00512,"98":0.08187,"101":0.0307,"102":0.02047,"103":0.25073,"105":0.01023,"106":0.02559,"107":0.01023,"108":0.04605,"109":1.05922,"110":0.11769,"111":0.01023,"112":0.0307,"113":0.24562,"114":0.09211,"115":0.08699,"116":1.18714,"117":7.18427,"118":8.80636,"119":0.0307,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 43 44 45 46 48 50 51 52 54 55 56 59 60 61 62 63 64 66 68 69 73 75 77 89 91 97 99 100 104 120 121 122"},F:{"28":0.00512,"46":0.00512,"65":0.0307,"73":0.00512,"89":0.01535,"94":0.01023,"95":0.02559,"100":0.00512,"101":0.01023,"102":0.66521,"103":0.06652,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 90 91 92 93 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00512,"16":0.00512,"18":0.03582,"86":0.00512,"90":0.01023,"91":0.00512,"92":0.01535,"97":0.01023,"98":0.00512,"99":0.00512,"104":0.00512,"106":0.01023,"107":0.01535,"109":0.05117,"110":0.01535,"111":0.01023,"112":0.01023,"113":0.01023,"114":0.04094,"115":0.01023,"116":0.07164,"117":3.06508,"118":2.91669,_:"13 14 15 17 79 80 81 83 84 85 87 88 89 93 94 95 96 100 101 102 103 105 108 119"},E:{"13":0.01023,"14":0.49635,"15":0.07164,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 17.2","11.1":0.00512,"12.1":0.18421,"13.1":0.31214,"14.1":0.59869,"15.1":0.10234,"15.2-15.3":0.43495,"15.4":0.11769,"15.5":0.2405,"15.6":2.2873,"16.0":0.07164,"16.1":0.29167,"16.2":0.18933,"16.3":0.85454,"16.4":0.25073,"16.5":0.91083,"16.6":3.96568,"17.0":1.88817,"17.1":0.11769},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00159,"5.0-5.1":0.00159,"6.0-6.1":0.00476,"7.0-7.1":0.01111,"8.1-8.4":0.00159,"9.0-9.2":0.01111,"9.3":0.0381,"10.0-10.2":0.00159,"10.3":0.05557,"11.0-11.2":0.0508,"11.3-11.4":0.01746,"12.0-12.1":0.01429,"12.2-12.5":0.25243,"13.0-13.1":0.00794,"13.2":0.04287,"13.3":0.01588,"13.4-13.7":0.0508,"14.0-14.4":0.13971,"14.5-14.8":0.22544,"15.0-15.1":0.08891,"15.2-15.3":0.10161,"15.4":0.11272,"15.5":0.16035,"15.6-15.7":1.10975,"16.0":0.40961,"16.1":0.78429,"16.2":0.38262,"16.3":0.70967,"16.4":0.15241,"16.5":0.40643,"16.6-16.7":7.61267,"17.0":2.71167,"17.1":0.16353,"17.2":0.00476},P:{"4":0.04257,"20":0.03193,"21":0.18091,"22":2.72434,"23":0.4576,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 14.0","7.2-7.4":0.26605,"11.1-11.2":0.01064,"13.0":0.01064,"15.0":0.01064,"16.0":0.01064,"17.0":0.02128,"18.0":0.02128,"19.0":0.11706},I:{"0":0.01457,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00004},A:{"11":0.11257,_:"6 7 8 9 10 5.5"},K:{"0":0.45379,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.45891},Q:{_:"13.1"},O:{"0":0.04882},H:{"0":0.01},L:{"0":30.10047}}; diff --git a/node_modules/caniuse-lite/data/regions/PG.js b/node_modules/caniuse-lite/data/regions/PG.js new file mode 100644 index 00000000..43eac2ae --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/PG.js @@ -0,0 +1 @@ +module.exports={C:{"60":0.00895,"72":0.00298,"80":0.00597,"89":0.00298,"92":0.01194,"93":0.00597,"94":0.00298,"95":0.00597,"97":0.01194,"98":0.00597,"99":0.00298,"100":0.00298,"103":0.00597,"107":0.00597,"109":0.00298,"110":0.00597,"111":0.00597,"112":0.01492,"113":0.00298,"114":0.00895,"115":0.1313,"116":0.00895,"117":0.17307,"118":0.7639,"119":0.14622,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 81 82 83 84 85 86 87 88 90 91 96 101 102 104 105 106 108 120 121 122 3.5 3.6"},D:{"11":0.00597,"37":0.00298,"38":0.00298,"43":0.00895,"49":0.00298,"50":0.00298,"53":0.00298,"55":0.00298,"56":0.00298,"59":0.00895,"60":0.00298,"62":0.00298,"65":0.01194,"66":0.00298,"67":0.00895,"68":0.00597,"69":0.01492,"70":0.04178,"71":0.00298,"72":0.00597,"74":0.00895,"77":0.00298,"78":0.01194,"79":0.04774,"80":0.00298,"81":0.02387,"83":0.00597,"84":0.00895,"85":0.00298,"87":0.0179,"88":0.12533,"89":0.00597,"90":0.03282,"91":0.00298,"92":0.00597,"93":0.00298,"94":0.02089,"95":0.00597,"96":0.01194,"97":0.00298,"98":0.00298,"99":0.04476,"100":0.1313,"101":0.00895,"102":0.02686,"103":0.11339,"104":0.00298,"105":0.03879,"106":0.02089,"107":0.01492,"108":0.03282,"109":0.94294,"110":0.0179,"111":0.02984,"112":0.03879,"113":0.05073,"114":0.09847,"115":0.07758,"116":0.46252,"117":3.86428,"118":4.57149,"119":0.00597,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 39 40 41 42 44 45 46 47 48 51 52 54 57 58 61 63 64 73 75 76 86 120 121 122"},F:{"74":0.00298,"76":0.00597,"77":0.02984,"78":0.04178,"83":0.00298,"94":0.00298,"95":0.01492,"99":0.00298,"101":0.00895,"102":0.14622,"103":0.10146,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 79 80 81 82 84 85 86 87 88 89 90 91 92 93 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.01194,"13":0.0179,"14":0.00895,"15":0.00298,"16":0.00895,"17":0.02686,"18":0.06565,"80":0.00597,"83":0.00298,"84":0.04774,"85":0.01194,"89":0.0179,"90":0.03581,"92":0.07162,"94":0.00597,"98":0.00298,"99":0.00597,"100":0.01194,"101":0.00298,"102":0.00298,"103":0.00597,"104":0.00298,"105":0.00298,"106":0.00597,"107":0.01492,"108":0.00298,"109":0.0567,"110":0.01194,"111":0.00597,"112":0.01492,"113":0.02387,"114":0.0925,"115":0.06863,"116":0.27453,"117":1.47708,"118":1.3995,"119":0.01194,_:"79 81 86 87 88 91 93 95 96 97"},E:{"11":0.00597,"13":0.00298,"14":0.00298,"15":0.00298,_:"0 4 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 17.1 17.2","13.1":0.02686,"14.1":0.0179,"15.1":0.01194,"15.2-15.3":0.00895,"15.4":0.00298,"15.5":0.00597,"15.6":0.04774,"16.0":0.00298,"16.1":0.00597,"16.2":0.00597,"16.3":0.02089,"16.4":0.00298,"16.5":0.0179,"16.6":0.1492,"17.0":0.05371},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00018,"5.0-5.1":0.00018,"6.0-6.1":0.00055,"7.0-7.1":0.00128,"8.1-8.4":0.00018,"9.0-9.2":0.00128,"9.3":0.00438,"10.0-10.2":0.00018,"10.3":0.00638,"11.0-11.2":0.00584,"11.3-11.4":0.00201,"12.0-12.1":0.00164,"12.2-12.5":0.029,"13.0-13.1":0.00091,"13.2":0.00493,"13.3":0.00182,"13.4-13.7":0.00584,"14.0-14.4":0.01605,"14.5-14.8":0.0259,"15.0-15.1":0.01022,"15.2-15.3":0.01167,"15.4":0.01295,"15.5":0.01842,"15.6-15.7":0.12751,"16.0":0.04706,"16.1":0.09011,"16.2":0.04396,"16.3":0.08154,"16.4":0.01751,"16.5":0.0467,"16.6-16.7":0.87468,"17.0":0.31157,"17.1":0.01879,"17.2":0.00055},P:{"4":0.10208,"20":0.16334,"21":0.30625,"22":2.0519,"23":0.10208,_:"5.0-5.4 6.2-6.4 8.2 12.0","7.2-7.4":0.19396,"9.2":0.02042,"10.1":0.02042,"11.1-11.2":0.06125,"13.0":0.06125,"14.0":0.05104,"15.0":0.02042,"16.0":0.14292,"17.0":0.02042,"18.0":0.11229,"19.0":0.42876},I:{"0":0.21639,"3":0,"4":0.00004,"2.1":0,"2.2":0.00007,"2.3":0,"4.1":0.00004,"4.2-4.3":0.00015,"4.4":0,"4.4.3-4.4.4":0.00065},A:{"10":0.0094,"11":0.05326,_:"6 7 8 9 5.5"},K:{"0":1.34215,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.02105,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.15435},Q:{"13.1":0.01403},O:{"0":1.15062},H:{"0":0.04},L:{"0":73.78861}}; diff --git a/node_modules/caniuse-lite/data/regions/PH.js b/node_modules/caniuse-lite/data/regions/PH.js new file mode 100644 index 00000000..303b871d --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/PH.js @@ -0,0 +1 @@ +module.exports={C:{"56":0.05106,"59":0.01135,"88":0.00567,"107":0.00567,"110":0.00567,"113":0.00567,"115":0.13048,"116":0.00567,"117":0.02269,"118":0.69778,"119":0.06808,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 108 109 111 112 114 120 121 122 3.5 3.6"},D:{"38":0.00567,"49":0.02269,"58":0.00567,"66":0.05673,"67":0.00567,"69":0.00567,"70":0.00567,"71":0.00567,"72":0.01702,"73":0.00567,"74":0.00567,"75":0.01702,"76":0.01135,"78":0.01135,"79":0.05106,"80":0.00567,"81":0.00567,"83":0.02269,"84":0.00567,"85":0.01135,"86":0.01135,"87":0.14183,"88":0.01702,"89":0.01135,"90":0.00567,"91":0.03404,"92":0.01702,"93":0.17019,"94":0.05106,"95":0.01135,"96":0.02269,"97":0.01135,"98":0.01135,"99":0.05106,"100":0.01135,"101":0.01135,"102":0.04538,"103":0.48788,"104":0.02269,"105":0.04538,"106":0.03971,"107":0.03971,"108":0.1475,"109":2.51881,"110":0.0624,"111":0.0624,"112":0.10779,"113":0.12481,"114":0.26096,"115":0.2099,"116":1.30479,"117":19.1407,"118":16.54814,"119":0.05106,"120":0.01135,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 60 61 62 63 64 65 68 77 121 122"},F:{"28":0.01135,"36":0.00567,"46":0.00567,"74":0.00567,"95":0.01135,"101":0.00567,"102":1.16864,"103":0.10211,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"17":0.00567,"18":0.00567,"90":0.00567,"92":0.02837,"100":0.00567,"103":0.03404,"108":0.00567,"109":0.07942,"110":0.00567,"111":0.00567,"112":0.00567,"113":0.02837,"114":0.02837,"115":0.03404,"116":0.07375,"117":4.85042,"118":3.9087,"119":0.01135,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 89 91 93 94 95 96 97 98 99 101 102 104 105 106 107"},E:{"13":0.00567,"14":0.01135,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 17.2","11.1":0.01135,"12.1":0.00567,"13.1":0.01135,"14.1":0.03404,"15.1":0.01702,"15.2-15.3":0.00567,"15.4":0.01135,"15.5":0.01702,"15.6":0.07942,"16.0":0.00567,"16.1":0.03971,"16.2":0.02269,"16.3":0.05673,"16.4":0.02269,"16.5":0.04538,"16.6":0.34038,"17.0":0.21557,"17.1":0.01135},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00045,"5.0-5.1":0.00045,"6.0-6.1":0.00135,"7.0-7.1":0.00314,"8.1-8.4":0.00045,"9.0-9.2":0.00314,"9.3":0.01078,"10.0-10.2":0.00045,"10.3":0.01572,"11.0-11.2":0.01437,"11.3-11.4":0.00494,"12.0-12.1":0.00404,"12.2-12.5":0.07141,"13.0-13.1":0.00225,"13.2":0.01213,"13.3":0.00449,"13.4-13.7":0.01437,"14.0-14.4":0.03952,"14.5-14.8":0.06378,"15.0-15.1":0.02515,"15.2-15.3":0.02875,"15.4":0.03189,"15.5":0.04536,"15.6-15.7":0.31395,"16.0":0.11588,"16.1":0.22188,"16.2":0.10824,"16.3":0.20077,"16.4":0.04312,"16.5":0.11498,"16.6-16.7":2.15364,"17.0":0.76714,"17.1":0.04626,"17.2":0.00135},P:{"4":0.15105,"20":0.02158,"21":0.03237,"22":0.48552,"23":0.08632,"5.0-5.4":0.01079,"6.2-6.4":0.01079,_:"7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0","17.0":0.01079,"18.0":0.01079,"19.0":0.01079},I:{"0":0.06027,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00018},A:{"11":0.49355,_:"6 7 8 9 10 5.5"},K:{"0":0.45001,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.08221},Q:{"13.1":0.00433},O:{"0":0.35481},H:{"0":0},L:{"0":37.99265}}; diff --git a/node_modules/caniuse-lite/data/regions/PK.js b/node_modules/caniuse-lite/data/regions/PK.js new file mode 100644 index 00000000..c30e8545 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/PK.js @@ -0,0 +1 @@ +module.exports={C:{"44":0.00282,"47":0.00282,"50":0.00282,"52":0.01128,"72":0.00282,"78":0.00282,"88":0.00282,"91":0.00282,"95":0.00282,"99":0.00564,"102":0.00564,"104":0.00282,"105":0.00846,"106":0.01128,"107":0.01128,"108":0.0141,"109":0.0141,"110":0.01128,"111":0.0141,"112":0.00282,"113":0.00282,"114":0.00564,"115":0.1974,"116":0.00564,"117":0.01974,"118":0.3948,"119":0.08742,"120":0.00282,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 48 49 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 94 96 97 98 100 101 103 121 122 3.5 3.6"},D:{"38":0.00282,"41":0.00282,"43":0.00282,"47":0.00564,"48":0.00564,"49":0.01128,"50":0.00282,"55":0.00282,"56":0.01692,"57":0.00282,"58":0.00282,"60":0.00564,"62":0.00282,"63":0.00564,"64":0.00564,"65":0.00846,"66":0.01128,"67":0.00282,"68":0.02256,"69":0.00846,"70":0.00846,"71":0.00282,"72":0.01128,"73":0.01974,"74":0.02538,"75":0.0141,"76":0.01128,"77":0.00846,"78":0.00846,"79":0.01692,"80":0.01974,"81":0.00846,"83":0.01974,"84":0.01128,"85":0.30738,"86":0.01692,"87":0.01974,"88":0.00564,"89":0.0141,"90":0.00846,"91":0.01692,"92":0.00846,"93":0.03666,"94":0.00564,"95":0.01974,"96":0.0141,"97":0.0141,"98":0.01128,"99":0.00846,"100":0.00846,"101":0.00846,"102":0.0282,"103":0.09588,"104":0.01692,"105":0.07896,"106":0.14382,"107":0.1833,"108":0.21432,"109":4.28358,"110":0.10716,"111":0.11844,"112":0.12408,"113":0.02256,"114":0.07614,"115":0.06768,"116":0.40608,"117":7.16562,"118":8.97042,"119":0.0282,"120":0.01128,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 44 45 46 51 52 53 54 59 61 121 122"},F:{"28":0.00846,"36":0.00282,"46":0.00564,"79":0.00846,"85":0.00564,"86":0.00282,"90":0.00282,"91":0.00564,"92":0.00564,"93":0.00564,"94":0.00846,"95":0.08178,"96":0.00282,"97":0.00282,"99":0.00282,"101":0.00282,"102":0.31584,"103":0.17202,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 87 88 89 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00564,"14":0.00282,"15":0.00282,"16":0.00564,"17":0.00282,"18":0.01692,"84":0.00282,"89":0.00282,"90":0.00282,"92":0.01974,"100":0.00282,"103":0.00564,"104":0.00282,"105":0.00282,"106":0.01128,"107":0.0282,"108":0.0282,"109":0.03948,"110":0.0282,"111":0.0141,"112":0.00564,"113":0.00282,"114":0.00564,"115":0.00846,"116":0.01974,"117":0.45966,"118":0.48786,"119":0.00282,_:"13 79 80 81 83 85 86 87 88 91 93 94 95 96 97 98 99 101 102"},E:{"13":0.00282,"14":0.00846,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 10.1 11.1 17.2","5.1":0.00846,"9.1":0.00282,"12.1":0.00282,"13.1":0.01128,"14.1":0.01974,"15.1":0.00282,"15.2-15.3":0.00282,"15.4":0.00564,"15.5":0.00564,"15.6":0.03384,"16.0":0.00282,"16.1":0.01692,"16.2":0.01974,"16.3":0.01974,"16.4":0.00846,"16.5":0.0141,"16.6":0.07614,"17.0":0.0564,"17.1":0.00282},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00036,"5.0-5.1":0.00036,"6.0-6.1":0.00107,"7.0-7.1":0.00249,"8.1-8.4":0.00036,"9.0-9.2":0.00249,"9.3":0.00855,"10.0-10.2":0.00036,"10.3":0.01246,"11.0-11.2":0.0114,"11.3-11.4":0.00392,"12.0-12.1":0.00321,"12.2-12.5":0.05662,"13.0-13.1":0.00178,"13.2":0.00962,"13.3":0.00356,"13.4-13.7":0.0114,"14.0-14.4":0.03134,"14.5-14.8":0.05057,"15.0-15.1":0.01994,"15.2-15.3":0.02279,"15.4":0.02529,"15.5":0.03597,"15.6-15.7":0.24893,"16.0":0.09188,"16.1":0.17593,"16.2":0.08583,"16.3":0.15919,"16.4":0.03419,"16.5":0.09117,"16.6-16.7":1.70763,"17.0":0.60827,"17.1":0.03668,"17.2":0.00107},P:{"4":0.19095,"20":0.03182,"21":0.07426,"22":0.60467,"23":0.10608,"5.0-5.4":0.01061,"6.2-6.4":0.01061,"7.2-7.4":0.02122,_:"8.2 9.2 10.1 12.0 14.0 15.0","11.1-11.2":0.01061,"13.0":0.01061,"16.0":0.02122,"17.0":0.05304,"18.0":0.01061,"19.0":0.02122},I:{"0":0.07143,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.00022},A:{"8":0.00911,"9":0.00304,"10":0.00304,"11":0.10326,_:"6 7 5.5"},K:{"0":1.43524,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.06462,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.04308},Q:{_:"13.1"},O:{"0":3.36742},H:{"0":0.13},L:{"0":63.80638}}; diff --git a/node_modules/caniuse-lite/data/regions/PL.js b/node_modules/caniuse-lite/data/regions/PL.js new file mode 100644 index 00000000..fd4ac7d4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/PL.js @@ -0,0 +1 @@ +module.exports={C:{"48":0.00671,"52":0.04026,"68":0.00336,"78":0.01007,"82":0.00336,"87":0.00671,"88":0.00336,"89":0.00336,"91":0.00336,"99":0.00336,"100":0.00336,"102":0.0302,"103":0.00336,"104":0.00336,"105":0.00336,"106":0.00671,"107":0.00336,"108":0.00671,"109":0.00336,"110":0.01007,"111":0.00671,"112":0.01342,"113":0.01007,"114":0.01342,"115":0.47977,"116":0.02013,"117":0.11743,"118":2.47935,"119":0.50325,"120":0.00336,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 83 84 85 86 90 92 93 94 95 96 97 98 101 121 122 3.5 3.6"},D:{"49":0.00671,"60":0.00336,"78":0.00336,"79":0.20466,"80":0.00336,"81":0.00336,"83":0.00336,"84":0.00336,"85":0.02349,"86":0.00336,"87":0.02349,"88":0.00336,"89":0.01007,"90":0.00336,"91":0.02684,"92":0.00336,"93":0.00336,"95":0.01007,"96":0.00336,"97":0.00336,"98":0.01007,"99":0.05704,"100":0.00671,"101":0.00336,"102":0.00336,"103":0.02349,"104":1.0065,"105":0.01007,"106":0.01342,"107":0.02013,"108":0.0302,"109":0.82869,"110":0.01342,"111":0.04697,"112":0.02349,"113":0.0302,"114":0.10736,"115":0.04697,"116":0.36234,"117":7.28706,"118":7.5823,"119":0.01007,"120":0.00336,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 94 121 122"},F:{"78":0.00336,"79":0.00336,"84":0.00336,"85":0.01007,"86":0.00336,"94":0.00336,"95":0.12749,"96":0.00336,"97":0.00336,"98":0.00336,"99":0.00671,"100":0.01007,"101":0.02349,"102":6.35437,"103":0.71462,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 81 82 83 87 88 89 90 91 92 93 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"92":0.00336,"107":0.00336,"108":0.00336,"109":0.05033,"110":0.00336,"111":0.00336,"112":0.00336,"113":0.00336,"114":0.01342,"115":0.01007,"116":0.02684,"117":0.98973,"118":1.03334,"119":0.00671,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106"},E:{"13":0.00336,"14":0.01007,"15":0.00336,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.00336,"13.1":0.01007,"14.1":0.0302,"15.1":0.00336,"15.2-15.3":0.00336,"15.4":0.01007,"15.5":0.01342,"15.6":0.05368,"16.0":0.01342,"16.1":0.02349,"16.2":0.02349,"16.3":0.03691,"16.4":0.02013,"16.5":0.05368,"16.6":0.19124,"17.0":0.19795,"17.1":0.01342},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00078,"5.0-5.1":0.00078,"6.0-6.1":0.00233,"7.0-7.1":0.00543,"8.1-8.4":0.00078,"9.0-9.2":0.00543,"9.3":0.01861,"10.0-10.2":0.00078,"10.3":0.02714,"11.0-11.2":0.02482,"11.3-11.4":0.00853,"12.0-12.1":0.00698,"12.2-12.5":0.1233,"13.0-13.1":0.00388,"13.2":0.02094,"13.3":0.00775,"13.4-13.7":0.02482,"14.0-14.4":0.06824,"14.5-14.8":0.11012,"15.0-15.1":0.04343,"15.2-15.3":0.04963,"15.4":0.05506,"15.5":0.07832,"15.6-15.7":0.54205,"16.0":0.20007,"16.1":0.38308,"16.2":0.18689,"16.3":0.34664,"16.4":0.07445,"16.5":0.19852,"16.6-16.7":3.71839,"17.0":1.32451,"17.1":0.07987,"17.2":0.00233},P:{"4":0.01017,"20":0.07119,"21":0.12203,"22":2.19662,"23":0.40678,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 10.1 12.0","9.2":0.01017,"11.1-11.2":0.01017,"13.0":0.01017,"14.0":0.02034,"15.0":0.01017,"16.0":0.03051,"17.0":0.02034,"18.0":0.03051,"19.0":0.06102},I:{"0":0.01983,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00006},A:{"8":0.00336,"11":0.01678,_:"6 7 9 10 5.5"},K:{"0":2.26595,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.48509},Q:{_:"13.1"},O:{"0":0.02658},H:{"0":0},L:{"0":54.10131}}; diff --git a/node_modules/caniuse-lite/data/regions/PM.js b/node_modules/caniuse-lite/data/regions/PM.js new file mode 100644 index 00000000..3f0a47fb --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/PM.js @@ -0,0 +1 @@ +module.exports={C:{"78":0.00448,"91":0.00896,"114":0.02689,"115":0.16583,"116":0.00448,"117":0.04482,"118":0.81572,"119":0.11653,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 120 121 122 3.5 3.6"},D:{"49":0.00448,"85":0.00448,"87":0.00448,"88":0.00896,"92":0.01345,"96":0.01793,"103":0.12998,"105":0.01345,"109":0.91433,"111":0.13446,"114":0.03137,"115":0.04482,"116":4.03828,"117":3.88141,"118":2.55026,"119":0.00448,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 86 89 90 91 93 94 95 97 98 99 100 101 102 104 106 107 108 110 112 113 120 121 122"},F:{"100":0.04034,"102":3.82763,"103":0.01345,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"109":0.00448,"116":0.01345,"117":1.22359,"118":1.12946,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 110 111 112 113 114 115 119"},E:{"14":0.01345,"15":0.01345,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 17.2","14.1":0.04482,"15.1":0.35408,"15.2-15.3":1.19669,"15.4":0.02241,"15.5":0.1748,"15.6":1.14739,"16.0":0.08068,"16.1":0.88744,"16.2":0.3989,"16.3":1.72557,"16.4":1.17428,"16.5":1.43872,"16.6":11.63975,"17.0":3.57664,"17.1":0.57818},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00439,"5.0-5.1":0.00439,"6.0-6.1":0.01318,"7.0-7.1":0.03076,"8.1-8.4":0.00439,"9.0-9.2":0.03076,"9.3":0.10546,"10.0-10.2":0.00439,"10.3":0.1538,"11.0-11.2":0.14062,"11.3-11.4":0.04834,"12.0-12.1":0.03955,"12.2-12.5":0.69869,"13.0-13.1":0.02197,"13.2":0.11865,"13.3":0.04394,"13.4-13.7":0.14062,"14.0-14.4":0.3867,"14.5-14.8":0.62399,"15.0-15.1":0.24608,"15.2-15.3":0.28123,"15.4":0.31199,"15.5":0.44382,"15.6-15.7":3.07161,"16.0":1.13373,"16.1":2.17078,"16.2":1.05902,"16.3":1.96425,"16.4":0.42185,"16.5":1.12494,"16.6-16.7":21.07062,"17.0":7.50545,"17.1":0.45261,"17.2":0.01318},P:{"22":0.80943,_:"4 20 21 23 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 13.0 14.0 15.0 16.0 17.0","12.0":0.21067,"18.0":0.09979,"19.0":0.01109},I:{"0":0.03842,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00012},A:{"11":0.00448,_:"6 7 8 9 10 5.5"},K:{"0":0.04414,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.03862},Q:{_:"13.1"},O:{"0":0.02759},H:{"0":0},L:{"0":10.07506}}; diff --git a/node_modules/caniuse-lite/data/regions/PN.js b/node_modules/caniuse-lite/data/regions/PN.js new file mode 100644 index 00000000..308060cd --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/PN.js @@ -0,0 +1 @@ +module.exports={C:{_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 3.5 3.6"},D:{"117":33.33,"118":66.67,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 119 120 121 122"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 15.2-15.3 15.4 15.5 15.6 16.0 16.1 16.2 16.3 16.4 16.5 16.6 17.0 17.1 17.2"},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0,"15.0-15.1":0,"15.2-15.3":0,"15.4":0,"15.5":0,"15.6-15.7":0,"16.0":0,"16.1":0,"16.2":0,"16.3":0,"16.4":0,"16.5":0,"16.6-16.7":0,"17.0":0,"17.1":0,"17.2":0},P:{_:"4 20 21 22 23 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0"},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{_:"0"},Q:{_:"13.1"},O:{_:"0"},H:{"0":0},L:{_:"0"}}; diff --git a/node_modules/caniuse-lite/data/regions/PR.js b/node_modules/caniuse-lite/data/regions/PR.js new file mode 100644 index 00000000..748ed6b7 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/PR.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.01151,"73":0.04604,"78":0.01535,"102":0.00384,"105":0.00384,"110":0.01919,"111":0.00384,"113":0.00384,"114":0.06907,"115":0.08825,"116":0.01535,"117":0.19185,"118":1.23168,"119":0.2072,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 106 107 108 109 112 120 121 122 3.5","3.6":0.00384},D:{"44":0.00384,"45":0.00384,"47":0.00384,"49":0.01535,"51":0.00384,"65":0.02686,"68":0.00384,"72":0.00384,"74":0.00384,"75":0.00384,"76":0.00384,"79":0.01919,"80":0.00767,"84":0.00384,"85":0.00384,"87":0.06139,"88":0.00384,"89":0.01535,"91":0.00767,"92":0.00384,"93":0.00767,"94":0.00384,"95":0.00384,"96":0.00384,"97":0.00384,"99":0.00384,"101":0.01151,"102":0.01151,"103":0.1343,"104":0.00767,"105":0.01151,"106":0.01535,"107":0.04221,"108":0.08058,"109":1.00529,"110":0.06139,"111":0.06907,"112":0.07674,"113":0.09209,"114":0.15732,"115":0.19185,"116":1.22784,"117":8.1306,"118":8.69081,"119":0.01919,"120":0.00384,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 46 48 50 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 69 70 71 73 77 78 81 83 86 90 98 100 121 122"},F:{"28":0.00384,"73":0.00384,"95":0.01151,"97":0.01151,"100":0.00384,"101":0.00384,"102":1.05134,"103":0.10744,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00384,"90":0.00384,"91":0.00384,"92":0.00767,"106":0.01919,"108":0.00384,"109":0.04604,"110":0.00384,"111":0.02302,"112":0.01535,"113":0.00767,"114":0.01919,"115":0.0307,"116":0.08825,"117":3.15785,"118":3.16936,"119":0.00767,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 93 94 95 96 97 98 99 100 101 102 103 104 105 107"},E:{"9":0.00384,"13":0.01535,"14":0.05756,"15":0.01919,_:"0 4 5 6 7 8 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.01151,"13.1":0.06907,"14.1":0.21487,"15.1":0.08441,"15.2-15.3":0.0307,"15.4":0.09209,"15.5":0.12662,"15.6":0.82112,"16.0":0.06523,"16.1":0.12662,"16.2":0.11127,"16.3":0.56788,"16.4":0.1343,"16.5":0.42591,"16.6":2.4058,"17.0":0.93623,"17.1":0.14581},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00271,"5.0-5.1":0.00271,"6.0-6.1":0.00813,"7.0-7.1":0.01896,"8.1-8.4":0.00271,"9.0-9.2":0.01896,"9.3":0.06502,"10.0-10.2":0.00271,"10.3":0.09482,"11.0-11.2":0.0867,"11.3-11.4":0.0298,"12.0-12.1":0.02438,"12.2-12.5":0.43077,"13.0-13.1":0.01355,"13.2":0.07315,"13.3":0.02709,"13.4-13.7":0.0867,"14.0-14.4":0.23841,"14.5-14.8":0.38471,"15.0-15.1":0.15172,"15.2-15.3":0.17339,"15.4":0.19236,"15.5":0.27363,"15.6-15.7":1.89377,"16.0":0.69899,"16.1":1.33837,"16.2":0.65293,"16.3":1.21104,"16.4":0.26009,"16.5":0.69357,"16.6-16.7":12.99088,"17.0":4.62741,"17.1":0.27905,"17.2":0.00813},P:{"4":0.17758,"20":0.06267,"21":0.22981,"22":2.37119,"23":0.55363,"5.0-5.4":0.01045,"6.2-6.4":0.01045,"7.2-7.4":0.02089,_:"8.2 9.2 10.1 12.0","11.1-11.2":0.02089,"13.0":0.02089,"14.0":0.01045,"15.0":0.01045,"16.0":0.06267,"17.0":0.02089,"18.0":0.07312,"19.0":0.04178},I:{"0":0.04905,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00015},A:{"8":0.01919,"10":0.00384,"11":0.03453,_:"6 7 9 5.5"},K:{"0":0.19105,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.31431},Q:{_:"13.1"},O:{"0":0.01849},H:{"0":0},L:{"0":31.50129}}; diff --git a/node_modules/caniuse-lite/data/regions/PS.js b/node_modules/caniuse-lite/data/regions/PS.js new file mode 100644 index 00000000..14081be3 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/PS.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.01192,"103":0.00397,"108":0.00795,"111":0.00397,"115":0.19473,"116":0.00795,"117":0.03974,"118":0.49278,"119":0.07551,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 104 105 106 107 109 110 112 113 114 120 121 122 3.5 3.6"},D:{"38":0.00397,"49":0.01192,"51":0.00397,"56":0.00397,"57":0.00397,"58":0.01192,"63":0.00795,"68":0.00397,"69":0.00397,"72":0.00397,"73":0.00397,"74":0.00397,"76":0.00397,"77":0.04769,"78":0.0159,"79":0.04769,"81":0.00795,"83":0.00795,"84":0.00795,"85":0.00397,"86":0.00795,"87":0.01987,"88":0.00397,"89":0.00795,"90":0.00397,"91":0.00397,"92":0.00397,"93":0.00795,"94":0.00397,"95":0.00795,"96":0.00795,"97":0.00795,"98":0.0159,"99":0.00795,"100":0.04769,"101":0.01192,"102":0.01987,"103":0.02384,"104":0.01192,"105":0.00795,"106":0.02384,"107":0.03179,"108":0.03179,"109":2.30889,"110":0.01987,"111":0.03179,"112":0.05564,"113":0.02782,"114":0.06358,"115":0.07551,"116":0.65968,"117":15.22439,"118":13.59903,"119":0.01192,"120":0.00397,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 52 53 54 55 59 60 61 62 64 65 66 67 70 71 75 80 121 122"},F:{"46":0.00795,"79":0.00397,"85":0.00397,"89":0.00397,"95":0.0159,"101":0.00397,"102":0.5802,"103":0.11922,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 86 87 88 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"16":0.00795,"17":0.00397,"18":0.01192,"84":0.00397,"92":0.00795,"106":0.01192,"108":0.00397,"109":0.01192,"111":0.00795,"112":0.00397,"113":0.00397,"114":0.01192,"115":0.0159,"116":0.03974,"117":1.4823,"118":1.45051,"119":0.00397,_:"12 13 14 15 79 80 81 83 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 107 110"},E:{"14":0.00795,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 16.0 17.2","5.1":0.02782,"11.1":0.00397,"12.1":0.00397,"13.1":0.00397,"14.1":0.03577,"15.1":0.00795,"15.2-15.3":0.00397,"15.4":0.00397,"15.5":0.01987,"15.6":0.06756,"16.1":0.03974,"16.2":0.02384,"16.3":0.05166,"16.4":0.01987,"16.5":0.06358,"16.6":0.29805,"17.0":0.22652,"17.1":0.00397},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00143,"5.0-5.1":0.00143,"6.0-6.1":0.00428,"7.0-7.1":0.01,"8.1-8.4":0.00143,"9.0-9.2":0.01,"9.3":0.03427,"10.0-10.2":0.00143,"10.3":0.04998,"11.0-11.2":0.04569,"11.3-11.4":0.01571,"12.0-12.1":0.01285,"12.2-12.5":0.22704,"13.0-13.1":0.00714,"13.2":0.03855,"13.3":0.01428,"13.4-13.7":0.04569,"14.0-14.4":0.12566,"14.5-14.8":0.20277,"15.0-15.1":0.07996,"15.2-15.3":0.09139,"15.4":0.10138,"15.5":0.14422,"15.6-15.7":0.99812,"16.0":0.3684,"16.1":0.70539,"16.2":0.34413,"16.3":0.63828,"16.4":0.13708,"16.5":0.36555,"16.6-16.7":6.8469,"17.0":2.4389,"17.1":0.14708,"17.2":0.00428},P:{"4":0.0408,"20":0.0816,"21":0.1122,"22":1.72377,"23":0.2346,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0","7.2-7.4":0.0306,"11.1-11.2":0.0408,"13.0":0.0408,"14.0":0.0408,"15.0":0.0102,"16.0":0.0714,"17.0":0.0408,"18.0":0.0306,"19.0":0.0918},I:{"0":0.06594,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.0002},A:{"11":0.03974,_:"6 7 8 9 10 5.5"},K:{"0":0.1687,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.08435},Q:{_:"13.1"},O:{"0":0.04218},H:{"0":0},L:{"0":44.3512}}; diff --git a/node_modules/caniuse-lite/data/regions/PT.js b/node_modules/caniuse-lite/data/regions/PT.js new file mode 100644 index 00000000..6d6e6c0c --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/PT.js @@ -0,0 +1 @@ +module.exports={C:{"7":0.00612,"50":0.00612,"52":0.03059,"54":0.00612,"78":0.01223,"82":0.00612,"83":0.01223,"91":0.00612,"95":0.00612,"97":0.00612,"102":0.01223,"103":0.00612,"104":0.00612,"106":0.00612,"108":0.00612,"111":0.01223,"112":0.00612,"113":0.00612,"114":0.00612,"115":0.19574,"116":0.01835,"117":0.16516,"118":2.02473,"119":0.44654,_:"2 3 4 5 6 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 53 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 84 85 86 87 88 89 90 92 93 94 96 98 99 100 101 105 107 109 110 120 121 122 3.5 3.6"},D:{"38":0.00612,"47":0.00612,"49":0.02447,"55":0.00612,"57":0.00612,"60":0.02447,"63":0.01835,"76":0.00612,"78":0.00612,"79":0.02447,"80":0.01223,"81":0.00612,"83":0.00612,"85":0.01835,"86":0.00612,"87":0.02447,"88":0.01223,"89":0.06729,"90":0.01223,"91":0.07952,"92":0.00612,"93":0.0734,"94":0.00612,"95":0.00612,"96":0.01223,"98":0.00612,"99":0.01223,"100":0.02447,"101":0.00612,"102":0.01223,"103":0.0734,"104":0.01223,"105":0.02447,"106":0.02447,"107":0.06117,"108":0.04282,"109":1.32127,"110":0.02447,"111":0.02447,"112":0.05505,"113":0.0367,"114":0.20798,"115":0.26915,"116":1.05824,"117":17.43957,"118":18.98717,"119":0.03059,"120":0.00612,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 53 54 56 58 59 61 62 64 65 66 67 68 69 70 71 72 73 74 75 77 84 97 121 122"},F:{"28":0.00612,"85":0.00612,"95":0.03059,"96":0.00612,"99":0.00612,"100":0.00612,"101":0.01223,"102":6.4779,"103":0.5383,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00612,"13":0.00612,"14":0.00612,"15":0.00612,"92":0.01223,"103":0.00612,"106":0.00612,"107":0.00612,"108":0.01223,"109":0.09176,"110":0.00612,"111":0.00612,"112":0.00612,"113":0.01223,"114":0.05505,"115":0.01835,"116":0.0734,"117":2.97286,"118":3.51728,"119":0.01835,_:"16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 104 105"},E:{"13":0.00612,"14":0.03059,"15":0.01223,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.00612,"13.1":0.0734,"14.1":0.15293,"15.1":0.01223,"15.2-15.3":0.01835,"15.4":0.02447,"15.5":0.04282,"15.6":0.20798,"16.0":0.03059,"16.1":0.11011,"16.2":0.06729,"16.3":0.17128,"16.4":0.09787,"16.5":0.22021,"16.6":0.85638,"17.0":0.65452,"17.1":0.0367},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00112,"5.0-5.1":0.00112,"6.0-6.1":0.00335,"7.0-7.1":0.00781,"8.1-8.4":0.00112,"9.0-9.2":0.00781,"9.3":0.02678,"10.0-10.2":0.00112,"10.3":0.03905,"11.0-11.2":0.0357,"11.3-11.4":0.01227,"12.0-12.1":0.01004,"12.2-12.5":0.17739,"13.0-13.1":0.00558,"13.2":0.03012,"13.3":0.01116,"13.4-13.7":0.0357,"14.0-14.4":0.09818,"14.5-14.8":0.15843,"15.0-15.1":0.06248,"15.2-15.3":0.0714,"15.4":0.07921,"15.5":0.11268,"15.6-15.7":0.77987,"16.0":0.28785,"16.1":0.55115,"16.2":0.26888,"16.3":0.49871,"16.4":0.10711,"16.5":0.28562,"16.6-16.7":5.34972,"17.0":1.90559,"17.1":0.11492,"17.2":0.00335},P:{"4":0.021,"20":0.0105,"21":0.04199,"22":1.23882,"23":0.28346,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 14.0 15.0","12.0":0.0105,"13.0":0.0105,"16.0":0.0105,"17.0":0.0105,"18.0":0.0105,"19.0":0.021},I:{"0":0.05021,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00015},A:{"8":0.00765,"9":0.00765,"11":0.07646,_:"6 7 10 5.5"},K:{"0":0.26398,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.23292},Q:{_:"13.1"},O:{"0":0.11258},H:{"0":0},L:{"0":25.6693}}; diff --git a/node_modules/caniuse-lite/data/regions/PW.js b/node_modules/caniuse-lite/data/regions/PW.js new file mode 100644 index 00000000..1b05f517 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/PW.js @@ -0,0 +1 @@ +module.exports={C:{"115":0.00472,"116":0.01417,"117":0.00472,"118":0.65636,"119":0.07555,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 120 121 122 3.5 3.6"},D:{"75":0.00472,"79":0.07555,"83":0.01417,"87":0.1936,"92":0.00472,"95":0.00472,"97":0.00472,"102":0.00472,"103":0.09916,"104":0.00472,"107":0.01417,"109":0.76024,"112":0.65636,"114":0.02833,"115":0.01417,"116":1.30799,"117":12.15915,"118":22.00924,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 76 77 78 80 81 84 85 86 88 89 90 91 93 94 96 98 99 100 101 105 106 108 110 111 113 119 120 121 122"},F:{"102":0.07555,"103":0.23138,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"108":0.00472,"109":0.12749,"111":0.00472,"112":0.02833,"116":0.02833,"117":1.4166,"118":1.69992,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 110 113 114 115 119"},E:{"11":0.00472,"14":0.01889,_:"0 4 5 6 7 8 9 10 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.1 15.2-15.3 15.4 16.0 17.2","13.1":0.03305,"14.1":0.10388,"15.5":0.05666,"15.6":0.14638,"16.1":0.56664,"16.2":0.00472,"16.3":0.00472,"16.4":0.07083,"16.5":0.13222,"16.6":1.25605,"17.0":0.25971,"17.1":0.00472},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0013,"5.0-5.1":0.0013,"6.0-6.1":0.0039,"7.0-7.1":0.0091,"8.1-8.4":0.0013,"9.0-9.2":0.0091,"9.3":0.03119,"10.0-10.2":0.0013,"10.3":0.04549,"11.0-11.2":0.04159,"11.3-11.4":0.0143,"12.0-12.1":0.0117,"12.2-12.5":0.20666,"13.0-13.1":0.0065,"13.2":0.03509,"13.3":0.013,"13.4-13.7":0.04159,"14.0-14.4":0.11438,"14.5-14.8":0.18456,"15.0-15.1":0.07278,"15.2-15.3":0.08318,"15.4":0.09228,"15.5":0.13127,"15.6-15.7":0.90851,"16.0":0.33533,"16.1":0.64206,"16.2":0.31323,"16.3":0.58098,"16.4":0.12477,"16.5":0.33273,"16.6-16.7":6.23218,"17.0":2.21993,"17.1":0.13387,"17.2":0.0039},P:{"20":0.02068,"21":0.02068,"22":2.32692,"23":1.00316,_:"4 5.0-5.4 6.2-6.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 18.0","7.2-7.4":0.70325,"17.0":0.02068,"19.0":0.02068},I:{"0":0.01575,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00005},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0.14248,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.06332},Q:{"13.1":0.04222},O:{"0":0.09499},H:{"0":0},L:{"0":36.00616}}; diff --git a/node_modules/caniuse-lite/data/regions/PY.js b/node_modules/caniuse-lite/data/regions/PY.js new file mode 100644 index 00000000..0f9a3fc4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/PY.js @@ -0,0 +1 @@ +module.exports={C:{"7":0.01813,"17":0.00302,"24":0.00302,"30":0.00302,"35":0.01813,"42":0.01209,"43":0.00302,"45":0.00907,"47":0.00302,"50":0.03626,"52":0.16319,"54":0.04231,"59":0.00302,"60":0.00302,"61":0.00302,"64":0.00302,"65":0.00302,"66":0.00302,"73":0.02418,"78":0.00302,"80":0.00302,"88":0.01511,"89":0.00302,"93":0.00604,"98":0.00604,"102":0.01511,"103":0.00907,"107":0.00302,"108":0.00302,"110":0.00302,"111":0.00302,"113":0.00604,"114":0.00604,"115":0.3022,"116":0.00907,"117":0.0272,"118":0.80687,"119":0.13599,_:"2 3 4 5 6 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 25 26 27 28 29 31 32 33 34 36 37 38 39 40 41 44 46 48 49 51 53 55 56 57 58 62 63 67 68 69 70 71 72 74 75 76 77 79 81 82 83 84 85 86 87 90 91 92 94 95 96 97 99 100 101 104 105 106 109 112 120 121 122 3.5 3.6"},D:{"11":0.0272,"31":0.00302,"38":0.00302,"39":0.00302,"43":0.00302,"44":0.00302,"45":0.00302,"46":0.00302,"47":0.02418,"49":0.01813,"51":0.00302,"55":0.01813,"57":0.03929,"60":0.11484,"64":0.01511,"65":0.01209,"67":0.00302,"68":0.01511,"69":0.01209,"70":0.00302,"71":0.00302,"73":0.01813,"74":0.00302,"75":0.00302,"77":0.00302,"78":0.00302,"79":0.03626,"80":0.00302,"81":0.00604,"83":0.01209,"84":0.00604,"85":0.00604,"86":0.00604,"87":0.55605,"88":0.00907,"89":0.03022,"90":0.00604,"91":0.40495,"92":0.00302,"93":0.01511,"94":0.00302,"95":0.00302,"96":0.00907,"97":0.01209,"98":0.00302,"99":0.00907,"100":0.00604,"101":0.00302,"102":0.01813,"103":0.02418,"104":0.00907,"105":0.00907,"106":0.00604,"107":0.02418,"108":0.03324,"109":1.89177,"110":0.00907,"111":0.03022,"112":0.03929,"113":0.01813,"114":0.06044,"115":0.06951,"116":0.57418,"117":8.80006,"118":8.5855,"119":0.01209,"120":0.00907,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 40 41 42 48 50 52 53 54 56 58 59 61 62 63 66 72 76 121 122"},F:{"28":0.00302,"85":0.00907,"95":0.02418,"100":0.00302,"101":0.00302,"102":1.24809,"103":0.12995,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.01813,"13":0.04231,"14":0.04231,"15":0.02115,"17":0.00604,"18":0.00604,"85":0.00302,"91":0.00302,"92":0.00907,"96":0.00302,"100":0.00302,"101":0.04231,"102":0.00604,"103":0.00907,"107":0.00302,"108":0.00302,"109":0.03626,"110":0.01511,"111":0.00302,"112":0.00302,"113":0.00907,"114":0.01813,"115":0.01511,"116":0.03929,"117":1.4143,"118":1.45358,"119":0.00907,_:"16 79 80 81 83 84 86 87 88 89 90 93 94 95 97 98 99 104 105 106"},E:{"8":0.00302,"9":0.00604,"13":0.02418,"14":0.00302,"15":0.00302,_:"0 4 5 6 7 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 17.2","5.1":0.00907,"13.1":0.00907,"14.1":0.0272,"15.1":0.00302,"15.2-15.3":0.00604,"15.4":0.02418,"15.5":0.00604,"15.6":0.03626,"16.0":0.00604,"16.1":0.0272,"16.2":0.00907,"16.3":0.03929,"16.4":0.00604,"16.5":0.02418,"16.6":0.275,"17.0":0.13599,"17.1":0.00907},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00066,"5.0-5.1":0.00066,"6.0-6.1":0.00198,"7.0-7.1":0.00462,"8.1-8.4":0.00066,"9.0-9.2":0.00462,"9.3":0.01584,"10.0-10.2":0.00066,"10.3":0.0231,"11.0-11.2":0.02112,"11.3-11.4":0.00726,"12.0-12.1":0.00594,"12.2-12.5":0.10496,"13.0-13.1":0.0033,"13.2":0.01782,"13.3":0.0066,"13.4-13.7":0.02112,"14.0-14.4":0.05809,"14.5-14.8":0.09374,"15.0-15.1":0.03697,"15.2-15.3":0.04225,"15.4":0.04687,"15.5":0.06667,"15.6-15.7":0.46142,"16.0":0.17031,"16.1":0.3261,"16.2":0.15909,"16.3":0.29507,"16.4":0.06337,"16.5":0.16899,"16.6-16.7":3.16527,"17.0":1.12748,"17.1":0.06799,"17.2":0.00198},P:{"4":0.36758,"20":0.11232,"21":0.26548,"22":2.48119,"23":0.45948,"5.0-5.4":0.01021,_:"6.2-6.4 8.2 10.1","7.2-7.4":0.5718,"9.2":0.02042,"11.1-11.2":0.04084,"12.0":0.01021,"13.0":0.08169,"14.0":0.03063,"15.0":0.02042,"16.0":0.23485,"17.0":0.14295,"18.0":0.05105,"19.0":0.10211},I:{"0":0.09025,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00027},A:{"7":0.00302,"8":0.01511,"9":0.03929,"10":0.00302,"11":0.07857,_:"6 5.5"},K:{"0":0.35286,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.11165},Q:{_:"13.1"},O:{"0":0.0628},H:{"0":0.01},L:{"0":58.51686}}; diff --git a/node_modules/caniuse-lite/data/regions/QA.js b/node_modules/caniuse-lite/data/regions/QA.js new file mode 100644 index 00000000..9ca55883 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/QA.js @@ -0,0 +1 @@ +module.exports={C:{"5":0.26019,"52":0.00266,"66":0.00266,"68":0.00531,"78":0.00266,"88":0.02124,"96":0.01328,"98":0.00266,"106":0.00266,"107":0.00266,"111":0.00266,"113":0.00266,"114":0.00266,"115":0.05045,"116":0.00266,"117":0.02655,"118":0.46463,"119":0.07434,_:"2 3 4 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 95 97 99 100 101 102 103 104 105 108 109 110 112 120 121 122 3.5 3.6"},D:{"38":0.00531,"41":0.00266,"49":0.00531,"53":0.00531,"56":0.00266,"58":0.09824,"65":0.00266,"68":0.00797,"69":0.00797,"71":0.00531,"73":0.00266,"75":0.00266,"76":0.00531,"78":0.00266,"79":0.04248,"80":0.00266,"83":0.00531,"84":0.00531,"85":0.00266,"86":0.00797,"87":0.01328,"88":0.01859,"89":0.00266,"91":0.00266,"92":0.00266,"93":0.00531,"94":0.00531,"95":0.01328,"96":0.00531,"97":0.00797,"98":0.00531,"99":0.01328,"100":0.00797,"101":0.01062,"102":0.00797,"103":0.077,"104":0.01328,"105":0.04514,"106":0.00797,"107":0.00531,"108":0.03452,"109":0.98235,"110":0.01062,"111":0.01859,"112":0.0239,"113":0.02921,"114":0.08496,"115":0.09824,"116":0.78323,"117":7.85349,"118":7.26143,"119":0.02921,"120":0.00266,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 46 47 48 50 51 52 54 55 57 59 60 61 62 63 64 66 67 70 72 74 77 81 90 121 122"},F:{"28":0.00531,"46":0.01328,"95":0.01062,"99":0.00266,"100":0.00266,"101":0.02655,"102":0.67968,"103":0.09558,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"13":0.01062,"18":0.00531,"84":0.00266,"92":0.01328,"100":0.00266,"103":0.00266,"107":0.00266,"108":0.00266,"109":0.01593,"110":0.00266,"111":0.00266,"112":0.01062,"113":0.01328,"114":0.01062,"115":0.02921,"116":0.0239,"117":1.67265,"118":1.44698,"119":0.00797,_:"12 14 15 16 17 79 80 81 83 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 104 105 106"},E:{"13":0.00266,"14":0.01593,"15":0.00266,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.00797,"12.1":0.00531,"13.1":0.02921,"14.1":0.06107,"15.1":0.00797,"15.2-15.3":0.01062,"15.4":0.03983,"15.5":0.0531,"15.6":0.20444,"16.0":0.01593,"16.1":0.03452,"16.2":0.04514,"16.3":0.13806,"16.4":0.11151,"16.5":0.20975,"16.6":0.77261,"17.0":0.40091,"17.1":0.02124},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00124,"5.0-5.1":0.00124,"6.0-6.1":0.00373,"7.0-7.1":0.00871,"8.1-8.4":0.00124,"9.0-9.2":0.00871,"9.3":0.02988,"10.0-10.2":0.00124,"10.3":0.04357,"11.0-11.2":0.03984,"11.3-11.4":0.01369,"12.0-12.1":0.0112,"12.2-12.5":0.19795,"13.0-13.1":0.00622,"13.2":0.03361,"13.3":0.01245,"13.4-13.7":0.03984,"14.0-14.4":0.10956,"14.5-14.8":0.17679,"15.0-15.1":0.06972,"15.2-15.3":0.07968,"15.4":0.08839,"15.5":0.12574,"15.6-15.7":0.87024,"16.0":0.3212,"16.1":0.61502,"16.2":0.30004,"16.3":0.5565,"16.4":0.11952,"16.5":0.31871,"16.6-16.7":5.96967,"17.0":2.12642,"17.1":0.12823,"17.2":0.00373},P:{"4":0.05183,"20":0.08292,"21":0.08292,"22":1.42001,"23":0.25913,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 13.0 15.0","7.2-7.4":0.04146,"11.1-11.2":0.01037,"14.0":0.01037,"16.0":0.02073,"17.0":0.02073,"18.0":0.01037,"19.0":0.0311},I:{"0":0.05846,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00018},A:{"11":0.03186,_:"6 7 8 9 10 5.5"},K:{"0":2.39447,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.11752},Q:{_:"13.1"},O:{"0":5.53079},H:{"0":0},L:{"0":51.79951}}; diff --git a/node_modules/caniuse-lite/data/regions/RE.js b/node_modules/caniuse-lite/data/regions/RE.js new file mode 100644 index 00000000..f014e5dc --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/RE.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.00411,"55":0.00822,"56":0.00411,"78":0.11508,"82":0.00411,"85":0.00822,"88":0.00822,"89":0.04521,"91":0.04932,"95":0.00411,"98":0.00411,"99":0.00411,"100":0.00411,"102":0.09042,"104":0.00411,"105":0.00411,"109":0.00411,"110":0.00411,"111":0.00411,"112":0.00411,"113":0.01233,"114":0.00411,"115":0.67815,"116":0.02055,"117":0.18906,"118":3.21402,"119":0.57129,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 84 86 87 90 92 93 94 96 97 101 103 106 107 108 120 121 122 3.5 3.6"},D:{"38":0.00411,"43":0.01644,"49":0.00822,"53":0.00822,"58":0.00411,"61":0.00822,"67":0.01233,"68":0.00411,"71":0.02055,"74":0.00411,"78":0.00411,"79":0.02877,"81":0.01644,"83":0.02466,"84":0.02466,"85":0.00822,"86":0.00411,"87":0.03699,"88":0.00822,"89":0.00411,"90":0.00411,"91":0.00822,"92":0.00411,"94":0.0411,"96":0.00411,"97":0.00822,"99":0.00411,"100":0.00411,"102":0.00411,"103":0.12741,"105":0.04521,"106":0.02877,"107":0.05343,"108":0.00411,"109":1.00695,"110":0.00822,"111":0.01233,"112":0.02877,"113":0.02055,"114":0.1233,"115":0.0822,"116":1.22067,"117":9.56397,"118":9.09954,"119":0.00411,"120":0.00411,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 47 48 50 51 52 54 55 56 57 59 60 62 63 64 65 66 69 70 72 73 75 76 77 80 93 95 98 101 104 121 122"},F:{"46":0.00411,"93":0.00411,"95":0.01233,"101":0.02055,"102":1.75086,"103":0.2877,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"16":0.00411,"17":0.00411,"18":0.00411,"92":0.01644,"100":0.00411,"104":0.00411,"107":0.00411,"108":0.00411,"109":0.0822,"110":0.00822,"111":0.00411,"112":0.01644,"113":0.00822,"114":0.05754,"115":0.03699,"116":0.0822,"117":3.09072,"118":3.10716,"119":0.00411,_:"12 13 14 15 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103 105 106"},E:{"14":0.03699,"15":0.00822,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.00822,"13.1":0.28359,"14.1":0.19728,"15.1":0.05343,"15.2-15.3":0.00822,"15.4":0.07398,"15.5":0.1233,"15.6":0.40278,"16.0":0.0411,"16.1":0.05754,"16.2":0.06165,"16.3":0.26715,"16.4":0.05754,"16.5":0.16851,"16.6":1.18779,"17.0":0.63705,"17.1":0.06987,"17.2":0.00411},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00178,"5.0-5.1":0.00178,"6.0-6.1":0.00533,"7.0-7.1":0.01243,"8.1-8.4":0.00178,"9.0-9.2":0.01243,"9.3":0.04262,"10.0-10.2":0.00178,"10.3":0.06215,"11.0-11.2":0.05683,"11.3-11.4":0.01953,"12.0-12.1":0.01598,"12.2-12.5":0.28236,"13.0-13.1":0.00888,"13.2":0.04795,"13.3":0.01776,"13.4-13.7":0.05683,"14.0-14.4":0.15627,"14.5-14.8":0.25217,"15.0-15.1":0.09945,"15.2-15.3":0.11365,"15.4":0.12608,"15.5":0.17936,"15.6-15.7":1.24131,"16.0":0.45817,"16.1":0.87726,"16.2":0.42798,"16.3":0.7938,"16.4":0.17048,"16.5":0.45461,"16.6-16.7":8.51513,"17.0":3.03313,"17.1":0.18291,"17.2":0.00533},P:{"4":0.03097,"20":0.08259,"21":0.28908,"22":2.46749,"23":0.44394,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0","7.2-7.4":0.0413,"11.1-11.2":0.0413,"13.0":0.01032,"14.0":0.06195,"15.0":0.01032,"16.0":0.0413,"17.0":0.03097,"18.0":0.03097,"19.0":0.05162},I:{"0":0.04102,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00012},A:{"11":0.09453,_:"6 7 8 9 10 5.5"},K:{"0":0.32573,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.32984},Q:{_:"13.1"},O:{"0":0.02356},H:{"0":0.01},L:{"0":38.05744}}; diff --git a/node_modules/caniuse-lite/data/regions/RO.js b/node_modules/caniuse-lite/data/regions/RO.js new file mode 100644 index 00000000..f7467a0d --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/RO.js @@ -0,0 +1 @@ +module.exports={C:{"33":0.00445,"48":0.05781,"52":0.04892,"56":0.00445,"68":0.00445,"72":0.01779,"78":0.00889,"83":0.00889,"86":0.00889,"87":0.00445,"88":0.00445,"95":0.00445,"96":0.00445,"99":0.00445,"100":0.00445,"102":0.02224,"103":0.08449,"104":0.00889,"105":0.00889,"106":0.00445,"108":0.16454,"109":0.00445,"110":0.00445,"111":0.00445,"112":0.00445,"113":0.01334,"114":0.00889,"115":0.42247,"116":0.00889,"117":0.06226,"118":1.68541,"119":0.49806,"120":0.00445,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 84 85 89 90 91 92 93 94 97 98 101 107 121 122 3.5 3.6"},D:{"28":0.00889,"38":0.00445,"41":0.00445,"49":0.03113,"51":0.01334,"58":0.00445,"60":0.33353,"61":0.00889,"70":0.00889,"71":0.00445,"72":0.00445,"73":0.00445,"74":0.00445,"75":0.00445,"76":0.00889,"77":0.00445,"78":0.00445,"79":0.03558,"80":0.00445,"81":0.00889,"83":0.00445,"84":0.00445,"85":0.02224,"86":0.00889,"87":0.02224,"88":0.00889,"89":0.00445,"90":0.00889,"91":0.03558,"92":0.00445,"93":0.00445,"94":0.00445,"95":0.00445,"96":0.00445,"97":0.00445,"98":0.00889,"99":0.01334,"100":0.05336,"101":0.00445,"102":0.01334,"103":0.02224,"104":0.00445,"105":0.03113,"106":0.00889,"107":0.01779,"108":0.03113,"109":1.61426,"110":0.02224,"111":0.03558,"112":0.04447,"113":0.03113,"114":0.11118,"115":0.08449,"116":0.70707,"117":14.72402,"118":15.81353,"119":0.01334,"120":0.00445,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 46 47 48 50 52 53 54 55 56 57 59 62 63 64 65 66 67 68 69 121 122"},F:{"46":0.00445,"79":0.00445,"82":0.00445,"85":0.01334,"95":0.06226,"99":0.02668,"100":0.03558,"101":0.00445,"102":1.72988,"103":0.35131,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 84 86 87 88 89 90 91 92 93 94 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"14":0.00445,"18":0.00445,"92":0.00445,"106":0.00445,"107":0.00445,"108":0.01334,"109":0.03113,"110":0.00445,"112":0.00445,"113":0.00889,"114":0.00889,"115":0.02224,"116":0.03558,"117":1.05394,"118":1.07173,"119":0.00445,_:"12 13 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 111"},E:{"14":0.01334,"15":0.00445,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 10.1 11.1 17.2","9.1":0.00445,"12.1":0.00445,"13.1":0.02224,"14.1":0.02668,"15.1":0.00889,"15.2-15.3":0.00445,"15.4":0.00889,"15.5":0.01334,"15.6":0.07115,"16.0":0.00889,"16.1":0.02668,"16.2":0.02224,"16.3":0.04447,"16.4":0.02224,"16.5":0.05781,"16.6":0.25348,"17.0":0.20456,"17.1":0.01779},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00125,"5.0-5.1":0.00125,"6.0-6.1":0.00374,"7.0-7.1":0.00872,"8.1-8.4":0.00125,"9.0-9.2":0.00872,"9.3":0.02989,"10.0-10.2":0.00125,"10.3":0.04359,"11.0-11.2":0.03986,"11.3-11.4":0.0137,"12.0-12.1":0.01121,"12.2-12.5":0.19804,"13.0-13.1":0.00623,"13.2":0.03363,"13.3":0.01246,"13.4-13.7":0.03986,"14.0-14.4":0.10961,"14.5-14.8":0.17687,"15.0-15.1":0.06975,"15.2-15.3":0.07971,"15.4":0.08843,"15.5":0.1258,"15.6-15.7":0.87063,"16.0":0.32135,"16.1":0.6153,"16.2":0.30017,"16.3":0.55676,"16.4":0.11957,"16.5":0.31886,"16.6-16.7":5.97235,"17.0":2.12738,"17.1":0.12829,"17.2":0.00374},P:{"4":0.12193,"20":0.30482,"21":0.12193,"22":2.5402,"23":0.47756,_:"5.0-5.4 6.2-6.4 8.2 10.1 12.0","7.2-7.4":0.01016,"9.2":0.02032,"11.1-11.2":0.03048,"13.0":0.03048,"14.0":0.02032,"15.0":0.01016,"16.0":0.03048,"17.0":0.02032,"18.0":0.02032,"19.0":0.06096},I:{"0":0.13812,"3":0,"4":0.00003,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00003,"4.2-4.3":0.0001,"4.4":0,"4.4.3-4.4.4":0.00042},A:{"11":0.04892,_:"6 7 8 9 10 5.5"},K:{"0":0.30097,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.19991},Q:{_:"13.1"},O:{"0":0.03887},H:{"0":0.01},L:{"0":39.05713}}; diff --git a/node_modules/caniuse-lite/data/regions/RS.js b/node_modules/caniuse-lite/data/regions/RS.js new file mode 100644 index 00000000..c08fc5e9 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/RS.js @@ -0,0 +1 @@ +module.exports={C:{"18":0.03134,"35":0.00392,"44":0.01175,"48":0.01567,"52":0.1097,"56":0.00784,"60":0.00392,"61":0.00392,"65":0.00784,"67":0.00392,"68":0.00784,"72":0.00784,"73":0.01175,"75":0.00784,"77":0.00392,"78":0.01959,"80":0.00784,"81":0.00784,"82":0.00392,"84":0.00392,"88":0.02351,"91":0.00784,"92":0.00392,"94":0.00392,"96":0.00392,"97":0.00392,"99":0.01175,"100":0.00392,"101":0.00392,"102":0.01567,"103":0.00784,"104":0.00392,"105":0.00392,"106":0.00392,"107":0.03526,"108":0.00392,"109":0.00784,"110":0.00392,"111":0.00784,"112":0.02351,"113":0.03918,"114":0.01175,"115":1.18715,"116":0.03526,"117":0.09795,"118":2.21759,"119":0.45449,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 42 43 45 46 47 49 50 51 53 54 55 57 58 59 62 63 64 66 69 70 71 74 76 79 83 85 86 87 89 90 93 95 98 120 121 122 3.5 3.6"},D:{"26":0.00392,"31":0.00392,"33":0.00392,"34":0.00392,"38":0.00784,"41":0.00392,"43":0.00392,"47":0.00392,"48":0.00392,"49":0.05485,"53":0.00784,"55":0.00392,"56":0.00392,"64":0.00392,"65":0.00392,"68":0.05485,"69":0.00392,"70":0.00784,"71":0.00392,"72":0.00392,"73":0.00392,"74":0.00392,"75":0.01175,"76":0.00392,"77":0.00392,"78":0.02743,"79":0.21549,"80":0.00784,"81":0.02351,"83":0.02743,"84":0.01959,"85":0.05877,"86":0.00784,"87":0.06661,"88":0.01959,"89":0.01567,"90":0.01959,"91":0.00784,"92":0.01959,"93":0.00784,"94":0.01567,"95":0.01567,"96":0.01959,"97":0.01567,"98":0.01175,"99":0.01959,"100":0.01959,"101":0.01567,"102":0.01567,"103":0.05485,"104":0.01959,"105":0.03918,"106":0.05093,"107":0.06661,"108":0.09403,"109":4.59581,"110":0.08228,"111":0.03526,"112":0.07052,"113":0.0431,"114":0.10579,"115":0.08228,"116":0.69349,"117":9.76757,"118":10.46106,"119":0.02351,"120":0.00392,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 32 35 36 37 39 40 42 44 45 46 50 51 52 54 57 58 59 60 61 62 63 66 67 121 122"},F:{"28":0.01175,"36":0.00392,"40":0.00392,"46":0.00784,"48":0.00392,"57":0.00392,"70":0.00392,"79":0.00392,"82":0.01567,"85":0.03134,"86":0.00392,"87":0.00784,"90":0.00392,"91":0.00392,"95":0.26642,"96":0.00392,"97":0.00392,"99":0.00392,"100":0.00392,"101":0.00784,"102":1.49276,"103":0.47016,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 49 50 51 52 53 54 55 56 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 80 81 83 84 88 89 92 93 94 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00784,"85":0.00392,"92":0.00392,"108":0.01959,"109":0.03918,"110":0.01175,"111":0.01567,"112":0.00392,"113":0.00392,"114":0.01175,"115":0.01567,"116":0.03134,"117":0.88547,"118":0.92857,"119":0.00392,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107"},E:{"13":0.00392,"14":0.01959,"15":0.01175,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 17.2","9.1":0.00392,"11.1":0.00392,"12.1":0.00392,"13.1":0.05485,"14.1":0.03918,"15.1":0.00392,"15.2-15.3":0.00392,"15.4":0.01567,"15.5":0.01959,"15.6":0.10187,"16.0":0.01175,"16.1":0.01175,"16.2":0.01567,"16.3":0.03134,"16.4":0.01959,"16.5":0.04702,"16.6":0.27426,"17.0":0.19198,"17.1":0.01567},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00089,"5.0-5.1":0.00089,"6.0-6.1":0.00267,"7.0-7.1":0.00623,"8.1-8.4":0.00089,"9.0-9.2":0.00623,"9.3":0.02134,"10.0-10.2":0.00089,"10.3":0.03113,"11.0-11.2":0.02846,"11.3-11.4":0.00978,"12.0-12.1":0.008,"12.2-12.5":0.1414,"13.0-13.1":0.00445,"13.2":0.02401,"13.3":0.00889,"13.4-13.7":0.02846,"14.0-14.4":0.07826,"14.5-14.8":0.12629,"15.0-15.1":0.0498,"15.2-15.3":0.05692,"15.4":0.06314,"15.5":0.08982,"15.6-15.7":0.62164,"16.0":0.22945,"16.1":0.43933,"16.2":0.21433,"16.3":0.39753,"16.4":0.08538,"16.5":0.22767,"16.6-16.7":4.26436,"17.0":1.51898,"17.1":0.0916,"17.2":0.00267},P:{"4":0.14366,"20":0.05131,"21":0.11288,"22":2.31912,"23":0.50282,"5.0-5.4":0.02052,_:"6.2-6.4 8.2 9.2 12.0","7.2-7.4":0.01026,"10.1":0.01026,"11.1-11.2":0.02052,"13.0":0.02052,"14.0":0.03078,"15.0":0.01026,"16.0":0.02052,"17.0":0.02052,"18.0":0.02052,"19.0":0.06157},I:{"0":0.06052,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00018},A:{"8":0.0162,"9":0.00405,"10":0.0081,"11":0.33211,_:"6 7 5.5"},K:{"0":0.43922,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.20682},Q:{_:"13.1"},O:{"0":0.04258},H:{"0":0.09},L:{"0":49.0679}}; diff --git a/node_modules/caniuse-lite/data/regions/RU.js b/node_modules/caniuse-lite/data/regions/RU.js new file mode 100644 index 00000000..92b6a543 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/RU.js @@ -0,0 +1 @@ +module.exports={C:{"31":0.00581,"44":0.00581,"48":0.02324,"50":0.00581,"52":0.11041,"53":0.00581,"56":0.00581,"60":0.00581,"66":0.00581,"68":0.01743,"69":0.00581,"70":0.01162,"71":0.00581,"72":0.01743,"73":0.00581,"74":0.00581,"75":0.01743,"76":0.00581,"77":0.00581,"78":0.02324,"79":0.00581,"80":0.00581,"81":0.01162,"82":0.00581,"83":0.00581,"87":0.00581,"88":0.01162,"90":0.00581,"91":0.01162,"94":0.00581,"95":0.00581,"96":0.00581,"97":0.00581,"98":0.00581,"99":0.00581,"100":0.00581,"101":0.00581,"102":0.03487,"103":0.02906,"104":0.01743,"105":0.01162,"106":0.01162,"107":0.01743,"108":0.02324,"109":0.01162,"110":0.02324,"111":0.02324,"112":0.01743,"113":0.02324,"114":0.02324,"115":0.69732,"116":0.02324,"117":0.08135,"118":1.20869,"119":0.23825,"120":0.00581,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 49 51 54 55 57 58 59 61 62 63 64 65 67 84 85 86 89 92 93 121 122 3.5 3.6"},D:{"22":0.00581,"25":0.01162,"26":0.00581,"38":0.00581,"41":0.00581,"47":0.00581,"49":0.07554,"51":0.03487,"52":0.01162,"53":0.00581,"55":0.00581,"56":0.01162,"57":0.00581,"58":0.01162,"61":0.00581,"64":0.00581,"65":0.00581,"67":0.01162,"68":0.05811,"69":0.04068,"70":0.04649,"71":0.04068,"72":0.06392,"73":0.02324,"74":0.06973,"75":0.0523,"76":0.06392,"77":0.04068,"78":0.06392,"79":0.12784,"80":0.1046,"81":0.09298,"83":0.06973,"84":0.04649,"85":0.11622,"86":0.12784,"87":0.11041,"88":0.11041,"89":0.09879,"90":0.09298,"91":0.04068,"92":0.01162,"93":0.02324,"94":0.02906,"95":0.01162,"96":0.01743,"97":0.03487,"98":0.04068,"99":0.02906,"100":0.02906,"101":0.06392,"102":0.14528,"103":0.05811,"104":0.02324,"105":0.14528,"106":0.22663,"107":0.13946,"108":0.17433,"109":2.89388,"110":0.08135,"111":0.11041,"112":0.13365,"113":0.44164,"114":0.77286,"115":0.60434,"116":0.83097,"117":8.46082,"118":7.9262,"119":0.01162,"120":0.01162,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 46 48 50 54 59 60 62 63 66 121 122"},F:{"36":0.03487,"46":0.00581,"48":0.00581,"49":0.00581,"53":0.01162,"54":0.01162,"55":0.01162,"57":0.00581,"58":0.00581,"60":0.00581,"64":0.00581,"65":0.00581,"67":0.00581,"68":0.00581,"70":0.00581,"71":0.00581,"72":0.00581,"73":0.00581,"74":0.00581,"75":0.00581,"76":0.01162,"77":0.01743,"78":0.00581,"79":0.06973,"80":0.00581,"81":0.00581,"82":0.01162,"83":0.00581,"84":0.01162,"85":0.06973,"86":0.01743,"87":0.00581,"89":0.00581,"90":0.00581,"92":0.01162,"93":0.00581,"94":0.01162,"95":0.91814,"97":0.00581,"98":0.00581,"99":0.01743,"100":0.01162,"101":0.03487,"102":3.14956,"103":1.23193,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 50 51 52 56 62 63 66 69 88 91 96 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.00581},B:{"14":0.00581,"18":0.01162,"79":0.00581,"80":0.01743,"81":0.01743,"83":0.01743,"84":0.02324,"85":0.01162,"86":0.01743,"87":0.01162,"88":0.01162,"89":0.01743,"90":0.01162,"92":0.02324,"99":0.00581,"100":0.00581,"105":0.00581,"106":0.00581,"107":0.01743,"108":0.02324,"109":0.06973,"110":0.01743,"111":0.01162,"112":0.00581,"113":0.02324,"114":0.09298,"115":0.01743,"116":0.04649,"117":1.48762,"118":1.7433,"119":0.00581,_:"12 13 15 16 17 91 93 94 95 96 97 98 101 102 103 104"},E:{"13":0.00581,"14":0.0523,"15":0.00581,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 10.1 17.2","5.1":0.00581,"9.1":0.33704,"11.1":0.00581,"12.1":0.01743,"13.1":0.03487,"14.1":0.08717,"15.1":0.01743,"15.2-15.3":0.01162,"15.4":0.02324,"15.5":0.02906,"15.6":0.17433,"16.0":0.01743,"16.1":0.05811,"16.2":0.04649,"16.3":0.09298,"16.4":0.11041,"16.5":0.99368,"16.6":0.4242,"17.0":0.31379,"17.1":0.02324},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00098,"5.0-5.1":0.00098,"6.0-6.1":0.00293,"7.0-7.1":0.00683,"8.1-8.4":0.00098,"9.0-9.2":0.00683,"9.3":0.02341,"10.0-10.2":0.00098,"10.3":0.03415,"11.0-11.2":0.03122,"11.3-11.4":0.01073,"12.0-12.1":0.00878,"12.2-12.5":0.15512,"13.0-13.1":0.00488,"13.2":0.02634,"13.3":0.00976,"13.4-13.7":0.03122,"14.0-14.4":0.08585,"14.5-14.8":0.13854,"15.0-15.1":0.05463,"15.2-15.3":0.06244,"15.4":0.06927,"15.5":0.09854,"15.6-15.7":0.68196,"16.0":0.25171,"16.1":0.48196,"16.2":0.23512,"16.3":0.4361,"16.4":0.09366,"16.5":0.24976,"16.6-16.7":4.67809,"17.0":1.66636,"17.1":0.10049,"17.2":0.00293},P:{"4":0.07345,"20":0.03148,"21":0.05247,"22":0.68206,"23":0.11543,_:"5.0-5.4 6.2-6.4 8.2 10.1 12.0 14.0 15.0","7.2-7.4":0.02099,"9.2":0.01049,"11.1-11.2":0.01049,"13.0":0.01049,"16.0":0.01049,"17.0":0.01049,"18.0":0.01049,"19.0":0.02099},I:{"0":0.03334,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.0001},A:{"8":0.01843,"11":0.19658,_:"6 7 9 10 5.5"},K:{"0":0.8378,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.20526},Q:{"13.1":0.00419},O:{"0":0.17175},H:{"0":0},L:{"0":26.51562}}; diff --git a/node_modules/caniuse-lite/data/regions/RW.js b/node_modules/caniuse-lite/data/regions/RW.js new file mode 100644 index 00000000..240aef19 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/RW.js @@ -0,0 +1 @@ +module.exports={C:{"23":0.00415,"31":0.00829,"33":0.00415,"34":0.00829,"36":0.00415,"40":0.00415,"47":0.00829,"50":0.00415,"52":0.00415,"60":0.00829,"67":0.00415,"72":0.00415,"78":0.00415,"79":0.00415,"99":0.00415,"101":0.00415,"102":0.01244,"105":0.00415,"106":0.00415,"107":0.00415,"108":0.00415,"110":0.00415,"111":0.00829,"112":0.00829,"113":0.00415,"114":0.00415,"115":0.2737,"116":0.01244,"117":0.05391,"118":1.23995,"119":0.36494,"120":0.01244,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 32 35 37 38 39 41 42 43 44 45 46 48 49 51 53 54 55 56 57 58 59 61 62 63 64 65 66 68 69 70 71 73 74 75 76 77 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 100 103 104 109 121 122 3.5 3.6"},D:{"34":0.00415,"40":0.00415,"49":0.01659,"55":0.00415,"56":0.00415,"58":0.00829,"59":0.00415,"61":0.00829,"64":0.00829,"65":0.00415,"66":0.00415,"67":0.00415,"68":0.01244,"69":0.01659,"70":0.03318,"71":0.00829,"72":0.01244,"73":0.04147,"74":0.02074,"75":0.01244,"76":0.00415,"77":0.00829,"78":0.00829,"79":0.02074,"80":0.57229,"81":0.00829,"83":0.01244,"84":0.00829,"86":0.00415,"87":0.02074,"88":0.01659,"89":0.00829,"90":0.02074,"91":0.00829,"92":0.00829,"93":0.04562,"95":0.01659,"96":0.00415,"97":0.00415,"98":0.06635,"99":0.00415,"100":0.00829,"101":0.01659,"102":0.02074,"103":0.08709,"104":0.02488,"105":0.03318,"106":0.08294,"107":0.04147,"108":0.06221,"109":1.53439,"110":0.06635,"111":0.05391,"112":0.06635,"113":0.05391,"114":0.29029,"115":0.16173,"116":1.07407,"117":11.25496,"118":12.76447,"119":0.02903,"120":0.00829,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 41 42 43 44 45 46 47 48 50 51 52 53 54 57 60 62 63 85 94 121 122"},F:{"79":0.00829,"87":0.00415,"95":0.03318,"98":0.00415,"99":0.01659,"100":0.01659,"101":0.00829,"102":0.51008,"103":0.47276,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 85 86 88 89 90 91 92 93 94 96 97 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.04147,"13":0.04147,"14":0.01244,"15":0.00415,"16":0.02074,"17":0.02074,"18":0.1327,"84":0.01244,"85":0.03732,"89":0.01244,"90":0.02488,"92":0.07465,"100":0.12856,"104":0.00415,"106":0.00415,"107":0.00415,"108":0.00415,"109":0.02903,"110":0.00829,"111":0.04147,"112":0.01659,"113":0.02488,"114":0.06635,"115":0.02903,"116":0.08709,"117":1.99885,"118":2.10668,"119":0.00415,_:"79 80 81 83 86 87 88 91 93 94 95 96 97 98 99 101 102 103 105"},E:{"13":0.00415,"14":0.00829,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.01659,"11.1":0.01244,"12.1":0.00415,"13.1":0.01659,"14.1":0.03318,"15.1":0.00415,"15.2-15.3":0.00415,"15.4":0.11612,"15.5":0.01244,"15.6":0.07465,"16.0":0.00415,"16.1":0.01244,"16.2":0.02903,"16.3":0.01659,"16.4":0.04976,"16.5":0.07465,"16.6":0.20735,"17.0":0.11612,"17.1":0.02074},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00053,"5.0-5.1":0.00053,"6.0-6.1":0.00158,"7.0-7.1":0.00369,"8.1-8.4":0.00053,"9.0-9.2":0.00369,"9.3":0.01266,"10.0-10.2":0.00053,"10.3":0.01846,"11.0-11.2":0.01688,"11.3-11.4":0.0058,"12.0-12.1":0.00475,"12.2-12.5":0.08385,"13.0-13.1":0.00264,"13.2":0.01424,"13.3":0.00527,"13.4-13.7":0.01688,"14.0-14.4":0.04641,"14.5-14.8":0.07488,"15.0-15.1":0.02953,"15.2-15.3":0.03375,"15.4":0.03744,"15.5":0.05326,"15.6-15.7":0.36862,"16.0":0.13606,"16.1":0.26051,"16.2":0.12709,"16.3":0.23573,"16.4":0.05063,"16.5":0.135,"16.6-16.7":2.52867,"17.0":0.90072,"17.1":0.05432,"17.2":0.00158},P:{"4":0.04147,"20":0.01037,"21":0.12442,"22":0.49767,"23":0.07258,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 13.0 15.0","7.2-7.4":0.13479,"11.1-11.2":0.01037,"14.0":0.02074,"16.0":0.02074,"17.0":0.01037,"18.0":0.04147,"19.0":0.10368},I:{"0":0.01165,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00004},A:{"11":0.04976,_:"6 7 8 9 10 5.5"},K:{"0":4.84096,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.13462,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.14633},Q:{"13.1":0.01756},O:{"0":0.16974},H:{"0":6.11},L:{"0":43.77083}}; diff --git a/node_modules/caniuse-lite/data/regions/SA.js b/node_modules/caniuse-lite/data/regions/SA.js new file mode 100644 index 00000000..6c41dc31 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SA.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00236,"52":0.00471,"66":0.00236,"78":0.00236,"103":0.00236,"107":0.00236,"111":0.00236,"113":0.00236,"114":0.00236,"115":0.05183,"116":0.00236,"117":0.02592,"118":0.40759,"119":0.0801,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 104 105 106 108 109 110 112 120 121 122 3.5 3.6"},D:{"11":0.00236,"34":0.00236,"38":0.00471,"41":0.00236,"43":0.00236,"47":0.00236,"48":0.00236,"49":0.00236,"56":0.00471,"58":0.01649,"63":0.00236,"64":0.00236,"65":0.00471,"67":0.00236,"68":0.00707,"69":0.00471,"70":0.00236,"71":0.00236,"72":0.00236,"73":0.00236,"74":0.00236,"75":0.00471,"76":0.00236,"77":0.00236,"78":0.00236,"79":0.0377,"80":0.00471,"81":0.00471,"83":0.00942,"84":0.00236,"85":0.00942,"86":0.00942,"87":0.01414,"88":0.01178,"89":0.00471,"90":0.00942,"91":0.00707,"92":0.00471,"93":0.01885,"94":0.00471,"95":0.00707,"96":0.00707,"97":0.03534,"98":0.00942,"99":0.03063,"100":0.00471,"101":0.00707,"102":0.00707,"103":0.03298,"104":0.00707,"105":0.0801,"106":0.01414,"107":0.02356,"108":0.02592,"109":0.90235,"110":0.01414,"111":0.03063,"112":0.02827,"113":0.02356,"114":0.14136,"115":0.08717,"116":0.54895,"117":6.90308,"118":7.068,"119":0.00942,"120":0.00471,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 42 44 45 46 50 51 52 53 54 55 57 59 60 61 62 66 121 122"},F:{"28":0.00707,"36":0.00236,"46":0.00236,"71":0.00236,"74":0.00236,"77":0.00236,"79":0.00471,"81":0.00236,"82":0.00471,"83":0.00236,"91":0.00236,"93":0.00236,"94":0.00236,"95":0.00707,"100":0.00236,"101":0.00236,"102":0.26623,"103":0.0377,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 75 76 78 80 84 85 86 87 88 89 90 92 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00236,"15":0.00236,"16":0.00236,"17":0.00236,"18":0.00707,"84":0.00236,"85":0.00236,"89":0.00236,"90":0.00236,"91":0.00236,"92":0.01178,"96":0.00236,"97":0.00236,"98":0.00236,"101":0.00236,"103":0.00236,"104":0.00236,"105":0.00236,"106":0.00471,"107":0.00707,"108":0.00471,"109":0.0212,"110":0.00942,"111":0.00471,"112":0.00471,"113":0.01178,"114":0.0212,"115":0.02592,"116":0.05419,"117":1.54318,"118":1.26282,"119":0.00471,_:"13 14 79 80 81 83 86 87 88 93 94 95 99 100 102"},E:{"13":0.00471,"14":0.02827,"15":0.00707,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.02356,"11.1":0.00236,"12.1":0.00236,"13.1":0.01885,"14.1":0.05183,"15.1":0.01414,"15.2-15.3":0.01178,"15.4":0.02356,"15.5":0.0377,"15.6":0.16256,"16.0":0.0212,"16.1":0.07304,"16.2":0.05654,"16.3":0.1178,"16.4":0.04948,"16.5":0.0966,"16.6":0.69031,"17.0":0.34162,"17.1":0.01885},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00264,"5.0-5.1":0.00264,"6.0-6.1":0.00791,"7.0-7.1":0.01847,"8.1-8.4":0.00264,"9.0-9.2":0.01847,"9.3":0.06331,"10.0-10.2":0.00264,"10.3":0.09233,"11.0-11.2":0.08441,"11.3-11.4":0.02902,"12.0-12.1":0.02374,"12.2-12.5":0.41943,"13.0-13.1":0.01319,"13.2":0.07122,"13.3":0.02638,"13.4-13.7":0.08441,"14.0-14.4":0.23214,"14.5-14.8":0.37459,"15.0-15.1":0.14772,"15.2-15.3":0.16883,"15.4":0.18729,"15.5":0.26643,"15.6-15.7":1.84392,"16.0":0.68059,"16.1":1.30314,"16.2":0.63574,"16.3":1.17916,"16.4":0.25324,"16.5":0.67531,"16.6-16.7":12.64894,"17.0":4.50561,"17.1":0.27171,"17.2":0.00791},P:{"4":0.03079,"20":0.04106,"21":0.10265,"22":1.4884,"23":0.24636,"5.0-5.4":0.01026,_:"6.2-6.4 8.2 9.2 10.1 12.0 15.0","7.2-7.4":0.04106,"11.1-11.2":0.01026,"13.0":0.01026,"14.0":0.03079,"16.0":0.03079,"17.0":0.02053,"18.0":0.02053,"19.0":0.07185},I:{"0":0.06845,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.00021},A:{"8":0.00241,"11":0.11068,_:"6 7 9 10 5.5"},K:{"0":0.45864,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.07644},Q:{_:"13.1"},O:{"0":1.9798},H:{"0":0},L:{"0":46.29456}}; diff --git a/node_modules/caniuse-lite/data/regions/SB.js b/node_modules/caniuse-lite/data/regions/SB.js new file mode 100644 index 00000000..00686708 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SB.js @@ -0,0 +1 @@ +module.exports={C:{"47":0.02714,"96":0.01206,"98":0.00302,"110":0.00302,"113":0.00905,"115":0.0573,"116":0.00302,"117":0.03921,"118":0.78718,"119":0.06032,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 97 99 100 101 102 103 104 105 106 107 108 109 111 112 114 120 121 122 3.5 3.6"},D:{"41":0.00302,"47":0.02714,"48":0.00302,"54":0.00302,"55":0.00603,"69":0.0181,"71":0.00603,"75":0.00603,"76":0.00302,"78":0.00905,"79":0.01508,"81":0.00302,"87":0.08746,"89":0.04222,"90":0.00302,"91":0.00603,"92":0.00302,"94":0.00603,"95":0.19906,"101":0.00302,"102":0.00905,"103":0.19302,"104":0.00905,"105":0.00603,"106":0.0181,"107":0.05429,"108":0.6786,"109":0.6213,"110":0.06635,"111":0.00905,"112":0.10858,"113":0.00302,"114":0.06635,"115":0.05429,"116":0.41922,"117":6.44821,"118":5.23578,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 43 44 45 46 49 50 51 52 53 56 57 58 59 60 61 62 63 64 65 66 67 68 70 72 73 74 77 80 83 84 85 86 88 93 96 97 98 99 100 119 120 121 122"},F:{"83":0.00603,"102":0.1508,"103":0.06032,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00603,"13":0.01206,"14":2.90742,"15":0.00603,"16":0.01206,"17":0.03619,"18":0.01508,"88":0.01206,"92":0.02413,"97":0.00302,"100":0.00302,"103":0.00302,"105":0.01508,"107":0.00302,"108":0.00302,"109":0.03619,"110":0.04826,"111":0.01206,"112":0.01206,"113":0.00603,"114":0.04222,"115":0.0754,"116":0.10858,"117":1.91818,"118":1.52006,"119":0.00603,_:"79 80 81 83 84 85 86 87 89 90 91 93 94 95 96 98 99 101 102 104 106"},E:{"12":0.00603,"13":0.00302,"14":0.01508,"15":0.00302,_:"0 4 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 15.1 15.2-15.3 16.0 17.1 17.2","12.1":0.00905,"13.1":0.00603,"14.1":0.03318,"15.4":0.00603,"15.5":0.02111,"15.6":0.41621,"16.1":0.00302,"16.2":0.00302,"16.3":0.00603,"16.4":0.00603,"16.5":0.06334,"16.6":0.1327,"17.0":0.04524},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00025,"5.0-5.1":0.00025,"6.0-6.1":0.00074,"7.0-7.1":0.00173,"8.1-8.4":0.00025,"9.0-9.2":0.00173,"9.3":0.00593,"10.0-10.2":0.00025,"10.3":0.00865,"11.0-11.2":0.00791,"11.3-11.4":0.00272,"12.0-12.1":0.00223,"12.2-12.5":0.03932,"13.0-13.1":0.00124,"13.2":0.00668,"13.3":0.00247,"13.4-13.7":0.00791,"14.0-14.4":0.02176,"14.5-14.8":0.03511,"15.0-15.1":0.01385,"15.2-15.3":0.01583,"15.4":0.01756,"15.5":0.02497,"15.6-15.7":0.17284,"16.0":0.0638,"16.1":0.12215,"16.2":0.05959,"16.3":0.11053,"16.4":0.02374,"16.5":0.0633,"16.6-16.7":1.18565,"17.0":0.42234,"17.1":0.02547,"17.2":0.00074},P:{"4":0.1773,"20":0.74048,"21":0.29202,"22":0.82392,"23":0.11472,_:"5.0-5.4 6.2-6.4 8.2 10.1 12.0","7.2-7.4":0.14601,"9.2":0.03129,"11.1-11.2":0.07301,"13.0":0.03129,"14.0":0.04172,"15.0":0.01043,"16.0":0.22945,"17.0":0.01043,"18.0":0.07301,"19.0":0.22945},I:{"0":0.04865,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00015},A:{"10":0.00729,"11":0.14954,_:"6 7 8 9 5.5"},K:{"0":1.59052,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00699,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.77534},Q:{"13.1":0.11875},O:{"0":3.33883},H:{"0":0.03},L:{"0":64.94059}}; diff --git a/node_modules/caniuse-lite/data/regions/SC.js b/node_modules/caniuse-lite/data/regions/SC.js new file mode 100644 index 00000000..1b24383e --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SC.js @@ -0,0 +1 @@ +module.exports={C:{"45":0.0067,"49":0.00168,"50":0.04693,"52":2.72015,"53":0.0067,"55":0.07039,"56":0.90336,"62":0.00335,"68":0.00335,"70":0.00168,"71":0.00168,"72":0.00168,"73":0.00168,"76":0.00335,"77":0.00335,"78":0.01006,"79":0.00168,"80":0.00168,"81":0.00168,"82":0.00335,"88":0.00168,"91":0.00838,"98":0.00168,"100":0.00335,"102":0.11062,"104":0.0352,"105":0.03352,"106":0.00168,"107":0.00168,"108":0.0067,"111":0.00335,"113":0.00335,"115":0.20615,"116":0.00335,"117":0.02682,"118":0.34358,"119":0.02849,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 51 54 57 58 59 60 61 63 64 65 66 67 69 74 75 83 84 85 86 87 89 90 92 93 94 95 96 97 99 101 103 109 110 112 114 120 121 122 3.5 3.6"},D:{"37":0.00838,"44":0.0067,"45":0.18436,"49":0.00503,"53":0.00335,"55":0.00335,"64":0.00168,"68":0.03184,"69":0.01508,"70":0.02011,"71":0.01508,"72":0.34861,"73":0.01006,"74":0.03687,"75":0.02011,"76":0.02179,"77":0.01173,"78":0.02514,"79":0.03017,"80":0.03855,"81":0.02682,"83":0.04358,"84":0.02346,"85":0.02849,"86":0.06704,"87":0.03855,"88":0.04022,"89":0.02849,"90":0.03855,"91":0.01341,"92":0.01341,"93":0.00168,"94":0.0067,"95":0.00335,"96":0.00503,"97":0.0067,"98":0.0067,"99":0.00838,"100":0.00168,"101":0.01173,"102":0.01508,"103":0.0067,"104":0.00503,"105":0.15084,"106":0.0838,"107":0.0067,"108":0.00503,"109":0.3285,"110":0.01173,"111":0.02849,"112":0.19609,"113":0.02849,"114":0.13408,"115":0.03855,"116":0.28492,"117":3.11568,"118":2.21064,"119":0.00168,"120":0.00335,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 43 46 47 48 50 51 52 54 56 57 58 59 60 61 62 63 65 66 67 121 122"},F:{"47":0.00168,"53":0.00335,"54":0.00838,"55":0.00838,"56":0.00168,"57":0.00168,"60":0.00168,"65":0.00168,"66":0.00168,"67":0.00168,"68":0.00168,"71":0.00168,"75":0.00168,"76":0.00168,"78":0.00168,"94":0.00335,"95":0.01006,"102":0.08883,"103":0.02011,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 52 58 62 63 64 69 70 72 73 74 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00335,"18":0.0067,"79":0.00503,"80":0.00838,"81":0.00838,"83":0.00838,"84":0.01341,"85":0.0067,"86":0.00838,"87":0.01006,"88":0.00838,"89":0.00838,"90":0.00838,"91":0.00168,"92":0.01006,"95":0.00168,"100":0.00168,"105":0.0067,"107":0.00168,"108":0.00168,"109":0.00503,"110":0.00168,"111":0.00335,"112":0.01006,"113":0.00838,"114":0.01006,"115":0.00503,"116":0.10559,"117":0.57152,"118":0.37207,"119":0.00503,_:"13 14 15 16 17 93 94 96 97 98 99 101 102 103 104 106"},E:{"14":0.0905,"15":0.00168,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 10.1 11.1 17.2","5.1":0.00168,"9.1":0.16257,"12.1":0.11732,"13.1":0.0067,"14.1":0.09386,"15.1":0.02514,"15.2-15.3":0.0352,"15.4":0.00503,"15.5":0.01341,"15.6":0.02849,"16.0":0.01173,"16.1":0.01844,"16.2":0.0067,"16.3":0.01341,"16.4":0.03184,"16.5":0.03687,"16.6":0.13576,"17.0":0.08548,"17.1":0.00335},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00554,"5.0-5.1":0.00554,"6.0-6.1":0.01663,"7.0-7.1":0.03879,"8.1-8.4":0.00554,"9.0-9.2":0.03879,"9.3":0.13301,"10.0-10.2":0.00554,"10.3":0.19397,"11.0-11.2":0.17735,"11.3-11.4":0.06096,"12.0-12.1":0.04988,"12.2-12.5":0.8812,"13.0-13.1":0.02771,"13.2":0.14964,"13.3":0.05542,"13.4-13.7":0.17735,"14.0-14.4":0.48771,"14.5-14.8":0.78698,"15.0-15.1":0.31036,"15.2-15.3":0.3547,"15.4":0.39349,"15.5":0.55975,"15.6-15.7":3.87394,"16.0":1.42987,"16.1":2.73781,"16.2":1.33565,"16.3":2.47733,"16.4":0.53204,"16.5":1.41878,"16.6-16.7":26.57446,"17.0":9.46594,"17.1":0.57084,"17.2":0.01663},P:{"4":0.03085,"20":0.05141,"21":0.13367,"22":1.17222,"23":0.16452,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 14.0","7.2-7.4":0.03085,"11.1-11.2":0.01028,"13.0":0.09254,"15.0":0.01028,"16.0":0.05141,"17.0":0.02057,"18.0":0.05141,"19.0":0.10283},I:{"0":0.02484,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00007},A:{"11":0.0838,_:"6 7 8 9 10 5.5"},K:{"0":0.591,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.25804},Q:{"13.1":0.0333},O:{"0":0.54106},H:{"0":0},L:{"0":25.96409}}; diff --git a/node_modules/caniuse-lite/data/regions/SD.js b/node_modules/caniuse-lite/data/regions/SD.js new file mode 100644 index 00000000..505554e4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SD.js @@ -0,0 +1 @@ +module.exports={C:{"26":0.00081,"28":0.00081,"31":0.00243,"32":0.00081,"33":0.00081,"34":0.00162,"35":0.00162,"36":0.00162,"38":0.00486,"39":0.00081,"40":0.00081,"41":0.00081,"42":0.00324,"43":0.00405,"44":0.00486,"45":0.00243,"46":0.00243,"47":0.00324,"48":0.00486,"49":0.01134,"50":0.00648,"52":0.0081,"53":0.00081,"56":0.00243,"57":0.00162,"58":0.00243,"60":0.00081,"61":0.00162,"64":0.00243,"66":0.00243,"68":0.00081,"70":0.00324,"71":0.00081,"72":0.0081,"74":0.00405,"78":0.00324,"80":0.00324,"81":0.00567,"83":0.00081,"85":0.00243,"87":0.00243,"89":0.00081,"90":0.00324,"91":0.01377,"94":0.00243,"95":0.00081,"96":0.00162,"99":0.00081,"101":0.00081,"102":0.00324,"103":0.00081,"104":0.00081,"105":0.00081,"106":0.00405,"107":0.00486,"108":0.00243,"109":0.00729,"110":0.00081,"111":0.04455,"112":0.00567,"113":0.00324,"114":0.0081,"115":0.20169,"116":0.00972,"117":0.04617,"118":0.45522,"119":0.11502,"120":0.00162,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 29 30 37 51 54 55 59 62 63 65 67 69 73 75 76 77 79 82 84 86 88 92 93 97 98 100 121 122 3.5 3.6"},D:{"11":0.00648,"27":0.00081,"31":0.00162,"32":0.00243,"33":0.0081,"34":0.00081,"38":0.00081,"39":0.00081,"40":0.0081,"41":0.00324,"43":0.0162,"46":0.00243,"47":0.00729,"48":0.00081,"49":0.00243,"50":0.01134,"51":0.00729,"52":0.00567,"53":0.00081,"54":0.00162,"55":0.00162,"56":0.00081,"57":0.00405,"58":0.07209,"59":0.00081,"60":0.00162,"61":0.00162,"63":0.0243,"64":0.00972,"65":0.00081,"66":0.00567,"67":0.00081,"68":0.0162,"69":0.00972,"70":0.01863,"71":0.02187,"72":0.00162,"73":0.00081,"74":0.00405,"75":0.00243,"76":0.00324,"78":0.081,"79":0.01215,"80":0.00648,"81":0.00243,"83":0.0162,"84":0.00081,"85":0.00162,"86":0.00567,"87":0.00648,"88":0.01134,"89":0.01053,"90":0.00081,"91":0.00567,"92":0.01944,"93":0.00972,"94":0.00324,"95":0.00405,"96":0.00891,"97":0.00243,"98":0.00162,"99":0.01053,"100":0.00486,"101":0.00324,"102":0.0243,"103":0.01458,"104":0.0162,"105":0.02268,"106":0.01458,"107":0.00648,"108":0.01863,"109":0.60102,"110":0.00648,"111":0.04374,"112":0.03726,"113":0.01863,"114":0.0567,"115":0.04374,"116":0.19602,"117":0.82863,"118":1.10241,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 29 30 35 36 37 42 44 45 62 77 119 120 121 122"},F:{"18":0.00567,"22":0.00081,"35":0.00081,"36":0.00081,"38":0.00081,"42":0.00162,"58":0.00081,"73":0.00081,"75":0.00081,"79":0.01701,"83":0.00243,"84":0.00243,"85":0.00081,"86":0.00648,"93":0.00081,"95":0.02187,"97":0.00162,"99":0.00081,"100":0.10692,"101":0.00729,"102":0.13122,"103":0.11745,_:"9 11 12 15 16 17 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 37 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 60 62 63 64 65 66 67 68 69 70 71 72 74 76 77 78 80 81 82 87 88 89 90 91 92 94 96 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.01701,"13":0.00324,"14":0.0081,"15":0.00486,"16":0.00972,"17":0.00486,"18":0.03726,"80":0.00081,"84":0.02268,"85":0.00243,"89":0.01377,"90":0.01296,"92":0.08748,"94":0.00081,"100":0.01215,"102":0.00081,"103":0.00729,"104":0.00243,"105":0.00486,"106":0.00405,"107":0.00081,"108":0.00972,"109":0.01215,"110":0.00486,"111":0.00567,"112":0.01215,"113":0.02187,"114":0.01053,"115":0.02187,"116":0.0405,"117":0.22032,"118":0.31752,"119":0.00324,_:"79 81 83 86 87 88 91 93 95 96 97 98 99 101"},E:{"7":0.00081,"13":0.00243,"14":0.00162,_:"0 4 5 6 8 9 10 11 12 15 3.1 3.2 6.1 7.1 9.1 10.1 15.1 15.4 17.2","5.1":0.6885,"11.1":0.00081,"12.1":0.00081,"13.1":0.00081,"14.1":0.00324,"15.2-15.3":0.00081,"15.5":0.00081,"15.6":0.00972,"16.0":0.00486,"16.1":0.00081,"16.2":0.00081,"16.3":0.01215,"16.4":0.00081,"16.5":0.00243,"16.6":0.01215,"17.0":0.00891,"17.1":0.00081},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00037,"5.0-5.1":0.00037,"6.0-6.1":0.00111,"7.0-7.1":0.0026,"8.1-8.4":0.00037,"9.0-9.2":0.0026,"9.3":0.00891,"10.0-10.2":0.00037,"10.3":0.01299,"11.0-11.2":0.01188,"11.3-11.4":0.00408,"12.0-12.1":0.00334,"12.2-12.5":0.05903,"13.0-13.1":0.00186,"13.2":0.01002,"13.3":0.00371,"13.4-13.7":0.01188,"14.0-14.4":0.03267,"14.5-14.8":0.05272,"15.0-15.1":0.02079,"15.2-15.3":0.02376,"15.4":0.02636,"15.5":0.0375,"15.6-15.7":0.25952,"16.0":0.09579,"16.1":0.18341,"16.2":0.08948,"16.3":0.16596,"16.4":0.03564,"16.5":0.09505,"16.6-16.7":1.78027,"17.0":0.63414,"17.1":0.03824,"17.2":0.00111},P:{"4":0.41604,"20":0.29427,"21":0.25368,"22":1.00458,"23":0.05074,"5.0-5.4":0.01015,"6.2-6.4":0.02029,"7.2-7.4":0.24354,"8.2":0.01015,"9.2":0.04059,_:"10.1","11.1-11.2":0.09133,"12.0":0.05074,"13.0":0.07103,"14.0":0.12177,"15.0":0.06088,"16.0":0.37545,"17.0":0.09133,"18.0":0.26383,"19.0":0.42619},I:{"0":0.25601,"3":0,"4":0.00005,"2.1":0,"2.2":0.00008,"2.3":0,"4.1":0.00005,"4.2-4.3":0.00018,"4.4":0,"4.4.3-4.4.4":0.00077},A:{"8":0.00081,"9":0.00081,"11":0.03807,_:"6 7 10 5.5"},K:{"0":5.32242,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.01838,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.17461},Q:{"13.1":0.00919},O:{"0":1.21308},H:{"0":6.79},L:{"0":71.5461}}; diff --git a/node_modules/caniuse-lite/data/regions/SE.js b/node_modules/caniuse-lite/data/regions/SE.js new file mode 100644 index 00000000..da4e7c25 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SE.js @@ -0,0 +1 @@ +module.exports={C:{"16":0.00489,"52":0.00978,"56":0.00489,"59":0.00978,"78":0.01957,"88":0.00489,"91":0.00489,"102":0.01957,"104":0.00489,"108":0.00489,"109":0.00489,"110":0.00489,"111":0.00489,"112":0.00489,"113":0.00978,"114":0.00978,"115":0.21525,"116":0.01468,"117":0.07338,"118":1.33062,"119":0.26417,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 94 95 96 97 98 99 100 101 103 105 106 107 120 121 122 3.5 3.6"},D:{"38":0.00489,"49":0.00978,"66":0.03424,"74":0.00489,"75":0.00489,"76":0.00489,"77":0.00489,"79":0.02446,"80":0.00489,"81":0.00489,"83":0.00489,"84":0.00489,"85":0.01468,"86":0.02935,"87":0.03424,"88":0.00489,"89":0.04892,"90":0.01468,"91":0.00978,"92":0.01468,"93":0.13208,"94":0.00489,"95":0.00489,"96":0.00978,"97":0.00489,"98":0.00978,"99":0.00978,"100":0.03914,"101":0.0587,"102":0.04403,"103":0.35222,"104":0.04403,"105":0.03914,"106":0.01468,"107":0.02935,"108":0.09295,"109":0.96372,"110":0.05381,"111":0.06849,"112":0.07338,"113":0.09295,"114":0.21525,"115":0.36201,"116":3.53692,"117":14.83744,"118":11.17333,"119":0.01957,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 78 120 121 122"},F:{"46":0.00489,"95":0.08316,"101":0.00489,"102":0.93437,"103":0.12719,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"17":0.00489,"88":0.00489,"92":0.01468,"103":0.01468,"104":0.00978,"106":0.00978,"107":0.00489,"108":0.00489,"109":0.10273,"110":0.00978,"111":0.00489,"112":0.00489,"113":0.02446,"114":0.02935,"115":0.04403,"116":0.20057,"117":3.82554,"118":3.1211,"119":0.00978,_:"12 13 14 15 16 18 79 80 81 83 84 85 86 87 89 90 91 93 94 95 96 97 98 99 100 101 102 105"},E:{"13":0.00489,"14":0.06849,"15":0.00978,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 17.2","11.1":0.00978,"12.1":0.01468,"13.1":0.07827,"14.1":0.20057,"15.1":0.03424,"15.2-15.3":0.02446,"15.4":0.0636,"15.5":0.08806,"15.6":0.48431,"16.0":0.04892,"16.1":0.13698,"16.2":0.11741,"16.3":0.31309,"16.4":0.13208,"16.5":0.29352,"16.6":1.8932,"17.0":0.71912,"17.1":0.03914},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00261,"5.0-5.1":0.00261,"6.0-6.1":0.00784,"7.0-7.1":0.01829,"8.1-8.4":0.00261,"9.0-9.2":0.01829,"9.3":0.06271,"10.0-10.2":0.00261,"10.3":0.09145,"11.0-11.2":0.08361,"11.3-11.4":0.02874,"12.0-12.1":0.02351,"12.2-12.5":0.41543,"13.0-13.1":0.01306,"13.2":0.07054,"13.3":0.02613,"13.4-13.7":0.08361,"14.0-14.4":0.22992,"14.5-14.8":0.37101,"15.0-15.1":0.14631,"15.2-15.3":0.16722,"15.4":0.1855,"15.5":0.26389,"15.6-15.7":1.82631,"16.0":0.67409,"16.1":1.29069,"16.2":0.62967,"16.3":1.1679,"16.4":0.25082,"16.5":0.66886,"16.6-16.7":12.5281,"17.0":4.46256,"17.1":0.26911,"17.2":0.00784},P:{"4":0.05182,"20":0.04145,"21":0.12436,"22":3.91738,"23":0.78762,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0","13.0":0.01036,"14.0":0.01036,"15.0":0.01036,"16.0":0.02073,"17.0":0.02073,"18.0":0.01036,"19.0":0.02073},I:{"0":0.04066,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00012},A:{"11":0.02935,_:"6 7 8 9 10 5.5"},K:{"0":0.1941,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.45972},Q:{_:"13.1"},O:{"0":0.01022},H:{"0":0},L:{"0":19.66261}}; diff --git a/node_modules/caniuse-lite/data/regions/SG.js b/node_modules/caniuse-lite/data/regions/SG.js new file mode 100644 index 00000000..86cc6c4a --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SG.js @@ -0,0 +1 @@ +module.exports={C:{"44":0.00337,"48":0.01012,"61":0.00674,"72":0.00674,"78":0.03372,"83":0.00337,"88":0.00674,"91":0.00337,"102":0.00674,"103":0.00337,"104":0.00337,"105":0.00674,"106":0.01012,"107":0.00674,"108":0.01012,"109":0.01012,"110":0.00674,"111":0.00674,"112":0.00337,"113":0.01012,"114":0.00337,"115":0.11465,"116":0.00674,"117":0.04046,"118":1.00823,"119":0.26639,"120":0.00337,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 49 50 51 52 53 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 84 85 86 87 89 90 92 93 94 95 96 97 98 99 100 101 121 122 3.5 3.6"},D:{"26":0.00337,"34":0.02023,"38":0.09442,"41":0.00337,"47":0.02023,"48":0.00337,"49":0.01012,"50":0.00337,"53":0.02023,"55":0.00337,"56":0.01012,"61":0.00337,"62":0.00337,"63":0.00337,"65":0.00337,"67":0.00337,"68":0.00337,"69":0.00674,"70":0.00337,"71":0.00337,"72":0.00337,"73":0.01012,"74":0.00337,"75":0.01349,"76":0.00337,"77":0.22255,"78":0.02023,"79":0.27988,"80":0.01012,"81":0.0607,"83":0.02023,"84":0.01012,"85":0.20906,"86":0.04046,"87":0.22255,"88":0.00337,"89":0.01349,"90":0.00337,"91":0.01686,"92":0.01012,"93":0.00337,"94":0.02698,"95":0.01349,"96":0.01012,"97":0.00674,"98":0.0236,"99":0.03372,"100":0.04384,"101":0.05395,"102":0.0607,"103":0.09779,"104":0.04046,"105":0.08767,"106":0.09442,"107":0.09779,"108":0.12476,"109":0.75196,"110":0.08093,"111":0.09104,"112":0.1079,"113":0.08767,"114":1.76018,"115":0.11802,"116":0.9037,"117":8.64244,"118":8.15687,"119":0.02023,"120":0.01012,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 35 36 37 39 40 42 43 44 45 46 51 52 54 57 58 59 60 64 66 121 122"},F:{"28":0.0236,"36":0.01349,"46":0.05395,"74":0.01349,"89":0.00337,"92":0.00337,"93":0.00337,"94":0.00674,"95":0.01012,"101":0.00337,"102":0.39115,"103":0.11465,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 79 80 81 82 83 84 85 86 87 88 90 91 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00337,"92":0.00337,"103":0.00337,"105":0.00337,"106":0.00674,"107":0.02023,"108":0.01686,"109":0.05058,"110":0.01349,"111":0.01012,"112":0.00674,"113":0.01012,"114":0.01686,"115":0.0236,"116":0.09104,"117":1.30159,"118":1.48368,"119":0.00674,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 104"},E:{"8":0.00674,"13":0.01686,"14":0.05058,"15":0.01012,_:"0 4 5 6 7 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 11.1 17.2","9.1":0.00337,"12.1":0.00674,"13.1":0.05732,"14.1":0.12476,"15.1":0.0236,"15.2-15.3":0.01686,"15.4":0.04721,"15.5":0.08093,"15.6":0.3372,"16.0":0.0607,"16.1":0.11802,"16.2":0.07081,"16.3":0.22255,"16.4":0.0607,"16.5":0.19895,"16.6":1.81751,"17.0":0.54626,"17.1":0.03035},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0017,"5.0-5.1":0.0017,"6.0-6.1":0.00509,"7.0-7.1":0.01188,"8.1-8.4":0.0017,"9.0-9.2":0.01188,"9.3":0.04072,"10.0-10.2":0.0017,"10.3":0.05939,"11.0-11.2":0.0543,"11.3-11.4":0.01866,"12.0-12.1":0.01527,"12.2-12.5":0.26979,"13.0-13.1":0.00848,"13.2":0.04581,"13.3":0.01697,"13.4-13.7":0.0543,"14.0-14.4":0.14932,"14.5-14.8":0.24094,"15.0-15.1":0.09502,"15.2-15.3":0.10859,"15.4":0.12047,"15.5":0.17137,"15.6-15.7":1.18604,"16.0":0.43777,"16.1":0.8382,"16.2":0.40892,"16.3":0.75846,"16.4":0.16289,"16.5":0.43437,"16.6-16.7":8.136,"17.0":2.89808,"17.1":0.17477,"17.2":0.00509},P:{"4":0.52699,"20":0.03162,"21":0.09486,"22":2.67713,"23":0.60077,"5.0-5.4":0.04216,"6.2-6.4":0.01054,_:"7.2-7.4 8.2 9.2 11.1-11.2 14.0 15.0","10.1":0.01054,"12.0":0.01054,"13.0":0.02108,"16.0":0.02108,"17.0":0.01054,"18.0":0.01054,"19.0":0.02108},I:{"0":17.45484,"3":0,"4":0.00351,"2.1":0,"2.2":0.00526,"2.3":0,"4.1":0.00351,"4.2-4.3":0.01228,"4.4":0,"4.4.3-4.4.4":0.05263},A:{"8":0.01293,"9":0.0517,"10":0.00646,"11":0.16158,_:"6 7 5.5"},K:{"0":0.80862,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.55012},Q:{"13.1":0.01988},O:{"0":0.57001},H:{"0":0},L:{"0":24.92682}}; diff --git a/node_modules/caniuse-lite/data/regions/SH.js b/node_modules/caniuse-lite/data/regions/SH.js new file mode 100644 index 00000000..b287315e --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SH.js @@ -0,0 +1 @@ +module.exports={C:{"7":0.00693,"42":0.00693,"50":0.0277,"115":15.06188,"118":0.00693,_:"2 3 4 5 6 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 116 117 119 120 121 122 3.5 3.6"},D:{"11":0.06925,"50":0.0554,"55":0.00693,"60":0.04155,"70":0.2216,"87":0.65095,"109":1.82128,"111":0.02078,"116":0.0277,"117":0.23545,"118":42.5472,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 52 53 54 56 57 58 59 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 110 112 113 114 115 119 120 121 122"},F:{"103":0.6371,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00693,"13":0.0277,"14":0.00693,"15":0.00693,"17":0.00693,"18":0.00693,"117":0.90718,"118":2.37528,"119":0.03463,_:"16 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 15.1 15.2-15.3 15.4 15.5 15.6 16.0 16.1 16.2 16.3 16.4 16.5 16.6 17.0 17.1 17.2","12.1":0.0554,"13.1":0.00693,"14.1":0.00693},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00013,"5.0-5.1":0.00013,"6.0-6.1":0.0004,"7.0-7.1":0.00093,"8.1-8.4":0.00013,"9.0-9.2":0.00093,"9.3":0.00319,"10.0-10.2":0.00013,"10.3":0.00465,"11.0-11.2":0.00425,"11.3-11.4":0.00146,"12.0-12.1":0.0012,"12.2-12.5":0.02112,"13.0-13.1":0.00066,"13.2":0.00359,"13.3":0.00133,"13.4-13.7":0.00425,"14.0-14.4":0.01169,"14.5-14.8":0.01886,"15.0-15.1":0.00744,"15.2-15.3":0.0085,"15.4":0.00943,"15.5":0.01342,"15.6-15.7":0.09286,"16.0":0.03427,"16.1":0.06562,"16.2":0.03201,"16.3":0.05938,"16.4":0.01275,"16.5":0.03401,"16.6-16.7":0.63697,"17.0":0.22689,"17.1":0.01368,"17.2":0.0004},P:{"4":0.79725,"20":0.01022,"22":0.31685,"23":1.01189,_:"21 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 14.0 15.0 17.0 18.0 19.0","13.0":0.03066,"16.0":0.01022},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"9":0.02078,"11":0.0554,_:"6 7 8 10 5.5"},K:{"0":0,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{_:"0"},Q:{_:"13.1"},O:{"0":0.00923},H:{"0":0},L:{"0":31.3141}}; diff --git a/node_modules/caniuse-lite/data/regions/SI.js b/node_modules/caniuse-lite/data/regions/SI.js new file mode 100644 index 00000000..50f72179 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SI.js @@ -0,0 +1 @@ +module.exports={C:{"45":0.01036,"52":0.13471,"60":0.01036,"68":0.00518,"72":0.00518,"78":0.01554,"83":0.01554,"88":0.02072,"89":0.00518,"91":0.01036,"95":0.00518,"97":0.01036,"99":0.01036,"100":0.00518,"102":0.04145,"103":0.01036,"104":0.00518,"105":0.00518,"107":0.00518,"108":0.01036,"109":0.00518,"110":0.01036,"111":0.03627,"112":0.01036,"113":0.03109,"114":0.02072,"115":1.04138,"116":0.02591,"117":0.22278,"118":4.50747,"119":1.04138,"120":0.00518,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 84 85 86 87 90 92 93 94 96 98 101 106 121 122 3.5 3.6"},D:{"34":0.00518,"41":0.00518,"48":0.00518,"49":0.02072,"51":0.03627,"53":0.00518,"58":0.00518,"69":0.00518,"72":0.00518,"74":0.00518,"78":0.00518,"79":0.04145,"80":0.01036,"81":0.00518,"83":0.00518,"84":0.00518,"85":0.01554,"86":0.01036,"87":0.03109,"88":0.01036,"89":0.00518,"90":0.02072,"91":0.01036,"92":0.01554,"93":0.00518,"94":0.01554,"95":0.00518,"96":0.00518,"97":0.00518,"98":0.03109,"99":0.02072,"100":0.01554,"101":0.00518,"102":0.00518,"103":0.06735,"104":0.02072,"105":0.05699,"106":0.02591,"107":0.03109,"108":0.03109,"109":2.27446,"110":0.03109,"111":0.02591,"112":0.05699,"113":0.02591,"114":0.20206,"115":0.12953,"116":1.29525,"117":13.89026,"118":14.06642,"119":0.05699,"120":0.00518,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 42 43 44 45 46 47 50 52 54 55 56 57 59 60 61 62 63 64 65 66 67 68 70 71 73 75 76 77 121 122"},F:{"28":0.01554,"46":0.02072,"85":0.00518,"95":0.04145,"99":0.01036,"101":0.03627,"102":1.63202,"103":0.45593,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.00518},B:{"15":0.01036,"83":0.01036,"85":0.00518,"92":0.01554,"98":0.00518,"107":0.01036,"108":0.00518,"109":0.16579,"110":0.00518,"111":0.00518,"112":0.01036,"113":0.01554,"114":0.02072,"115":0.04663,"116":0.15543,"117":2.5646,"118":2.69412,"119":0.00518,_:"12 13 14 16 17 18 79 80 81 84 86 87 88 89 90 91 93 94 95 96 97 99 100 101 102 103 104 105 106"},E:{"9":0.00518,"14":0.02591,"15":0.00518,_:"0 4 5 6 7 8 10 11 12 13 3.1 3.2 5.1 6.1 7.1 10.1 11.1 17.2","9.1":0.00518,"12.1":0.00518,"13.1":0.06735,"14.1":0.29014,"15.1":0.09844,"15.2-15.3":0.01036,"15.4":0.02072,"15.5":0.02072,"15.6":0.18134,"16.0":0.02591,"16.1":0.05181,"16.2":0.11916,"16.3":0.18652,"16.4":0.06217,"16.5":0.24869,"16.6":0.73052,"17.0":0.45593,"17.1":0.04663},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00113,"5.0-5.1":0.00113,"6.0-6.1":0.00338,"7.0-7.1":0.0079,"8.1-8.4":0.00113,"9.0-9.2":0.0079,"9.3":0.02707,"10.0-10.2":0.00113,"10.3":0.03948,"11.0-11.2":0.03609,"11.3-11.4":0.01241,"12.0-12.1":0.01015,"12.2-12.5":0.17934,"13.0-13.1":0.00564,"13.2":0.03045,"13.3":0.01128,"13.4-13.7":0.03609,"14.0-14.4":0.09925,"14.5-14.8":0.16016,"15.0-15.1":0.06316,"15.2-15.3":0.07219,"15.4":0.08008,"15.5":0.11392,"15.6-15.7":0.7884,"16.0":0.291,"16.1":0.55718,"16.2":0.27182,"16.3":0.50417,"16.4":0.10828,"16.5":0.28874,"16.6-16.7":5.40825,"17.0":1.92644,"17.1":0.11617,"17.2":0.00338},P:{"4":0.13947,"20":0.05364,"21":0.12874,"22":2.67138,"23":0.53642,"5.0-5.4":0.02146,_:"6.2-6.4 8.2 9.2 10.1 12.0","7.2-7.4":0.01073,"11.1-11.2":0.01073,"13.0":0.02146,"14.0":0.02146,"15.0":0.01073,"16.0":0.01073,"17.0":0.01073,"18.0":0.01073,"19.0":0.03219},I:{"0":0.05752,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00017},A:{"8":0.02072,"9":0.00691,"11":0.07599,_:"6 7 10 5.5"},K:{"0":0.26499,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.84315},Q:{_:"13.1"},O:{"0":0.12045},H:{"0":0},L:{"0":32.44187}}; diff --git a/node_modules/caniuse-lite/data/regions/SK.js b/node_modules/caniuse-lite/data/regions/SK.js new file mode 100644 index 00000000..eef80b6f --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SK.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00497,"43":0.00497,"52":0.07952,"56":0.01491,"66":0.00497,"68":0.00994,"72":0.00497,"78":0.01988,"80":0.00497,"84":0.00497,"88":0.00994,"89":0.00497,"91":0.01988,"93":0.00497,"95":0.00497,"98":0.00497,"99":0.00994,"102":0.02982,"103":0.01491,"104":0.00497,"105":0.00994,"106":0.00497,"107":0.01491,"108":0.01988,"109":0.00497,"110":0.00994,"111":0.00994,"112":0.01491,"113":0.01988,"114":0.01988,"115":0.92939,"116":0.03976,"117":0.2982,"118":3.83684,"119":0.71568,"120":0.00497,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 67 69 70 71 73 74 75 76 77 79 81 82 83 85 86 87 90 92 94 96 97 100 101 121 122 3.5 3.6"},D:{"34":0.00994,"38":0.03976,"41":0.00497,"43":0.00497,"47":0.00497,"49":0.04473,"53":0.02982,"55":0.01491,"63":0.06958,"67":0.00497,"68":0.00994,"69":0.00497,"70":0.00497,"71":0.00994,"72":0.00497,"74":0.00497,"75":0.00497,"76":0.00497,"77":0.00497,"78":0.00497,"79":0.29323,"80":0.00994,"81":0.01491,"83":0.00994,"84":0.00497,"85":0.01988,"86":0.02485,"87":0.06461,"88":0.01988,"89":0.00994,"90":0.01988,"91":0.00497,"92":0.00497,"93":0.06461,"94":0.00497,"95":0.00994,"96":0.00994,"97":0.00497,"98":0.01491,"99":0.01491,"100":0.00994,"101":0.00994,"102":0.01988,"103":0.08946,"104":0.00994,"105":0.01491,"106":0.01988,"107":0.02485,"108":0.02982,"109":2.63907,"110":0.02982,"111":0.11928,"112":0.03479,"113":0.03479,"114":0.20874,"115":0.15904,"116":1.08843,"117":12.5741,"118":12.84745,"119":0.01491,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 42 44 45 46 48 50 51 52 54 56 57 58 59 60 61 62 64 65 66 73 120 121 122"},F:{"28":0.01988,"36":0.00497,"46":0.02982,"60":0.00497,"77":0.00994,"79":0.00497,"85":0.00994,"93":0.00497,"94":0.00497,"95":0.17892,"97":0.00497,"99":0.00497,"100":0.00994,"101":0.03479,"102":2.33093,"103":0.82005,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 80 81 82 83 84 86 87 88 89 90 91 92 96 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00497,"83":0.00497,"92":0.01491,"100":0.00497,"104":0.00497,"105":0.00994,"107":0.00497,"108":0.00497,"109":0.08449,"110":0.00994,"111":0.00497,"112":0.00994,"113":0.00994,"114":0.03479,"115":0.03479,"116":0.10934,"117":2.67386,"118":2.56452,"119":0.00497,_:"12 13 14 15 16 17 79 80 81 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103 106"},E:{"14":0.02982,"15":0.00994,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 10.1 11.1","9.1":0.01491,"12.1":0.02485,"13.1":0.03976,"14.1":0.07455,"15.1":0.00994,"15.2-15.3":0.01491,"15.4":0.01988,"15.5":0.03479,"15.6":0.1491,"16.0":0.02485,"16.1":0.0497,"16.2":0.05467,"16.3":0.0994,"16.4":0.05467,"16.5":0.14413,"16.6":0.57652,"17.0":0.46221,"17.1":0.03479,"17.2":0.00497},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00106,"5.0-5.1":0.00106,"6.0-6.1":0.00319,"7.0-7.1":0.00744,"8.1-8.4":0.00106,"9.0-9.2":0.00744,"9.3":0.02552,"10.0-10.2":0.00106,"10.3":0.03722,"11.0-11.2":0.03403,"11.3-11.4":0.0117,"12.0-12.1":0.00957,"12.2-12.5":0.16907,"13.0-13.1":0.00532,"13.2":0.02871,"13.3":0.01063,"13.4-13.7":0.03403,"14.0-14.4":0.09357,"14.5-14.8":0.15099,"15.0-15.1":0.05955,"15.2-15.3":0.06805,"15.4":0.0755,"15.5":0.1074,"15.6-15.7":0.74328,"16.0":0.27434,"16.1":0.52529,"16.2":0.25627,"16.3":0.47531,"16.4":0.10208,"16.5":0.27222,"16.6-16.7":5.09872,"17.0":1.81619,"17.1":0.10952,"17.2":0.00319},P:{"4":0.3622,"20":0.04139,"21":0.09314,"22":1.82133,"23":0.44498,"5.0-5.4":0.0207,"6.2-6.4":0.01035,_:"7.2-7.4 8.2 9.2 10.1 12.0 14.0","11.1-11.2":0.01035,"13.0":0.01035,"15.0":0.01035,"16.0":0.01035,"17.0":0.01035,"18.0":0.01035,"19.0":0.03105},I:{"0":0.07006,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.00021},A:{"8":0.00497,"9":0.00994,"11":0.05467,_:"6 7 10 5.5"},K:{"0":0.59857,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.27665},Q:{_:"13.1"},O:{"0":0.04527},H:{"0":0},L:{"0":36.70053}}; diff --git a/node_modules/caniuse-lite/data/regions/SL.js b/node_modules/caniuse-lite/data/regions/SL.js new file mode 100644 index 00000000..0c08ed81 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SL.js @@ -0,0 +1 @@ +module.exports={C:{"38":0.00329,"44":0.00165,"45":0.00165,"47":0.00329,"48":0.00329,"49":0.00165,"53":0.00165,"66":0.00165,"78":0.00165,"82":0.00165,"95":0.00658,"109":0.00165,"111":0.00165,"115":0.10205,"116":0.00494,"117":0.01317,"118":0.33249,"119":0.10534,"120":0.00988,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 46 50 51 52 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 102 103 104 105 106 107 108 110 112 113 114 121 122 3.5 3.6"},D:{"11":0.00329,"19":0.00329,"22":0.00165,"42":0.00494,"47":0.00165,"48":0.00329,"50":0.00329,"54":0.00329,"55":0.00329,"58":0.01152,"59":0.00165,"63":0.00494,"64":0.01975,"65":0.07572,"66":0.00165,"68":0.00165,"69":0.00165,"72":0.00494,"74":0.00329,"75":0.00329,"76":0.01481,"78":0.00165,"79":0.02469,"80":0.00494,"81":0.00988,"83":0.00494,"85":0.00988,"86":0.00658,"87":0.00658,"89":0.00329,"91":0.00329,"92":0.14979,"93":0.06913,"95":0.00823,"96":0.00658,"98":0.00658,"99":0.01975,"100":0.00494,"101":0.00165,"102":0.03457,"103":0.11851,"105":0.01646,"106":0.00494,"107":0.01811,"108":0.00658,"109":0.20081,"111":0.00658,"112":0.01811,"113":0.00823,"114":0.09711,"115":0.02798,"116":0.38846,"117":1.72172,"118":2.06738,"119":0.01152,"120":0.00329,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 49 51 52 53 56 57 60 61 62 67 70 71 73 77 84 88 90 94 97 104 110 121 122"},F:{"24":0.00165,"31":0.00165,"36":0.00165,"40":0.00165,"42":0.00165,"45":0.00165,"46":0.00165,"65":0.01811,"72":0.02304,"77":0.00165,"79":0.00329,"95":0.01481,"98":0.00165,"99":0.00329,"101":0.00329,"102":0.29793,"103":0.13003,_:"9 11 12 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 32 33 34 35 37 38 39 41 43 44 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 73 74 75 76 78 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00988,"13":0.01646,"14":0.00165,"15":0.00494,"16":0.00988,"17":0.00658,"18":0.04444,"84":0.00658,"89":0.00329,"90":0.00494,"92":0.03621,"100":0.00329,"101":0.00165,"106":0.00165,"107":0.00329,"108":0.01317,"109":0.00494,"110":0.00165,"111":0.00494,"112":0.00165,"114":0.01317,"115":0.00823,"116":0.03457,"117":0.62219,"118":0.60737,"119":0.03457,_:"79 80 81 83 85 86 87 88 91 93 94 95 96 97 98 99 102 103 104 105 113"},E:{"13":0.00165,"14":0.00658,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.02963,"11.1":0.00823,"12.1":0.00165,"13.1":0.01975,"14.1":0.02963,"15.1":0.00165,"15.2-15.3":0.00165,"15.4":0.00165,"15.5":0.00165,"15.6":0.05926,"16.0":0.00494,"16.1":0.00494,"16.2":0.00329,"16.3":0.01152,"16.4":0.00329,"16.5":0.00823,"16.6":0.09382,"17.0":0.02304,"17.1":0.00165},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00062,"5.0-5.1":0.00062,"6.0-6.1":0.00187,"7.0-7.1":0.00436,"8.1-8.4":0.00062,"9.0-9.2":0.00436,"9.3":0.01494,"10.0-10.2":0.00062,"10.3":0.02178,"11.0-11.2":0.01991,"11.3-11.4":0.00685,"12.0-12.1":0.0056,"12.2-12.5":0.09895,"13.0-13.1":0.00311,"13.2":0.0168,"13.3":0.00622,"13.4-13.7":0.01991,"14.0-14.4":0.05476,"14.5-14.8":0.08837,"15.0-15.1":0.03485,"15.2-15.3":0.03983,"15.4":0.04418,"15.5":0.06285,"15.6-15.7":0.43499,"16.0":0.16055,"16.1":0.30742,"16.2":0.14997,"16.3":0.27817,"16.4":0.05974,"16.5":0.15931,"16.6-16.7":2.98392,"17.0":1.06289,"17.1":0.0641,"17.2":0.00187},P:{"4":0.2764,"20":0.03071,"21":0.15356,"22":0.37877,"23":0.0819,"5.0-5.4":0.16379,"6.2-6.4":0.01024,"7.2-7.4":0.09213,_:"8.2 10.1 12.0 14.0","9.2":0.03071,"11.1-11.2":0.03071,"13.0":0.01024,"15.0":0.01024,"16.0":0.02047,"17.0":0.01024,"18.0":0.02047,"19.0":0.04095},I:{"0":0.11635,"3":0,"4":0.00002,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00008,"4.4":0,"4.4.3-4.4.4":0.00035},A:{"9":0.00165,"10":0.00165,"11":0.0214,_:"6 7 8 5.5"},K:{"0":11.39776,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.09188,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.04177},Q:{_:"13.1"},O:{"0":0.65153},H:{"0":3.93},L:{"0":67.44889}}; diff --git a/node_modules/caniuse-lite/data/regions/SM.js b/node_modules/caniuse-lite/data/regions/SM.js new file mode 100644 index 00000000..e6845350 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SM.js @@ -0,0 +1 @@ +module.exports={C:{"78":0.18984,"102":4.60136,"115":61.472,"118":0.42488,"119":0.12656,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 105 106 107 108 109 110 111 112 113 114 116 117 120 121 122 3.5 3.6"},D:{"103":0.00904,"105":0.00904,"109":0.80456,"110":0.00904,"114":0.00904,"115":0.00904,"116":3.45328,"117":9.32928,"118":8.19928,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 104 106 107 108 111 112 113 119 120 121 122"},F:{"102":0.01808,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"109":0.00904,"116":0.00904,"117":0.1356,"118":0.4972,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 110 111 112 113 114 115 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 15.1 15.2-15.3 15.4 15.5 16.0 16.2 17.2","12.1":0.00904,"13.1":0.01808,"14.1":0.35256,"15.6":0.08136,"16.1":0.00904,"16.3":0.0452,"16.4":0.01808,"16.5":0.0904,"16.6":0.24408,"17.0":0.08136,"17.1":0.02712},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00052,"5.0-5.1":0.00052,"6.0-6.1":0.00155,"7.0-7.1":0.00362,"8.1-8.4":0.00052,"9.0-9.2":0.00362,"9.3":0.01241,"10.0-10.2":0.00052,"10.3":0.01809,"11.0-11.2":0.01654,"11.3-11.4":0.00569,"12.0-12.1":0.00465,"12.2-12.5":0.08219,"13.0-13.1":0.00258,"13.2":0.01396,"13.3":0.00517,"13.4-13.7":0.01654,"14.0-14.4":0.04549,"14.5-14.8":0.0734,"15.0-15.1":0.02895,"15.2-15.3":0.03308,"15.4":0.0367,"15.5":0.05221,"15.6-15.7":0.36133,"16.0":0.13337,"16.1":0.25536,"16.2":0.12458,"16.3":0.23106,"16.4":0.04962,"16.5":0.13233,"16.6-16.7":2.47864,"17.0":0.8829,"17.1":0.05324,"17.2":0.00155},P:{"22":0.37279,"23":0.13462,_:"4 20 21 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0"},I:{"0":0.00191,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.00001},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0.00288,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.0173},Q:{_:"13.1"},O:{_:"0"},H:{"0":0},L:{"0":3.95686}}; diff --git a/node_modules/caniuse-lite/data/regions/SN.js b/node_modules/caniuse-lite/data/regions/SN.js new file mode 100644 index 00000000..7293e7c2 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SN.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.01748,"57":0.00437,"64":0.00219,"68":0.00219,"70":0.00656,"72":0.00219,"78":0.01967,"80":0.01311,"81":0.00219,"84":0.00219,"88":0.00219,"91":0.00219,"95":0.02185,"96":0.00219,"99":0.00219,"102":0.00219,"103":0.00219,"106":0.00656,"107":0.00656,"110":0.00219,"112":0.00219,"113":0.00219,"114":0.01311,"115":0.25128,"116":0.00874,"117":0.059,"118":0.80845,"119":0.20758,"120":0.00219,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 58 59 60 61 62 63 65 66 67 69 71 73 74 75 76 77 79 82 83 85 86 87 89 90 92 93 94 97 98 100 101 104 105 108 109 111 121 122 3.5 3.6"},D:{"11":0.00219,"34":0.00219,"39":0.00437,"42":0.00437,"43":0.00219,"49":0.04152,"56":0.00437,"65":0.00219,"67":0.00219,"68":0.00437,"69":0.00219,"70":0.00219,"71":0.00219,"72":0.00219,"73":0.01311,"74":0.00437,"75":0.00874,"76":0.00874,"77":0.00437,"79":0.03933,"80":0.00437,"81":0.00656,"83":0.01311,"84":0.00219,"85":0.00219,"86":0.02185,"87":0.02622,"88":0.02404,"89":0.00219,"90":0.00437,"91":0.03496,"93":0.07866,"94":0.00437,"95":0.02185,"96":0.00656,"97":0.00874,"98":0.01748,"99":0.00219,"100":0.00656,"101":0.00219,"102":0.059,"103":0.16169,"104":0.02841,"105":0.02841,"106":0.01093,"107":0.00437,"108":0.01748,"109":1.20394,"110":0.01311,"111":0.02404,"112":0.01093,"113":0.02622,"114":0.06118,"115":0.03059,"116":0.41078,"117":4.09251,"118":5.06265,"119":0.00656,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 40 41 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 62 63 64 66 78 92 120 121 122"},F:{"28":0.00219,"31":0.00219,"36":0.00219,"46":0.00219,"79":0.01967,"82":0.00874,"85":0.02841,"86":0.00437,"89":0.00219,"95":0.05681,"98":0.00437,"102":0.24909,"103":0.20321,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 84 87 88 90 91 92 93 94 96 97 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00437,"13":0.00219,"15":0.00219,"18":0.02841,"84":0.00219,"90":0.00219,"92":0.01311,"100":0.00656,"101":0.01748,"105":0.00219,"106":0.00219,"107":0.00656,"108":0.00437,"109":0.04807,"110":0.01093,"111":0.00219,"112":0.00874,"113":0.00656,"114":0.01967,"115":0.03933,"116":0.02622,"117":1.23453,"118":1.35252,_:"14 16 17 79 80 81 83 85 86 87 88 89 91 93 94 95 96 97 98 99 102 103 104 119"},E:{"11":0.00219,"13":0.00437,"14":0.00437,_:"0 4 5 6 7 8 9 10 12 15 3.1 3.2 6.1 9.1 10.1 15.2-15.3 17.2","5.1":0.00219,"7.1":0.0153,"11.1":0.00219,"12.1":0.00656,"13.1":0.03715,"14.1":0.03278,"15.1":0.01311,"15.4":0.00437,"15.5":0.00437,"15.6":0.06774,"16.0":0.00219,"16.1":0.00656,"16.2":0.0153,"16.3":0.01967,"16.4":0.01748,"16.5":0.06555,"16.6":0.09396,"17.0":0.08522,"17.1":0.00437},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00185,"5.0-5.1":0.00185,"6.0-6.1":0.00556,"7.0-7.1":0.01297,"8.1-8.4":0.00185,"9.0-9.2":0.01297,"9.3":0.04448,"10.0-10.2":0.00185,"10.3":0.06486,"11.0-11.2":0.0593,"11.3-11.4":0.02038,"12.0-12.1":0.01668,"12.2-12.5":0.29465,"13.0-13.1":0.00927,"13.2":0.05004,"13.3":0.01853,"13.4-13.7":0.0593,"14.0-14.4":0.16308,"14.5-14.8":0.26315,"15.0-15.1":0.10378,"15.2-15.3":0.1186,"15.4":0.13158,"15.5":0.18717,"15.6-15.7":1.29537,"16.0":0.47812,"16.1":0.91547,"16.2":0.44661,"16.3":0.82837,"16.4":0.1779,"16.5":0.47441,"16.6-16.7":8.88597,"17.0":3.16522,"17.1":0.19088,"17.2":0.00556},P:{"4":0.35602,"20":0.14241,"21":0.11189,"22":1.14942,"23":0.19327,_:"5.0-5.4 8.2 10.1","6.2-6.4":0.01017,"7.2-7.4":0.52894,"9.2":0.02034,"11.1-11.2":0.05086,"12.0":0.01017,"13.0":0.04069,"14.0":0.02034,"15.0":0.01017,"16.0":0.08138,"17.0":0.04069,"18.0":0.03052,"19.0":0.0712},I:{"0":0.02333,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00007},A:{"11":0.00656,_:"6 7 8 9 10 5.5"},K:{"0":0.24701,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00782,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.07816},Q:{_:"13.1"},O:{"0":0.03126},H:{"0":0.05},L:{"0":60.69948}}; diff --git a/node_modules/caniuse-lite/data/regions/SO.js b/node_modules/caniuse-lite/data/regions/SO.js new file mode 100644 index 00000000..06b5860d --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SO.js @@ -0,0 +1 @@ +module.exports={C:{"66":0.00221,"85":0.00221,"91":0.1195,"99":0.00221,"106":0.00221,"115":0.07303,"116":0.02656,"117":0.01549,"118":0.93167,"119":0.25892,"120":0.00443,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 92 93 94 95 96 97 98 100 101 102 103 104 105 107 108 109 110 111 112 113 114 121 122 3.5 3.6"},D:{"33":0.00221,"43":0.00221,"45":0.00221,"49":0.00221,"54":0.00443,"58":0.00221,"60":0.00664,"63":0.00221,"64":0.01328,"65":0.00885,"68":0.04205,"70":0.00664,"71":0.01107,"72":0.00221,"73":0.00664,"74":0.00664,"75":0.00443,"77":0.01549,"78":0.02213,"79":0.09737,"80":0.00443,"81":0.0177,"83":0.01992,"84":0.00221,"86":0.01992,"87":0.01992,"88":0.1018,"91":0.00221,"92":0.00443,"93":0.32752,"94":0.00443,"95":0.00221,"96":0.01328,"98":0.03983,"99":0.0177,"100":0.00221,"102":0.0177,"103":0.05533,"104":0.00221,"105":0.0332,"106":0.00885,"107":0.02213,"108":0.0509,"109":1.21494,"110":0.03541,"111":0.0509,"112":0.03541,"113":0.02877,"114":0.10401,"115":0.04647,"116":0.36293,"117":6.39557,"118":6.66113,"119":0.0177,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 44 46 47 48 50 51 52 53 55 56 57 59 61 62 66 67 69 76 85 89 90 97 101 120 121 122"},F:{"28":0.00221,"46":0.01328,"93":0.00221,"94":0.00221,"95":0.00664,"99":0.00221,"101":0.00221,"102":0.38949,"103":0.19032,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00885,"14":0.00221,"15":0.00221,"16":0.00221,"17":0.00221,"18":0.02434,"84":0.01107,"88":0.00221,"89":0.00664,"90":0.00221,"92":0.02877,"94":0.00221,"100":0.00443,"103":0.00221,"104":0.00221,"105":0.01549,"107":0.00664,"108":0.00221,"109":0.02213,"110":0.01107,"111":0.01992,"112":0.00664,"113":0.00664,"114":0.02434,"115":0.00885,"116":0.03762,"117":0.95602,"118":0.84979,"119":0.0177,_:"13 79 80 81 83 85 86 87 91 93 95 96 97 98 99 101 102 106"},E:{"14":0.00885,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.01328,"11.1":0.00221,"12.1":0.00221,"13.1":0.00443,"14.1":0.00885,"15.1":0.00885,"15.2-15.3":0.02213,"15.4":0.00221,"15.5":0.02877,"15.6":0.13721,"16.0":0.00221,"16.1":0.02213,"16.2":0.00664,"16.3":0.03762,"16.4":0.00664,"16.5":0.0509,"16.6":0.09073,"17.0":0.04205,"17.1":0.0177},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00082,"5.0-5.1":0.00082,"6.0-6.1":0.00246,"7.0-7.1":0.00575,"8.1-8.4":0.00082,"9.0-9.2":0.00575,"9.3":0.01972,"10.0-10.2":0.00082,"10.3":0.02875,"11.0-11.2":0.02629,"11.3-11.4":0.00904,"12.0-12.1":0.00739,"12.2-12.5":0.13062,"13.0-13.1":0.00411,"13.2":0.02218,"13.3":0.00822,"13.4-13.7":0.02629,"14.0-14.4":0.07229,"14.5-14.8":0.11666,"15.0-15.1":0.04601,"15.2-15.3":0.05258,"15.4":0.05833,"15.5":0.08297,"15.6-15.7":0.57425,"16.0":0.21195,"16.1":0.40584,"16.2":0.19799,"16.3":0.36722,"16.4":0.07887,"16.5":0.21031,"16.6-16.7":3.93923,"17.0":1.40317,"17.1":0.08462,"17.2":0.00246},P:{"4":0.16353,"20":0.17375,"21":0.32705,"22":2.01343,"23":0.15331,"5.0-5.4":0.01022,"6.2-6.4":0.03066,"7.2-7.4":0.73587,_:"8.2 10.1 12.0","9.2":0.01022,"11.1-11.2":0.04088,"13.0":0.02044,"14.0":0.04088,"15.0":0.04088,"16.0":0.09198,"17.0":0.06132,"18.0":0.1022,"19.0":0.3986},I:{"0":0.12396,"3":0,"4":0.00002,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00009,"4.4":0,"4.4.3-4.4.4":0.00037},A:{"7":0.00272,"11":0.03268,_:"6 8 9 10 5.5"},K:{"0":1.997,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00779,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.07787},Q:{_:"13.1"},O:{"0":1.65084},H:{"0":0.16},L:{"0":62.13921}}; diff --git a/node_modules/caniuse-lite/data/regions/SR.js b/node_modules/caniuse-lite/data/regions/SR.js new file mode 100644 index 00000000..6fbeeca3 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SR.js @@ -0,0 +1 @@ +module.exports={C:{"110":0.04781,"111":0.04781,"115":0.23638,"116":0.00266,"117":0.02922,"118":1.83264,"119":0.3559,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 112 113 114 120 121 122 3.5 3.6"},D:{"11":0.00266,"49":0.00531,"61":0.00797,"63":0.00266,"76":0.00797,"77":0.00266,"79":0.01328,"83":0.03453,"87":0.00266,"90":0.00266,"91":0.00531,"93":0.02125,"95":0.00797,"96":0.00266,"100":0.00531,"101":0.00531,"102":0.00266,"103":0.1567,"104":0.00797,"105":0.00266,"106":0.00266,"107":0.00531,"108":0.00531,"109":1.01725,"110":0.01062,"111":0.07702,"112":0.03187,"113":0.0903,"114":0.06374,"115":0.08234,"116":0.64275,"117":6.34518,"118":6.84451,"119":0.01062,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 62 64 65 66 67 68 69 70 71 72 73 74 75 78 80 81 84 85 86 88 89 92 94 97 98 99 120 121 122"},F:{"28":0.00531,"99":0.02922,"102":0.69322,"103":0.22576,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00266,"17":0.00266,"18":0.02125,"92":0.00531,"97":0.00531,"109":0.03187,"111":0.05578,"112":0.00531,"113":0.00531,"114":0.02125,"115":0.02125,"116":0.05578,"117":1.31738,"118":1.45018,"119":0.00266,_:"13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 98 99 100 101 102 103 104 105 106 107 108 110"},E:{"14":0.00266,"15":0.00266,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 15.1 15.2-15.3 17.2","5.1":0.00531,"13.1":0.02125,"14.1":0.23904,"15.4":0.00266,"15.5":0.00531,"15.6":0.08234,"16.0":0.02125,"16.1":0.06906,"16.2":0.00266,"16.3":0.01859,"16.4":0.05312,"16.5":0.11421,"16.6":0.46214,"17.0":0.14077,"17.1":0.01328},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00121,"5.0-5.1":0.00121,"6.0-6.1":0.00363,"7.0-7.1":0.00846,"8.1-8.4":0.00121,"9.0-9.2":0.00846,"9.3":0.02901,"10.0-10.2":0.00121,"10.3":0.04231,"11.0-11.2":0.03868,"11.3-11.4":0.0133,"12.0-12.1":0.01088,"12.2-12.5":0.1922,"13.0-13.1":0.00604,"13.2":0.03264,"13.3":0.01209,"13.4-13.7":0.03868,"14.0-14.4":0.10638,"14.5-14.8":0.17165,"15.0-15.1":0.06769,"15.2-15.3":0.07736,"15.4":0.08583,"15.5":0.12209,"15.6-15.7":0.84497,"16.0":0.31188,"16.1":0.59716,"16.2":0.29133,"16.3":0.54034,"16.4":0.11605,"16.5":0.30946,"16.6-16.7":5.7963,"17.0":2.06467,"17.1":0.12451,"17.2":0.00363},P:{"4":0.28848,"20":0.17515,"21":0.51515,"22":5.11028,"23":0.97878,_:"5.0-5.4 8.2 10.1","6.2-6.4":0.0103,"7.2-7.4":0.62848,"9.2":0.02061,"11.1-11.2":0.02061,"12.0":0.0103,"13.0":0.12364,"14.0":0.05151,"15.0":0.0103,"16.0":0.13394,"17.0":0.12364,"18.0":0.08242,"19.0":0.20606},I:{"0":0.02192,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00007},A:{"7":0.1051,"9":0.2102,"11":0.42041,_:"6 8 10 5.5"},K:{"0":0.37923,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.07344},Q:{"13.1":0.02938},O:{"0":0.81518},H:{"0":0.01},L:{"0":53.71262}}; diff --git a/node_modules/caniuse-lite/data/regions/ST.js b/node_modules/caniuse-lite/data/regions/ST.js new file mode 100644 index 00000000..a1d1884f --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/ST.js @@ -0,0 +1 @@ +module.exports={C:{"7":0.02535,"42":0.03549,"50":0.0507,"52":0.07098,"54":0.08619,"74":0.01521,"78":1.81506,"102":0.00507,"115":0.34476,"116":0.00507,"117":0.00507,"118":0.2535,"119":0.01521,_:"2 3 4 5 6 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 51 53 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 105 106 107 108 109 110 111 112 113 114 120 121 122 3.5 3.6"},D:{"11":0.01521,"40":0.01521,"43":0.09126,"47":0.04563,"52":0.01521,"55":0.06084,"57":0.0507,"59":0.02535,"60":0.17745,"65":0.0507,"76":0.00507,"79":0.20787,"81":0.00507,"86":0.00507,"87":0.02028,"88":0.18759,"89":5.46039,"90":0.02028,"95":0.10647,"99":0.02028,"102":0.00507,"109":4.54779,"111":0.06591,"112":0.02028,"113":0.00507,"114":0.1521,"115":0.02535,"116":0.48672,"117":9.30852,"118":9.93213,"120":0.01521,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 44 45 46 48 49 50 51 53 54 56 58 61 62 63 64 66 67 68 69 70 71 72 73 74 75 77 78 80 83 84 85 91 92 93 94 96 97 98 100 101 103 104 105 106 107 108 110 119 121 122"},F:{"74":0.00507,"79":0.02028,"95":0.01521,"102":0.26364,"103":0.06591,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.06591,"13":0.0507,"14":0.03549,"15":0.02028,"18":0.00507,"105":0.02028,"107":0.00507,"109":0.04056,"110":0.02028,"114":0.10647,"115":0.21294,"116":0.00507,"117":4.26894,"118":3.8532,_:"16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 106 108 111 112 113 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 12.1 15.4 15.5 15.6 16.0 16.1 16.2 16.4 17.2","11.1":0.02028,"13.1":0.01521,"14.1":0.01521,"15.1":0.01521,"15.2-15.3":0.17745,"16.3":0.38532,"16.5":0.01521,"16.6":0.00507,"17.0":0.1014,"17.1":0.23829},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00031,"5.0-5.1":0.00031,"6.0-6.1":0.00093,"7.0-7.1":0.00216,"8.1-8.4":0.00031,"9.0-9.2":0.00216,"9.3":0.00741,"10.0-10.2":0.00031,"10.3":0.0108,"11.0-11.2":0.00988,"11.3-11.4":0.00339,"12.0-12.1":0.00278,"12.2-12.5":0.04907,"13.0-13.1":0.00154,"13.2":0.00833,"13.3":0.00309,"13.4-13.7":0.00988,"14.0-14.4":0.02716,"14.5-14.8":0.04382,"15.0-15.1":0.01728,"15.2-15.3":0.01975,"15.4":0.02191,"15.5":0.03117,"15.6-15.7":0.21572,"16.0":0.07962,"16.1":0.15246,"16.2":0.07438,"16.3":0.13795,"16.4":0.02963,"16.5":0.07901,"16.6-16.7":1.47982,"17.0":0.52712,"17.1":0.03179,"17.2":0.00093},P:{"4":0.51372,"20":0.01048,"21":0.01048,"22":0.77582,"23":0.09436,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 14.0 15.0 17.0 18.0","7.2-7.4":0.0629,"11.1-11.2":0.01048,"12.0":0.02097,"13.0":0.04194,"16.0":0.01048,"19.0":0.10484},I:{"0":0.08829,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00027},A:{"9":0.02028,"11":0.21294,_:"6 7 8 10 5.5"},K:{"0":0.24129,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.01479,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.0493},Q:{"13.1":0.01479},O:{"0":2.65234},H:{"0":0.02},L:{"0":47.48975}}; diff --git a/node_modules/caniuse-lite/data/regions/SV.js b/node_modules/caniuse-lite/data/regions/SV.js new file mode 100644 index 00000000..c9e81a3f --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SV.js @@ -0,0 +1 @@ +module.exports={C:{"35":0.00846,"51":0.00423,"52":0.02116,"68":0.01692,"72":0.00423,"78":0.00423,"88":0.00423,"91":0.01269,"93":0.00423,"100":0.00423,"102":0.01269,"103":0.01269,"104":0.00846,"108":0.00423,"109":0.00423,"111":0.01269,"113":0.00846,"114":0.08039,"115":0.40618,"116":0.00846,"117":0.07616,"118":1.52739,"119":0.32579,"120":0.00423,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 94 95 96 97 98 99 101 105 106 107 110 112 121 122 3.5 3.6"},D:{"38":0.00423,"49":0.03808,"55":0.00423,"65":0.01269,"70":0.00846,"72":0.00423,"73":0.00423,"74":0.00846,"75":0.00846,"76":0.00846,"78":0.03385,"79":0.09731,"80":0.03385,"81":0.02116,"83":0.00846,"84":0.00846,"85":0.00423,"86":0.01692,"87":0.05923,"88":0.02116,"89":0.00423,"90":0.00423,"91":0.02116,"92":0.00846,"93":0.03385,"94":0.01269,"95":0.00423,"96":0.00423,"97":0.01269,"98":0.00423,"99":0.01269,"100":0.00846,"101":0.01269,"102":0.01269,"103":0.11847,"104":0.00846,"105":0.02539,"106":0.02116,"107":0.02539,"108":0.055,"109":2.22974,"110":0.04231,"111":0.02539,"112":0.02962,"113":0.08039,"114":0.13539,"115":0.13962,"116":0.85889,"117":12.55761,"118":12.06258,"119":0.01269,"120":0.00423,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 56 57 58 59 60 61 62 63 64 66 67 68 69 71 77 121 122"},F:{"28":0.00846,"66":0.00846,"72":0.00423,"77":0.00423,"95":0.08462,"101":0.00846,"102":1.6374,"103":0.26232,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 67 68 69 70 71 73 74 75 76 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00423,"15":0.03808,"18":0.00846,"85":0.00423,"87":0.00423,"92":0.02539,"98":0.00423,"100":0.00423,"103":0.00423,"104":0.00423,"105":0.00423,"106":0.01692,"107":0.00846,"108":0.00846,"109":0.04231,"110":0.00423,"111":0.00846,"112":0.01269,"113":0.01269,"114":0.02539,"115":0.04654,"116":0.07193,"117":2.32282,"118":2.27628,"119":0.00423,_:"13 14 16 17 79 80 81 83 84 86 88 89 90 91 93 94 95 96 97 99 101 102"},E:{"12":0.00423,"14":0.00846,"15":0.00423,_:"0 4 5 6 7 8 9 10 11 13 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.00423,"12.1":0.00423,"13.1":0.01269,"14.1":0.06347,"15.1":0.00423,"15.2-15.3":0.00846,"15.4":0.00846,"15.5":0.00846,"15.6":0.07193,"16.0":0.00846,"16.1":0.02539,"16.2":0.01692,"16.3":0.09308,"16.4":0.02116,"16.5":0.03385,"16.6":0.49503,"17.0":0.21155,"17.1":0.01269},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00074,"5.0-5.1":0.00074,"6.0-6.1":0.00223,"7.0-7.1":0.00521,"8.1-8.4":0.00074,"9.0-9.2":0.00521,"9.3":0.01785,"10.0-10.2":0.00074,"10.3":0.02603,"11.0-11.2":0.0238,"11.3-11.4":0.00818,"12.0-12.1":0.00669,"12.2-12.5":0.11824,"13.0-13.1":0.00372,"13.2":0.02008,"13.3":0.00744,"13.4-13.7":0.0238,"14.0-14.4":0.06544,"14.5-14.8":0.10559,"15.0-15.1":0.04164,"15.2-15.3":0.04759,"15.4":0.0528,"15.5":0.07511,"15.6-15.7":0.51979,"16.0":0.19186,"16.1":0.36735,"16.2":0.17921,"16.3":0.3324,"16.4":0.07139,"16.5":0.19037,"16.6-16.7":3.56568,"17.0":1.27011,"17.1":0.07659,"17.2":0.00223},P:{"4":0.0513,"20":0.2052,"21":0.12312,"22":2.2469,"23":0.33857,"5.0-5.4":0.01026,_:"6.2-6.4 8.2 9.2","7.2-7.4":0.12312,"10.1":0.01026,"11.1-11.2":0.03078,"12.0":0.01026,"13.0":0.09234,"14.0":0.02052,"15.0":0.01026,"16.0":0.04104,"17.0":0.03078,"18.0":0.02052,"19.0":0.06156},I:{"0":0.09757,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00007,"4.4":0,"4.4.3-4.4.4":0.00029},A:{"11":0.01692,_:"6 7 8 9 10 5.5"},K:{"0":0.3073,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.01154,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.24807},Q:{_:"13.1"},O:{"0":0.10384},H:{"0":0.01},L:{"0":48.37407}}; diff --git a/node_modules/caniuse-lite/data/regions/SY.js b/node_modules/caniuse-lite/data/regions/SY.js new file mode 100644 index 00000000..1d4e7414 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SY.js @@ -0,0 +1 @@ +module.exports={C:{"31":0.00303,"32":0.00152,"40":0.00152,"43":0.00455,"44":0.00152,"45":0.00303,"47":0.00303,"48":0.00455,"49":0.00152,"50":0.00303,"52":0.04551,"53":0.00152,"56":0.00303,"58":0.00152,"60":0.00152,"61":0.00152,"62":0.00303,"68":0.00152,"72":0.0091,"74":0.00152,"78":0.00303,"80":0.00152,"81":0.00152,"84":0.00303,"86":0.00455,"87":0.00152,"88":0.00455,"89":0.00152,"91":0.00303,"94":0.00152,"95":0.00152,"96":0.00152,"97":0.00152,"99":0.00303,"100":0.00152,"101":0.00152,"102":0.01517,"103":0.00303,"104":0.00152,"105":0.00152,"106":0.00455,"107":0.00152,"108":0.00303,"109":0.0091,"110":0.00303,"111":0.00303,"112":0.00455,"113":0.01972,"114":0.0091,"115":0.44448,"116":0.0091,"117":0.04399,"118":0.57494,"119":0.09254,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 33 34 35 36 37 38 39 41 42 46 51 54 55 57 59 63 64 65 66 67 69 70 71 73 75 76 77 79 82 83 85 90 92 93 98 120 121 122 3.5 3.6"},D:{"11":0.00152,"29":0.00152,"30":0.00152,"38":0.00455,"40":0.00152,"43":0.01365,"44":0.00152,"47":0.00152,"49":0.02427,"50":0.00152,"53":0.00152,"55":0.00152,"56":0.00607,"58":0.05006,"59":0.00303,"60":0.00152,"62":0.00152,"63":0.00759,"64":0.00759,"65":0.00303,"66":0.02124,"67":0.00303,"68":0.01365,"69":0.00607,"70":0.0182,"71":0.00607,"72":0.00303,"73":0.00455,"74":0.00607,"75":0.00303,"76":0.01365,"77":0.00455,"78":0.00607,"79":0.04703,"80":0.01365,"81":0.01214,"83":0.01365,"84":0.00303,"85":0.00607,"86":0.00759,"87":0.02579,"88":0.01669,"89":0.01062,"90":0.00759,"91":0.01669,"92":0.0091,"93":0.00455,"94":0.0091,"95":0.00607,"96":0.01669,"97":0.00759,"98":0.01062,"99":0.03337,"100":0.01669,"101":0.00607,"102":0.01972,"103":0.03034,"104":0.01214,"105":0.01669,"106":0.02124,"107":0.03186,"108":0.03641,"109":1.9008,"110":0.03337,"111":0.01669,"112":0.02579,"113":0.02882,"114":0.07888,"115":0.05765,"116":0.27154,"117":2.7306,"118":2.86865,"119":0.00455,"120":0.00152,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 31 32 33 34 35 36 37 39 41 42 45 46 48 51 52 54 57 61 121 122"},F:{"36":0.00152,"42":0.00152,"77":0.00152,"79":0.03489,"83":0.00152,"84":0.00152,"85":0.00607,"86":0.03034,"89":0.00455,"90":0.00152,"95":0.10467,"99":0.00152,"100":0.00303,"101":0.00455,"102":0.19266,"103":0.11074,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 80 81 82 87 88 91 92 93 94 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00152,"14":0.00152,"15":0.00152,"16":0.00455,"17":0.00152,"18":0.04096,"83":0.00152,"84":0.00455,"85":0.00152,"89":0.00152,"90":0.00152,"92":0.05613,"99":0.00152,"100":0.01062,"104":0.00152,"105":0.00152,"106":0.00152,"107":0.00152,"108":0.00607,"109":0.09254,"110":0.00152,"111":0.00152,"112":0.00455,"113":0.00607,"114":0.01214,"115":0.0091,"116":0.03337,"117":0.50364,"118":0.4733,"119":0.00152,_:"13 79 80 81 86 87 88 91 93 94 95 96 97 98 101 102 103"},E:{"14":0.0091,"15":0.00152,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 16.0 17.1 17.2","5.1":1.31524,"10.1":0.04248,"11.1":0.00152,"12.1":0.00152,"13.1":0.00303,"14.1":0.02427,"15.1":0.00607,"15.2-15.3":0.00152,"15.4":0.00152,"15.5":0.00303,"15.6":0.04096,"16.1":0.00607,"16.2":0.00152,"16.3":0.01517,"16.4":0.01669,"16.5":0.00759,"16.6":0.02124,"17.0":0.01214},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0004,"5.0-5.1":0.0004,"6.0-6.1":0.00119,"7.0-7.1":0.00277,"8.1-8.4":0.0004,"9.0-9.2":0.00277,"9.3":0.00951,"10.0-10.2":0.0004,"10.3":0.01386,"11.0-11.2":0.01268,"11.3-11.4":0.00436,"12.0-12.1":0.00356,"12.2-12.5":0.06298,"13.0-13.1":0.00198,"13.2":0.01069,"13.3":0.00396,"13.4-13.7":0.01268,"14.0-14.4":0.03486,"14.5-14.8":0.05625,"15.0-15.1":0.02218,"15.2-15.3":0.02535,"15.4":0.02812,"15.5":0.04001,"15.6-15.7":0.27688,"16.0":0.1022,"16.1":0.19568,"16.2":0.09546,"16.3":0.17706,"16.4":0.03803,"16.5":0.1014,"16.6-16.7":1.89934,"17.0":0.67655,"17.1":0.0408,"17.2":0.00119},P:{"4":1.93461,"20":0.18232,"21":0.29374,"22":0.97237,"23":0.10129,"5.0-5.4":0.08103,"6.2-6.4":0.19245,"7.2-7.4":0.24309,"8.2":0.06077,"9.2":0.19245,"10.1":0.0709,"11.1-11.2":0.1418,"12.0":0.06077,"13.0":0.20258,"14.0":0.23296,"15.0":0.08103,"16.0":0.20258,"17.0":0.29374,"18.0":0.11142,"19.0":0.24309},I:{"0":0.1097,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00008,"4.4":0,"4.4.3-4.4.4":0.00033},A:{"9":0.00152,"11":0.03944,_:"6 7 8 10 5.5"},K:{"0":0.84319,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.0933},Q:{_:"13.1"},O:{"0":1.17052},H:{"0":0.48},L:{"0":73.74798}}; diff --git a/node_modules/caniuse-lite/data/regions/SZ.js b/node_modules/caniuse-lite/data/regions/SZ.js new file mode 100644 index 00000000..150a84df --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/SZ.js @@ -0,0 +1 @@ +module.exports={C:{"28":0.00239,"47":0.00239,"52":0.00716,"60":0.00955,"79":0.00239,"91":0.00239,"95":0.00239,"104":0.00239,"110":0.00478,"111":0.00239,"114":0.00716,"115":0.05492,"116":0.02149,"117":0.03343,"118":0.28656,"119":0.06209,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 85 86 87 88 89 90 92 93 94 96 97 98 99 100 101 102 103 105 106 107 108 109 112 113 120 121 122 3.5 3.6"},D:{"11":0.00239,"39":0.00239,"49":0.00239,"56":0.00478,"57":0.00239,"65":0.00239,"67":0.00239,"68":0.00478,"69":0.00239,"70":0.02866,"72":0.00478,"74":0.00478,"77":0.00478,"78":0.00239,"80":0.00239,"81":0.00239,"83":0.00478,"84":0.00239,"85":0.00478,"86":0.00239,"87":0.00716,"88":0.00478,"89":0.01433,"90":0.00478,"91":0.00478,"92":0.00239,"93":0.00239,"94":0.00478,"95":0.00239,"97":0.00239,"98":0.00478,"99":0.00478,"102":0.01194,"103":0.03343,"104":0.02149,"105":0.00239,"106":0.00955,"107":0.00239,"108":0.03343,"109":0.86207,"110":0.10985,"111":0.00478,"112":0.00478,"113":0.0191,"114":0.07403,"115":0.0406,"116":0.19104,"117":4.03333,"118":7.31444,"119":0.00478,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 58 59 60 61 62 63 64 66 71 73 75 76 79 96 100 101 120 121 122"},F:{"36":0.00239,"37":0.00239,"42":0.00239,"68":0.02866,"78":0.00239,"79":0.00478,"81":0.00239,"82":0.00478,"85":0.00239,"94":0.00239,"95":0.02388,"102":0.22925,"103":0.16477,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 80 83 84 86 87 88 89 90 91 92 93 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.01433,"14":0.00478,"15":0.00955,"16":0.00239,"17":0.00478,"18":0.03104,"84":0.00716,"90":0.01672,"92":0.01194,"97":0.00239,"100":0.00239,"105":0.00955,"106":0.00478,"109":0.01194,"111":0.00239,"113":0.00478,"114":0.01433,"115":0.02627,"116":0.04776,"117":0.71879,"118":0.67342,_:"13 79 80 81 83 85 86 87 88 89 91 93 94 95 96 98 99 101 102 103 104 107 108 110 112 119"},E:{"13":0.00239,"14":0.00239,"15":0.00955,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 12.1 17.2","5.1":0.00955,"11.1":0.00478,"13.1":0.00478,"14.1":0.00478,"15.1":0.00716,"15.2-15.3":0.00478,"15.4":0.01194,"15.5":0.01194,"15.6":0.02388,"16.0":0.00478,"16.1":0.00478,"16.2":0.00239,"16.3":0.00955,"16.4":0.00955,"16.5":0.11224,"16.6":0.04298,"17.0":0.06448,"17.1":0.00478},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00026,"5.0-5.1":0.00026,"6.0-6.1":0.00078,"7.0-7.1":0.00182,"8.1-8.4":0.00026,"9.0-9.2":0.00182,"9.3":0.00623,"10.0-10.2":0.00026,"10.3":0.00908,"11.0-11.2":0.00831,"11.3-11.4":0.00286,"12.0-12.1":0.00234,"12.2-12.5":0.04127,"13.0-13.1":0.0013,"13.2":0.00701,"13.3":0.0026,"13.4-13.7":0.00831,"14.0-14.4":0.02284,"14.5-14.8":0.03686,"15.0-15.1":0.01454,"15.2-15.3":0.01661,"15.4":0.01843,"15.5":0.02622,"15.6-15.7":0.18144,"16.0":0.06697,"16.1":0.12823,"16.2":0.06256,"16.3":0.11603,"16.4":0.02492,"16.5":0.06645,"16.6-16.7":1.24463,"17.0":0.44334,"17.1":0.02674,"17.2":0.00078},P:{"4":0.1537,"20":0.03074,"21":0.26642,"22":0.88124,"23":0.1537,_:"5.0-5.4 8.2 10.1","6.2-6.4":0.02049,"7.2-7.4":1.27062,"9.2":0.01025,"11.1-11.2":0.09222,"12.0":0.01025,"13.0":0.01025,"14.0":0.01025,"15.0":0.01025,"16.0":0.05123,"17.0":0.06148,"18.0":0.03074,"19.0":0.13321},I:{"0":0.0833,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00025},A:{"11":0.0191,_:"6 7 8 9 10 5.5"},K:{"0":12.45101,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.08373,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.11418},Q:{_:"13.1"},O:{"0":0.86016},H:{"0":1.89},L:{"0":62.59068}}; diff --git a/node_modules/caniuse-lite/data/regions/TC.js b/node_modules/caniuse-lite/data/regions/TC.js new file mode 100644 index 00000000..fd02a3b4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/TC.js @@ -0,0 +1 @@ +module.exports={C:{"115":1.48603,"116":0.00462,"118":0.85839,"119":0.10615,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 117 120 121 122 3.5 3.6"},D:{"29":0.02308,"33":0.20306,"49":0.01385,"66":0.00462,"72":0.00462,"75":0.02769,"76":0.01385,"79":0.08769,"83":0.01385,"87":0.00462,"88":0.03692,"91":0.00462,"92":0.01846,"93":0.07846,"96":0.00462,"100":0.01846,"103":0.11076,"105":0.00923,"107":0.00923,"109":0.38305,"110":0.01846,"112":0.05538,"113":0.20768,"114":0.07384,"115":0.06,"116":2.14136,"117":12.7374,"118":7.7532,"119":0.12461,"120":0.01846,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 73 74 77 78 80 81 84 85 86 89 90 94 95 97 98 99 101 102 104 106 108 111 121 122"},F:{"95":0.11538,"101":0.01385,"102":0.21691,"103":0.08769,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.13845,"85":0.00462,"92":0.02308,"109":0.24921,"110":0.00923,"111":0.06,"112":0.00462,"114":0.02308,"115":0.00923,"116":0.10615,"117":4.36118,"118":6.23025,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 113 119"},E:{"12":0.00923,"14":0.02308,"15":0.01846,_:"0 4 5 6 7 8 9 10 11 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 17.2","13.1":0.02769,"14.1":0.17076,"15.1":0.05538,"15.2-15.3":0.20768,"15.4":0.00462,"15.5":0.00462,"15.6":0.35997,"16.0":0.02769,"16.1":0.3369,"16.2":0.00462,"16.3":0.31382,"16.4":0.13384,"16.5":0.29998,"16.6":3.18435,"17.0":0.50304,"17.1":0.00462},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00212,"5.0-5.1":0.00212,"6.0-6.1":0.00635,"7.0-7.1":0.01481,"8.1-8.4":0.00212,"9.0-9.2":0.01481,"9.3":0.05078,"10.0-10.2":0.00212,"10.3":0.07405,"11.0-11.2":0.0677,"11.3-11.4":0.02327,"12.0-12.1":0.01904,"12.2-12.5":0.33641,"13.0-13.1":0.01058,"13.2":0.05713,"13.3":0.02116,"13.4-13.7":0.0677,"14.0-14.4":0.18619,"14.5-14.8":0.30044,"15.0-15.1":0.11848,"15.2-15.3":0.13541,"15.4":0.15022,"15.5":0.21369,"15.6-15.7":1.47892,"16.0":0.54587,"16.1":1.04519,"16.2":0.5099,"16.3":0.94575,"16.4":0.20311,"16.5":0.54164,"16.6-16.7":10.1451,"17.0":3.61373,"17.1":0.21792,"17.2":0.00635},P:{"4":0.04461,"20":0.0223,"21":0.08922,"22":2.17465,"23":0.50184,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 11.1-11.2 12.0 14.0 15.0 17.0","7.2-7.4":0.28995,"13.0":0.04461,"16.0":0.05576,"18.0":0.05576,"19.0":0.0223},I:{"0":0.03215,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.0001},A:{"11":0.04154,_:"6 7 8 9 10 5.5"},K:{"0":0.08616,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.02693},Q:{_:"13.1"},O:{"0":0.18309},H:{"0":0},L:{"0":30.43732}}; diff --git a/node_modules/caniuse-lite/data/regions/TD.js b/node_modules/caniuse-lite/data/regions/TD.js new file mode 100644 index 00000000..1284863b --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/TD.js @@ -0,0 +1 @@ +module.exports={C:{"30":0.0008,"43":0.0008,"44":0.0016,"47":0.0008,"48":0.0008,"49":0.0008,"72":0.0008,"78":0.0008,"93":0.00399,"95":0.01037,"96":0.0016,"100":0.00559,"102":0.0008,"113":0.0008,"114":0.0008,"115":0.1995,"117":0.02075,"118":0.4389,"119":0.14364,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 38 39 40 41 42 45 46 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 94 97 98 99 101 103 104 105 106 107 108 109 110 111 112 116 120 121 122 3.5 3.6"},D:{"25":0.0008,"50":0.00239,"51":0.0008,"53":0.0008,"57":0.0016,"58":0.0016,"59":0.0008,"63":0.0016,"64":0.0008,"66":0.0008,"67":0.0008,"70":0.0008,"71":0.0008,"77":0.0008,"78":0.0016,"79":0.0008,"80":0.00319,"81":0.0016,"83":0.00239,"87":0.0008,"88":0.00239,"92":0.0008,"94":0.01995,"95":0.01516,"99":0.02713,"102":0.0008,"103":0.00319,"104":0.0008,"105":0.00958,"106":0.0016,"107":0.00319,"109":0.08858,"110":0.0008,"111":0.00958,"112":0.0016,"113":0.0016,"114":0.01037,"115":0.01117,"116":0.04469,"117":0.84269,"118":1.11002,"119":0.0016,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 52 54 55 56 60 61 62 65 68 69 72 73 74 75 76 84 85 86 89 90 91 93 96 97 98 100 101 108 120 121 122"},F:{"40":0.0016,"45":0.0008,"65":0.0008,"74":0.0008,"79":0.00239,"96":0.0008,"99":0.0008,"101":0.00319,"102":0.02633,"103":0.01835,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 75 76 77 78 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00319,"13":0.0008,"14":0.0016,"15":0.0008,"17":0.0016,"18":0.01357,"84":0.00399,"89":0.0008,"90":0.00319,"91":0.0008,"92":0.00638,"100":0.0008,"105":0.0008,"106":0.0008,"107":0.00479,"108":0.0008,"109":0.05905,"110":0.00239,"111":0.02873,"112":0.00319,"113":0.00239,"114":0.0008,"115":0.01596,"116":0.01436,"117":0.29686,"118":0.19312,"119":0.0008,_:"16 79 80 81 83 85 86 87 88 93 94 95 96 97 98 99 101 102 103 104"},E:{"14":0.0008,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 14.1 15.1 15.2-15.3 15.4 16.0 17.1 17.2","5.1":0.01117,"13.1":0.00319,"15.5":0.0008,"15.6":0.00958,"16.1":0.0008,"16.2":0.00239,"16.3":0.0016,"16.4":0.0016,"16.5":0.0016,"16.6":0.00319,"17.0":0.00798},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00056,"5.0-5.1":0.00056,"6.0-6.1":0.00167,"7.0-7.1":0.0039,"8.1-8.4":0.00056,"9.0-9.2":0.0039,"9.3":0.01338,"10.0-10.2":0.00056,"10.3":0.01952,"11.0-11.2":0.01784,"11.3-11.4":0.00613,"12.0-12.1":0.00502,"12.2-12.5":0.08866,"13.0-13.1":0.00279,"13.2":0.01506,"13.3":0.00558,"13.4-13.7":0.01784,"14.0-14.4":0.04907,"14.5-14.8":0.07919,"15.0-15.1":0.03123,"15.2-15.3":0.03569,"15.4":0.03959,"15.5":0.05632,"15.6-15.7":0.38979,"16.0":0.14387,"16.1":0.27547,"16.2":0.13439,"16.3":0.24927,"16.4":0.05353,"16.5":0.14276,"16.6-16.7":2.67389,"17.0":0.95245,"17.1":0.05744,"17.2":0.00167},P:{"4":0.03046,"20":0.09137,"21":0.22335,"22":0.53808,"23":0.07107,_:"5.0-5.4 6.2-6.4 8.2 10.1 12.0","7.2-7.4":0.16244,"9.2":0.04061,"11.1-11.2":0.05076,"13.0":0.17259,"14.0":0.05076,"15.0":0.04061,"16.0":0.08122,"17.0":0.05076,"18.0":0.12183,"19.0":0.43655},I:{"0":0.00916,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00003},A:{"11":0.00638,_:"6 7 8 9 10 5.5"},K:{"0":1.92045,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.09202,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.04601},Q:{"13.1":0.0092},O:{"0":0.10122},H:{"0":0.15},L:{"0":86.02144}}; diff --git a/node_modules/caniuse-lite/data/regions/TG.js b/node_modules/caniuse-lite/data/regions/TG.js new file mode 100644 index 00000000..e16b7749 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/TG.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.01388,"64":0.00347,"72":0.0243,"76":0.00347,"87":0.00694,"88":0.00347,"94":0.00347,"99":0.00347,"100":0.00347,"102":0.00694,"103":0.00694,"108":0.00694,"109":0.00694,"110":0.01041,"111":0.03124,"112":0.02777,"113":0.00694,"114":0.0243,"115":0.91634,"116":0.02083,"117":0.08678,"118":2.24574,"119":0.57272,"120":0.00347,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 65 66 67 68 69 70 71 73 74 75 77 78 79 80 81 82 83 84 85 86 89 90 91 92 93 95 96 97 98 101 104 105 106 107 121 122 3.5 3.6"},D:{"11":0.00694,"33":0.06248,"34":0.02777,"39":0.00347,"40":0.00347,"41":0.00347,"43":0.01736,"47":0.11801,"49":0.00347,"50":0.00347,"56":0.00347,"58":0.00694,"60":0.00347,"63":0.00694,"64":0.00347,"65":0.01388,"66":0.00694,"69":0.00347,"70":0.00347,"71":0.00347,"74":0.00347,"75":0.06942,"76":0.01736,"77":0.00694,"79":0.04165,"80":0.00347,"81":0.00694,"85":0.00347,"87":0.00694,"88":0.01388,"89":0.00347,"90":0.05207,"91":0.00347,"92":0.00347,"93":0.24991,"94":0.00347,"95":0.22214,"96":0.01041,"98":0.01041,"99":0.03818,"100":0.00694,"101":0.00347,"102":0.01388,"103":0.07636,"104":0.00694,"105":0.48594,"106":0.03124,"107":0.0243,"108":0.03124,"109":4.56784,"110":0.02083,"111":0.01736,"112":0.01041,"113":0.00694,"114":0.10413,"115":0.08678,"116":0.36446,"117":5.19609,"118":6.2721,"119":0.00347,"120":0.00347,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 36 37 38 42 44 45 46 48 51 52 53 54 55 57 59 61 62 67 68 72 73 78 83 84 86 97 121 122"},F:{"34":0.00347,"79":0.01041,"82":0.01041,"85":0.05554,"87":0.20132,"90":0.07289,"95":0.10413,"101":0.04859,"102":0.5033,"103":0.479,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 84 86 88 89 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.03124,"13":0.00347,"14":0.00347,"17":0.00347,"18":0.0243,"84":0.00694,"85":0.00347,"89":0.00347,"90":0.00347,"92":0.03124,"109":0.05901,"110":0.00347,"111":0.00347,"112":0.00347,"113":0.00347,"114":0.02777,"115":0.02777,"116":0.02777,"117":2.26309,"118":2.15202,"119":0.00694,_:"15 16 79 80 81 83 86 87 88 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108"},E:{"14":0.09372,"15":0.00347,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 12.1 15.1 15.2-15.3 15.4 15.5 16.0 16.1 16.2 17.1 17.2","5.1":0.01736,"11.1":0.00347,"13.1":0.00347,"14.1":0.00694,"15.6":0.03818,"16.3":0.00694,"16.4":0.00347,"16.5":0.01041,"16.6":0.02083,"17.0":0.04512},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00067,"5.0-5.1":0.00067,"6.0-6.1":0.00201,"7.0-7.1":0.00468,"8.1-8.4":0.00067,"9.0-9.2":0.00468,"9.3":0.01606,"10.0-10.2":0.00067,"10.3":0.02342,"11.0-11.2":0.02142,"11.3-11.4":0.00736,"12.0-12.1":0.00602,"12.2-12.5":0.10641,"13.0-13.1":0.00335,"13.2":0.01807,"13.3":0.00669,"13.4-13.7":0.02142,"14.0-14.4":0.05889,"14.5-14.8":0.09503,"15.0-15.1":0.03748,"15.2-15.3":0.04283,"15.4":0.04751,"15.5":0.06759,"15.6-15.7":0.46779,"16.0":0.17266,"16.1":0.3306,"16.2":0.16128,"16.3":0.29914,"16.4":0.06425,"16.5":0.17132,"16.6-16.7":3.20892,"17.0":1.14303,"17.1":0.06893,"17.2":0.00201},P:{"4":0.17576,"21":0.02197,"22":0.39547,"23":0.03296,_:"20 5.0-5.4 6.2-6.4 8.2 9.2 10.1 11.1-11.2 12.0 14.0 15.0 16.0 18.0 19.0","7.2-7.4":0.03296,"13.0":0.02197,"17.0":0.01099},I:{"0":0.41572,"3":0,"4":0.00008,"2.1":0,"2.2":0.00013,"2.3":0,"4.1":0.00008,"4.2-4.3":0.00029,"4.4":0,"4.4.3-4.4.4":0.00125},A:{"11":0.01041,_:"6 7 8 9 10 5.5"},K:{"0":1.69556,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.01959,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.12405},Q:{"13.1":0.03265},O:{"0":0.31339},H:{"0":0.57},L:{"0":60.13141}}; diff --git a/node_modules/caniuse-lite/data/regions/TH.js b/node_modules/caniuse-lite/data/regions/TH.js new file mode 100644 index 00000000..3670bf83 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/TH.js @@ -0,0 +1 @@ +module.exports={C:{"47":0.00334,"52":0.01338,"53":0.01338,"55":0.02341,"56":0.92629,"66":0.00334,"77":0.00334,"78":0.00669,"79":0.00334,"83":0.00334,"85":0.00334,"88":0.00334,"89":0.00334,"96":0.00334,"99":0.00334,"102":0.00334,"103":0.00334,"105":0.00334,"106":0.00334,"108":0.00669,"109":0.00334,"110":0.00669,"111":0.00334,"112":0.00334,"113":0.00669,"114":0.00334,"115":0.16386,"116":0.00334,"117":0.02341,"118":0.67883,"119":0.15382,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 54 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 80 81 82 84 86 87 90 91 92 93 94 95 97 98 100 101 104 107 120 121 122 3.5 3.6"},D:{"25":0.05685,"37":0.0301,"38":0.01003,"41":0.00334,"43":0.00669,"49":0.02341,"50":0.00334,"53":0.01672,"55":0.00334,"56":0.00669,"57":0.00334,"58":0.00334,"63":0.00334,"65":0.00334,"68":0.01338,"69":0.00334,"70":0.00334,"71":0.00334,"72":0.00334,"73":0.01338,"74":0.02341,"75":0.00669,"76":0.00334,"77":0.00334,"78":0.00669,"79":0.21402,"80":0.01338,"81":0.00669,"83":0.01338,"84":0.00669,"85":0.01003,"86":0.00669,"87":0.0535,"88":0.02006,"89":0.01003,"90":0.01003,"91":0.02675,"92":0.18058,"93":0.00334,"94":0.01003,"95":0.01003,"96":0.00669,"97":0.01338,"98":0.00334,"99":0.02341,"100":0.01003,"101":0.0301,"102":0.03678,"103":0.04013,"104":0.01003,"105":0.02675,"106":0.02675,"107":0.04013,"108":0.05016,"109":2.30402,"110":0.01672,"111":0.03344,"112":0.0301,"113":0.05016,"114":0.09698,"115":0.07022,"116":0.4715,"117":8.6643,"118":9.49362,"119":0.02341,"120":0.00669,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36 39 40 42 44 45 46 47 48 51 52 54 59 60 61 62 64 66 67 121 122"},F:{"28":0.01003,"36":0.00334,"46":0.01003,"95":0.02006,"102":0.27755,"103":0.09698,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00669,"84":0.00334,"92":0.01003,"100":0.00334,"107":0.00334,"108":0.01003,"109":0.0301,"110":0.00334,"111":0.00334,"112":0.00669,"113":0.00669,"114":0.03678,"115":0.01672,"116":0.03678,"117":1.36435,"118":1.46467,"119":0.00669,_:"12 13 14 15 16 17 79 80 81 83 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103 104 105 106"},E:{"13":0.00334,"14":0.02341,"15":0.00669,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 17.2","9.1":0.00669,"11.1":0.00334,"12.1":0.00334,"13.1":0.0301,"14.1":0.13042,"15.1":0.06688,"15.2-15.3":0.01003,"15.4":0.03678,"15.5":0.04682,"15.6":0.20398,"16.0":0.02006,"16.1":0.12707,"16.2":0.07357,"16.3":0.22405,"16.4":0.05016,"16.5":0.1371,"16.6":1.37773,"17.0":0.81928,"17.1":0.04013},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00204,"5.0-5.1":0.00204,"6.0-6.1":0.00611,"7.0-7.1":0.01427,"8.1-8.4":0.00204,"9.0-9.2":0.01427,"9.3":0.04891,"10.0-10.2":0.00204,"10.3":0.07133,"11.0-11.2":0.06522,"11.3-11.4":0.02242,"12.0-12.1":0.01834,"12.2-12.5":0.32405,"13.0-13.1":0.01019,"13.2":0.05503,"13.3":0.02038,"13.4-13.7":0.06522,"14.0-14.4":0.17935,"14.5-14.8":0.28941,"15.0-15.1":0.11413,"15.2-15.3":0.13044,"15.4":0.1447,"15.5":0.20584,"15.6-15.7":1.42461,"16.0":0.52582,"16.1":1.00681,"16.2":0.49117,"16.3":0.91102,"16.4":0.19565,"16.5":0.52175,"16.6-16.7":9.77253,"17.0":3.48102,"17.1":0.20992,"17.2":0.00611},P:{"4":0.27255,"20":0.08386,"21":0.15724,"22":1.83447,"23":0.40882,"5.0-5.4":0.02097,"6.2-6.4":0.0629,"7.2-7.4":0.09434,_:"8.2 10.1 12.0","9.2":0.02097,"11.1-11.2":0.08386,"13.0":0.03145,"14.0":0.02097,"15.0":0.01048,"16.0":0.04193,"17.0":0.0629,"18.0":0.04193,"19.0":0.17821},I:{"0":0.03311,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.0001},A:{"8":0.00711,"9":0.00355,"10":0.00355,"11":0.27003,_:"6 7 5.5"},K:{"0":0.28618,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.11981},Q:{"13.1":0.00666},O:{"0":0.15974},H:{"0":0.02},L:{"0":43.50085}}; diff --git a/node_modules/caniuse-lite/data/regions/TJ.js b/node_modules/caniuse-lite/data/regions/TJ.js new file mode 100644 index 00000000..f8d060aa --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/TJ.js @@ -0,0 +1 @@ +module.exports={C:{"29":0.002,"32":0.002,"35":0.002,"52":0.00999,"72":0.002,"81":0.002,"85":0.004,"90":0.002,"99":0.06993,"100":0.002,"106":0.26374,"107":0.00599,"110":0.002,"115":0.17582,"116":0.004,"117":0.004,"118":0.27572,"119":0.03596,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 33 34 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 82 83 84 86 87 88 89 91 92 93 94 95 96 97 98 101 102 103 104 105 108 109 111 112 113 114 120 121 122 3.5 3.6"},D:{"11":0.00999,"35":0.004,"37":0.002,"38":0.00599,"40":0.00999,"44":0.02198,"46":0.004,"47":0.002,"49":0.05594,"53":0.002,"56":0.004,"57":0.002,"59":0.002,"60":0.004,"62":0.002,"66":0.002,"68":0.002,"69":0.00599,"70":0.002,"71":0.01399,"72":0.002,"73":0.002,"74":0.002,"75":0.002,"76":0.00599,"78":0.002,"79":0.01998,"80":0.004,"81":0.00799,"83":0.004,"86":0.24176,"87":0.00599,"88":0.00599,"89":0.01598,"90":0.04595,"91":0.01399,"92":0.002,"93":0.002,"94":0.00799,"95":0.004,"96":0.01598,"97":0.00999,"98":0.01798,"99":0.02597,"100":0.00599,"101":0.002,"102":0.04196,"103":0.00799,"104":0.00799,"105":0.25574,"106":0.13786,"107":0.72727,"108":0.32767,"109":2.41159,"110":0.00999,"111":0.004,"112":0.37163,"113":0.01998,"114":0.06593,"115":0.03596,"116":0.22577,"117":2.64136,"118":3.22477,"119":0.002,"120":0.002,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 39 41 42 43 45 48 50 51 52 54 55 58 61 63 64 65 67 77 84 85 121 122"},F:{"29":0.002,"36":0.002,"42":0.004,"78":0.00599,"79":0.04795,"81":0.004,"82":0.002,"85":0.00799,"86":0.01598,"87":0.002,"88":0.002,"89":0.002,"90":0.002,"95":0.13387,"98":0.002,"99":0.002,"101":0.01399,"102":0.25574,"103":0.25375,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 83 84 91 92 93 94 96 97 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.002},B:{"12":0.002,"13":0.00799,"14":0.00599,"15":0.00799,"16":0.00799,"18":0.02398,"81":0.002,"84":0.004,"85":0.002,"90":0.002,"91":0.004,"92":0.00999,"94":0.002,"96":0.002,"97":0.002,"98":0.002,"100":0.00599,"101":0.002,"109":0.04196,"111":0.002,"112":0.00799,"113":0.00599,"114":0.004,"115":0.00599,"116":0.02597,"117":0.44555,"118":0.47353,"119":0.01798,_:"17 79 80 83 86 87 88 89 93 95 99 102 103 104 105 106 107 108 110"},E:{"14":0.01998,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 13.1 17.2","5.1":0.64136,"12.1":0.002,"14.1":0.00799,"15.1":0.002,"15.2-15.3":0.004,"15.4":0.00599,"15.5":0.002,"15.6":0.02597,"16.0":0.002,"16.1":0.02198,"16.2":0.01199,"16.3":0.03596,"16.4":0.01798,"16.5":0.01598,"16.6":0.0959,"17.0":0.03996,"17.1":0.002},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00072,"5.0-5.1":0.00072,"6.0-6.1":0.00217,"7.0-7.1":0.00506,"8.1-8.4":0.00072,"9.0-9.2":0.00506,"9.3":0.01734,"10.0-10.2":0.00072,"10.3":0.02529,"11.0-11.2":0.02312,"11.3-11.4":0.00795,"12.0-12.1":0.0065,"12.2-12.5":0.11489,"13.0-13.1":0.00361,"13.2":0.01951,"13.3":0.00723,"13.4-13.7":0.02312,"14.0-14.4":0.06359,"14.5-14.8":0.10261,"15.0-15.1":0.04046,"15.2-15.3":0.04625,"15.4":0.0513,"15.5":0.07298,"15.6-15.7":0.50508,"16.0":0.18643,"16.1":0.35695,"16.2":0.17414,"16.3":0.32299,"16.4":0.06937,"16.5":0.18498,"16.6-16.7":3.46477,"17.0":1.23417,"17.1":0.07443,"17.2":0.00217},P:{"4":0.38347,"20":0.24219,"21":0.33301,"22":1.08985,"23":0.07064,"5.0-5.4":0.04036,"6.2-6.4":0.111,"7.2-7.4":0.48438,"8.2":0.01009,"9.2":0.10091,"10.1":0.04036,"11.1-11.2":0.06055,"12.0":0.02018,"13.0":0.10091,"14.0":0.10091,"15.0":0.13119,"16.0":0.24219,"17.0":0.06055,"18.0":0.10091,"19.0":0.37337},I:{"0":0.02388,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00007},A:{"8":0.00874,"11":0.17908,_:"6 7 9 10 5.5"},K:{"0":1.46243,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.04801},Q:{"13.1":0.04801},O:{"0":1.2083},H:{"0":0.25},L:{"0":67.09647}}; diff --git a/node_modules/caniuse-lite/data/regions/TK.js b/node_modules/caniuse-lite/data/regions/TK.js new file mode 100644 index 00000000..99961815 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/TK.js @@ -0,0 +1 @@ +module.exports={C:{_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 3.5 3.6"},D:{"91":0.71912,"117":4.31719,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 118 119 120"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"116":1.43825,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 117"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1 15.4 15.5 15.6 16.0 16.1 16.2 16.3 16.4 16.5 17.0 17.1","15.1":2.15737,"15.2-15.3":11.51088,"16.6":0.71912},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0,"15.0-15.1":0.70962,"15.2-15.3":8.51107,"15.4":0,"15.5":0,"15.6-15.7":0,"16.0":0,"16.1":2.12885,"16.2":0,"16.3":0,"16.4":0,"16.5":1.41923,"16.6":21.27985,"17.0":9.22069,"17.1":0},P:{"4":0.11467,"20":0.01042,"21":0.73274,"22":2.93095,"5.0-5.4":0.01042,"6.2-6.4":0,"7.2-7.4":0.01042,"8.2":0,"9.2":0,"10.1":0,"11.1-11.2":0,"12.0":0,"13.0":0.02085,"14.0":0,"15.0":0,"16.0":0,"17.0":0.01042,"18.0":0.01042,"19.0":0.01042},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{_:"6 7 8 9 10 11 5.5"},S:{"2.5":0,_:"3.0-3.1"},J:{"7":0,"10":0},N:{"10":0,"11":0},L:{"0":28.59944},R:{_:"0"},M:{"0":0},Q:{"13.1":0},O:{"0":0},H:{"0":0}}; diff --git a/node_modules/caniuse-lite/data/regions/TL.js b/node_modules/caniuse-lite/data/regions/TL.js new file mode 100644 index 00000000..8d1b0da9 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/TL.js @@ -0,0 +1 @@ +module.exports={C:{"8":0.00386,"30":0.0193,"32":0.00772,"34":0.00386,"36":0.00772,"37":0.03474,"38":0.00772,"40":0.0386,"41":0.00386,"42":0.00386,"44":0.02702,"45":0.01158,"47":0.01158,"48":0.02702,"50":0.00772,"52":0.00386,"53":0.00386,"56":0.05018,"57":0.00772,"59":0.00386,"60":0.00386,"61":0.00772,"62":0.00386,"67":0.04632,"72":0.06562,"76":0.00386,"78":0.05018,"79":0.2509,"85":0.06562,"92":0.00772,"93":0.00386,"95":0.00386,"96":0.00772,"98":0.00386,"99":0.0579,"102":0.00386,"103":0.00772,"105":0.00386,"106":0.00386,"107":0.00772,"109":0.00386,"110":0.00386,"111":0.0193,"112":0.01544,"113":0.02316,"114":0.0193,"115":1.2545,"116":0.1351,"117":0.25476,"118":3.2617,"119":0.46706,"120":0.02702,_:"2 3 4 5 6 7 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 33 35 39 43 46 49 51 54 55 58 63 64 65 66 68 69 70 71 73 74 75 77 80 81 82 83 84 86 87 88 89 90 91 94 97 100 101 104 108 121 122 3.5 3.6"},D:{"28":0.00386,"31":0.00772,"32":0.00386,"34":0.01544,"41":0.00772,"43":0.01158,"49":0.03088,"50":0.00772,"51":0.00386,"56":0.01158,"58":0.06562,"59":0.00386,"61":0.00386,"62":0.00772,"63":0.01544,"64":0.00386,"65":0.04632,"67":0.01544,"68":0.00772,"69":0.00772,"70":0.00386,"74":0.0193,"75":0.00386,"78":0.0193,"80":0.03088,"83":0.00386,"84":0.01544,"85":0.05018,"86":0.0386,"87":0.10422,"88":0.02316,"89":0.00386,"90":0.00772,"91":0.01544,"92":0.00386,"94":0.00772,"95":0.03474,"96":0.00386,"97":0.03474,"98":0.01158,"99":0.00386,"100":0.01158,"101":0.01158,"102":0.00772,"103":0.28564,"104":0.0193,"105":0.0193,"106":0.00772,"107":0.01158,"108":0.03474,"109":2.72516,"110":0.0193,"111":0.04246,"112":0.05018,"113":0.07334,"114":0.26248,"115":0.22388,"116":1.49382,"117":9.73492,"118":7.11784,"119":0.00386,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 33 35 36 37 38 39 40 42 44 45 46 47 48 52 53 54 55 57 60 66 71 72 73 76 77 79 81 93 120 121 122"},F:{"37":0.00386,"62":0.00386,"72":0.00386,"75":0.01544,"79":0.00386,"80":0.00386,"85":0.00772,"95":0.06562,"98":0.00772,"101":0.01544,"102":0.45548,"103":0.16212,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 63 64 65 66 67 68 69 70 71 73 74 76 77 78 81 82 83 84 86 87 88 89 90 91 92 93 94 96 97 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.03474,"13":0.01544,"14":0.00772,"16":0.03088,"17":0.01158,"18":0.05018,"84":0.01544,"89":0.02316,"90":0.00772,"92":0.02702,"96":0.01544,"97":0.00386,"98":0.00386,"100":0.01544,"101":0.00386,"105":0.02316,"106":0.01158,"108":0.03474,"109":0.03088,"110":0.05018,"111":0.02702,"112":0.03088,"113":0.02316,"114":0.14282,"115":0.14282,"116":0.18914,"117":2.6634,"118":1.74086,"119":0.04246,_:"15 79 80 81 83 85 86 87 88 91 93 94 95 99 102 103 104 107"},E:{"11":0.00386,"12":0.00386,"13":0.00386,"14":0.03088,"15":0.00386,_:"0 4 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0 17.1 17.2","11.1":0.00386,"12.1":0.00772,"13.1":0.0772,"14.1":0.0965,"15.1":0.01158,"15.2-15.3":0.06176,"15.4":0.02702,"15.5":0.01158,"15.6":0.04246,"16.1":0.01544,"16.2":0.02702,"16.3":0.08492,"16.4":0.01158,"16.5":0.14668,"16.6":0.20458,"17.0":0.05018},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00061,"5.0-5.1":0.00061,"6.0-6.1":0.00182,"7.0-7.1":0.00425,"8.1-8.4":0.00061,"9.0-9.2":0.00425,"9.3":0.01459,"10.0-10.2":0.00061,"10.3":0.02127,"11.0-11.2":0.01945,"11.3-11.4":0.00669,"12.0-12.1":0.00547,"12.2-12.5":0.09663,"13.0-13.1":0.00304,"13.2":0.01641,"13.3":0.00608,"13.4-13.7":0.01945,"14.0-14.4":0.05348,"14.5-14.8":0.0863,"15.0-15.1":0.03403,"15.2-15.3":0.0389,"15.4":0.04315,"15.5":0.06138,"15.6-15.7":0.42482,"16.0":0.1568,"16.1":0.30023,"16.2":0.14647,"16.3":0.27167,"16.4":0.05835,"16.5":0.15559,"16.6-16.7":2.91421,"17.0":1.03806,"17.1":0.0626,"17.2":0.00182},P:{"4":0.14956,"20":0.06979,"21":0.10967,"22":0.41876,"23":0.02991,_:"5.0-5.4 6.2-6.4 8.2","7.2-7.4":0.11965,"9.2":0.01994,"10.1":0.02991,"11.1-11.2":0.03988,"12.0":0.00997,"13.0":0.01994,"14.0":0.01994,"15.0":0.01994,"16.0":0.0997,"17.0":0.02991,"18.0":0.03988,"19.0":0.17947},I:{"0":0.01222,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00004},A:{"11":0.1158,_:"6 7 8 9 10 5.5"},K:{"0":0.89471,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.16575},Q:{"13.1":0.00614},O:{"0":0.84104},H:{"0":0.02},L:{"0":53.83664}}; diff --git a/node_modules/caniuse-lite/data/regions/TM.js b/node_modules/caniuse-lite/data/regions/TM.js new file mode 100644 index 00000000..ef4c5bfc --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/TM.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00483,"52":0.00242,"60":0.01209,"64":0.02659,"70":0.00725,"72":0.01692,"73":0.00242,"78":0.00483,"89":0.00242,"91":1.45987,"97":0.00967,"103":0.01209,"110":0.00242,"115":0.00242,"117":0.00725,"118":0.03384,"119":0.00483,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 65 66 67 68 69 71 74 75 76 77 79 80 81 82 83 84 85 86 87 88 90 92 93 94 95 96 98 99 100 101 102 104 105 106 107 108 109 111 112 113 114 116 120 121 122 3.5 3.6"},D:{"40":0.01209,"44":0.00725,"47":0.00483,"49":0.04592,"60":0.00725,"61":0.01209,"63":0.02659,"65":0.03142,"66":0.00242,"69":0.00242,"70":0.00483,"73":0.00725,"76":0.02659,"77":0.00242,"78":0.00967,"79":0.00242,"80":0.00967,"81":0.00725,"83":0.00725,"84":0.00483,"85":0.00725,"86":0.00967,"87":0.00725,"88":0.00725,"89":0.07251,"91":0.00967,"92":0.00483,"93":0.00967,"94":0.04592,"96":0.01209,"97":0.02175,"98":0.029,"100":0.05559,"101":0.04109,"102":0.029,"103":0.02659,"104":0.01692,"105":0.06284,"106":0.04109,"107":0.04592,"108":0.04109,"109":4.45695,"110":0.00967,"111":0.03384,"112":0.11602,"113":0.01934,"114":0.03867,"115":0.02659,"116":0.19336,"117":4.97902,"118":5.45275,"119":0.02175,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 45 46 48 50 51 52 53 54 55 56 57 58 59 62 64 67 68 71 72 74 75 90 95 99 120 121 122"},F:{"34":0.0145,"50":0.00483,"53":0.00725,"60":0.00483,"64":0.00242,"66":0.00242,"67":0.00967,"69":0.00242,"70":0.00242,"73":0.00242,"75":0.00242,"78":0.00483,"79":0.00967,"81":0.0145,"82":0.00483,"83":0.00967,"84":0.00483,"86":0.00242,"88":0.03384,"89":0.00725,"90":0.02175,"92":0.00483,"93":0.00725,"94":0.00967,"95":0.00967,"97":0.00725,"99":0.01209,"101":0.00483,"102":0.07493,"103":0.00967,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 52 54 55 56 57 58 62 63 65 68 71 72 74 76 77 80 85 87 91 96 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"84":0.03142,"88":0.00967,"89":0.00242,"90":0.0145,"92":0.28521,"98":0.00483,"99":0.01692,"100":0.02417,"104":0.00483,"106":0.00242,"107":0.00242,"108":0.00242,"109":0.00483,"110":0.00725,"111":0.00483,"112":0.03142,"114":0.0846,"115":0.00967,"116":0.08218,"117":0.30454,"118":0.10151,_:"12 13 14 15 16 17 18 79 80 81 83 85 86 87 91 93 94 95 96 97 101 102 103 105 113 119"},E:{"14":0.00483,"15":0.00725,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 13.1 15.2-15.3 15.4 16.0 16.4 17.1 17.2","12.1":0.00725,"14.1":0.00483,"15.1":0.00725,"15.5":0.00242,"15.6":0.02659,"16.1":0.00242,"16.2":0.00242,"16.3":0.00483,"16.5":0.00725,"16.6":0.05076,"17.0":0.12085},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00078,"5.0-5.1":0.00078,"6.0-6.1":0.00234,"7.0-7.1":0.00545,"8.1-8.4":0.00078,"9.0-9.2":0.00545,"9.3":0.01869,"10.0-10.2":0.00078,"10.3":0.02726,"11.0-11.2":0.02492,"11.3-11.4":0.00857,"12.0-12.1":0.00701,"12.2-12.5":0.12383,"13.0-13.1":0.00389,"13.2":0.02103,"13.3":0.00779,"13.4-13.7":0.02492,"14.0-14.4":0.06853,"14.5-14.8":0.11059,"15.0-15.1":0.04361,"15.2-15.3":0.04984,"15.4":0.05529,"15.5":0.07866,"15.6-15.7":0.54436,"16.0":0.20092,"16.1":0.38471,"16.2":0.18768,"16.3":0.34811,"16.4":0.07476,"16.5":0.19937,"16.6-16.7":3.73422,"17.0":1.33015,"17.1":0.08021,"17.2":0.00234},P:{"4":0.3552,"20":0.11163,"21":0.18267,"22":1.83689,"23":0.18267,"5.0-5.4":0.0203,"6.2-6.4":0.06089,"7.2-7.4":0.29431,"8.2":0.01015,"9.2":0.03045,_:"10.1 12.0","11.1-11.2":0.0203,"13.0":0.16238,"14.0":0.03045,"15.0":0.06089,"16.0":0.08119,"17.0":0.93367,"18.0":0.17253,"19.0":0.19282},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0.14166,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.12891},Q:{_:"13.1"},O:{"0":0.43223},H:{"0":0.01},L:{"0":63.87092}}; diff --git a/node_modules/caniuse-lite/data/regions/TN.js b/node_modules/caniuse-lite/data/regions/TN.js new file mode 100644 index 00000000..dc9dae15 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/TN.js @@ -0,0 +1 @@ +module.exports={C:{"47":0.00385,"52":0.08079,"59":0.00385,"67":0.00385,"68":0.00385,"72":0.00385,"75":0.01539,"78":0.00769,"88":0.00385,"91":0.00385,"102":0.00769,"103":0.00385,"104":0.00769,"105":0.01154,"108":0.00385,"110":0.01539,"111":0.00385,"112":0.00385,"113":0.01154,"114":0.00385,"115":0.38085,"116":0.03078,"117":0.04232,"118":0.65399,"119":0.14619,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 60 61 62 63 64 65 66 69 70 71 73 74 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 94 95 96 97 98 99 100 101 106 107 109 120 121 122 3.5 3.6"},D:{"11":0.00385,"38":0.00385,"41":0.00385,"46":0.00385,"47":0.00385,"48":0.00385,"49":0.10772,"50":0.00385,"51":0.00385,"53":0.00385,"56":0.02308,"58":0.04232,"59":0.00385,"60":0.00385,"63":0.00769,"64":0.00385,"65":0.01539,"66":0.00385,"67":0.00385,"68":0.00385,"69":0.00769,"70":0.01539,"71":0.00769,"72":0.00385,"73":0.00385,"74":0.00769,"75":0.00385,"76":0.01154,"77":0.00769,"78":0.00385,"79":0.04232,"80":0.01154,"81":0.02308,"83":0.01154,"84":0.01539,"85":0.06155,"86":0.01924,"87":0.07309,"88":0.01154,"89":0.01924,"90":0.00769,"91":0.03847,"92":0.02693,"93":0.00769,"94":0.01154,"95":0.01924,"96":0.01539,"97":0.01924,"98":0.03078,"99":0.02308,"100":0.01154,"101":0.01539,"102":0.05001,"103":0.04232,"104":0.03078,"105":0.06925,"106":0.06155,"107":0.06925,"108":0.10387,"109":6.11288,"110":0.06925,"111":0.06155,"112":0.09233,"113":0.04616,"114":0.13849,"115":0.09233,"116":0.7117,"117":9.6175,"118":9.94834,"119":0.01154,"120":0.00385,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 52 54 55 57 61 62 121 122"},F:{"28":0.00385,"40":0.00385,"65":0.00385,"79":0.00769,"82":0.00385,"85":0.00769,"91":0.01154,"93":0.00385,"94":0.00385,"95":0.13849,"96":0.01154,"100":0.00385,"101":0.00769,"102":2.16971,"103":0.41548,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 84 86 87 88 89 90 92 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00385,"15":0.00385,"17":0.00385,"18":0.01539,"84":0.00385,"89":0.00385,"92":0.02308,"100":0.00385,"102":0.00385,"107":0.01539,"108":0.02308,"109":0.06155,"110":0.01154,"111":0.01924,"112":0.00385,"113":0.01154,"114":0.01539,"115":0.02308,"116":0.04232,"117":1.38107,"118":1.40031,"119":0.00769,_:"13 14 16 79 80 81 83 85 86 87 88 90 91 93 94 95 96 97 98 99 101 103 104 105 106"},E:{"14":0.01539,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 12.1 17.2","5.1":0.00385,"11.1":0.00385,"13.1":0.01154,"14.1":0.01154,"15.1":0.00385,"15.2-15.3":0.00385,"15.4":0.01539,"15.5":0.00769,"15.6":0.03078,"16.0":0.00385,"16.1":0.01924,"16.2":0.00385,"16.3":0.03462,"16.4":0.00385,"16.5":0.01924,"16.6":0.10772,"17.0":0.06925,"17.1":0.00385},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00051,"5.0-5.1":0.00051,"6.0-6.1":0.00152,"7.0-7.1":0.00355,"8.1-8.4":0.00051,"9.0-9.2":0.00355,"9.3":0.01216,"10.0-10.2":0.00051,"10.3":0.01773,"11.0-11.2":0.01621,"11.3-11.4":0.00557,"12.0-12.1":0.00456,"12.2-12.5":0.08053,"13.0-13.1":0.00253,"13.2":0.01367,"13.3":0.00506,"13.4-13.7":0.01621,"14.0-14.4":0.04457,"14.5-14.8":0.07192,"15.0-15.1":0.02836,"15.2-15.3":0.03241,"15.4":0.03596,"15.5":0.05115,"15.6-15.7":0.35403,"16.0":0.13067,"16.1":0.2502,"16.2":0.12206,"16.3":0.22639,"16.4":0.04862,"16.5":0.12966,"16.6-16.7":2.42854,"17.0":0.86506,"17.1":0.05217,"17.2":0.00152},P:{"4":0.1127,"20":0.05123,"21":0.07172,"22":0.90156,"23":0.14343,_:"5.0-5.4 6.2-6.4 8.2 10.1","7.2-7.4":0.26637,"9.2":0.01025,"11.1-11.2":0.02049,"12.0":0.01025,"13.0":0.02049,"14.0":0.03074,"15.0":0.01025,"16.0":0.03074,"17.0":0.06147,"18.0":0.02049,"19.0":0.04098},I:{"0":0.06735,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.0002},A:{"8":0.004,"9":0.004,"10":0.004,"11":0.08802,_:"6 7 5.5"},K:{"0":0.25539,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.08},Q:{_:"13.1"},O:{"0":0.1477},H:{"0":0.04},L:{"0":56.22723}}; diff --git a/node_modules/caniuse-lite/data/regions/TO.js b/node_modules/caniuse-lite/data/regions/TO.js new file mode 100644 index 00000000..3bd6cde5 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/TO.js @@ -0,0 +1 @@ +module.exports={C:{"78":0.00431,"115":0.10344,"116":0.01293,"117":0.10344,"118":0.57323,"119":0.03879,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 120 121 122 3.5 3.6"},D:{"62":0.03017,"68":0.00431,"71":0.00431,"72":0.00431,"74":0.06896,"75":0.01724,"86":0.00431,"93":0.01724,"94":0.00431,"95":0.02155,"96":0.00431,"98":0.01724,"99":0.01724,"103":0.18102,"106":0.01293,"109":2.27137,"110":0.01724,"111":0.01293,"112":0.03017,"113":0.01293,"114":0.0431,"115":0.26291,"116":0.71115,"117":9.73198,"118":8.43036,"119":0.01724,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 63 64 65 66 67 69 70 73 76 77 78 79 80 81 83 84 85 87 88 89 90 91 92 97 100 101 102 104 105 107 108 120 121 122"},F:{"102":0.07758,"103":0.00431,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.03879,"80":0.00431,"86":0.00431,"92":0.03879,"103":0.02155,"106":0.00862,"109":0.0431,"111":0.02155,"112":0.00431,"113":0.02586,"114":0.0431,"115":0.0862,"116":0.74563,"117":5.42629,"118":2.91356,_:"12 13 14 15 16 17 79 81 83 84 85 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 104 105 107 108 110 119"},E:{"13":0.00431,"14":0.02586,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.1 16.2 17.2","13.1":0.07758,"14.1":0.01724,"15.2-15.3":0.03017,"15.4":0.02155,"15.5":0.01293,"15.6":0.07758,"16.0":0.00431,"16.1":0.11637,"16.3":0.02586,"16.4":0.00862,"16.5":0.0862,"16.6":0.45255,"17.0":0.87924,"17.1":0.00431},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00098,"5.0-5.1":0.00098,"6.0-6.1":0.00294,"7.0-7.1":0.00685,"8.1-8.4":0.00098,"9.0-9.2":0.00685,"9.3":0.02349,"10.0-10.2":0.00098,"10.3":0.03425,"11.0-11.2":0.03132,"11.3-11.4":0.01077,"12.0-12.1":0.00881,"12.2-12.5":0.15561,"13.0-13.1":0.00489,"13.2":0.02642,"13.3":0.00979,"13.4-13.7":0.03132,"14.0-14.4":0.08612,"14.5-14.8":0.13897,"15.0-15.1":0.05481,"15.2-15.3":0.06264,"15.4":0.06949,"15.5":0.09885,"15.6-15.7":0.6841,"16.0":0.2525,"16.1":0.48347,"16.2":0.23586,"16.3":0.43747,"16.4":0.09395,"16.5":0.25054,"16.6-16.7":4.69277,"17.0":1.67159,"17.1":0.1008,"17.2":0.00294},P:{"4":0.07274,"20":0.09353,"21":0.16627,"22":0.95606,"23":0.03118,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 13.0 15.0","7.2-7.4":0.10392,"11.1-11.2":0.02078,"14.0":0.01039,"16.0":0.03118,"17.0":0.09353,"18.0":0.11431,"19.0":0.04157},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.00862,_:"6 7 8 9 10 5.5"},K:{"0":0.09104,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.07966},Q:{"13.1":0.29019},O:{"0":0.47227},H:{"0":0},L:{"0":48.27198}}; diff --git a/node_modules/caniuse-lite/data/regions/TR.js b/node_modules/caniuse-lite/data/regions/TR.js new file mode 100644 index 00000000..30278573 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/TR.js @@ -0,0 +1 @@ +module.exports={C:{"47":0.00255,"48":0.02554,"49":0.00255,"52":0.00511,"60":0.00255,"72":0.00255,"78":0.00255,"87":0.00255,"88":0.00255,"91":0.00255,"93":0.00255,"96":0.00255,"99":0.00255,"102":0.00255,"103":0.00255,"105":0.00255,"106":0.00255,"107":0.00511,"108":0.00255,"109":0.00255,"110":0.00255,"111":0.00255,"112":0.00255,"113":0.00255,"114":0.00255,"115":0.17112,"116":0.00255,"117":0.01022,"118":0.27583,"119":0.0613,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 89 90 92 94 95 97 98 100 101 104 120 121 122 3.5 3.6"},D:{"22":0.00255,"26":0.02554,"34":0.08428,"38":0.09961,"39":0.00511,"41":0.00255,"43":0.00255,"47":0.03831,"48":0.00255,"49":0.04597,"50":0.00255,"53":0.01788,"55":0.00255,"56":0.00255,"58":0.00255,"60":0.00255,"63":0.00255,"65":0.00255,"66":0.00255,"67":0.00255,"68":0.05108,"69":0.00255,"70":0.00255,"71":0.00255,"72":0.00255,"73":0.01532,"74":0.00255,"75":0.00511,"76":0.00255,"77":0.00255,"78":0.00255,"79":0.3218,"80":0.01277,"81":0.00766,"83":0.06385,"84":0.00766,"85":0.02554,"86":0.01022,"87":0.08173,"88":0.01022,"89":0.01532,"90":0.00511,"91":0.01022,"92":0.00766,"93":0.00255,"94":0.01277,"95":0.01022,"96":0.01788,"97":0.01022,"98":0.00766,"99":0.04342,"100":0.01277,"101":0.00766,"102":0.01277,"103":0.03576,"104":0.01277,"105":0.02043,"106":0.05108,"107":0.04597,"108":0.07151,"109":3.59348,"110":0.0332,"111":0.04597,"112":0.05874,"113":0.03065,"114":0.07151,"115":0.16346,"116":0.34479,"117":5.72351,"118":6.3518,"119":0.00766,"120":0.00255,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 35 36 37 40 42 44 45 46 51 52 54 57 59 61 62 64 121 122"},F:{"25":0.00255,"28":0.01532,"31":0.00511,"32":0.01022,"36":0.00511,"40":0.02299,"46":0.10982,"79":0.00255,"85":0.00511,"86":0.00255,"91":0.00255,"93":0.00255,"94":0.00255,"95":0.07407,"96":0.00255,"99":0.00255,"100":0.00255,"101":0.00766,"102":1.32808,"103":0.32436,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 26 27 29 30 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 87 88 89 90 92 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00255,"13":0.00255,"14":0.00255,"15":0.00255,"16":0.00511,"17":0.00255,"18":0.01022,"92":0.00766,"96":0.00255,"97":0.00255,"100":0.00255,"105":0.00255,"106":0.00255,"107":0.01022,"108":0.00511,"109":0.10471,"110":0.00766,"111":0.00511,"112":0.00255,"113":0.00511,"114":0.01277,"115":0.01277,"116":0.02554,"117":0.85559,"118":1.088,"119":0.00255,_:"79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 98 99 101 102 103 104"},E:{"13":0.00255,"14":0.01788,"15":0.00255,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.01022,"12.1":0.00255,"13.1":0.01532,"14.1":0.03065,"15.1":0.00511,"15.2-15.3":0.00255,"15.4":0.00766,"15.5":0.01277,"15.6":0.09961,"16.0":0.00766,"16.1":0.02299,"16.2":0.01532,"16.3":0.04597,"16.4":0.02299,"16.5":0.04086,"16.6":0.22475,"17.0":0.12004,"17.1":0.00511},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00114,"5.0-5.1":0.00114,"6.0-6.1":0.00341,"7.0-7.1":0.00795,"8.1-8.4":0.00114,"9.0-9.2":0.00795,"9.3":0.02727,"10.0-10.2":0.00114,"10.3":0.03977,"11.0-11.2":0.03636,"11.3-11.4":0.0125,"12.0-12.1":0.01023,"12.2-12.5":0.18067,"13.0-13.1":0.00568,"13.2":0.03068,"13.3":0.01136,"13.4-13.7":0.03636,"14.0-14.4":0.09999,"14.5-14.8":0.16135,"15.0-15.1":0.06363,"15.2-15.3":0.07272,"15.4":0.08067,"15.5":0.11476,"15.6-15.7":0.79425,"16.0":0.29315,"16.1":0.56131,"16.2":0.27384,"16.3":0.50791,"16.4":0.10908,"16.5":0.29088,"16.6-16.7":5.44836,"17.0":1.94073,"17.1":0.11703,"17.2":0.00341},P:{"4":0.52485,"20":0.08233,"21":0.22641,"22":2.01708,"23":0.40136,"5.0-5.4":0.03087,"6.2-6.4":0.01029,"7.2-7.4":0.13379,_:"8.2 10.1","9.2":0.02058,"11.1-11.2":0.02058,"12.0":0.01029,"13.0":0.05146,"14.0":0.02058,"15.0":0.01029,"16.0":0.04116,"17.0":0.10291,"18.0":0.03087,"19.0":0.06175},I:{"0":0.03704,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00011},A:{"8":0.00259,"9":0.00259,"11":0.17104,_:"6 7 10 5.5"},K:{"0":0.82651,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.10424},Q:{_:"13.1"},O:{"0":0.11169},H:{"0":0},L:{"0":57.6221}}; diff --git a/node_modules/caniuse-lite/data/regions/TT.js b/node_modules/caniuse-lite/data/regions/TT.js new file mode 100644 index 00000000..9eac4ef5 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/TT.js @@ -0,0 +1 @@ +module.exports={C:{"13":0.00385,"34":0.00385,"48":0.04625,"50":0.00385,"52":0.00771,"77":0.00385,"78":0.00771,"85":0.00385,"87":0.00385,"88":0.00385,"102":0.00385,"108":0.00771,"110":0.00771,"114":0.01542,"115":0.12718,"116":0.00771,"117":0.09635,"118":0.78622,"119":0.14645,_:"2 3 4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 49 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 79 80 81 82 83 84 86 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 105 106 107 109 111 112 113 120 121 122 3.5 3.6"},D:{"5":0.00385,"9":0.00385,"10":0.00385,"47":0.00385,"49":0.02312,"50":0.00385,"53":0.01156,"54":0.00385,"55":0.00385,"56":0.00771,"58":0.00771,"63":0.00385,"65":0.00385,"68":0.03854,"69":0.00385,"70":0.00385,"74":0.00385,"75":0.01927,"76":0.03083,"77":0.00385,"79":0.0501,"81":0.00771,"83":0.00385,"84":0.01156,"86":0.00385,"87":0.02312,"88":0.01542,"91":0.01542,"92":0.00385,"93":0.06552,"94":0.01542,"95":0.01927,"96":0.00385,"97":0.00385,"98":0.00385,"99":0.00385,"100":0.01542,"101":0.00385,"102":0.07323,"103":0.528,"104":0.01542,"105":0.00385,"106":0.00385,"107":0.00385,"108":0.02312,"109":0.97506,"110":0.03083,"111":0.00771,"112":0.03083,"113":0.08093,"114":0.07708,"115":0.15031,"116":1.10224,"117":10.96848,"118":10.92994,"119":0.01542,"120":0.00771,_:"4 6 7 8 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 51 52 57 59 60 61 62 64 66 67 71 72 73 78 80 85 89 90 121 122"},F:{"28":0.02312,"46":0.00385,"95":0.00385,"100":0.00771,"101":0.00385,"102":0.74382,"103":0.11947,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"15":0.00771,"18":0.00771,"92":0.01156,"109":0.04239,"110":0.00385,"111":0.01542,"113":0.00385,"114":0.00771,"115":0.02312,"116":0.06937,"117":2.63614,"118":2.28928,"119":0.00771,_:"12 13 14 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 112"},E:{"5":0.00385,"11":0.00771,"12":0.00385,"13":0.00385,"14":0.03083,"15":0.00771,_:"0 4 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1 10.1 17.2","11.1":0.00385,"12.1":0.00771,"13.1":0.17728,"14.1":0.07323,"15.1":0.00385,"15.2-15.3":0.01156,"15.4":0.01927,"15.5":0.07708,"15.6":0.23124,"16.0":0.01927,"16.1":0.0501,"16.2":0.05781,"16.3":0.05396,"16.4":0.05781,"16.5":0.15801,"16.6":0.87871,"17.0":0.39311,"17.1":0.02698},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00109,"5.0-5.1":0.00109,"6.0-6.1":0.00326,"7.0-7.1":0.00761,"8.1-8.4":0.00109,"9.0-9.2":0.00761,"9.3":0.02608,"10.0-10.2":0.00109,"10.3":0.03803,"11.0-11.2":0.03477,"11.3-11.4":0.01195,"12.0-12.1":0.00978,"12.2-12.5":0.17277,"13.0-13.1":0.00543,"13.2":0.02934,"13.3":0.01087,"13.4-13.7":0.03477,"14.0-14.4":0.09562,"14.5-14.8":0.1543,"15.0-15.1":0.06085,"15.2-15.3":0.06954,"15.4":0.07715,"15.5":0.10975,"15.6-15.7":0.75954,"16.0":0.28035,"16.1":0.53679,"16.2":0.26187,"16.3":0.48572,"16.4":0.10431,"16.5":0.27817,"16.6-16.7":5.21031,"17.0":1.85593,"17.1":0.11192,"17.2":0.00326},P:{"4":0.37761,"20":0.07552,"21":0.2913,"22":4.14296,"23":1.0789,_:"5.0-5.4 6.2-6.4 8.2 10.1 12.0 15.0","7.2-7.4":0.17262,"9.2":0.01079,"11.1-11.2":0.02158,"13.0":0.02158,"14.0":0.01079,"16.0":0.02158,"17.0":0.04316,"18.0":0.02158,"19.0":0.15105},I:{"0":0.07338,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.00022},A:{"10":0.00385,"11":0.01927,_:"6 7 8 9 5.5"},K:{"0":0.39334,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.25199},Q:{_:"13.1"},O:{"0":0.03688},H:{"0":0},L:{"0":46.09449}}; diff --git a/node_modules/caniuse-lite/data/regions/TV.js b/node_modules/caniuse-lite/data/regions/TV.js new file mode 100644 index 00000000..ea803d4a --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/TV.js @@ -0,0 +1 @@ +module.exports={C:{"114":0.20984,"118":0.06995,"119":0.20984,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 115 116 117 120 121 122 3.5 3.6"},D:{"109":0.27785,"114":0.06995,"115":0.76554,"116":0.62759,"117":4.59714,"118":6.61592,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 110 111 112 113 119 120 121 122"},F:{"103":0.27785,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.06995,"116":0.20984,"117":1.81088,"118":2.15867,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 15.1 15.2-15.3 15.4 15.5 16.0 16.1 16.2 16.3 16.4 16.6 17.0 17.1 17.2","14.1":0.3478,"15.6":0.1399,"16.5":0.06995},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00013,"5.0-5.1":0.00013,"6.0-6.1":0.0004,"7.0-7.1":0.00094,"8.1-8.4":0.00013,"9.0-9.2":0.00094,"9.3":0.00321,"10.0-10.2":0.00013,"10.3":0.00468,"11.0-11.2":0.00428,"11.3-11.4":0.00147,"12.0-12.1":0.0012,"12.2-12.5":0.02127,"13.0-13.1":0.00067,"13.2":0.00361,"13.3":0.00134,"13.4-13.7":0.00428,"14.0-14.4":0.01177,"14.5-14.8":0.01899,"15.0-15.1":0.00749,"15.2-15.3":0.00856,"15.4":0.0095,"15.5":0.01351,"15.6-15.7":0.0935,"16.0":0.03451,"16.1":0.06608,"16.2":0.03224,"16.3":0.05979,"16.4":0.01284,"16.5":0.03424,"16.6-16.7":0.64139,"17.0":0.22847,"17.1":0.01378,"17.2":0.0004},P:{"22":0.35254,"23":2.66921,_:"4 20 21 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0"},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0.49154,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{_:"0"},Q:{_:"13.1"},O:{_:"0"},H:{"0":0},L:{"0":76.63452}}; diff --git a/node_modules/caniuse-lite/data/regions/TW.js b/node_modules/caniuse-lite/data/regions/TW.js new file mode 100644 index 00000000..61c49add --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/TW.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.02414,"52":0.00805,"78":0.00402,"88":0.00402,"102":0.00402,"104":0.00402,"105":0.00402,"108":0.00402,"110":0.00402,"111":0.00402,"112":0.00402,"113":0.00402,"114":0.00402,"115":0.16092,"116":0.00805,"117":0.02414,"118":0.48678,"119":0.09655,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 95 96 97 98 99 100 101 103 106 107 109 120 121 122 3.5 3.6"},D:{"11":0.00402,"26":0.00402,"30":0.00805,"33":0.01207,"34":0.02012,"38":0.06839,"45":0.00402,"48":0.00402,"49":0.05632,"53":0.06035,"55":0.00402,"56":0.02012,"58":0.00402,"61":0.03621,"63":0.00402,"64":0.00402,"65":0.00805,"66":0.01207,"67":0.01207,"68":0.00805,"69":0.00402,"70":0.00805,"71":0.00805,"72":0.00402,"73":0.01207,"74":0.02012,"75":0.00402,"76":0.00805,"77":0.00402,"78":0.00805,"79":0.51897,"80":0.00805,"81":0.02414,"83":0.02012,"84":0.00402,"85":0.00402,"86":0.01207,"87":0.13276,"88":0.00402,"89":0.01207,"90":0.00805,"91":0.00805,"92":0.00805,"93":0.00402,"94":0.01207,"95":0.01207,"96":0.01609,"97":0.02816,"98":0.01207,"99":0.01609,"100":0.00805,"101":0.02012,"102":0.02816,"103":0.08448,"104":0.01207,"105":0.02012,"106":0.02414,"107":0.02414,"108":0.06035,"109":3.55231,"110":0.01609,"111":0.03218,"112":0.04023,"113":0.04828,"114":0.12069,"115":0.11264,"116":0.84081,"117":10.68911,"118":11.03107,"119":0.02012,"120":0.01609,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 31 32 35 36 37 39 40 41 42 43 44 46 47 50 51 52 54 57 59 60 62 121 122"},F:{"28":0.02012,"36":0.01207,"40":0.00402,"46":0.09655,"95":0.01207,"102":0.06839,"103":0.04023,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"14":0.00402,"16":0.00402,"17":0.00402,"18":0.00805,"84":0.00402,"92":0.00402,"105":0.00402,"106":0.00402,"107":0.00402,"108":0.00805,"109":0.09655,"110":0.00402,"111":0.00402,"112":0.00805,"113":0.01207,"114":0.01207,"115":0.01609,"116":0.0523,"117":1.7138,"118":1.63334,"119":0.00402,_:"12 13 15 79 80 81 83 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104"},E:{"12":0.00402,"13":0.04425,"14":0.12874,"15":0.02012,_:"0 4 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 17.2","11.1":0.00402,"12.1":0.02816,"13.1":0.09655,"14.1":0.35,"15.1":0.03621,"15.2-15.3":0.03218,"15.4":0.12069,"15.5":0.19713,"15.6":0.6638,"16.0":0.02816,"16.1":0.14885,"16.2":0.12069,"16.3":0.35402,"16.4":0.10058,"16.5":0.30575,"16.6":2.82817,"17.0":0.37816,"17.1":0.02414},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00283,"5.0-5.1":0.00283,"6.0-6.1":0.0085,"7.0-7.1":0.01984,"8.1-8.4":0.00283,"9.0-9.2":0.01984,"9.3":0.06801,"10.0-10.2":0.00283,"10.3":0.09918,"11.0-11.2":0.09068,"11.3-11.4":0.03117,"12.0-12.1":0.0255,"12.2-12.5":0.45056,"13.0-13.1":0.01417,"13.2":0.07651,"13.3":0.02834,"13.4-13.7":0.09068,"14.0-14.4":0.24937,"14.5-14.8":0.40238,"15.0-15.1":0.15869,"15.2-15.3":0.18136,"15.4":0.20119,"15.5":0.2862,"15.6-15.7":1.98075,"16.0":0.73109,"16.1":1.39985,"16.2":0.68292,"16.3":1.26666,"16.4":0.27203,"16.5":0.72543,"16.6-16.7":13.58757,"17.0":4.83995,"17.1":0.29187,"17.2":0.0085},P:{"4":0.55246,"20":0.1353,"21":0.21422,"22":2.17604,"23":0.38334,"5.0-5.4":0.0902,"6.2-6.4":0.01127,_:"7.2-7.4 8.2 10.1","9.2":0.01127,"11.1-11.2":0.03382,"12.0":0.01127,"13.0":0.05637,"14.0":0.02255,"15.0":0.02255,"16.0":0.0451,"17.0":0.05637,"18.0":0.05637,"19.0":0.0902},I:{"0":0.01784,"3":0,"4":0,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00005},A:{"11":0.12069,_:"6 7 8 9 10 5.5"},K:{"0":0.25103,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.09563},Q:{"13.1":0.00598},O:{"0":0.0777},H:{"0":0},L:{"0":27.91248}}; diff --git a/node_modules/caniuse-lite/data/regions/TZ.js b/node_modules/caniuse-lite/data/regions/TZ.js new file mode 100644 index 00000000..4ae60171 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/TZ.js @@ -0,0 +1 @@ +module.exports={C:{"32":0.00166,"34":0.00166,"40":0.00166,"43":0.00166,"44":0.00166,"45":0.00166,"47":0.00166,"49":0.00166,"50":0.00166,"52":0.00331,"56":0.00166,"68":0.00166,"72":0.00331,"78":0.00994,"86":0.00166,"91":0.00663,"95":0.00166,"101":0.00331,"102":0.00497,"103":0.00166,"107":0.00166,"108":0.00331,"109":0.00166,"110":0.00166,"111":0.00166,"112":0.00331,"113":0.00497,"114":0.00663,"115":0.21375,"116":0.00829,"117":0.08119,"118":0.76885,"119":0.14416,"120":0.00663,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 35 36 37 38 39 41 42 46 48 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 87 88 89 90 92 93 94 96 97 98 99 100 104 105 106 121 122 3.5 3.6"},D:{"11":0.00829,"32":0.00166,"38":0.00166,"40":0.00166,"41":0.00497,"44":0.00166,"46":0.00166,"49":0.00331,"50":0.00166,"55":0.00497,"56":0.00331,"58":0.00166,"61":0.00166,"62":0.00166,"63":0.00331,"64":0.00166,"65":0.00166,"66":0.00166,"67":0.00166,"68":0.00663,"69":0.00166,"70":0.00829,"71":0.00331,"72":0.00331,"73":0.00166,"74":0.00829,"75":0.00166,"76":0.00497,"77":0.00331,"78":0.00166,"79":0.0116,"80":0.01657,"81":0.00331,"83":0.00663,"84":0.0116,"85":0.00166,"86":0.00166,"87":0.01657,"88":0.00829,"89":0.00497,"90":0.0116,"91":0.00331,"92":0.00497,"93":0.00829,"94":0.2966,"95":0.00994,"96":0.00497,"97":0.00166,"98":0.00829,"99":0.27506,"100":0.00331,"101":0.00497,"102":0.0116,"103":0.04474,"104":0.00829,"105":0.00663,"106":0.00829,"107":0.00829,"108":0.01823,"109":0.89644,"110":0.00994,"111":0.02486,"112":0.06959,"113":0.02651,"114":0.07788,"115":0.07622,"116":0.30489,"117":3.33554,"118":3.15659,"119":0.00663,"120":0.00331,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 36 37 39 42 43 45 47 48 51 52 53 54 57 59 60 121 122"},F:{"37":0.00166,"42":0.00166,"51":0.00166,"67":0.01823,"73":0.00166,"77":0.00166,"78":0.00166,"79":0.00829,"92":0.00166,"94":0.00166,"95":0.03148,"99":0.00166,"100":0.00166,"101":0.00497,"102":0.20215,"103":0.17399,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 43 44 45 46 47 48 49 50 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 74 75 76 80 81 82 83 84 85 86 87 88 89 90 91 93 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00994,"13":0.00331,"14":0.00331,"15":0.00994,"16":0.00663,"17":0.00497,"18":0.03314,"84":0.00331,"85":0.00331,"89":0.00663,"90":0.00994,"92":0.01823,"99":0.00166,"100":0.00331,"103":0.00166,"105":0.00166,"107":0.00166,"108":0.00166,"109":0.01326,"110":0.00166,"111":0.00166,"112":0.00829,"113":0.00331,"114":0.00994,"115":0.0348,"116":0.02983,"117":0.62303,"118":0.58492,"119":0.00166,_:"79 80 81 83 86 87 88 91 93 94 95 96 97 98 101 102 104 106"},E:{"11":0.00166,"13":0.00829,"14":0.00663,"15":0.00166,_:"0 4 5 6 7 8 9 10 12 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.00663,"11.1":0.00331,"12.1":0.00663,"13.1":0.04308,"14.1":0.02651,"15.1":0.00166,"15.2-15.3":0.00497,"15.4":0.00166,"15.5":0.00331,"15.6":0.02983,"16.0":0.00331,"16.1":0.01823,"16.2":0.00994,"16.3":0.00994,"16.4":0.01823,"16.5":0.02154,"16.6":0.09279,"17.0":0.06794,"17.1":0.00497},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00059,"5.0-5.1":0.00059,"6.0-6.1":0.00176,"7.0-7.1":0.0041,"8.1-8.4":0.00059,"9.0-9.2":0.0041,"9.3":0.01405,"10.0-10.2":0.00059,"10.3":0.0205,"11.0-11.2":0.01874,"11.3-11.4":0.00644,"12.0-12.1":0.00527,"12.2-12.5":0.09311,"13.0-13.1":0.00293,"13.2":0.01581,"13.3":0.00586,"13.4-13.7":0.01874,"14.0-14.4":0.05153,"14.5-14.8":0.08316,"15.0-15.1":0.03279,"15.2-15.3":0.03748,"15.4":0.04158,"15.5":0.05915,"15.6-15.7":0.40934,"16.0":0.15109,"16.1":0.28929,"16.2":0.14113,"16.3":0.26177,"16.4":0.05622,"16.5":0.14992,"16.6-16.7":2.80799,"17.0":1.00022,"17.1":0.06032,"17.2":0.00176},P:{"4":0.1828,"20":0.07109,"21":0.13202,"22":0.81244,"23":0.0914,"5.0-5.4":0.03047,"6.2-6.4":0.01016,"7.2-7.4":0.08124,_:"8.2 10.1 12.0","9.2":0.06093,"11.1-11.2":0.06093,"13.0":0.02031,"14.0":0.01016,"15.0":0.01016,"16.0":0.07109,"17.0":0.04062,"18.0":0.03047,"19.0":0.15233},I:{"0":0.13279,"3":0,"4":0.00003,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00003,"4.2-4.3":0.00009,"4.4":0,"4.4.3-4.4.4":0.0004},A:{"11":0.02983,_:"6 7 8 9 10 5.5"},K:{"0":6.97953,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":1.31804,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.28363},Q:{_:"13.1"},O:{"0":0.45047},H:{"0":5.4},L:{"0":64.87546}}; diff --git a/node_modules/caniuse-lite/data/regions/UA.js b/node_modules/caniuse-lite/data/regions/UA.js new file mode 100644 index 00000000..8e51959a --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/UA.js @@ -0,0 +1 @@ +module.exports={C:{"44":0.01186,"45":0.00593,"48":1.57092,"49":0.00593,"50":0.00593,"52":0.18377,"53":0.00593,"55":0.01186,"56":0.01778,"59":0.00593,"60":0.01778,"61":0.03557,"66":0.00593,"67":0.00593,"68":0.01186,"72":0.00593,"75":0.01778,"78":0.01186,"81":0.00593,"82":0.00593,"83":0.01186,"86":0.00593,"87":0.00593,"88":0.00593,"89":0.00593,"91":0.01186,"94":0.00593,"98":0.00593,"99":0.01778,"101":0.01186,"102":0.02964,"103":0.01186,"104":0.06521,"105":0.03557,"106":0.05335,"107":0.05928,"108":0.02371,"109":0.05928,"110":0.05928,"111":0.05928,"112":0.01186,"113":0.02964,"114":0.01778,"115":0.94255,"116":0.01778,"117":0.07706,"118":1.52942,"119":0.30826,"120":0.00593,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 46 47 51 54 57 58 62 63 64 65 69 70 71 73 74 76 77 79 80 84 85 90 92 93 95 96 97 100 121 122 3.5 3.6"},D:{"5":0.00593,"9":0.00593,"38":0.00593,"41":0.00593,"48":0.01778,"49":0.08299,"51":0.00593,"55":0.00593,"56":0.00593,"57":0.00593,"58":0.00593,"61":0.01778,"63":0.00593,"64":0.00593,"65":0.00593,"66":0.01186,"67":0.06521,"68":0.01186,"69":0.01186,"70":0.01186,"71":0.01778,"72":0.01778,"73":0.01186,"74":0.01186,"75":0.00593,"76":0.01186,"77":0.02371,"78":0.01186,"79":0.05928,"80":0.02371,"81":0.02964,"83":0.0415,"84":0.01778,"85":0.08299,"86":0.1897,"87":0.06521,"88":0.02371,"89":0.01186,"90":0.03557,"91":0.01186,"92":0.01186,"93":0.01778,"94":0.01186,"95":0.01778,"96":0.02964,"97":0.05928,"98":0.02964,"99":0.03557,"100":0.01778,"101":0.03557,"102":0.21341,"103":0.17784,"104":0.05335,"105":0.22526,"106":0.45646,"107":0.52166,"108":0.74693,"109":4.84318,"110":0.4446,"111":0.43274,"112":0.48017,"113":0.08299,"114":0.16006,"115":0.18377,"116":1.07297,"117":13.38542,"118":13.96637,"119":0.02964,"120":0.02964,_:"4 6 7 8 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 46 47 50 52 53 54 59 60 62 121 122"},F:{"28":0.00593,"36":0.01778,"46":0.00593,"48":0.00593,"53":0.00593,"54":0.00593,"60":0.00593,"65":0.00593,"69":0.00593,"75":0.00593,"76":0.00593,"77":0.00593,"78":0.00593,"79":0.0415,"80":0.01778,"81":0.00593,"82":0.00593,"83":0.01778,"84":0.02371,"85":0.08892,"86":0.02371,"87":0.01778,"88":0.02371,"89":0.00593,"90":0.00593,"91":0.00593,"92":0.03557,"93":0.02964,"94":0.03557,"95":1.07297,"96":0.02371,"97":0.00593,"98":0.01778,"99":0.01186,"100":0.00593,"101":0.03557,"102":2.96993,"103":1.48793,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 49 50 51 52 55 56 57 58 62 63 64 66 67 68 70 71 72 73 74 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.09485},B:{"12":0.00593,"14":0.00593,"17":0.00593,"18":0.01778,"84":0.00593,"85":0.00593,"86":0.00593,"89":0.00593,"92":0.01186,"99":0.00593,"103":0.01186,"104":0.00593,"105":0.01186,"106":0.0415,"107":0.08892,"108":0.07706,"109":0.09485,"110":0.05335,"111":0.12449,"112":0.00593,"113":0.00593,"114":0.00593,"115":0.01186,"116":0.05335,"117":0.78842,"118":0.80621,"119":0.00593,_:"13 15 16 79 80 81 83 87 88 90 91 93 94 95 96 97 98 100 101 102"},E:{"5":0.00593,"7":0.00593,"11":0.00593,"13":0.00593,"14":0.0415,"15":0.00593,_:"0 4 6 8 9 10 12 3.1 3.2 6.1 7.1 10.1 12.1 17.2","5.1":0.01778,"9.1":0.03557,"11.1":0.02371,"13.1":0.09485,"14.1":0.08299,"15.1":0.01186,"15.2-15.3":0.00593,"15.4":0.01186,"15.5":0.02964,"15.6":0.16598,"16.0":0.02371,"16.1":0.04742,"16.2":0.03557,"16.3":0.10078,"16.4":0.03557,"16.5":0.08892,"16.6":0.41496,"17.0":0.39718,"17.1":0.03557},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00099,"5.0-5.1":0.00099,"6.0-6.1":0.00297,"7.0-7.1":0.00694,"8.1-8.4":0.00099,"9.0-9.2":0.00694,"9.3":0.02378,"10.0-10.2":0.00099,"10.3":0.03468,"11.0-11.2":0.0317,"11.3-11.4":0.0109,"12.0-12.1":0.00892,"12.2-12.5":0.15752,"13.0-13.1":0.00495,"13.2":0.02675,"13.3":0.00991,"13.4-13.7":0.0317,"14.0-14.4":0.08718,"14.5-14.8":0.14068,"15.0-15.1":0.05548,"15.2-15.3":0.06341,"15.4":0.07034,"15.5":0.10006,"15.6-15.7":0.69251,"16.0":0.25561,"16.1":0.48941,"16.2":0.23876,"16.3":0.44285,"16.4":0.09511,"16.5":0.25362,"16.6-16.7":4.75049,"17.0":1.69215,"17.1":0.10204,"17.2":0.00297},P:{"4":0.04174,"20":0.06261,"21":0.05217,"22":0.82433,"23":0.17739,_:"5.0-5.4 6.2-6.4 8.2 9.2 12.0 14.0","7.2-7.4":0.0313,"10.1":0.01043,"11.1-11.2":0.01043,"13.0":0.01043,"15.0":0.01043,"16.0":0.01043,"17.0":0.02087,"18.0":0.0313,"19.0":0.04174},I:{"0":0.10128,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00007,"4.4":0,"4.4.3-4.4.4":0.00031},A:{"8":0.03184,"9":0.01273,"10":0.00637,"11":0.29289,_:"6 7 5.5"},K:{"0":1.17124,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.15881},Q:{"13.1":0.00407},O:{"0":0.28911},H:{"0":0.03},L:{"0":27.77468}}; diff --git a/node_modules/caniuse-lite/data/regions/UG.js b/node_modules/caniuse-lite/data/regions/UG.js new file mode 100644 index 00000000..e0f46392 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/UG.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.0022,"38":0.0022,"42":0.0022,"43":0.00441,"45":0.0022,"47":0.0022,"50":0.00881,"52":0.00661,"55":0.0022,"56":0.0022,"58":0.0022,"59":0.00881,"60":0.00441,"67":0.0022,"68":0.0022,"72":0.00661,"78":0.00661,"90":0.0022,"91":0.00441,"93":0.0022,"101":0.0022,"102":0.00441,"103":0.0022,"107":0.0022,"108":0.0022,"109":0.0022,"110":0.00441,"111":0.00441,"112":0.00661,"113":0.00441,"114":0.00661,"115":0.37671,"116":0.01542,"117":0.08812,"118":1.08167,"119":0.33045,"120":0.01322,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 44 46 48 49 51 53 54 57 61 62 63 64 65 66 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 92 94 95 96 97 98 99 100 104 105 106 121 122 3.5 3.6"},D:{"11":0.0022,"19":0.00441,"43":0.0022,"49":0.0022,"50":0.00661,"55":0.0022,"58":0.0022,"59":0.0022,"62":0.0022,"63":0.0022,"64":0.01322,"66":0.0022,"67":0.0022,"68":0.00661,"69":0.00441,"70":0.00441,"71":0.00441,"72":0.01542,"73":0.00441,"74":0.00441,"75":0.00441,"76":0.00441,"77":0.0022,"78":0.0022,"79":0.01762,"80":0.00441,"81":0.0022,"83":0.00881,"84":0.0022,"85":0.0022,"86":0.00441,"87":0.01983,"88":0.01322,"89":0.00441,"90":0.0022,"91":0.00441,"92":0.00441,"93":0.07711,"94":0.01322,"95":0.01983,"96":0.00441,"97":0.0022,"98":0.0022,"99":0.00661,"100":0.00441,"101":0.00441,"102":0.01322,"103":0.03965,"104":0.01102,"105":0.00881,"106":0.01102,"107":0.01322,"108":0.01762,"109":1.04643,"110":0.00661,"111":0.02644,"112":0.02423,"113":0.02423,"114":0.06829,"115":0.0705,"116":0.40756,"117":3.83983,"118":4.35533,"119":0.01322,"120":0.0022,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 51 52 53 54 56 57 60 61 65 121 122"},F:{"57":0.0022,"74":0.0022,"77":0.0022,"78":0.0022,"79":0.0022,"92":0.0022,"95":0.02864,"99":0.00441,"101":0.00441,"102":0.25775,"103":0.16523,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 80 81 82 83 84 85 86 87 88 89 90 91 93 94 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00881,"13":0.01102,"14":0.0022,"15":0.0022,"16":0.0022,"17":0.0022,"18":0.05728,"84":0.0022,"86":0.0022,"89":0.00661,"90":0.00441,"92":0.01762,"100":0.00661,"105":0.0022,"108":0.0022,"109":0.03084,"110":0.0022,"111":0.00441,"112":0.00441,"113":0.0022,"114":0.03305,"115":0.01762,"116":0.02864,"117":0.69395,"118":0.65209,"119":0.00881,_:"79 80 81 83 85 87 88 91 93 94 95 96 97 98 99 101 102 103 104 106 107"},E:{"12":0.0022,"13":0.0022,"14":0.00661,_:"0 4 5 6 7 8 9 10 11 15 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.01322,"11.1":0.0022,"12.1":0.0022,"13.1":0.01102,"14.1":0.02203,"15.1":0.00441,"15.2-15.3":0.00441,"15.4":0.0022,"15.5":0.00661,"15.6":0.02423,"16.0":0.0022,"16.1":0.00441,"16.2":0.00441,"16.3":0.01322,"16.4":0.01542,"16.5":0.02203,"16.6":0.03965,"17.0":0.04406,"17.1":0.00441},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00035,"5.0-5.1":0.00035,"6.0-6.1":0.00106,"7.0-7.1":0.00248,"8.1-8.4":0.00035,"9.0-9.2":0.00248,"9.3":0.0085,"10.0-10.2":0.00035,"10.3":0.01239,"11.0-11.2":0.01133,"11.3-11.4":0.00389,"12.0-12.1":0.00319,"12.2-12.5":0.05628,"13.0-13.1":0.00177,"13.2":0.00956,"13.3":0.00354,"13.4-13.7":0.01133,"14.0-14.4":0.03115,"14.5-14.8":0.05027,"15.0-15.1":0.01982,"15.2-15.3":0.02265,"15.4":0.02513,"15.5":0.03575,"15.6-15.7":0.24743,"16.0":0.09133,"16.1":0.17487,"16.2":0.08531,"16.3":0.15823,"16.4":0.03398,"16.5":0.09062,"16.6-16.7":1.69735,"17.0":0.6046,"17.1":0.03646,"17.2":0.00106},P:{"4":0.07173,"20":0.07173,"21":0.10247,"22":0.56361,"23":0.07173,"5.0-5.4":0.02049,_:"6.2-6.4 8.2 10.1","7.2-7.4":0.10247,"9.2":0.12297,"11.1-11.2":0.04099,"12.0":0.03074,"13.0":0.01025,"14.0":0.01025,"15.0":0.03074,"16.0":0.03074,"17.0":0.05124,"18.0":0.02049,"19.0":0.08198},I:{"0":0.03879,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00012},A:{"8":0.00242,"10":0.00242,"11":0.01939,_:"6 7 9 5.5"},K:{"0":6.85897,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.45223,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.17153},Q:{_:"13.1"},O:{"0":0.42104},H:{"0":9.85},L:{"0":62.08877}}; diff --git a/node_modules/caniuse-lite/data/regions/US.js b/node_modules/caniuse-lite/data/regions/US.js new file mode 100644 index 00000000..d2df9e50 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/US.js @@ -0,0 +1 @@ +module.exports={C:{"3":0.00698,"4":0.00698,"7":0.00698,"11":0.03488,"38":0.00698,"40":0.00698,"43":0.00698,"44":0.01395,"45":0.00698,"47":0.00698,"48":0.04185,"50":0.01395,"51":0.00698,"52":0.03488,"53":0.00698,"54":0.01395,"55":0.00698,"56":0.01395,"57":0.01395,"58":0.00698,"59":0.02093,"60":0.01395,"61":0.01395,"62":0.00698,"63":0.01395,"64":0.00698,"65":0.01395,"66":0.00698,"67":0.00698,"68":0.00698,"70":0.00698,"72":0.00698,"73":0.00698,"74":0.00698,"76":0.00698,"77":0.00698,"78":0.10463,"79":0.00698,"80":0.00698,"81":0.00698,"83":0.01395,"85":0.00698,"87":0.00698,"88":0.00698,"91":0.00698,"94":0.01395,"101":0.00698,"102":0.04883,"105":0.00698,"107":0.00698,"108":0.00698,"109":0.01395,"110":0.01395,"111":0.02093,"112":0.01395,"113":0.01395,"114":0.02093,"115":0.279,"116":0.0279,"117":0.18135,"118":1.69493,"119":0.279,_:"2 5 6 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 41 42 46 49 69 71 75 82 84 86 89 90 92 93 95 96 97 98 99 100 103 104 106 120 121 122","3.5":0.00698,"3.6":0.00698},D:{"5":0.00698,"10":0.00698,"31":0.00698,"36":0.00698,"37":0.00698,"39":0.00698,"41":0.00698,"42":0.00698,"43":0.00698,"44":0.00698,"45":0.00698,"46":0.00698,"47":0.01395,"48":0.03488,"49":0.07673,"50":0.00698,"51":0.00698,"52":0.00698,"53":0.00698,"54":0.00698,"55":0.00698,"56":0.0558,"57":0.00698,"58":0.00698,"59":0.00698,"60":0.01395,"61":0.00698,"62":0.00698,"63":0.01395,"64":0.00698,"65":0.03488,"66":0.02093,"67":0.01395,"68":0.09765,"69":0.10463,"70":0.07673,"71":0.06278,"72":0.09765,"73":0.03488,"74":0.10463,"75":0.1116,"76":0.38363,"77":0.0837,"78":0.10463,"79":0.26505,"80":0.26505,"81":0.1674,"83":0.16043,"84":0.1116,"85":0.1674,"86":0.20925,"87":0.1953,"88":0.14648,"89":0.1116,"90":0.15345,"91":0.12555,"92":0.04883,"93":0.43245,"94":0.0279,"95":0.01395,"96":0.0279,"97":0.0279,"98":0.04883,"99":0.03488,"100":0.06278,"101":0.09068,"102":0.06278,"103":0.59985,"104":0.06278,"105":0.04883,"106":0.04883,"107":0.35573,"108":0.43943,"109":1.04625,"110":0.46035,"111":0.77423,"112":0.48825,"113":0.18135,"114":1.3392,"115":0.87885,"116":2.95043,"117":12.6945,"118":11.66918,"119":0.04185,"120":0.03488,_:"4 6 7 8 9 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 38 40 121 122"},F:{"43":0.00698,"47":0.00698,"48":0.00698,"49":0.00698,"52":0.00698,"53":0.01395,"54":0.02093,"55":0.02093,"56":0.00698,"65":0.00698,"66":0.00698,"67":0.00698,"68":0.00698,"74":0.00698,"75":0.00698,"76":0.00698,"85":0.00698,"95":0.0279,"97":0.32783,"98":0.00698,"99":0.02093,"100":0.02093,"101":0.0279,"102":3.11783,"103":0.37665,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 50 51 57 58 60 62 63 64 69 70 71 72 73 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 96 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.00698},B:{"12":0.01395,"13":0.00698,"14":0.00698,"15":0.01395,"16":0.00698,"17":0.00698,"18":0.01395,"79":0.01395,"80":0.0279,"81":0.02093,"83":0.03488,"84":0.0279,"85":0.01395,"86":0.0279,"87":0.14648,"88":0.01395,"89":0.02093,"90":0.01395,"92":0.02093,"95":0.01395,"98":0.00698,"99":0.0558,"100":0.00698,"106":0.00698,"107":0.00698,"108":0.00698,"109":0.09068,"110":0.01395,"111":0.3348,"112":0.3348,"113":0.01395,"114":0.04185,"115":0.06278,"116":0.16043,"117":4.23383,"118":2.78303,"119":0.00698,_:"91 93 94 96 97 101 102 103 104 105"},E:{"5":0.00698,"9":0.00698,"10":0.00698,"11":0.00698,"12":0.01395,"13":0.0558,"14":0.24413,"15":0.04185,_:"0 4 6 7 8 3.1 3.2 6.1 7.1 17.2","5.1":0.00698,"9.1":0.57195,"10.1":0.00698,"11.1":0.01395,"12.1":0.06278,"13.1":0.32783,"14.1":0.558,"15.1":0.10463,"15.2-15.3":0.07673,"15.4":0.1674,"15.5":0.26505,"15.6":1.29038,"16.0":0.16043,"16.1":0.40455,"16.2":0.37665,"16.3":0.85095,"16.4":0.37665,"16.5":1.05323,"16.6":5.28008,"17.0":1.24853,"17.1":0.07673},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00156,"5.0-5.1":0.00156,"6.0-6.1":0.00467,"7.0-7.1":0.01089,"8.1-8.4":0.00156,"9.0-9.2":0.01089,"9.3":0.03733,"10.0-10.2":0.00156,"10.3":0.05444,"11.0-11.2":0.04977,"11.3-11.4":0.01711,"12.0-12.1":0.014,"12.2-12.5":0.24732,"13.0-13.1":0.00778,"13.2":0.042,"13.3":0.01555,"13.4-13.7":0.04977,"14.0-14.4":0.13688,"14.5-14.8":0.22087,"15.0-15.1":0.08711,"15.2-15.3":0.09955,"15.4":0.11044,"15.5":0.1571,"15.6-15.7":1.08726,"16.0":0.40131,"16.1":0.76839,"16.2":0.37486,"16.3":0.69529,"16.4":0.14932,"16.5":0.3982,"16.6-16.7":7.45841,"17.0":2.65672,"17.1":0.16021,"17.2":0.00467},P:{"4":0.02212,"20":0.02212,"21":0.0553,"22":0.69673,"23":0.17695,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0","16.0":0.02212,"17.0":0.01106,"18.0":0.01106,"19.0":0.01106},I:{"0":0.11737,"3":0,"4":0.00002,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00008,"4.4":0,"4.4.3-4.4.4":0.00035},A:{"8":0.00837,"9":0.02511,"11":0.09207,_:"6 7 10 5.5"},K:{"0":0.2057,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00303,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.29645},Q:{"13.1":0.00908},O:{"0":0.05143},H:{"0":0},L:{"0":13.2382}}; diff --git a/node_modules/caniuse-lite/data/regions/UY.js b/node_modules/caniuse-lite/data/regions/UY.js new file mode 100644 index 00000000..8ea28fa9 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/UY.js @@ -0,0 +1 @@ +module.exports={C:{"44":0.00515,"48":0.00515,"52":0.0206,"57":0.0103,"60":0.00515,"63":0.00515,"66":0.02575,"68":0.0103,"74":0.00515,"78":0.01545,"80":0.00515,"83":0.0103,"86":0.00515,"88":0.0206,"91":0.0103,"94":0.01545,"95":0.00515,"98":0.00515,"99":0.00515,"102":0.05664,"105":0.01545,"106":0.00515,"107":0.0103,"110":0.00515,"111":0.0103,"112":0.0206,"113":0.0206,"114":0.02575,"115":0.55609,"116":0.0103,"117":0.07209,"118":1.39538,"119":0.2729,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 49 50 51 53 54 55 56 58 59 61 62 64 65 67 69 70 71 72 73 75 76 77 79 81 82 84 85 87 89 90 92 93 96 97 100 101 103 104 108 109 120 121 122 3.5 3.6"},D:{"26":0.00515,"38":0.38103,"41":0.00515,"43":0.00515,"49":0.05149,"52":0.00515,"55":0.00515,"56":0.00515,"62":0.00515,"63":0.00515,"65":0.0206,"68":0.01545,"70":0.0103,"71":0.0206,"72":0.00515,"73":0.03089,"74":0.04634,"75":0.01545,"76":0.0206,"77":0.00515,"78":0.00515,"79":0.05149,"80":0.07209,"81":0.0103,"83":0.03089,"84":0.00515,"85":0.0103,"86":0.2832,"87":0.02575,"88":0.0206,"89":0.0103,"90":0.03089,"91":0.04634,"92":0.0103,"93":0.05149,"94":0.01545,"95":0.00515,"96":0.0206,"97":0.01545,"98":0.0103,"99":0.0103,"100":0.00515,"101":0.0206,"102":0.02575,"103":0.09783,"104":0.0103,"105":0.03604,"106":0.04119,"107":0.01545,"108":0.07724,"109":2.53846,"110":0.0206,"111":0.04119,"112":0.04119,"113":0.06179,"114":0.15447,"115":0.21626,"116":1.03495,"117":15.32857,"118":16.05973,"119":0.01545,"120":0.00515,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34 35 36 37 39 40 42 44 45 46 47 48 50 51 53 54 57 58 59 60 61 64 66 67 69 121 122"},F:{"28":0.0103,"85":0.00515,"89":0.04119,"95":0.06694,"99":0.01545,"100":0.0103,"101":0.0206,"102":4.01107,"103":0.28834,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 90 91 92 93 94 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"14":0.00515,"17":0.00515,"18":0.00515,"84":0.00515,"92":0.01545,"108":0.00515,"109":0.04119,"111":0.00515,"112":0.00515,"113":0.00515,"114":0.01545,"115":0.01545,"116":0.05149,"117":1.81245,"118":1.91543,"119":0.00515,_:"12 13 15 16 79 80 81 83 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 110"},E:{"13":0.00515,"14":0.03089,"15":0.0103,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.0103,"13.1":0.04634,"14.1":0.04119,"15.1":0.03089,"15.2-15.3":0.00515,"15.4":0.0103,"15.5":0.03604,"15.6":0.09783,"16.0":0.00515,"16.1":0.04634,"16.2":0.0206,"16.3":0.04634,"16.4":0.03604,"16.5":0.09268,"16.6":0.35528,"17.0":0.21626,"17.1":0.0103},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00078,"5.0-5.1":0.00078,"6.0-6.1":0.00234,"7.0-7.1":0.00545,"8.1-8.4":0.00078,"9.0-9.2":0.00545,"9.3":0.01868,"10.0-10.2":0.00078,"10.3":0.02724,"11.0-11.2":0.02491,"11.3-11.4":0.00856,"12.0-12.1":0.00701,"12.2-12.5":0.12377,"13.0-13.1":0.00389,"13.2":0.02102,"13.3":0.00778,"13.4-13.7":0.02491,"14.0-14.4":0.0685,"14.5-14.8":0.11054,"15.0-15.1":0.04359,"15.2-15.3":0.04982,"15.4":0.05527,"15.5":0.07862,"15.6-15.7":0.54412,"16.0":0.20083,"16.1":0.38454,"16.2":0.1876,"16.3":0.34796,"16.4":0.07473,"16.5":0.19928,"16.6-16.7":3.73255,"17.0":1.32955,"17.1":0.08018,"17.2":0.00234},P:{"4":0.10188,"20":0.03056,"21":0.12226,"22":0.9373,"23":0.1732,"5.0-5.4":0.01019,_:"6.2-6.4 8.2 9.2 10.1 12.0 14.0 15.0 18.0","7.2-7.4":0.12226,"11.1-11.2":0.01019,"13.0":0.01019,"16.0":0.03056,"17.0":0.03056,"19.0":0.04075},I:{"0":0.06273,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00004,"4.4":0,"4.4.3-4.4.4":0.00019},A:{"8":0.00515,"9":0.00515,"11":0.06179,_:"6 7 10 5.5"},K:{"0":0.14005,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.1843},Q:{_:"13.1"},O:{"0":0.01455},H:{"0":0.02},L:{"0":40.25033}}; diff --git a/node_modules/caniuse-lite/data/regions/UZ.js b/node_modules/caniuse-lite/data/regions/UZ.js new file mode 100644 index 00000000..4f4d22f4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/UZ.js @@ -0,0 +1 @@ +module.exports={C:{"48":0.0246,"50":0.00246,"52":0.0123,"56":0.00246,"67":0.00246,"68":0.00246,"78":0.00246,"91":0.00246,"96":0.00246,"97":0.00246,"99":0.00246,"101":0.00246,"102":0.01476,"104":0.00246,"105":0.0123,"107":0.00738,"110":0.00492,"113":0.00246,"114":0.00246,"115":0.11562,"116":0.00246,"117":0.0123,"118":0.27552,"119":0.05904,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 51 53 54 55 57 58 59 60 61 62 63 64 65 66 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 98 100 103 106 108 109 111 112 120 121 122 3.5 3.6"},D:{"11":0.00246,"22":0.00246,"38":0.00246,"39":0.00246,"41":0.00246,"42":0.00246,"43":0.00246,"44":0.00246,"45":0.00246,"46":0.00246,"47":0.00246,"49":0.0246,"51":0.00246,"53":0.00246,"55":0.00246,"56":0.00738,"61":0.00246,"64":0.00492,"66":0.00492,"68":0.00246,"69":0.00246,"71":0.00246,"72":0.00738,"73":0.00246,"74":0.00246,"75":0.01476,"78":0.00246,"79":0.01476,"80":0.00492,"81":0.00492,"83":0.02214,"84":0.00246,"85":0.00738,"86":0.00738,"87":0.00738,"88":0.00246,"89":0.01968,"90":0.00492,"91":0.00246,"92":0.00246,"93":0.02952,"94":0.00738,"95":0.00492,"96":0.00738,"97":0.00984,"98":0.01968,"99":0.00738,"100":0.01476,"101":0.00738,"102":0.04674,"103":0.02952,"104":0.00738,"105":0.0123,"106":0.15006,"107":0.03936,"108":0.0984,"109":2.25336,"110":0.0492,"111":0.02214,"112":0.06396,"113":0.02706,"114":0.37884,"115":0.0369,"116":0.29028,"117":5.289,"118":6.6297,"119":0.00738,"120":0.00246,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 48 50 52 54 57 58 59 60 62 63 65 67 70 76 77 121 122"},F:{"28":0.00246,"36":0.00492,"46":0.00246,"49":0.00492,"51":0.00492,"53":0.02706,"55":0.00246,"57":0.00246,"60":0.00246,"62":0.00738,"67":0.00246,"68":0.00984,"71":0.00246,"73":0.00246,"77":0.00246,"79":0.04428,"81":0.00246,"82":0.0123,"84":0.00246,"90":0.00246,"93":0.00246,"94":0.00984,"95":0.0492,"96":0.00492,"97":0.00246,"98":0.00246,"99":0.0123,"100":0.01476,"101":0.0246,"102":0.17958,"103":0.0984,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 50 52 54 56 58 63 64 65 66 69 70 72 74 75 76 78 80 83 85 86 87 88 89 91 92 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00246,"14":0.00492,"15":0.00246,"16":0.00738,"17":0.00492,"18":0.0369,"84":0.00984,"89":0.00246,"90":0.00246,"91":0.00246,"92":0.0246,"100":0.00492,"106":0.00246,"107":0.00492,"108":0.00492,"109":0.05166,"110":0.00984,"111":0.00246,"112":0.01722,"113":0.01476,"114":0.00738,"115":0.01722,"116":0.02706,"117":0.67158,"118":0.7749,"119":0.00246,_:"13 79 80 81 83 85 86 87 88 93 94 95 96 97 98 99 101 102 103 104 105"},E:{"9":0.00246,"13":0.00246,"14":0.00984,_:"0 4 5 6 7 8 10 11 12 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.34686,"12.1":0.00246,"13.1":0.00984,"14.1":0.01476,"15.1":0.00492,"15.2-15.3":0.00246,"15.4":0.00492,"15.5":0.00984,"15.6":0.03198,"16.0":0.00246,"16.1":0.01968,"16.2":0.0123,"16.3":0.01968,"16.4":0.01476,"16.5":0.02952,"16.6":0.08856,"17.0":0.13776,"17.1":0.00738},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00067,"5.0-5.1":0.00067,"6.0-6.1":0.002,"7.0-7.1":0.00466,"8.1-8.4":0.00067,"9.0-9.2":0.00466,"9.3":0.01598,"10.0-10.2":0.00067,"10.3":0.0233,"11.0-11.2":0.0213,"11.3-11.4":0.00732,"12.0-12.1":0.00599,"12.2-12.5":0.10585,"13.0-13.1":0.00333,"13.2":0.01797,"13.3":0.00666,"13.4-13.7":0.0213,"14.0-14.4":0.05858,"14.5-14.8":0.09453,"15.0-15.1":0.03728,"15.2-15.3":0.0426,"15.4":0.04726,"15.5":0.06724,"15.6-15.7":0.46532,"16.0":0.17175,"16.1":0.32885,"16.2":0.16043,"16.3":0.29757,"16.4":0.06391,"16.5":0.17042,"16.6-16.7":3.192,"17.0":1.137,"17.1":0.06857,"17.2":0.002},P:{"4":0.28414,"20":0.19281,"21":0.33488,"22":2.34419,"23":0.29429,"5.0-5.4":0.01015,"6.2-6.4":0.06089,"7.2-7.4":0.30444,_:"8.2 10.1","9.2":0.0203,"11.1-11.2":0.06089,"12.0":0.01015,"13.0":0.06089,"14.0":0.05074,"15.0":0.0203,"16.0":0.07104,"17.0":0.10148,"18.0":0.08118,"19.0":0.21311},I:{"0":0.0375,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.00011},A:{"8":0.01029,"9":0.00257,"10":0.00257,"11":0.09001,_:"6 7 5.5"},K:{"0":0.40711,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.06785},Q:{"13.1":0.00754},O:{"0":2.62357},H:{"0":0},L:{"0":61.75431}}; diff --git a/node_modules/caniuse-lite/data/regions/VA.js b/node_modules/caniuse-lite/data/regions/VA.js new file mode 100644 index 00000000..c6a6a3ea --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/VA.js @@ -0,0 +1 @@ +module.exports={C:{"39":0.01801,"96":0.09906,"109":0.00901,"115":0.79244,"117":0.52229,"118":6.50161,"119":1.13463,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 97 98 99 100 101 102 103 104 105 106 107 108 110 111 112 113 114 116 120 121 122 3.5 3.6"},D:{"49":0.06304,"67":0.07204,"93":0.79244,"97":0.05403,"103":0.01801,"105":0.1711,"107":2.42235,"108":2.18822,"109":1.29672,"111":0.01801,"112":0.00901,"113":0.08105,"114":0.36921,"115":0.1711,"116":0.5403,"117":26.60978,"118":23.68315,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 94 95 96 98 99 100 101 102 104 106 110 119 120 121 122"},F:{"93":0.26115,"102":0.00901,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 94 95 96 97 98 99 100 101 103 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.13508,"103":2.54842,"109":0.00901,"113":0.00901,"116":0.01801,"117":7.3751,"118":8.07749,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 104 105 106 107 108 110 111 112 114 115 119"},E:{"14":0.01801,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.2-15.3 15.4 15.5 16.0 16.2 17.2","11.1":0.23413,"12.1":0.01801,"13.1":0.09005,"14.1":0.04503,"15.1":0.14408,"15.6":0.57632,"16.1":0.07204,"16.3":0.39622,"16.4":0.04503,"16.5":0.06304,"16.6":1.54886,"17.0":0.34219,"17.1":0.03602},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0003,"5.0-5.1":0.0003,"6.0-6.1":0.00089,"7.0-7.1":0.00208,"8.1-8.4":0.0003,"9.0-9.2":0.00208,"9.3":0.00714,"10.0-10.2":0.0003,"10.3":0.01041,"11.0-11.2":0.00951,"11.3-11.4":0.00327,"12.0-12.1":0.00268,"12.2-12.5":0.04727,"13.0-13.1":0.00149,"13.2":0.00803,"13.3":0.00297,"13.4-13.7":0.00951,"14.0-14.4":0.02616,"14.5-14.8":0.04222,"15.0-15.1":0.01665,"15.2-15.3":0.01903,"15.4":0.02111,"15.5":0.03003,"15.6-15.7":0.20782,"16.0":0.0767,"16.1":0.14687,"16.2":0.07165,"16.3":0.1329,"16.4":0.02854,"16.5":0.07611,"16.6-16.7":1.42558,"17.0":0.5078,"17.1":0.03062,"17.2":0.00089},P:{"22":0.24484,"23":0.01113,_:"4 20 21 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0","18.0":0.01113,"19.0":0.03339},I:{"0":0.03168,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.0001},A:{"8":0.02702,"9":0.00901,"11":0.03602,_:"6 7 10 5.5"},K:{"0":0.04975,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.03682},Q:{_:"13.1"},O:{"0":0.01393},H:{"0":0},L:{"0":6.59656}}; diff --git a/node_modules/caniuse-lite/data/regions/VC.js b/node_modules/caniuse-lite/data/regions/VC.js new file mode 100644 index 00000000..3a5d5cd9 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/VC.js @@ -0,0 +1 @@ +module.exports={C:{"39":0.00762,"78":0.00381,"80":0.00381,"113":0.01143,"115":0.12192,"116":0.02667,"117":0.06477,"118":1.27635,"119":0.17526,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 114 120 121 122 3.5 3.6"},D:{"29":0.04572,"49":0.01524,"57":0.00381,"62":0.00381,"70":0.00381,"71":0.00381,"74":0.06477,"75":0.01524,"76":0.05715,"79":0.00762,"81":0.02667,"83":0.0762,"85":0.00762,"86":0.00762,"87":0.02667,"88":0.01143,"89":0.01905,"91":0.01143,"93":0.08763,"97":0.01524,"99":0.00381,"100":0.00762,"103":0.14097,"104":0.00762,"105":0.01143,"108":0.06858,"109":0.64389,"111":0.03429,"112":0.0762,"113":0.02286,"114":0.33147,"115":0.05334,"116":1.83261,"117":8.29056,"118":6.79323,"119":0.05715,"120":0.00381,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 58 59 60 61 63 64 65 66 67 68 69 72 73 77 78 80 84 90 92 94 95 96 98 101 102 106 107 110 121 122"},F:{"28":0.00381,"46":0.00762,"85":0.03048,"95":0.02286,"102":0.8382,"103":0.08763,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"92":0.00381,"96":0.00381,"105":0.28575,"109":0.08001,"111":0.05334,"112":0.03429,"114":0.0381,"115":0.00381,"116":0.04191,"117":2.52222,"118":2.59842,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 97 98 99 100 101 102 103 104 106 107 108 110 113 119"},E:{"14":0.03048,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.01524,"12.1":0.00381,"13.1":0.06477,"14.1":0.06096,"15.1":0.00381,"15.2-15.3":0.04572,"15.4":0.03429,"15.5":0.00381,"15.6":0.9525,"16.0":0.02667,"16.1":0.02667,"16.2":0.00762,"16.3":0.05715,"16.4":0.33909,"16.5":0.0381,"16.6":1.18872,"17.0":0.44958,"17.1":0.06477},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00097,"5.0-5.1":0.00097,"6.0-6.1":0.00291,"7.0-7.1":0.00678,"8.1-8.4":0.00097,"9.0-9.2":0.00678,"9.3":0.02325,"10.0-10.2":0.00097,"10.3":0.03391,"11.0-11.2":0.031,"11.3-11.4":0.01066,"12.0-12.1":0.00872,"12.2-12.5":0.15403,"13.0-13.1":0.00484,"13.2":0.02616,"13.3":0.00969,"13.4-13.7":0.031,"14.0-14.4":0.08525,"14.5-14.8":0.13756,"15.0-15.1":0.05425,"15.2-15.3":0.062,"15.4":0.06878,"15.5":0.09784,"15.6-15.7":0.67715,"16.0":0.24993,"16.1":0.47856,"16.2":0.23347,"16.3":0.43302,"16.4":0.093,"16.5":0.248,"16.6-16.7":4.64508,"17.0":1.6546,"17.1":0.09978,"17.2":0.00291},P:{"4":0.12148,"20":0.04417,"21":0.26505,"22":2.91554,"23":0.61845,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 15.0","7.2-7.4":0.20983,"11.1-11.2":0.07731,"13.0":0.04417,"14.0":0.01104,"16.0":0.03313,"17.0":0.02209,"18.0":0.04417,"19.0":0.04417},I:{"0":0.12933,"3":0,"4":0.00003,"2.1":0,"2.2":0.00004,"2.3":0,"4.1":0.00003,"4.2-4.3":0.00009,"4.4":0,"4.4.3-4.4.4":0.00039},A:{"10":0.01143,_:"6 7 8 9 11 5.5"},K:{"0":0.30331,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00619,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.3095},Q:{_:"13.1"},O:{"0":0.05571},H:{"0":0},L:{"0":54.00445}}; diff --git a/node_modules/caniuse-lite/data/regions/VE.js b/node_modules/caniuse-lite/data/regions/VE.js new file mode 100644 index 00000000..f1c0b21b --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/VE.js @@ -0,0 +1 @@ +module.exports={C:{"27":0.0042,"34":0.0042,"35":0.021,"40":0.0042,"47":0.0042,"49":0.0084,"52":0.29813,"56":0.0042,"57":0.0042,"59":0.0042,"60":0.0126,"62":0.0084,"63":0.0042,"64":0.0042,"65":0.0084,"66":0.0042,"67":0.0084,"68":0.0168,"71":0.0042,"72":0.0084,"75":0.0126,"78":0.021,"80":0.0042,"88":0.0126,"91":0.0126,"93":0.0042,"96":0.0042,"99":0.0168,"100":0.0084,"102":0.0168,"103":0.0042,"104":0.0084,"105":0.0042,"106":0.0042,"107":0.0042,"108":0.0084,"109":0.0084,"110":0.0084,"111":0.0084,"112":0.0126,"113":0.02939,"114":0.0168,"115":0.93218,"116":0.03359,"117":0.04199,"118":1.04975,"119":0.23934,"120":0.0042,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 29 30 31 32 33 36 37 38 39 41 42 43 44 45 46 48 50 51 53 54 55 58 61 69 70 73 74 76 77 79 81 82 83 84 85 86 87 89 90 92 94 95 97 98 101 121 122 3.5 3.6"},D:{"11":0.0042,"26":0.0042,"45":0.0042,"46":0.0084,"47":0.0084,"48":0.0042,"49":0.13857,"51":0.0042,"53":0.0084,"55":0.0042,"56":0.021,"57":0.0042,"58":0.0042,"59":0.0042,"61":0.0084,"63":0.0084,"64":0.0084,"65":0.0084,"66":0.04619,"67":0.0042,"68":0.0168,"69":0.0168,"70":0.0084,"71":0.0168,"72":0.0126,"73":0.021,"74":0.0126,"75":0.02519,"76":0.02519,"77":0.0084,"78":0.0042,"79":0.05459,"80":0.021,"81":0.02939,"83":0.04619,"84":0.0084,"85":0.05039,"86":0.05039,"87":0.06299,"88":0.03359,"89":0.0084,"90":0.021,"91":0.02519,"92":0.02939,"93":0.02939,"94":0.0084,"95":0.0126,"96":0.021,"97":0.05459,"98":0.05039,"99":0.021,"100":0.03359,"101":0.04619,"102":0.05039,"103":0.10078,"104":0.03359,"105":0.05039,"106":0.06299,"107":0.08818,"108":0.13857,"109":7.64638,"110":0.04199,"111":0.07558,"112":0.09238,"113":0.10917,"114":0.13437,"115":0.08398,"116":0.63405,"117":7.19709,"118":8.03269,"119":0.0126,"120":0.0042,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 50 52 54 60 62 121 122"},F:{"28":0.0042,"36":0.0042,"46":0.0042,"65":0.0042,"69":0.0042,"72":0.0042,"79":0.0168,"82":0.0042,"85":0.04199,"86":0.0042,"89":0.0042,"93":0.0042,"94":0.0084,"95":0.39051,"97":0.0126,"98":0.0042,"99":0.0042,"100":0.0084,"101":0.0042,"102":1.52844,"103":0.34012,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 70 71 73 74 75 76 77 78 80 81 83 84 87 88 90 91 92 96 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.0084,"83":0.0042,"84":0.0042,"85":0.0042,"89":0.0042,"92":0.02519,"96":0.0084,"100":0.0042,"103":0.0042,"106":0.0042,"107":0.0168,"108":0.0084,"109":0.17216,"110":0.0042,"111":0.021,"112":0.021,"113":0.0084,"114":0.0168,"115":0.0168,"116":0.03779,"117":1.16312,"118":1.39407,"119":0.0042,_:"12 13 14 15 16 17 79 80 81 86 87 88 90 91 93 94 95 97 98 99 101 102 104 105"},E:{"14":0.0042,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 15.2-15.3 17.2","5.1":0.0042,"11.1":0.0042,"12.1":0.0042,"13.1":0.02519,"14.1":0.02519,"15.1":0.0084,"15.4":0.0168,"15.5":0.0084,"15.6":0.05879,"16.0":0.0042,"16.1":0.0084,"16.2":0.0042,"16.3":0.021,"16.4":0.0084,"16.5":0.03359,"16.6":0.09658,"17.0":0.07138,"17.1":0.0042},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00029,"5.0-5.1":0.00029,"6.0-6.1":0.00088,"7.0-7.1":0.00206,"8.1-8.4":0.00029,"9.0-9.2":0.00206,"9.3":0.00707,"10.0-10.2":0.00029,"10.3":0.01031,"11.0-11.2":0.00943,"11.3-11.4":0.00324,"12.0-12.1":0.00265,"12.2-12.5":0.04686,"13.0-13.1":0.00147,"13.2":0.00796,"13.3":0.00295,"13.4-13.7":0.00943,"14.0-14.4":0.02593,"14.5-14.8":0.04185,"15.0-15.1":0.0165,"15.2-15.3":0.01886,"15.4":0.02092,"15.5":0.02976,"15.6-15.7":0.20599,"16.0":0.07603,"16.1":0.14558,"16.2":0.07102,"16.3":0.13173,"16.4":0.02829,"16.5":0.07544,"16.6-16.7":1.41304,"17.0":0.50333,"17.1":0.03035,"17.2":0.00088},P:{"4":0.14902,"20":0.02129,"21":0.05322,"22":0.58542,"23":0.0958,_:"5.0-5.4 8.2 9.2 10.1 11.1-11.2 12.0 14.0","6.2-6.4":0.02129,"7.2-7.4":0.07451,"13.0":0.02129,"15.0":0.01064,"16.0":0.03193,"17.0":0.05322,"18.0":0.01064,"19.0":0.03193},I:{"0":0.02886,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00009},A:{"8":0.00452,"11":0.05426,_:"6 7 9 10 5.5"},K:{"0":0.41408,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.0116,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.11602},Q:{"13.1":0.0058},O:{"0":0.04641},H:{"0":0.05},L:{"0":60.16784}}; diff --git a/node_modules/caniuse-lite/data/regions/VG.js b/node_modules/caniuse-lite/data/regions/VG.js new file mode 100644 index 00000000..71a416e3 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/VG.js @@ -0,0 +1 @@ +module.exports={C:{"75":0.01152,"104":0.01152,"110":0.00384,"111":0.45312,"114":0.00384,"115":0.14592,"117":0.3072,"118":1.39008,"119":0.0768,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 105 106 107 108 109 112 113 116 120 121 122 3.5 3.6"},D:{"38":0.00384,"41":0.00384,"42":0.00384,"49":0.01536,"53":0.00384,"54":0.00384,"64":0.00384,"68":0.00384,"69":0.00384,"75":0.61056,"76":0.01152,"79":0.00384,"87":0.0192,"88":0.00768,"91":0.00384,"92":0.00384,"93":0.00384,"94":0.00384,"98":0.00384,"100":0.03072,"101":0.01536,"103":0.54528,"106":0.00384,"107":0.53376,"108":0.00384,"109":1.10976,"110":0.00384,"112":0.08064,"113":0.00384,"114":0.40704,"115":0.06912,"116":2.60736,"117":9.27744,"118":6.28224,"119":0.00384,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 43 44 45 46 47 48 50 51 52 55 56 57 58 59 60 61 62 63 65 66 67 70 71 72 73 74 77 78 80 81 83 84 85 86 89 90 95 96 97 99 102 104 105 111 120 121 122"},F:{"77":0.00384,"98":0.01152,"101":0.01152,"102":0.3456,"103":0.06144,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"92":0.00384,"107":0.00384,"108":0.00768,"109":0.0192,"110":0.02688,"114":0.04608,"115":0.1344,"116":0.11904,"117":2.97984,"118":1.8816,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 111 112 113 119"},E:{"13":0.02304,"14":0.04608,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 17.2","5.1":0.00384,"12.1":0.00768,"13.1":0.13056,"14.1":0.0576,"15.1":0.02304,"15.2-15.3":0.00384,"15.4":0.0192,"15.5":0.02304,"15.6":0.2688,"16.0":0.06912,"16.1":0.16512,"16.2":0.06912,"16.3":0.41088,"16.4":0.02688,"16.5":2.02752,"16.6":2.90688,"17.0":0.58368,"17.1":0.01536},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00184,"5.0-5.1":0.00184,"6.0-6.1":0.00553,"7.0-7.1":0.01289,"8.1-8.4":0.00184,"9.0-9.2":0.01289,"9.3":0.04421,"10.0-10.2":0.00184,"10.3":0.06447,"11.0-11.2":0.05895,"11.3-11.4":0.02026,"12.0-12.1":0.01658,"12.2-12.5":0.2929,"13.0-13.1":0.00921,"13.2":0.04974,"13.3":0.01842,"13.4-13.7":0.05895,"14.0-14.4":0.16211,"14.5-14.8":0.26158,"15.0-15.1":0.10316,"15.2-15.3":0.1179,"15.4":0.13079,"15.5":0.18606,"15.6-15.7":1.28766,"16.0":0.47527,"16.1":0.91002,"16.2":0.44396,"16.3":0.82344,"16.4":0.17685,"16.5":0.47159,"16.6-16.7":8.83306,"17.0":3.14637,"17.1":0.18974,"17.2":0.00553},P:{"4":0.14643,"20":0.03138,"21":0.38699,"22":3.30506,"23":0.55433,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 14.0 16.0 17.0","7.2-7.4":0.18826,"11.1-11.2":0.04184,"13.0":0.03138,"15.0":0.01046,"18.0":0.0523,"19.0":0.09413},I:{"0":0.00613,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.00002},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0.16635,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.30189},Q:{_:"13.1"},O:{"0":0.56681},H:{"0":0},L:{"0":38.74228}}; diff --git a/node_modules/caniuse-lite/data/regions/VI.js b/node_modules/caniuse-lite/data/regions/VI.js new file mode 100644 index 00000000..5416d9f1 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/VI.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.0052,"78":0.0208,"102":0.0104,"104":0.0104,"106":0.0156,"111":0.0052,"114":0.0052,"115":0.0832,"116":0.0364,"117":0.1924,"118":3.9416,"119":0.546,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 105 107 108 109 110 112 113 120 121 122 3.5 3.6"},D:{"49":0.0104,"63":0.0052,"65":0.0052,"76":0.0104,"79":0.0364,"80":0.0104,"83":0.0104,"86":0.0156,"87":0.0052,"88":0.0312,"89":0.0676,"91":0.0156,"93":0.1144,"94":0.0104,"98":0.0052,"101":0.0104,"103":0.0884,"104":0.0052,"105":0.1092,"106":0.0052,"107":0.0728,"108":0.1872,"109":0.6864,"110":0.1196,"111":0.2184,"112":0.1664,"113":0.0104,"114":0.5148,"115":0.0936,"116":1.508,"117":9.3652,"118":8.6996,"119":0.0052,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 66 67 68 69 70 71 72 73 74 75 77 78 81 84 85 90 92 95 96 97 99 100 102 120 121 122"},F:{"90":0.0104,"95":0.0052,"97":0.0624,"102":0.2548,"103":0.0624,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 91 92 93 94 96 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.0052,"90":0.0052,"92":0.0052,"97":0.0052,"100":0.0052,"104":0.0416,"106":0.0052,"109":0.1196,"110":0.0052,"111":0.078,"112":0.0728,"113":0.0052,"114":0.052,"115":0.0364,"116":0.0832,"117":5.2,"118":5.252,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 91 93 94 95 96 98 99 101 102 103 105 107 108 119"},E:{"14":0.0416,"15":0.0052,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 17.2","12.1":0.0416,"13.1":0.2912,"14.1":0.6188,"15.1":0.0104,"15.2-15.3":0.0104,"15.4":0.1092,"15.5":0.312,"15.6":1.2376,"16.0":0.1144,"16.1":0.312,"16.2":0.1196,"16.3":0.4316,"16.4":0.1872,"16.5":3.3904,"16.6":3.7232,"17.0":0.8996,"17.1":0.0364},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00247,"5.0-5.1":0.00247,"6.0-6.1":0.00741,"7.0-7.1":0.01728,"8.1-8.4":0.00247,"9.0-9.2":0.01728,"9.3":0.05926,"10.0-10.2":0.00247,"10.3":0.08642,"11.0-11.2":0.07901,"11.3-11.4":0.02716,"12.0-12.1":0.02222,"12.2-12.5":0.39259,"13.0-13.1":0.01235,"13.2":0.06667,"13.3":0.02469,"13.4-13.7":0.07901,"14.0-14.4":0.21728,"14.5-14.8":0.35062,"15.0-15.1":0.13827,"15.2-15.3":0.15802,"15.4":0.17531,"15.5":0.24938,"15.6-15.7":1.72591,"16.0":0.63703,"16.1":1.21975,"16.2":0.59506,"16.3":1.1037,"16.4":0.23704,"16.5":0.63209,"16.6-16.7":11.83943,"17.0":4.21726,"17.1":0.25432,"17.2":0.00741},P:{"4":0.02181,"20":0.02181,"21":0.04363,"22":1.97413,"23":0.70894,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 19.0","9.2":1.22156,"16.0":0.11997,"17.0":0.03272,"18.0":0.02181},I:{"0":0.00955,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00003},A:{"11":0.0364,_:"6 7 8 9 10 5.5"},K:{"0":0.072,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.3744},Q:{_:"13.1"},O:{"0":0.0048},H:{"0":0},L:{"0":19.5328}}; diff --git a/node_modules/caniuse-lite/data/regions/VN.js b/node_modules/caniuse-lite/data/regions/VN.js new file mode 100644 index 00000000..f128c0c2 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/VN.js @@ -0,0 +1 @@ +module.exports={C:{"52":0.00417,"54":0.00139,"59":0.00417,"67":0.00139,"72":0.00139,"75":0.00139,"78":0.00139,"80":0.00139,"81":0.00139,"88":0.00139,"95":0.00139,"99":0.00139,"101":0.00139,"102":0.00139,"103":0.00139,"104":0.00278,"105":0.00278,"106":0.00139,"107":0.00278,"108":0.00417,"109":0.00278,"110":0.00278,"111":0.00139,"112":0.00139,"113":0.00139,"114":0.00139,"115":0.05425,"116":0.00278,"117":0.00974,"118":0.19613,"119":0.04034,"120":0.00139,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 55 56 57 58 60 61 62 63 64 65 66 68 69 70 71 73 74 76 77 79 82 83 84 85 86 87 89 90 91 92 93 94 96 97 98 100 121 122 3.5 3.6"},D:{"33":0.00278,"34":0.00278,"38":0.01947,"41":0.00139,"47":0.00278,"48":0.00139,"49":0.00974,"50":0.00139,"52":0.00139,"53":0.00696,"54":0.00139,"56":0.00139,"57":0.00556,"65":0.00139,"66":0.01669,"68":0.00278,"69":0.00278,"70":0.00278,"71":0.00417,"72":0.00139,"73":0.00278,"74":0.00278,"75":0.00278,"76":0.00278,"77":0.00278,"78":0.00278,"79":0.0626,"80":0.00417,"81":0.00696,"83":0.00835,"84":0.00696,"85":0.01669,"86":0.00696,"87":0.01808,"88":0.00278,"89":0.00556,"90":0.00417,"91":0.00556,"92":0.00556,"93":0.00139,"94":0.00278,"95":0.00417,"96":0.00556,"97":0.00417,"98":0.00278,"99":0.00556,"100":0.01252,"101":0.00278,"102":0.00974,"103":0.01947,"104":0.00556,"105":0.01669,"106":0.02643,"107":0.03895,"108":0.04173,"109":0.84434,"110":0.02365,"111":0.03338,"112":0.03756,"113":0.0153,"114":0.05008,"115":0.03478,"116":0.1697,"117":3.16592,"118":3.42882,"119":0.00835,"120":0.00278,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 36 37 39 40 42 43 44 45 46 51 55 58 59 60 61 62 63 64 67 121 122"},F:{"28":0.00835,"29":0.00139,"36":0.00696,"40":0.00139,"46":0.0153,"85":0.00139,"91":0.00278,"92":0.00139,"93":0.00139,"94":0.00139,"95":0.00556,"97":0.00139,"101":0.00139,"102":0.12936,"103":0.0459,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 96 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00139,"14":0.00139,"16":0.00139,"17":0.00278,"18":0.00417,"84":0.00139,"85":0.00139,"89":0.00139,"92":0.00139,"99":0.00139,"100":0.00139,"103":0.00139,"104":0.00139,"105":0.00139,"106":0.00278,"107":0.00556,"108":0.00696,"109":0.00835,"110":0.00278,"111":0.00278,"112":0.00139,"113":0.00139,"114":0.00556,"115":0.00556,"116":0.00835,"117":0.37001,"118":0.37418,"119":0.00417,_:"13 15 79 80 81 83 86 87 88 90 91 93 94 95 96 97 98 101 102"},E:{"13":0.00556,"14":0.02504,"15":0.00417,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 17.2","9.1":0.00696,"11.1":0.00417,"12.1":0.00278,"13.1":0.02087,"14.1":0.06677,"15.1":0.00835,"15.2-15.3":0.00556,"15.4":0.01947,"15.5":0.02365,"15.6":0.13075,"16.0":0.00974,"16.1":0.02643,"16.2":0.02087,"16.3":0.0459,"16.4":0.01669,"16.5":0.0306,"16.6":0.2782,"17.0":0.07511,"17.1":0.00696},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00261,"5.0-5.1":0.00261,"6.0-6.1":0.00784,"7.0-7.1":0.01829,"8.1-8.4":0.00261,"9.0-9.2":0.01829,"9.3":0.06272,"10.0-10.2":0.00261,"10.3":0.09146,"11.0-11.2":0.08362,"11.3-11.4":0.02874,"12.0-12.1":0.02352,"12.2-12.5":0.41549,"13.0-13.1":0.01307,"13.2":0.07055,"13.3":0.02613,"13.4-13.7":0.08362,"14.0-14.4":0.22996,"14.5-14.8":0.37107,"15.0-15.1":0.14634,"15.2-15.3":0.16724,"15.4":0.18553,"15.5":0.26393,"15.6-15.7":1.82658,"16.0":0.67419,"16.1":1.29089,"16.2":0.62977,"16.3":1.16807,"16.4":0.25086,"16.5":0.66896,"16.6-16.7":12.52998,"17.0":4.46323,"17.1":0.26915,"17.2":0.00784},P:{"4":0.31685,"20":0.07155,"21":0.15331,"22":1.76822,"23":0.4395,"5.0-5.4":0.01022,_:"6.2-6.4 8.2 10.1","7.2-7.4":0.06133,"9.2":0.01022,"11.1-11.2":0.04088,"12.0":0.01022,"13.0":0.03066,"14.0":0.03066,"15.0":0.02044,"16.0":0.04088,"17.0":0.0511,"18.0":0.04088,"19.0":0.07155},I:{"0":0.03426,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.0001},A:{"8":0.00161,"11":0.02899,_:"6 7 9 10 5.5"},K:{"0":0.47216,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.10332},Q:{"13.1":0.00861},O:{"0":2.28165},H:{"0":0.01},L:{"0":53.00498}}; diff --git a/node_modules/caniuse-lite/data/regions/VU.js b/node_modules/caniuse-lite/data/regions/VU.js new file mode 100644 index 00000000..233d2f55 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/VU.js @@ -0,0 +1 @@ +module.exports={C:{"30":0.00238,"34":0.00953,"88":0.01192,"109":0.00715,"112":0.0143,"115":0.76018,"116":0.00238,"117":0.0143,"118":0.79354,"119":0.16443,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 110 111 113 114 120 121 122 3.5 3.6"},D:{"43":0.00953,"48":0.00238,"63":0.00715,"69":0.00238,"70":0.00238,"74":0.00238,"75":0.00477,"76":0.01668,"78":0.00477,"79":0.0143,"80":0.00477,"81":0.00238,"87":0.00953,"88":0.30026,"89":0.00238,"91":0.00238,"92":0.00715,"93":0.00238,"99":0.00238,"100":0.00477,"102":0.02383,"103":0.03336,"105":0.00477,"106":0.00238,"107":0.00953,"108":0.01906,"109":0.26928,"110":0.0143,"111":0.03813,"112":0.43847,"113":0.03098,"114":0.0286,"115":0.04766,"116":0.38843,"117":4.22744,"118":4.79698,"119":0.00715,"120":0.0143,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 49 50 51 52 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 71 72 73 77 83 84 85 86 90 94 95 96 97 98 101 104 121 122"},F:{"95":0.00238,"102":0.08817,"103":0.03098,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"15":0.00953,"17":0.0143,"18":0.0143,"89":0.00238,"92":0.00477,"101":0.00238,"104":0.00238,"105":0.0286,"107":0.00238,"108":0.00477,"109":0.02383,"110":0.01906,"111":0.00238,"112":0.0143,"113":0.05481,"114":0.01668,"115":0.02145,"116":0.06911,"117":1.11048,"118":1.1772,"119":0.08817,_:"12 13 14 16 79 80 81 83 84 85 86 87 88 90 91 93 94 95 96 97 98 99 100 102 103 106"},E:{"14":0.13583,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.2-15.3 17.2","13.1":0.05958,"14.1":0.09532,"15.1":0.00953,"15.4":0.00715,"15.5":0.00715,"15.6":0.06434,"16.0":0.00238,"16.1":0.02383,"16.2":0.00477,"16.3":0.02621,"16.4":0.02383,"16.5":0.06672,"16.6":0.25498,"17.0":0.11915,"17.1":0.00238},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00029,"5.0-5.1":0.00029,"6.0-6.1":0.00088,"7.0-7.1":0.00204,"8.1-8.4":0.00029,"9.0-9.2":0.00204,"9.3":0.007,"10.0-10.2":0.00029,"10.3":0.01021,"11.0-11.2":0.00934,"11.3-11.4":0.00321,"12.0-12.1":0.00263,"12.2-12.5":0.04639,"13.0-13.1":0.00146,"13.2":0.00788,"13.3":0.00292,"13.4-13.7":0.00934,"14.0-14.4":0.02567,"14.5-14.8":0.04143,"15.0-15.1":0.01634,"15.2-15.3":0.01867,"15.4":0.02071,"15.5":0.02946,"15.6-15.7":0.20392,"16.0":0.07527,"16.1":0.14412,"16.2":0.07031,"16.3":0.1304,"16.4":0.02801,"16.5":0.07468,"16.6-16.7":1.39885,"17.0":0.49828,"17.1":0.03005,"17.2":0.00088},P:{"4":0.02022,"20":0.09097,"21":0.12129,"22":0.94003,"23":0.04043,_:"5.0-5.4 6.2-6.4 8.2 9.2 12.0","7.2-7.4":0.11119,"10.1":0.06065,"11.1-11.2":0.06065,"13.0":0.01011,"14.0":0.09097,"15.0":0.04043,"16.0":0.10108,"17.0":0.01011,"18.0":0.11119,"19.0":0.32345},I:{"0":0.0682,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.00021},A:{"11":0.01589,_:"6 7 8 9 10 5.5"},K:{"0":0.0457,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.07617},Q:{"13.1":0.02285},O:{"0":0.52557},H:{"0":0},L:{"0":77.77366}}; diff --git a/node_modules/caniuse-lite/data/regions/WF.js b/node_modules/caniuse-lite/data/regions/WF.js new file mode 100644 index 00000000..055df25d --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/WF.js @@ -0,0 +1 @@ +module.exports={C:{"78":0.46314,"91":0.11579,"92":0.05789,"101":0.05789,"109":0.05789,"114":0.17368,"115":1.50522,"117":0.05789,"118":11.27861,"119":0.11579,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 93 94 95 96 97 98 99 100 102 103 104 105 106 107 108 110 111 112 113 116 120 121 122 3.5 3.6"},D:{"78":0.05789,"85":0.05789,"103":0.05789,"109":7.23136,"110":0.05789,"112":0.05789,"116":0.11579,"117":4.16303,"118":3.12096,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 84 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 104 105 106 107 108 111 113 114 115 119 120 121 122"},F:{"102":0.23157,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"107":0.23157,"108":0.05789,"116":4.33671,"117":1.27365,"118":1.91047,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 109 110 111 112 113 114 115 119"},E:{"14":0.05789,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 15.4 15.5 16.1 16.3 16.4 17.1 17.2","14.1":0.17368,"15.1":0.34736,"15.2-15.3":0.11579,"15.6":0.23157,"16.0":0.17368,"16.2":0.05789,"16.5":0.69472,"16.6":5.43668,"17.0":1.50522},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00136,"5.0-5.1":0.00136,"6.0-6.1":0.00409,"7.0-7.1":0.00953,"8.1-8.4":0.00136,"9.0-9.2":0.00953,"9.3":0.03269,"10.0-10.2":0.00136,"10.3":0.04767,"11.0-11.2":0.04358,"11.3-11.4":0.01498,"12.0-12.1":0.01226,"12.2-12.5":0.21654,"13.0-13.1":0.00681,"13.2":0.03677,"13.3":0.01362,"13.4-13.7":0.04358,"14.0-14.4":0.11985,"14.5-14.8":0.19339,"15.0-15.1":0.07627,"15.2-15.3":0.08716,"15.4":0.09669,"15.5":0.13755,"15.6-15.7":0.95196,"16.0":0.35137,"16.1":0.67277,"16.2":0.32821,"16.3":0.60876,"16.4":0.13074,"16.5":0.34864,"16.6-16.7":6.53025,"17.0":2.3261,"17.1":0.14027,"17.2":0.00409},P:{"21":0.88876,"22":2.12484,"23":0.06129,_:"4 20 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0 18.0","19.0":0.12259},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.41686},Q:{_:"13.1"},O:{_:"0"},H:{"0":0},L:{"0":32.55617}}; diff --git a/node_modules/caniuse-lite/data/regions/WS.js b/node_modules/caniuse-lite/data/regions/WS.js new file mode 100644 index 00000000..bf74e901 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/WS.js @@ -0,0 +1 @@ +module.exports={C:{"77":0.00989,"88":0.00989,"100":0.00659,"108":0.00659,"112":0.00659,"115":0.05933,"116":0.00989,"117":0.00989,"118":0.39222,"119":0.06592,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 95 96 97 98 99 101 102 103 104 105 106 107 109 110 111 113 114 120 121 122 3.5 3.6"},D:{"51":0.0033,"52":0.0033,"55":0.0033,"74":0.02307,"76":0.00659,"78":0.0033,"79":0.04944,"80":0.0033,"81":0.0033,"83":0.00659,"87":0.00659,"88":0.01648,"89":0.00659,"90":0.0033,"91":0.02966,"93":0.1681,"94":0.01648,"96":0.0033,"98":0.00659,"99":0.00989,"100":0.0033,"102":0.00659,"103":0.21094,"104":0.01318,"105":0.06922,"106":0.00989,"107":0.00659,"108":0.04944,"109":1.16349,"110":0.07251,"112":0.01978,"113":0.13184,"114":0.12525,"115":0.0791,"116":0.79434,"117":7.38963,"118":7.48851,"120":0.03296,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 53 54 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 75 77 84 85 86 92 95 97 101 111 119 121 122"},F:{"100":0.0033,"101":0.00989,"102":0.10218,"103":0.05933,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"13":0.00659,"18":0.0033,"92":0.03626,"94":0.01318,"102":0.0033,"106":0.00659,"107":0.01318,"109":0.27357,"110":0.02637,"111":0.0033,"112":0.00659,"113":0.04944,"114":0.07581,"115":0.08899,"116":0.44166,"117":1.81939,"118":2.45222,_:"12 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 95 96 97 98 99 100 101 103 104 105 108 119"},E:{"12":0.0033,"14":0.00659,_:"0 4 5 6 7 8 9 10 11 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 15.2-15.3 15.4 16.0 17.2","12.1":0.04944,"13.1":0.02637,"14.1":0.04614,"15.1":0.02966,"15.5":0.05603,"15.6":2.26106,"16.1":0.06262,"16.2":0.03296,"16.3":0.05933,"16.4":0.02637,"16.5":0.0791,"16.6":0.78115,"17.0":0.03626,"17.1":0.00989},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00112,"5.0-5.1":0.00112,"6.0-6.1":0.00336,"7.0-7.1":0.00784,"8.1-8.4":0.00112,"9.0-9.2":0.00784,"9.3":0.02687,"10.0-10.2":0.00112,"10.3":0.03918,"11.0-11.2":0.03583,"11.3-11.4":0.01232,"12.0-12.1":0.01008,"12.2-12.5":0.17801,"13.0-13.1":0.0056,"13.2":0.03023,"13.3":0.0112,"13.4-13.7":0.03583,"14.0-14.4":0.09852,"14.5-14.8":0.15898,"15.0-15.1":0.0627,"15.2-15.3":0.07165,"15.4":0.07949,"15.5":0.11308,"15.6-15.7":0.78258,"16.0":0.28885,"16.1":0.55307,"16.2":0.26982,"16.3":0.50045,"16.4":0.10748,"16.5":0.28661,"16.6-16.7":5.36833,"17.0":1.91222,"17.1":0.11532,"17.2":0.00336},P:{"4":0.01049,"20":0.06293,"21":0.62934,"22":6.671,"23":0.43005,_:"5.0-5.4 6.2-6.4 8.2 10.1 11.1-11.2 12.0","7.2-7.4":0.29369,"9.2":0.04196,"13.0":0.03147,"14.0":0.03147,"15.0":0.08391,"16.0":0.51396,"17.0":0.04196,"18.0":0.25174,"19.0":0.32516},I:{"0":0.07337,"3":0,"4":0.00001,"2.1":0,"2.2":0.00002,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00005,"4.4":0,"4.4.3-4.4.4":0.00022},A:{"11":0.03955,_:"6 7 8 9 10 5.5"},K:{"0":1.52181,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.07374,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.04693},Q:{_:"13.1"},O:{"0":0.08045},H:{"0":0},L:{"0":49.74381}}; diff --git a/node_modules/caniuse-lite/data/regions/YE.js b/node_modules/caniuse-lite/data/regions/YE.js new file mode 100644 index 00000000..cd04cf7b --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/YE.js @@ -0,0 +1 @@ +module.exports={C:{"43":0.00234,"50":0.00234,"51":0.00234,"52":0.00468,"53":0.28757,"61":0.00234,"72":0.00234,"81":0.00234,"82":0.00234,"89":0.00468,"91":0.00234,"93":0.01403,"101":0.00468,"102":0.00701,"103":0.01637,"106":0.00234,"111":0.00234,"112":0.00234,"113":0.00234,"114":0.01169,"115":0.20808,"116":0.03039,"117":0.02338,"118":0.40214,"119":0.26653,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 83 84 85 86 87 88 90 92 94 95 96 97 98 99 100 104 105 107 108 109 110 120 121 122 3.5 3.6"},D:{"43":0.00234,"44":0.00234,"50":0.00935,"51":0.00234,"53":0.00234,"55":0.00234,"56":0.00701,"57":0.00701,"58":0.18704,"59":0.00234,"60":0.02338,"67":0.07482,"68":0.02572,"69":0.00468,"70":0.00468,"71":0.00701,"72":0.00234,"73":0.00701,"74":0.00234,"75":0.00468,"76":0.00468,"77":0.04208,"78":0.0187,"79":0.01637,"80":0.00468,"81":0.00234,"83":0.00468,"85":0.00468,"86":0.00701,"87":0.02104,"88":0.00234,"89":0.00234,"90":0.00234,"91":0.00468,"92":0.00234,"94":0.00935,"96":0.00468,"97":0.00701,"98":0.00468,"99":0.01169,"100":0.00935,"101":0.00234,"102":0.01637,"103":0.00701,"104":0.00234,"105":0.00701,"106":0.02572,"107":0.02104,"108":0.02572,"109":1.13159,"110":0.00935,"111":0.05611,"112":0.03741,"113":0.02338,"114":0.07482,"115":0.10053,"116":0.23848,"117":2.10186,"118":4.63859,"119":0.01169,"120":0.00701,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 45 46 47 48 49 52 54 61 62 63 64 65 66 84 93 95 121 122"},F:{"34":0.00234,"36":0.00234,"40":0.00701,"74":0.00234,"79":0.01169,"94":0.00234,"95":0.0187,"102":0.0678,"103":0.04676,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 80 81 82 83 84 85 86 87 88 89 90 91 92 93 96 97 98 99 100 101 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00935,"16":0.00234,"18":0.00234,"84":0.02104,"86":0.00468,"89":0.00468,"92":0.05144,"100":0.00234,"105":0.02338,"107":0.00701,"108":0.00234,"109":0.00935,"110":0.00234,"111":0.00234,"112":0.00701,"113":0.00234,"114":0.01403,"115":0.03039,"116":0.02338,"117":0.70374,"118":1.00768,"119":0.00701,_:"13 14 15 17 79 80 81 83 85 87 88 90 91 93 94 95 96 97 98 99 101 102 103 104 106"},E:{"11":0.00234,_:"0 4 5 6 7 8 9 10 12 13 14 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 15.1 15.2-15.3 15.4 16.0 16.2 16.4 17.2","5.1":0.05144,"13.1":0.00234,"14.1":0.00234,"15.5":0.00701,"15.6":0.01403,"16.1":0.00701,"16.3":0.00234,"16.5":0.01169,"16.6":0.10989,"17.0":0.00935,"17.1":0.00234},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00026,"5.0-5.1":0.00026,"6.0-6.1":0.00078,"7.0-7.1":0.00181,"8.1-8.4":0.00026,"9.0-9.2":0.00181,"9.3":0.00622,"10.0-10.2":0.00026,"10.3":0.00906,"11.0-11.2":0.00829,"11.3-11.4":0.00285,"12.0-12.1":0.00233,"12.2-12.5":0.04118,"13.0-13.1":0.00129,"13.2":0.00699,"13.3":0.00259,"13.4-13.7":0.00829,"14.0-14.4":0.02279,"14.5-14.8":0.03677,"15.0-15.1":0.0145,"15.2-15.3":0.01657,"15.4":0.01839,"15.5":0.02616,"15.6-15.7":0.18102,"16.0":0.06682,"16.1":0.12793,"16.2":0.06241,"16.3":0.11576,"16.4":0.02486,"16.5":0.0663,"16.6-16.7":1.24179,"17.0":0.44233,"17.1":0.02667,"17.2":0.00078},P:{"4":0.10216,"20":0.13281,"21":0.1941,"22":1.63456,"23":0.4495,"5.0-5.4":0.03065,_:"6.2-6.4 8.2 12.0","7.2-7.4":0.04086,"9.2":0.07151,"10.1":0.03065,"11.1-11.2":0.23497,"13.0":0.10216,"14.0":0.17367,"15.0":0.03065,"16.0":0.20432,"17.0":0.12259,"18.0":0.04086,"19.0":0.08173},I:{"0":0.22106,"3":0,"4":0.00004,"2.1":0,"2.2":0.00007,"2.3":0,"4.1":0.00004,"4.2-4.3":0.00016,"4.4":0,"4.4.3-4.4.4":0.00067},A:{"8":0.00234,"11":0.00234,_:"6 7 9 10 5.5"},K:{"0":1.77785,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00766,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.27583},Q:{_:"13.1"},O:{"0":9.43958},H:{"0":2.85},L:{"0":65.74554}}; diff --git a/node_modules/caniuse-lite/data/regions/YT.js b/node_modules/caniuse-lite/data/regions/YT.js new file mode 100644 index 00000000..b2d36723 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/YT.js @@ -0,0 +1 @@ +module.exports={C:{"78":0.01018,"89":0.01018,"91":0.01018,"108":0.01018,"112":0.02037,"114":0.01018,"115":0.40736,"117":0.05092,"118":2.83115,"119":0.26988,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 90 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 109 110 111 113 116 120 121 122 3.5 3.6"},D:{"49":0.00509,"61":0.01528,"70":0.01018,"73":0.01528,"76":0.02037,"78":0.01018,"79":0.03564,"80":0.00509,"81":0.01528,"83":0.02546,"84":0.01018,"86":0.02037,"87":0.03564,"88":0.05092,"89":0.03564,"90":0.00509,"91":0.01018,"92":0.04074,"94":0.00509,"95":0.01528,"96":0.04074,"98":0.00509,"100":0.00509,"102":0.01018,"103":0.07638,"105":0.00509,"106":0.00509,"107":0.00509,"108":0.07638,"109":0.61613,"111":0.05601,"112":0.02037,"113":0.00509,"114":0.03564,"115":0.04074,"116":2.03171,"117":8.05045,"118":24.52307,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 71 72 74 75 77 85 93 97 99 101 104 110 119 120 121 122"},F:{"46":0.01528,"79":0.00509,"99":0.00509,"101":0.01528,"102":0.50411,"103":0.22405,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"14":0.00509,"18":0.00509,"84":0.03564,"89":0.01528,"90":0.01018,"92":0.01018,"95":0.01528,"97":0.00509,"107":0.00509,"108":0.00509,"109":0.10184,"111":0.04074,"114":0.02546,"115":0.30043,"116":0.13748,"117":2.52563,"118":1.95024,_:"12 13 15 16 17 79 80 81 83 85 86 87 88 91 93 94 96 98 99 100 101 102 103 104 105 106 110 112 113 119"},E:{"14":0.02546,"15":0.01528,_:"0 4 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 15.2-15.3 17.2","12.1":0.01528,"13.1":0.04583,"14.1":0.13748,"15.1":0.03564,"15.4":0.04074,"15.5":0.03055,"15.6":0.28006,"16.0":0.01018,"16.1":0.04074,"16.2":0.00509,"16.3":0.04074,"16.4":0.07638,"16.5":0.14767,"16.6":0.40736,"17.0":0.93184,"17.1":0.01528},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00073,"5.0-5.1":0.00073,"6.0-6.1":0.00219,"7.0-7.1":0.00511,"8.1-8.4":0.00073,"9.0-9.2":0.00511,"9.3":0.0175,"10.0-10.2":0.00073,"10.3":0.02553,"11.0-11.2":0.02334,"11.3-11.4":0.00802,"12.0-12.1":0.00656,"12.2-12.5":0.11596,"13.0-13.1":0.00365,"13.2":0.01969,"13.3":0.00729,"13.4-13.7":0.02334,"14.0-14.4":0.06418,"14.5-14.8":0.10356,"15.0-15.1":0.04084,"15.2-15.3":0.04668,"15.4":0.05178,"15.5":0.07366,"15.6-15.7":0.5098,"16.0":0.18817,"16.1":0.36029,"16.2":0.17577,"16.3":0.32601,"16.4":0.07002,"16.5":0.18671,"16.6-16.7":3.49713,"17.0":1.24569,"17.1":0.07512,"17.2":0.00219},P:{"4":0.05217,"20":0.0939,"21":0.17736,"22":1.9823,"23":0.27126,_:"5.0-5.4 6.2-6.4 8.2 10.1 15.0 17.0","7.2-7.4":0.22953,"9.2":0.01043,"11.1-11.2":0.0313,"12.0":0.01043,"13.0":0.16693,"14.0":0.04173,"16.0":0.08347,"18.0":0.04173,"19.0":0.29213},I:{"0":0.00488,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.00001},A:{"11":0.00509,_:"6 7 8 9 10 5.5"},K:{"0":0.22393,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":1.35952},Q:{_:"13.1"},O:{"0":0.11288},H:{"0":0.1},L:{"0":38.98919}}; diff --git a/node_modules/caniuse-lite/data/regions/ZA.js b/node_modules/caniuse-lite/data/regions/ZA.js new file mode 100644 index 00000000..ab5bcac4 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/ZA.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.01012,"52":0.0081,"59":0.00405,"60":0.00405,"64":0.00202,"78":0.01012,"87":0.00202,"91":0.00202,"94":0.00202,"99":0.00202,"100":0.00202,"102":0.00202,"104":0.00405,"105":0.00202,"107":0.00202,"108":0.00202,"109":0.00405,"110":0.00405,"111":0.00405,"112":0.00607,"113":0.00607,"114":0.00202,"115":0.08703,"116":0.0081,"117":0.02226,"118":0.42504,"119":0.07894,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 61 62 63 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 89 90 92 93 95 96 97 98 101 103 106 120 121 122 3.5 3.6"},D:{"11":0.00202,"33":0.00202,"38":0.00202,"43":0.00202,"49":0.0081,"50":0.00405,"52":0.00607,"55":0.00202,"56":0.00405,"62":0.00202,"65":0.00202,"66":0.01619,"67":0.00405,"69":0.00405,"70":0.0081,"72":0.00202,"73":0.00202,"74":0.00405,"75":0.00202,"77":0.00202,"78":0.0081,"79":0.01822,"80":0.00202,"81":0.00607,"83":0.00607,"84":0.00202,"85":0.00405,"86":0.01012,"87":0.0081,"88":0.02024,"89":0.00202,"90":0.00405,"91":0.00607,"92":0.00405,"93":0.4129,"94":0.0081,"95":0.00607,"96":0.00202,"97":0.00202,"98":0.00405,"99":0.03643,"100":0.00607,"101":0.0081,"102":0.01012,"103":0.02834,"104":0.01012,"105":0.01214,"106":0.01012,"107":0.01822,"108":0.01012,"109":0.67602,"110":0.0081,"111":0.01619,"112":0.01822,"113":0.03441,"114":0.08298,"115":0.05667,"116":0.37444,"117":4.52162,"118":4.54186,"119":0.00607,"120":0.00202,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 39 40 41 42 44 45 46 47 48 51 53 54 57 58 59 60 61 63 64 68 71 76 121 122"},F:{"28":0.0081,"77":0.00202,"79":0.00202,"85":0.00202,"95":0.01822,"101":0.00202,"102":0.24288,"103":0.08906,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 80 81 82 83 84 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00405,"13":0.00202,"14":0.00607,"15":0.00202,"16":0.00405,"17":0.0081,"18":0.01012,"84":0.00202,"85":0.00202,"89":0.00202,"90":0.00202,"91":0.00202,"92":0.0081,"100":0.00202,"103":0.00202,"106":0.00202,"107":0.00202,"108":0.00202,"109":0.03441,"110":0.00202,"111":0.00607,"112":0.01822,"113":0.0081,"114":0.01619,"115":0.02631,"116":0.0506,"117":1.07474,"118":1.06867,"119":0.00202,_:"79 80 81 83 86 87 88 93 94 95 96 97 98 99 101 102 104 105"},E:{"10":0.00202,"13":0.00202,"14":0.02024,"15":0.00202,_:"0 4 5 6 7 8 9 11 12 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.00202,"11.1":0.01214,"12.1":0.00607,"13.1":0.03238,"14.1":0.03643,"15.1":0.00607,"15.2-15.3":0.01214,"15.4":0.01417,"15.5":0.01619,"15.6":0.12751,"16.0":0.01417,"16.1":0.03036,"16.2":0.03036,"16.3":0.06477,"16.4":0.02429,"16.5":0.0587,"16.6":0.3967,"17.0":0.16597,"17.1":0.01012},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00108,"5.0-5.1":0.00108,"6.0-6.1":0.00324,"7.0-7.1":0.00755,"8.1-8.4":0.00108,"9.0-9.2":0.00755,"9.3":0.02588,"10.0-10.2":0.00108,"10.3":0.03774,"11.0-11.2":0.03451,"11.3-11.4":0.01186,"12.0-12.1":0.00971,"12.2-12.5":0.17146,"13.0-13.1":0.00539,"13.2":0.02912,"13.3":0.01078,"13.4-13.7":0.03451,"14.0-14.4":0.0949,"14.5-14.8":0.15313,"15.0-15.1":0.06039,"15.2-15.3":0.06901,"15.4":0.07656,"15.5":0.10891,"15.6-15.7":0.75377,"16.0":0.27822,"16.1":0.53271,"16.2":0.25988,"16.3":0.48202,"16.4":0.10352,"16.5":0.27606,"16.6-16.7":5.17071,"17.0":1.84183,"17.1":0.11107,"17.2":0.00324},P:{"4":0.18254,"20":0.15212,"21":0.28396,"22":5.42562,"23":1.18654,_:"5.0-5.4 8.2 10.1","6.2-6.4":0.01014,"7.2-7.4":0.36509,"9.2":0.01014,"11.1-11.2":0.04057,"12.0":0.02028,"13.0":0.04057,"14.0":0.04057,"15.0":0.02028,"16.0":0.06085,"17.0":0.08113,"18.0":0.06085,"19.0":0.16226},I:{"0":0.03174,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.0001},A:{"7":0.00202,"9":0.00202,"11":0.04453,_:"6 8 10 5.5"},K:{"0":3.1004,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00798,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.47856},Q:{"13.1":0.00798},O:{"0":0.50249},H:{"0":0.09},L:{"0":60.78942}}; diff --git a/node_modules/caniuse-lite/data/regions/ZM.js b/node_modules/caniuse-lite/data/regions/ZM.js new file mode 100644 index 00000000..ec9eee94 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/ZM.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00434,"52":0.00217,"65":0.00217,"78":0.00869,"88":0.00434,"99":0.00217,"102":0.00217,"103":0.00434,"106":0.00217,"108":0.00217,"111":0.00434,"113":0.00434,"114":0.00217,"115":0.10426,"116":0.00434,"117":0.04344,"118":0.5278,"119":0.11294,"120":0.00434,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 95 96 97 98 100 101 104 105 107 109 110 112 121 122 3.5 3.6"},D:{"11":0.00217,"33":0.00217,"43":0.00217,"46":0.00217,"49":0.00217,"50":0.00217,"51":0.00217,"53":0.00217,"55":0.00217,"58":0.00217,"60":0.0152,"64":0.00217,"68":0.00869,"69":0.0152,"70":0.00217,"71":0.00217,"72":0.00217,"73":0.00217,"74":0.00652,"75":0.00434,"76":0.00217,"77":0.00869,"78":0.00869,"79":0.00652,"80":0.00652,"81":0.00652,"83":0.01086,"85":0.00434,"86":0.00434,"87":0.00869,"88":0.01303,"89":0.00652,"90":0.01086,"91":0.00217,"92":0.00869,"93":0.00652,"94":0.01303,"95":0.01086,"96":0.00869,"97":0.00869,"98":0.00217,"99":0.00217,"100":0.00652,"101":0.00217,"102":0.01738,"103":0.03475,"104":0.01086,"105":0.00869,"106":0.01303,"107":0.01086,"108":0.01955,"109":0.87532,"110":0.00434,"111":0.01303,"112":0.02824,"113":0.03258,"114":0.07819,"115":0.04778,"116":0.39096,"117":4.27015,"118":3.97476,"119":0.00869,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 44 45 47 48 52 54 56 57 59 61 62 63 65 66 67 84 120 121 122"},F:{"34":0.00217,"42":0.00217,"46":0.00217,"64":0.00217,"68":0.00217,"72":0.00217,"77":0.00434,"78":0.00434,"79":0.01086,"81":0.00217,"90":0.00652,"95":0.05647,"98":0.00217,"99":0.00217,"100":0.00217,"101":0.01303,"102":0.36272,"103":0.2563,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 66 67 69 70 71 73 74 75 76 80 82 83 84 85 86 87 88 89 91 92 93 94 96 97 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.0152,"13":0.00869,"14":0.00217,"15":0.00434,"16":0.00869,"17":0.00652,"18":0.04344,"83":0.00652,"84":0.00652,"85":0.00217,"86":0.00434,"89":0.00434,"90":0.00869,"92":0.04344,"99":0.00217,"100":0.00434,"103":0.00217,"105":0.00434,"106":0.00217,"107":0.00869,"108":0.00217,"109":0.0391,"110":0.01955,"111":0.00434,"112":0.00652,"113":0.01303,"114":0.02389,"115":0.02824,"116":0.06733,"117":1.11206,"118":0.9079,_:"79 80 81 87 88 91 93 94 95 96 97 98 101 102 104 119"},E:{"13":0.00217,"14":0.00652,_:"0 4 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 15.1 15.2-15.3 17.2","5.1":0.01086,"13.1":0.01955,"14.1":0.02172,"15.4":0.00652,"15.5":0.01303,"15.6":0.02606,"16.0":0.00434,"16.1":0.00217,"16.2":0.00217,"16.3":0.00869,"16.4":0.00217,"16.5":0.03475,"16.6":0.05647,"17.0":0.03692,"17.1":0.00217},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00054,"5.0-5.1":0.00054,"6.0-6.1":0.00163,"7.0-7.1":0.0038,"8.1-8.4":0.00054,"9.0-9.2":0.0038,"9.3":0.01302,"10.0-10.2":0.00054,"10.3":0.01899,"11.0-11.2":0.01736,"11.3-11.4":0.00597,"12.0-12.1":0.00488,"12.2-12.5":0.08625,"13.0-13.1":0.00271,"13.2":0.01465,"13.3":0.00542,"13.4-13.7":0.01736,"14.0-14.4":0.04774,"14.5-14.8":0.07703,"15.0-15.1":0.03038,"15.2-15.3":0.03472,"15.4":0.03852,"15.5":0.05479,"15.6-15.7":0.37919,"16.0":0.13996,"16.1":0.26799,"16.2":0.13074,"16.3":0.24249,"16.4":0.05208,"16.5":0.13887,"16.6-16.7":2.60119,"17.0":0.92656,"17.1":0.05588,"17.2":0.00163},P:{"4":0.09244,"20":0.0719,"21":0.1438,"22":0.83196,"23":0.08217,"5.0-5.4":0.01027,_:"6.2-6.4 8.2 10.1 12.0","7.2-7.4":0.09244,"9.2":0.05136,"11.1-11.2":0.01027,"13.0":0.01027,"14.0":0.02054,"15.0":0.02054,"16.0":0.05136,"17.0":0.03081,"18.0":0.03081,"19.0":0.06163},I:{"0":0.08567,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00026},A:{"10":0.00434,"11":0.04778,_:"6 7 8 9 5.5"},K:{"0":11.17104,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.01566,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.08611},Q:{"13.1":0.00783},O:{"0":0.9785},H:{"0":1.98},L:{"0":63.64241}}; diff --git a/node_modules/caniuse-lite/data/regions/ZW.js b/node_modules/caniuse-lite/data/regions/ZW.js new file mode 100644 index 00000000..18c54c14 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/ZW.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00303,"43":0.00303,"44":0.00303,"45":0.00303,"52":0.00908,"57":0.0121,"59":0.00303,"60":0.00605,"64":0.00303,"66":0.00605,"72":0.00605,"78":0.00605,"87":0.00908,"88":0.00303,"94":0.00605,"96":0.00303,"97":0.00303,"99":0.00605,"100":0.00303,"101":0.00303,"102":0.00908,"103":0.00303,"104":0.00605,"106":0.10285,"108":0.00908,"109":0.00303,"110":0.00303,"112":0.00908,"113":0.00908,"114":0.00605,"115":0.27225,"116":0.0121,"117":0.0605,"118":1.04665,"119":0.19965,"120":0.00303,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 46 47 48 49 50 51 53 54 55 56 58 61 62 63 65 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 89 90 91 92 93 95 98 105 107 111 121 122 3.5 3.6"},D:{"11":0.00303,"36":0.00303,"37":0.00303,"41":0.00303,"49":0.0121,"55":0.00303,"56":0.00303,"57":0.00605,"58":0.00303,"59":0.01513,"60":0.00303,"61":0.00303,"62":0.00303,"63":0.01513,"64":0.00605,"65":0.00303,"66":0.00303,"67":0.00303,"68":0.00303,"69":0.00605,"70":0.0121,"71":0.00303,"72":0.01513,"74":0.00605,"75":0.00605,"76":0.01513,"77":0.00303,"78":0.00303,"79":0.02723,"80":0.00908,"81":0.01513,"83":0.00908,"84":0.00303,"85":0.0121,"86":0.00908,"87":0.0121,"88":0.0121,"89":0.00605,"90":0.00303,"91":0.00908,"92":0.00908,"93":0.0121,"94":0.0242,"95":0.0121,"96":0.00908,"97":0.01513,"98":0.01513,"99":0.01513,"100":0.00605,"101":0.0121,"102":0.03933,"103":0.0726,"104":0.01815,"105":0.01513,"106":0.02723,"107":0.01815,"108":0.0484,"109":1.63048,"110":0.03328,"111":0.03933,"112":0.04538,"113":0.05445,"114":0.14218,"115":0.1089,"116":0.59593,"117":6.34948,"118":6.30713,"119":0.0242,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 38 39 40 42 43 44 45 46 47 48 50 51 52 53 54 73 120 121 122"},F:{"36":0.00605,"40":0.00303,"42":0.00605,"48":0.00303,"55":0.0121,"57":0.00303,"67":0.0121,"74":0.00908,"75":0.00303,"77":0.00605,"79":0.01513,"85":0.01513,"87":0.00908,"94":0.00303,"95":0.05143,"98":0.00303,"99":0.00303,"101":0.01513,"102":0.71088,"103":0.45073,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 41 43 44 45 46 47 49 50 51 52 53 54 56 58 60 62 63 64 65 66 68 69 70 71 72 73 76 78 80 81 82 83 84 86 88 89 90 91 92 93 96 97 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.02723,"13":0.00908,"14":0.00908,"15":0.0121,"16":0.01815,"17":0.01815,"18":0.1089,"84":0.01815,"85":0.00605,"86":0.00303,"89":0.0121,"90":0.02723,"91":0.00303,"92":0.0605,"94":0.00908,"95":0.00303,"99":0.00303,"100":0.01815,"103":0.00303,"104":0.00303,"105":0.00303,"106":0.03328,"107":0.00908,"108":0.00908,"109":0.03025,"110":0.01513,"111":0.01513,"112":0.01815,"113":0.02723,"114":0.05748,"115":0.05748,"116":0.121,"117":1.6819,"118":1.3431,"119":0.03025,_:"79 80 81 83 87 88 93 96 97 98 101 102"},E:{"13":0.00605,"14":0.00908,"15":0.03025,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 11.1 17.2","5.1":0.01513,"10.1":0.00303,"12.1":0.00303,"13.1":0.0242,"14.1":0.14823,"15.1":0.00605,"15.2-15.3":0.00303,"15.4":0.00605,"15.5":0.00605,"15.6":0.18755,"16.0":0.00908,"16.1":0.0242,"16.2":0.01815,"16.3":0.03328,"16.4":0.05445,"16.5":0.03933,"16.6":0.44468,"17.0":0.11193,"17.1":0.0121},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00052,"5.0-5.1":0.00052,"6.0-6.1":0.00157,"7.0-7.1":0.00367,"8.1-8.4":0.00052,"9.0-9.2":0.00367,"9.3":0.01259,"10.0-10.2":0.00052,"10.3":0.01836,"11.0-11.2":0.01678,"11.3-11.4":0.00577,"12.0-12.1":0.00472,"12.2-12.5":0.08339,"13.0-13.1":0.00262,"13.2":0.01416,"13.3":0.00524,"13.4-13.7":0.01678,"14.0-14.4":0.04615,"14.5-14.8":0.07447,"15.0-15.1":0.02937,"15.2-15.3":0.03356,"15.4":0.03724,"15.5":0.05297,"15.6-15.7":0.36659,"16.0":0.13531,"16.1":0.25908,"16.2":0.12639,"16.3":0.23443,"16.4":0.05035,"16.5":0.13426,"16.6-16.7":2.51471,"17.0":0.89575,"17.1":0.05402,"17.2":0.00157},P:{"4":0.22725,"20":0.06198,"21":0.15494,"22":1.03294,"23":0.16527,_:"5.0-5.4 6.2-6.4 8.2 10.1","7.2-7.4":0.14461,"9.2":0.01033,"11.1-11.2":0.01033,"12.0":0.01033,"13.0":0.02066,"14.0":0.03099,"15.0":0.01033,"16.0":0.06198,"17.0":0.02066,"18.0":0.04132,"19.0":0.18593},I:{"0":0.08326,"3":0,"4":0.00002,"2.1":0,"2.2":0.00003,"2.3":0,"4.1":0.00002,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00025},A:{"10":0.01412,"11":0.07058,_:"6 7 8 9 5.5"},K:{"0":7.7958,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.02092,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.12553},Q:{"13.1":0.03487},O:{"0":1.35993},H:{"0":1.11},L:{"0":57.03093}}; diff --git a/node_modules/caniuse-lite/data/regions/alt-af.js b/node_modules/caniuse-lite/data/regions/alt-af.js new file mode 100644 index 00000000..76a4a105 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/alt-af.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00487,"43":0.00244,"47":0.00244,"52":0.03412,"56":0.00244,"65":0.00244,"72":0.00244,"77":0.00731,"78":0.00731,"95":0.00244,"99":0.00487,"102":0.00731,"104":0.00244,"105":0.00244,"106":0.00244,"107":0.00244,"108":0.00487,"109":0.00487,"110":0.00487,"111":0.00487,"112":0.00487,"113":0.00731,"114":0.00731,"115":0.36311,"116":0.00975,"117":0.04143,"118":0.67992,"119":0.14622,"120":0.00244,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 44 45 46 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 66 67 68 69 70 71 73 74 75 76 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 100 101 103 121 122 3.5 3.6"},D:{"11":0.00244,"33":0.00244,"38":0.00244,"43":0.01462,"47":0.00487,"49":0.01462,"50":0.00244,"56":0.00487,"58":0.01706,"60":0.00487,"62":0.00244,"63":0.00487,"64":0.00975,"65":0.00244,"66":0.00487,"67":0.01706,"68":0.00487,"69":0.00731,"70":0.00975,"71":0.00244,"72":0.00487,"73":0.00731,"74":0.00975,"75":0.00487,"76":0.00731,"77":0.00487,"78":0.00487,"79":0.06336,"80":0.00975,"81":0.01706,"83":0.01219,"84":0.00487,"85":0.00975,"86":0.0195,"87":0.02924,"88":0.01706,"89":0.00731,"90":0.00975,"91":0.01462,"92":0.00975,"93":0.15597,"94":0.01462,"95":0.01462,"96":0.00731,"97":0.00731,"98":0.0195,"99":0.02437,"100":0.00975,"101":0.00731,"102":0.02681,"103":0.05118,"104":0.01219,"105":0.02681,"106":0.02437,"107":0.02924,"108":0.07555,"109":1.94229,"110":0.02193,"111":0.03168,"112":0.03412,"113":0.02924,"114":0.08773,"115":0.06824,"116":0.4216,"117":4.85938,"118":5.24199,"119":0.01462,"120":0.00487,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 39 40 41 42 44 45 46 48 51 52 53 54 55 57 59 61 121 122"},F:{"28":0.00487,"73":0.00244,"77":0.00487,"79":0.01462,"82":0.00244,"85":0.00487,"94":0.00244,"95":0.06336,"99":0.00487,"100":0.00731,"101":0.00975,"102":0.35337,"103":0.17303,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 78 80 81 83 84 86 87 88 89 90 91 92 93 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00731,"13":0.00244,"14":0.00487,"15":0.00244,"16":0.00244,"17":0.00487,"18":0.02437,"84":0.00487,"89":0.00487,"90":0.00487,"92":0.02193,"100":0.00487,"107":0.00487,"108":0.00487,"109":0.05118,"110":0.00487,"111":0.00731,"112":0.00975,"113":0.01219,"114":0.0195,"115":0.03412,"116":0.05118,"117":1.08934,"118":1.09421,"119":0.00244,_:"79 80 81 83 85 86 87 88 91 93 94 95 96 97 98 99 101 102 103 104 105 106"},E:{"14":0.01219,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 9.1 10.1 17.2","5.1":0.02437,"11.1":0.00487,"12.1":0.00487,"13.1":0.02437,"14.1":0.02437,"15.1":0.02681,"15.2-15.3":0.00487,"15.4":0.00731,"15.5":0.00975,"15.6":0.07555,"16.0":0.00731,"16.1":0.01706,"16.2":0.01706,"16.3":0.03412,"16.4":0.01462,"16.5":0.03656,"16.6":0.17303,"17.0":0.10723,"17.1":0.00731},G:{"8":0.00261,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00087,"6.0-6.1":0,"7.0-7.1":0.01738,"8.1-8.4":0.00174,"9.0-9.2":0.00348,"9.3":0.03563,"10.0-10.2":0.00087,"10.3":0.04084,"11.0-11.2":0.03476,"11.3-11.4":0.00782,"12.0-12.1":0.02433,"12.2-12.5":0.5127,"13.0-13.1":0.00956,"13.2":0.11297,"13.3":0.01825,"13.4-13.7":0.05562,"14.0-14.4":0.20074,"14.5-14.8":0.23289,"15.0-15.1":0.15642,"15.2-15.3":0.10689,"15.4":0.08951,"15.5":0.15816,"15.6-15.7":1.18443,"16.0":0.2381,"16.1":0.33369,"16.2":0.19118,"16.3":0.37975,"16.4":0.14338,"16.5":0.33195,"16.6-16.7":2.62174,"17.0":1.35388,"17.1":0.07039,"17.2":0.00174},P:{"4":0.1668,"20":0.0834,"21":0.15638,"22":2.03293,"23":0.39616,_:"5.0-5.4 6.2-6.4 8.2 10.1 12.0","7.2-7.4":0.19808,"9.2":0.01043,"11.1-11.2":0.03128,"13.0":0.02085,"14.0":0.02085,"15.0":0.02085,"16.0":0.05213,"17.0":0.05213,"18.0":0.0417,"19.0":0.10425},I:{"0":0.07425,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00004,"4.2-4.3":0.00016,"4.4":0,"4.4.3-4.4.4":0.00116},A:{"8":0.00525,"11":0.06299,_:"6 7 9 10 5.5"},K:{"0":6.62073,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.08319,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.24202},Q:{_:"13.1"},O:{"0":0.46891},H:{"0":1.57},L:{"0":59.43685}}; diff --git a/node_modules/caniuse-lite/data/regions/alt-an.js b/node_modules/caniuse-lite/data/regions/alt-an.js new file mode 100644 index 00000000..9d6ae348 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/alt-an.js @@ -0,0 +1 @@ +module.exports={C:{_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 3.5 3.6"},D:{"117":0.01832,"118":0.0989,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 119 120 121 122"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"117":0.01099,"118":0.13919,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 119"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1 17.2","15.1":0.58608,"15.2-15.3":1.25275,"15.4":0.0293,"15.5":0.36996,"15.6":2.09157,"16.0":0.17949,"16.1":1.57143,"16.2":0.63736,"16.3":2.53846,"16.4":1.19414,"16.5":3.24542,"16.6":11.05127,"17.0":10.08424,"17.1":0.95604},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0,"15.0-15.1":0.17713,"15.2-15.3":0.80972,"15.4":0.15182,"15.5":0.13917,"15.6-15.7":1.20193,"16.0":2.27102,"16.1":4.02331,"16.2":1.3158,"16.3":3.06809,"16.4":0.24671,"16.5":1.83453,"16.6-16.7":34.52708,"17.0":11.07043,"17.1":2.41652,"17.2":0.01265},P:{_:"4 20 21 22 23 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0"},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{"0":0,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.03169,_:"3.0-3.1"},R:{_:"0"},M:{_:"0"},Q:{_:"13.1"},O:{"0":0.01268},H:{"0":0},L:{"0":0.13368}}; diff --git a/node_modules/caniuse-lite/data/regions/alt-as.js b/node_modules/caniuse-lite/data/regions/alt-as.js new file mode 100644 index 00000000..75cc49f7 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/alt-as.js @@ -0,0 +1 @@ +module.exports={C:{"34":0.00604,"36":0.00604,"43":0.00604,"48":0.00604,"52":0.06042,"54":0.00906,"56":0.02719,"72":0.00604,"78":0.00302,"88":0.00302,"102":0.00604,"106":0.00302,"107":0.00302,"108":0.00604,"109":0.00302,"110":0.00604,"111":0.00604,"112":0.00302,"113":0.00906,"114":0.00604,"115":0.23262,"116":0.02115,"117":0.03323,"118":0.6616,"119":0.13292,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 37 38 39 40 41 42 44 45 46 47 49 50 51 53 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 105 120 121 122 3.5 3.6"},D:{"34":0.01208,"35":0.00302,"38":0.02417,"47":0.00604,"48":0.00906,"49":0.02417,"50":0.01511,"53":0.01511,"55":0.00604,"56":0.00604,"57":0.00604,"58":0.00302,"61":0.00604,"63":0.00604,"65":0.00302,"66":0.00906,"67":0.00604,"68":0.00906,"69":0.08157,"70":0.10876,"71":0.00604,"72":0.00604,"73":0.07855,"74":0.01208,"75":0.01208,"76":0.00906,"77":0.02115,"78":0.01813,"79":0.14803,"80":0.02417,"81":0.01813,"83":0.03625,"84":0.00906,"85":0.02417,"86":0.04834,"87":0.06948,"88":0.00906,"89":0.02417,"90":0.02115,"91":0.02115,"92":0.06344,"93":0.00906,"94":0.03625,"95":0.01511,"96":0.01511,"97":0.02719,"98":0.12386,"99":0.05136,"100":0.02719,"101":0.02417,"102":0.02417,"103":0.06344,"104":0.01813,"105":0.03021,"106":0.03927,"107":0.04532,"108":0.06948,"109":2.24762,"110":0.03323,"111":0.0725,"112":0.06646,"113":0.06042,"114":0.19637,"115":0.13595,"116":0.5891,"117":7.5525,"118":7.51625,"119":0.01813,"120":0.00906,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 36 37 39 40 41 42 43 44 45 46 51 52 54 59 60 62 64 121 122"},F:{"28":0.00906,"36":0.00604,"46":0.02719,"95":0.02719,"101":0.00302,"102":0.287,"103":0.09365,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 100 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00604,"17":0.00302,"18":0.01208,"92":0.01511,"100":0.00302,"106":0.00302,"107":0.00906,"108":0.01208,"109":0.06344,"110":0.01208,"111":0.01208,"112":0.00906,"113":0.03021,"114":0.03021,"115":0.02719,"116":0.0725,"117":1.38966,"118":1.35643,"119":0.00604,_:"13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103 104 105"},E:{"13":0.00906,"14":0.03323,"15":0.00604,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 10.1 11.1 17.2","5.1":0.00604,"9.1":0.00302,"12.1":0.00604,"13.1":0.03323,"14.1":0.08459,"15.1":0.01511,"15.2-15.3":0.01208,"15.4":0.03021,"15.5":0.04532,"15.6":0.17824,"16.0":0.01511,"16.1":0.05136,"16.2":0.04229,"16.3":0.11178,"16.4":0.03625,"16.5":0.09365,"16.6":0.74317,"17.0":0.21449,"17.1":0.01511},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00354,"5.0-5.1":0.00472,"6.0-6.1":0.00236,"7.0-7.1":0.01416,"8.1-8.4":0.00354,"9.0-9.2":0.0118,"9.3":0.03186,"10.0-10.2":0.00472,"10.3":0.05901,"11.0-11.2":0.03186,"11.3-11.4":0.0118,"12.0-12.1":0.01534,"12.2-12.5":0.25963,"13.0-13.1":0.00826,"13.2":0.06019,"13.3":0.01888,"13.4-13.7":0.06255,"14.0-14.4":0.17702,"14.5-14.8":0.26435,"15.0-15.1":0.10739,"15.2-15.3":0.11683,"15.4":0.14162,"15.5":0.17466,"15.6-15.7":1.10108,"16.0":0.35995,"16.1":0.58653,"16.2":0.32454,"16.3":0.59007,"16.4":0.17348,"16.5":0.42249,"16.6-16.7":4.65097,"17.0":1.88352,"17.1":0.11093,"17.2":0.00236},P:{"4":0.20226,"20":0.06387,"21":0.12774,"22":1.71385,"23":0.33,"5.0-5.4":0.02129,_:"6.2-6.4 8.2 9.2 10.1 12.0","7.2-7.4":0.05323,"11.1-11.2":0.01065,"13.0":0.02129,"14.0":0.01065,"15.0":0.01065,"16.0":0.03194,"17.0":0.04258,"18.0":0.03194,"19.0":0.06387},I:{"0":0.59863,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00012,"4.4":0,"4.4.3-4.4.4":0.00108},A:{"8":0.01279,"9":0.08951,"11":0.83119,_:"6 7 10 5.5"},K:{"0":1.29205,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.13958,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.15354},Q:{"13.1":0.38385},O:{"0":1.85641},H:{"0":0.02},L:{"0":51.77681}}; diff --git a/node_modules/caniuse-lite/data/regions/alt-eu.js b/node_modules/caniuse-lite/data/regions/alt-eu.js new file mode 100644 index 00000000..84587c00 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/alt-eu.js @@ -0,0 +1 @@ +module.exports={C:{"12":0.00468,"48":0.04212,"50":0.00936,"52":0.05616,"53":0.01404,"56":0.01404,"59":0.00936,"68":0.00468,"78":0.02808,"83":0.00468,"87":0.00468,"88":0.00468,"91":0.00936,"102":0.117,"103":0.1638,"104":0.00936,"105":0.00936,"106":0.00468,"107":0.00936,"108":0.01404,"109":0.01404,"110":0.00936,"111":0.00936,"112":0.00936,"113":0.0234,"114":0.01404,"115":0.57564,"116":0.03276,"117":0.12168,"118":3.00924,"119":0.57096,_:"2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 51 54 55 57 58 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 89 90 92 93 94 95 96 97 98 99 100 101 120 121 122 3.5 3.6"},D:{"38":0.00936,"43":0.00468,"49":0.03276,"52":0.00936,"56":0.00468,"60":0.03744,"63":0.00936,"66":0.05148,"68":0.00468,"70":0.00468,"71":0.00468,"72":0.00936,"73":0.00936,"74":0.00936,"75":0.00936,"76":0.00936,"77":0.00936,"78":0.02808,"79":0.09828,"80":0.01872,"81":0.0234,"83":0.0234,"84":0.01404,"85":0.10764,"86":0.03276,"87":0.06084,"88":0.0234,"89":0.0234,"90":0.01872,"91":0.03276,"92":0.01872,"93":0.06084,"94":0.03744,"95":0.01404,"96":0.02808,"97":0.00936,"98":0.01404,"99":0.02808,"100":0.0234,"101":0.03276,"102":0.03744,"103":0.1404,"104":0.10764,"105":0.04212,"106":0.0936,"107":0.0702,"108":0.08424,"109":1.41804,"110":0.0468,"111":0.07956,"112":0.0936,"113":0.08424,"114":0.26676,"115":0.2106,"116":1.38996,"117":11.19456,"118":10.59084,"119":0.01872,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 47 48 50 51 53 54 55 57 58 59 61 62 64 65 67 69 120 121 122"},F:{"31":0.00936,"40":0.00936,"46":0.01404,"85":0.00936,"95":0.09828,"99":0.00468,"100":0.00936,"101":0.01404,"102":2.1996,"103":0.38376,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 96 97 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"15":0.00468,"17":0.00468,"90":0.00936,"92":0.00936,"106":0.00468,"107":0.01404,"108":0.01404,"109":0.08424,"110":0.01404,"111":0.01404,"112":0.0234,"113":0.01872,"114":0.04212,"115":0.04212,"116":0.12636,"117":2.80332,"118":2.6676,"119":0.00936,_:"12 13 14 16 18 79 80 81 83 84 85 86 87 88 89 91 93 94 95 96 97 98 99 100 101 102 103 104 105"},E:{"13":0.00936,"14":0.05616,"15":0.01404,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 17.2","9.1":0.0234,"11.1":0.01404,"12.1":0.0234,"13.1":0.08892,"14.1":0.16848,"15.1":0.02808,"15.2-15.3":0.0234,"15.4":0.04212,"15.5":0.06084,"15.6":0.3744,"16.0":0.05148,"16.1":0.10296,"16.2":0.09828,"16.3":0.22932,"16.4":0.10296,"16.5":0.26676,"16.6":1.47888,"17.0":0.6552,"17.1":0.04212},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00168,"6.0-6.1":0.00168,"7.0-7.1":0.00842,"8.1-8.4":0,"9.0-9.2":0.00842,"9.3":0.04549,"10.0-10.2":0,"10.3":0.0556,"11.0-11.2":0.04886,"11.3-11.4":0.02527,"12.0-12.1":0.00842,"12.2-12.5":0.21734,"13.0-13.1":0.00674,"13.2":0.00505,"13.3":0.01011,"13.4-13.7":0.02696,"14.0-14.4":0.07582,"14.5-14.8":0.16343,"15.0-15.1":0.05392,"15.2-15.3":0.06908,"15.4":0.07076,"15.5":0.11794,"15.6-15.7":1.0008,"16.0":0.48355,"16.1":0.86769,"16.2":0.39257,"16.3":0.75313,"16.4":0.12468,"16.5":0.34708,"16.6-16.7":8.34335,"17.0":3.29555,"17.1":0.19039,"17.2":0.00505},P:{"4":0.0218,"20":0.06539,"21":0.11988,"22":2.4957,"23":0.54491,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 12.0 14.0 15.0","11.1-11.2":0.0109,"13.0":0.0109,"16.0":0.0109,"17.0":0.0218,"18.0":0.0218,"19.0":0.04359},I:{"0":0.0742,"3":0,"4":0.00001,"2.1":0,"2.2":0.00001,"2.3":0,"4.1":0.00001,"4.2-4.3":0.00002,"4.4":0,"4.4.3-4.4.4":0.00016},A:{"8":0.00975,"9":0.00975,"11":0.0975,_:"6 7 10 5.5"},K:{"0":0.53732,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.44688},Q:{_:"13.1"},O:{"0":0.13832},H:{"0":0},L:{"0":32.28952}}; diff --git a/node_modules/caniuse-lite/data/regions/alt-na.js b/node_modules/caniuse-lite/data/regions/alt-na.js new file mode 100644 index 00000000..13135c39 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/alt-na.js @@ -0,0 +1 @@ +module.exports={C:{"4":0.00675,"11":0.03373,"38":0.00675,"44":0.01349,"48":0.03373,"50":0.01349,"52":0.03373,"53":0.00675,"54":0.01349,"55":0.00675,"56":0.00675,"57":0.01349,"58":0.00675,"59":0.01349,"60":0.01349,"61":0.01349,"62":0.00675,"63":0.01349,"65":0.00675,"68":0.00675,"78":0.09444,"83":0.01349,"91":0.00675,"94":0.01349,"102":0.04722,"108":0.00675,"109":0.01349,"110":0.01349,"111":0.02024,"112":0.01349,"113":0.01349,"114":0.02024,"115":0.27659,"116":0.02698,"117":0.1754,"118":1.67975,"119":0.27659,_:"2 3 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 45 46 47 49 51 64 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 87 88 89 90 92 93 95 96 97 98 99 100 101 103 104 105 106 107 120 121 122 3.5 3.6"},D:{"41":0.00675,"46":0.00675,"47":0.01349,"48":0.04048,"49":0.07421,"51":0.00675,"55":0.00675,"56":0.05397,"57":0.00675,"58":0.00675,"60":0.01349,"61":0.00675,"62":0.00675,"63":0.01349,"64":0.00675,"65":0.03373,"66":0.02698,"67":0.01349,"68":0.0877,"69":0.09444,"70":0.06746,"71":0.06071,"72":0.0877,"73":0.03373,"74":0.09444,"75":0.10119,"76":0.34405,"77":0.07421,"78":0.09444,"79":0.26984,"80":0.24286,"81":0.15516,"83":0.18214,"84":0.10119,"85":0.15516,"86":0.18889,"87":0.18214,"88":0.14167,"89":0.10119,"90":0.14167,"91":0.12143,"92":0.04048,"93":0.39801,"94":0.02698,"95":0.01349,"96":0.02024,"97":0.02698,"98":0.04722,"99":0.03373,"100":0.06071,"101":0.0877,"102":0.06071,"103":0.56666,"104":0.06071,"105":0.04722,"106":0.04722,"107":0.32381,"108":0.41151,"109":1.0996,"110":0.41825,"111":0.70158,"112":0.44524,"113":0.1754,"114":1.22777,"115":0.81627,"116":2.82657,"117":12.58129,"118":11.6301,"119":0.04048,"120":0.03373,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 43 44 45 50 52 53 54 59 121 122"},F:{"53":0.01349,"54":0.02024,"55":0.02024,"95":0.03373,"97":0.29682,"98":0.00675,"99":0.02024,"100":0.02024,"101":0.02698,"102":2.90078,"103":0.35754,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6","12.1":0.00675},B:{"12":0.01349,"15":0.01349,"16":0.00675,"17":0.00675,"18":0.01349,"79":0.00675,"80":0.02024,"81":0.02024,"83":0.02698,"84":0.02698,"85":0.01349,"86":0.02024,"87":0.12817,"88":0.01349,"89":0.02024,"90":0.01349,"92":0.02024,"95":0.01349,"99":0.05397,"107":0.00675,"108":0.00675,"109":0.0877,"110":0.01349,"111":0.30357,"112":0.30357,"113":0.01349,"114":0.04048,"115":0.06071,"116":0.15516,"117":4.10157,"118":2.7861,"119":0.00675,_:"13 14 91 93 94 96 97 98 100 101 102 103 104 105 106"},E:{"9":0.00675,"11":0.00675,"12":0.01349,"13":0.04722,"14":0.22936,"15":0.04048,_:"0 4 5 6 7 8 10 3.1 3.2 5.1 6.1 7.1 10.1 17.2","9.1":0.5127,"11.1":0.01349,"12.1":0.06071,"13.1":0.31032,"14.1":0.52619,"15.1":0.09444,"15.2-15.3":0.07421,"15.4":0.15516,"15.5":0.2496,"15.6":1.22103,"16.0":0.14841,"16.1":0.37778,"16.2":0.35079,"16.3":0.80277,"16.4":0.35079,"16.5":0.97817,"16.6":5.01902,"17.0":1.21428,"17.1":0.08095},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0016,"5.0-5.1":0,"6.0-6.1":0.01122,"7.0-7.1":0.00321,"8.1-8.4":0.0016,"9.0-9.2":0.00802,"9.3":0.02565,"10.0-10.2":0,"10.3":0.03206,"11.0-11.2":0.05291,"11.3-11.4":0.01283,"12.0-12.1":0.00962,"12.2-12.5":0.13467,"13.0-13.1":0.00321,"13.2":0.02084,"13.3":0.00962,"13.4-13.7":0.02886,"14.0-14.4":0.07696,"14.5-14.8":0.13467,"15.0-15.1":0.0513,"15.2-15.3":0.06734,"15.4":0.06734,"15.5":0.11383,"15.6-15.7":0.76154,"16.0":0.2966,"16.1":0.77757,"16.2":0.3447,"16.3":0.62847,"16.4":0.09139,"16.5":0.29019,"16.6-16.7":9.13048,"17.0":2.64055,"17.1":0.17475,"17.2":0.00641},P:{"4":0.02297,"20":0.02297,"21":0.05742,"22":0.8269,"23":0.20672,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 18.0","17.0":0.01148,"19.0":0.02297},I:{"0":0.11258,"3":0.00006,"4":0.00009,"2.1":0.00003,"2.2":0.00028,"2.3":0.00002,"4.1":0.00003,"4.2-4.3":0.00031,"4.4":0,"4.4.3-4.4.4":0.00032},A:{"9":0.01661,"11":0.09133,_:"6 7 8 10 5.5"},K:{"0":0.20826,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.00325,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.30262},Q:{"13.1":0.00651},O:{"0":0.05532},H:{"0":0},L:{"0":14.99395}}; diff --git a/node_modules/caniuse-lite/data/regions/alt-oc.js b/node_modules/caniuse-lite/data/regions/alt-oc.js new file mode 100644 index 00000000..b0e0ac1f --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/alt-oc.js @@ -0,0 +1 @@ +module.exports={C:{"11":0.03137,"34":0.00523,"48":0.00523,"52":0.02092,"54":0.01046,"59":0.00523,"78":0.02615,"83":0.00523,"87":0.01046,"102":0.02092,"103":0.00523,"109":0.00523,"110":0.00523,"113":0.01046,"114":0.02092,"115":0.25099,"116":0.02092,"117":0.13073,"118":1.60007,"119":0.29282,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 55 56 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 88 89 90 91 92 93 94 95 96 97 98 99 100 101 104 105 106 107 108 111 112 120 121 122 3.5 3.6"},D:{"25":0.02092,"26":0.00523,"34":0.02092,"38":0.07321,"39":0.00523,"40":0.00523,"41":0.01046,"42":0.00523,"43":0.01046,"44":0.01046,"45":0.01046,"46":0.01046,"47":0.01046,"48":0.00523,"49":0.03137,"50":0.00523,"51":0.01046,"52":0.01569,"53":0.01046,"54":0.00523,"55":0.01046,"56":0.01046,"57":0.00523,"58":0.00523,"59":0.02615,"60":0.01046,"65":0.01046,"66":0.04706,"67":0.03137,"68":0.00523,"69":0.22485,"74":0.00523,"75":0.00523,"76":0.00523,"78":0.00523,"79":0.09412,"80":0.01046,"81":0.03137,"83":0.01569,"85":0.02615,"86":0.0366,"87":0.08366,"88":0.03137,"89":0.01046,"90":0.02092,"91":0.02092,"92":0.01046,"93":0.02615,"94":0.01569,"95":0.01046,"96":0.02615,"97":0.02092,"98":0.02092,"99":0.0366,"100":0.0366,"101":0.05752,"102":0.0366,"103":0.24576,"104":0.05229,"105":0.02615,"106":0.02615,"107":0.05752,"108":0.09935,"109":0.80527,"110":0.05752,"111":0.07321,"112":0.09412,"113":0.13073,"114":0.40263,"115":0.42878,"116":2.53607,"117":13.74704,"118":12.0267,"119":0.02615,"120":0.01569,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 27 28 29 30 31 32 33 35 36 37 61 62 63 64 70 71 72 73 77 84 121 122"},F:{"28":0.00523,"46":0.03137,"95":0.01569,"100":0.01046,"101":0.01569,"102":0.89416,"103":0.11504,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00523,"85":0.00523,"92":0.00523,"106":0.01046,"107":0.00523,"108":0.01046,"109":0.06798,"110":0.01046,"111":0.01046,"112":0.01569,"113":0.02615,"114":0.05229,"115":0.0366,"116":0.14641,"117":3.13217,"118":2.9387,"119":0.01046,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105"},E:{"13":0.03137,"14":0.13595,"15":0.03137,_:"0 4 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 17.2","11.1":0.01046,"12.1":0.04183,"13.1":0.18824,"14.1":0.36603,"15.1":0.06275,"15.2-15.3":0.06798,"15.4":0.09412,"15.5":0.17256,"15.6":0.87847,"16.0":0.08366,"16.1":0.24053,"16.2":0.18302,"16.3":0.50721,"16.4":0.17779,"16.5":0.46015,"16.6":3.76488,"17.0":0.94122,"17.1":0.06798},G:{"8":0.0024,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00719,"6.0-6.1":0.01438,"7.0-7.1":0.00719,"8.1-8.4":0.00479,"9.0-9.2":0.00958,"9.3":0.08626,"10.0-10.2":0.0024,"10.3":0.11501,"11.0-11.2":0.1198,"11.3-11.4":0.05271,"12.0-12.1":0.02396,"12.2-12.5":0.4816,"13.0-13.1":0.00479,"13.2":0.00479,"13.3":0.02156,"13.4-13.7":0.04792,"14.0-14.4":0.12938,"14.5-14.8":0.242,"15.0-15.1":0.09105,"15.2-15.3":0.09824,"15.4":0.12699,"15.5":0.18928,"15.6-15.7":1.44718,"16.0":0.62536,"16.1":1.28665,"16.2":0.57744,"16.3":1.09976,"16.4":0.16293,"16.5":0.48878,"16.6-16.7":12.99828,"17.0":3.17469,"17.1":0.19168,"17.2":0.00719},P:{"4":0.20048,"20":0.06683,"21":0.13365,"22":2.16075,"23":0.47893,"5.0-5.4":0.02228,_:"6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 15.0","13.0":0.01114,"14.0":0.01114,"16.0":0.02228,"17.0":0.02228,"18.0":0.02228,"19.0":0.04455},I:{"0":0.04751,"3":0,"4":0.00002,"2.1":0,"2.2":0.00001,"2.3":0.00001,"4.1":0.00001,"4.2-4.3":0.00003,"4.4":0,"4.4.3-4.4.4":0.0001},A:{"8":0.03137,"9":0.04706,"11":0.10981,_:"6 7 10 5.5"},K:{"0":0.17653,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.37691},Q:{"13.1":0.00477},O:{"0":0.05725},H:{"0":0},L:{"0":20.32629}}; diff --git a/node_modules/caniuse-lite/data/regions/alt-sa.js b/node_modules/caniuse-lite/data/regions/alt-sa.js new file mode 100644 index 00000000..8180a57e --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/alt-sa.js @@ -0,0 +1 @@ +module.exports={C:{"7":0.0737,"42":0.05067,"45":0.01382,"50":0.14739,"52":0.17503,"54":0.16582,"78":0.00921,"88":0.00921,"90":0.00461,"91":0.02764,"102":0.00921,"103":0.00461,"105":0.00461,"108":0.00461,"109":0.00461,"110":0.00461,"111":0.00921,"112":0.00461,"113":0.01382,"114":0.01382,"115":0.29018,"116":0.01382,"117":0.05527,"118":1.00411,"119":0.19806,_:"2 3 4 5 6 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 46 47 48 49 51 53 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 92 93 94 95 96 97 98 99 100 101 104 106 107 120 121 122 3.5 3.6"},D:{"38":0.01382,"47":0.0737,"49":0.02764,"51":0.00461,"55":0.0783,"57":0.16582,"60":0.47442,"62":0.00921,"66":0.00921,"68":0.00461,"74":0.00461,"75":0.00921,"76":0.00461,"77":0.00921,"78":0.00461,"79":0.09212,"80":0.00921,"81":0.02303,"83":0.00921,"84":0.00461,"85":0.01842,"86":0.01382,"87":0.04145,"88":0.01842,"89":0.00921,"90":0.00921,"91":0.48824,"92":0.02303,"93":0.01382,"94":0.00921,"95":0.00921,"96":0.01382,"97":0.01382,"98":0.01382,"99":0.01382,"100":0.01382,"101":0.01382,"102":0.01842,"103":0.0737,"104":0.01842,"105":0.03224,"106":0.04606,"107":0.05527,"108":0.0737,"109":2.84651,"110":0.03685,"111":0.05527,"112":0.06448,"113":0.04145,"114":0.14279,"115":0.12436,"116":0.8475,"117":12.64347,"118":13.5094,"119":0.02764,"120":0.00461,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 52 53 54 56 58 59 61 63 64 65 67 69 70 71 72 73 121 122"},F:{"28":0.00461,"85":0.00461,"95":0.0737,"100":0.00461,"101":0.00921,"102":3.28408,"103":0.29478,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 96 97 98 99 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.0737,"13":0.1566,"14":0.1566,"15":0.09212,"18":0.00461,"92":0.01842,"107":0.00921,"108":0.00921,"109":0.05988,"110":0.00461,"111":0.00921,"112":0.00921,"113":0.00921,"114":0.01842,"115":0.01842,"116":0.04606,"117":1.7687,"118":1.81016,"119":0.00921,_:"16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106"},E:{"14":0.01382,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 6.1 7.1 10.1 11.1 12.1 17.2","5.1":0.01382,"9.1":0.00461,"13.1":0.02303,"14.1":0.03685,"15.1":0.00461,"15.2-15.3":0.00461,"15.4":0.00921,"15.5":0.01382,"15.6":0.0737,"16.0":0.00921,"16.1":0.02303,"16.2":0.01382,"16.3":0.05067,"16.4":0.01842,"16.5":0.05067,"16.6":0.22109,"17.0":0.17042,"17.1":0.01382},G:{"8":0,"3.2":0.00072,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00288,"6.0-6.1":0,"7.0-7.1":0.00144,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01298,"10.0-10.2":0,"10.3":0.01154,"11.0-11.2":0.08654,"11.3-11.4":0.01731,"12.0-12.1":0.00865,"12.2-12.5":0.06707,"13.0-13.1":0.00144,"13.2":0.00144,"13.3":0.00361,"13.4-13.7":0.00793,"14.0-14.4":0.02452,"14.5-14.8":0.05914,"15.0-15.1":0.01587,"15.2-15.3":0.02091,"15.4":0.02524,"15.5":0.04399,"15.6-15.7":0.54882,"16.0":0.17092,"16.1":0.3065,"16.2":0.14135,"16.3":0.28487,"16.4":0.04616,"16.5":0.13414,"16.6-16.7":3.4905,"17.0":1.58443,"17.1":0.08221,"17.2":0.00288},P:{"4":0.07423,"20":0.04242,"21":0.07423,"22":1.41043,"23":0.29693,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 14.0 15.0","7.2-7.4":0.13786,"11.1-11.2":0.0106,"13.0":0.02121,"16.0":0.02121,"17.0":0.05302,"18.0":0.0106,"19.0":0.03181},I:{"0":0.04301,"3":0,"4":0.00001,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00011},A:{"8":0.00469,"9":0.15938,"11":0.36563,_:"6 7 10 5.5"},K:{"0":0.23734,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{_:"2.5 3.0-3.1"},R:{_:"0"},M:{"0":0.12406},Q:{_:"13.1"},O:{"0":0.04855},H:{"0":0},L:{"0":45.37835}}; diff --git a/node_modules/caniuse-lite/data/regions/alt-ww.js b/node_modules/caniuse-lite/data/regions/alt-ww.js new file mode 100644 index 00000000..481274d2 --- /dev/null +++ b/node_modules/caniuse-lite/data/regions/alt-ww.js @@ -0,0 +1 @@ +module.exports={C:{"11":0.00916,"44":0.00458,"48":0.02291,"50":0.01374,"52":0.05497,"53":0.00458,"54":0.01374,"56":0.01832,"59":0.00916,"78":0.03665,"83":0.00458,"88":0.00458,"91":0.00458,"94":0.00458,"102":0.05497,"103":0.03665,"105":0.00458,"107":0.00458,"108":0.00916,"109":0.00916,"110":0.00916,"111":0.00916,"112":0.00916,"113":0.01374,"114":0.00916,"115":0.34816,"116":0.02291,"117":0.0962,"118":1.50715,"119":0.27944,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 49 51 55 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 87 89 90 92 93 95 96 97 98 99 100 101 104 106 120 121 122 3.5 3.6"},D:{"34":0.00458,"38":0.01374,"47":0.00916,"48":0.01832,"49":0.04123,"50":0.00916,"53":0.00916,"55":0.00916,"56":0.01832,"57":0.00916,"58":0.00458,"60":0.03207,"61":0.00458,"63":0.00916,"65":0.01374,"66":0.02291,"67":0.00916,"68":0.03207,"69":0.06413,"70":0.06413,"71":0.02291,"72":0.03207,"73":0.04123,"74":0.03665,"75":0.03665,"76":0.10994,"77":0.03207,"78":0.04123,"79":0.1695,"80":0.08704,"81":0.05955,"83":0.0733,"84":0.03665,"85":0.08246,"86":0.08704,"87":0.10078,"88":0.05497,"89":0.04581,"90":0.05497,"91":0.06872,"92":0.04123,"93":0.14659,"94":0.03207,"95":0.01374,"96":0.01832,"97":0.02291,"98":0.06413,"99":0.03665,"100":0.03665,"101":0.04581,"102":0.03665,"103":0.23363,"104":0.05039,"105":0.03665,"106":0.05497,"107":0.13743,"108":0.17866,"109":1.70413,"110":0.15575,"111":0.26112,"112":0.18782,"113":0.10078,"114":0.52223,"115":0.3619,"116":1.4705,"117":10.01407,"118":9.5972,"119":0.02749,"120":0.01374,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 51 52 54 59 62 64 121 122"},F:{"28":0.00458,"46":0.01374,"54":0.00458,"55":0.00458,"95":0.05039,"97":0.09162,"99":0.00916,"100":0.00916,"101":0.01374,"102":1.63542,"103":0.26112,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 96 98 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00916,"13":0.00916,"14":0.00916,"15":0.00916,"17":0.00458,"18":0.01374,"80":0.00916,"81":0.00916,"83":0.00916,"84":0.00916,"85":0.00458,"86":0.00916,"87":0.04123,"88":0.00458,"89":0.00458,"90":0.00916,"92":0.01374,"99":0.01832,"107":0.00916,"108":0.00916,"109":0.0733,"110":0.01374,"111":0.10078,"112":0.10078,"113":0.02291,"114":0.03665,"115":0.04123,"116":0.10994,"117":2.54246,"118":2.0981,"119":0.00916,_:"16 79 91 93 94 95 96 97 98 100 101 102 103 104 105 106"},E:{"12":0.00458,"13":0.02291,"14":0.0962,"15":0.01832,_:"0 4 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 10.1 17.2","5.1":0.00458,"9.1":0.16492,"11.1":0.00916,"12.1":0.02749,"13.1":0.13285,"14.1":0.23821,"15.1":0.04123,"15.2-15.3":0.03207,"15.4":0.06872,"15.5":0.10994,"15.6":0.54056,"16.0":0.06413,"16.1":0.16034,"16.2":0.14659,"16.3":0.34816,"16.4":0.14659,"16.5":0.40313,"16.6":2.20346,"17.0":0.61844,"17.1":0.04123},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0014,"5.0-5.1":0.0014,"6.0-6.1":0.00419,"7.0-7.1":0.00977,"8.1-8.4":0.0014,"9.0-9.2":0.00977,"9.3":0.03349,"10.0-10.2":0.0014,"10.3":0.04884,"11.0-11.2":0.04465,"11.3-11.4":0.01535,"12.0-12.1":0.01256,"12.2-12.5":0.22187,"13.0-13.1":0.00698,"13.2":0.03768,"13.3":0.01395,"13.4-13.7":0.04465,"14.0-14.4":0.12279,"14.5-14.8":0.19815,"15.0-15.1":0.07814,"15.2-15.3":0.08931,"15.4":0.09907,"15.5":0.14093,"15.6-15.7":0.97538,"16.0":0.36001,"16.1":0.68932,"16.2":0.33629,"16.3":0.62374,"16.4":0.13396,"16.5":0.35722,"16.6-16.7":6.69091,"17.0":2.38333,"17.1":0.14373,"17.2":0.00419},P:{"4":0.09798,"20":0.05444,"21":0.10887,"22":1.62217,"23":0.34839,_:"5.0-5.4 6.2-6.4 8.2 9.2 10.1 12.0 14.0 15.0","7.2-7.4":0.03266,"11.1-11.2":0.01089,"13.0":0.01089,"16.0":0.02177,"17.0":0.03266,"18.0":0.02177,"19.0":0.04355},I:{"0":0.28574,"3":0,"4":0.00006,"2.1":0,"2.2":0.00009,"2.3":0,"4.1":0.00006,"4.2-4.3":0.0002,"4.4":0,"4.4.3-4.4.4":0.00086},A:{"8":0.01247,"9":0.06235,"11":0.37412,_:"6 7 10 5.5"},K:{"0":1.0238,_:"10 11 12 11.1 11.5 12.1"},J:{_:"7 10"},N:{_:"10 11"},S:{"2.5":0.05961,_:"3.0-3.1"},R:{_:"0"},M:{"0":0.27095},Q:{"13.1":0.15173},O:{"0":0.79117},H:{"0":0.06},L:{"0":36.03221}}; diff --git a/node_modules/caniuse-lite/package.json b/node_modules/caniuse-lite/package.json new file mode 100644 index 00000000..1e61dfba --- /dev/null +++ b/node_modules/caniuse-lite/package.json @@ -0,0 +1,34 @@ +{ + "name": "caniuse-lite", + "version": "1.0.30001561", + "description": "A smaller version of caniuse-db, with only the essentials!", + "main": "dist/unpacker/index.js", + "files": [ + "data", + "dist" + ], + "keywords": [ + "support" + ], + "author": { + "name": "Ben Briggs", + "email": "beneb.info@gmail.com", + "url": "http://beneb.info" + }, + "repository": "browserslist/caniuse-lite", + "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" +} diff --git a/node_modules/ccount/index.d.ts b/node_modules/ccount/index.d.ts new file mode 100644 index 00000000..4688e5ca --- /dev/null +++ b/node_modules/ccount/index.d.ts @@ -0,0 +1,11 @@ +/** + * Count how often a character (or substring) is used in a string. + * + * @param {string} value + * Value to search in. + * @param {string} character + * Character (or substring) to look for. + * @return {number} + * Number of times `character` occurred in `value`. + */ +export function ccount(value: string, character: string): number diff --git a/node_modules/ccount/index.js b/node_modules/ccount/index.js new file mode 100644 index 00000000..6d9a4841 --- /dev/null +++ b/node_modules/ccount/index.js @@ -0,0 +1,27 @@ +/** + * Count how often a character (or substring) is used in a string. + * + * @param {string} value + * Value to search in. + * @param {string} character + * Character (or substring) to look for. + * @return {number} + * Number of times `character` occurred in `value`. + */ +export function ccount(value, character) { + const source = String(value) + + if (typeof character !== 'string') { + throw new TypeError('Expected character') + } + + let count = 0 + let index = source.indexOf(character) + + while (index !== -1) { + count++ + index = source.indexOf(character, index + character.length) + } + + return count +} diff --git a/node_modules/ccount/license b/node_modules/ccount/license new file mode 100644 index 00000000..32e7a3d9 --- /dev/null +++ b/node_modules/ccount/license @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2015 Titus Wormer + +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. diff --git a/node_modules/ccount/package.json b/node_modules/ccount/package.json new file mode 100644 index 00000000..88fd8dff --- /dev/null +++ b/node_modules/ccount/package.json @@ -0,0 +1,71 @@ +{ + "name": "ccount", + "version": "2.0.1", + "description": "Count how often a character (or substring) is used in a string", + "license": "MIT", + "keywords": [ + "character", + "count", + "char" + ], + "repository": "wooorm/ccount", + "bugs": "https://github.com/wooorm/ccount/issues", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + }, + "author": "Titus Wormer (https://wooorm.com)", + "contributors": [ + "Titus Wormer (https://wooorm.com)" + ], + "sideEffects": false, + "type": "module", + "main": "index.js", + "types": "index.d.ts", + "files": [ + "index.d.ts", + "index.js" + ], + "devDependencies": { + "@types/tape": "^4.0.0", + "c8": "^7.0.0", + "prettier": "^2.0.0", + "remark-cli": "^10.0.0", + "remark-preset-wooorm": "^9.0.0", + "rimraf": "^3.0.0", + "tape": "^5.0.0", + "type-coverage": "^2.0.0", + "typescript": "^4.0.0", + "xo": "^0.46.0" + }, + "scripts": { + "prepublishOnly": "npm run build && npm run format", + "build": "rimraf \"*.d.ts\" && tsc && type-coverage", + "format": "remark . -qfo && prettier . -w --loglevel warn && xo --fix", + "test-api": "node --conditions development test.js", + "test-coverage": "c8 --check-coverage --branches 100 --functions 100 --lines 100 --statements 100 --reporter lcov npm run test-api", + "test": "npm run build && npm run format && npm run test-coverage" + }, + "prettier": { + "tabWidth": 2, + "useTabs": false, + "singleQuote": true, + "bracketSpacing": false, + "semi": false, + "trailingComma": "none" + }, + "xo": { + "prettier": true + }, + "remarkConfig": { + "plugins": [ + "preset-wooorm" + ] + }, + "typeCoverage": { + "atLeast": 100, + "detail": true, + "strict": true, + "ignoreCatch": true + } +} diff --git a/node_modules/ccount/readme.md b/node_modules/ccount/readme.md new file mode 100644 index 00000000..54bf79ec --- /dev/null +++ b/node_modules/ccount/readme.md @@ -0,0 +1,149 @@ +# ccount + +[![Build][build-badge]][build] +[![Coverage][coverage-badge]][coverage] +[![Downloads][downloads-badge]][downloads] +[![Size][size-badge]][size] + +Count how often a character (or substring) is used in a string. + +## Contents + +* [What is this?](#what-is-this) +* [When should I use this?](#when-should-i-use-this) +* [Install](#install) +* [Use](#use) +* [API](#api) + * [`ccount(value, character)`](#ccountvalue-character) +* [Types](#types) +* [Compatibility](#compatibility) +* [Security](#security) +* [Related](#related) +* [Contribute](#contribute) +* [License](#license) + +## What is this? + +This package is a small utility that helps you find how frequently a substring +occurs in another string. + +## When should I use this? + +I find this particularly useful when generating code, for example, when building +a string that can either be double or single quoted. +I use this utility to choose single quotes when double quotes are used more +frequently, and double quotes otherwise. + +## Install + +This package is [ESM only][esm]. +In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]: + +```sh +npm install ccount +``` + +In Deno with [Skypack][]: + +```js +import {ccount} from 'https://cdn.skypack.dev/ccount@2?dts' +``` + +In browsers with [Skypack][]: + +```html + +``` + +## Use + +```js +import {ccount} from 'ccount' + +ccount('foo(bar(baz)', '(') // => 2 +ccount('foo(bar(baz)', ')') // => 1 +``` + +## API + +This package exports the following identifier: `ccount`. +There is no default export. + +### `ccount(value, character)` + +Count how often a character (or substring) is used in a string. + +###### Parameters + +* `value` (`string`) + — value to search in +* `character` (`string`) + — character (or substring) to look for + +###### Returns + +`number` — number of times `character` occurred in `value`. + +## Types + +This package is fully typed with [TypeScript][]. + +## Compatibility + +This package is at least compatible with all maintained versions of Node.js. +As of now, that is Node.js 12.20+, 14.14+, and 16.0+. +It also works in Deno and modern browsers. + +## Security + +This package is safe. + +## Related + +* [`wooorm/longest-streak`](https://github.com/wooorm/longest-streak) + — count of longest repeating streak of `character` in `value` +* [`wooorm/direction`](https://github.com/wooorm/direction) + — detect directionality: left-to-right, right-to-left, or neutral + +## Contribute + +Yes please! +See [How to Contribute to Open Source][contribute]. + +## License + +[MIT][license] © [Titus Wormer][author] + + + +[build-badge]: https://github.com/wooorm/ccount/workflows/main/badge.svg + +[build]: https://github.com/wooorm/ccount/actions + +[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/ccount.svg + +[coverage]: https://codecov.io/github/wooorm/ccount + +[downloads-badge]: https://img.shields.io/npm/dm/ccount.svg + +[downloads]: https://www.npmjs.com/package/ccount + +[size-badge]: https://img.shields.io/bundlephobia/minzip/ccount.svg + +[size]: https://bundlephobia.com/result?p=ccount + +[npm]: https://docs.npmjs.com/cli/install + +[skypack]: https://www.skypack.dev + +[license]: license + +[author]: https://wooorm.com + +[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c + +[typescript]: https://www.typescriptlang.org + +[contribute]: https://opensource.guide/how-to-contribute/ diff --git a/node_modules/chalk/index.d.ts b/node_modules/chalk/index.d.ts new file mode 100644 index 00000000..9cd88f38 --- /dev/null +++ b/node_modules/chalk/index.d.ts @@ -0,0 +1,415 @@ +/** +Basic foreground colors. + +[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support) +*/ +declare type ForegroundColor = + | 'black' + | 'red' + | 'green' + | 'yellow' + | 'blue' + | 'magenta' + | 'cyan' + | 'white' + | 'gray' + | 'grey' + | 'blackBright' + | 'redBright' + | 'greenBright' + | 'yellowBright' + | 'blueBright' + | 'magentaBright' + | 'cyanBright' + | 'whiteBright'; + +/** +Basic background colors. + +[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support) +*/ +declare type BackgroundColor = + | 'bgBlack' + | 'bgRed' + | 'bgGreen' + | 'bgYellow' + | 'bgBlue' + | 'bgMagenta' + | 'bgCyan' + | 'bgWhite' + | 'bgGray' + | 'bgGrey' + | 'bgBlackBright' + | 'bgRedBright' + | 'bgGreenBright' + | 'bgYellowBright' + | 'bgBlueBright' + | 'bgMagentaBright' + | 'bgCyanBright' + | 'bgWhiteBright'; + +/** +Basic colors. + +[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support) +*/ +declare type Color = ForegroundColor | BackgroundColor; + +declare type Modifiers = + | 'reset' + | 'bold' + | 'dim' + | 'italic' + | 'underline' + | 'inverse' + | 'hidden' + | 'strikethrough' + | 'visible'; + +declare namespace chalk { + /** + Levels: + - `0` - All colors disabled. + - `1` - Basic 16 colors support. + - `2` - ANSI 256 colors support. + - `3` - Truecolor 16 million colors support. + */ + type Level = 0 | 1 | 2 | 3; + + interface Options { + /** + Specify the color support for Chalk. + + By default, color support is automatically detected based on the environment. + + Levels: + - `0` - All colors disabled. + - `1` - Basic 16 colors support. + - `2` - ANSI 256 colors support. + - `3` - Truecolor 16 million colors support. + */ + level?: Level; + } + + /** + Return a new Chalk instance. + */ + type Instance = new (options?: Options) => Chalk; + + /** + Detect whether the terminal supports color. + */ + interface ColorSupport { + /** + The color level used by Chalk. + */ + level: Level; + + /** + Return whether Chalk supports basic 16 colors. + */ + hasBasic: boolean; + + /** + Return whether Chalk supports ANSI 256 colors. + */ + has256: boolean; + + /** + Return whether Chalk supports Truecolor 16 million colors. + */ + has16m: boolean; + } + + interface ChalkFunction { + /** + Use a template string. + + @remarks Template literals are unsupported for nested calls (see [issue #341](https://github.com/chalk/chalk/issues/341)) + + @example + ``` + import chalk = require('chalk'); + + log(chalk` + CPU: {red ${cpu.totalPercent}%} + RAM: {green ${ram.used / ram.total * 100}%} + DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%} + `); + ``` + + @example + ``` + import chalk = require('chalk'); + + log(chalk.red.bgBlack`2 + 3 = {bold ${2 + 3}}`) + ``` + */ + (text: TemplateStringsArray, ...placeholders: unknown[]): string; + + (...text: unknown[]): string; + } + + interface Chalk extends ChalkFunction { + /** + Return a new Chalk instance. + */ + Instance: Instance; + + /** + The color support for Chalk. + + By default, color support is automatically detected based on the environment. + + Levels: + - `0` - All colors disabled. + - `1` - Basic 16 colors support. + - `2` - ANSI 256 colors support. + - `3` - Truecolor 16 million colors support. + */ + level: Level; + + /** + Use HEX value to set text color. + + @param color - Hexadecimal value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.hex('#DEADED'); + ``` + */ + hex(color: string): Chalk; + + /** + Use keyword color value to set text color. + + @param color - Keyword value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.keyword('orange'); + ``` + */ + keyword(color: string): Chalk; + + /** + Use RGB values to set text color. + */ + rgb(red: number, green: number, blue: number): Chalk; + + /** + Use HSL values to set text color. + */ + hsl(hue: number, saturation: number, lightness: number): Chalk; + + /** + Use HSV values to set text color. + */ + hsv(hue: number, saturation: number, value: number): Chalk; + + /** + Use HWB values to set text color. + */ + hwb(hue: number, whiteness: number, blackness: number): Chalk; + + /** + Use a [Select/Set Graphic Rendition](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters) (SGR) [color code number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) to set text color. + + 30 <= code && code < 38 || 90 <= code && code < 98 + For example, 31 for red, 91 for redBright. + */ + ansi(code: number): Chalk; + + /** + Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set text color. + */ + ansi256(index: number): Chalk; + + /** + Use HEX value to set background color. + + @param color - Hexadecimal value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.bgHex('#DEADED'); + ``` + */ + bgHex(color: string): Chalk; + + /** + Use keyword color value to set background color. + + @param color - Keyword value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.bgKeyword('orange'); + ``` + */ + bgKeyword(color: string): Chalk; + + /** + Use RGB values to set background color. + */ + bgRgb(red: number, green: number, blue: number): Chalk; + + /** + Use HSL values to set background color. + */ + bgHsl(hue: number, saturation: number, lightness: number): Chalk; + + /** + Use HSV values to set background color. + */ + bgHsv(hue: number, saturation: number, value: number): Chalk; + + /** + Use HWB values to set background color. + */ + bgHwb(hue: number, whiteness: number, blackness: number): Chalk; + + /** + Use a [Select/Set Graphic Rendition](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters) (SGR) [color code number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) to set background color. + + 30 <= code && code < 38 || 90 <= code && code < 98 + For example, 31 for red, 91 for redBright. + Use the foreground code, not the background code (for example, not 41, nor 101). + */ + bgAnsi(code: number): Chalk; + + /** + Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set background color. + */ + bgAnsi256(index: number): Chalk; + + /** + Modifier: Resets the current color chain. + */ + readonly reset: Chalk; + + /** + Modifier: Make text bold. + */ + readonly bold: Chalk; + + /** + Modifier: Emitting only a small amount of light. + */ + readonly dim: Chalk; + + /** + Modifier: Make text italic. (Not widely supported) + */ + readonly italic: Chalk; + + /** + Modifier: Make text underline. (Not widely supported) + */ + readonly underline: Chalk; + + /** + Modifier: Inverse background and foreground colors. + */ + readonly inverse: Chalk; + + /** + Modifier: Prints the text, but makes it invisible. + */ + readonly hidden: Chalk; + + /** + Modifier: Puts a horizontal line through the center of the text. (Not widely supported) + */ + readonly strikethrough: Chalk; + + /** + Modifier: Prints the text only when Chalk has a color support level > 0. + Can be useful for things that are purely cosmetic. + */ + readonly visible: Chalk; + + readonly black: Chalk; + readonly red: Chalk; + readonly green: Chalk; + readonly yellow: Chalk; + readonly blue: Chalk; + readonly magenta: Chalk; + readonly cyan: Chalk; + readonly white: Chalk; + + /* + Alias for `blackBright`. + */ + readonly gray: Chalk; + + /* + Alias for `blackBright`. + */ + readonly grey: Chalk; + + readonly blackBright: Chalk; + readonly redBright: Chalk; + readonly greenBright: Chalk; + readonly yellowBright: Chalk; + readonly blueBright: Chalk; + readonly magentaBright: Chalk; + readonly cyanBright: Chalk; + readonly whiteBright: Chalk; + + readonly bgBlack: Chalk; + readonly bgRed: Chalk; + readonly bgGreen: Chalk; + readonly bgYellow: Chalk; + readonly bgBlue: Chalk; + readonly bgMagenta: Chalk; + readonly bgCyan: Chalk; + readonly bgWhite: Chalk; + + /* + Alias for `bgBlackBright`. + */ + readonly bgGray: Chalk; + + /* + Alias for `bgBlackBright`. + */ + readonly bgGrey: Chalk; + + readonly bgBlackBright: Chalk; + readonly bgRedBright: Chalk; + readonly bgGreenBright: Chalk; + readonly bgYellowBright: Chalk; + readonly bgBlueBright: Chalk; + readonly bgMagentaBright: Chalk; + readonly bgCyanBright: Chalk; + readonly bgWhiteBright: Chalk; + } +} + +/** +Main Chalk object that allows to chain styles together. +Call the last one as a method with a string argument. +Order doesn't matter, and later styles take precedent in case of a conflict. +This simply means that `chalk.red.yellow.green` is equivalent to `chalk.green`. +*/ +declare const chalk: chalk.Chalk & chalk.ChalkFunction & { + supportsColor: chalk.ColorSupport | false; + Level: chalk.Level; + Color: Color; + ForegroundColor: ForegroundColor; + BackgroundColor: BackgroundColor; + Modifiers: Modifiers; + stderr: chalk.Chalk & {supportsColor: chalk.ColorSupport | false}; +}; + +export = chalk; diff --git a/node_modules/chalk/license b/node_modules/chalk/license new file mode 100644 index 00000000..e7af2f77 --- /dev/null +++ b/node_modules/chalk/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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. diff --git a/node_modules/chalk/node_modules/supports-color/browser.js b/node_modules/chalk/node_modules/supports-color/browser.js new file mode 100644 index 00000000..62afa3a7 --- /dev/null +++ b/node_modules/chalk/node_modules/supports-color/browser.js @@ -0,0 +1,5 @@ +'use strict'; +module.exports = { + stdout: false, + stderr: false +}; diff --git a/node_modules/chalk/node_modules/supports-color/index.js b/node_modules/chalk/node_modules/supports-color/index.js new file mode 100644 index 00000000..6fada390 --- /dev/null +++ b/node_modules/chalk/node_modules/supports-color/index.js @@ -0,0 +1,135 @@ +'use strict'; +const os = require('os'); +const tty = require('tty'); +const hasFlag = require('has-flag'); + +const {env} = process; + +let forceColor; +if (hasFlag('no-color') || + hasFlag('no-colors') || + hasFlag('color=false') || + hasFlag('color=never')) { + forceColor = 0; +} else if (hasFlag('color') || + hasFlag('colors') || + hasFlag('color=true') || + hasFlag('color=always')) { + forceColor = 1; +} + +if ('FORCE_COLOR' in env) { + if (env.FORCE_COLOR === 'true') { + forceColor = 1; + } else if (env.FORCE_COLOR === 'false') { + forceColor = 0; + } else { + forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3); + } +} + +function translateLevel(level) { + if (level === 0) { + return false; + } + + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; +} + +function supportsColor(haveStream, streamIsTTY) { + if (forceColor === 0) { + return 0; + } + + if (hasFlag('color=16m') || + hasFlag('color=full') || + hasFlag('color=truecolor')) { + return 3; + } + + if (hasFlag('color=256')) { + return 2; + } + + if (haveStream && !streamIsTTY && forceColor === undefined) { + return 0; + } + + const min = forceColor || 0; + + if (env.TERM === 'dumb') { + return min; + } + + if (process.platform === 'win32') { + // Windows 10 build 10586 is the first Windows release that supports 256 colors. + // Windows 10 build 14931 is the first release that supports 16m/TrueColor. + const osRelease = os.release().split('.'); + if ( + Number(osRelease[0]) >= 10 && + Number(osRelease[2]) >= 10586 + ) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } + + return 1; + } + + if ('CI' in env) { + if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') { + return 1; + } + + return min; + } + + if ('TEAMCITY_VERSION' in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + + if (env.COLORTERM === 'truecolor') { + return 3; + } + + if ('TERM_PROGRAM' in env) { + const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); + + switch (env.TERM_PROGRAM) { + case 'iTerm.app': + return version >= 3 ? 3 : 2; + case 'Apple_Terminal': + return 2; + // No default + } + } + + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } + + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + + if ('COLORTERM' in env) { + return 1; + } + + return min; +} + +function getSupportLevel(stream) { + const level = supportsColor(stream, stream && stream.isTTY); + return translateLevel(level); +} + +module.exports = { + supportsColor: getSupportLevel, + stdout: translateLevel(supportsColor(true, tty.isatty(1))), + stderr: translateLevel(supportsColor(true, tty.isatty(2))) +}; diff --git a/node_modules/chalk/node_modules/supports-color/license b/node_modules/chalk/node_modules/supports-color/license new file mode 100644 index 00000000..e7af2f77 --- /dev/null +++ b/node_modules/chalk/node_modules/supports-color/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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. diff --git a/node_modules/chalk/node_modules/supports-color/package.json b/node_modules/chalk/node_modules/supports-color/package.json new file mode 100644 index 00000000..f7182edc --- /dev/null +++ b/node_modules/chalk/node_modules/supports-color/package.json @@ -0,0 +1,53 @@ +{ + "name": "supports-color", + "version": "7.2.0", + "description": "Detect whether a terminal supports color", + "license": "MIT", + "repository": "chalk/supports-color", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava" + }, + "files": [ + "index.js", + "browser.js" + ], + "keywords": [ + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "ansi", + "styles", + "tty", + "rgb", + "256", + "shell", + "xterm", + "command-line", + "support", + "supports", + "capability", + "detect", + "truecolor", + "16m" + ], + "dependencies": { + "has-flag": "^4.0.0" + }, + "devDependencies": { + "ava": "^1.4.1", + "import-fresh": "^3.0.0", + "xo": "^0.24.0" + }, + "browser": "browser.js" +} diff --git a/node_modules/chalk/node_modules/supports-color/readme.md b/node_modules/chalk/node_modules/supports-color/readme.md new file mode 100644 index 00000000..36542285 --- /dev/null +++ b/node_modules/chalk/node_modules/supports-color/readme.md @@ -0,0 +1,76 @@ +# supports-color [![Build Status](https://travis-ci.org/chalk/supports-color.svg?branch=master)](https://travis-ci.org/chalk/supports-color) + +> Detect whether a terminal supports color + + +## Install + +``` +$ npm install supports-color +``` + + +## Usage + +```js +const supportsColor = require('supports-color'); + +if (supportsColor.stdout) { + console.log('Terminal stdout supports color'); +} + +if (supportsColor.stdout.has256) { + console.log('Terminal stdout supports 256 colors'); +} + +if (supportsColor.stderr.has16m) { + console.log('Terminal stderr supports 16 million colors (truecolor)'); +} +``` + + +## API + +Returns an `Object` with a `stdout` and `stderr` property for testing either streams. Each property is an `Object`, or `false` if color is not supported. + +The `stdout`/`stderr` objects specifies a level of support for color through a `.level` property and a corresponding flag: + +- `.level = 1` and `.hasBasic = true`: Basic color support (16 colors) +- `.level = 2` and `.has256 = true`: 256 color support +- `.level = 3` and `.has16m = true`: Truecolor support (16 million colors) + + +## Info + +It obeys the `--color` and `--no-color` CLI flags. + +For situations where using `--color` is not possible, use the environment variable `FORCE_COLOR=1` (level 1), `FORCE_COLOR=2` (level 2), or `FORCE_COLOR=3` (level 3) to forcefully enable color, or `FORCE_COLOR=0` to forcefully disable. The use of `FORCE_COLOR` overrides all other color support checks. + +Explicit 256/Truecolor mode can be enabled using the `--color=256` and `--color=16m` flags, respectively. + + +## Related + +- [supports-color-cli](https://github.com/chalk/supports-color-cli) - CLI for this module +- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right + + +## Maintainers + +- [Sindre Sorhus](https://github.com/sindresorhus) +- [Josh Junon](https://github.com/qix-) + + +--- + +
+ + Get professional support for this package with a Tidelift subscription + +
+ + Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies. +
+
+ +--- diff --git a/node_modules/chalk/package.json b/node_modules/chalk/package.json new file mode 100644 index 00000000..47c23f29 --- /dev/null +++ b/node_modules/chalk/package.json @@ -0,0 +1,68 @@ +{ + "name": "chalk", + "version": "4.1.2", + "description": "Terminal string styling done right", + "license": "MIT", + "repository": "chalk/chalk", + "funding": "https://github.com/chalk/chalk?sponsor=1", + "main": "source", + "engines": { + "node": ">=10" + }, + "scripts": { + "test": "xo && nyc ava && tsd", + "bench": "matcha benchmark.js" + }, + "files": [ + "source", + "index.d.ts" + ], + "keywords": [ + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "str", + "ansi", + "style", + "styles", + "tty", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "devDependencies": { + "ava": "^2.4.0", + "coveralls": "^3.0.7", + "execa": "^4.0.0", + "import-fresh": "^3.1.0", + "matcha": "^0.7.0", + "nyc": "^15.0.0", + "resolve-from": "^5.0.0", + "tsd": "^0.7.4", + "xo": "^0.28.2" + }, + "xo": { + "rules": { + "unicorn/prefer-string-slice": "off", + "unicorn/prefer-includes": "off", + "@typescript-eslint/member-ordering": "off", + "no-redeclare": "off", + "unicorn/string-content": "off", + "unicorn/better-regex": "off" + } + } +} diff --git a/node_modules/chalk/readme.md b/node_modules/chalk/readme.md new file mode 100644 index 00000000..a055d21c --- /dev/null +++ b/node_modules/chalk/readme.md @@ -0,0 +1,341 @@ +

+
+
+ Chalk +
+
+
+

+ +> Terminal string styling done right + +[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) [![Coverage Status](https://coveralls.io/repos/github/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/github/chalk/chalk?branch=master) [![npm dependents](https://badgen.net/npm/dependents/chalk)](https://www.npmjs.com/package/chalk?activeTab=dependents) [![Downloads](https://badgen.net/npm/dt/chalk)](https://www.npmjs.com/package/chalk) [![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) [![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/xojs/xo) ![TypeScript-ready](https://img.shields.io/npm/types/chalk.svg) [![run on repl.it](https://repl.it/badge/github/chalk/chalk)](https://repl.it/github/chalk/chalk) + + + +
+ +--- + + + +--- + +
+ +## Highlights + +- Expressive API +- Highly performant +- Ability to nest styles +- [256/Truecolor color support](#256-and-truecolor-color-support) +- Auto-detects color support +- Doesn't extend `String.prototype` +- Clean and focused +- Actively maintained +- [Used by ~50,000 packages](https://www.npmjs.com/browse/depended/chalk) as of January 1, 2020 + +## Install + +```console +$ npm install chalk +``` + +## Usage + +```js +const chalk = require('chalk'); + +console.log(chalk.blue('Hello world!')); +``` + +Chalk comes with an easy to use composable API where you just chain and nest the styles you want. + +```js +const chalk = require('chalk'); +const log = console.log; + +// Combine styled and normal strings +log(chalk.blue('Hello') + ' World' + chalk.red('!')); + +// Compose multiple styles using the chainable API +log(chalk.blue.bgRed.bold('Hello world!')); + +// Pass in multiple arguments +log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz')); + +// Nest styles +log(chalk.red('Hello', chalk.underline.bgBlue('world') + '!')); + +// Nest styles of the same type even (color, underline, background) +log(chalk.green( + 'I am a green line ' + + chalk.blue.underline.bold('with a blue substring') + + ' that becomes green again!' +)); + +// ES2015 template literal +log(` +CPU: ${chalk.red('90%')} +RAM: ${chalk.green('40%')} +DISK: ${chalk.yellow('70%')} +`); + +// ES2015 tagged template literal +log(chalk` +CPU: {red ${cpu.totalPercent}%} +RAM: {green ${ram.used / ram.total * 100}%} +DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%} +`); + +// Use RGB colors in terminal emulators that support it. +log(chalk.keyword('orange')('Yay for orange colored text!')); +log(chalk.rgb(123, 45, 67).underline('Underlined reddish color')); +log(chalk.hex('#DEADED').bold('Bold gray!')); +``` + +Easily define your own themes: + +```js +const chalk = require('chalk'); + +const error = chalk.bold.red; +const warning = chalk.keyword('orange'); + +console.log(error('Error!')); +console.log(warning('Warning!')); +``` + +Take advantage of console.log [string substitution](https://nodejs.org/docs/latest/api/console.html#console_console_log_data_args): + +```js +const name = 'Sindre'; +console.log(chalk.green('Hello %s'), name); +//=> 'Hello Sindre' +``` + +## API + +### chalk.` and works faster. + +> **Note** +> +> Do not use `style-loader` and `mini-css-extract-plugin` together. + +**webpack.config.js** + +```js +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const devMode = process.env.NODE_ENV !== "production"; + +module.exports = { + module: { + rules: [ + { + // If you enable `experiments.css` or `experiments.futureDefaults`, please uncomment line below + // type: "javascript/auto", + test: /\.(sa|sc|c)ss$/i, + use: [ + devMode ? "style-loader" : MiniCssExtractPlugin.loader, + "css-loader", + "postcss-loader", + "sass-loader", + ], + }, + ], + }, + plugins: [].concat(devMode ? [] : [new MiniCssExtractPlugin()]), +}; +``` + +### Disable url resolving using the `/* webpackIgnore: true */` comment + +With the help of the `/* webpackIgnore: true */`comment, it is possible to disable sources handling for rules and for individual declarations. + +```css +/* webpackIgnore: true */ +@import url(./basic.css); +@import /* webpackIgnore: true */ url(./imported.css); + +.class { + /* Disabled url handling for the all urls in the 'background' declaration */ + color: red; + /* webpackIgnore: true */ + background: url("./url/img.png"), url("./url/img.png"); +} + +.class { + /* Disabled url handling for the first url in the 'background' declaration */ + color: red; + background: + /* webpackIgnore: true */ url("./url/img.png"), url("./url/img.png"); +} + +.class { + /* Disabled url handling for the second url in the 'background' declaration */ + color: red; + background: url("./url/img.png"), + /* webpackIgnore: true */ url("./url/img.png"); +} + +/* prettier-ignore */ +.class { + /* Disabled url handling for the second url in the 'background' declaration */ + color: red; + background: url("./url/img.png"), + /* webpackIgnore: true */ + url("./url/img.png"); +} + +/* prettier-ignore */ +.class { + /* Disabled url handling for third and sixth urls in the 'background-image' declaration */ + background-image: image-set( + url(./url/img.png) 2x, + url(./url/img.png) 3x, + /* webpackIgnore: true */ url(./url/img.png) 4x, + url(./url/img.png) 5x, + url(./url/img.png) 6x, + /* webpackIgnore: true */ + url(./url/img.png) 7x + ); +} +``` + +### Assets + +The following `webpack.config.js` can load CSS files, embed small PNG/JPG/GIF/SVG images as well as fonts as [Data URLs](https://tools.ietf.org/html/rfc2397) and copy larger files to the output directory. + +**For webpack v5:** + +**webpack.config.js** + +```js +module.exports = { + module: { + rules: [ + { + test: /\.css$/i, + use: ["style-loader", "css-loader"], + }, + { + test: /\.(png|jpe?g|gif|svg|eot|ttf|woff|woff2)$/i, + // More information here https://webpack.js.org/guides/asset-modules/ + type: "asset", + }, + ], + }, +}; +``` + +### Extract + +For production builds it's recommended to extract the CSS from your bundle being able to use parallel loading of CSS/JS resources later on. + +- This can be achieved by using the [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) to extract the CSS when running in production mode. + +- As an alternative, if seeking better development performance and css outputs that mimic production. [extract-css-chunks-webpack-plugin](https://github.com/faceyspacey/extract-css-chunks-webpack-plugin) offers a hot module reload friendly, extended version of mini-css-extract-plugin. HMR real CSS files in dev, works like mini-css in non-dev + +### Pure CSS, CSS modules and PostCSS + +When you have pure CSS (without CSS modules), CSS modules and PostCSS in your project you can use this setup: + +**webpack.config.js** + +```js +module.exports = { + module: { + rules: [ + { + // For pure CSS - /\.css$/i, + // For Sass/SCSS - /\.((c|sa|sc)ss)$/i, + // For Less - /\.((c|le)ss)$/i, + test: /\.((c|sa|sc)ss)$/i, + use: [ + "style-loader", + { + loader: "css-loader", + options: { + // Run `postcss-loader` on each CSS `@import` and CSS modules/ICSS imports, do not forget that `sass-loader` compile non CSS `@import`'s into a single file + // If you need run `sass-loader` and `postcss-loader` on each CSS `@import` please set it to `2` + importLoaders: 1, + }, + }, + { + loader: "postcss-loader", + options: { plugins: () => [postcssPresetEnv({ stage: 0 })] }, + }, + // Can be `less-loader` + { + loader: "sass-loader", + }, + ], + }, + // For webpack v5 + { + test: /\.(png|jpe?g|gif|svg|eot|ttf|woff|woff2)$/i, + // More information here https://webpack.js.org/guides/asset-modules/ + type: "asset", + }, + ], + }, +}; +``` + +### Resolve unresolved URLs using an alias + +**index.css** + +```css +.class { + background: url(/assets/unresolved/img.png); +} +``` + +**webpack.config.js** + +```js +module.exports = { + module: { + rules: [ + { + test: /\.css$/i, + use: ["style-loader", "css-loader"], + }, + ], + }, + resolve: { + alias: { + "/assets/unresolved/img.png": path.resolve( + __dirname, + "assets/real-path-to-img/img.png" + ), + }, + }, +}; +``` + +### Named export with custom export names + +**webpack.config.js** + +```js +module.exports = { + module: { + rules: [ + { + test: /\.css$/i, + loader: "css-loader", + options: { + modules: { + namedExport: true, + exportLocalsConvention: function (name) { + return name.replace(/-/g, "_"); + }, + }, + }, + }, + ], + }, +}; +``` + +### Separating `Interoperable CSS`-only and `CSS Module` features + +The following setup is an example of allowing `Interoperable CSS` features only (such as `:import` and `:export`) without using further `CSS Module` functionality by setting `mode` option for all files that do not match `*.module.scss` naming convention. This is for reference as having `ICSS` features applied to all files was default `css-loader` behavior before v4. +Meanwhile all files matching `*.module.scss` are treated as `CSS Modules` in this example. + +An example case is assumed where a project requires canvas drawing variables to be synchronized with CSS - canvas drawing uses the same color (set by color name in JavaScript) as HTML background (set by class name in CSS). + +**webpack.config.js** + +```js +module.exports = { + module: { + rules: [ + // ... + // -------- + // SCSS ALL EXCEPT MODULES + { + test: /\.scss$/i, + exclude: /\.module\.scss$/i, + use: [ + { + loader: "style-loader", + }, + { + loader: "css-loader", + options: { + importLoaders: 1, + modules: { + mode: "icss", + }, + }, + }, + { + loader: "sass-loader", + }, + ], + }, + // -------- + // SCSS MODULES + { + test: /\.module\.scss$/i, + use: [ + { + loader: "style-loader", + }, + { + loader: "css-loader", + options: { + importLoaders: 1, + modules: { + mode: "local", + }, + }, + }, + { + loader: "sass-loader", + }, + ], + }, + // -------- + // ... + ], + }, +}; +``` + +**variables.scss** + +File treated as `ICSS`-only. + +```scss +$colorBackground: red; +:export { + colorBackgroundCanvas: $colorBackground; +} +``` + +**Component.module.scss** + +File treated as `CSS Module`. + +```scss +@import "variables.scss"; +.componentClass { + background-color: $colorBackground; +} +``` + +**Component.jsx** + +Using both `CSS Module` functionality as well as SCSS variables directly in JavaScript. + +```jsx +import svars from "variables.scss"; +import styles from "Component.module.scss"; + +// Render DOM with CSS modules class name +//
+// +//
+ +// Somewhere in JavaScript canvas drawing code use the variable directly +// const ctx = mountsCanvas.current.getContext('2d',{alpha: false}); +ctx.fillStyle = `${svars.colorBackgroundCanvas}`; +``` + +## Contributing + +Please take a moment to read our contributing guidelines if you haven't yet done so. + +[CONTRIBUTING](./.github/CONTRIBUTING.md) + +## License + +[MIT](./LICENSE) + +[npm]: https://img.shields.io/npm/v/css-loader.svg +[npm-url]: https://npmjs.com/package/css-loader +[node]: https://img.shields.io/node/v/css-loader.svg +[node-url]: https://nodejs.org +[tests]: https://github.com/webpack-contrib/css-loader/workflows/css-loader/badge.svg +[tests-url]: https://github.com/webpack-contrib/css-loader/actions +[cover]: https://codecov.io/gh/webpack-contrib/css-loader/branch/master/graph/badge.svg +[cover-url]: https://codecov.io/gh/webpack-contrib/css-loader +[discussion]: https://img.shields.io/github/discussions/webpack/webpack +[discussion-url]: https://github.com/webpack/webpack/discussions +[size]: https://packagephobia.now.sh/badge?p=css-loader +[size-url]: https://packagephobia.now.sh/result?p=css-loader diff --git a/node_modules/css-loader/node_modules/.bin/semver b/node_modules/css-loader/node_modules/.bin/semver new file mode 120000 index 00000000..5aaadf42 --- /dev/null +++ b/node_modules/css-loader/node_modules/.bin/semver @@ -0,0 +1 @@ +../semver/bin/semver.js \ No newline at end of file diff --git a/node_modules/css-loader/node_modules/.bin/webpack b/node_modules/css-loader/node_modules/.bin/webpack new file mode 120000 index 00000000..8a1900f6 --- /dev/null +++ b/node_modules/css-loader/node_modules/.bin/webpack @@ -0,0 +1 @@ +../../../webpack/bin/webpack.js \ No newline at end of file diff --git a/node_modules/css-loader/node_modules/semver/LICENSE b/node_modules/css-loader/node_modules/semver/LICENSE new file mode 100644 index 00000000..19129e31 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/css-loader/node_modules/semver/README.md b/node_modules/css-loader/node_modules/semver/README.md new file mode 100644 index 00000000..53ea9b52 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/README.md @@ -0,0 +1,637 @@ +semver(1) -- The semantic versioner for npm +=========================================== + +## Install + +```bash +npm install semver +```` + +## Usage + +As a node module: + +```js +const semver = require('semver') + +semver.valid('1.2.3') // '1.2.3' +semver.valid('a.b.c') // null +semver.clean(' =v1.2.3 ') // '1.2.3' +semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true +semver.gt('1.2.3', '9.8.7') // false +semver.lt('1.2.3', '9.8.7') // true +semver.minVersion('>=1.0.0') // '1.0.0' +semver.valid(semver.coerce('v2')) // '2.0.0' +semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7' +``` + +You can also just load the module for the function that you care about, if +you'd like to minimize your footprint. + +```js +// load the whole API at once in a single object +const semver = require('semver') + +// or just load the bits you need +// all of them listed here, just pick and choose what you want + +// classes +const SemVer = require('semver/classes/semver') +const Comparator = require('semver/classes/comparator') +const Range = require('semver/classes/range') + +// functions for working with versions +const semverParse = require('semver/functions/parse') +const semverValid = require('semver/functions/valid') +const semverClean = require('semver/functions/clean') +const semverInc = require('semver/functions/inc') +const semverDiff = require('semver/functions/diff') +const semverMajor = require('semver/functions/major') +const semverMinor = require('semver/functions/minor') +const semverPatch = require('semver/functions/patch') +const semverPrerelease = require('semver/functions/prerelease') +const semverCompare = require('semver/functions/compare') +const semverRcompare = require('semver/functions/rcompare') +const semverCompareLoose = require('semver/functions/compare-loose') +const semverCompareBuild = require('semver/functions/compare-build') +const semverSort = require('semver/functions/sort') +const semverRsort = require('semver/functions/rsort') + +// low-level comparators between versions +const semverGt = require('semver/functions/gt') +const semverLt = require('semver/functions/lt') +const semverEq = require('semver/functions/eq') +const semverNeq = require('semver/functions/neq') +const semverGte = require('semver/functions/gte') +const semverLte = require('semver/functions/lte') +const semverCmp = require('semver/functions/cmp') +const semverCoerce = require('semver/functions/coerce') + +// working with ranges +const semverSatisfies = require('semver/functions/satisfies') +const semverMaxSatisfying = require('semver/ranges/max-satisfying') +const semverMinSatisfying = require('semver/ranges/min-satisfying') +const semverToComparators = require('semver/ranges/to-comparators') +const semverMinVersion = require('semver/ranges/min-version') +const semverValidRange = require('semver/ranges/valid') +const semverOutside = require('semver/ranges/outside') +const semverGtr = require('semver/ranges/gtr') +const semverLtr = require('semver/ranges/ltr') +const semverIntersects = require('semver/ranges/intersects') +const simplifyRange = require('semver/ranges/simplify') +const rangeSubset = require('semver/ranges/subset') +``` + +As a command-line utility: + +``` +$ semver -h + +A JavaScript implementation of the https://semver.org/ specification +Copyright Isaac Z. Schlueter + +Usage: semver [options] [ [...]] +Prints valid versions sorted by SemVer precedence + +Options: +-r --range + Print versions that match the specified range. + +-i --increment [] + Increment a version by the specified level. Level can + be one of: major, minor, patch, premajor, preminor, + prepatch, or prerelease. Default level is 'patch'. + Only one version may be specified. + +--preid + Identifier to be used to prefix premajor, preminor, + prepatch or prerelease version increments. + +-l --loose + Interpret versions and ranges loosely + +-n <0|1> + This is the base to be used for the prerelease identifier. + +-p --include-prerelease + Always include prerelease versions in range matching + +-c --coerce + Coerce a string into SemVer if possible + (does not imply --loose) + +--rtl + Coerce version strings right to left + +--ltr + Coerce version strings left to right (default) + +Program exits successfully if any valid version satisfies +all supplied ranges, and prints all satisfying versions. + +If no satisfying versions are found, then exits failure. + +Versions are printed in ascending order, so supplying +multiple versions to the utility will just sort them. +``` + +## Versions + +A "version" is described by the `v2.0.0` specification found at +. + +A leading `"="` or `"v"` character is stripped off and ignored. + +## Ranges + +A `version range` is a set of `comparators` which specify versions +that satisfy the range. + +A `comparator` is composed of an `operator` and a `version`. The set +of primitive `operators` is: + +* `<` Less than +* `<=` Less than or equal to +* `>` Greater than +* `>=` Greater than or equal to +* `=` Equal. If no operator is specified, then equality is assumed, + so this operator is optional, but MAY be included. + +For example, the comparator `>=1.2.7` would match the versions +`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6` +or `1.1.0`. The comparator `>1` is equivalent to `>=2.0.0` and +would match the versions `2.0.0` and `3.1.0`, but not the versions +`1.0.1` or `1.1.0`. + +Comparators can be joined by whitespace to form a `comparator set`, +which is satisfied by the **intersection** of all of the comparators +it includes. + +A range is composed of one or more comparator sets, joined by `||`. A +version matches a range if and only if every comparator in at least +one of the `||`-separated comparator sets is satisfied by the version. + +For example, the range `>=1.2.7 <1.3.0` would match the versions +`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`, +or `1.1.0`. + +The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`, +`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`. + +### Prerelease Tags + +If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then +it will only be allowed to satisfy comparator sets if at least one +comparator with the same `[major, minor, patch]` tuple also has a +prerelease tag. + +For example, the range `>1.2.3-alpha.3` would be allowed to match the +version `1.2.3-alpha.7`, but it would *not* be satisfied by +`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater +than" `1.2.3-alpha.3` according to the SemVer sort rules. The version +range only accepts prerelease tags on the `1.2.3` version. The +version `3.4.5` *would* satisfy the range, because it does not have a +prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`. + +The purpose for this behavior is twofold. First, prerelease versions +frequently are updated very quickly, and contain many breaking changes +that are (by the author's design) not yet fit for public consumption. +Therefore, by default, they are excluded from range matching +semantics. + +Second, a user who has opted into using a prerelease version has +clearly indicated the intent to use *that specific* set of +alpha/beta/rc versions. By including a prerelease tag in the range, +the user is indicating that they are aware of the risk. However, it +is still not appropriate to assume that they have opted into taking a +similar risk on the *next* set of prerelease versions. + +Note that this behavior can be suppressed (treating all prerelease +versions as if they were normal versions, for the purpose of range +matching) by setting the `includePrerelease` flag on the options +object to any +[functions](https://github.com/npm/node-semver#functions) that do +range matching. + +#### Prerelease Identifiers + +The method `.inc` takes an additional `identifier` string argument that +will append the value of the string as a prerelease identifier: + +```javascript +semver.inc('1.2.3', 'prerelease', 'beta') +// '1.2.4-beta.0' +``` + +command-line example: + +```bash +$ semver 1.2.3 -i prerelease --preid beta +1.2.4-beta.0 +``` + +Which then can be used to increment further: + +```bash +$ semver 1.2.4-beta.0 -i prerelease +1.2.4-beta.1 +``` + +#### Prerelease Identifier Base + +The method `.inc` takes an optional parameter 'identifierBase' string +that will let you let your prerelease number as zero-based or one-based. +Set to `false` to omit the prerelease number altogether. +If you do not specify this parameter, it will default to zero-based. + +```javascript +semver.inc('1.2.3', 'prerelease', 'beta', '1') +// '1.2.4-beta.1' +``` + +```javascript +semver.inc('1.2.3', 'prerelease', 'beta', false) +// '1.2.4-beta' +``` + +command-line example: + +```bash +$ semver 1.2.3 -i prerelease --preid beta -n 1 +1.2.4-beta.1 +``` + +```bash +$ semver 1.2.3 -i prerelease --preid beta -n false +1.2.4-beta +``` + +### Advanced Range Syntax + +Advanced range syntax desugars to primitive comparators in +deterministic ways. + +Advanced ranges may be combined in the same way as primitive +comparators using white space or `||`. + +#### Hyphen Ranges `X.Y.Z - A.B.C` + +Specifies an inclusive set. + +* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4` + +If a partial version is provided as the first version in the inclusive +range, then the missing pieces are replaced with zeroes. + +* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4` + +If a partial version is provided as the second version in the +inclusive range, then all versions that start with the supplied parts +of the tuple are accepted, but nothing that would be greater than the +provided tuple parts. + +* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0-0` +* `1.2.3 - 2` := `>=1.2.3 <3.0.0-0` + +#### X-Ranges `1.2.x` `1.X` `1.2.*` `*` + +Any of `X`, `x`, or `*` may be used to "stand in" for one of the +numeric values in the `[major, minor, patch]` tuple. + +* `*` := `>=0.0.0` (Any non-prerelease version satisfies, unless + `includePrerelease` is specified, in which case any version at all + satisfies) +* `1.x` := `>=1.0.0 <2.0.0-0` (Matching major version) +* `1.2.x` := `>=1.2.0 <1.3.0-0` (Matching major and minor versions) + +A partial version range is treated as an X-Range, so the special +character is in fact optional. + +* `""` (empty string) := `*` := `>=0.0.0` +* `1` := `1.x.x` := `>=1.0.0 <2.0.0-0` +* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0-0` + +#### Tilde Ranges `~1.2.3` `~1.2` `~1` + +Allows patch-level changes if a minor version is specified on the +comparator. Allows minor-level changes if not. + +* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0-0` +* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0-0` (Same as `1.2.x`) +* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0-0` (Same as `1.x`) +* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0-0` +* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0-0` (Same as `0.2.x`) +* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0-0` (Same as `0.x`) +* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0-0` Note that prereleases in + the `1.2.3` version will be allowed, if they are greater than or + equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but + `1.2.4-beta.2` would not, because it is a prerelease of a + different `[major, minor, patch]` tuple. + +#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4` + +Allows changes that do not modify the left-most non-zero element in the +`[major, minor, patch]` tuple. In other words, this allows patch and +minor updates for versions `1.0.0` and above, patch updates for +versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`. + +Many authors treat a `0.x` version as if the `x` were the major +"breaking-change" indicator. + +Caret ranges are ideal when an author may make breaking changes +between `0.2.4` and `0.3.0` releases, which is a common practice. +However, it presumes that there will *not* be breaking changes between +`0.2.4` and `0.2.5`. It allows for changes that are presumed to be +additive (but non-breaking), according to commonly observed practices. + +* `^1.2.3` := `>=1.2.3 <2.0.0-0` +* `^0.2.3` := `>=0.2.3 <0.3.0-0` +* `^0.0.3` := `>=0.0.3 <0.0.4-0` +* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0-0` Note that prereleases in + the `1.2.3` version will be allowed, if they are greater than or + equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but + `1.2.4-beta.2` would not, because it is a prerelease of a + different `[major, minor, patch]` tuple. +* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4-0` Note that prereleases in the + `0.0.3` version *only* will be allowed, if they are greater than or + equal to `beta`. So, `0.0.3-pr.2` would be allowed. + +When parsing caret ranges, a missing `patch` value desugars to the +number `0`, but will allow flexibility within that value, even if the +major and minor versions are both `0`. + +* `^1.2.x` := `>=1.2.0 <2.0.0-0` +* `^0.0.x` := `>=0.0.0 <0.1.0-0` +* `^0.0` := `>=0.0.0 <0.1.0-0` + +A missing `minor` and `patch` values will desugar to zero, but also +allow flexibility within those values, even if the major version is +zero. + +* `^1.x` := `>=1.0.0 <2.0.0-0` +* `^0.x` := `>=0.0.0 <1.0.0-0` + +### Range Grammar + +Putting all this together, here is a Backus-Naur grammar for ranges, +for the benefit of parser authors: + +```bnf +range-set ::= range ( logical-or range ) * +logical-or ::= ( ' ' ) * '||' ( ' ' ) * +range ::= hyphen | simple ( ' ' simple ) * | '' +hyphen ::= partial ' - ' partial +simple ::= primitive | partial | tilde | caret +primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial +partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? +xr ::= 'x' | 'X' | '*' | nr +nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) * +tilde ::= '~' partial +caret ::= '^' partial +qualifier ::= ( '-' pre )? ( '+' build )? +pre ::= parts +build ::= parts +parts ::= part ( '.' part ) * +part ::= nr | [-0-9A-Za-z]+ +``` + +## Functions + +All methods and classes take a final `options` object argument. All +options in this object are `false` by default. The options supported +are: + +- `loose` Be more forgiving about not-quite-valid semver strings. + (Any resulting output will always be 100% strict compliant, of + course.) For backwards compatibility reasons, if the `options` + argument is a boolean value instead of an object, it is interpreted + to be the `loose` param. +- `includePrerelease` Set to suppress the [default + behavior](https://github.com/npm/node-semver#prerelease-tags) of + excluding prerelease tagged versions from ranges unless they are + explicitly opted into. + +Strict-mode Comparators and Ranges will be strict about the SemVer +strings that they parse. + +* `valid(v)`: Return the parsed version, or null if it's not valid. +* `inc(v, release)`: Return the version incremented by the release + type (`major`, `premajor`, `minor`, `preminor`, `patch`, + `prepatch`, or `prerelease`), or null if it's not valid + * `premajor` in one call will bump the version up to the next major + version and down to a prerelease of that major version. + `preminor`, and `prepatch` work the same way. + * If called from a non-prerelease version, the `prerelease` will work the + same as `prepatch`. It increments the patch version, then makes a + prerelease. If the input version is already a prerelease it simply + increments it. +* `prerelease(v)`: Returns an array of prerelease components, or null + if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]` +* `major(v)`: Return the major version number. +* `minor(v)`: Return the minor version number. +* `patch(v)`: Return the patch version number. +* `intersects(r1, r2, loose)`: Return true if the two supplied ranges + or comparators intersect. +* `parse(v)`: Attempt to parse a string as a semantic version, returning either + a `SemVer` object or `null`. + +### Comparison + +* `gt(v1, v2)`: `v1 > v2` +* `gte(v1, v2)`: `v1 >= v2` +* `lt(v1, v2)`: `v1 < v2` +* `lte(v1, v2)`: `v1 <= v2` +* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent, + even if they're not the exact same string. You already know how to + compare strings. +* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`. +* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call + the corresponding function above. `"==="` and `"!=="` do simple + string comparison, but are included for completeness. Throws if an + invalid comparison string is provided. +* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if + `v2` is greater. Sorts in ascending order if passed to `Array.sort()`. +* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions + in descending order when passed to `Array.sort()`. +* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions + are equal. Sorts in ascending order if passed to `Array.sort()`. + `v2` is greater. Sorts in ascending order if passed to `Array.sort()`. +* `diff(v1, v2)`: Returns difference between two versions by the release type + (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`), + or null if the versions are the same. + +### Comparators + +* `intersects(comparator)`: Return true if the comparators intersect + +### Ranges + +* `validRange(range)`: Return the valid range or null if it's not valid +* `satisfies(version, range)`: Return true if the version satisfies the + range. +* `maxSatisfying(versions, range)`: Return the highest version in the list + that satisfies the range, or `null` if none of them do. +* `minSatisfying(versions, range)`: Return the lowest version in the list + that satisfies the range, or `null` if none of them do. +* `minVersion(range)`: Return the lowest version that can possibly match + the given range. +* `gtr(version, range)`: Return `true` if version is greater than all the + versions possible in the range. +* `ltr(version, range)`: Return `true` if version is less than all the + versions possible in the range. +* `outside(version, range, hilo)`: Return true if the version is outside + the bounds of the range in either the high or low direction. The + `hilo` argument must be either the string `'>'` or `'<'`. (This is + the function called by `gtr` and `ltr`.) +* `intersects(range)`: Return true if any of the ranges comparators intersect +* `simplifyRange(versions, range)`: Return a "simplified" range that + matches the same items in `versions` list as the range specified. Note + that it does *not* guarantee that it would match the same versions in all + cases, only for the set of versions provided. This is useful when + generating ranges by joining together multiple versions with `||` + programmatically, to provide the user with something a bit more + ergonomic. If the provided range is shorter in string-length than the + generated range, then that is returned. +* `subset(subRange, superRange)`: Return `true` if the `subRange` range is + entirely contained by the `superRange` range. + +Note that, since ranges may be non-contiguous, a version might not be +greater than a range, less than a range, *or* satisfy a range! For +example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9` +until `2.0.0`, so the version `1.2.10` would not be greater than the +range (because `2.0.1` satisfies, which is higher), nor less than the +range (since `1.2.8` satisfies, which is lower), and it also does not +satisfy the range. + +If you want to know if a version satisfies or does not satisfy a +range, use the `satisfies(version, range)` function. + +### Coercion + +* `coerce(version, options)`: Coerces a string to semver if possible + +This aims to provide a very forgiving translation of a non-semver string to +semver. It looks for the first digit in a string, and consumes all +remaining characters which satisfy at least a partial semver (e.g., `1`, +`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer +versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All +surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes +`3.4.0`). Only text which lacks digits will fail coercion (`version one` +is not valid). The maximum length for any semver component considered for +coercion is 16 characters; longer components will be ignored +(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any +semver component is `Number.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value +components are invalid (`9999999999999999.4.7.4` is likely invalid). + +If the `options.rtl` flag is set, then `coerce` will return the right-most +coercible tuple that does not share an ending index with a longer coercible +tuple. For example, `1.2.3.4` will return `2.3.4` in rtl mode, not +`4.0.0`. `1.2.3/4` will return `4.0.0`, because the `4` is not a part of +any other overlapping SemVer tuple. + +### Clean + +* `clean(version)`: Clean a string to be a valid semver if possible + +This will return a cleaned and trimmed semver version. If the provided +version is not valid a null will be returned. This does not work for +ranges. + +ex. +* `s.clean(' = v 2.1.5foo')`: `null` +* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'` +* `s.clean(' = v 2.1.5-foo')`: `null` +* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'` +* `s.clean('=v2.1.5')`: `'2.1.5'` +* `s.clean(' =v2.1.5')`: `2.1.5` +* `s.clean(' 2.1.5 ')`: `'2.1.5'` +* `s.clean('~1.0.0')`: `null` + +## Constants + +As a convenience, helper constants are exported to provide information about what `node-semver` supports: + +### `RELEASE_TYPES` + +- major +- premajor +- minor +- preminor +- patch +- prepatch +- prerelease + +``` +const semver = require('semver'); + +if (semver.RELEASE_TYPES.includes(arbitraryUserInput)) { + console.log('This is a valid release type!'); +} else { + console.warn('This is NOT a valid release type!'); +} +``` + +### `SEMVER_SPEC_VERSION` + +2.0.0 + +``` +const semver = require('semver'); + +console.log('We are currently using the semver specification version:', semver.SEMVER_SPEC_VERSION); +``` + +## Exported Modules + + + +You may pull in just the part of this semver utility that you need, if you +are sensitive to packing and tree-shaking concerns. The main +`require('semver')` export uses getter functions to lazily load the parts +of the API that are used. + +The following modules are available: + +* `require('semver')` +* `require('semver/classes')` +* `require('semver/classes/comparator')` +* `require('semver/classes/range')` +* `require('semver/classes/semver')` +* `require('semver/functions/clean')` +* `require('semver/functions/cmp')` +* `require('semver/functions/coerce')` +* `require('semver/functions/compare')` +* `require('semver/functions/compare-build')` +* `require('semver/functions/compare-loose')` +* `require('semver/functions/diff')` +* `require('semver/functions/eq')` +* `require('semver/functions/gt')` +* `require('semver/functions/gte')` +* `require('semver/functions/inc')` +* `require('semver/functions/lt')` +* `require('semver/functions/lte')` +* `require('semver/functions/major')` +* `require('semver/functions/minor')` +* `require('semver/functions/neq')` +* `require('semver/functions/parse')` +* `require('semver/functions/patch')` +* `require('semver/functions/prerelease')` +* `require('semver/functions/rcompare')` +* `require('semver/functions/rsort')` +* `require('semver/functions/satisfies')` +* `require('semver/functions/sort')` +* `require('semver/functions/valid')` +* `require('semver/ranges/gtr')` +* `require('semver/ranges/intersects')` +* `require('semver/ranges/ltr')` +* `require('semver/ranges/max-satisfying')` +* `require('semver/ranges/min-satisfying')` +* `require('semver/ranges/min-version')` +* `require('semver/ranges/outside')` +* `require('semver/ranges/to-comparators')` +* `require('semver/ranges/valid')` + diff --git a/node_modules/css-loader/node_modules/semver/bin/semver.js b/node_modules/css-loader/node_modules/semver/bin/semver.js new file mode 100755 index 00000000..242b7ade --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/bin/semver.js @@ -0,0 +1,197 @@ +#!/usr/bin/env node +// Standalone semver comparison program. +// Exits successfully and prints matching version(s) if +// any supplied version is valid and passes all tests. + +const argv = process.argv.slice(2) + +let versions = [] + +const range = [] + +let inc = null + +const version = require('../package.json').version + +let loose = false + +let includePrerelease = false + +let coerce = false + +let rtl = false + +let identifier + +let identifierBase + +const semver = require('../') +const parseOptions = require('../internal/parse-options') + +let reverse = false + +let options = {} + +const main = () => { + if (!argv.length) { + return help() + } + while (argv.length) { + let a = argv.shift() + const indexOfEqualSign = a.indexOf('=') + if (indexOfEqualSign !== -1) { + const value = a.slice(indexOfEqualSign + 1) + a = a.slice(0, indexOfEqualSign) + argv.unshift(value) + } + switch (a) { + case '-rv': case '-rev': case '--rev': case '--reverse': + reverse = true + break + case '-l': case '--loose': + loose = true + break + case '-p': case '--include-prerelease': + includePrerelease = true + break + case '-v': case '--version': + versions.push(argv.shift()) + break + case '-i': case '--inc': case '--increment': + switch (argv[0]) { + case 'major': case 'minor': case 'patch': case 'prerelease': + case 'premajor': case 'preminor': case 'prepatch': + inc = argv.shift() + break + default: + inc = 'patch' + break + } + break + case '--preid': + identifier = argv.shift() + break + case '-r': case '--range': + range.push(argv.shift()) + break + case '-n': + identifierBase = argv.shift() + if (identifierBase === 'false') { + identifierBase = false + } + break + case '-c': case '--coerce': + coerce = true + break + case '--rtl': + rtl = true + break + case '--ltr': + rtl = false + break + case '-h': case '--help': case '-?': + return help() + default: + versions.push(a) + break + } + } + + options = parseOptions({ loose, includePrerelease, rtl }) + + versions = versions.map((v) => { + return coerce ? (semver.coerce(v, options) || { version: v }).version : v + }).filter((v) => { + return semver.valid(v) + }) + if (!versions.length) { + return fail() + } + if (inc && (versions.length !== 1 || range.length)) { + return failInc() + } + + for (let i = 0, l = range.length; i < l; i++) { + versions = versions.filter((v) => { + return semver.satisfies(v, range[i], options) + }) + if (!versions.length) { + return fail() + } + } + return success(versions) +} + +const failInc = () => { + console.error('--inc can only be used on a single version with no range') + fail() +} + +const fail = () => process.exit(1) + +const success = () => { + const compare = reverse ? 'rcompare' : 'compare' + versions.sort((a, b) => { + return semver[compare](a, b, options) + }).map((v) => { + return semver.clean(v, options) + }).map((v) => { + return inc ? semver.inc(v, inc, options, identifier, identifierBase) : v + }).forEach((v, i, _) => { + console.log(v) + }) +} + +const help = () => console.log( +`SemVer ${version} + +A JavaScript implementation of the https://semver.org/ specification +Copyright Isaac Z. Schlueter + +Usage: semver [options] [ [...]] +Prints valid versions sorted by SemVer precedence + +Options: +-r --range + Print versions that match the specified range. + +-i --increment [] + Increment a version by the specified level. Level can + be one of: major, minor, patch, premajor, preminor, + prepatch, or prerelease. Default level is 'patch'. + Only one version may be specified. + +--preid + Identifier to be used to prefix premajor, preminor, + prepatch or prerelease version increments. + +-l --loose + Interpret versions and ranges loosely + +-p --include-prerelease + Always include prerelease versions in range matching + +-c --coerce + Coerce a string into SemVer if possible + (does not imply --loose) + +--rtl + Coerce version strings right to left + +--ltr + Coerce version strings left to right (default) + +-n + Base number to be used for the prerelease identifier. + Can be either 0 or 1, or false to omit the number altogether. + Defaults to 0. + +Program exits successfully if any valid version satisfies +all supplied ranges, and prints all satisfying versions. + +If no satisfying versions are found, then exits failure. + +Versions are printed in ascending order, so supplying +multiple versions to the utility will just sort them.`) + +main() diff --git a/node_modules/css-loader/node_modules/semver/classes/comparator.js b/node_modules/css-loader/node_modules/semver/classes/comparator.js new file mode 100644 index 00000000..3d39c0ee --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/classes/comparator.js @@ -0,0 +1,141 @@ +const ANY = Symbol('SemVer ANY') +// hoisted class for cyclic dependency +class Comparator { + static get ANY () { + return ANY + } + + constructor (comp, options) { + options = parseOptions(options) + + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value + } + } + + comp = comp.trim().split(/\s+/).join(' ') + debug('comparator', comp, options) + this.options = options + this.loose = !!options.loose + this.parse(comp) + + if (this.semver === ANY) { + this.value = '' + } else { + this.value = this.operator + this.semver.version + } + + debug('comp', this) + } + + parse (comp) { + const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] + const m = comp.match(r) + + if (!m) { + throw new TypeError(`Invalid comparator: ${comp}`) + } + + this.operator = m[1] !== undefined ? m[1] : '' + if (this.operator === '=') { + this.operator = '' + } + + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY + } else { + this.semver = new SemVer(m[2], this.options.loose) + } + } + + toString () { + return this.value + } + + test (version) { + debug('Comparator.test', version, this.options.loose) + + if (this.semver === ANY || version === ANY) { + return true + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + return cmp(version, this.operator, this.semver, this.options) + } + + intersects (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') + } + + if (this.operator === '') { + if (this.value === '') { + return true + } + return new Range(comp.value, options).test(this.value) + } else if (comp.operator === '') { + if (comp.value === '') { + return true + } + return new Range(this.value, options).test(comp.semver) + } + + options = parseOptions(options) + + // Special cases where nothing can possibly be lower + if (options.includePrerelease && + (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) { + return false + } + if (!options.includePrerelease && + (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) { + return false + } + + // Same direction increasing (> or >=) + if (this.operator.startsWith('>') && comp.operator.startsWith('>')) { + return true + } + // Same direction decreasing (< or <=) + if (this.operator.startsWith('<') && comp.operator.startsWith('<')) { + return true + } + // same SemVer and both sides are inclusive (<= or >=) + if ( + (this.semver.version === comp.semver.version) && + this.operator.includes('=') && comp.operator.includes('=')) { + return true + } + // opposite directions less than + if (cmp(this.semver, '<', comp.semver, options) && + this.operator.startsWith('>') && comp.operator.startsWith('<')) { + return true + } + // opposite directions greater than + if (cmp(this.semver, '>', comp.semver, options) && + this.operator.startsWith('<') && comp.operator.startsWith('>')) { + return true + } + return false + } +} + +module.exports = Comparator + +const parseOptions = require('../internal/parse-options') +const { safeRe: re, t } = require('../internal/re') +const cmp = require('../functions/cmp') +const debug = require('../internal/debug') +const SemVer = require('./semver') +const Range = require('./range') diff --git a/node_modules/css-loader/node_modules/semver/classes/index.js b/node_modules/css-loader/node_modules/semver/classes/index.js new file mode 100644 index 00000000..5e3f5c9b --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/classes/index.js @@ -0,0 +1,5 @@ +module.exports = { + SemVer: require('./semver.js'), + Range: require('./range.js'), + Comparator: require('./comparator.js'), +} diff --git a/node_modules/css-loader/node_modules/semver/classes/range.js b/node_modules/css-loader/node_modules/semver/classes/range.js new file mode 100644 index 00000000..7e7c4141 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/classes/range.js @@ -0,0 +1,539 @@ +// hoisted class for cyclic dependency +class Range { + constructor (range, options) { + options = parseOptions(options) + + if (range instanceof Range) { + if ( + range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease + ) { + return range + } else { + return new Range(range.raw, options) + } + } + + if (range instanceof Comparator) { + // just put it in the set and return + this.raw = range.value + this.set = [[range]] + this.format() + return this + } + + this.options = options + this.loose = !!options.loose + this.includePrerelease = !!options.includePrerelease + + // First reduce all whitespace as much as possible so we do not have to rely + // on potentially slow regexes like \s*. This is then stored and used for + // future error messages as well. + this.raw = range + .trim() + .split(/\s+/) + .join(' ') + + // First, split on || + this.set = this.raw + .split('||') + // map the range to a 2d array of comparators + .map(r => this.parseRange(r.trim())) + // throw out any comparator lists that are empty + // this generally means that it was not a valid range, which is allowed + // in loose mode, but will still throw if the WHOLE range is invalid. + .filter(c => c.length) + + if (!this.set.length) { + throw new TypeError(`Invalid SemVer Range: ${this.raw}`) + } + + // if we have any that are not the null set, throw out null sets. + if (this.set.length > 1) { + // keep the first one, in case they're all null sets + const first = this.set[0] + this.set = this.set.filter(c => !isNullSet(c[0])) + if (this.set.length === 0) { + this.set = [first] + } else if (this.set.length > 1) { + // if we have any that are *, then the range is just * + for (const c of this.set) { + if (c.length === 1 && isAny(c[0])) { + this.set = [c] + break + } + } + } + } + + this.format() + } + + format () { + this.range = this.set + .map((comps) => comps.join(' ').trim()) + .join('||') + .trim() + return this.range + } + + toString () { + return this.range + } + + parseRange (range) { + // memoize range parsing for performance. + // this is a very hot path, and fully deterministic. + const memoOpts = + (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | + (this.options.loose && FLAG_LOOSE) + const memoKey = memoOpts + ':' + range + const cached = cache.get(memoKey) + if (cached) { + return cached + } + + const loose = this.options.loose + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE] + range = range.replace(hr, hyphenReplace(this.options.includePrerelease)) + debug('hyphen replace', range) + + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace) + debug('comparator trim', range) + + // `~ 1.2.3` => `~1.2.3` + range = range.replace(re[t.TILDETRIM], tildeTrimReplace) + debug('tilde trim', range) + + // `^ 1.2.3` => `^1.2.3` + range = range.replace(re[t.CARETTRIM], caretTrimReplace) + debug('caret trim', range) + + // At this point, the range is completely trimmed and + // ready to be split into comparators. + + let rangeList = range + .split(' ') + .map(comp => parseComparator(comp, this.options)) + .join(' ') + .split(/\s+/) + // >=0.0.0 is equivalent to * + .map(comp => replaceGTE0(comp, this.options)) + + if (loose) { + // in loose mode, throw out any that are not valid comparators + rangeList = rangeList.filter(comp => { + debug('loose invalid filter', comp, this.options) + return !!comp.match(re[t.COMPARATORLOOSE]) + }) + } + debug('range list', rangeList) + + // if any comparators are the null set, then replace with JUST null set + // if more than one comparator, remove any * comparators + // also, don't include the same comparator more than once + const rangeMap = new Map() + const comparators = rangeList.map(comp => new Comparator(comp, this.options)) + for (const comp of comparators) { + if (isNullSet(comp)) { + return [comp] + } + rangeMap.set(comp.value, comp) + } + if (rangeMap.size > 1 && rangeMap.has('')) { + rangeMap.delete('') + } + + const result = [...rangeMap.values()] + cache.set(memoKey, result) + return result + } + + intersects (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } + + return this.set.some((thisComparators) => { + return ( + isSatisfiable(thisComparators, options) && + range.set.some((rangeComparators) => { + return ( + isSatisfiable(rangeComparators, options) && + thisComparators.every((thisComparator) => { + return rangeComparators.every((rangeComparator) => { + return thisComparator.intersects(rangeComparator, options) + }) + }) + ) + }) + ) + }) + } + + // if ANY of the sets match ALL of its comparators, then pass + test (version) { + if (!version) { + return false + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + for (let i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true + } + } + return false + } +} + +module.exports = Range + +const LRU = require('lru-cache') +const cache = new LRU({ max: 1000 }) + +const parseOptions = require('../internal/parse-options') +const Comparator = require('./comparator') +const debug = require('../internal/debug') +const SemVer = require('./semver') +const { + safeRe: re, + t, + comparatorTrimReplace, + tildeTrimReplace, + caretTrimReplace, +} = require('../internal/re') +const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants') + +const isNullSet = c => c.value === '<0.0.0-0' +const isAny = c => c.value === '' + +// take a set of comparators and determine whether there +// exists a version which can satisfy it +const isSatisfiable = (comparators, options) => { + let result = true + const remainingComparators = comparators.slice() + let testComparator = remainingComparators.pop() + + while (result && remainingComparators.length) { + result = remainingComparators.every((otherComparator) => { + return testComparator.intersects(otherComparator, options) + }) + + testComparator = remainingComparators.pop() + } + + return result +} + +// comprised of xranges, tildes, stars, and gtlt's at this point. +// already replaced the hyphen ranges +// turn into a set of JUST comparators. +const parseComparator = (comp, options) => { + debug('comp', comp, options) + comp = replaceCarets(comp, options) + debug('caret', comp) + comp = replaceTildes(comp, options) + debug('tildes', comp) + comp = replaceXRanges(comp, options) + debug('xrange', comp) + comp = replaceStars(comp, options) + debug('stars', comp) + return comp +} + +const isX = id => !id || id.toLowerCase() === 'x' || id === '*' + +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 +// ~0.0.1 --> >=0.0.1 <0.1.0-0 +const replaceTildes = (comp, options) => { + return comp + .trim() + .split(/\s+/) + .map((c) => replaceTilde(c, options)) + .join(' ') +} + +const replaceTilde = (comp, options) => { + const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE] + return comp.replace(r, (_, M, m, p, pr) => { + debug('tilde', comp, _, M, m, p, pr) + let ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = `>=${M}.0.0 <${+M + 1}.0.0-0` + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0-0 + ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0` + } else if (pr) { + debug('replaceTilde pr', pr) + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${+m + 1}.0-0` + } else { + // ~1.2.3 == >=1.2.3 <1.3.0-0 + ret = `>=${M}.${m}.${p + } <${M}.${+m + 1}.0-0` + } + + debug('tilde return', ret) + return ret + }) +} + +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 +// ^1.2.3 --> >=1.2.3 <2.0.0-0 +// ^1.2.0 --> >=1.2.0 <2.0.0-0 +// ^0.0.1 --> >=0.0.1 <0.0.2-0 +// ^0.1.0 --> >=0.1.0 <0.2.0-0 +const replaceCarets = (comp, options) => { + return comp + .trim() + .split(/\s+/) + .map((c) => replaceCaret(c, options)) + .join(' ') +} + +const replaceCaret = (comp, options) => { + debug('caret', comp, options) + const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET] + const z = options.includePrerelease ? '-0' : '' + return comp.replace(r, (_, M, m, p, pr) => { + debug('caret', comp, _, M, m, p, pr) + let ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0` + } else if (isX(p)) { + if (M === '0') { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0` + } else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0` + } + } else if (pr) { + debug('replaceCaret pr', pr) + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${m}.${+p + 1}-0` + } else { + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${+m + 1}.0-0` + } + } else { + ret = `>=${M}.${m}.${p}-${pr + } <${+M + 1}.0.0-0` + } + } else { + debug('no pr') + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p + }${z} <${M}.${m}.${+p + 1}-0` + } else { + ret = `>=${M}.${m}.${p + }${z} <${M}.${+m + 1}.0-0` + } + } else { + ret = `>=${M}.${m}.${p + } <${+M + 1}.0.0-0` + } + } + + debug('caret return', ret) + return ret + }) +} + +const replaceXRanges = (comp, options) => { + debug('replaceXRanges', comp, options) + return comp + .split(/\s+/) + .map((c) => replaceXRange(c, options)) + .join(' ') +} + +const replaceXRange = (comp, options) => { + comp = comp.trim() + const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE] + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + debug('xRange', comp, ret, gtlt, M, m, p, pr) + const xM = isX(M) + const xm = xM || isX(m) + const xp = xm || isX(p) + const anyX = xp + + if (gtlt === '=' && anyX) { + gtlt = '' + } + + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options.includePrerelease ? '-0' : '' + + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0' + } else { + // nothing is forbidden + ret = '*' + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0 + } + p = 0 + + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + gtlt = '>=' + if (xm) { + M = +M + 1 + m = 0 + p = 0 + } else { + m = +m + 1 + p = 0 + } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<' + if (xm) { + M = +M + 1 + } else { + m = +m + 1 + } + } + + if (gtlt === '<') { + pr = '-0' + } + + ret = `${gtlt + M}.${m}.${p}${pr}` + } else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0` + } else if (xp) { + ret = `>=${M}.${m}.0${pr + } <${M}.${+m + 1}.0-0` + } + + debug('xRange return', ret) + + return ret + }) +} + +// Because * is AND-ed with everything else in the comparator, +// and '' means "any version", just remove the *s entirely. +const replaceStars = (comp, options) => { + debug('replaceStars', comp, options) + // Looseness is ignored here. star is always as loose as it gets! + return comp + .trim() + .replace(re[t.STAR], '') +} + +const replaceGTE0 = (comp, options) => { + debug('replaceGTE0', comp, options) + return comp + .trim() + .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '') +} + +// This function is passed to string.replace(re[t.HYPHENRANGE]) +// M, m, patch, prerelease, build +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0-0 +const hyphenReplace = incPr => ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr, tb) => { + if (isX(fM)) { + from = '' + } else if (isX(fm)) { + from = `>=${fM}.0.0${incPr ? '-0' : ''}` + } else if (isX(fp)) { + from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}` + } else if (fpr) { + from = `>=${from}` + } else { + from = `>=${from}${incPr ? '-0' : ''}` + } + + if (isX(tM)) { + to = '' + } else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0` + } else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0` + } else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}` + } else if (incPr) { + to = `<${tM}.${tm}.${+tp + 1}-0` + } else { + to = `<=${to}` + } + + return `${from} ${to}`.trim() +} + +const testSet = (set, version, options) => { + for (let i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false + } + } + + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (let i = 0; i < set.length; i++) { + debug(set[i].semver) + if (set[i].semver === Comparator.ANY) { + continue + } + + if (set[i].semver.prerelease.length > 0) { + const allowed = set[i].semver + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) { + return true + } + } + } + + // Version has a -pre, but it's not one of the ones we like. + return false + } + + return true +} diff --git a/node_modules/css-loader/node_modules/semver/classes/semver.js b/node_modules/css-loader/node_modules/semver/classes/semver.js new file mode 100644 index 00000000..84e84590 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/classes/semver.js @@ -0,0 +1,302 @@ +const debug = require('../internal/debug') +const { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants') +const { safeRe: re, t } = require('../internal/re') + +const parseOptions = require('../internal/parse-options') +const { compareIdentifiers } = require('../internal/identifiers') +class SemVer { + constructor (version, options) { + options = parseOptions(options) + + if (version instanceof SemVer) { + if (version.loose === !!options.loose && + version.includePrerelease === !!options.includePrerelease) { + return version + } else { + version = version.version + } + } else if (typeof version !== 'string') { + throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`) + } + + if (version.length > MAX_LENGTH) { + throw new TypeError( + `version is longer than ${MAX_LENGTH} characters` + ) + } + + debug('SemVer', version, options) + this.options = options + this.loose = !!options.loose + // this isn't actually relevant for versions, but keep it so that we + // don't run into trouble passing this.options around. + this.includePrerelease = !!options.includePrerelease + + const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]) + + if (!m) { + throw new TypeError(`Invalid Version: ${version}`) + } + + this.raw = version + + // these are actually numbers + this.major = +m[1] + this.minor = +m[2] + this.patch = +m[3] + + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } + + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } + + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } + + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = [] + } else { + this.prerelease = m[4].split('.').map((id) => { + if (/^[0-9]+$/.test(id)) { + const num = +id + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } + } + return id + }) + } + + this.build = m[5] ? m[5].split('.') : [] + this.format() + } + + format () { + this.version = `${this.major}.${this.minor}.${this.patch}` + if (this.prerelease.length) { + this.version += `-${this.prerelease.join('.')}` + } + return this.version + } + + toString () { + return this.version + } + + compare (other) { + debug('SemVer.compare', this.version, this.options, other) + if (!(other instanceof SemVer)) { + if (typeof other === 'string' && other === this.version) { + return 0 + } + other = new SemVer(other, this.options) + } + + if (other.version === this.version) { + return 0 + } + + return this.compareMain(other) || this.comparePre(other) + } + + compareMain (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return ( + compareIdentifiers(this.major, other.major) || + compareIdentifiers(this.minor, other.minor) || + compareIdentifiers(this.patch, other.patch) + ) + } + + comparePre (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 + } + + let i = 0 + do { + const a = this.prerelease[i] + const b = other.prerelease[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) + } + + compareBuild (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + let i = 0 + do { + const a = this.build[i] + const b = other.build[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) + } + + // preminor will bump the version up to the next minor release, and immediately + // down to pre-release. premajor and prepatch work the same way. + inc (release, identifier, identifierBase) { + switch (release) { + case 'premajor': + this.prerelease.length = 0 + this.patch = 0 + this.minor = 0 + this.major++ + this.inc('pre', identifier, identifierBase) + break + case 'preminor': + this.prerelease.length = 0 + this.patch = 0 + this.minor++ + this.inc('pre', identifier, identifierBase) + break + case 'prepatch': + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0 + this.inc('patch', identifier, identifierBase) + this.inc('pre', identifier, identifierBase) + break + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case 'prerelease': + if (this.prerelease.length === 0) { + this.inc('patch', identifier, identifierBase) + } + this.inc('pre', identifier, identifierBase) + break + + case 'major': + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if ( + this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0 + ) { + this.major++ + } + this.minor = 0 + this.patch = 0 + this.prerelease = [] + break + case 'minor': + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++ + } + this.patch = 0 + this.prerelease = [] + break + case 'patch': + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++ + } + this.prerelease = [] + break + // This probably shouldn't be used publicly. + // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. + case 'pre': { + const base = Number(identifierBase) ? 1 : 0 + + if (!identifier && identifierBase === false) { + throw new Error('invalid increment argument: identifier is empty') + } + + if (this.prerelease.length === 0) { + this.prerelease = [base] + } else { + let i = this.prerelease.length + while (--i >= 0) { + if (typeof this.prerelease[i] === 'number') { + this.prerelease[i]++ + i = -2 + } + } + if (i === -1) { + // didn't increment anything + if (identifier === this.prerelease.join('.') && identifierBase === false) { + throw new Error('invalid increment argument: identifier already exists') + } + this.prerelease.push(base) + } + } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + let prerelease = [identifier, base] + if (identifierBase === false) { + prerelease = [identifier] + } + if (compareIdentifiers(this.prerelease[0], identifier) === 0) { + if (isNaN(this.prerelease[1])) { + this.prerelease = prerelease + } + } else { + this.prerelease = prerelease + } + } + break + } + default: + throw new Error(`invalid increment argument: ${release}`) + } + this.raw = this.format() + if (this.build.length) { + this.raw += `+${this.build.join('.')}` + } + return this + } +} + +module.exports = SemVer diff --git a/node_modules/css-loader/node_modules/semver/functions/clean.js b/node_modules/css-loader/node_modules/semver/functions/clean.js new file mode 100644 index 00000000..811fe6b8 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/clean.js @@ -0,0 +1,6 @@ +const parse = require('./parse') +const clean = (version, options) => { + const s = parse(version.trim().replace(/^[=v]+/, ''), options) + return s ? s.version : null +} +module.exports = clean diff --git a/node_modules/css-loader/node_modules/semver/functions/cmp.js b/node_modules/css-loader/node_modules/semver/functions/cmp.js new file mode 100644 index 00000000..40119094 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/cmp.js @@ -0,0 +1,52 @@ +const eq = require('./eq') +const neq = require('./neq') +const gt = require('./gt') +const gte = require('./gte') +const lt = require('./lt') +const lte = require('./lte') + +const cmp = (a, op, b, loose) => { + switch (op) { + case '===': + if (typeof a === 'object') { + a = a.version + } + if (typeof b === 'object') { + b = b.version + } + return a === b + + case '!==': + if (typeof a === 'object') { + a = a.version + } + if (typeof b === 'object') { + b = b.version + } + return a !== b + + case '': + case '=': + case '==': + return eq(a, b, loose) + + case '!=': + return neq(a, b, loose) + + case '>': + return gt(a, b, loose) + + case '>=': + return gte(a, b, loose) + + case '<': + return lt(a, b, loose) + + case '<=': + return lte(a, b, loose) + + default: + throw new TypeError(`Invalid operator: ${op}`) + } +} +module.exports = cmp diff --git a/node_modules/css-loader/node_modules/semver/functions/coerce.js b/node_modules/css-loader/node_modules/semver/functions/coerce.js new file mode 100644 index 00000000..febbff9c --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/coerce.js @@ -0,0 +1,52 @@ +const SemVer = require('../classes/semver') +const parse = require('./parse') +const { safeRe: re, t } = require('../internal/re') + +const coerce = (version, options) => { + if (version instanceof SemVer) { + return version + } + + if (typeof version === 'number') { + version = String(version) + } + + if (typeof version !== 'string') { + return null + } + + options = options || {} + + let match = null + if (!options.rtl) { + match = version.match(re[t.COERCE]) + } else { + // Find the right-most coercible string that does not share + // a terminus with a more left-ward coercible string. + // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' + // + // Walk through the string checking with a /g regexp + // Manually set the index so as to pick up overlapping matches. + // Stop when we get a match that ends at the string end, since no + // coercible string can be more right-ward without the same terminus. + let next + while ((next = re[t.COERCERTL].exec(version)) && + (!match || match.index + match[0].length !== version.length) + ) { + if (!match || + next.index + next[0].length !== match.index + match[0].length) { + match = next + } + re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length + } + // leave it in a clean state + re[t.COERCERTL].lastIndex = -1 + } + + if (match === null) { + return null + } + + return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options) +} +module.exports = coerce diff --git a/node_modules/css-loader/node_modules/semver/functions/compare-build.js b/node_modules/css-loader/node_modules/semver/functions/compare-build.js new file mode 100644 index 00000000..9eb881be --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/compare-build.js @@ -0,0 +1,7 @@ +const SemVer = require('../classes/semver') +const compareBuild = (a, b, loose) => { + const versionA = new SemVer(a, loose) + const versionB = new SemVer(b, loose) + return versionA.compare(versionB) || versionA.compareBuild(versionB) +} +module.exports = compareBuild diff --git a/node_modules/css-loader/node_modules/semver/functions/compare-loose.js b/node_modules/css-loader/node_modules/semver/functions/compare-loose.js new file mode 100644 index 00000000..4881fbe0 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/compare-loose.js @@ -0,0 +1,3 @@ +const compare = require('./compare') +const compareLoose = (a, b) => compare(a, b, true) +module.exports = compareLoose diff --git a/node_modules/css-loader/node_modules/semver/functions/compare.js b/node_modules/css-loader/node_modules/semver/functions/compare.js new file mode 100644 index 00000000..748b7afa --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/compare.js @@ -0,0 +1,5 @@ +const SemVer = require('../classes/semver') +const compare = (a, b, loose) => + new SemVer(a, loose).compare(new SemVer(b, loose)) + +module.exports = compare diff --git a/node_modules/css-loader/node_modules/semver/functions/diff.js b/node_modules/css-loader/node_modules/semver/functions/diff.js new file mode 100644 index 00000000..fc224e30 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/diff.js @@ -0,0 +1,65 @@ +const parse = require('./parse.js') + +const diff = (version1, version2) => { + const v1 = parse(version1, null, true) + const v2 = parse(version2, null, true) + const comparison = v1.compare(v2) + + if (comparison === 0) { + return null + } + + const v1Higher = comparison > 0 + const highVersion = v1Higher ? v1 : v2 + const lowVersion = v1Higher ? v2 : v1 + const highHasPre = !!highVersion.prerelease.length + const lowHasPre = !!lowVersion.prerelease.length + + if (lowHasPre && !highHasPre) { + // Going from prerelease -> no prerelease requires some special casing + + // If the low version has only a major, then it will always be a major + // Some examples: + // 1.0.0-1 -> 1.0.0 + // 1.0.0-1 -> 1.1.1 + // 1.0.0-1 -> 2.0.0 + if (!lowVersion.patch && !lowVersion.minor) { + return 'major' + } + + // Otherwise it can be determined by checking the high version + + if (highVersion.patch) { + // anything higher than a patch bump would result in the wrong version + return 'patch' + } + + if (highVersion.minor) { + // anything higher than a minor bump would result in the wrong version + return 'minor' + } + + // bumping major/minor/patch all have same result + return 'major' + } + + // add the `pre` prefix if we are going to a prerelease version + const prefix = highHasPre ? 'pre' : '' + + if (v1.major !== v2.major) { + return prefix + 'major' + } + + if (v1.minor !== v2.minor) { + return prefix + 'minor' + } + + if (v1.patch !== v2.patch) { + return prefix + 'patch' + } + + // high and low are preleases + return 'prerelease' +} + +module.exports = diff diff --git a/node_modules/css-loader/node_modules/semver/functions/eq.js b/node_modules/css-loader/node_modules/semver/functions/eq.js new file mode 100644 index 00000000..271fed97 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/eq.js @@ -0,0 +1,3 @@ +const compare = require('./compare') +const eq = (a, b, loose) => compare(a, b, loose) === 0 +module.exports = eq diff --git a/node_modules/css-loader/node_modules/semver/functions/gt.js b/node_modules/css-loader/node_modules/semver/functions/gt.js new file mode 100644 index 00000000..d9b2156d --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/gt.js @@ -0,0 +1,3 @@ +const compare = require('./compare') +const gt = (a, b, loose) => compare(a, b, loose) > 0 +module.exports = gt diff --git a/node_modules/css-loader/node_modules/semver/functions/gte.js b/node_modules/css-loader/node_modules/semver/functions/gte.js new file mode 100644 index 00000000..5aeaa634 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/gte.js @@ -0,0 +1,3 @@ +const compare = require('./compare') +const gte = (a, b, loose) => compare(a, b, loose) >= 0 +module.exports = gte diff --git a/node_modules/css-loader/node_modules/semver/functions/inc.js b/node_modules/css-loader/node_modules/semver/functions/inc.js new file mode 100644 index 00000000..7670b1be --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/inc.js @@ -0,0 +1,19 @@ +const SemVer = require('../classes/semver') + +const inc = (version, release, options, identifier, identifierBase) => { + if (typeof (options) === 'string') { + identifierBase = identifier + identifier = options + options = undefined + } + + try { + return new SemVer( + version instanceof SemVer ? version.version : version, + options + ).inc(release, identifier, identifierBase).version + } catch (er) { + return null + } +} +module.exports = inc diff --git a/node_modules/css-loader/node_modules/semver/functions/lt.js b/node_modules/css-loader/node_modules/semver/functions/lt.js new file mode 100644 index 00000000..b440ab7d --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/lt.js @@ -0,0 +1,3 @@ +const compare = require('./compare') +const lt = (a, b, loose) => compare(a, b, loose) < 0 +module.exports = lt diff --git a/node_modules/css-loader/node_modules/semver/functions/lte.js b/node_modules/css-loader/node_modules/semver/functions/lte.js new file mode 100644 index 00000000..6dcc9565 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/lte.js @@ -0,0 +1,3 @@ +const compare = require('./compare') +const lte = (a, b, loose) => compare(a, b, loose) <= 0 +module.exports = lte diff --git a/node_modules/css-loader/node_modules/semver/functions/major.js b/node_modules/css-loader/node_modules/semver/functions/major.js new file mode 100644 index 00000000..4283165e --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/major.js @@ -0,0 +1,3 @@ +const SemVer = require('../classes/semver') +const major = (a, loose) => new SemVer(a, loose).major +module.exports = major diff --git a/node_modules/css-loader/node_modules/semver/functions/minor.js b/node_modules/css-loader/node_modules/semver/functions/minor.js new file mode 100644 index 00000000..57b3455f --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/minor.js @@ -0,0 +1,3 @@ +const SemVer = require('../classes/semver') +const minor = (a, loose) => new SemVer(a, loose).minor +module.exports = minor diff --git a/node_modules/css-loader/node_modules/semver/functions/neq.js b/node_modules/css-loader/node_modules/semver/functions/neq.js new file mode 100644 index 00000000..f944c015 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/neq.js @@ -0,0 +1,3 @@ +const compare = require('./compare') +const neq = (a, b, loose) => compare(a, b, loose) !== 0 +module.exports = neq diff --git a/node_modules/css-loader/node_modules/semver/functions/parse.js b/node_modules/css-loader/node_modules/semver/functions/parse.js new file mode 100644 index 00000000..459b3b17 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/parse.js @@ -0,0 +1,16 @@ +const SemVer = require('../classes/semver') +const parse = (version, options, throwErrors = false) => { + if (version instanceof SemVer) { + return version + } + try { + return new SemVer(version, options) + } catch (er) { + if (!throwErrors) { + return null + } + throw er + } +} + +module.exports = parse diff --git a/node_modules/css-loader/node_modules/semver/functions/patch.js b/node_modules/css-loader/node_modules/semver/functions/patch.js new file mode 100644 index 00000000..63afca25 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/patch.js @@ -0,0 +1,3 @@ +const SemVer = require('../classes/semver') +const patch = (a, loose) => new SemVer(a, loose).patch +module.exports = patch diff --git a/node_modules/css-loader/node_modules/semver/functions/prerelease.js b/node_modules/css-loader/node_modules/semver/functions/prerelease.js new file mode 100644 index 00000000..06aa1324 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/prerelease.js @@ -0,0 +1,6 @@ +const parse = require('./parse') +const prerelease = (version, options) => { + const parsed = parse(version, options) + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null +} +module.exports = prerelease diff --git a/node_modules/css-loader/node_modules/semver/functions/rcompare.js b/node_modules/css-loader/node_modules/semver/functions/rcompare.js new file mode 100644 index 00000000..0ac509e7 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/rcompare.js @@ -0,0 +1,3 @@ +const compare = require('./compare') +const rcompare = (a, b, loose) => compare(b, a, loose) +module.exports = rcompare diff --git a/node_modules/css-loader/node_modules/semver/functions/rsort.js b/node_modules/css-loader/node_modules/semver/functions/rsort.js new file mode 100644 index 00000000..82404c5c --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/rsort.js @@ -0,0 +1,3 @@ +const compareBuild = require('./compare-build') +const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)) +module.exports = rsort diff --git a/node_modules/css-loader/node_modules/semver/functions/satisfies.js b/node_modules/css-loader/node_modules/semver/functions/satisfies.js new file mode 100644 index 00000000..50af1c19 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/satisfies.js @@ -0,0 +1,10 @@ +const Range = require('../classes/range') +const satisfies = (version, range, options) => { + try { + range = new Range(range, options) + } catch (er) { + return false + } + return range.test(version) +} +module.exports = satisfies diff --git a/node_modules/css-loader/node_modules/semver/functions/sort.js b/node_modules/css-loader/node_modules/semver/functions/sort.js new file mode 100644 index 00000000..4d10917a --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/sort.js @@ -0,0 +1,3 @@ +const compareBuild = require('./compare-build') +const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)) +module.exports = sort diff --git a/node_modules/css-loader/node_modules/semver/functions/valid.js b/node_modules/css-loader/node_modules/semver/functions/valid.js new file mode 100644 index 00000000..f27bae10 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/functions/valid.js @@ -0,0 +1,6 @@ +const parse = require('./parse') +const valid = (version, options) => { + const v = parse(version, options) + return v ? v.version : null +} +module.exports = valid diff --git a/node_modules/css-loader/node_modules/semver/index.js b/node_modules/css-loader/node_modules/semver/index.js new file mode 100644 index 00000000..86d42ac1 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/index.js @@ -0,0 +1,89 @@ +// just pre-load all the stuff that index.js lazily exports +const internalRe = require('./internal/re') +const constants = require('./internal/constants') +const SemVer = require('./classes/semver') +const identifiers = require('./internal/identifiers') +const parse = require('./functions/parse') +const valid = require('./functions/valid') +const clean = require('./functions/clean') +const inc = require('./functions/inc') +const diff = require('./functions/diff') +const major = require('./functions/major') +const minor = require('./functions/minor') +const patch = require('./functions/patch') +const prerelease = require('./functions/prerelease') +const compare = require('./functions/compare') +const rcompare = require('./functions/rcompare') +const compareLoose = require('./functions/compare-loose') +const compareBuild = require('./functions/compare-build') +const sort = require('./functions/sort') +const rsort = require('./functions/rsort') +const gt = require('./functions/gt') +const lt = require('./functions/lt') +const eq = require('./functions/eq') +const neq = require('./functions/neq') +const gte = require('./functions/gte') +const lte = require('./functions/lte') +const cmp = require('./functions/cmp') +const coerce = require('./functions/coerce') +const Comparator = require('./classes/comparator') +const Range = require('./classes/range') +const satisfies = require('./functions/satisfies') +const toComparators = require('./ranges/to-comparators') +const maxSatisfying = require('./ranges/max-satisfying') +const minSatisfying = require('./ranges/min-satisfying') +const minVersion = require('./ranges/min-version') +const validRange = require('./ranges/valid') +const outside = require('./ranges/outside') +const gtr = require('./ranges/gtr') +const ltr = require('./ranges/ltr') +const intersects = require('./ranges/intersects') +const simplifyRange = require('./ranges/simplify') +const subset = require('./ranges/subset') +module.exports = { + parse, + valid, + clean, + inc, + diff, + major, + minor, + patch, + prerelease, + compare, + rcompare, + compareLoose, + compareBuild, + sort, + rsort, + gt, + lt, + eq, + neq, + gte, + lte, + cmp, + coerce, + Comparator, + Range, + satisfies, + toComparators, + maxSatisfying, + minSatisfying, + minVersion, + validRange, + outside, + gtr, + ltr, + intersects, + simplifyRange, + subset, + SemVer, + re: internalRe.re, + src: internalRe.src, + tokens: internalRe.t, + SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, + RELEASE_TYPES: constants.RELEASE_TYPES, + compareIdentifiers: identifiers.compareIdentifiers, + rcompareIdentifiers: identifiers.rcompareIdentifiers, +} diff --git a/node_modules/css-loader/node_modules/semver/internal/constants.js b/node_modules/css-loader/node_modules/semver/internal/constants.js new file mode 100644 index 00000000..94be1c57 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/internal/constants.js @@ -0,0 +1,35 @@ +// Note: this is the semver.org version of the spec that it implements +// Not necessarily the package version of this code. +const SEMVER_SPEC_VERSION = '2.0.0' + +const MAX_LENGTH = 256 +const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || +/* istanbul ignore next */ 9007199254740991 + +// Max safe segment length for coercion. +const MAX_SAFE_COMPONENT_LENGTH = 16 + +// Max safe length for a build identifier. The max length minus 6 characters for +// the shortest version with a build 0.0.0+BUILD. +const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6 + +const RELEASE_TYPES = [ + 'major', + 'premajor', + 'minor', + 'preminor', + 'patch', + 'prepatch', + 'prerelease', +] + +module.exports = { + MAX_LENGTH, + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_SAFE_INTEGER, + RELEASE_TYPES, + SEMVER_SPEC_VERSION, + FLAG_INCLUDE_PRERELEASE: 0b001, + FLAG_LOOSE: 0b010, +} diff --git a/node_modules/css-loader/node_modules/semver/internal/debug.js b/node_modules/css-loader/node_modules/semver/internal/debug.js new file mode 100644 index 00000000..1c00e136 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/internal/debug.js @@ -0,0 +1,9 @@ +const debug = ( + typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG) +) ? (...args) => console.error('SEMVER', ...args) + : () => {} + +module.exports = debug diff --git a/node_modules/css-loader/node_modules/semver/internal/identifiers.js b/node_modules/css-loader/node_modules/semver/internal/identifiers.js new file mode 100644 index 00000000..e612d0a3 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/internal/identifiers.js @@ -0,0 +1,23 @@ +const numeric = /^[0-9]+$/ +const compareIdentifiers = (a, b) => { + const anum = numeric.test(a) + const bnum = numeric.test(b) + + if (anum && bnum) { + a = +a + b = +b + } + + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 +} + +const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a) + +module.exports = { + compareIdentifiers, + rcompareIdentifiers, +} diff --git a/node_modules/css-loader/node_modules/semver/internal/parse-options.js b/node_modules/css-loader/node_modules/semver/internal/parse-options.js new file mode 100644 index 00000000..10d64ce0 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/internal/parse-options.js @@ -0,0 +1,15 @@ +// parse out just the options we care about +const looseOption = Object.freeze({ loose: true }) +const emptyOpts = Object.freeze({ }) +const parseOptions = options => { + if (!options) { + return emptyOpts + } + + if (typeof options !== 'object') { + return looseOption + } + + return options +} +module.exports = parseOptions diff --git a/node_modules/css-loader/node_modules/semver/internal/re.js b/node_modules/css-loader/node_modules/semver/internal/re.js new file mode 100644 index 00000000..21150b3e --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/internal/re.js @@ -0,0 +1,212 @@ +const { + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_LENGTH, +} = require('./constants') +const debug = require('./debug') +exports = module.exports = {} + +// The actual regexps go on exports.re +const re = exports.re = [] +const safeRe = exports.safeRe = [] +const src = exports.src = [] +const t = exports.t = {} +let R = 0 + +const LETTERDASHNUMBER = '[a-zA-Z0-9-]' + +// Replace some greedy regex tokens to prevent regex dos issues. These regex are +// used internally via the safeRe object since all inputs in this library get +// normalized first to trim and collapse all extra whitespace. The original +// regexes are exported for userland consumption and lower level usage. A +// future breaking change could export the safer regex only with a note that +// all input should have extra whitespace removed. +const safeRegexReplacements = [ + ['\\s', 1], + ['\\d', MAX_LENGTH], + [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH], +] + +const makeSafeRegex = (value) => { + for (const [token, max] of safeRegexReplacements) { + value = value + .split(`${token}*`).join(`${token}{0,${max}}`) + .split(`${token}+`).join(`${token}{1,${max}}`) + } + return value +} + +const createToken = (name, value, isGlobal) => { + const safe = makeSafeRegex(value) + const index = R++ + debug(name, index, value) + t[name] = index + src[index] = value + re[index] = new RegExp(value, isGlobal ? 'g' : undefined) + safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined) +} + +// The following Regular Expressions can be used for tokenizing, +// validating, and parsing SemVer version strings. + +// ## Numeric Identifier +// A single `0`, or a non-zero digit followed by zero or more digits. + +createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*') +createToken('NUMERICIDENTIFIERLOOSE', '\\d+') + +// ## Non-numeric Identifier +// Zero or more digits, followed by a letter or hyphen, and then zero or +// more letters, digits, or hyphens. + +createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`) + +// ## Main Version +// Three dot-separated numeric identifiers. + +createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` + + `(${src[t.NUMERICIDENTIFIER]})\\.` + + `(${src[t.NUMERICIDENTIFIER]})`) + +createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + + `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + + `(${src[t.NUMERICIDENTIFIERLOOSE]})`) + +// ## Pre-release Version Identifier +// A numeric identifier, or a non-numeric identifier. + +createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER] +}|${src[t.NONNUMERICIDENTIFIER]})`) + +createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE] +}|${src[t.NONNUMERICIDENTIFIER]})`) + +// ## Pre-release Version +// Hyphen, followed by one or more dot-separated pre-release version +// identifiers. + +createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER] +}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`) + +createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE] +}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`) + +// ## Build Metadata Identifier +// Any combination of digits, letters, or hyphens. + +createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`) + +// ## Build Metadata +// Plus sign, followed by one or more period-separated build metadata +// identifiers. + +createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER] +}(?:\\.${src[t.BUILDIDENTIFIER]})*))`) + +// ## Full Version String +// A main version, followed optionally by a pre-release version and +// build metadata. + +// Note that the only major, minor, patch, and pre-release sections of +// the version string are capturing groups. The build metadata is not a +// capturing group, because it should not ever be used in version +// comparison. + +createToken('FULLPLAIN', `v?${src[t.MAINVERSION] +}${src[t.PRERELEASE]}?${ + src[t.BUILD]}?`) + +createToken('FULL', `^${src[t.FULLPLAIN]}$`) + +// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. +// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty +// common in the npm registry. +createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE] +}${src[t.PRERELEASELOOSE]}?${ + src[t.BUILD]}?`) + +createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`) + +createToken('GTLT', '((?:<|>)?=?)') + +// Something like "2.*" or "1.2.x". +// Note that "x.x" is a valid xRange identifer, meaning "any version" +// Only the first item is strictly required. +createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`) +createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`) + +createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + + `(?:${src[t.PRERELEASE]})?${ + src[t.BUILD]}?` + + `)?)?`) + +createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:${src[t.PRERELEASELOOSE]})?${ + src[t.BUILD]}?` + + `)?)?`) + +createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`) +createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`) + +// Coercion. +// Extract anything that could conceivably be a part of a valid semver +createToken('COERCE', `${'(^|[^\\d])' + + '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + + `(?:$|[^\\d])`) +createToken('COERCERTL', src[t.COERCE], true) + +// Tilde ranges. +// Meaning is "reasonably at or greater than" +createToken('LONETILDE', '(?:~>?)') + +createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true) +exports.tildeTrimReplace = '$1~' + +createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`) +createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`) + +// Caret ranges. +// Meaning is "at least and backwards compatible with" +createToken('LONECARET', '(?:\\^)') + +createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true) +exports.caretTrimReplace = '$1^' + +createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`) +createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`) + +// A simple gt/lt/eq thing, or just "" to indicate "any version" +createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`) +createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`) + +// An expression to strip any whitespace between the gtlt and the thing +// it modifies, so that `> 1.2.3` ==> `>1.2.3` +createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT] +}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true) +exports.comparatorTrimReplace = '$1$2$3' + +// Something like `1.2.3 - 1.2.4` +// Note that these all use the loose form, because they'll be +// checked against either the strict or loose comparator form +// later. +createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` + + `\\s+-\\s+` + + `(${src[t.XRANGEPLAIN]})` + + `\\s*$`) + +createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + + `\\s+-\\s+` + + `(${src[t.XRANGEPLAINLOOSE]})` + + `\\s*$`) + +// Star ranges basically just allow anything at all. +createToken('STAR', '(<|>)?=?\\s*\\*') +// >=0.0.0 is like a star +createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$') +createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$') diff --git a/node_modules/css-loader/node_modules/semver/package.json b/node_modules/css-loader/node_modules/semver/package.json new file mode 100644 index 00000000..c145eca2 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/package.json @@ -0,0 +1,87 @@ +{ + "name": "semver", + "version": "7.5.4", + "description": "The semantic version parser used by npm.", + "main": "index.js", + "scripts": { + "test": "tap", + "snap": "tap", + "lint": "eslint \"**/*.js\"", + "postlint": "template-oss-check", + "lintfix": "npm run lint -- --fix", + "posttest": "npm run lint", + "template-oss-apply": "template-oss-apply --force" + }, + "devDependencies": { + "@npmcli/eslint-config": "^4.0.0", + "@npmcli/template-oss": "4.17.0", + "tap": "^16.0.0" + }, + "license": "ISC", + "repository": { + "type": "git", + "url": "https://github.com/npm/node-semver.git" + }, + "bin": { + "semver": "bin/semver.js" + }, + "files": [ + "bin/", + "lib/", + "classes/", + "functions/", + "internal/", + "ranges/", + "index.js", + "preload.js", + "range.bnf" + ], + "tap": { + "timeout": 30, + "coverage-map": "map.js", + "nyc-arg": [ + "--exclude", + "tap-snapshots/**" + ] + }, + "engines": { + "node": ">=10" + }, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "author": "GitHub Inc.", + "templateOSS": { + "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", + "version": "4.17.0", + "engines": ">=10", + "ciVersions": [ + "10.0.0", + "10.x", + "12.x", + "14.x", + "16.x", + "18.x" + ], + "npmSpec": "8", + "distPaths": [ + "classes/", + "functions/", + "internal/", + "ranges/", + "index.js", + "preload.js", + "range.bnf" + ], + "allowPaths": [ + "/classes/", + "/functions/", + "/internal/", + "/ranges/", + "/index.js", + "/preload.js", + "/range.bnf" + ], + "publish": "true" + } +} diff --git a/node_modules/css-loader/node_modules/semver/preload.js b/node_modules/css-loader/node_modules/semver/preload.js new file mode 100644 index 00000000..947cd4f7 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/preload.js @@ -0,0 +1,2 @@ +// XXX remove in v8 or beyond +module.exports = require('./index.js') diff --git a/node_modules/css-loader/node_modules/semver/range.bnf b/node_modules/css-loader/node_modules/semver/range.bnf new file mode 100644 index 00000000..d4c6ae0d --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/range.bnf @@ -0,0 +1,16 @@ +range-set ::= range ( logical-or range ) * +logical-or ::= ( ' ' ) * '||' ( ' ' ) * +range ::= hyphen | simple ( ' ' simple ) * | '' +hyphen ::= partial ' - ' partial +simple ::= primitive | partial | tilde | caret +primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial +partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? +xr ::= 'x' | 'X' | '*' | nr +nr ::= '0' | [1-9] ( [0-9] ) * +tilde ::= '~' partial +caret ::= '^' partial +qualifier ::= ( '-' pre )? ( '+' build )? +pre ::= parts +build ::= parts +parts ::= part ( '.' part ) * +part ::= nr | [-0-9A-Za-z]+ diff --git a/node_modules/css-loader/node_modules/semver/ranges/gtr.js b/node_modules/css-loader/node_modules/semver/ranges/gtr.js new file mode 100644 index 00000000..db7e3559 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/ranges/gtr.js @@ -0,0 +1,4 @@ +// Determine if version is greater than all the versions possible in the range. +const outside = require('./outside') +const gtr = (version, range, options) => outside(version, range, '>', options) +module.exports = gtr diff --git a/node_modules/css-loader/node_modules/semver/ranges/intersects.js b/node_modules/css-loader/node_modules/semver/ranges/intersects.js new file mode 100644 index 00000000..e0e9b7ce --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/ranges/intersects.js @@ -0,0 +1,7 @@ +const Range = require('../classes/range') +const intersects = (r1, r2, options) => { + r1 = new Range(r1, options) + r2 = new Range(r2, options) + return r1.intersects(r2, options) +} +module.exports = intersects diff --git a/node_modules/css-loader/node_modules/semver/ranges/ltr.js b/node_modules/css-loader/node_modules/semver/ranges/ltr.js new file mode 100644 index 00000000..528a885e --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/ranges/ltr.js @@ -0,0 +1,4 @@ +const outside = require('./outside') +// Determine if version is less than all the versions possible in the range +const ltr = (version, range, options) => outside(version, range, '<', options) +module.exports = ltr diff --git a/node_modules/css-loader/node_modules/semver/ranges/max-satisfying.js b/node_modules/css-loader/node_modules/semver/ranges/max-satisfying.js new file mode 100644 index 00000000..6e3d993c --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/ranges/max-satisfying.js @@ -0,0 +1,25 @@ +const SemVer = require('../classes/semver') +const Range = require('../classes/range') + +const maxSatisfying = (versions, range, options) => { + let max = null + let maxSV = null + let rangeObj = null + try { + rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v + maxSV = new SemVer(max, options) + } + } + }) + return max +} +module.exports = maxSatisfying diff --git a/node_modules/css-loader/node_modules/semver/ranges/min-satisfying.js b/node_modules/css-loader/node_modules/semver/ranges/min-satisfying.js new file mode 100644 index 00000000..9b60974e --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/ranges/min-satisfying.js @@ -0,0 +1,24 @@ +const SemVer = require('../classes/semver') +const Range = require('../classes/range') +const minSatisfying = (versions, range, options) => { + let min = null + let minSV = null + let rangeObj = null + try { + rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v + minSV = new SemVer(min, options) + } + } + }) + return min +} +module.exports = minSatisfying diff --git a/node_modules/css-loader/node_modules/semver/ranges/min-version.js b/node_modules/css-loader/node_modules/semver/ranges/min-version.js new file mode 100644 index 00000000..350e1f78 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/ranges/min-version.js @@ -0,0 +1,61 @@ +const SemVer = require('../classes/semver') +const Range = require('../classes/range') +const gt = require('../functions/gt') + +const minVersion = (range, loose) => { + range = new Range(range, loose) + + let minver = new SemVer('0.0.0') + if (range.test(minver)) { + return minver + } + + minver = new SemVer('0.0.0-0') + if (range.test(minver)) { + return minver + } + + minver = null + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i] + + let setMin = null + comparators.forEach((comparator) => { + // Clone to avoid manipulating the comparator's semver object. + const compver = new SemVer(comparator.semver.version) + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++ + } else { + compver.prerelease.push(0) + } + compver.raw = compver.format() + /* fallthrough */ + case '': + case '>=': + if (!setMin || gt(compver, setMin)) { + setMin = compver + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error(`Unexpected operation: ${comparator.operator}`) + } + }) + if (setMin && (!minver || gt(minver, setMin))) { + minver = setMin + } + } + + if (minver && range.test(minver)) { + return minver + } + + return null +} +module.exports = minVersion diff --git a/node_modules/css-loader/node_modules/semver/ranges/outside.js b/node_modules/css-loader/node_modules/semver/ranges/outside.js new file mode 100644 index 00000000..ae99b10a --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/ranges/outside.js @@ -0,0 +1,80 @@ +const SemVer = require('../classes/semver') +const Comparator = require('../classes/comparator') +const { ANY } = Comparator +const Range = require('../classes/range') +const satisfies = require('../functions/satisfies') +const gt = require('../functions/gt') +const lt = require('../functions/lt') +const lte = require('../functions/lte') +const gte = require('../functions/gte') + +const outside = (version, range, hilo, options) => { + version = new SemVer(version, options) + range = new Range(range, options) + + let gtfn, ltefn, ltfn, comp, ecomp + switch (hilo) { + case '>': + gtfn = gt + ltefn = lte + ltfn = lt + comp = '>' + ecomp = '>=' + break + case '<': + gtfn = lt + ltefn = gte + ltfn = gt + comp = '<' + ecomp = '<=' + break + default: + throw new TypeError('Must provide a hilo val of "<" or ">"') + } + + // If it satisfies the range it is not outside + if (satisfies(version, range, options)) { + return false + } + + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. + + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i] + + let high = null + let low = null + + comparators.forEach((comparator) => { + if (comparator.semver === ANY) { + comparator = new Comparator('>=0.0.0') + } + high = high || comparator + low = low || comparator + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator + } + }) + + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false + } + + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ((!low.operator || low.operator === comp) && + ltefn(version, low.semver)) { + return false + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false + } + } + return true +} + +module.exports = outside diff --git a/node_modules/css-loader/node_modules/semver/ranges/simplify.js b/node_modules/css-loader/node_modules/semver/ranges/simplify.js new file mode 100644 index 00000000..618d5b62 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/ranges/simplify.js @@ -0,0 +1,47 @@ +// given a set of versions and a range, create a "simplified" range +// that includes the same versions that the original range does +// If the original range is shorter than the simplified one, return that. +const satisfies = require('../functions/satisfies.js') +const compare = require('../functions/compare.js') +module.exports = (versions, range, options) => { + const set = [] + let first = null + let prev = null + const v = versions.sort((a, b) => compare(a, b, options)) + for (const version of v) { + const included = satisfies(version, range, options) + if (included) { + prev = version + if (!first) { + first = version + } + } else { + if (prev) { + set.push([first, prev]) + } + prev = null + first = null + } + } + if (first) { + set.push([first, null]) + } + + const ranges = [] + for (const [min, max] of set) { + if (min === max) { + ranges.push(min) + } else if (!max && min === v[0]) { + ranges.push('*') + } else if (!max) { + ranges.push(`>=${min}`) + } else if (min === v[0]) { + ranges.push(`<=${max}`) + } else { + ranges.push(`${min} - ${max}`) + } + } + const simplified = ranges.join(' || ') + const original = typeof range.raw === 'string' ? range.raw : String(range) + return simplified.length < original.length ? simplified : range +} diff --git a/node_modules/css-loader/node_modules/semver/ranges/subset.js b/node_modules/css-loader/node_modules/semver/ranges/subset.js new file mode 100644 index 00000000..1e5c2683 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/ranges/subset.js @@ -0,0 +1,247 @@ +const Range = require('../classes/range.js') +const Comparator = require('../classes/comparator.js') +const { ANY } = Comparator +const satisfies = require('../functions/satisfies.js') +const compare = require('../functions/compare.js') + +// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff: +// - Every simple range `r1, r2, ...` is a null set, OR +// - Every simple range `r1, r2, ...` which is not a null set is a subset of +// some `R1, R2, ...` +// +// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff: +// - If c is only the ANY comparator +// - If C is only the ANY comparator, return true +// - Else if in prerelease mode, return false +// - else replace c with `[>=0.0.0]` +// - If C is only the ANY comparator +// - if in prerelease mode, return true +// - else replace C with `[>=0.0.0]` +// - Let EQ be the set of = comparators in c +// - If EQ is more than one, return true (null set) +// - Let GT be the highest > or >= comparator in c +// - Let LT be the lowest < or <= comparator in c +// - If GT and LT, and GT.semver > LT.semver, return true (null set) +// - If any C is a = range, and GT or LT are set, return false +// - If EQ +// - If GT, and EQ does not satisfy GT, return true (null set) +// - If LT, and EQ does not satisfy LT, return true (null set) +// - If EQ satisfies every C, return true +// - Else return false +// - If GT +// - If GT.semver is lower than any > or >= comp in C, return false +// - If GT is >=, and GT.semver does not satisfy every C, return false +// - If GT.semver has a prerelease, and not in prerelease mode +// - If no C has a prerelease and the GT.semver tuple, return false +// - If LT +// - If LT.semver is greater than any < or <= comp in C, return false +// - If LT is <=, and LT.semver does not satisfy every C, return false +// - If GT.semver has a prerelease, and not in prerelease mode +// - If no C has a prerelease and the LT.semver tuple, return false +// - Else return true + +const subset = (sub, dom, options = {}) => { + if (sub === dom) { + return true + } + + sub = new Range(sub, options) + dom = new Range(dom, options) + let sawNonNull = false + + OUTER: for (const simpleSub of sub.set) { + for (const simpleDom of dom.set) { + const isSub = simpleSubset(simpleSub, simpleDom, options) + sawNonNull = sawNonNull || isSub !== null + if (isSub) { + continue OUTER + } + } + // the null set is a subset of everything, but null simple ranges in + // a complex range should be ignored. so if we saw a non-null range, + // then we know this isn't a subset, but if EVERY simple range was null, + // then it is a subset. + if (sawNonNull) { + return false + } + } + return true +} + +const minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')] +const minimumVersion = [new Comparator('>=0.0.0')] + +const simpleSubset = (sub, dom, options) => { + if (sub === dom) { + return true + } + + if (sub.length === 1 && sub[0].semver === ANY) { + if (dom.length === 1 && dom[0].semver === ANY) { + return true + } else if (options.includePrerelease) { + sub = minimumVersionWithPreRelease + } else { + sub = minimumVersion + } + } + + if (dom.length === 1 && dom[0].semver === ANY) { + if (options.includePrerelease) { + return true + } else { + dom = minimumVersion + } + } + + const eqSet = new Set() + let gt, lt + for (const c of sub) { + if (c.operator === '>' || c.operator === '>=') { + gt = higherGT(gt, c, options) + } else if (c.operator === '<' || c.operator === '<=') { + lt = lowerLT(lt, c, options) + } else { + eqSet.add(c.semver) + } + } + + if (eqSet.size > 1) { + return null + } + + let gtltComp + if (gt && lt) { + gtltComp = compare(gt.semver, lt.semver, options) + if (gtltComp > 0) { + return null + } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) { + return null + } + } + + // will iterate one or zero times + for (const eq of eqSet) { + if (gt && !satisfies(eq, String(gt), options)) { + return null + } + + if (lt && !satisfies(eq, String(lt), options)) { + return null + } + + for (const c of dom) { + if (!satisfies(eq, String(c), options)) { + return false + } + } + + return true + } + + let higher, lower + let hasDomLT, hasDomGT + // if the subset has a prerelease, we need a comparator in the superset + // with the same tuple and a prerelease, or it's not a subset + let needDomLTPre = lt && + !options.includePrerelease && + lt.semver.prerelease.length ? lt.semver : false + let needDomGTPre = gt && + !options.includePrerelease && + gt.semver.prerelease.length ? gt.semver : false + // exception: <1.2.3-0 is the same as <1.2.3 + if (needDomLTPre && needDomLTPre.prerelease.length === 1 && + lt.operator === '<' && needDomLTPre.prerelease[0] === 0) { + needDomLTPre = false + } + + for (const c of dom) { + hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>=' + hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<=' + if (gt) { + if (needDomGTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && + c.semver.major === needDomGTPre.major && + c.semver.minor === needDomGTPre.minor && + c.semver.patch === needDomGTPre.patch) { + needDomGTPre = false + } + } + if (c.operator === '>' || c.operator === '>=') { + higher = higherGT(gt, c, options) + if (higher === c && higher !== gt) { + return false + } + } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) { + return false + } + } + if (lt) { + if (needDomLTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && + c.semver.major === needDomLTPre.major && + c.semver.minor === needDomLTPre.minor && + c.semver.patch === needDomLTPre.patch) { + needDomLTPre = false + } + } + if (c.operator === '<' || c.operator === '<=') { + lower = lowerLT(lt, c, options) + if (lower === c && lower !== lt) { + return false + } + } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) { + return false + } + } + if (!c.operator && (lt || gt) && gtltComp !== 0) { + return false + } + } + + // if there was a < or >, and nothing in the dom, then must be false + // UNLESS it was limited by another range in the other direction. + // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0 + if (gt && hasDomLT && !lt && gtltComp !== 0) { + return false + } + + if (lt && hasDomGT && !gt && gtltComp !== 0) { + return false + } + + // we needed a prerelease range in a specific tuple, but didn't get one + // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0, + // because it includes prereleases in the 1.2.3 tuple + if (needDomGTPre || needDomLTPre) { + return false + } + + return true +} + +// >=1.2.3 is lower than >1.2.3 +const higherGT = (a, b, options) => { + if (!a) { + return b + } + const comp = compare(a.semver, b.semver, options) + return comp > 0 ? a + : comp < 0 ? b + : b.operator === '>' && a.operator === '>=' ? b + : a +} + +// <=1.2.3 is higher than <1.2.3 +const lowerLT = (a, b, options) => { + if (!a) { + return b + } + const comp = compare(a.semver, b.semver, options) + return comp < 0 ? a + : comp > 0 ? b + : b.operator === '<' && a.operator === '<=' ? b + : a +} + +module.exports = subset diff --git a/node_modules/css-loader/node_modules/semver/ranges/to-comparators.js b/node_modules/css-loader/node_modules/semver/ranges/to-comparators.js new file mode 100644 index 00000000..6c8bc7e6 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/ranges/to-comparators.js @@ -0,0 +1,8 @@ +const Range = require('../classes/range') + +// Mostly just for testing and legacy API reasons +const toComparators = (range, options) => + new Range(range, options).set + .map(comp => comp.map(c => c.value).join(' ').trim().split(' ')) + +module.exports = toComparators diff --git a/node_modules/css-loader/node_modules/semver/ranges/valid.js b/node_modules/css-loader/node_modules/semver/ranges/valid.js new file mode 100644 index 00000000..365f3568 --- /dev/null +++ b/node_modules/css-loader/node_modules/semver/ranges/valid.js @@ -0,0 +1,11 @@ +const Range = require('../classes/range') +const validRange = (range, options) => { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, options).range || '*' + } catch (er) { + return null + } +} +module.exports = validRange diff --git a/node_modules/css-loader/package.json b/node_modules/css-loader/package.json new file mode 100644 index 00000000..e86611d1 --- /dev/null +++ b/node_modules/css-loader/package.json @@ -0,0 +1,104 @@ +{ + "name": "css-loader", + "version": "6.8.1", + "description": "css loader module for webpack", + "license": "MIT", + "repository": "webpack-contrib/css-loader", + "author": "Tobias Koppers @sokra", + "homepage": "https://github.com/webpack-contrib/css-loader", + "bugs": "https://github.com/webpack-contrib/css-loader/issues", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "main": "dist/cjs.js", + "engines": { + "node": ">= 12.13.0" + }, + "scripts": { + "start": "npm run build -- -w", + "clean": "del-cli dist", + "validate:runtime": "es-check es5 \"dist/runtime/**/*.js\"", + "prebuild": "npm run clean", + "build": "cross-env NODE_ENV=production babel src -d dist --copy-files", + "postbuild": "npm run validate:runtime", + "commitlint": "commitlint --from=master", + "security": "npm audit --production", + "lint:prettier": "prettier --list-different .", + "lint:js": "eslint --cache .", + "lint:spelling": "cspell \"**/*.*\"", + "lint": "npm-run-all -l -p \"lint:**\"", + "fix:js": "npm run lint:js -- --fix", + "fix:prettier": "npm run lint:prettier -- --write", + "fix": "npm-run-all -l fix:js fix:prettier", + "test:only": "cross-env NODE_ENV=test jest", + "test:watch": "npm run test:only -- --watch", + "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage", + "pretest": "npm run lint", + "test": "npm run test:coverage", + "prepare": "husky install && npm run build", + "release": "standard-version" + }, + "files": [ + "dist" + ], + "peerDependencies": { + "webpack": "^5.0.0" + }, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "devDependencies": { + "@babel/cli": "^7.21.0", + "@babel/core": "^7.21.4", + "@babel/preset-env": "^7.21.4", + "@commitlint/cli": "^16.3.0", + "@commitlint/config-conventional": "^16.2.4", + "@webpack-contrib/eslint-config-webpack": "^3.0.0", + "babel-jest": "^28.1.3", + "cross-env": "^7.0.3", + "cspell": "^6.31.1", + "del": "^6.1.1", + "del-cli": "^4.0.1", + "es-check": "^7.1.0", + "eslint": "^8.37.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.27.5", + "file-loader": "^6.2.0", + "husky": "^7.0.1", + "jest": "^28.1.3", + "jest-environment-jsdom": "^28.1.3", + "less": "^4.1.3", + "less-loader": "^10.0.1", + "lint-staged": "^12.5.0", + "memfs": "^3.4.13", + "mini-css-extract-plugin": "^2.7.5", + "npm-run-all": "^4.1.5", + "postcss-loader": "^6.2.1", + "postcss-preset-env": "^7.8.3", + "prettier": "^2.8.7", + "sass": "^1.60.0", + "sass-loader": "^12.6.0", + "standard-version": "^9.5.0", + "strip-ansi": "^6.0.0", + "style-loader": "^3.3.2", + "stylus": "^0.59.0", + "stylus-loader": "^6.1.0", + "url-loader": "^4.1.1", + "webpack": "^5.77.0" + }, + "keywords": [ + "webpack", + "css", + "loader", + "url", + "import" + ] +} diff --git a/node_modules/css-minimizer-webpack-plugin/LICENSE b/node_modules/css-minimizer-webpack-plugin/LICENSE new file mode 100644 index 00000000..3d5fa732 --- /dev/null +++ b/node_modules/css-minimizer-webpack-plugin/LICENSE @@ -0,0 +1,20 @@ +Copyright JS Foundation and other contributors + +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. \ No newline at end of file diff --git a/node_modules/css-minimizer-webpack-plugin/README.md b/node_modules/css-minimizer-webpack-plugin/README.md new file mode 100644 index 00000000..1c5f79a5 --- /dev/null +++ b/node_modules/css-minimizer-webpack-plugin/README.md @@ -0,0 +1,624 @@ + + +[![npm][npm]][npm-url] +[![node][node]][node-url] +[![tests][tests]][tests-url] +[![cover][cover]][cover-url] +[![chat][chat]][chat-url] +[![size][size]][size-url] + +# css-minimizer-webpack-plugin + +This plugin uses [cssnano](https://cssnano.co) to optimize and minify your CSS. + +Just like [optimize-css-assets-webpack-plugin](https://github.com/NMFR/optimize-css-assets-webpack-plugin) but more accurate with source maps and assets using query string, allows caching and works in parallel mode. + +## Getting Started + +To begin, you'll need to install `css-minimizer-webpack-plugin`: + +```console +npm install css-minimizer-webpack-plugin --save-dev +``` + +or + +```console +yarn add -D css-minimizer-webpack-plugin +``` + +or + +```console +pnpm add -D css-minimizer-webpack-plugin +``` + +Then add the plugin to your `webpack` configuration. For example: + +**webpack.config.js** + +```js +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const CssMinimizerPlugin = require("css-minimizer-webpack-plugin"); + +module.exports = { + module: { + rules: [ + { + test: /.s?css$/, + use: [MiniCssExtractPlugin.loader, "css-loader", "sass-loader"], + }, + ], + }, + optimization: { + minimizer: [ + // For webpack@5 you can use the `...` syntax to extend existing minimizers (i.e. `terser-webpack-plugin`), uncomment the next line + // `...`, + new CssMinimizerPlugin(), + ], + }, + plugins: [new MiniCssExtractPlugin()], +}; +``` + +This will enable CSS optimization only in production mode. + +If you want to run it also in development set the `optimization.minimize` option to `true`: + +**webpack.config.js** + +```js +// [...] +module.exports = { + optimization: { + // [...] + minimize: true, + }, +}; +``` + +And run `webpack` via your preferred method. + +## Note about source maps + +**Works only with `source-map`, `inline-source-map`, `hidden-source-map` and `nosources-source-map` values for the [`devtool`](https://webpack.js.org/configuration/devtool/) option.** + +Why? Because CSS support only these source map types. + +The plugin respect the [`devtool`](https://webpack.js.org/configuration/devtool/) and using the `SourceMapDevToolPlugin` plugin. +Using supported `devtool` values enable source map generation. +Using `SourceMapDevToolPlugin` with enabled the `columns` option enables source map generation. + +Use source maps to map error message locations to modules (this slows down the compilation). +If you use your own `minify` function please read the `minify` section for handling source maps correctly. + +## Options + +| Name | Type | Default | Description | +| :-----------------------------------------: | :--------------------------------------------: | :--------------------------------: | :-------------------------------------------------------------------------------- | +| **[`test`](#test)** | `String\|RegExp\|Array` | `/\.css(\?.*)?$/i` | Test to match files against. | +| **[`include`](#include)** | `String\|RegExp\|Array` | `undefined` | Files to include. | +| **[`exclude`](#exclude)** | `String\|RegExp\|Array` | `undefined` | Files to exclude. | +| **[`parallel`](#parallel)** | `Boolean\|Number` | `true` | Enable/disable multi-process parallel running. | +| **[`minify`](#minify)** | `Function\|Array` | `CssMinimizerPlugin.cssnanoMinify` | Allows to override default minify function. | +| **[`minimizerOptions`](#minimizeroptions)** | `Object\|Array` | `{ preset: 'default' }` | Cssnano optimisations [options](https://cssnano.co/docs/what-are-optimisations/). | +| **[`warningsFilter`](#warningsfilter)** | `Function<(warning, file, source) -> Boolean>` | `() => true` | Allow to filter css-minimizer warnings. | + +### `test` + +Type: `String|RegExp|Array` - default: `/\.css(\?.*)?$/i` + +Test to match files against. + +```js +module.exports = { + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + test: /\.foo\.css$/i, + }), + ], + }, +}; +``` + +### `include` + +Type: `String|RegExp|Array` +Default: `undefined` + +Files to include. + +**webpack.config.js** + +```js +module.exports = { + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + include: /\/includes/, + }), + ], + }, +}; +``` + +### `exclude` + +Type: `String|RegExp|Array` +Default: `undefined` + +Files to exclude. + +**webpack.config.js** + +```js +module.exports = { + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + exclude: /\/excludes/, + }), + ], + }, +}; +``` + +### `parallel` + +Type: `Boolean|Number` +Default: `true` + +Use multi-process parallel running to improve the build speed. +Default number of concurrent runs: `os.cpus().length - 1`. + +> ℹ️ Parallelization can speed up your build significantly and is therefore **highly recommended**. +> If a parallelization is enabled, the packages in `minimizerOptions` must be required via strings (`packageName` or `require.resolve(packageName)`). Read more in [`minimizerOptions`](#minimizeroptions) + +#### `Boolean` + +Enable/disable multi-process parallel running. + +**webpack.config.js** + +```js +module.exports = { + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + parallel: true, + }), + ], + }, +}; +``` + +#### `Number` + +Enable multi-process parallel running and set number of concurrent runs. + +**webpack.config.js** + +```js +module.exports = { + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + parallel: 4, + }), + ], + }, +}; +``` + +### `minify` + +Type: `Function|Array` +Default: `CssMinimizerPlugin.cssnanoMinify` + +Allows overriding default minify function. +By default, plugin uses [cssnano](https://github.com/cssnano/cssnano) package. +Useful for using and testing unpublished versions or forks. + +Possible options: + +- `CssMinimizerPlugin.cssnanoMinify` +- `CssMinimizerPlugin.cssoMinify` +- `CssMinimizerPlugin.cleanCssMinify` +- `CssMinimizerPlugin.esbuildMinify` +- `CssMinimizerPlugin.lightningCssMinify` (previously`CssMinimizerPlugin.parcelCssMinify`, the package was renamed, but we keep it for backward compatibility) +- `async (data, inputMap, minimizerOptions) => {return {code: "a{color: red}", map: "...", warnings: [], errors: []}}` + +> **Warning** +> +> **Always use `require` inside `minify` function when `parallel` option enabled**. + +#### `Function` + +**webpack.config.js** + +```js +module.exports = { + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + minimizerOptions: { + level: { + 1: { + roundingPrecision: "all=3,px=5", + }, + }, + }, + minify: CssMinimizerPlugin.cleanCssMinify, + }), + ], + }, +}; +``` + +#### `Array` + +If an array of functions is passed to the `minify` option, the `minimizerOptions` must also be an array. +The function index in the `minify` array corresponds to the options object with the same index in the `minimizerOptions` array. + +**webpack.config.js** + +```js +module.exports = { + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + minimizerOptions: [ + {}, // Options for the first function (CssMinimizerPlugin.cssnanoMinify) + {}, // Options for the second function (CssMinimizerPlugin.cleanCssMinify) + {}, // Options for the third function + ], + minify: [ + CssMinimizerPlugin.cssnanoMinify, + CssMinimizerPlugin.cleanCssMinify, + async (data, inputMap, minimizerOptions) => { + // To do something + return { + code: `a{color: red}`, + map: `{"version": "3", ...}`, + warnings: [], + errors: [], + }; + }, + ], + }), + ], + }, +}; +``` + +### `minimizerOptions` + +Type: `Object|Array` +Default: `{ preset: 'default' }` + +Cssnano optimisations [options](https://cssnano.co/docs/what-are-optimisations/). + +#### `Object` + +```js +module.exports = { + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + minimizerOptions: { + preset: [ + "default", + { + discardComments: { removeAll: true }, + }, + ], + }, + }), + ], + }, +}; +``` + +#### `Array` + +The function index in the `minify` array corresponds to the options object with the same index in the `minimizerOptions` array. +If you use `minimizerOptions` like object, all `minify` function accept it. + +> If a parallelization is enabled, the packages in `minimizerOptions` must be required via strings (`packageName` or `require.resolve(packageName)`). In this case, we shouldn't use `require`/`import`. + +```js +module.exports = { + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + minimizerOptions: { + preset: require.resolve("cssnano-preset-simple"), + }, + }), + ], + }, +}; +``` + +##### `processorOptions` (⚠ only cssnano) + +Type: `Object` +Default: `{ from: assetName }` + +Allows filtering options [`processoptions`](https://postcss.org/api/#processoptions) for the cssnano. +The `parser`,` stringifier` and `syntax` can be either a function or a string indicating the module that will be imported. + +> **Warning** +> +> **If a function is passed, the `parallel` option must be disabled.**. + +```js +import sugarss from "sugarss"; + +module.exports = { + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + parallel: false, + minimizerOptions: { + processorOptions: { + parser: sugarss, + }, + }, + }), + ], + }, +}; +``` + +```js +module.exports = { + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + minimizerOptions: { + processorOptions: { + parser: "sugarss", + }, + }, + }), + ], + }, +}; +``` + +### `warningsFilter` + +Type: `Function<(warning, file, source) -> Boolean>` +Default: `() => true` + +Allow filtering css-minimizer warnings (By default [cssnano](https://github.com/cssnano/cssnano)). +Return `true` to keep the warning, a falsy value (`false`/`null`/`undefined`) otherwise. + +> **Warning** +> +> The `source` argument will contain `undefined` if you don't use source maps. + +**webpack.config.js** + +```js +module.exports = { + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + warningsFilter: (warning, file, source) => { + if (/Dropping unreachable code/i.test(warning)) { + return true; + } + + if (/file\.css/i.test(file)) { + return true; + } + + if (/source\.css/i.test(source)) { + return true; + } + + return false; + }, + }), + ], + }, +}; +``` + +## Examples + +### Use sourcemaps + +Don't forget to enable `sourceMap` options for all loaders. + +```js +const CssMinimizerPlugin = require("css-minimizer-webpack-plugin"); + +module.exports = { + devtool: "source-map", + module: { + rules: [ + { + test: /.s?css$/, + use: [ + MiniCssExtractPlugin.loader, + { loader: "css-loader", options: { sourceMap: true } }, + { loader: "sass-loader", options: { sourceMap: true } }, + ], + }, + ], + }, + optimization: { + minimizer: [new CssMinimizerPlugin()], + }, + plugins: [new MiniCssExtractPlugin()], +}; +``` + +### Remove all comments + +Remove all comments (including comments starting with `/*!`). + +```js +module.exports = { + optimization: { + minimizer: [ + new CssMinimizerPlugin({ + minimizerOptions: { + preset: [ + "default", + { + discardComments: { removeAll: true }, + }, + ], + }, + }), + ], + }, +}; +``` + +### Using custom minifier [csso](https://github.com/css/csso) + +**webpack.config.js** + +```js +module.exports = { + // Uncomment if you need source maps + // devtool: "source-map", + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + minify: CssMinimizerPlugin.cssoMinify, + // Uncomment this line for options + // minimizerOptions: { restructure: false }, + }), + ], + }, +}; +``` + +### Using custom minifier [clean-css](https://github.com/jakubpawlowicz/clean-css) + +**webpack.config.js** + +```js +module.exports = { + // Uncomment if you need source maps + // devtool: "source-map", + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + minify: CssMinimizerPlugin.cleanCssMinify, + // Uncomment this line for options + // minimizerOptions: { compatibility: 'ie11,-properties.merging' }, + }), + ], + }, +}; +``` + +### Using custom minifier [esbuild](https://github.com/evanw/esbuild) + +**webpack.config.js** + +```js +module.exports = { + // Uncomment if you need source maps + // devtool: "source-map", + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + minify: CssMinimizerPlugin.esbuildMinify, + }), + ], + }, +}; +``` + +### Using custom minifier [lightningcss](https://github.com/parcel-bundler/lightningcss), previously `@parcel/css` + +**webpack.config.js** + +```js +module.exports = { + // Uncomment if you need source maps + // devtool: "source-map", + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + minify: CssMinimizerPlugin.lightningCssMinify, + // Uncomment this line for options + // minimizerOptions: { targets: { ie: 11 }, drafts: { nesting: true } }, + }), + ], + }, +}; +``` + +### Using custom minifier [swc](https://github.com/swc-project/swc) + +**webpack.config.js** + +```js +module.exports = { + // Uncomment if you need source maps + // devtool: "source-map", + optimization: { + minimize: true, + minimizer: [ + new CssMinimizerPlugin({ + minify: CssMinimizerPlugin.swcMinify, + // Uncomment this line for options + // minimizerOptions: {}, + }), + ], + }, +}; +``` + +## Contributing + +Please take a moment to read our contributing guidelines if you haven't yet done so. + +[CONTRIBUTING](./.github/CONTRIBUTING.md) + +## License + +[MIT](./LICENSE) + +[npm]: https://img.shields.io/npm/v/css-minimizer-webpack-plugin.svg +[npm-url]: https://npmjs.com/package/css-minimizer-webpack-plugin +[node]: https://img.shields.io/node/v/css-minimizer-webpack-plugin.svg +[node-url]: https://nodejs.org +[tests]: https://github.com/webpack-contrib/css-minimizer-webpack-plugin/workflows/css-minimizer-webpack-plugin/badge.svg +[tests-url]: https://github.com/webpack-contrib/css-minimizer-webpack-plugin/actions +[cover]: https://codecov.io/gh/webpack-contrib/css-minimizer-webpack-plugin/branch/master/graph/badge.svg +[cover-url]: https://codecov.io/gh/webpack-contrib/css-minimizer-webpack-plugin +[chat]: https://img.shields.io/badge/gitter-webpack%2Fwebpack-brightgreen.svg +[chat-url]: https://gitter.im/webpack/webpack +[size]: https://packagephobia.now.sh/badge?p=css-minimizer-webpack-plugin +[size-url]: https://packagephobia.now.sh/result?p=css-minimizer-webpack-plugin diff --git a/node_modules/css-minimizer-webpack-plugin/node_modules/.bin/webpack b/node_modules/css-minimizer-webpack-plugin/node_modules/.bin/webpack new file mode 120000 index 00000000..8a1900f6 --- /dev/null +++ b/node_modules/css-minimizer-webpack-plugin/node_modules/.bin/webpack @@ -0,0 +1 @@ +../../../webpack/bin/webpack.js \ No newline at end of file diff --git a/node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker/LICENSE b/node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker/LICENSE new file mode 100644 index 00000000..b93be905 --- /dev/null +++ b/node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Meta Platforms, Inc. and affiliates. + +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. diff --git a/node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker/README.md b/node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker/README.md new file mode 100644 index 00000000..f9e1131c --- /dev/null +++ b/node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker/README.md @@ -0,0 +1,272 @@ +# jest-worker + +Module for executing heavy tasks under forked processes in parallel, by providing a `Promise` based interface, minimum overhead, and bound workers. + +The module works by providing an absolute path of the module to be loaded in all forked processes. All methods are exposed on the parent process as promises, so they can be `await`'ed. Child (worker) methods can either be synchronous or asynchronous. + +The module also implements support for bound workers. Binding a worker means that, based on certain parameters, the same task will always be executed by the same worker. The way bound workers work is by using the returned string of the `computeWorkerKey` method. If the string was used before for a task, the call will be queued to the related worker that processed the task earlier; if not, it will be executed by the first available worker, then sticked to the worker that executed it; so the next time it will be processed by the same worker. If you have no preference on the worker executing the task, but you have defined a `computeWorkerKey` method because you want _some_ of the tasks to be sticked, you can return `null` from it. + +The list of exposed methods can be explicitly provided via the `exposedMethods` option. If it is not provided, it will be obtained by requiring the child module into the main process, and analyzed via reflection. Check the "minimal example" section for a valid one. + +## Install + +```sh +yarn add jest-worker +``` + +## Example + +This example covers the minimal usage: + +### File `parent.js` + +```js +import {Worker as JestWorker} from 'jest-worker'; + +async function main() { + const worker = new JestWorker(require.resolve('./worker')); + const result = await worker.hello('Alice'); // "Hello, Alice" +} + +main(); +``` + +### File `worker.js` + +```js +export function hello(param) { + return `Hello, ${param}`; +} +``` + +## Experimental worker + +Node shipped with [`worker_threads`](https://nodejs.org/api/worker_threads.html), a "threading API" that uses `SharedArrayBuffers` to communicate between the main process and its child threads. This feature can significantly improve the communication time between parent and child processes in `jest-worker`. + +To use `worker_threads` instead of default `child_process` you have to pass `enableWorkerThreads: true` when instantiating the worker. + +## API + +The `Worker` export is a constructor that is initialized by passing the worker path, plus an options object. + +### `workerPath: string | URL` (required) + +Node module name or absolute path or file URL of the file to be loaded in the child processes. You can use `require.resolve` to transform a relative path into an absolute one. + +### `options: Object` (optional) + +#### `computeWorkerKey: (method: string, ...args: Array) => string | null` (optional) + +Every time a method exposed via the API is called, `computeWorkerKey` is also called in order to bound the call to a worker. This is useful for workers that are able to cache the result or part of it. You bound calls to a worker by making `computeWorkerKey` return the same identifier for all different calls. If you do not want to bind the call to any worker, return `null`. + +The callback you provide is called with the method name, plus all the rest of the arguments of the call. Thus, you have full control to decide what to return. Check a practical example on bound workers under the "bound worker usage" section. + +By default, no process is bound to any worker. + +#### `enableWorkerThreads: boolean` (optional) + +By default, `jest-worker` will use `child_process` threads to spawn new Node.js processes. If you prefer [`worker_threads`](https://nodejs.org/api/worker_threads.html) instead, pass `enableWorkerThreads: true`. + +#### `exposedMethods: ReadonlyArray` (optional) + +List of method names that can be called on the child processes from the parent process. You cannot expose any method named like a public `Worker` method, or starting with `_`. If you use method auto-discovery, then these methods will not be exposed, even if they exist. + +#### `forkOptions: ForkOptions` (optional) + +Allow customizing all options passed to `child_process.fork`. By default, some values are set (`cwd`, `env`, `execArgv` and `serialization`), but you can override them and customize the rest. For a list of valid values, check [the Node documentation](https://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options). + +#### `idleMemoryLimit: number` (optional) + +Specifies the memory limit for workers before they are recycled and is primarily a work-around for [this issue](https://github.com/jestjs/jest/issues/11956); + +After the worker has executed a task the memory usage of it is checked. If it exceeds the value specified the worker is killed and restarted. If no limit is set this process does not occur. The limit can be specified in 2 ways: + +- `<= 1` - The value is assumed to be a percentage of system memory. So 0.5 sets the memory limit of the worker to half of the total system memory +- `\> 1` - Assumed to be a fixed byte value. Because of the previous rule if you wanted a value of 1 byte (I don't know why) you could use `1.1`. + +#### `maxRetries: number` (optional) + +Maximum amount of times that a dead child can be re-spawned, per call. Defaults to `3`, pass `Infinity` to allow endless retries. + +#### `numWorkers: number` (optional) + +Amount of workers to spawn. Defaults to the number of CPUs minus 1. + +#### `resourceLimits: ResourceLimits` (optional) + +The `resourceLimits` option which will be passed to `worker_threads` workers. + +#### `silent: Boolean` (optional) + +Set to false for `stdout` and `stderr` to be logged to console. + +By default this is true. + +#### `setupArgs: Array` (optional) + +The arguments that will be passed to the `setup` method during initialization. + +#### `taskQueue: TaskQueue` (optional) + +The task queue defines in which order tasks (method calls) are processed by the workers. `jest-worker` ships with a `FifoQueue` and `PriorityQueue`: + +- `FifoQueue` (default): Processes the method calls (tasks) in the call order. +- `PriorityQueue`: Processes the method calls by a computed priority in natural ordering (lower priorities first). Tasks with the same priority are processed in any order (FIFO not guaranteed). The constructor accepts a single argument, the function that is passed the name of the called function and the arguments and returns a numerical value for the priority: `new require('jest-worker').PriorityQueue((method, filename) => filename.length)`. + +#### `WorkerPool: new (workerPath: string, options?: WorkerPoolOptions) => WorkerPoolInterface` (optional) + +Provide a custom WorkerPool class to be used for spawning child processes. + +#### `workerSchedulingPolicy: 'round-robin' | 'in-order'` (optional) + +Specifies the policy how tasks are assigned to workers if multiple workers are _idle_: + +- `round-robin` (default): The task will be sequentially distributed onto the workers. The first task is assigned to the worker 1, the second to the worker 2, to ensure that the work is distributed across workers. +- `in-order`: The task will be assigned to the first free worker starting with worker 1 and only assign the work to worker 2 if the worker 1 is busy. + +Tasks are always assigned to the first free worker as soon as tasks start to queue up. The scheduling policy does not define the task scheduling which is always first-in, first-out. + +## JestWorker + +### Methods + +The returned `JestWorker` instance has all the exposed methods, plus some additional ones to interact with the workers itself: + +#### `getStdout(): Readable` + +Returns a `ReadableStream` where the standard output of all workers is piped. Note that the `silent` option of the child workers must be set to `true` to make it work. This is the default set by `jest-worker`, but keep it in mind when overriding options through `forkOptions`. + +#### `getStderr(): Readable` + +Returns a `ReadableStream` where the standard error of all workers is piped. Note that the `silent` option of the child workers must be set to `true` to make it work. This is the default set by `jest-worker`, but keep it in mind when overriding options through `forkOptions`. + +#### `start()` + +Starts up every worker and calls their `setup` function, if it exists. Returns a `Promise` which resolves when all workers are running and have completed their `setup`. + +This is useful if you want to start up all your workers eagerly before they are used to call any other functions. + +#### `end()` + +Finishes the workers by killing all workers. No further calls can be done to the `Worker` instance. + +Returns a `Promise` that resolves with `{ forceExited: boolean }` once all workers are dead. If `forceExited` is `true`, at least one of the workers did not exit gracefully, which likely happened because it executed a leaky task that left handles open. This should be avoided, force exiting workers is a last resort to prevent creating lots of orphans. + +**Note:** + +`await`ing the `end()` Promise immediately after the workers are no longer needed before proceeding to do other useful things in your program may not be a good idea. If workers have to be force exited, `jest-worker` may go through multiple stages of force exiting (e.g. SIGTERM, later SIGKILL) and give the worker overall around 1 second time to exit on its own. During this time, your program will wait, even though it may not be necessary that all workers are dead before continuing execution. + +Consider deliberately leaving this Promise floating (unhandled resolution). After your program has done the rest of its work and is about to exit, the Node process will wait for the Promise to resolve after all workers are dead as the last event loop task. That way you parallelized computation time of your program and waiting time and you didn't delay the outputs of your program unnecessarily. + +### Worker IDs + +Each worker has a unique id (index that starts with `'1'`), which is available inside the worker as `process.env.JEST_WORKER_ID`. + +## Setting up and tearing down the child process + +The child process can define two special methods (both of them can be asynchronous): + +- `setup()`: If defined, it's executed before the first call to any method in the child. +- `teardown()`: If defined, it's executed when the farm ends. + +# More examples + +## Standard usage + +This example covers the standard usage: + +### File `parent.js` + +```js +import {Worker as JestWorker} from 'jest-worker'; + +async function main() { + const myWorker = new JestWorker(require.resolve('./worker'), { + exposedMethods: ['foo', 'bar', 'getWorkerId'], + numWorkers: 4, + }); + + console.log(await myWorker.foo('Alice')); // "Hello from foo: Alice" + console.log(await myWorker.bar('Bob')); // "Hello from bar: Bob" + console.log(await myWorker.getWorkerId()); // "3" -> this message has sent from the 3rd worker + + const {forceExited} = await myWorker.end(); + if (forceExited) { + console.error('Workers failed to exit gracefully'); + } +} + +main(); +``` + +### File `worker.js` + +```js +export function foo(param) { + return `Hello from foo: ${param}`; +} + +export function bar(param) { + return `Hello from bar: ${param}`; +} + +export function getWorkerId() { + return process.env.JEST_WORKER_ID; +} +``` + +## Bound worker usage: + +This example covers the usage with a `computeWorkerKey` method: + +### File `parent.js` + +```js +import {Worker as JestWorker} from 'jest-worker'; + +async function main() { + const myWorker = new JestWorker(require.resolve('./worker'), { + computeWorkerKey: (method, filename) => filename, + }); + + // Transform the given file, within the first available worker. + console.log(await myWorker.transform('/tmp/foo.js')); + + // Wait a bit. + await sleep(10000); + + // Transform the same file again. Will immediately return because the + // transformed file is cached in the worker, and `computeWorkerKey` ensures + // the same worker that processed the file the first time will process it now. + console.log(await myWorker.transform('/tmp/foo.js')); + + const {forceExited} = await myWorker.end(); + if (forceExited) { + console.error('Workers failed to exit gracefully'); + } +} + +main(); +``` + +### File `worker.js` + +```js +import babel from '@babel/core'; + +const cache = Object.create(null); + +export function transform(filename) { + if (cache[filename]) { + return cache[filename]; + } + + // jest-worker can handle both immediate results and thenables. If a + // thenable is returned, it will be await'ed until it resolves. + return babel.transformFileAsync(filename).then(result => { + cache[filename] = result; + + return result; + }); +} +``` diff --git a/node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker/package.json b/node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker/package.json new file mode 100644 index 00000000..6975f972 --- /dev/null +++ b/node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker/package.json @@ -0,0 +1,42 @@ +{ + "name": "jest-worker", + "version": "29.7.0", + "repository": { + "type": "git", + "url": "https://github.com/jestjs/jest.git", + "directory": "packages/jest-worker" + }, + "license": "MIT", + "main": "./build/index.js", + "types": "./build/index.d.ts", + "exports": { + ".": { + "types": "./build/index.d.ts", + "default": "./build/index.js" + }, + "./package.json": "./package.json" + }, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "devDependencies": { + "@babel/core": "^7.11.6", + "@tsd/typescript": "^5.0.4", + "@types/merge-stream": "^1.1.2", + "@types/supports-color": "^8.1.0", + "get-stream": "^6.0.0", + "jest-leak-detector": "^29.7.0", + "tsd-lite": "^0.7.0", + "worker-farm": "^1.6.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "publishConfig": { + "access": "public" + }, + "gitHead": "4e56991693da7cd4c3730dc3579a1dd1403ee630" +} diff --git a/node_modules/css-minimizer-webpack-plugin/package.json b/node_modules/css-minimizer-webpack-plugin/package.json new file mode 100644 index 00000000..1d072a61 --- /dev/null +++ b/node_modules/css-minimizer-webpack-plugin/package.json @@ -0,0 +1,130 @@ +{ + "name": "css-minimizer-webpack-plugin", + "version": "4.2.2", + "description": "cssnano plugin for Webpack", + "license": "MIT", + "repository": "webpack-contrib/css-minimizer-webpack-plugin", + "author": "Loann Neveu", + "homepage": "https://github.com/webpack-contrib/css-minimizer-webpack-plugin", + "bugs": "https://github.com/webpack-contrib/css-minimizer-webpack-plugin/issues", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "main": "dist/index.js", + "types": "types/index.d.ts", + "engines": { + "node": ">= 14.15.0" + }, + "scripts": { + "start": "npm run build -- -w", + "clean": "del-cli dist", + "prebuild": "npm run clean types", + "build:types": "tsc --declaration --emitDeclarationOnly --outDir types && prettier \"types/**/*.ts\" --write", + "build:code": "cross-env NODE_ENV=production babel src -d dist --copy-files", + "build": "npm-run-all -p \"build:**\"", + "commitlint": "commitlint --from=master", + "security": "npm audit", + "lint:prettier": "prettier \"{**/*,*}.{js,json,md,yml,css,ts}\" --list-different", + "lint:js": "eslint --cache .", + "lint:types": "tsc --pretty --noEmit", + "lint": "npm-run-all -l -p \"lint:**\"", + "test:only": "cross-env NODE_ENV=test jest", + "test:watch": "npm run test:only -- --watch", + "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage", + "pretest": "npm run lint", + "test": "npm run test:coverage", + "prepare": "husky install && npm run build", + "release": "standard-version" + }, + "files": [ + "dist", + "types" + ], + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "@parcel/css": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "@swc/css": { + "optional": true + } + }, + "dependencies": { + "cssnano": "^5.1.8", + "jest-worker": "^29.1.2", + "postcss": "^8.4.17", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "devDependencies": { + "@babel/cli": "^7.17.10", + "@babel/core": "^7.17.12", + "@babel/preset-env": "^7.17.12", + "@commitlint/cli": "^17.0.0", + "@commitlint/config-conventional": "^17.0.0", + "@parcel/css": "^1.8.3", + "@swc/css": "^0.0.17", + "@types/clean-css": "^4.2.5", + "@types/csso": "^5.0.0", + "@types/serialize-javascript": "^5.0.2", + "@webpack-contrib/eslint-config-webpack": "^3.0.0", + "babel-jest": "^29.1.2", + "clean-css": "^5.3.0", + "copy-webpack-plugin": "^9.1.0", + "cross-env": "^7.0.3", + "css-loader": "^6.7.1", + "cssnano-preset-simple": "^4.0.0", + "csso": "^5.0.3", + "del": "^6.1.0", + "del-cli": "^5.0.0", + "esbuild": "^0.15.10", + "eslint": "^8.15.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-import": "^2.26.0", + "husky": "^8.0.1", + "jest": "^29.1.2", + "lightningcss": "^1.14.0", + "lint-staged": "^12.4.1", + "memfs": "^3.4.1", + "mini-css-extract-plugin": "^2.6.0", + "npm-run-all": "^4.1.5", + "prettier": "^2.6.2", + "sass": "^1.51.0", + "sass-loader": "^13.0.0", + "standard-version": "^9.5.0", + "sugarss": "^4.0.1", + "typescript": "^4.6.4", + "webpack": "^5.72.1" + }, + "keywords": [ + "cssnano", + "css", + "csso", + "clean-css", + "esbuild", + "webpack", + "webpack-plugin", + "minimize", + "minimizer", + "minify", + "minifier", + "optimize", + "optimizer" + ] +} diff --git a/node_modules/css-minimizer-webpack-plugin/types/index.d.ts b/node_modules/css-minimizer-webpack-plugin/types/index.d.ts new file mode 100644 index 00000000..be100bed --- /dev/null +++ b/node_modules/css-minimizer-webpack-plugin/types/index.d.ts @@ -0,0 +1,243 @@ +export = CssMinimizerPlugin; +/** + * @template [T=CssNanoOptionsExtended] + */ +declare class CssMinimizerPlugin { + /** + * @private + * @param {any} input + * @returns {boolean} + */ + private static isSourceMap; + /** + * @private + * @param {Warning | WarningObject | string} warning + * @param {string} file + * @param {WarningsFilter} [warningsFilter] + * @param {SourceMapConsumer} [sourceMap] + * @param {Compilation["requestShortener"]} [requestShortener] + * @returns {Error & { hideStack?: boolean, file?: string } | undefined} + */ + private static buildWarning; + /** + * @private + * @param {Error | ErrorObject | string} error + * @param {string} file + * @param {SourceMapConsumer} [sourceMap] + * @param {Compilation["requestShortener"]} [requestShortener] + * @returns {Error} + */ + private static buildError; + /** + * @private + * @param {Parallel} parallel + * @returns {number} + */ + private static getAvailableNumberOfCores; + /** + * @param {BasePluginOptions & DefinedDefaultMinimizerAndOptions} [options] + */ + constructor( + options?: + | (BasePluginOptions & DefinedDefaultMinimizerAndOptions) + | undefined + ); + /** + * @private + * @type {InternalPluginOptions} + */ + private options; + /** + * @private + * @param {Compiler} compiler + * @param {Compilation} compilation + * @param {Record} assets + * @param {{availableNumberOfCores: number}} optimizeOptions + * @returns {Promise} + */ + private optimize; + /** + * @param {Compiler} compiler + * @returns {void} + */ + apply(compiler: Compiler): void; +} +declare namespace CssMinimizerPlugin { + export { + cssnanoMinify, + cssoMinify, + cleanCssMinify, + esbuildMinify, + parcelCssMinify, + lightningCssMinify, + swcMinify, + Schema, + Compiler, + Compilation, + WebpackError, + JestWorker, + RawSourceMap, + Asset, + ProcessOptions, + Syntax, + Parser, + Stringifier, + CssNanoOptions, + Warning, + WarningObject, + ErrorObject, + MinimizedResult, + Input, + CustomOptions, + InferDefaultType, + BasicMinimizerImplementation, + MinimizerImplementation, + MinimizerOptions, + InternalOptions, + InternalResult, + Parallel, + Rule, + Rules, + WarningsFilter, + BasePluginOptions, + MinimizerWorker, + ProcessOptionsExtender, + CssNanoOptionsExtended, + DefinedDefaultMinimizerAndOptions, + InternalPluginOptions, + }; +} +type CssNanoOptionsExtended = CssNanoOptions & { + processorOptions?: ProcessOptionsExtender; +}; +type Compiler = import("webpack").Compiler; +type BasePluginOptions = { + test?: Rules | undefined; + include?: Rules | undefined; + exclude?: Rules | undefined; + warningsFilter?: WarningsFilter | undefined; + parallel?: Parallel; +}; +type DefinedDefaultMinimizerAndOptions = T extends CssNanoOptionsExtended + ? { + minify?: MinimizerImplementation | undefined; + minimizerOptions?: MinimizerOptions | undefined; + } + : { + minify: MinimizerImplementation; + minimizerOptions?: MinimizerOptions | undefined; + }; +import { cssnanoMinify } from "./utils"; +import { cssoMinify } from "./utils"; +import { cleanCssMinify } from "./utils"; +import { esbuildMinify } from "./utils"; +import { parcelCssMinify } from "./utils"; +import { lightningCssMinify } from "./utils"; +import { swcMinify } from "./utils"; +type Schema = import("schema-utils/declarations/validate").Schema; +type Compilation = import("webpack").Compilation; +type WebpackError = import("webpack").WebpackError; +type JestWorker = import("jest-worker").Worker; +type RawSourceMap = import("source-map").RawSourceMap; +type Asset = import("webpack").Asset; +type ProcessOptions = import("postcss").ProcessOptions; +type Syntax = import("postcss").Syntax; +type Parser = import("postcss").Parser; +type Stringifier = import("postcss").Stringifier; +type CssNanoOptions = { + configFile?: string | undefined; + preset?: [string, object] | string | undefined; +}; +type Warning = + | (Error & { + plugin?: string; + text?: string; + source?: string; + }) + | string; +type WarningObject = { + message: string; + plugin?: string | undefined; + text?: string | undefined; + line?: number | undefined; + column?: number | undefined; +}; +type ErrorObject = { + message: string; + line?: number | undefined; + column?: number | undefined; + stack?: string | undefined; +}; +type MinimizedResult = { + code: string; + map?: import("source-map").RawSourceMap | undefined; + errors?: (string | Error | ErrorObject)[] | undefined; + warnings?: (Warning | WarningObject)[] | undefined; +}; +type Input = { + [file: string]: string; +}; +type CustomOptions = { + [key: string]: any; +}; +type InferDefaultType = T extends infer U ? U : CustomOptions; +type BasicMinimizerImplementation = ( + input: Input, + sourceMap: RawSourceMap | undefined, + minifyOptions: InferDefaultType +) => Promise; +type MinimizerImplementation = T extends any[] + ? T extends infer T_1 + ? { [P in keyof T_1]: BasicMinimizerImplementation } + : never + : BasicMinimizerImplementation; +type MinimizerOptions = T extends any[] + ? T extends infer T_1 + ? { [P in keyof T_1]?: InferDefaultType | undefined } + : never + : InferDefaultType; +type InternalOptions = { + name: string; + input: string; + inputSourceMap: RawSourceMap | undefined; + minimizer: { + implementation: MinimizerImplementation; + options: MinimizerOptions; + }; +}; +type InternalResult = { + outputs: Array<{ + code: string; + map: RawSourceMap | undefined; + }>; + warnings: Array; + errors: Array; +}; +type Parallel = undefined | boolean | number; +type Rule = RegExp | string; +type Rules = Rule[] | Rule; +type WarningsFilter = ( + warning: Warning | WarningObject | string, + file: string, + source?: string +) => boolean; +type MinimizerWorker = Worker & { + transform: (options: string) => InternalResult; + minify: (options: InternalOptions) => InternalResult; +}; +type ProcessOptionsExtender = + | ProcessOptions + | { + from?: string; + to?: string; + parser?: string | Syntax | Parser; + stringifier?: string | Syntax | Stringifier; + syntax?: string | Syntax; + }; +type InternalPluginOptions = BasePluginOptions & { + minimizer: { + implementation: MinimizerImplementation; + options: MinimizerOptions; + }; +}; +import { Worker } from "jest-worker"; diff --git a/node_modules/css-minimizer-webpack-plugin/types/minify.d.ts b/node_modules/css-minimizer-webpack-plugin/types/minify.d.ts new file mode 100644 index 00000000..9d2f4ff7 --- /dev/null +++ b/node_modules/css-minimizer-webpack-plugin/types/minify.d.ts @@ -0,0 +1,19 @@ +export type MinimizedResult = import("./index.js").MinimizedResult; +export type RawSourceMap = import("source-map").RawSourceMap; +export type InternalResult = import("./index.js").InternalResult; +/** @typedef {import("./index.js").MinimizedResult} MinimizedResult */ +/** @typedef {import("source-map").RawSourceMap} RawSourceMap */ +/** @typedef {import("./index.js").InternalResult} InternalResult */ +/** + * @template T + * @param {import("./index.js").InternalOptions} options + * @returns {Promise} + */ +export function minify( + options: import("./index.js").InternalOptions +): Promise; +/** + * @param {string} options + * @returns {Promise} + */ +export function transform(options: string): Promise; diff --git a/node_modules/css-minimizer-webpack-plugin/types/utils.d.ts b/node_modules/css-minimizer-webpack-plugin/types/utils.d.ts new file mode 100644 index 00000000..eeeebbb1 --- /dev/null +++ b/node_modules/css-minimizer-webpack-plugin/types/utils.d.ts @@ -0,0 +1,97 @@ +export type Task = () => Promise; +export type Input = import("./index.js").Input; +export type RawSourceMap = import("source-map").RawSourceMap; +export type SourceMapGenerator = import("source-map").SourceMapGenerator; +export type MinimizedResult = import("./index.js").MinimizedResult; +export type CustomOptions = import("./index.js").CustomOptions; +export type ProcessOptions = import("postcss").ProcessOptions; +export type Postcss = import("postcss").Postcss; +/** + * @template T + * @typedef {() => Promise} Task + */ +/** + * Run tasks with limited concurency. + * @template T + * @param {number} limit - Limit of tasks that run at once. + * @param {Task[]} tasks - List of tasks to run. + * @returns {Promise} A promise that fulfills to an array of the results + */ +export function throttleAll(limit: number, tasks: Task[]): Promise; +/** + * @param {Input} input + * @param {RawSourceMap | undefined} sourceMap + * @param {CustomOptions} minimizerOptions + * @return {Promise} + */ +export function cssnanoMinify( + input: Input, + sourceMap: RawSourceMap | undefined, + minimizerOptions?: CustomOptions +): Promise; +/** + * @param {Input} input + * @param {RawSourceMap | undefined} sourceMap + * @param {CustomOptions} minimizerOptions + * @return {Promise} + */ +export function cssoMinify( + input: Input, + sourceMap: RawSourceMap | undefined, + minimizerOptions: CustomOptions +): Promise; +/** + * @param {Input} input + * @param {RawSourceMap | undefined} sourceMap + * @param {CustomOptions} minimizerOptions + * @return {Promise} + */ +export function cleanCssMinify( + input: Input, + sourceMap: RawSourceMap | undefined, + minimizerOptions: CustomOptions +): Promise; +/** + * @param {Input} input + * @param {RawSourceMap | undefined} sourceMap + * @param {CustomOptions} minimizerOptions + * @return {Promise} + */ +export function esbuildMinify( + input: Input, + sourceMap: RawSourceMap | undefined, + minimizerOptions: CustomOptions +): Promise; +/** + * @param {Input} input + * @param {RawSourceMap | undefined} sourceMap + * @param {CustomOptions} minimizerOptions + * @return {Promise} + */ +export function parcelCssMinify( + input: Input, + sourceMap: RawSourceMap | undefined, + minimizerOptions: CustomOptions +): Promise; +/** + * @param {Input} input + * @param {RawSourceMap | undefined} sourceMap + * @param {CustomOptions} minimizerOptions + * @return {Promise} + */ +export function lightningCssMinify( + input: Input, + sourceMap: RawSourceMap | undefined, + minimizerOptions: CustomOptions +): Promise; +/** + * @param {Input} input + * @param {RawSourceMap | undefined} sourceMap + * @param {CustomOptions} minimizerOptions + * @return {Promise} + */ +export function swcMinify( + input: Input, + sourceMap: RawSourceMap | undefined, + minimizerOptions: CustomOptions +): Promise; diff --git a/node_modules/css-select/LICENSE b/node_modules/css-select/LICENSE new file mode 100644 index 00000000..c464f863 --- /dev/null +++ b/node_modules/css-select/LICENSE @@ -0,0 +1,11 @@ +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/css-select/README.md b/node_modules/css-select/README.md new file mode 100644 index 00000000..287441a5 --- /dev/null +++ b/node_modules/css-select/README.md @@ -0,0 +1,255 @@ +# css-select [![NPM version](http://img.shields.io/npm/v/css-select.svg)](https://npmjs.org/package/css-select) [![Build Status](https://travis-ci.com/fb55/css-select.svg?branch=master)](http://travis-ci.com/fb55/css-select) [![Downloads](https://img.shields.io/npm/dm/css-select.svg)](https://npmjs.org/package/css-select) [![Coverage](https://coveralls.io/repos/fb55/css-select/badge.svg?branch=master)](https://coveralls.io/r/fb55/css-select) + +A CSS selector compiler and engine + +## What? + +As a **compiler**, css-select turns CSS selectors into functions that tests if +elements match them. + +As an **engine**, css-select looks through a DOM tree, searching for elements. +Elements are tested "from the top", similar to how browsers execute CSS +selectors. + +In its default configuration, css-select queries the DOM structure of the +[`domhandler`](https://github.com/fb55/domhandler) module (also known as +htmlparser2 DOM). To query alternative DOM structures, see [`Options`](#options) +below. + +**Features:** + +- 🔬 Full implementation of CSS3 selectors, as well as most CSS4 selectors +- 🧪 Partial implementation of jQuery/Sizzle extensions (see + [cheerio-select](https://github.com/cheeriojs/cheerio-select) for the + remaining selectors) +- 🧑‍🔬 High test coverage, including the full test suites from Sizzle, Qwery and + NWMatcher. +- 🥼 Reliably great performance + +## Why? + +Most CSS engines written in JavaScript execute selectors left-to-right. That +means thet execute every component of the selector in order, from left to right +_(duh)_. As an example: For the selector `a b`, these engines will first query +for `a` elements, then search these for `b` elements. (That's the approach of +eg. [`Sizzle`](https://github.com/jquery/sizzle), +[`nwmatcher`](https://github.com/dperini/nwmatcher/) and +[`qwery`](https://github.com/ded/qwery).) + +While this works, it has some downsides: Children of `a`s will be checked +multiple times; first, to check if they are also `a`s, then, for every superior +`a` once, if they are `b`s. Using +[Big O notation](http://en.wikipedia.org/wiki/Big_O_notation), that would be +`O(n^(k+1))`, where `k` is the number of descendant selectors (that's the space +in the example above). + +The far more efficient approach is to first look for `b` elements, then check if +they have superior `a` elements: Using big O notation again, that would be +`O(n)`. That's called right-to-left execution. + +And that's what css-select does – and why it's quite performant. + +## How does it work? + +By building a stack of functions. + +_Wait, what?_ + +Okay, so let's suppose we want to compile the selector `a b`, for right-to-left +execution. We start by _parsing_ the selector. This turns the selector into an +array of the building blocks. That's what the +[`css-what`](https://github.com/fb55/css-what) module is for, if you want to +have a look. + +Anyway, after parsing, we end up with an array like this one: + +```js +[ + { type: "tag", name: "a" }, + { type: "descendant" }, + { type: "tag", name: "b" }, +]; +``` + +(Actually, this array is wrapped in another array, but that's another story, +involving commas in selectors.) + +Now that we know the meaning of every part of the selector, we can compile it. +That is where things become interesting. + +The basic idea is to turn every part of the selector into a function, which +takes an element as its only argument. The function checks whether a passed +element matches its part of the selector: If it does, the element is passed to +the next function representing the next part of the selector. That function does +the same. If an element is accepted by all parts of the selector, it _matches_ +the selector and double rainbow ALL THE WAY. + +As said before, we want to do right-to-left execution with all the big O +improvements. That means elements are passed from the rightmost part of the +selector (`b` in our example) to the leftmost (~~which would be `c`~~ of course +`a`). + +For traversals, such as the _descendant_ operating the space between `a` and +`b`, we walk up the DOM tree, starting from the element passed as argument. + +_//TODO: More in-depth description. Implementation details. Build a spaceship._ + +## API + +```js +const CSSselect = require("css-select"); +``` + +**Note:** css-select throws errors when invalid selectors are passed to it.This +is done to aid with writing css selectors, but can be unexpected when processing +arbitrary strings. + +#### `CSSselect.selectAll(query, elems, options)` + +Queries `elems`, returns an array containing all matches. + +- `query` can be either a CSS selector or a function. +- `elems` can be either an array of elements, or a single element. If it is an + element, its children will be queried. +- `options` is described below. + +Aliases: `default` export, `CSSselect.iterate(query, elems)`. + +#### `CSSselect.compile(query, options)` + +Compiles the query, returns a function. + +#### `CSSselect.is(elem, query, options)` + +Tests whether or not an element is matched by `query`. `query` can be either a +CSS selector or a function. + +#### `CSSselect.selectOne(query, elems, options)` + +Arguments are the same as for `CSSselect.selectAll(query, elems)`. Only returns +the first match, or `null` if there was no match. + +### Options + +All options are optional. + +- `xmlMode`: When enabled, tag names will be case-sensitive. Default: `false`. +- `rootFunc`: The last function in the stack, will be called with the last + element that's looked at. +- `adapter`: The adapter to use when interacting with the backing DOM + structure. By default it uses the `domutils` module. +- `context`: The context of the current query. Used to limit the scope of + searches. Can be matched directly using the `:scope` pseudo-selector. +- `cacheResults`: Allow css-select to cache results for some selectors, + sometimes greatly improving querying performance. Disable this if your + document can change in between queries with the same compiled selector. + Default: `true`. + +#### Custom Adapters + +A custom adapter must match the interface described +[here](https://github.com/fb55/css-select/blob/1aa44bdd64aaf2ebdfd7f338e2e76bed36521957/src/types.ts#L6-L96). + +You may want to have a look at [`domutils`](https://github.com/fb55/domutils) to +see the default implementation, or at +[`css-select-browser-adapter`](https://github.com/nrkn/css-select-browser-adapter/blob/master/index.js) +for an implementation backed by the DOM. + +## Supported selectors + +_As defined by CSS 4 and / or jQuery._ + +- [Selector lists](https://developer.mozilla.org/en-US/docs/Web/CSS/Selector_list) + (`,`) +- [Universal](https://developer.mozilla.org/en-US/docs/Web/CSS/Universal_selectors) + (`*`) +- [Type](https://developer.mozilla.org/en-US/docs/Web/CSS/Type_selectors) + (``) +- [Descendant](https://developer.mozilla.org/en-US/docs/Web/CSS/Descendant_combinator) + (` `) +- [Child](https://developer.mozilla.org/en-US/docs/Web/CSS/Child_combinator) + (`>`) +- Parent (`<`) +- [Adjacent sibling](https://developer.mozilla.org/en-US/docs/Web/CSS/Adjacent_sibling_combinator) + (`+`) +- [General sibling](https://developer.mozilla.org/en-US/docs/Web/CSS/General_sibling_combinator) + (`~`) +- [Attribute](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors) + (`[attr=foo]`), with supported comparisons: + - `[attr]` (existential) + - `=` + - `~=` + - `|=` + - `*=` + - `^=` + - `$=` + - `!=` + - `i` and `s` can be added after the comparison to make the comparison + case-insensitive or case-sensitive (eg. `[attr=foo i]`). If neither is + supplied, css-select will follow the HTML spec's + [case-sensitivity rules](https://html.spec.whatwg.org/multipage/semantics-other.html#case-sensitivity-of-selectors). +- Pseudos: + - [`:not`](https://developer.mozilla.org/en-US/docs/Web/CSS/:not) + - [`:contains`](https://api.jquery.com/contains-selector) + - `:icontains` (case-insensitive version of `:contains`) + - [`:has`](https://developer.mozilla.org/en-US/docs/Web/CSS/:has) + - [`:root`](https://developer.mozilla.org/en-US/docs/Web/CSS/:root) + - [`:empty`](https://developer.mozilla.org/en-US/docs/Web/CSS/:empty) + - [`:parent`](https://api.jquery.com/parent-selector) + - [`:first-child`](https://developer.mozilla.org/en-US/docs/Web/CSS/:first-child), + [`:last-child`](https://developer.mozilla.org/en-US/docs/Web/CSS/:last-child), + [`:first-of-type`](https://developer.mozilla.org/en-US/docs/Web/CSS/:first-of-type), + [`:last-of-type`](https://developer.mozilla.org/en-US/docs/Web/CSS/:last-of-type) + - [`:only-of-type`](https://developer.mozilla.org/en-US/docs/Web/CSS/:only-of-type), + [`:only-child`](https://developer.mozilla.org/en-US/docs/Web/CSS/:only-child) + - [`:nth-child`](https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-child), + [`:nth-last-child`](https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-last-child), + [`:nth-of-type`](https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-of-type), + [`:nth-last-of-type`](https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-last-of-type), + - [`:link`](https://developer.mozilla.org/en-US/docs/Web/CSS/:link), + [`:any-link`](https://developer.mozilla.org/en-US/docs/Web/CSS/:any-link) + - [`:visited`](https://developer.mozilla.org/en-US/docs/Web/CSS/:visited), + [`:hover`](https://developer.mozilla.org/en-US/docs/Web/CSS/:hover), + [`:active`](https://developer.mozilla.org/en-US/docs/Web/CSS/:active) + (these depend on optional `Adapter` methods, so these will only match + elements if implemented in `Adapter`) + - [`:selected`](https://api.jquery.com/selected-selector), + [`:checked`](https://developer.mozilla.org/en-US/docs/Web/CSS/:checked) + - [`:enabled`](https://developer.mozilla.org/en-US/docs/Web/CSS/:enabled), + [`:disabled`](https://developer.mozilla.org/en-US/docs/Web/CSS/:disabled) + - [`:required`](https://developer.mozilla.org/en-US/docs/Web/CSS/:required), + [`:optional`](https://developer.mozilla.org/en-US/docs/Web/CSS/:optional) + - [`:header`](https://api.jquery.com/header-selector), + [`:button`](https://api.jquery.com/button-selector), + [`:input`](https://api.jquery.com/input-selector), + [`:text`](https://api.jquery.com/text-selector), + [`:checkbox`](https://api.jquery.com/checkbox-selector), + [`:file`](https://api.jquery.com/file-selector), + [`:password`](https://api.jquery.com/password-selector), + [`:reset`](https://api.jquery.com/reset-selector), + [`:radio`](https://api.jquery.com/radio-selector) etc. + - [`:is`](https://developer.mozilla.org/en-US/docs/Web/CSS/:is), plus its + legacy alias `:matches` + - [`:scope`](https://developer.mozilla.org/en-US/docs/Web/CSS/:scope) + (uses the context from the passed options) + +--- + +License: BSD-2-Clause + +## Security contact information + +To report a security vulnerability, please use the +[Tidelift security contact](https://tidelift.com/security). Tidelift will +coordinate the fix and disclosure. + +## `css-select` for enterprise + +Available as part of the Tidelift Subscription + +The maintainers of `css-select` and thousands of other packages are working with +Tidelift to deliver commercial support and maintenance for the open source +dependencies you use to build your applications. Save time, reduce risk, and +improve code health, while paying the maintainers of the exact dependencies you +use. +[Learn more.](https://tidelift.com/subscription/pkg/npm-css-select?utm_source=npm-css-select&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/node_modules/css-select/package.json b/node_modules/css-select/package.json new file mode 100644 index 00000000..0eaa9ed8 --- /dev/null +++ b/node_modules/css-select/package.json @@ -0,0 +1,70 @@ +{ + "name": "css-select", + "version": "4.3.0", + "description": "a CSS selector compiler/engine", + "author": "Felix Boehm ", + "funding": { + "url": "https://github.com/sponsors/fb55" + }, + "keywords": [ + "css", + "selector", + "sizzle" + ], + "repository": { + "type": "git", + "url": "git://github.com/fb55/css-select.git" + }, + "main": "lib/index.js", + "types": "lib/index.d.ts", + "files": [ + "lib" + ], + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "devDependencies": { + "@types/boolbase": "^1.0.1", + "@types/jest": "^27.4.1", + "@types/node": "^17.0.23", + "@typescript-eslint/eslint-plugin": "^5.16.0", + "@typescript-eslint/parser": "^5.16.0", + "cheerio-soupselect": "^0.1.1", + "eslint": "^8.12.0", + "eslint-config-prettier": "^8.5.0", + "htmlparser2": "^7.2.0", + "jest": "^27.5.1", + "prettier": "^2.6.1", + "ts-jest": "^27.1.4", + "typescript": "^4.6.3" + }, + "scripts": { + "test": "npm run test:jest && npm run lint", + "test:jest": "jest", + "lint": "npm run lint:es && npm run lint:prettier", + "lint:es": "eslint src", + "lint:prettier": "npm run prettier -- --check", + "format": "npm run format:es && npm run format:prettier", + "format:es": "npm run lint:es -- --fix", + "format:prettier": "npm run prettier -- --write", + "prettier": "prettier '**/*.{ts,md,json,yml}'", + "build": "tsc", + "prepare": "npm run build" + }, + "license": "BSD-2-Clause", + "prettier": { + "tabWidth": 4, + "proseWrap": "always" + }, + "jest": { + "preset": "ts-jest", + "testEnvironment": "node", + "testMatch": [ + "/test/*.ts" + ] + } +} diff --git a/node_modules/css-tree/CHANGELOG.md b/node_modules/css-tree/CHANGELOG.md new file mode 100644 index 00000000..31051c5d --- /dev/null +++ b/node_modules/css-tree/CHANGELOG.md @@ -0,0 +1,590 @@ +## 1.1.3 (March 31, 2021) + +- Fixed matching on CSS wide keywords for at-rule's prelude and descriptors +- Added `fit-content` to `width` property patch as browsers are supported it as a keyword (nonstandard), but spec defines it as a function +- Fixed parsing a value contains parentheses or brackets and `parseValue` option is set to `false`, in that case `!important` was included into a value but must not (#155) + +## 1.1.2 (November 26, 2020) + +- Rolled back to use spread syntax in object literals since it not supported by nodejs < 8.3 (#145) + +## 1.1.1 (November 18, 2020) + +- Fixed edge cases in mismatch location computation for `SyntaxMatchError` + +## 1.1.0 (November 17, 2020) + +- Bumped `mdn-data` to 2.0.14 +- Extended `fork()` method to allow append syntax instead of overriding for `types`, `properties` and `atrules`, e.g. `csstree.fork({ types: { color: '| foo | bar' } })` +- Extended lexer API for validation + - Added `Lexer#checkAtruleName(atruleName)`, `Lexer#checkAtrulePrelude(atruleName, prelude)`, `Lexer#checkAtruleDescriptorName(atruleName, descriptorName)` and `Lexer#checkPropertyName(propertyName)` + - Added `Lexer#getAtrule(atruleName, fallbackBasename)` method + - Extended `Lexer#getAtrulePrelude()` and `Lexer#getProperty()` methods to take `fallbackBasename` parameter + - Improved `SyntaxMatchError` location details + - Changed error messages + +## 1.0.1 (November 11, 2020) + +- Fixed edge cases for parsing of custom property value with a single whitespace when `parseCustomProperty:true` + +## 1.0.0 (October 27, 2020) + +- Added `onComment` option to parser config +- Added support for `break` and `skip` values in `walk()` to control traversal +- Added `List#reduce()` and `List#reduceRight()` methods +- Bumped `mdn-data` to 2.0.12 +- Exposed version of the lib (i.e. `import { version } from 'css-tree'`) +- Fixed `Lexer#dump()` to dump atrules syntaxes as well +- Fixed matching comma separated `` list (#135) +- Renamed `HexColor` node type into `Hash` +- Removed `element()` specific parsing rules +- Removed `dist/default-syntax.json` from package + +## 1.0.0-alpha.39 (December 5, 2019) + +- Fixed walker with `visit: "Declaration"` to iterate `DeclarationList` (#114) + +## 1.0.0-alpha.38 (November 25, 2019) + +- Bumped `mdn-data` to `2.0.6` +- Added initial implmentation for at-rule matching via `Lexer#matchAtrulePrelude()` and `Lexer#matchAtruleDescriptor()` methods +- Added `-moz-control-character-visibility`, `-ms-grid-columns`, `-ms-grid-rows` and `-ms-hyphenate-limit-last` properties to patch (#111) +- Added `flow`, `flow-root` and `table-caption` values to patched `display` (#112) + +## 1.0.0-alpha.37 (October 22, 2019) + +- Bumped `source-map` version to `^0.6.1` to fix source map generation inconsistency across node.js versions due to mappings sorting bug and v8 moving to [a stable Array#sort](https://v8.dev/blog/array-sort) ([fix commit](https://github.com/mozilla/source-map/commit/f35a2e4212dd025cb5e1fc219e7ac8a4b96c2cc9) in `source-map`) + +## 1.0.0-alpha.36 (October 13, 2019) + +- Dropped support for Node < 8 +- Updated dev deps (fixed `npm audit` issues) +- Reworked build pipeline + - Package provides `dist/csstree.js` and `dist/csstree.min.js` now (instead of single `dist/csstree.js` that was a min version) + - Bundle size (min version) reduced from 191Kb to 158Kb due to some optimisations +- Definition syntax + - Renamed `grammar` into `definitionSyntax` (named per spec) + - Added `compact` option to `generate()` method to avoid formatting (spaces) when possible +- Lexer + - Changed `dump()` method to produce syntaxes in compact form by default + +## 1.0.0-alpha.35 (October 7, 2019) + +- Walker + - Changed implementation to avoid runtime compilation due to CSP issues (see #91, #109) + - Added `find()`, `findLast()` and `findAll()` methods (e.g. `csstree.find(ast, node => node.type === 'ClassSelector')`) + +## 1.0.0-alpha.34 (July 27, 2019) + +- Tokenizer + - Added `isBOM()` function + - Added `charCodeCategory()` function + - Removed `firstCharOffset()` function (use `isBOM()` instead) + - Removed `CHARCODE` dictionary + - Removed `INPUT_STREAM_CODE*` dictionaries +- Lexer + - Allowed comments in matching value (just ignore them like whitespaces) + - Increased iteration count in value matching from 10k up to 15k + - Fixed missed `debugger` (#104) + +## 1.0.0-alpha.33 (July 11, 2019) + +- Lexer + - Fixed low priority productions matching by changing an approach for robust one (#103) + +## 1.0.0-alpha.32 (July 11, 2019) + +- Lexer + - Fixed low priority productions matching in long `||-` and `&&-` groups (#103) + +## 1.0.0-alpha.31 (July 11, 2019) + +- Bumped `mdn/data` to `2.0.4` (#99) +- Lexer + - Added [bracketed range notation](https://drafts.csswg.org/css-values-4/#numeric-ranges) support and related refactoring + - Removed ``, `` and `` from generic types. In fact, types moved to patch, because those types can be expressed in a regular grammar due to bracketed range notation implemented + - Added support for multiple token string matching + - Improved `` production matching to claim the keyword only if no other unfulfilled production can claim it (#101) + - Improved `` production matching to claim "unitless zero" only if no other unfulfilled production can claim it + - Changed lexer's constructor to prevent generic types override when used + - Fixed large `||`- and `&&`-group matching, matching continues from the beginning on term match (#85) + - Fixed checking that value has `var()` occurrences when value is a string (such values can't be matched on syntax currently and fail with specific error that can be used for ignorance in validation tools) + - Fixed `` and `` matching when a value contains a function, parentheses or braces + +## 1.0.0-alpha.30 (July 3, 2019) + +- Bumped `mdn/data` to `~2.0.3` + - Removed type removals from `mdn/data` due to lack of some generic types and specific lexer restictions (since lexer was reworked, see below) + - Reduced and updated patches +- Tokenizer + - Reworked tokenizer itself to compliment [CSS Syntax Module Level 3](https://drafts.csswg.org/css-syntax/#tokenization) + - `Tokenizer` class splitted into several abstractions: + - Added `TokenStream` class + - Added `OffsetToLocation` class + - Added `tokenize()` function that creates `TokenStream` instance for given string or updates a `TokenStream` instance passed as second parameter + - Removed `Tokenizer` class + - Removed `Raw` token type + - Renamed `Identifier` token type to `Ident` + - Added token types: `Hash`, `BadString`, `BadUrl`, `Delim`, `Percentage`, `Dimension`, `Colon`, `Semicolon`, `Comma`, `LeftSquareBracket`, `RightSquareBracket`, `LeftParenthesis`, `RightParenthesis`, `LeftCurlyBracket`, `RightCurlyBracket` + - Replaced `Punctuator` with `Delim` token type, that excludes specific characters with its own token type like `Colon`, `Semicolon` etc + - Removed `findCommentEnd`, `findStringEnd`, `findDecimalNumberEnd`, `findNumberEnd`, `findEscapeEnd`, `findIdentifierEnd` and `findUrlRawEnd` helper function + - Removed `SYMBOL_TYPE`, `PUNCTUATION` and `STOP_URL_RAW` dictionaries + - Added `isDigit`, `isHexDigit`, `isUppercaseLetter`, `isLowercaseLetter`, `isLetter`, `isNonAscii`, `isNameStart`, `isName`, `isNonPrintable`, `isNewline`, `isWhiteSpace`, `isValidEscape`, `isIdentifierStart`, `isNumberStart`, `consumeEscaped`, `consumeName`, `consumeNumber` and `consumeBadUrlRemnants` helper functions +- Parser + - Changed parsing algorithms to work with new token type set + - Changed `HexColor` consumption in way to relax checking a value, i.e. now `value` is a sequence of one or more name chars + - Added `&` as a property hack + - Relaxed `var()` parsing to only check that a first arguments is an identifier (not a custom property name as before) +- Lexer + - Reworked syntax matching to relay on token set only (having AST is optional now) + - Extended `Lexer#match()`, `Lexer#matchType()` and `Lexer#matchProperty()` methods to take a string as value, beside AST as a value + - Extended `Lexer#match()` method to take a string as a syntax, beside of syntax descriptor + - Reworked generic types: + - Removed ``, `` (moved to patch) and `` types + - Added types: + - Related to token types: ``, ``, ``, ``, ``, ``, ``, ``, ``, ``, ``, ``, ``, ``, ``, ``, ``, ``, `<[-token>`, `<]-token>`, `<(-token>`, `<)-token>`, `<{-token>` and `<}-token>` + - Complex types: ``, ``, ``, ``, `` and `` + - Renamed `` to `` as per spec + - Renamed `` (IE legacy extension) to `<-ms-legacy-expression>` and may to be removed in next releases + +## 1.0.0-alpha.29 (May 30, 2018) + +- Lexer + - Syntax matching was completely reworked. Now it's token-based and uses state machine. Public API has not changed. However, some internal data structures have changed. Most significal change in syntax match result tree structure, it's became token-based instead of node-based. + - Grammar + - Changed grammar tree format: + - Added `Token` node type to represent a single code point (``) + - Added `Multiplier` that wraps a single node (`term` property) + - Added `AtKeyword` to represent `` + - Removed `Slash` and `Percent` node types, they are replaced for a node with `Token` type + - Changed `Function` to represent `` with no children + - Removed `multiplier` property from `Group` + - Changed `generate()` method: + - Method takes an `options` as second argument now (`generate(node, forceBraces, decorator)` -> `generate(node, options)`). Two options are supported: `forceBraces` and `decorator` + - When a second parameter is a function it treats as `decorate` option value, i.e. `generate(node, fn)` -> `generate(node, { decorate: fn })` + - Decorate function invokes with additional parameter – a reference to a node +- Tokenizer + - Renamed `Atrule` const to `AtKeyword` + +## 1.0.0-alpha.28 (February 19, 2018) + +- Renamed `lexer.grammar.translate()` method into `generate()` +- Fixed `<'-webkit-font-smoothing'>` and `<'-moz-osx-font-smoothing'>` syntaxes (#75) +- Added vendor keywords for `<'overflow'>` property syntax (#76) +- Pinned `mdn-data` to `~1.1.0` and fixed issues with some updated property syntaxes + +## 1.0.0-alpha.27 (January 14, 2018) + +- Generator + - Changed node's `generate()` methods invocation, methods now take a node as a single argument and context (i.e. `this`) that have methods: `chunk()`, `node()` and `children()` + - Renamed `translate()` to `generate()` and changed to take `options` argument + - Removed `translateMarkup(ast, enter, leave)` method, use `generate(ast, { decorator: (handlers) => { ... }})` instead + - Removed `translateWithSourceMap(ast)`, use `generate(ast, { sourceMap: true })` instead + - Changed to support for children as an array +- Walker + - Changed `walk()` to take an `options` argument instead of handler, with `enter`, `leave`, `visit` and `reverse` options (`walk(ast, fn)` is still works and equivalent to `walk(ast, { enter: fn })`) + - Removed `walkUp(ast, fn)`, use `walk(ast, { leave: fn })` + - Removed `walkRules(ast, fn)`, use `walk(ast, { visit: 'Rule', enter: fn })` instead + - Removed `walkRulesRight(ast, fn)`, use `walk(ast, { visit: 'Rule', reverse: true, enter: fn })` instead + - Removed `walkDeclarations(ast, fn)`, use `walk(ast, { visit: 'Declaration', enter: fn })` instead + - Changed to support for children as array in most cases (`reverse: true` will fail on arrays since they have no `forEachRight()` method) +- Misc + - List + - Added `List#forEach()` method + - Added `List#forEachRight()` method + - Added `List#filter()` method + - Changed `List#map()` method to return a `List` instance instead of `Array` + - Added `List#push()` method, similar to `List#appendData()` but returns nothing + - Added `List#pop()` method + - Added `List#unshift()` method, similar to `List#prependData()` but returns nothing + - Added `List#shift()` method + - Added `List#prependList()` method + - Changed `List#insert()`, `List#insertData()`, `List#appendList()` and `List#insertList()` methods to return a list that performed an operation + - Changed `keyword()` method + - Changed `name` field to include a vendor prefix + - Added `basename` field to contain a name without a vendor prefix + - Added `custom` field that contain a `true` when keyword is a custom property reference + - Changed `property()` method + - Changed `name` field to include a vendor prefix + - Added `basename` field to contain a name without any prefixes, i.e. a hack and a vendor prefix + - Added `vendorPrefix()` method + - Added `isCustomProperty()` method + +## 1.0.0-alpha.26 (November 9, 2017) + +- Tokenizer + - Added `Tokenizer#isBalanceEdge()` method + - Removed `Tokenizer.endsWith()` method +- Parser + - Made the parser tolerant to errors by default + - Removed `tolerant` parser option (no parsing modes anymore) + - Removed `property` parser option (a value parsing does not depend on property name anymore) + - Canceled error for a handing semicolon in a block + - Canceled error for unclosed `Brackets`, `Function` and `Parentheses` when EOF is reached + - Fixed error when prelude ends with a comment for at-rules with custom prelude consumer + - Relaxed at-rule parsing: + - Canceled error when EOF is reached after a prelude + - Canceled error for an at-rule with custom block consumer when at-rule has no block (just don't apply consumer in that case) + - Canceled error on at-rule parsing when it occurs outside prelude or block (at-rule is converting to `Raw` node) + - Allowed for any at-rule to have a prelude and a block, even if it's invalid per at-rule syntax (the responsibility for this check is moved to lexer, since it's possible to construct a AST with such errors) + - Made a declaration value a safe parsing point (i.e. error on value parsing lead to a value is turning into `Raw` node, not a declaration as before) + - Excluded surrounding white spaces and comments from a `Raw` node that represents a declaration value + - Changed `Value` parse handler to return a node only with type `Value` (previously it returned a `Raw` node in some cases) + - Fixed issue with `onParseError()` is not invoked for errors occured on selector or declaration value parsing in some cases + - Changed using of `onParseError()` to stop parsing if handler throws an exception +- Lexer + - Changed `grammar.walk()` to invoke passed handler on entering to node rather than on leaving the node + - Improved `grammar.walk()` to take a walk handler pair as an object, i.e. `walk(node, { enter: fn, leave: fn })` + - Changed `Lexer#match*()` methods to take a node of any type, but with a `children` field + - Added `Lexer#match(syntax, node)` method + - Fixed `Lexer#matchType()` method to stop return a positive result for the CSS wide keywords + +## 1.0.0-alpha25 (October 9, 2017) + +- Parser + - Added fallback node as argument to `onParseError()` handler + - Fixed raw consuming in tolerant mode when selector is invalid (greedy consuming and redundant warnings) + - Fixed exception in tolerant mode caused by unknown at-rule with unclosed block + - Changed handling of semicolons: + - Hanging semicolon inside declaration blocks raise an error or turns into a `Raw` node in tolerant mode instead of being ignored + - Semicolon outside of declaration blocks opens a `Rule` node as part of selector instead of being ignored + - Aligned `parseAtrulePrelude` behaviour to `parseRulePrelude` + - Removed `Raw` node wraping into `AtrulePrelude` when `parseAtrulePrelude` is disabled + - Removed error emitting when at-rule has a custom prelude customer but no prelude is found (it should be validated by a lexer later) +- Generator + - Fixed performance issue with `translateWithSourceMap()`, flattening the string (because of mixing building string and indexing into it) turned it into a quadratic algorithm (approximate numbers can be found in [the quiz created by this case](https://gist.github.com/lahmatiy/ea25d0e623d88ca9848384b5707d52d9)) +- Added support for a single solidus hack for `property()` +- Minor fixes for custom errors + +## 1.0.0-alpha24 (September 14, 2017) + +- Improved CSSTree to be stable for standart build-in objects extension (#58) +- Parser + - Renamed rule's `selector` to `prelude`. The reasons: [spec names this part so](https://www.w3.org/TR/css-syntax-3/#qualified-rule), and this branch can contain not only a selector (`SelectorList`) but also a raw payload (`Raw`). What's changed: + - Renamed `Rule.selector` to `Rule.prelude` + - Renamed `parseSelector` parser option to `parseRulePrelude` + - Removed option for selector parse in `SelectorList` +- Lexer + - Fixed undefined positions in a error when match a syntax to empty or white space only value + - Improved `Lexer#checkStructure()` + - Return a warning as an object with node reference and message + - No exception on unknown node type, return a warning instead + +## 1.0.0-alpha23 (September 10, 2017) + +- Fixed `Tokenizer#getRawLength()`'s false positive balance match to the end of input in some cases (#56) +- Rename walker's entry point methods to be the same as CSSTree exposed methods (i.e. `walk()`, `walkUp()` etc) +- Rename at-rule's `expression` to `prelude` (since [spec names it so](https://www.w3.org/TR/css-syntax-3/#at-rule)) + - `AtruleExpression` node type → `AtrulePrelude` + - `Atrule.expression` field → `Atrule.prelude` + - `parseAtruleExpression` parser's option → `parseAtrulePrelude` + - `atruleExpression` parse context → `atrulePrelude` + - `atruleExpression` walk context reference → `atrulePrelude` + +## 1.0.0-alpha22 (September 8, 2017) + +- Parser + - Fixed exception on parsing of unclosed `{}-block` in tolerant mode + - Added tolerant mode support for `DeclarationList` + - Added standalone entry point, i.e. default parser can be used via `require('css-tree/lib/parser')` (#47) +- Generator + - Changed generator to produce `+n` when `AnPlusB.a` is `+1` to be "round-trip" with parser + - Added standalone entry point, i.e. default generators can be used via `require('css-tree/lib/generator')` +- Walker + - Added standalone entry point, i.e. default walkers can be used via `require('css-tree/lib/walker')` (#47) +- Lexer + - Added `default` keyword to the list of invalid values for `` (since it reversed per [spec](https://www.w3.org/TR/css-values/#custom-idents)) +- Convertors (`toPlainObject()` and `fromPlainObject()`) moved to `lib/convertor` (entry point is `require('css-tree/lib/convertor')`) + +## 1.0.0-alpha21 (September 5, 2017) + +- Tokenizer + - Added `Raw` token type + - Improved tokenization of `url()` with raw as url to be more spec complient + - Added `Tokenizer#balance` array computation on token layout + - Added `Tokenizer#getRawLength()` to compute a raw length with respect of block balance + - Added `Tokenizer#getTokenStart(offset)` method to get token start offset by token index + - Added `idx` and `balance` fields to each token of `Tokenizer#dump()` method result +- Parser + - Added `onParseError` option + - Reworked node parsers that consume a `Raw` node to use a new approach. Since now a `Raw` node builds in `parser#Raw()` function only + - Changed semantic of `parser#Raw()`, it takes 5 parameters now (it might to be changed in future) + - Changed `parser#tolerantParse()` to pass a start token index to fallback function instead of source offset + - Fixed `AtruleExpression` consuming in tolerant mode + - Atrule handler to convert an empty `AtruleExpression` node into `null` + - Changed `AtruleExpression` handler to always return a node (before it could return a `null` in some cases) +- Lexer + - Fixed comma match node for `#` multiplier + - Added reference name to `SyntaxReferenceError` +- Additional fixes on custom errors +- Reduced possible corruption of base config by `syntax.fork()` + +## 1.0.0-alpha20 (August 28, 2017) + +- Tokenizer + - Added `Atrule` token type (`` per spec) + - Added `Function` token type (`` per spec) + - Added `Url` token type + - Replaced `Tokenizer#getTypes()` method with `Tokenizer#dump()` to get all tokens as an array + - Renamed `Tokenizer.TYPE.Whitespace` to `Tokenizer.TYPE.WhiteSpace` + - Renamed `Tokenizer.findWhitespaceEnd()` to `Tokenizer.findWhiteSpaceEnd()` +- Parser + - Added initial implementation of tollerant mode (turn on by passing `tolerant: true` option). In this mode parse errors are never occour and any invalid part of CSS turns into a `Raw` node. Current safe points: `Atrule`, `AtruleExpression`, `Rule`, `Selector` and `Declaration`. Feature is experimental and further improvements are planned. + - Changed `Atrule.expression` to contain a `AtruleExpression` node or `null` only (other node types is wrapping into a `AtruleExpression` node) + - Renamed `AttributeSelector.operator` to `AttributeSelector.matcher` +- Generator + - `translate()` method is now can take a function as second argument, that recieves every generated chunk. When no function is passed, default handler is used, it concats all the chunks and method returns a string. +- Lexer + - Used [mdn/data](https://github.com/mdn/data) package as source of lexer's grammar instead of local dictionaries + - Added `x` unit to `` generic type + - Improved match tree: + - Omited Group (sequences) match nodes + - Omited empty match nodes (for terms with `zero or more` multipliers) + - Added `ASTNode` node type to contain a reference to AST node + - Fixed node duplication (uncompleted match were added to tree) + - Added AST node reference in match nodes + - Added comma match node by `#` multiplier + - Grammar + - Changed `translate()` function to get a handler as third argument (optional). That handler recieves result of node traslation and can be used for decoration purposes. See [example](https://github.com/csstree/docs/blob/04c65af44477b5ea05feb373482898122b2a4528/docs/syntax.html#L619-L627) + - Added `SyntaxParseError` to grammar export + - Reworked group and multipliers representation in syntax tree: + - Replaced `Sequence` for `Group` node type (`Sequence` node type removed) + - Added `explicit` boolean property for `Group` + - Only groups can have a multiplier now (other node types is wrapping into a single term implicit group when multiplier is applied) + - Renamed `nonEmpty` Group's property to `disallowEmpty` + - Added optimisation for syntax tree by dropping redundant root `Group` when it contains a single `Group` term (return this `Group` as a result) + - Changed lexer's match functionality + - Changed `Lexer#matchProperty()` and `Lexer#matchType()` to return an object instead of match tree. A match tree stores in `matched` field when AST is matched to grammar successfully, otherwise an error in `error` field. The result object also has some methods to test AST node against a match tree: `getTrace()`, `isType()`, `isProperty()` and `isKeyword()` + - Added `Lexer#matchDeclaration()` method + - Removed `Lexer#lastMatchError` (error stores in match result object in `error` field) + - Added initial implementation of search for AST segments (new lexer methods: `Lexer#findValueSegments()`, `Lexer#findDeclarationValueSegments()` and `Lexer#findAllSegments`) + - Implemented `SyntaxReferenceError` for unknown property and type references +- Renamed field in resulting object of `property()` function: `variable` → `custom` +- Fixed issue with readonly properties (e.g. `line` and `column`) of `Error` and exception on attempt to write in iOS Safari + +## 1.0.0-alpha19 (April 24, 2017) + +- Extended `List` class with new methods: + - `List#prepend(item)` + - `List#prependData(data)` + - `List#insertData(data)` + - `List#insertList(list)` + - `List#replace(item, itemOrList)` + +## 1.0.0-alpha18 (April 3, 2017) + +- Added `atrule` walk context (#39) +- Changed a result of generate method for `AnPlusB`, `AttributeSelector`, `Function`, `MediaFeature` and `Ratio` ([1e95877](https://github.com/csstree/csstree/commit/1e9587710efa8e9338bcf0bc794b4b45f286231d)) +- Fixed typo in `List` exception messages (@strarsis, #42) +- Improved tokenizer to convert an input to a string + +## 1.0.0-alpha17 (March 13, 2017) + +- Implemented new concept of `syntax` + - Changed main `exports` to expose a default syntax + - Defined initial [CSS syntax](lib/syntax/default.js) + - Implemented `createSyntax()` method to create a new syntax from scratch + - Implemented `fork()` method to create a new syntax based on given via extension +- Parser + - Implemented `mediaQueryList` and `mediaQuery` parsing contexts + - Implemented `CDO` and `CDC` node types + - Implemented additional declaration property prefix hacks (`#` and `+`) + - Added support for UTF-16LE BOM + - Added support for `@font-face` at-rule + - Added `chroma()` to legacy IE filter functions + - Improved `HexColor` to consume hex only + - Improved support for `\0` and `\9` hacks (#2) + - Relaxed number check for `Ratio` terms + - Allowed fractal values as a `Ratio` term + - Disallowed zero number as a `Ratio` term + - Changed important clause parsing + - Allowed any identifier for important (to support hacks like `!ie`) + - Store `true` for `important` field in case identifier equals to `important` and string otherwise + - Fixed parse error formatted message rendering to take into account tabs + - Removed exposing of `Parser` class + - Removed `readSelectorSequence()`, `readSequenceFallback()` and `readSelectorSequenceFallback` methods + - Used single universal sequence consumer for `AtruleExpression`, `Selector` and `Value` +- Generator + - Reworked generator to use auto-generated functions based on syntax definition (additional work to be done in next releases) + - Implemented `translateMarkup(ast, before, after)` method for complex cases + - Reworked `translateWithSourceMap` to be more flexible (based on `translateMarkup`, additional work to be done in next releases) +- Walker + - Reworked walker to use auto-generated function based on syntax definition (additional work to be done in next releases) +- Lexer + - Prepared for better extensibility (additional work to be done in next releases) + - Implemented `checkStructure(ast)` method to check AST structure based on syntax definition + - Update syntax dictionaries to latest `mdn/data` + - Add missing `<'offset-position'>` syntax + - Extended `` property with `-webkit-sticky` (@sergejmueller, #37) + - Improved mismatch error position +- Implemented script (`gen:syntax`) to generate AST format reference page (`docs/ast.md`) using syntax definition + +## 1.0.0-alpha16 (February 12, 2017) + +- Exposed `Parser` class +- Added `startOffset` option to `Tokenizer` (constructor and `setSource()` method) +- Added fallback functions for default (`readSequenceFallback`) and selector (`readSelectorSequenceFallback`) sequence readers +- Fixed edge cases for `AnPlusB` +- Fixed wrong whitespace ignoring in `Selector` consumer + +## 1.0.0-alpha15 (February 8, 2017) + +- Fixed broken `atruleExpression` context +- Fixed vendor prefix detection in `keyword()` and `property()` +- Fixed `property()` to not lowercase custom property names +- Added `variable` boolean flag in `property()` result +- Renamed `scanner` into `tokenizer` +- Ranamed `syntax` into `lexer` +- Moved `docs/*.html` files to [csstree/docs](https://github.com/csstree/docs) repo +- Added `element()` function for `Value` context (`-moz-element()` supported as well) +- Merged `Universal` node type into `Type` +- Renamed node types: + - `Id` -> `IdSelector` + - `Class` -> `ClassSelector` + - `Type` -> `TypeSelector` + - `Attribute` -> `AttributeSelector` + - `PseudoClass` -> `PseudoClassSelector` + - `PseudoElement` -> `PseudoElementSelector` + - `Hash` -> `HexColor` + - `Space` -> `WhiteSpace` + - `An+B` -> `AnPlusB` +- Removed `Progid` node type +- Relaxed `MediaQuery` consumer to not validate syntax on parse and to include whitespaces in children sequence as is +- Added `WhiteSpace.value` property to store whitespace sequence +- Implemented parser options to specify what should be parsed in details (when option is `false` some part of CSS represents as balanced `Raw`): + - `parseAtruleExpression` – to parse at-rule expressions (`true` by default) + - `parseSelector` – to parse rule's selector (`true` by default) + - `parseValue` - to parse declaration's value (`true` by default) + - `parseCustomProperty` – to parse value and fallback of custom property (`false` by default) +- Changed tokenization to stick leading hyphen minus to identifier token +- Changed selector parsing: + - Don't convert spaces into descendant combinator + - Don't validate selector structure on parsing (selectors may be checked by lexer later) +- Initial refactoring of [docs](https://github.com/csstree/csstree/blob/master/docs) +- Various improvements and fixes + +## 1.0.0-alpha14 (February 3, 2017) + +- Implemented `DeclarationList`, `MediaQueryList`, `MediaQuery`, `MediaFeature` and `Ratio` node types +- Implemented `declarationList` context (useful to parse HTML `style` attribute content) +- Implemented custom consumers for `@import`, `@media`, `@page` and `@supports` at-rules +- Implemented `atrule` option for `parse()` config, is used for `atruleExpession` context to specify custom consumer for at-rule if any +- Added `Scanner#skipWS()`, `Scanner#eatNonWS()`, `Scanner#consume()` and `Scanner#consumeNonWS()` helper methods +- Added custom consumers for known functional-pseudos, consume unknown functional-pseudo content as balanced `Raw` +- Allowed any `PseudoElement` to be a functional-pseudo (#33) +- Improved walker implementations to reduce GC thrashing by reusing cursors +- Changed `Atrule.block` to contain a `Block` node type only if any +- Changed `Block.loc` positions to include curly brackets +- Changed `Atrule.expression` to store a `null` if no expression +- Changed parser to use `StyleSheet` node type only for top level node (when context is `stylesheet`, that's by default) +- Changed `Parentheses`, `Brackets` and `Function` consumers to use passed sequence reader instead of its own +- Changed `Value` and `AtruleExpression` consumers to use common sequence reader (that reader was used by `Value` consumer before) +- Changed default sequence reader to exclude storage of spaces around `Comma` +- Changed processing of custom properties: + - Consume declaration value as balanced `Raw` + - Consume `var()` fallback value as balanced `Raw` + - Validate first argument of `var()` starts with double dash + - Custom property's value and fallback includes spaces around +- Fixed `Nth` to have a `loc` property +- Fixed `SelectorList.loc` and `Selector.loc` positions to exclude spaces +- Fixed issue Browserify build fail with `default-syntax.json` is not found error (#32, @philschatz) +- Disallowed `Type` selector starting with dash (parser throws an error in this case now) +- Disallowed empty selectors for `Rule` (not sure if it's correct but looks reasonable) +- Removed `>>` combinator support until any browser support (no signals about that yet) +- Removed `PseudoElement.legacy` property +- Removed special case for `:before`, `:after`, `:first-letter` and `:first-line` to represent them as `PseudoElement`, now those pseudos are represented as `PseudoClass` nodes +- Removed deprecated `Syntax#match()` method +- Parser was splitted into modules and related changes, one step closer to an extensible parser +- Various fixes and improvements, all changes have negligible impact on performance + +## 1.0.0-alpha13 (January 19, 2017) + +- Changed location storing in `SyntaxMatchError` + - Changed property to store mismatch offset to `mismatchOffset` + - Changed `offset` property to store bad node offset in source CSS if any + - Added `loc` property that stores bad node `loc` if any + +## 1.0.0-alpha12 (January 19, 2017) + +- Fixed `Syntax#matchProperty()` method to always return a positive result for custom properties since syntax is never defined for them (#31) +- Implemented `fromPlainObject()` and `toPlainObject()` to convert plain object to AST or AST to plain object (currently converts `List` <-> `Array`) + +## 1.0.0-alpha11 (January 18, 2017) + +- Added support for `:matches()` (#28) +- Added support for `:has()` +- Added support for `::slotted()` +- Implemented `Brackets` node type +- Implemented basic support for at-rule inside rule block (#24) +- Renamed `Selector` node type to `SelectorList` +- Renamed `SimpleSelector` node type to `Selector` +- Renamed `UnicodeRange.name` property to `UnicodeRange.value` +- Replaced `Negation` node type for regular `PseudoClass` +- Unified name of node property to store nested nodes, it always `children` now: + - `StyleSheet.rules` -> `StyleSheet.children` + - `SelectorList.selectors` -> `SelectorList.children` + - `Block.declarations` -> `Block.children` + - `*.sequence` -> `*.children` +- Fixed edge cases in parsing `Hex` and `UnicodeRange` when number not an integer +- Changed `nth-` pseudos parsing + - Implemented `An+B` node type to represent expressions like `2n + 1` or `-3n` + - Fixed edge cases when `a` or `b` is not an integer + - Changed `odd` and `even` keywords processing, keywords are storing as `Identifier` node type now + - Changed `Nth` node type format to store a `nth`-query and an optional `selector` + - Implemented `of` clause for `nth-` pseudos (a.e. `:nth-child(2n + 1 of li, img)`) + - Limited `Nth` parsing rules to `:nth-child()`, `:nth-last-child()`, `:nth-of-type()` and `:nth-last-of-type()` pseudos +- Changed the way to store locations + - Renamed `info` node property to `loc` + - Changed format of `loc` to store `start` and `end` positions + +## 1.0.0-alpha10 (January 11, 2017) + +- Reworked `Scanner` to be a single point to its functionality +- Exposed `Scanner` class to be useful for external projects +- Changed `walk()` function behaviour to traverse AST nodes in natural order +- Implemented `walkUp()` function to traverse AST nodes from deepest to parent (behaves as `walk()` before) + +## 1.0.0-alpha9 (December 21, 2016) + +- Fixed `` generic according to specs that allow a `` equals to zero to be used as valid value (#30) + +## 1.0.0-alpha8 (November 11, 2016) + +- Fixed `Scanner#skip()` issue method when cursor is moving to the end of source +- Simplified `Progid` node +- Changed behaviour for bad selector processing, now parsing fails instead of selector ignoring +- Fixed `` generic syntax +- Added `q` unit for `` generic syntax +- Refactored syntax parser (performance) +- Reduced startup time by implementing lazy syntax parsing (default syntax doesn't parse on module load) +- Updated syntax dictionaries and used [`mdn/data`](https://github.com/mdn/data) instead of `Template:CSSData` +- Renamed `syntax.stringify()` method to `syntax.translate()` +- Simplified generic syntax functions, those functions receive a single AST node for checking and should return `true` or `false` +- Added exception for values that contains `var()`, those values are always valid for now +- Added more tests and increase code coverage to `98.5%` + +## 1.0.0-alpha7 (October 7, 2016) + +- Added support for explicit descendant combinator (`>>`) +- Implemented `Type` and `Universal` type nodes +- Improved `Number` parsing by including sign and exponent (#26) +- Parse `before`, `after`, `first-letter` and `first-line` pseudos with single colon as `PseudoElement` +- Changed `FunctionalPseudo` node type to `PseudoClass` +- Fixed attribute selector name parsing (namespace edge cases) +- Fixed location calculation for specified offset when `eof` is reached +- Added more non-standard colors (#25) +- Removed obsolete `Syntax#getAll()` method +- Fixed various edge cases, code clean up and performance improvements + +## 1.0.0-alpha6 (September 23, 2016) + +- More accurate positions for syntax mismatch errors +- Added [`apple`](https://webkit.org/blog/3709/using-the-system-font-in-web-content/) specific font keywords (#20) +- Changed `Property` node stucture from object to string +- Renamed `Ruleset` node type to `Rule` +- Removed `Argument` node type +- Fixed `Dimension` and `Percentage` position computation +- Fixed bad selector parsing (temporary solution) +- Fixed location computation for CSS with very long lines that may lead to really long parsing with `positions:true` (even freeze) +- Fixed `line` and `column` computation for `SyntaxMatch` error +- Improved performance of parsing and translation. Now CSSTree is under 10ms in [PostCSS benchmark](https://github.com/postcss/benchmark). diff --git a/node_modules/css-tree/LICENSE b/node_modules/css-tree/LICENSE new file mode 100644 index 00000000..bf9d7ce5 --- /dev/null +++ b/node_modules/css-tree/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2016-2019 by Roman Dvornov + +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. diff --git a/node_modules/css-tree/README.md b/node_modules/css-tree/README.md new file mode 100644 index 00000000..f69d14a3 --- /dev/null +++ b/node_modules/css-tree/README.md @@ -0,0 +1,130 @@ +CSSTree logo + +# CSSTree + +[![NPM version](https://img.shields.io/npm/v/css-tree.svg)](https://www.npmjs.com/package/css-tree) +[![Build Status](https://travis-ci.org/csstree/csstree.svg?branch=master)](https://travis-ci.org/csstree/csstree) +[![Coverage Status](https://coveralls.io/repos/github/csstree/csstree/badge.svg?branch=master)](https://coveralls.io/github/csstree/csstree?branch=master) +[![NPM Downloads](https://img.shields.io/npm/dm/css-tree.svg)](https://www.npmjs.com/package/css-tree) +[![Twitter](https://img.shields.io/badge/Twitter-@csstree-blue.svg)](https://twitter.com/csstree) + +CSSTree is a tool set for CSS: [fast](https://github.com/postcss/benchmark) detailed parser (CSS → AST), walker (AST traversal), generator (AST → CSS) and lexer (validation and matching) based on specs and browser implementations. The main goal is to be efficient and W3C specs compliant, with focus on CSS analyzing and source-to-source transforming tasks. + +> NOTE: The library isn't in final shape and needs further improvements (e.g. AST format and API are subjects to change in next major versions). However it's stable enough and used by projects like [CSSO](https://github.com/css/csso) (CSS minifier) and [SVGO](https://github.com/svg/svgo) (SVG optimizer) in production. + +## Features + +- **Detailed parsing with an adjustable level of detail** + + By default CSSTree parses CSS as detailed as possible, i.e. each single logical part is representing with its own AST node (see [AST format](docs/ast.md) for all possible node types). The parsing detail level can be changed through [parser options](docs/parsing.md#parsesource-options), for example, you can disable parsing of selectors or declaration values for component parts. + +- **Tolerant to errors by design** + + Parser behaves as [spec says](https://www.w3.org/TR/css-syntax-3/#error-handling): "When errors occur in CSS, the parser attempts to recover gracefully, throwing away only the minimum amount of content before returning to parsing as normal". The only thing the parser departs from the specification is that it doesn't throw away bad content, but wraps it in a special node type (`Raw`) that allows processing it later. + +- **Fast and efficient** + + CSSTree is created with focus on performance and effective memory consumption. Therefore it's [one of the fastest CSS parsers](https://github.com/postcss/benchmark) at the moment. + +- **Syntax validation** + + The build-in lexer can test CSS against syntaxes defined by W3C. CSSTree uses [mdn/data](https://github.com/mdn/data/) as a basis for lexer's dictionaries and extends it with vendor specific and legacy syntaxes. Lexer can only check the declaration values currently, but this feature will be extended to other parts of the CSS in the future. + +## Documentation + +- [AST format](docs/ast.md) +- [Parsing CSS → AST](docs/parsing.md) + - [parse(source[, options])](docs/parsing.md#parsesource-options) +- [Serialization AST → CSS](docs/generate.md) + - [generate(ast[, options])](docs/generate.md#generateast-options) +- [AST traversal](docs/traversal.md) + - [walk(ast, options)](docs/traversal.md#walkast-options) + - [find(ast, fn)](docs/traversal.md#findast-fn) + - [findLast(ast, fn)](docs/traversal.md#findlastast-fn) + - [findAll(ast, fn)](docs/traversal.md#findallast-fn) +- [Utils for AST](docs/utils.md) + - [property(name)](docs/utils.md#propertyname) + - [keyword(name)](docs/utils.md#keywordname) + - [clone(ast)](docs/utils.md#cloneast) + - [fromPlainObject(object)](docs/utils.md#fromplainobjectobject) + - [toPlainObject(ast)](docs/utils.md#toplainobjectast) +- [Value Definition Syntax](docs/definition-syntax.md) + - [parse(source)](docs/definition-syntax.md#parsesource) + - [walk(node, options, context)](docs/definition-syntax.md#walknode-options-context) + - [generate(node, options)](docs/definition-syntax.md#generatenode-options) + - [AST format](docs/definition-syntax.md#ast-format) + +## Tools + +* [AST Explorer](https://astexplorer.net/#/gist/244e2fb4da940df52bf0f4b94277db44/e79aff44611020b22cfd9708f3a99ce09b7d67a8) – explore CSSTree AST format with zero setup +* [CSS syntax reference](https://csstree.github.io/docs/syntax.html) +* [CSS syntax validator](https://csstree.github.io/docs/validator.html) + +## Related projects + +* [csstree-validator](https://github.com/csstree/validator) – NPM package to validate CSS +* [stylelint-csstree-validator](https://github.com/csstree/stylelint-validator) – plugin for stylelint to validate CSS +* [Grunt plugin](https://github.com/sergejmueller/grunt-csstree-validator) +* [Gulp plugin](https://github.com/csstree/gulp-csstree) +* [Sublime plugin](https://github.com/csstree/SublimeLinter-contrib-csstree) +* [VS Code plugin](https://github.com/csstree/vscode-plugin) +* [Atom plugin](https://github.com/csstree/atom-plugin) + +## Usage + +Install with npm: + +``` +> npm install css-tree +``` + +Basic usage: + +```js +var csstree = require('css-tree'); + +// parse CSS to AST +var ast = csstree.parse('.example { world: "!" }'); + +// traverse AST and modify it +csstree.walk(ast, function(node) { + if (node.type === 'ClassSelector' && node.name === 'example') { + node.name = 'hello'; + } +}); + +// generate CSS from AST +console.log(csstree.generate(ast)); +// .hello{world:"!"} +``` + +Syntax matching: + +```js +// parse CSS to AST as a declaration value +var ast = csstree.parse('red 1px solid', { context: 'value' }); + +// match to syntax of `border` property +var matchResult = csstree.lexer.matchProperty('border', ast); + +// check first value node is a +console.log(matchResult.isType(ast.children.first(), 'color')); +// true + +// get a type list matched to a node +console.log(matchResult.getTrace(ast.children.first())); +// [ { type: 'Property', name: 'border' }, +// { type: 'Type', name: 'color' }, +// { type: 'Type', name: 'named-color' }, +// { type: 'Keyword', name: 'red' } ] +``` + +## Top level API + +![API map](https://cdn.rawgit.com/csstree/csstree/1.0/docs/api-map.svg) + +## License + +MIT diff --git a/node_modules/css-tree/data/index.js b/node_modules/css-tree/data/index.js new file mode 100755 index 00000000..ff56c24c --- /dev/null +++ b/node_modules/css-tree/data/index.js @@ -0,0 +1,103 @@ +const mdnAtrules = require('mdn-data/css/at-rules.json'); +const mdnProperties = require('mdn-data/css/properties.json'); +const mdnSyntaxes = require('mdn-data/css/syntaxes.json'); +const patch = require('./patch.json'); +const extendSyntax = /^\s*\|\s*/; + +function preprocessAtrules(dict) { + const result = Object.create(null); + + for (const atruleName in dict) { + const atrule = dict[atruleName]; + let descriptors = null; + + if (atrule.descriptors) { + descriptors = Object.create(null); + + for (const descriptor in atrule.descriptors) { + descriptors[descriptor] = atrule.descriptors[descriptor].syntax; + } + } + + result[atruleName.substr(1)] = { + prelude: atrule.syntax.trim().match(/^@\S+\s+([^;\{]*)/)[1].trim() || null, + descriptors + }; + } + + return result; +} + +function patchDictionary(dict, patchDict) { + const result = {}; + + // copy all syntaxes for an original dict + for (const key in dict) { + result[key] = dict[key].syntax || dict[key]; + } + + // apply a patch + for (const key in patchDict) { + if (key in dict) { + if (patchDict[key].syntax) { + result[key] = extendSyntax.test(patchDict[key].syntax) + ? result[key] + ' ' + patchDict[key].syntax.trim() + : patchDict[key].syntax; + } else { + delete result[key]; + } + } else { + if (patchDict[key].syntax) { + result[key] = patchDict[key].syntax.replace(extendSyntax, ''); + } + } + } + + return result; +} + +function unpackSyntaxes(dict) { + const result = {}; + + for (const key in dict) { + result[key] = dict[key].syntax; + } + + return result; +} + +function patchAtrules(dict, patchDict) { + const result = {}; + + // copy all syntaxes for an original dict + for (const key in dict) { + const patchDescriptors = (patchDict[key] && patchDict[key].descriptors) || null; + + result[key] = { + prelude: key in patchDict && 'prelude' in patchDict[key] + ? patchDict[key].prelude + : dict[key].prelude || null, + descriptors: dict[key].descriptors + ? patchDictionary(dict[key].descriptors, patchDescriptors || {}) + : patchDescriptors && unpackSyntaxes(patchDescriptors) + }; + } + + // apply a patch + for (const key in patchDict) { + if (!hasOwnProperty.call(dict, key)) { + result[key] = { + prelude: patchDict[key].prelude || null, + descriptors: patchDict[key].descriptors && unpackSyntaxes(patchDict[key].descriptors) + }; + } + } + + return result; +} + +module.exports = { + types: patchDictionary(mdnSyntaxes, patch.syntaxes), + atrules: patchAtrules(preprocessAtrules(mdnAtrules), patch.atrules), + properties: patchDictionary(mdnProperties, patch.properties) +}; diff --git a/node_modules/css-tree/data/patch.json b/node_modules/css-tree/data/patch.json new file mode 100644 index 00000000..6b91136e --- /dev/null +++ b/node_modules/css-tree/data/patch.json @@ -0,0 +1,721 @@ +{ + "atrules": { + "charset": { + "prelude": "" + }, + "font-face": { + "descriptors": { + "unicode-range": { + "comment": "replaces , an old production name", + "syntax": "#" + } + } + } + }, + "properties": { + "-moz-background-clip": { + "comment": "deprecated syntax in old Firefox, https://developer.mozilla.org/en/docs/Web/CSS/background-clip", + "syntax": "padding | border" + }, + "-moz-border-radius-bottomleft": { + "comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-left-radius", + "syntax": "<'border-bottom-left-radius'>" + }, + "-moz-border-radius-bottomright": { + "comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-right-radius", + "syntax": "<'border-bottom-right-radius'>" + }, + "-moz-border-radius-topleft": { + "comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/border-top-left-radius", + "syntax": "<'border-top-left-radius'>" + }, + "-moz-border-radius-topright": { + "comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-right-radius", + "syntax": "<'border-bottom-right-radius'>" + }, + "-moz-control-character-visibility": { + "comment": "firefox specific keywords, https://bugzilla.mozilla.org/show_bug.cgi?id=947588", + "syntax": "visible | hidden" + }, + "-moz-osx-font-smoothing": { + "comment": "misssed old syntax https://developer.mozilla.org/en-US/docs/Web/CSS/font-smooth", + "syntax": "auto | grayscale" + }, + "-moz-user-select": { + "comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/user-select", + "syntax": "none | text | all | -moz-none" + }, + "-ms-flex-align": { + "comment": "misssed old syntax implemented in IE, https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-align", + "syntax": "start | end | center | baseline | stretch" + }, + "-ms-flex-item-align": { + "comment": "misssed old syntax implemented in IE, https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-align", + "syntax": "auto | start | end | center | baseline | stretch" + }, + "-ms-flex-line-pack": { + "comment": "misssed old syntax implemented in IE, https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-line-pack", + "syntax": "start | end | center | justify | distribute | stretch" + }, + "-ms-flex-negative": { + "comment": "misssed old syntax implemented in IE; TODO: find references for comfirmation", + "syntax": "<'flex-shrink'>" + }, + "-ms-flex-pack": { + "comment": "misssed old syntax implemented in IE, https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-pack", + "syntax": "start | end | center | justify | distribute" + }, + "-ms-flex-order": { + "comment": "misssed old syntax implemented in IE; https://msdn.microsoft.com/en-us/library/jj127303(v=vs.85).aspx", + "syntax": "" + }, + "-ms-flex-positive": { + "comment": "misssed old syntax implemented in IE; TODO: find references for comfirmation", + "syntax": "<'flex-grow'>" + }, + "-ms-flex-preferred-size": { + "comment": "misssed old syntax implemented in IE; TODO: find references for comfirmation", + "syntax": "<'flex-basis'>" + }, + "-ms-interpolation-mode": { + "comment": "https://msdn.microsoft.com/en-us/library/ff521095(v=vs.85).aspx", + "syntax": "nearest-neighbor | bicubic" + }, + "-ms-grid-column-align": { + "comment": "add this property first since it uses as fallback for flexbox, https://msdn.microsoft.com/en-us/library/windows/apps/hh466338.aspx", + "syntax": "start | end | center | stretch" + }, + "-ms-grid-row-align": { + "comment": "add this property first since it uses as fallback for flexbox, https://msdn.microsoft.com/en-us/library/windows/apps/hh466348.aspx", + "syntax": "start | end | center | stretch" + }, + "-ms-hyphenate-limit-last": { + "comment": "misssed old syntax implemented in IE; https://www.w3.org/TR/css-text-4/#hyphenate-line-limits", + "syntax": "none | always | column | page | spread" + }, + "-webkit-appearance": { + "comment": "webkit specific keywords", + "references": [ + "http://css-infos.net/property/-webkit-appearance" + ], + "syntax": "none | button | button-bevel | caps-lock-indicator | caret | checkbox | default-button | inner-spin-button | listbox | listitem | media-controls-background | media-controls-fullscreen-background | media-current-time-display | media-enter-fullscreen-button | media-exit-fullscreen-button | media-fullscreen-button | media-mute-button | media-overlay-play-button | media-play-button | media-seek-back-button | media-seek-forward-button | media-slider | media-sliderthumb | media-time-remaining-display | media-toggle-closed-captions-button | media-volume-slider | media-volume-slider-container | media-volume-sliderthumb | menulist | menulist-button | menulist-text | menulist-textfield | meter | progress-bar | progress-bar-value | push-button | radio | scrollbarbutton-down | scrollbarbutton-left | scrollbarbutton-right | scrollbarbutton-up | scrollbargripper-horizontal | scrollbargripper-vertical | scrollbarthumb-horizontal | scrollbarthumb-vertical | scrollbartrack-horizontal | scrollbartrack-vertical | searchfield | searchfield-cancel-button | searchfield-decoration | searchfield-results-button | searchfield-results-decoration | slider-horizontal | slider-vertical | sliderthumb-horizontal | sliderthumb-vertical | square-button | textarea | textfield | -apple-pay-button" + }, + "-webkit-background-clip": { + "comment": "https://developer.mozilla.org/en/docs/Web/CSS/background-clip", + "syntax": "[ | border | padding | content | text ]#" + }, + "-webkit-column-break-after": { + "comment": "added, http://help.dottoro.com/lcrthhhv.php", + "syntax": "always | auto | avoid" + }, + "-webkit-column-break-before": { + "comment": "added, http://help.dottoro.com/lcxquvkf.php", + "syntax": "always | auto | avoid" + }, + "-webkit-column-break-inside": { + "comment": "added, http://help.dottoro.com/lclhnthl.php", + "syntax": "always | auto | avoid" + }, + "-webkit-font-smoothing": { + "comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/font-smooth", + "syntax": "auto | none | antialiased | subpixel-antialiased" + }, + "-webkit-mask-box-image": { + "comment": "missed; https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-mask-box-image", + "syntax": "[ | | none ] [ {4} <-webkit-mask-box-repeat>{2} ]?" + }, + "-webkit-print-color-adjust": { + "comment": "missed", + "references": [ + "https://developer.mozilla.org/en/docs/Web/CSS/-webkit-print-color-adjust" + ], + "syntax": "economy | exact" + }, + "-webkit-text-security": { + "comment": "missed; http://help.dottoro.com/lcbkewgt.php", + "syntax": "none | circle | disc | square" + }, + "-webkit-user-drag": { + "comment": "missed; http://help.dottoro.com/lcbixvwm.php", + "syntax": "none | element | auto" + }, + "-webkit-user-select": { + "comment": "auto is supported by old webkit, https://developer.mozilla.org/en-US/docs/Web/CSS/user-select", + "syntax": "auto | none | text | all" + }, + "alignment-baseline": { + "comment": "added SVG property", + "references": [ + "https://www.w3.org/TR/SVG/text.html#AlignmentBaselineProperty" + ], + "syntax": "auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical" + }, + "baseline-shift": { + "comment": "added SVG property", + "references": [ + "https://www.w3.org/TR/SVG/text.html#BaselineShiftProperty" + ], + "syntax": "baseline | sub | super | " + }, + "behavior": { + "comment": "added old IE property https://msdn.microsoft.com/en-us/library/ms530723(v=vs.85).aspx", + "syntax": "+" + }, + "clip-rule": { + "comment": "added SVG property", + "references": [ + "https://www.w3.org/TR/SVG/masking.html#ClipRuleProperty" + ], + "syntax": "nonzero | evenodd" + }, + "cue": { + "comment": "https://www.w3.org/TR/css3-speech/#property-index", + "syntax": "<'cue-before'> <'cue-after'>?" + }, + "cue-after": { + "comment": "https://www.w3.org/TR/css3-speech/#property-index", + "syntax": " ? | none" + }, + "cue-before": { + "comment": "https://www.w3.org/TR/css3-speech/#property-index", + "syntax": " ? | none" + }, + "cursor": { + "comment": "added legacy keywords: hand, -webkit-grab. -webkit-grabbing, -webkit-zoom-in, -webkit-zoom-out, -moz-grab, -moz-grabbing, -moz-zoom-in, -moz-zoom-out", + "references": [ + "https://www.sitepoint.com/css3-cursor-styles/" + ], + "syntax": "[ [ [ ]? , ]* [ auto | default | none | context-menu | help | pointer | progress | wait | cell | crosshair | text | vertical-text | alias | copy | move | no-drop | not-allowed | e-resize | n-resize | ne-resize | nw-resize | s-resize | se-resize | sw-resize | w-resize | ew-resize | ns-resize | nesw-resize | nwse-resize | col-resize | row-resize | all-scroll | zoom-in | zoom-out | grab | grabbing | hand | -webkit-grab | -webkit-grabbing | -webkit-zoom-in | -webkit-zoom-out | -moz-grab | -moz-grabbing | -moz-zoom-in | -moz-zoom-out ] ]" + }, + "display": { + "comment": "extended with -ms-flexbox", + "syntax": "| <-non-standard-display>" + }, + "position": { + "comment": "extended with -webkit-sticky", + "syntax": "| -webkit-sticky" + }, + "dominant-baseline": { + "comment": "added SVG property", + "references": [ + "https://www.w3.org/TR/SVG/text.html#DominantBaselineProperty" + ], + "syntax": "auto | use-script | no-change | reset-size | ideographic | alphabetic | hanging | mathematical | central | middle | text-after-edge | text-before-edge" + }, + "image-rendering": { + "comment": "extended with <-non-standard-image-rendering>, added SVG keywords optimizeSpeed and optimizeQuality", + "references": [ + "https://developer.mozilla.org/en/docs/Web/CSS/image-rendering", + "https://www.w3.org/TR/SVG/painting.html#ImageRenderingProperty" + ], + "syntax": "| optimizeSpeed | optimizeQuality | <-non-standard-image-rendering>" + }, + "fill": { + "comment": "added SVG property", + "references": [ + "https://www.w3.org/TR/SVG/painting.html#FillProperty" + ], + "syntax": "" + }, + "fill-opacity": { + "comment": "added SVG property", + "references": [ + "https://www.w3.org/TR/SVG/painting.html#FillProperty" + ], + "syntax": "" + }, + "fill-rule": { + "comment": "added SVG property", + "references": [ + "https://www.w3.org/TR/SVG/painting.html#FillProperty" + ], + "syntax": "nonzero | evenodd" + }, + "filter": { + "comment": "extend with IE legacy syntaxes", + "syntax": "| <-ms-filter-function-list>" + }, + "glyph-orientation-horizontal": { + "comment": "added SVG property", + "references": [ + "https://www.w3.org/TR/SVG/text.html#GlyphOrientationHorizontalProperty" + ], + "syntax": "" + }, + "glyph-orientation-vertical": { + "comment": "added SVG property", + "references": [ + "https://www.w3.org/TR/SVG/text.html#GlyphOrientationVerticalProperty" + ], + "syntax": "" + }, + "kerning": { + "comment": "added SVG property", + "references": [ + "https://www.w3.org/TR/SVG/text.html#KerningProperty" + ], + "syntax": "auto | " + }, + "letter-spacing": { + "comment": "fix syntax -> ", + "references": [ + "https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/letter-spacing" + ], + "syntax": "normal | " + }, + "marker": { + "comment": "added SVG property", + "references": [ + "https://www.w3.org/TR/SVG/painting.html#MarkerProperties" + ], + "syntax": "none | " + }, + "marker-end": { + "comment": "added SVG property", + "references": [ + "https://www.w3.org/TR/SVG/painting.html#MarkerProperties" + ], + "syntax": "none | " + }, + "marker-mid": { + "comment": "added SVG property", + "references": [ + "https://www.w3.org/TR/SVG/painting.html#MarkerProperties" + ], + "syntax": "none | " + }, + "marker-start": { + "comment": "added SVG property", + "references": [ + "https://www.w3.org/TR/SVG/painting.html#MarkerProperties" + ], + "syntax": "none | " + }, + "max-width": { + "comment": "fix auto -> none (https://github.com/mdn/data/pull/431); extend by non-standard width keywords https://developer.mozilla.org/en-US/docs/Web/CSS/max-width", + "syntax": "none | | min-content | max-content | fit-content() | <-non-standard-width>" + }, + "width": { + "comment": "per spec fit-content should be a function, however browsers are supporting it as a keyword (https://github.com/csstree/stylelint-validator/issues/29)", + "syntax": "| fit-content | -moz-fit-content | -webkit-fit-content" + }, + "min-width": { + "comment": "extend by non-standard width keywords https://developer.mozilla.org/en-US/docs/Web/CSS/width", + "syntax": "auto | | min-content | max-content | fit-content() | <-non-standard-width>" + }, + "overflow": { + "comment": "extend by vendor keywords https://developer.mozilla.org/en-US/docs/Web/CSS/overflow", + "syntax": "| <-non-standard-overflow>" + }, + "pause": { + "comment": "https://www.w3.org/TR/css3-speech/#property-index", + "syntax": "<'pause-before'> <'pause-after'>?" + }, + "pause-after": { + "comment": "https://www.w3.org/TR/css3-speech/#property-index", + "syntax": "